Open Source Tomb Raider Engine
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

CMakeLists.txt 10KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. # Options
  2. option (ENABLE_AUDIO "Enable Sound Output" YES)
  3. option (FORCE_GLFW "Use GLFW even if SDL2 was found" NO)
  4. # Add OpenGL Library
  5. find_package (OpenGL REQUIRED)
  6. include_directories (SYSTEM ${OPENGL_INCLUDE_DIRS})
  7. set (LIBS ${LIBS} ${OPENGL_LIBRARIES})
  8. # Add GLM Library
  9. find_package (GLM REQUIRED)
  10. include_directories (SYSTEM ${GLM_INCLUDE_DIRS})
  11. # Add glbinding Library
  12. find_package (glbinding REQUIRED)
  13. include_directories (SYSTEM ${GLBINDING_INCLUDES})
  14. # TODO REQUIRED has no effect and GLBINDING_LIBRARIES is empty?!
  15. set (GLBINDING_LIBRARIES "glbinding::glbinding")
  16. set (LIBS ${LIBS} ${GLBINDING_LIBRARIES})
  17. # Add SDL2 Library
  18. find_package (SDL2)
  19. if (SDL2_FOUND AND NOT FORCE_GLFW)
  20. include_directories (SYSTEM ${SDL2_INCLUDE_DIR})
  21. set (LIBS ${LIBS} ${SDL2_LIBRARY})
  22. else (SDL2_FOUND AND NOT FORCE_GLFW)
  23. find_package (GLFW)
  24. if (GLFW_FOUND)
  25. include_directories (SYSTEM ${GLFW_INCLUDE_DIRS})
  26. set (LIBS ${LIBS} ${GLFW_LIBRARIES})
  27. endif (GLFW_FOUND)
  28. endif (SDL2_FOUND AND NOT FORCE_GLFW)
  29. # Add OpenAL Library
  30. find_package (OpenAL)
  31. if (OPENAL_FOUND)
  32. include_directories (SYSTEM ${OPENAL_INCLUDE_DIRS})
  33. set (LIBS ${LIBS} ${OPENAL_LIBRARIES})
  34. # Add ALUT Library
  35. find_package (ALUT)
  36. if (ALUT_FOUND)
  37. include_directories (SYSTEM ${ALUT_INCLUDE_DIRS})
  38. set (LIBS ${LIBS} ${ALUT_LIBRARIES})
  39. endif (ALUT_FOUND)
  40. endif (OPENAL_FOUND)
  41. #################################################################
  42. # Set Source files
  43. set (SRCS ${SRCS} "BoundingBox.cpp" "../include/BoundingBox.h")
  44. set (SRCS ${SRCS} "BoundingSphere.cpp" "../include/BoundingSphere.h")
  45. set (SRCS ${SRCS} "Camera.cpp" "../include/Camera.h")
  46. set (SRCS ${SRCS} "Console.cpp" "../include/Console.h")
  47. set (SRCS ${SRCS} "Entity.cpp" "../include/Entity.h")
  48. set (SRCS ${SRCS} "Game.cpp" "../include/Game.h")
  49. set (SRCS ${SRCS} "Log.cpp" "../include/Log.h")
  50. set (SRCS ${SRCS} "main.cpp" "../include/global.h")
  51. set (SRCS ${SRCS} "Menu.cpp" "../include/Menu.h")
  52. set (SRCS ${SRCS} "Mesh.cpp" "../include/Mesh.h")
  53. set (SRCS ${SRCS} "Render.cpp" "../include/Render.h")
  54. set (SRCS ${SRCS} "Room.cpp" "../include/Room.h")
  55. set (SRCS ${SRCS} "RoomData.cpp" "../include/RoomData.h")
  56. set (SRCS ${SRCS} "RoomMesh.cpp" "../include/RoomMesh.h")
  57. set (SRCS ${SRCS} "RunTime.cpp" "../include/RunTime.h")
  58. set (SRCS ${SRCS} "Script.cpp" "../include/Script.h")
  59. set (SRCS ${SRCS} "Selector.cpp" "../include/Selector.h")
  60. set (SRCS ${SRCS} "SkeletalModel.cpp" "../include/SkeletalModel.h")
  61. set (SRCS ${SRCS} "SoundManager.cpp" "../include/SoundManager.h")
  62. set (SRCS ${SRCS} "Sprite.cpp" "../include/Sprite.h")
  63. set (SRCS ${SRCS} "StaticMesh.cpp" "../include/StaticMesh.h")
  64. set (SRCS ${SRCS} "TextureManager.cpp" "../include/TextureManager.h")
  65. set (SRCS ${SRCS} "UI.cpp" "../include/UI.h")
  66. set (SRCS ${SRCS} "World.cpp" "../include/World.h")
  67. # Select available Sound library
  68. if (OPENAL_FOUND AND ALUT_FOUND AND ENABLE_AUDIO)
  69. set (USING_AL TRUE)
  70. else (OPENAL_FOUND AND ALUT_FOUND AND ENABLE_AUDIO)
  71. set (USING_AL FALSE)
  72. message (STATUS "Disabled Sound support (no OpenAL and ALUT)!")
  73. endif (OPENAL_FOUND AND ALUT_FOUND AND ENABLE_AUDIO)
  74. # Select available Windowing library
  75. if (SDL2_FOUND AND NOT FORCE_GLFW)
  76. set (USING_GLFW FALSE)
  77. set (USING_SDL TRUE)
  78. else (SDL2_FOUND AND NOT FORCE_GLFW)
  79. set (USING_SDL FALSE)
  80. if (GLFW_FOUND)
  81. set (USING_GLFW TRUE)
  82. else (GLFW_FOUND)
  83. set (USING_GLFW FALSE)
  84. message (FATAL_ERROR "SDL2 or GLFW are required!")
  85. endif (GLFW_FOUND)
  86. endif (SDL2_FOUND AND NOT FORCE_GLFW)
  87. #################################################################
  88. # Check for header/function presence
  89. include (CheckIncludeFiles)
  90. include (CheckFunctionExists)
  91. include (CheckSymbolExists)
  92. # backtrace() for assert with call stack output
  93. check_include_files (execinfo.h HAVE_EXECINFO_H)
  94. check_function_exists (backtrace HAVE_BACKTRACE)
  95. check_function_exists (backtrace_symbols HAVE_BACKTRACE_SYMBOLS)
  96. # readdir() for recursive folder traversal
  97. check_include_files (dirent.h HAVE_DIRENT_H)
  98. check_function_exists (opendir HAVE_OPENDIR)
  99. check_function_exists (readdir_r HAVE_READDIR_R)
  100. check_function_exists (closedir HAVE_CLOSEDIR)
  101. check_symbol_exists (DT_DIR "dirent.h" HAVE_DT_DIR)
  102. # getcwd() for the current working directory
  103. check_include_files (unistd.h HAVE_UNISTD_H)
  104. check_function_exists (getcwd HAVE_GETCWD)
  105. # _getcwd() for current working directory in windows
  106. check_include_files (direct.h HAVE_DIRECT_H)
  107. check_function_exists (_getcwd HAVE__GETCWD)
  108. # getenv() for reading environment variables
  109. check_include_files (stdlib.h HAVE_STDLIB_H)
  110. check_function_exists (getenv HAVE_GETENV)
  111. #################################################################
  112. # Configuration Header file
  113. configure_file (
  114. "${PROJECT_SOURCE_DIR}/include/config.h.in"
  115. "${PROJECT_BINARY_DIR}/config.h"
  116. )
  117. # Configuration Source file
  118. configure_file (
  119. "${PROJECT_SOURCE_DIR}/src/config.cpp.in"
  120. "${PROJECT_BINARY_DIR}/config.cpp"
  121. )
  122. set (SRCS ${SRCS} "${PROJECT_BINARY_DIR}/config.cpp")
  123. #################################################################
  124. # Apple specific bundling
  125. if (APPLE)
  126. # Mac Bundle Data
  127. set (MACOSX_BUNDLE_INFO_STRING "OpenSource TombRaider Game Engine")
  128. set (MACOSX_BUNDLE_ICON_FILE "AppIcon")
  129. set (MACOSX_BUNDLE_GUI_IDENTIFIER "de.xythobuz.OpenRaider")
  130. set (MACOSX_BUNDLE_BUNDLE_NAME "OpenRaider")
  131. set (MACOSX_BUNDLE_SHORT_VERSION_STRING "${OpenRaider_VERSION_MAJOR}.${OpenRaider_VERSION_MINOR}.${OpenRaider_VERSION_MICRO}${OpenRaider_VERSION_RELEASE}")
  132. set (MACOSX_BUNDLE_LONG_VERSION_STRING "${OpenRaider_VERSION_MAJOR}.${OpenRaider_VERSION_MINOR}.${OpenRaider_VERSION_MICRO}${OpenRaider_VERSION_RELEASE} (${CMAKE_BUILD_TYPE})")
  133. set (MACOSX_BUNDLE_BUNDLE_VERSION "${OpenRaider_VERSION_MAJOR}.${OpenRaider_VERSION_MINOR}.${OpenRaider_VERSION_MICRO}${OpenRaider_VERSION_RELEASE} (${CMAKE_BUILD_TYPE})")
  134. set (MACOSX_BUNDLE_COPYRIGHT "2001 - 2014")
  135. # Copy Icon
  136. set (MAC_ICON "../cmake/AppIcon.icns")
  137. set_source_files_properties (${MAC_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
  138. set (RESRCS ${RESRCS} ${MAC_ICON})
  139. # Copy Data
  140. set (MAC_DATA "../data/OpenRaider.ini" "../data/splash.tga")
  141. set_source_files_properties (${MAC_DATA} PROPERTIES MACOSX_PACKAGE_LOCATION Resources/defaults)
  142. set (RESRCS ${RESRCS} ${MAC_DATA})
  143. endif (APPLE)
  144. #################################################################
  145. # Apply Flags
  146. set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenRaider_CXX_FLAGS}")
  147. set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${OpenRaider_CXX_FLAGS} ${OpenRaider_CXX_FLAGS_DEBUG}")
  148. set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${OpenRaider_CXX_FLAGS} ${OpenRaider_CXX_FLAGS_RELEASE}")
  149. # Add subdirectories
  150. add_subdirectory ("commands")
  151. add_subdirectory ("deps")
  152. add_subdirectory ("loader")
  153. add_subdirectory ("system")
  154. add_subdirectory ("utils")
  155. # Add Executable
  156. add_executable (OpenRaider MACOSX_BUNDLE ${RESRCS}
  157. ${SRCS} $<TARGET_OBJECTS:OpenRaider_commands>
  158. $<TARGET_OBJECTS:OpenRaider_deps> $<TARGET_OBJECTS:OpenRaider_loader>
  159. $<TARGET_OBJECTS:OpenRaider_utils> $<TARGET_OBJECTS:OpenRaider_system>
  160. )
  161. #################################################################
  162. if (APPLE)
  163. if (${CMAKE_GENERATOR} STREQUAL "Unix Makefiles")
  164. # Copy setup script
  165. add_custom_command (TARGET OpenRaider POST_BUILD
  166. COMMAND echo "Injecting setup script..."
  167. COMMAND cp "${PROJECT_SOURCE_DIR}/cmake/setup_mac.sh" "${PROJECT_BINARY_DIR}/src/OpenRaider.app/Contents/MacOS/OpenRaider.sh"
  168. COMMAND chmod "a+x" "${PROJECT_BINARY_DIR}/src/OpenRaider.app/Contents/MacOS/OpenRaider.sh"
  169. )
  170. # Fix executable name, so setup script will be called
  171. add_custom_command (TARGET OpenRaider POST_BUILD
  172. COMMAND echo "Changing executable name..."
  173. COMMAND /usr/libexec/PlistBuddy -c "Set :CFBundleExecutable OpenRaider.sh" Info.plist
  174. WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/src/OpenRaider.app/Contents
  175. )
  176. # Preparing the bundle on install
  177. # http://www.cmake.org/Wiki/BundleUtilitiesExample
  178. set (plugin_dest_dir OpenRaider.app/Contents/MacOS)
  179. set (APPS "${PROJECT_BINARY_DIR}/src/OpenRaider.app")
  180. install (CODE "
  181. file(GLOB_RECURSE PLUGINS
  182. \"\${CMAKE_INSTALL_PREFIX}/${plugin_dest_dir}/plugins/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
  183. include(BundleUtilities)
  184. fixup_bundle(\"${APPS}\" \"\${PLUGINS}\" \"\")
  185. " COMPONENT Runtime
  186. )
  187. endif (${CMAKE_GENERATOR} STREQUAL "Unix Makefiles")
  188. endif (APPLE)
  189. #################################################################
  190. # Install rules
  191. if (APPLE)
  192. # We want to install to /Applications by default, not /usr
  193. set (OR_INSTALL_PREFIX "/" CACHE PATH "Prefix prepended to
  194. install directories")
  195. set (CMAKE_INSTALL_PREFIX "${OR_INSTALL_PREFIX}" CACHE INTERNAL "Prefix
  196. prepended to install directories" FORCE)
  197. # Only the App Bundle is required on OS X
  198. install (TARGETS OpenRaider BUNDLE DESTINATION Applications)
  199. elseif (NOT WIN32)
  200. # We need a special config file for this install method
  201. configure_file (
  202. "${PROJECT_SOURCE_DIR}/data/Unix.in"
  203. "${PROJECT_BINARY_DIR}/Unix.ini"
  204. )
  205. # Executable
  206. install (TARGETS OpenRaider RUNTIME DESTINATION bin)
  207. # Config file
  208. install (FILES "${PROJECT_BINARY_DIR}/Unix.ini"
  209. DESTINATION "share/OpenRaider"
  210. RENAME "OpenRaider.ini")
  211. # Data files
  212. install (FILES "${PROJECT_SOURCE_DIR}/data/splash.tga"
  213. DESTINATION "share/OpenRaider")
  214. endif (APPLE)
  215. #################################################################
  216. # Add Math Library
  217. if (UNIX)
  218. set (LIBS ${LIBS} m)
  219. endif (UNIX)
  220. # Link to all found libs
  221. target_link_libraries (OpenRaider ${LIBS})
  222. #################################################################
  223. # Add target to run executable
  224. if (${CMAKE_GENERATOR} STREQUAL "Unix Makefiles" OR ${CMAKE_GENERATOR} STREQUAL "MinGW Makefiles")
  225. add_custom_target(run COMMAND OpenRaider DEPENDS OpenRaider WORKING_DIRECTORY ${CMAKE_PROJECT_DIR})
  226. endif (${CMAKE_GENERATOR} STREQUAL "Unix Makefiles" OR ${CMAKE_GENERATOR} STREQUAL "MinGW Makefiles")