CMakeLists.txt 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. cmake_minimum_required (VERSION 3.12.0)
  2. project (Banshee3D)
  3. set (BSF_DIRECTORY ${PROJECT_SOURCE_DIR}/Source/bsf)
  4. set (BSF_SOURCE_DIR ${BSF_DIRECTORY}/Source)
  5. set (APP_ROOT_DIR ${PROJECT_SOURCE_DIR})
  6. set (BS_IS_BANSHEE3D 1)
  7. # Grab BSF
  8. find_path(SUBMODULE_SOURCES "Source/Foundation/bsfEngine/BsApplication.h" "Source/bsf/")
  9. if(NOT SUBMODULE_SOURCES)
  10. execute_process(COMMAND git submodule update
  11. --init
  12. -- Source/bsf
  13. WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
  14. else()
  15. execute_process(COMMAND git submodule update
  16. -- Source/bsf
  17. WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
  18. endif()
  19. mark_as_advanced(SUBMODULE_SOURCES)
  20. include(${BSF_SOURCE_DIR}/CMake/Properties.cmake)
  21. include(${BSF_SOURCE_DIR}/CMake/FindPackageOrBuild.cmake)
  22. include(${BSF_SOURCE_DIR}/CMake/HelperMethods.cmake)
  23. add_subdirectory(${BSF_SOURCE_DIR})
  24. set (BS_PREBUILT_DEPENDENCIES_VERSION 24)
  25. set (BS_SRC_DEPENDENCIES_VERSION 15)
  26. set (BS_BUILTIN_ASSETS_VERSION 11)
  27. # Options
  28. set(GENERATE_SCRIPT_BINDINGS OFF CACHE BOOL "If true, script binding files will be generated. Script bindings are required for the project to build properly, however they take a while to generate. If you are sure the script bindings are up to date, you can turn off their generation (temporarily) to speed up the build.")
  29. # Ensure dependencies are up to date
  30. ## Check prebuilt dependencies that are downloaded in a .zip
  31. check_and_update_binary_deps(Banshee ${PROJECT_SOURCE_DIR}/Dependencies/ ${BS_PREBUILT_DEPENDENCIES_VERSION})
  32. ## Check data dependencies
  33. check_and_update_builtin_assets(Banshee ${PROJECT_SOURCE_DIR}/Data/Raw Raw ${BS_BUILTIN_ASSETS_VERSION} NO)
  34. ## Import built-in assets
  35. if(${BUILD_ASSETS})
  36. run_import_tool(Banshee ${PROJECT_SOURCE_DIR} "--editor")
  37. endif()
  38. ## Fetch built-in assets
  39. set(BANSHEE_COMPILED_ASSETS_VERSION_FILE ${PROJECT_SOURCE_DIR}/Data/.reqversion)
  40. file (STRINGS ${BANSHEE_COMPILED_ASSETS_VERSION_FILE} BANSHEE_COMPILED_ASSETS_VERSION)
  41. check_and_update_builtin_assets(BansheeCompiled ${PROJECT_SOURCE_DIR}/Data Data ${BANSHEE_COMPILED_ASSETS_VERSION} NO)
  42. # Generate script bindings
  43. include(${BSF_SOURCE_DIR}/CMake/GenerateScriptBindings.cmake)
  44. # Sub-directories
  45. add_subdirectory(Source/EditorCore)
  46. ## Script interop
  47. add_subdirectory(${BSF_SOURCE_DIR}/Plugins/bsfMono)
  48. add_subdirectory(Source/Scripting/SBansheeEngine)
  49. add_subdirectory(Source/Scripting/SBansheeEditor)
  50. ## Executables
  51. add_subdirectory(Source/Banshee3D)
  52. add_subdirectory(Source/Game)
  53. ## Managed projects
  54. set(CS_ENGINE_PROJ ${PROJECT_SOURCE_DIR}/Source/Scripting/MBansheeEngine/MBansheeEngine.csproj)
  55. set(CS_EDITOR_PROJ ${PROJECT_SOURCE_DIR}/Source/Scripting/MBansheeEditor/MBansheeEditor.csproj)
  56. if(MSVC)
  57. include_external_msproject(MBansheeEngine ${CS_ENGINE_PROJ})
  58. include_external_msproject(MBansheeEditor ${CS_EDITOR_PROJ})
  59. set_target_properties(MBansheeEngine PROPERTIES
  60. MAP_IMPORTED_CONFIG_RELEASE OptimizedDebug
  61. )
  62. set_target_properties(MBansheeEditor PROPERTIES
  63. MAP_IMPORTED_CONFIG_RELEASE OptimizedDebug
  64. )
  65. set_property(TARGET MBansheeEngine PROPERTY FOLDER Script)
  66. set_property(TARGET MBansheeEditor PROPERTY FOLDER Script)
  67. add_dependencies(Banshee3D MBansheeEngine MBansheeEditor)
  68. add_dependencies(Game MBansheeEngine)
  69. set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT Banshee3D)
  70. else()
  71. find_package(mcs)
  72. if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
  73. set(CS_PROJ_CONFIG Debug)
  74. else()
  75. set(CS_PROJ_CONFIG Release)
  76. endif()
  77. add_custom_target(BuildManaged
  78. COMMAND xbuild /p:Configuration=${CS_PROJ_CONFIG} ${CS_EDITOR_PROJ}
  79. COMMENT "Building managed assemblies")
  80. add_dependencies(Banshee3D BuildManaged)
  81. add_dependencies(Game BuildManaged)
  82. endif()