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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289
  1. # Add OpenGL Library
  2. find_package (OpenGL REQUIRED)
  3. include_directories (SYSTEM ${OPENGL_INCLUDE_DIRS})
  4. set (LIBS ${LIBS} ${OPENGL_LIBRARIES})
  5. # Add Z Library
  6. find_package (ZLIB REQUIRED)
  7. include_directories (SYSTEM ${ZLIB_INCLUDE_DIRS})
  8. set (LIBS ${LIBS} ${ZLIB_LIBRARIES})
  9. # Add SDL2 Library
  10. find_package (SDL2)
  11. if (SDL2_FOUND)
  12. include_directories (SYSTEM ${SDL2_INCLUDE_DIR})
  13. set (LIBS ${LIBS} ${SDL2_LIBRARY})
  14. # Add SDL2_ttf Library
  15. find_package (SDL2TTF)
  16. if (SDL2TTF_FOUND)
  17. include_directories (SYSTEM ${SDL2TTF_INCLUDE_DIR})
  18. set (LIBS ${LIBS} ${SDL2TTF_LIBRARY})
  19. endif (SDL2TTF_FOUND)
  20. endif (SDL2_FOUND)
  21. # Add OpenAL Library
  22. find_package (OpenAL)
  23. if (OPENAL_FOUND)
  24. include_directories (SYSTEM ${OPENAL_INCLUDE_DIRS})
  25. set (LIBS ${LIBS} ${OPENAL_LIBRARIES})
  26. # Add ALUT Library
  27. find_package (ALUT)
  28. if (ALUT_FOUND)
  29. include_directories (SYSTEM ${ALUT_INCLUDE_DIRS})
  30. set (LIBS ${LIBS} ${ALUT_LIBRARIES})
  31. endif (ALUT_FOUND)
  32. endif (OPENAL_FOUND)
  33. # Add PNG Library
  34. find_package (PNG)
  35. if (PNG_FOUND)
  36. include_directories (SYSTEM ${PNG_INCLUDE_DIRS})
  37. set (LIBS ${LIBS} ${PNG_LIBRARIES})
  38. add_definitions (${PNG_DEFINITIONS})
  39. endif (PNG_FOUND)
  40. #################################################################
  41. # Set Source files
  42. set (SRCS ${SRCS} "Camera.cpp")
  43. set (SRCS ${SRCS} "Console.cpp")
  44. set (SRCS ${SRCS} "Debug.cpp")
  45. set (SRCS ${SRCS} "Entity.cpp")
  46. set (SRCS ${SRCS} "Exception.cpp")
  47. set (SRCS ${SRCS} "Font.cpp")
  48. set (SRCS ${SRCS} "FontManager.cpp")
  49. set (SRCS ${SRCS} "FontTRLE.cpp")
  50. set (SRCS ${SRCS} "Game.cpp")
  51. set (SRCS ${SRCS} "Log.cpp")
  52. set (SRCS ${SRCS} "main.cpp")
  53. set (SRCS ${SRCS} "Menu.cpp")
  54. set (SRCS ${SRCS} "MenuFolder.cpp")
  55. set (SRCS ${SRCS} "Mesh.cpp")
  56. set (SRCS ${SRCS} "Render.cpp")
  57. set (SRCS ${SRCS} "Room.cpp")
  58. set (SRCS ${SRCS} "RoomData.cpp")
  59. set (SRCS ${SRCS} "RunTime.cpp")
  60. set (SRCS ${SRCS} "Script.cpp")
  61. set (SRCS ${SRCS} "SkeletalModel.cpp")
  62. set (SRCS ${SRCS} "Sound.cpp")
  63. set (SRCS ${SRCS} "Sprite.cpp")
  64. set (SRCS ${SRCS} "StaticMesh.cpp")
  65. set (SRCS ${SRCS} "TextureManager.cpp")
  66. set (SRCS ${SRCS} "TombRaider.cpp")
  67. set (SRCS ${SRCS} "UI.cpp")
  68. set (SRCS ${SRCS} "ViewVolume.cpp")
  69. set (SRCS ${SRCS} "Window.cpp")
  70. set (SRCS ${SRCS} "World.cpp")
  71. # Select available Sound library
  72. option (ENABLE_AUDIO "Enable Sound Output" YES)
  73. if (OPENAL_FOUND AND ALUT_FOUND AND ENABLE_AUDIO)
  74. set (SRCS ${SRCS} "SoundAL.cpp")
  75. set (USING_AL TRUE)
  76. else (OPENAL_FOUND AND ALUT_FOUND AND ENABLE_AUDIO)
  77. set (SRCS ${SRCS} "SoundNull.cpp")
  78. set (USING_AL FALSE)
  79. message (STATUS "Disabled Sound support (no OpenAL and ALUT)!")
  80. endif (OPENAL_FOUND AND ALUT_FOUND AND ENABLE_AUDIO)
  81. # Select available Windowing library
  82. if (SDL2_FOUND)
  83. set (SRCS ${SRCS} "WindowSDL.cpp")
  84. set (OpenRaider_CXX_FLAGS "${OpenRaider_CXX_FLAGS} -DUSING_SDL")
  85. if (SDL2TTF_FOUND)
  86. set (SRCS ${SRCS} "FontSDL.cpp")
  87. set (OpenRaider_CXX_FLAGS "${OpenRaider_CXX_FLAGS} -DUSING_SDL_FONT")
  88. endif (SDL2TTF_FOUND)
  89. else (SDL2_FOUND)
  90. message (FATAL_ERROR "SDL2 is required at the moment!")
  91. endif (SDL2_FOUND)
  92. if (PNG_FOUND)
  93. set (USING_PNG TRUE)
  94. else (PNG_FOUND)
  95. set (USING_PNG FALSE)
  96. endif (PNG_FOUND)
  97. #################################################################
  98. # Check for header/function presence
  99. include (CheckIncludeFiles)
  100. include (CheckFunctionExists)
  101. include (CheckSymbolExists)
  102. # backtrace() for assert with call stack output
  103. check_include_files (execinfo.h HAVE_EXECINFO_H)
  104. check_function_exists (backtrace HAVE_BACKTRACE)
  105. check_function_exists (backtrace_symbols HAVE_BACKTRACE_SYMBOLS)
  106. # readdir() for recursive folder traversal
  107. check_include_files (dirent.h HAVE_DIRENT_H)
  108. check_function_exists (opendir HAVE_OPENDIR)
  109. check_function_exists (readdir_r HAVE_READDIR_R)
  110. check_function_exists (closedir HAVE_CLOSEDIR)
  111. check_symbol_exists (DT_DIR "dirent.h" HAVE_DT_DIR)
  112. # getcwd() for the current working directory
  113. check_include_files (unistd.h HAVE_UNISTD_H)
  114. check_function_exists (getcwd HAVE_GETCWD)
  115. # getenv() for reading environment variables
  116. check_include_files (stdlib.h HAVE_STDLIB_H)
  117. check_function_exists (getenv HAVE_GETENV)
  118. # gettimeofday() for timing
  119. check_include_files (sys/time.h HAVE_SYS_TIME_H)
  120. check_function_exists (gettimeofday HAVE_GETTIMEOFDAY)
  121. #################################################################
  122. # Configuration Header file
  123. configure_file (
  124. "${PROJECT_SOURCE_DIR}/include/config.h.in"
  125. "${PROJECT_BINARY_DIR}/config.h"
  126. )
  127. # Configuration Source file
  128. configure_file (
  129. "${PROJECT_SOURCE_DIR}/src/config.cpp.in"
  130. "${PROJECT_BINARY_DIR}/config.cpp"
  131. )
  132. set (SRCS ${SRCS} "${PROJECT_BINARY_DIR}/config.cpp")
  133. #################################################################
  134. # Apple specific bundling
  135. if (APPLE)
  136. # Mac Bundle Data
  137. set (MACOSX_BUNDLE_INFO_STRING "OpenSource TombRaider Game Engine")
  138. set (MACOSX_BUNDLE_ICON_FILE "AppIcon")
  139. set (MACOSX_BUNDLE_GUI_IDENTIFIER "de.xythobuz.OpenRaider")
  140. set (MACOSX_BUNDLE_BUNDLE_NAME "OpenRaider")
  141. set (MACOSX_BUNDLE_SHORT_VERSION_STRING "${OpenRaider_VERSION_MAJOR}.${OpenRaider_VERSION_MINOR}.${OpenRaider_VERSION_MICRO}${OpenRaider_VERSION_RELEASE}")
  142. set (MACOSX_BUNDLE_LONG_VERSION_STRING "${OpenRaider_VERSION_MAJOR}.${OpenRaider_VERSION_MINOR}.${OpenRaider_VERSION_MICRO}${OpenRaider_VERSION_RELEASE} (${CMAKE_BUILD_TYPE})")
  143. set (MACOSX_BUNDLE_BUNDLE_VERSION "${OpenRaider_VERSION_MAJOR}.${OpenRaider_VERSION_MINOR}.${OpenRaider_VERSION_MICRO}${OpenRaider_VERSION_RELEASE} (${CMAKE_BUILD_TYPE})")
  144. set (MACOSX_BUNDLE_COPYRIGHT "2001 - 2014")
  145. # Copy Icon
  146. set (MAC_ICON "../cmake/AppIcon.icns")
  147. set_source_files_properties (${MAC_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
  148. set (RESRCS ${RESRCS} ${MAC_ICON})
  149. # Copy Data
  150. set (MAC_DATA "../data/font.pc" "../data/OpenRaider.ini" "../data/test.ttf" "../data/splash.tga")
  151. set_source_files_properties (${MAC_DATA} PROPERTIES MACOSX_PACKAGE_LOCATION Resources/defaults)
  152. set (RESRCS ${RESRCS} ${MAC_DATA})
  153. endif (APPLE)
  154. #################################################################
  155. # Check for SSE, enable if available
  156. include (../cmake/FindSSE.cmake)
  157. if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
  158. if (SSE_FOUND)
  159. set (SSE_FOUND_MSG "${SSE_FOUND_MSG} SSE")
  160. set (OpenRaider_CXX_FLAGS "${OpenRaider_CXX_FLAGS} -msse")
  161. endif (SSE_FOUND)
  162. if (SSE2_FOUND)
  163. set (SSE_FOUND_MSG "${SSE_FOUND_MSG} SSE2")
  164. set (OpenRaider_CXX_FLAGS "${OpenRaider_CXX_FLAGS} -msse2")
  165. endif (SSE2_FOUND)
  166. if (SSE3_FOUND)
  167. set (SSE_FOUND_MSG "${SSE_FOUND_MSG} SSE3")
  168. set (OpenRaider_CXX_FLAGS "${OpenRaider_CXX_FLAGS} -msse3")
  169. endif (SSE3_FOUND)
  170. if (SSSE3_FOUND)
  171. set (SSE_FOUND_MSG "${SSE_FOUND_MSG} SSSE3")
  172. set (OpenRaider_CXX_FLAGS "${OpenRaider_CXX_FLAGS} -mssse3")
  173. endif (SSSE3_FOUND)
  174. if (SSE4_1_FOUND)
  175. set (SSE_FOUND_MSG "${SSE_FOUND_MSG} SSE4.1")
  176. set (OpenRaider_CXX_FLAGS "${OpenRaider_CXX_FLAGS} -msse4.1")
  177. endif (SSE4_1_FOUND)
  178. # Display message if something is enabled
  179. if (NOT "${SSE_FOUND_MSG}" STREQUAL "")
  180. message (STATUS "Enabled${SSE_FOUND_MSG}...")
  181. endif (NOT "${SSE_FOUND_MSG}" STREQUAL "")
  182. endif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
  183. # Apply Flags
  184. set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenRaider_CXX_FLAGS}")
  185. set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${OpenRaider_CXX_FLAGS} ${OpenRaider_CXX_FLAGS_DEBUG}")
  186. set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${OpenRaider_CXX_FLAGS} ${OpenRaider_CXX_FLAGS_RELEASE}")
  187. # Add subdirectories
  188. add_subdirectory ("commands")
  189. add_subdirectory ("deps")
  190. add_subdirectory ("loader")
  191. add_subdirectory ("math")
  192. add_subdirectory ("utils")
  193. # Add Executable
  194. add_library (OpenRaider_all OBJECT ${SRCS})
  195. add_executable (OpenRaider MACOSX_BUNDLE ${RESRCS}
  196. $<TARGET_OBJECTS:OpenRaider_all> $<TARGET_OBJECTS:OpenRaider_commands>
  197. $<TARGET_OBJECTS:OpenRaider_deps> $<TARGET_OBJECTS:OpenRaider_math>
  198. $<TARGET_OBJECTS:OpenRaider_utils> $<TARGET_OBJECTS:OpenRaider_loader>
  199. )
  200. #################################################################
  201. if (APPLE)
  202. if (${CMAKE_GENERATOR} STREQUAL "Unix Makefiles")
  203. # Copy setup script
  204. add_custom_command (TARGET OpenRaider POST_BUILD
  205. COMMAND echo "Injecting setup script..."
  206. COMMAND cp "${PROJECT_SOURCE_DIR}/cmake/setup_mac.sh" "${PROJECT_BINARY_DIR}/src/OpenRaider.app/Contents/MacOS/OpenRaider.sh"
  207. COMMAND chmod "a+x" "${PROJECT_BINARY_DIR}/src/OpenRaider.app/Contents/MacOS/OpenRaider.sh"
  208. )
  209. # Fix executable name, so setup script will be called
  210. add_custom_command (TARGET OpenRaider POST_BUILD
  211. COMMAND echo "Changing executable name..."
  212. COMMAND /usr/libexec/PlistBuddy -c "Set :CFBundleExecutable OpenRaider.sh" Info.plist
  213. WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/src/OpenRaider.app/Contents
  214. )
  215. # Preparing the bundle on install
  216. # http://www.cmake.org/Wiki/BundleUtilitiesExample
  217. set (plugin_dest_dir OpenRaider.app/Contents/MacOS)
  218. set (APPS "${PROJECT_BINARY_DIR}/src/OpenRaider.app")
  219. install (CODE "
  220. file(GLOB_RECURSE PLUGINS
  221. \"\${CMAKE_INSTALL_PREFIX}/${plugin_dest_dir}/plugins/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
  222. include(BundleUtilities)
  223. fixup_bundle(\"${APPS}\" \"\${PLUGINS}\" \"\")
  224. " COMPONENT Runtime
  225. )
  226. endif (${CMAKE_GENERATOR} STREQUAL "Unix Makefiles")
  227. endif (APPLE)
  228. #################################################################
  229. if (NOT APPLE)
  230. # Install binary
  231. install (TARGETS OpenRaider
  232. RUNTIME DESTINATION bin
  233. )
  234. endif (NOT APPLE)
  235. #################################################################
  236. # Add Math Library
  237. if (UNIX)
  238. set (LIBS ${LIBS} m)
  239. endif (UNIX)
  240. # Link to all found libs
  241. target_link_libraries (OpenRaider ${LIBS})
  242. #################################################################
  243. # Add target to run executable
  244. if (${CMAKE_GENERATOR} STREQUAL "Unix Makefiles" OR ${CMAKE_GENERATOR} STREQUAL "MinGW Makefiles")
  245. add_custom_target(run COMMAND OpenRaider DEPENDS OpenRaider WORKING_DIRECTORY ${CMAKE_PROJECT_DIR})
  246. endif (${CMAKE_GENERATOR} STREQUAL "Unix Makefiles" OR ${CMAKE_GENERATOR} STREQUAL "MinGW Makefiles")