CMakeLists.txt 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. include_directories(${CMAKE_CURRENT_SOURCE_DIR}
  2. ${CMAKE_SOURCE_DIR}/Source/ThirdParty
  3. ${CMAKE_SOURCE_DIR}/Source/ThirdParty/rapidjson/include
  4. ${CMAKE_SOURCE_DIR}/Source/ThirdParty/kNet/include
  5. ${CMAKE_SOURCE_DIR}/Source/ThirdParty/FreeType/include
  6. ${CMAKE_SOURCE_DIR}/Source/ThirdParty/Box2D)
  7. # TODO: Look into the application-extension flag for iOS
  8. #if (IOS)
  9. # set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fapplication-extension")
  10. # set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fapplication-extension")
  11. #endif()
  12. set (CSATOMICDIR "${CMAKE_SOURCE_DIR}/Artifacts/Build/Source/Generated/CSharp/Packages/")
  13. file (GLOB CSHARP_BINDINGS_SOURCE ${CSATOMICDIR}/Atomic/Native/*.cpp ${CSATOMICDIR}/Atomic/Native/*.h
  14. ${CSATOMICDIR}/AtomicNETNative/Native/*.cpp ${CSATOMICDIR}/AtomicNETNative/Native/*.h
  15. ${CSATOMICDIR}/AtomicNETScript/Native/*.cpp ${CSATOMICDIR}/AtomicNETScript/Native/*.h
  16. ${CSATOMICDIR}/AtomicApp/Native/*.cpp ${CSATOMICDIR}/AtomicApp/Native/*.h
  17. ${CSATOMICDIR}/AtomicPlayer/Native/*.cpp ${CSATOMICDIR}/AtomicPlayer/Native/*.h )
  18. file (GLOB SOURCE_FILES *.cpp *.h)
  19. if (NOT IOS AND NOT ANDROID AND NOT EMSCRIPTEN)
  20. file (GLOB DESKTOP_SOURCE_FILES Desktop/*.cpp Desktop/*.h)
  21. set (SOURCE_FILES ${SOURCE_FILES} ${DESKTOP_SOURCE_FILES})
  22. endif()
  23. if (ANDROID)
  24. include_directories(${CMAKE_SOURCE_DIR}/Source/ThirdParty/SDL/include)
  25. set (SOURCE_FILES ${SOURCE_FILES} ${CMAKE_SOURCE_DIR}/Source/ThirdParty/SDL/src/main/android/SDL_android_main.c)
  26. endif()
  27. add_library(AtomicNETNative SHARED ${SOURCE_FILES} ${CSHARP_BINDINGS_SOURCE})
  28. add_dependencies(AtomicNETNative AtomicToolCheckScripts)
  29. target_link_libraries(AtomicNETNative AtomicApp AtomicNETScriptBindings AtomicNETScript AtomicJS AtomicPlayerLib AtomicPlayerJS ${ATOMIC_LINK_LIBRARIES})
  30. if (LINUX)
  31. #https://github.com/nothings/stb/issues/280
  32. target_link_libraries(AtomicNETNative gcc_s gcc)
  33. endif()
  34. if (APPLE)
  35. if (NOT IOS)
  36. target_link_libraries( AtomicNETNative "-stdlib=libc++ -framework AudioUnit -framework Carbon -framework Cocoa -framework CoreAudio -framework CoreVideo -framework ForceFeedback -framework IOKit -framework OpenGL -framework CoreServices -framework Security")
  37. else()
  38. set_target_properties(AtomicNETNative PROPERTIES
  39. FRAMEWORK TRUE
  40. MACOSX_FRAMEWORK_IDENTIFIER com.atomicgameengine.atomicnetframework
  41. MACOSX_FRAMEWORK_INFO_PLIST ${CMAKE_SOURCE_DIR}/Build/CMake/IOS/AtomicNET.framework.plist
  42. # PUBLIC_HEADER dynamicFramework.h
  43. XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer"
  44. )
  45. target_link_libraries( AtomicNETNative "-framework AudioToolbox -framework CoreAudio -framework CoreGraphics -framework Foundation -framework OpenGLES -framework QuartzCore -framework UIKit -framework CoreMotion -framework GameController")
  46. endif()
  47. endif()
  48. if (MSVC)
  49. set (ATOMICNET_NATIVE_PLATFORM Windows)
  50. elseif(APPLE)
  51. if (IOS)
  52. set (ATOMICNET_NATIVE_PLATFORM iOS)
  53. else()
  54. set (ATOMICNET_NATIVE_PLATFORM Mac)
  55. endif()
  56. elseif(LINUX)
  57. set (ATOMICNET_NATIVE_PLATFORM Linux)
  58. elseif(ANDROID)
  59. set (ATOMICNET_NATIVE_PLATFORM Android)
  60. endif()
  61. set (ATOMICNET_NATIVE_DIR "${CMAKE_SOURCE_DIR}/Artifacts/AtomicNET/$<$<CONFIG:debug>:Debug>$<$<CONFIG:release>:Release>/Native/${ATOMICNET_NATIVE_PLATFORM}")
  62. if (NOT IOS)
  63. add_custom_command( TARGET AtomicNETNative POST_BUILD
  64. COMMAND "${CMAKE_COMMAND}" ARGS -E make_directory "\"${ATOMICNET_NATIVE_DIR}\""
  65. COMMAND "${CMAKE_COMMAND}" ARGS -E copy_if_different \"$<TARGET_FILE:AtomicNETNative>\" "\"${ATOMICNET_NATIVE_DIR}\"" )
  66. else()
  67. # iOS: We need to copy/zip the framework on iOS, the framework must also be code signed and POST_BUILD is triggered before this occurs,
  68. # so handled in BuildIOS.js
  69. add_custom_command( TARGET AtomicNETNative POST_BUILD
  70. COMMAND install_name_tool -id @rpath/AtomicNETNative.framework/AtomicNETNative \"$<TARGET_FILE:AtomicNETNative>\")
  71. endif()
  72. if (MSVC)
  73. # Copy the D3D shader compiler (for pre-Windows 8)
  74. add_custom_command( TARGET AtomicNETNative POST_BUILD
  75. COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different \"${D3DCOMPILER_47_DLL}\" \"${ATOMICNET_NATIVE_DIR}/D3DCompiler_47.dll\" )
  76. endif(MSVC)