CMakeLists.txt 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. if (MSVC)
  2. set (JAVASCRIPT_BINDINGS_PLATFORM "WINDOWS")
  3. elseif(APPLE)
  4. if (NOT IOS)
  5. set (JAVASCRIPT_BINDINGS_PLATFORM "MACOSX")
  6. else()
  7. set (JAVASCRIPT_BINDINGS_PLATFORM "IOS")
  8. endif()
  9. elseif(LINUX)
  10. set (JAVASCRIPT_BINDINGS_PLATFORM "LINUX")
  11. elseif(ANDROID)
  12. set (JAVASCRIPT_BINDINGS_PLATFORM "ANDROID")
  13. elseif (EMSCRIPTEN)
  14. set (JAVASCRIPT_BINDINGS_PLATFORM "WEB")
  15. endif()
  16. if (NOT IOS AND NOT ANDROID AND NOT EMSCRIPTEN)
  17. add_subdirectory(JSBind)
  18. endif()
  19. include_directories(${CMAKE_CURRENT_SOURCE_DIR}
  20. ${CMAKE_SOURCE_DIR}/Source/ThirdParty
  21. ${CMAKE_SOURCE_DIR}/Source/ThirdParty/rapidjson/include
  22. ${CMAKE_SOURCE_DIR}/Source/ThirdParty/kNet/include
  23. ${CMAKE_SOURCE_DIR}/Source/ThirdParty/FreeType/include
  24. ${CMAKE_SOURCE_DIR}/Source/ThirdParty/Box2D)
  25. file (GLOB JAVASCRIPT_SOURCE Javascript/*.cpp Javascript/*.h)
  26. GroupSources("Javascript")
  27. if (NOT MSVC)
  28. # for kNet
  29. add_definitions (-DUNIX)
  30. endif()
  31. # Create the JSBind files ahead of time, so they are picked up with glob
  32. set (JSFILES JSModuleAtomic2D.cpp;JSModuleAtomic3D.cpp;JSModuleAudio.cpp;JSModuleContainer.cpp;JSModuleCore.cpp;
  33. JSModuleEngine.cpp;JSModuleEnvironment.cpp;JSModuleGraphics.cpp;JSModuleInput.cpp;
  34. JSModuleIO.cpp;JSModuleJavascript.cpp;JSModuleMath.cpp;JSModuleNavigation.cpp;
  35. JSModuleNetwork.cpp;JSModulePhysics.cpp;JSModuleResource.cpp;JSModules.cpp;
  36. JSModuleScene.cpp;JSModuleUI.cpp)
  37. foreach(JSFILE ${JSFILES})
  38. set (JSFILEPATH "${CMAKE_SOURCE_DIR}/Build/Source/Generated/${JAVASCRIPT_BINDINGS_PLATFORM}/Javascript/Modules/${JSFILE}")
  39. if (NOT EXISTS ${JSFILEPATH})
  40. file(WRITE "${JSFILEPATH}" "// will be created by JSBind")
  41. endif()
  42. endforeach()
  43. file (GLOB JAVASCRIPT_BINDINGS_SOURCE ${CMAKE_SOURCE_DIR}/Build/Source/Generated/${JAVASCRIPT_BINDINGS_PLATFORM}/Javascript/Modules/*.cpp)
  44. set (SOURCE_FILES ${JAVASCRIPT_SOURCE} ${JAVASCRIPT_BINDINGS_SOURCE} )
  45. add_library(AtomicJS ${SOURCE_FILES})
  46. if (NOT IOS AND NOT ANDROID AND NOT EMSCRIPTEN)
  47. add_dependencies(AtomicJS JSBind)
  48. endif()
  49. add_custom_command (TARGET AtomicJS POST_BUILD
  50. COMMAND ${CMAKE_COMMAND}
  51. ARGS -E copy_if_different \"${CMAKE_CURRENT_SOURCE_DIR}/JSPlugin/AtomicPlugin.h\" \"${CMAKE_SOURCE_DIR}/Bin/NativePluginSDK/AtomicPlugin.h\")