CMakeLists.txt 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. include_directories ( ${ATOMIC_SOURCE_DIR}/Source/ThirdParty
  2. ${ATOMIC_SOURCE_DIR}/Source/ThirdParty/rapidjson/include
  3. ${ATOMIC_SOURCE_DIR}/Source/ThirdParty/kNet/include
  4. ${ATOMIC_SOURCE_DIR}/Source/ThirdParty/FreeType/include
  5. ${ATOMIC_SOURCE_DIR}/Source/ThirdParty/Box2D
  6. ${ATOMIC_SOURCE_DIR}/Source/ThirdParty/nativefiledialog )
  7. file (GLOB_RECURSE SOURCE_FILES *.cpp *.h)
  8. # Remove the web helper sources
  9. list(REMOVE_ITEM SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/WebView/WebProcessHelperMac.cpp)
  10. file (GLOB JAVASCRIPT_BINDINGS_SOURCE ${ATOMIC_SOURCE_DIR}/Artifacts/Build/Source/Generated/Javascript/Packages/Editor/*.cpp)
  11. set (SOURCE_FILES ${SOURCE_FILES} ${JAVASCRIPT_BINDINGS_SOURCE})
  12. #set (SOURCE_FILES ${SOURCE_FILES} ${CSHARP_BINDINGS_SOURCE} ${CSHARPATOMICPLAYER_BINDINGS_SOURCE} ${CSHARPATOMICNET_BINDINGS_SOURCE})
  13. if (APPLE)
  14. file (GLOB_RECURSE OBJC_FILES *.mm *.h)
  15. set (SOURCE_FILES ${SOURCE_FILES} ${OBJC_FILES})
  16. set (EXE_TYPE MACOSX_BUNDLE)
  17. #ICNS
  18. set(MACOSX_BUNDLE_ICON_FILE AtomicEditor.icns)
  19. set(ATOMIC_EDITOR_ICON ${ATOMIC_SOURCE_DIR}/Build/CMake/Modules/AtomicEditor.icns)
  20. set_source_files_properties(${ATOMIC_EDITOR_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
  21. else()
  22. include_directories (${ATOMIC_SOURCE_DIR}/Source/ThirdParty/libcurl/include)
  23. add_definitions(-DCURL_STATICLIB)
  24. # We want a console for development builds
  25. if (${ATOMIC_DEV_BUILD} EQUAL 1)
  26. add_definitions(-DATOMIC_WIN32_CONSOLE)
  27. else()
  28. set (EXE_TYPE WIN32)
  29. endif()
  30. set (SOURCE_FILES ${SOURCE_FILES} ${ATOMIC_SOURCE_DIR}/Build/CMake/Modules/Atomic.rc)
  31. endif(APPLE)
  32. if (ATOMIC_WEBVIEW)
  33. # Target executable names.
  34. set(CEF_TARGET "AtomicEditor")
  35. if(OS_MACOSX)
  36. set(CEF_HELPER_TARGET "AtomicEditor Helper")
  37. endif()
  38. # Logical target used to link the libcef library.
  39. ADD_LOGICAL_TARGET("libcef_lib" "${CEF_LIB_DEBUG}" "${CEF_LIB_RELEASE}")
  40. # Determine the target output directory.
  41. SET_CEF_TARGET_OUT_DIR()
  42. #
  43. # Windows configuration.
  44. #
  45. if(OS_WINDOWS)
  46. # Executable target.
  47. add_executable(${CEF_TARGET} ${EXE_TYPE} ${SOURCE_FILES})
  48. add_dependencies(${CEF_TARGET} libcef_dll_wrapper)
  49. SET_EXECUTABLE_TARGET_PROPERTIES(${CEF_TARGET})
  50. target_link_libraries(${CEF_TARGET} libcef_lib libcef_dll_wrapper ${CEF_STANDARD_LIBS})
  51. if(USE_SANDBOX)
  52. # Logical target used to link the cef_sandbox library.
  53. ADD_LOGICAL_TARGET("cef_sandbox_lib" "${CEF_SANDBOX_LIB_DEBUG}" "${CEF_SANDBOX_LIB_RELEASE}")
  54. target_link_libraries(${CEF_TARGET} cef_sandbox_lib ${CEF_SANDBOX_STANDARD_LIBS})
  55. endif()
  56. # Add the custom manifest files to the executable.
  57. ADD_WINDOWS_MANIFEST("${CMAKE_CURRENT_SOURCE_DIR}/Windows" "${CEF_TARGET}")
  58. # Copy binary and resource files to the target output directory.
  59. COPY_FILES("${CEF_TARGET}" "${CEF_BINARY_FILES}" "${CEF_BINARY_DIR}" "${CEF_TARGET_OUT_DIR}")
  60. COPY_FILES("${CEF_TARGET}" "${CEF_RESOURCE_FILES}" "${CEF_RESOURCE_DIR}" "${CEF_TARGET_OUT_DIR}")
  61. endif()
  62. #
  63. # Mac OS X configuration.
  64. #
  65. if(APPLE)
  66. # Output paths for the app bundles.
  67. set(CEF_APP "${CEF_TARGET_OUT_DIR}/${CEF_TARGET}.app")
  68. set(CEF_HELPER_APP "${CEF_TARGET_OUT_DIR}/${CEF_HELPER_TARGET}.app")
  69. # Variable referenced from Info.plist files.
  70. set(PRODUCT_NAME "${CEF_TARGET}")
  71. # Helper executable target.
  72. add_executable(${CEF_HELPER_TARGET} MACOSX_BUNDLE "${CMAKE_CURRENT_SOURCE_DIR}/WebView/WebProcessHelperMac.cpp")
  73. SET_EXECUTABLE_TARGET_PROPERTIES(${CEF_HELPER_TARGET})
  74. add_dependencies(${CEF_HELPER_TARGET} libcef_dll_wrapper)
  75. target_link_libraries(${CEF_HELPER_TARGET} libcef_lib libcef_dll_wrapper ${CEF_STANDARD_LIBS} Atomic AtomicWebView ${ATOMIC_LINK_LIBRARIES})
  76. set_target_properties(${CEF_HELPER_TARGET} PROPERTIES
  77. MACOSX_BUNDLE_INFO_PLIST "${ATOMIC_SOURCE_DIR}/Build/CMake/Modules/AtomicEditor-HelperInfo.plist.template"
  78. )
  79. # Fix the framework link in the helper executable.
  80. FIX_MACOSX_HELPER_FRAMEWORK_LINK(${CEF_HELPER_TARGET} ${CEF_HELPER_APP})
  81. # Main executable target.
  82. add_executable(${CEF_TARGET} ${EXE_TYPE} ${SOURCE_FILES} ${ATOMIC_EDITOR_ICON})
  83. SET_EXECUTABLE_TARGET_PROPERTIES(${CEF_TARGET})
  84. add_dependencies(${CEF_TARGET} libcef_dll_wrapper "${CEF_HELPER_TARGET}")
  85. target_link_libraries(${CEF_TARGET} libcef_lib libcef_dll_wrapper ${CEF_STANDARD_LIBS})
  86. set_target_properties(${CEF_TARGET} PROPERTIES
  87. RESOURCE "${CEFSIMPLE_RESOURCES_SRCS}"
  88. MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/mac/Info.plist
  89. )
  90. # Copy files into the main app bundle.
  91. add_custom_command(
  92. TARGET ${CEF_TARGET}
  93. POST_BUILD
  94. # Copy the helper app bundle into the Frameworks directory.
  95. COMMAND ${CMAKE_COMMAND} -E copy_directory
  96. "${CEF_HELPER_APP}"
  97. "${CEF_APP}/Contents/Frameworks/${CEF_HELPER_TARGET}.app"
  98. # Copy the CEF framework into the Frameworks directory.
  99. COMMAND ${CMAKE_COMMAND} -E copy_directory
  100. "${CEF_BINARY_DIR}/Chromium Embedded Framework.framework"
  101. "${CEF_APP}/Contents/Frameworks/Chromium Embedded Framework.framework"
  102. VERBATIM
  103. )
  104. # Fix the framework link in the main executable.
  105. FIX_MACOSX_MAIN_FRAMEWORK_LINK(${CEF_TARGET} ${CEF_APP})
  106. if(NOT ${CMAKE_GENERATOR} STREQUAL "Xcode")
  107. # Manually process and copy over resource files.
  108. # The Xcode generator handles this via the set_target_properties RESOURCE directive.
  109. set(PREFIXES "mac/") # Remove these prefixes from input file paths.
  110. COPY_MACOSX_RESOURCES("${CEFSIMPLE_RESOURCES_SRCS}" "${PREFIXES}" "${CEF_TARGET}" "${CMAKE_CURRENT_SOURCE_DIR}" "${CEF_APP}")
  111. endif()
  112. endif(APPLE)
  113. if(OS_LINUX)
  114. # Executable target.
  115. add_executable(${CEF_TARGET} ${EXE_TYPE} ${SOURCE_FILES} ${ATOMIC_EDITOR_ICON})
  116. SET_EXECUTABLE_TARGET_PROPERTIES(${CEF_TARGET})
  117. add_dependencies(${CEF_TARGET} libcef_dll_wrapper)
  118. # Set rpath so that libraries can be placed next to the executable.
  119. set_target_properties(${CEF_TARGET} PROPERTIES INSTALL_RPATH "$ORIGIN")
  120. set_target_properties(${CEF_TARGET} PROPERTIES BUILD_WITH_INSTALL_RPATH TRUE)
  121. set_target_properties(${CEF_TARGET} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CEF_TARGET_OUT_DIR})
  122. # Copy binary and resource files to the target output directory.
  123. COPY_FILES("${CEF_TARGET}" "${CEF_BINARY_FILES}" "${CEF_BINARY_DIR}" "${CEF_TARGET_OUT_DIR}")
  124. COPY_FILES("${CEF_TARGET}" "${CEF_RESOURCE_FILES}" "${CEF_RESOURCE_DIR}" "${CEF_TARGET_OUT_DIR}")
  125. # Set SUID permissions on the chrome-sandbox target.
  126. SET_LINUX_SUID_PERMISSIONS("${CEF_TARGET}" "${CEF_TARGET_OUT_DIR}/chrome-sandbox")
  127. endif()
  128. endif(ATOMIC_WEBVIEW)
  129. target_link_libraries(${CEF_TARGET} ToolCore AtomicApp AtomicWebView AtomicJS AtomicPlayerJS ToolCoreJS AtomicNETScriptBindings AtomicNETScript Poco nativefiledialog ${ATOMIC_LINK_LIBRARIES})
  130. if (APPLE)
  131. set (TARGET_PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${ATOMIC_SOURCE_DIR}/Build/CMake/Modules/AtomicEditorInfo.plist.template")
  132. set (MACOSX_BUNDLE_GUI_IDENTIFIER "com.thunderbeastgames.atomiceditor")
  133. set (MACOSX_BUNDLE_BUNDLE_NAME "AtomicEditor")
  134. target_link_libraries(AtomicEditor libcurl)
  135. elseif(LINUX)
  136. target_link_libraries(AtomicEditor libcurl nativefiledialog ${GTK3_LIBRARIES})
  137. target_link_libraries(${CEF_TARGET} libcef_lib libcef_dll_wrapper ${CEF_STANDARD_LIBS})
  138. else()
  139. target_link_libraries(AtomicEditor libcurl Iphlpapi Wldap32)
  140. # pre-Windows 8 can't count on D3DCompiler_47.dll being on system
  141. add_custom_command (TARGET AtomicEditor POST_BUILD
  142. COMMAND ${CMAKE_COMMAND}
  143. ARGS -E copy_if_different \"${D3DCOMPILER_47_DLL}\" \"$<TARGET_FILE_DIR:AtomicEditor>/D3DCompiler_47.dll\")
  144. endif()
  145. if (TARGET_PROPERTIES)
  146. set_target_properties (AtomicEditor PROPERTIES ${TARGET_PROPERTIES})
  147. endif ()
  148. add_dependencies(${CEF_TARGET} AtomicToolCheckScripts)
  149. GroupSources("Application")
  150. GroupSources("EditorMode")
  151. GroupSources("Editors")
  152. GroupSources("Javascript")
  153. GroupSources("PlayerMode")
  154. GroupSources("Utils")
  155. GroupSources("Components")
  156. include(AtomicDoc)