| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- # Outputs:
- # BS_GENERATED_ENGINE_H_FILES
- # BS_GENERATED_ENGINE_CPP_FILES
- # BS_GENERATED_EDITOR_H_FILES
- # BS_GENERATED_EDITOR_CPP_FILES
- # BS_GENERATED_ENGINE_CS_FILES
- # BS_GENERATED_EDITOR_CS_FILES
- set(BS_SCRIPT_PARSER_INCLUDE_DIRS "")
- set(BS_SCRIPT_PARSER_H_FILES "")
- function(prepend var prefix)
- SET(listVar "")
- FOREACH(f ${ARGN})
- LIST(APPEND listVar "${prefix}/${f}")
- ENDFOREACH(f)
- SET(${var} "${listVar}" PARENT_SCOPE)
- endfunction()
- function(addForGeneration name)
- set(BS_SCRIPT_PARSER_INCLUDE_DIRS ${BS_SCRIPT_PARSER_INCLUDE_DIRS} "${name}" PARENT_SCOPE)
-
- include(${name}/CMakeSources.cmake)
- string(TOUPPER ${name} LIBNAME)
- set(H_FILES "")
- FOREACH(f ${BS_${LIBNAME}_SRC})
- IF("${f}" MATCHES ".*\\.h" AND NOT "${f}" MATCHES "Win32|Linux")
- LIST(APPEND H_FILES ${f})
- ENDIF()
- ENDFOREACH(f)
-
- set(ABS_H_FILES "")
- prepend(ABS_H_FILES ${CMAKE_CURRENT_SOURCE_DIR}/${name} ${H_FILES})
- set(BS_SCRIPT_PARSER_H_FILES ${BS_SCRIPT_PARSER_H_FILES} ${ABS_H_FILES} PARENT_SCOPE)
- endfunction()
- set(BS_GENERATED_CPP_OUTPUT_DIR ${PROJECT_BINARY_DIR}/Generated)
- set(BS_GENERATED_CS_ENGINE_OUTPUT_DIR ${PROJECT_SOURCE_DIR}/MBansheeEngine/Generated)
- set(BS_GENERATED_CS_EDITOR_OUTPUT_DIR ${PROJECT_SOURCE_DIR}/MBansheeEditor/Generated)
- if(GENERATE_SCRIPT_BINDINGS)
- addForGeneration(BansheeUtility)
- addForGeneration(BansheeCore)
- addForGeneration(BansheeEngine)
- addForGeneration(BansheeEditor)
- addForGeneration(SBansheeEngine)
- addForGeneration(SBansheeEditor)
- set(BS_SCRIPT_PARSER_INCLUDE_DIRS
- ${BS_SCRIPT_PARSER_INCLUDE_DIRS}
- "BansheeMono"
- "BansheeUtility/ThirdParty")
- list(REMOVE_DUPLICATES BS_SCRIPT_PARSER_INCLUDE_DIRS)
- list(REMOVE_DUPLICATES BS_SCRIPT_PARSER_H_FILES)
- prepend(BS_INCLUDE_DIRS "-I${PROJECT_SOURCE_DIR}" ${BS_SCRIPT_PARSER_INCLUDE_DIRS})
- # Generate a single .cpp file including all headers
- set(BS_GLOBAL_FILE_CONTENTS "")
- FOREACH(f ${BS_SCRIPT_PARSER_H_FILES})
- LIST(APPEND BS_GLOBAL_FILE_CONTENTS "#include \"${f}\"\n")
- ENDFOREACH(f)
- file(WRITE ${BS_GENERATED_CPP_OUTPUT_DIR}/toParse.cpp ${BS_GLOBAL_FILE_CONTENTS})
- endif()
- find_package(BansheeSBGen)
- if(BansheeSBGen_FOUND)
- if(GENERATE_SCRIPT_BINDINGS)
- set(BS_GSB_COMMAND ${BansheeSBGen_EXECUTABLE_PATH}
- ${BS_GENERATED_CPP_OUTPUT_DIR}/toParse.cpp
- -output-cpp ${BS_GENERATED_CPP_OUTPUT_DIR}
- -output-cs-engine ${BS_GENERATED_CS_ENGINE_OUTPUT_DIR}
- -output-cs-editor ${BS_GENERATED_CS_EDITOR_OUTPUT_DIR}
- -- ${BS_INCLUDE_DIRS}
- -std=c++14
- -DBS_STATIC_LIB
- -DBS_SBGEN
- -w
- )
- if(APPLE)
- list(APPEND BS_GSB_COMMAND
- -isystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1)
- list(APPEND BS_GSB_COMMAND -stdlib=libc++)
- endif()
- message(STATUS "Generating script bindings, please wait...")
- execute_process(
- COMMAND ${BS_GSB_COMMAND}
- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
- RESULT_VARIABLE SBGEN_RETURN_VALUE
- )
- if (NOT SBGEN_RETURN_VALUE EQUAL 0)
- message(FATAL_ERROR "Failed to generate script bindings.")
- else()
- message(STATUS "...scripting binding generation OK.")
- endif()
- endif()
-
- file(GLOB BS_GENERATED_ENGINE_H_FILES ${BS_GENERATED_CPP_OUTPUT_DIR}/Engine/Include/*)
- file(GLOB BS_GENERATED_ENGINE_CPP_FILES ${BS_GENERATED_CPP_OUTPUT_DIR}/Engine/Source/*)
- file(GLOB BS_GENERATED_EDITOR_H_FILES ${BS_GENERATED_CPP_OUTPUT_DIR}/Editor/Include/*)
- file(GLOB BS_GENERATED_EDITOR_CPP_FILES ${BS_GENERATED_CPP_OUTPUT_DIR}/Editor/Source/*)
- endif()
|