CMakeLists.txt 7.8 KB

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