[2626] | 1 | # |
---|
| 2 | # ORXONOX - the hottest 3D action shooter ever to exist |
---|
| 3 | # > www.orxonox.net < |
---|
| 4 | # |
---|
| 5 | # This program is free software; you can redistribute it and/or |
---|
| 6 | # modify it under the terms of the GNU General Public License |
---|
| 7 | # as published by the Free Software Foundation; either version 2 |
---|
| 8 | # of the License, or (at your option) any later version. |
---|
| 9 | # |
---|
| 10 | # This program is distributed in the hope that it will be useful, |
---|
| 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
| 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
---|
| 13 | # GNU General Public License for more details. |
---|
| 14 | # |
---|
| 15 | # You should have received a copy of the GNU General Public License along |
---|
| 16 | # with this program; if not, write to the Free Software Foundation, |
---|
| 17 | # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
---|
| 18 | # |
---|
| 19 | # |
---|
| 20 | # Author: |
---|
| 21 | # Adrian Friedli |
---|
| 22 | # Description: |
---|
| 23 | # Sets the CMake options that will generate Tolua++ bindings. |
---|
| 24 | # Parameters: |
---|
| 25 | # _tolua_package - Name of the package, e.g. "Core" |
---|
| 26 | # _target_source_files - Variable name of the target source files, the |
---|
| 27 | # script will add the generated files to this list. |
---|
| 28 | # ARGN - The header files in the style "INTPUTFILES Foo.h Bar.h" |
---|
| 29 | # Global Variables: (need to be set before) |
---|
| 30 | # TOLUA_PARSER_SOURCE - Lua file with the parser source code |
---|
| 31 | # TOLUA_PARSER_DEPENDENCIES - All the dependent lua files |
---|
[5695] | 32 | # RUNTIME_LIBRARY_DIRECTORY - Working directory |
---|
[2626] | 33 | # |
---|
[1882] | 34 | |
---|
[8351] | 35 | # Workaround for XCode: The folder where the bind files are written to has |
---|
| 36 | # to be present beforehand. |
---|
| 37 | # We have to do this here because the header files are all stored in a single |
---|
| 38 | # location per configuration. |
---|
| 39 | IF(CMAKE_CONFIGURATION_TYPES) |
---|
| 40 | FOREACH(_dir ${CMAKE_CONFIGURATION_TYPES}) |
---|
| 41 | FILE(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/src/toluabind/${_dir}") |
---|
| 42 | ENDFOREACH(_dir) |
---|
| 43 | ENDIF() |
---|
| 44 | |
---|
[2621] | 45 | FUNCTION(GENERATE_TOLUA_BINDINGS _tolua_package _target_source_files) |
---|
[1882] | 46 | SET(_tolua_inputfiles ${ARGN}) |
---|
| 47 | LIST(REMOVE_ITEM _tolua_inputfiles "INPUTFILES") |
---|
| 48 | |
---|
| 49 | SET(_tolua_pkgfile "${CMAKE_CURRENT_BINARY_DIR}/tolua.pkg") |
---|
[2640] | 50 | SET(_tolua_cxxfile "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/ToluaBind${_tolua_package}.cc") |
---|
[8688] | 51 | #SET(_tolua_hfile "${CMAKE_BINARY_DIR}/src/toluabind/${CMAKE_CFG_INTDIR}/ToluaBind${_tolua_package}.h") |
---|
[1882] | 52 | |
---|
[2621] | 53 | SET(${_target_source_files} |
---|
| 54 | ${${_target_source_files}} |
---|
| 55 | ${_tolua_cxxfile} |
---|
| 56 | PARENT_SCOPE |
---|
| 57 | ) |
---|
[7415] | 58 | |
---|
[3196] | 59 | IF(CMAKE_COMPILER_IS_GNU) |
---|
[8650] | 60 | # Disable annoying GCC warnings |
---|
[3196] | 61 | SET_SOURCE_FILES_PROPERTIES(${_tolua_cxxfile} PROPERTIES COMPILE_FLAGS "-w") |
---|
| 62 | ENDIF() |
---|
[7415] | 63 | |
---|
[8650] | 64 | IF(MSVC) |
---|
| 65 | # Including the file in a build unit is impossible because CMAKE_CFG_INTDIR |
---|
| 66 | # exands to an expression that the compiler doesn't understand |
---|
| 67 | SET_SOURCE_FILES_PROPERTIES(${_tolua_cxxfile} PROPERTIES EXCLUDE_FROM_BUILD_UNITS TRUE) |
---|
| 68 | ENDIF() |
---|
| 69 | |
---|
[3244] | 70 | # Create temporary package file and implicit dependencies |
---|
[2519] | 71 | FILE(REMOVE ${_tolua_pkgfile}) |
---|
[1882] | 72 | FOREACH(_tolua_inputfile ${_tolua_inputfiles}) |
---|
[2519] | 73 | FILE(APPEND ${_tolua_pkgfile} "\$cfile \"${_tolua_inputfile}\"\n") |
---|
[3244] | 74 | LIST(APPEND _implicit_dependencies CXX ${_tolua_inputfile}) |
---|
[1882] | 75 | ENDFOREACH(_tolua_inputfile) |
---|
| 76 | |
---|
[8688] | 77 | IF(TOLUA_PARSER_HOOK_SCRIPT) |
---|
| 78 | # Hook scripts may contain functions that act as Tolua hooks |
---|
| 79 | SET(_hook_script -L "${TOLUA_PARSER_HOOK_SCRIPT}") |
---|
| 80 | ENDIF() |
---|
| 81 | |
---|
[1882] | 82 | ADD_CUSTOM_COMMAND( |
---|
[8688] | 83 | OUTPUT ${_tolua_cxxfile} |
---|
[7152] | 84 | COMMAND toluaapp_orxonox -n ${_tolua_package} |
---|
| 85 | -w ${CMAKE_CURRENT_SOURCE_DIR} |
---|
| 86 | -o ${_tolua_cxxfile} |
---|
| 87 | -s ${TOLUA_PARSER_SOURCE} |
---|
[8688] | 88 | ${_hook_script} |
---|
[7152] | 89 | ${_tolua_pkgfile} |
---|
[3244] | 90 | DEPENDS ${TOLUA_PARSER_DEPENDENCIES} |
---|
| 91 | IMPLICIT_DEPENDS ${_implicit_dependencies} |
---|
[5695] | 92 | WORKING_DIRECTORY ${RUNTIME_LIBRARY_DIRECTORY} |
---|
[2583] | 93 | COMMENT "Generating tolua bind files for package ${_tolua_package}" |
---|
[1882] | 94 | ) |
---|
[2621] | 95 | ENDFUNCTION(GENERATE_TOLUA_BINDINGS) |
---|