CMakeLists.txt 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. include_directories ( ${CMAKE_SOURCE_DIR}/Source/ThirdParty
  2. ${CMAKE_SOURCE_DIR}/Source/ThirdParty/rapidjson/include
  3. ${CMAKE_SOURCE_DIR}/Source/ThirdParty/kNet/include
  4. ${CMAKE_SOURCE_DIR}/Source/ThirdParty/FreeType/include
  5. ${CMAKE_SOURCE_DIR}/Source/ThirdParty/Box2D
  6. ${CMAKE_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 ${CMAKE_SOURCE_DIR}/Artifacts/Build/Source/Generated/${JAVASCRIPT_BINDINGS_PLATFORM}/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 Atomic.icns)
  19. set(ATOMIC_EDITOR_ICON ${CMAKE_SOURCE_DIR}/Build/CMake/Modules/Atomic.icns)
  20. set_source_files_properties(${ATOMIC_EDITOR_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
  21. else()
  22. include_directories (${CMAKE_SOURCE_DIR}/Source/ThirdParty/libcurl/include)
  23. add_definitions(-DCURL_STATICLIB)
  24. # We want the console for now
  25. #set (EXE_TYPE WIN32)
  26. add_definitions(-DATOMIC_WIN32_CONSOLE)
  27. set (SOURCE_FILES ${SOURCE_FILES} ${CMAKE_SOURCE_DIR}/Build/CMake/Modules/Atomic.rc)
  28. endif(APPLE)
  29. add_executable(AtomicEditor ${EXE_TYPE} ${SOURCE_FILES} ${ATOMIC_EDITOR_ICON})
  30. target_link_libraries(AtomicEditor ToolCore AtomicJS AtomicPlayerJS AtomicNETJS ToolCoreJS Poco nativefiledialog ${ATOMIC_LINK_LIBRARIES})
  31. if (ATOMIC_WEBVIEW)
  32. # Target executable names.
  33. set(CEF_TARGET "AtomicEditor")
  34. if(OS_MACOSX)
  35. set(CEF_HELPER_TARGET "AtomicEditor Helper")
  36. endif()
  37. if (OS_WINDOWS)
  38. target_link_libraries(AtomicEditor AtomicWebView libcef_dll_wrapper "${CEF_LIB_RELEASE}")
  39. endif()
  40. if (OS_LINUX)
  41. target_link_libraries(AtomicEditor AtomicWebView X11 libcef_dll_wrapper "${CEF_LIB_RELEASE}")
  42. endif()
  43. if(OS_MACOSX)
  44. # Logical target used to link the libcef library.
  45. ADD_LOGICAL_TARGET("libcef_lib" "${CEF_LIB_DEBUG}" "${CEF_LIB_RELEASE}")
  46. # Determine the target output directory.
  47. SET_CEF_TARGET_OUT_DIR()
  48. # Output paths for the app bundles.
  49. set(CEF_APP "${CEF_TARGET_OUT_DIR}/${CEF_TARGET}.app")
  50. set(CEF_HELPER_APP "${CEF_TARGET_OUT_DIR}/${CEF_HELPER_TARGET}.app")
  51. # Variable referenced from Info.plist files.
  52. set(PRODUCT_NAME "${CEF_TARGET}")
  53. # Helper executable target.
  54. add_executable(${CEF_HELPER_TARGET} MACOSX_BUNDLE "${CMAKE_CURRENT_SOURCE_DIR}/WebView/WebProcessHelperMac.cpp")
  55. add_dependencies(${CEF_HELPER_TARGET} libcef_dll_wrapper)
  56. target_link_libraries(${CEF_HELPER_TARGET} libcef_lib libcef_dll_wrapper ${CEF_STANDARD_LIBS} Atomic AtomicWebView ${ATOMIC_LINK_LIBRARIES})
  57. set_target_properties(${CEF_HELPER_TARGET} PROPERTIES
  58. MACOSX_BUNDLE_INFO_PLIST "${CMAKE_SOURCE_DIR}/Build/CMake/Modules/AtomicEditor-HelperInfo.plist.template"
  59. )
  60. # Fix the framework link in the helper executable.
  61. FIX_MACOSX_HELPER_FRAMEWORK_LINK(${CEF_HELPER_TARGET} ${CEF_HELPER_APP})
  62. # Main executable target.
  63. add_dependencies(${CEF_TARGET} libcef_dll_wrapper "${CEF_HELPER_TARGET}")
  64. target_link_libraries(${CEF_TARGET} AtomicWebView libcef_lib libcef_dll_wrapper ${CEF_STANDARD_LIBS})
  65. # Copy files into the main app bundle.
  66. add_custom_command(
  67. TARGET ${CEF_TARGET}
  68. POST_BUILD
  69. # Copy the helper app bundle into the Frameworks directory.
  70. COMMAND ${CMAKE_COMMAND} -E copy_directory
  71. "${CEF_HELPER_APP}"
  72. "${CEF_APP}/Contents/Frameworks/${CEF_HELPER_TARGET}.app"
  73. # Copy the CEF framework into the Frameworks directory.
  74. COMMAND ${CMAKE_COMMAND} -E copy_directory
  75. "${CEF_BINARY_DIR}/Chromium Embedded Framework.framework"
  76. "${CEF_APP}/Contents/Frameworks/Chromium Embedded Framework.framework"
  77. VERBATIM
  78. )
  79. # Fix the framework link in the main executable.
  80. FIX_MACOSX_MAIN_FRAMEWORK_LINK(${CEF_TARGET} ${CEF_APP})
  81. # Make the other helper app bundles.
  82. MAKE_MACOSX_HELPERS(${CEF_TARGET} ${CEF_APP})
  83. if(NOT ${CMAKE_GENERATOR} STREQUAL "Xcode")
  84. # Manually process and copy over resource files.
  85. # The Xcode generator handles this via the set_target_properties RESOURCE directive.
  86. set(PREFIXES "mac/") # Remove these prefixes from input file paths.
  87. COPY_MACOSX_RESOURCES("${CEFSIMPLE_RESOURCES_SRCS}" "${PREFIXES}" "${CEF_TARGET}" "${CMAKE_CURRENT_SOURCE_DIR}" "${CEF_APP}")
  88. endif()
  89. endif()
  90. if(OS_WINDOWS)
  91. # Determine the target output directory.
  92. SET_CEF_TARGET_OUT_DIR()
  93. # Copy CEF binary and resource files to the target output directory.
  94. # set(CEF_TARGET_OUT_DIR $<TARGET_FILE_DIR:AtomicEditor>)
  95. COPY_FILES("${CEF_TARGET}" "${CEF_BINARY_FILES}" "${CEF_BINARY_DIR}" "${CEF_TARGET_OUT_DIR}")
  96. COPY_FILES("${CEF_TARGET}" "${CEF_RESOURCE_FILES}" "${CEF_RESOURCE_DIR}" "${CEF_TARGET_OUT_DIR}")
  97. endif()
  98. endif(ATOMIC_WEBVIEW)
  99. if (APPLE)
  100. set (TARGET_PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${CMAKE_SOURCE_DIR}/Build/CMake/Modules/AtomicEditorInfo.plist.template")
  101. set (MACOSX_BUNDLE_GUI_IDENTIFIER "com.thunderbeastgames.atomiceditor")
  102. set (MACOSX_BUNDLE_BUNDLE_NAME "AtomicEditor")
  103. target_link_libraries(AtomicEditor NETCore NETScript libcurl)
  104. elseif(LINUX)
  105. target_link_libraries(AtomicEditor NETCore NETScript libcurl nativefiledialog ${GTK3_LIBRARIES})
  106. else()
  107. target_link_libraries(AtomicEditor NETCore NETScript libcurl Iphlpapi Wldap32)
  108. # pre-Windows 8 can't count on D3DCompiler_47.dll being on system
  109. add_custom_command (TARGET AtomicEditor POST_BUILD
  110. COMMAND ${CMAKE_COMMAND}
  111. ARGS -E copy_if_different \"${D3DCOMPILER_47_DLL}\" \"$<TARGET_FILE_DIR:AtomicEditor>/D3DCompiler_47.dll\")
  112. endif()
  113. if (TARGET_PROPERTIES)
  114. set_target_properties (AtomicEditor PROPERTIES ${TARGET_PROPERTIES})
  115. endif ()
  116. GroupSources("Application")
  117. GroupSources("EditorMode")
  118. GroupSources("Editors")
  119. GroupSources("Javascript")
  120. GroupSources("PlayerMode")
  121. GroupSources("Utils")
  122. GroupSources("Components")
  123. include(AtomicDoc)