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 8.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  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. #################################################################
  34. # Set Source files
  35. set (SRCS ${SRCS} "Camera.cpp")
  36. set (SRCS ${SRCS} "Command.cpp")
  37. set (SRCS ${SRCS} "Console.cpp")
  38. set (SRCS ${SRCS} "Entity.cpp")
  39. set (SRCS ${SRCS} "Font.cpp")
  40. set (SRCS ${SRCS} "Game.cpp")
  41. set (SRCS ${SRCS} "main.cpp")
  42. set (SRCS ${SRCS} "Menu.cpp")
  43. set (SRCS ${SRCS} "Mesh.cpp")
  44. set (SRCS ${SRCS} "OpenRaider.cpp")
  45. set (SRCS ${SRCS} "Render.cpp")
  46. set (SRCS ${SRCS} "Room.cpp")
  47. set (SRCS ${SRCS} "RoomData.cpp")
  48. set (SRCS ${SRCS} "SkeletalModel.cpp")
  49. set (SRCS ${SRCS} "Sound.cpp")
  50. set (SRCS ${SRCS} "Sprite.cpp")
  51. set (SRCS ${SRCS} "Texture.cpp")
  52. set (SRCS ${SRCS} "TombRaider.cpp")
  53. set (SRCS ${SRCS} "ViewVolume.cpp")
  54. set (SRCS ${SRCS} "Window.cpp")
  55. set (SRCS ${SRCS} "World.cpp")
  56. # Select available Sound library
  57. option (ENABLE_AUDIO "Enable Sound Output" YES)
  58. if (OPENAL_FOUND AND ALUT_FOUND AND ENABLE_AUDIO)
  59. set (SRCS ${SRCS} "SoundAL.cpp")
  60. set (USING_AL TRUE)
  61. else (OPENAL_FOUND AND ALUT_FOUND AND ENABLE_AUDIO)
  62. set (SRCS ${SRCS} "SoundNull.cpp")
  63. set (USING_AL FALSE)
  64. message (STATUS "Disabled Sound support (no OpenAL and ALUT)!")
  65. endif (OPENAL_FOUND AND ALUT_FOUND AND ENABLE_AUDIO)
  66. # Select available Windowing library
  67. if (SDL2_FOUND AND SDL2TTF_FOUND)
  68. set (SRCS ${SRCS} "WindowSDL.cpp")
  69. set (SRCS ${SRCS} "FontSDL.cpp")
  70. set (OpenRaider_CXX_FLAGS "${OpenRaider_CXX_FLAGS} -DUSING_SDL")
  71. else (SDL2_FOUND AND SDL2TTF_FOUND)
  72. # Currently only SDL2 support
  73. message (FATAL_ERROR "SDL2 and SDL2-TTF are required at the moment!")
  74. endif (SDL2_FOUND AND SDL2TTF_FOUND)
  75. #################################################################
  76. # Check for header/function presence
  77. include (CheckIncludeFiles)
  78. include (CheckFunctionExists)
  79. include (CheckSymbolExists)
  80. # backtrace() for assert with call stack output
  81. check_include_files (execinfo.h HAVE_EXECINFO_H)
  82. check_function_exists (backtrace HAVE_BACKTRACE)
  83. check_function_exists (backtrace_symbols HAVE_BACKTRACE_SYMBOLS)
  84. # readdir() for recursive folder traversal
  85. check_include_files (dirent.h HAVE_DIRENT_H)
  86. check_function_exists (opendir HAVE_OPENDIR)
  87. check_function_exists (readdir_r HAVE_READDIR_R)
  88. check_function_exists (closedir HAVE_CLOSEDIR)
  89. check_symbol_exists (DT_DIR "dirent.h" HAVE_DT_DIR)
  90. # recursive folder traversal for Windows
  91. check_include_files (windows.h HAVE_WINDOWS_H)
  92. check_function_exists (FindFirstFile HAVE_FINDFIRSTFILE)
  93. check_function_exists (FindNextFile HAVE_FINDNEXTFILE)
  94. check_function_exists (FindClose HAVE_FINDCLOSE)
  95. #################################################################
  96. # Configuration Header file
  97. configure_file (
  98. "${PROJECT_SOURCE_DIR}/include/config.h.in"
  99. "${PROJECT_BINARY_DIR}/config.h"
  100. )
  101. #################################################################
  102. # Apple specific bundling
  103. if (APPLE)
  104. # Mac Bundle Data
  105. set (MACOSX_BUNDLE_INFO_STRING "OpenSource TombRaider Game Engine")
  106. set (MACOSX_BUNDLE_ICON_FILE "AppIcon")
  107. set (MACOSX_BUNDLE_GUI_IDENTIFIER "de.xythobuz.OpenRaider")
  108. set (MACOSX_BUNDLE_BUNDLE_NAME "OpenRaider")
  109. set (MACOSX_BUNDLE_SHORT_VERSION_STRING "${OpenRaider_VERSION_MAJOR}.${OpenRaider_VERSION_MINOR}.${OpenRaider_VERSION_MICRO}${OpenRaider_VERSION_RELEASE}")
  110. set (MACOSX_BUNDLE_LONG_VERSION_STRING "${OpenRaider_VERSION_MAJOR}.${OpenRaider_VERSION_MINOR}.${OpenRaider_VERSION_MICRO}${OpenRaider_VERSION_RELEASE} (${CMAKE_BUILD_TYPE})")
  111. set (MACOSX_BUNDLE_BUNDLE_VERSION "${OpenRaider_VERSION_MAJOR}.${OpenRaider_VERSION_MINOR}.${OpenRaider_VERSION_MICRO}${OpenRaider_VERSION_RELEASE} (${CMAKE_BUILD_TYPE})")
  112. set (MACOSX_BUNDLE_COPYRIGHT "2001 - 2014")
  113. # Copy Icon
  114. set (MAC_ICON "../cmake/AppIcon.icns")
  115. set_source_files_properties (${MAC_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
  116. set (SRCS ${SRCS} ${MAC_ICON})
  117. # Copy Data
  118. set (MAC_DATA "../data/OpenRaider.ini" "../data/test.ttf" "../data/splash.tga")
  119. set_source_files_properties (${MAC_DATA} PROPERTIES MACOSX_PACKAGE_LOCATION Resources/defaults)
  120. set (SRCS ${SRCS} ${MAC_DATA})
  121. endif (APPLE)
  122. #################################################################
  123. # Check for SSE, enable if available
  124. include (../cmake/FindSSE.cmake)
  125. if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
  126. if (SSE_FOUND)
  127. set (SSE_FOUND_MSG "${SSE_FOUND_MSG} SSE")
  128. set (OpenRaider_CXX_FLAGS "${OpenRaider_CXX_FLAGS} -msse")
  129. endif (SSE_FOUND)
  130. if (SSE2_FOUND)
  131. set (SSE_FOUND_MSG "${SSE_FOUND_MSG} SSE2")
  132. set (OpenRaider_CXX_FLAGS "${OpenRaider_CXX_FLAGS} -msse2")
  133. endif (SSE2_FOUND)
  134. if (SSE3_FOUND)
  135. set (SSE_FOUND_MSG "${SSE_FOUND_MSG} SSE3")
  136. set (OpenRaider_CXX_FLAGS "${OpenRaider_CXX_FLAGS} -msse3")
  137. endif (SSE3_FOUND)
  138. if (SSSE3_FOUND)
  139. set (SSE_FOUND_MSG "${SSE_FOUND_MSG} SSSE3")
  140. set (OpenRaider_CXX_FLAGS "${OpenRaider_CXX_FLAGS} -mssse3")
  141. endif (SSSE3_FOUND)
  142. if (SSE4_1_FOUND)
  143. set (SSE_FOUND_MSG "${SSE_FOUND_MSG} SSE4.1")
  144. set (OpenRaider_CXX_FLAGS "${OpenRaider_CXX_FLAGS} -msse4.1")
  145. endif (SSE4_1_FOUND)
  146. # Display message if something is enabled
  147. if (NOT "${SSE_FOUND_MSG}" STREQUAL "")
  148. message (STATUS "Enabled${SSE_FOUND_MSG}...")
  149. endif (NOT "${SSE_FOUND_MSG}" STREQUAL "")
  150. endif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
  151. # Apply Flags
  152. set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenRaider_CXX_FLAGS}")
  153. set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${OpenRaider_CXX_FLAGS} ${OpenRaider_CXX_FLAGS_DEBUG}")
  154. set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${OpenRaider_CXX_FLAGS} ${OpenRaider_CXX_FLAGS_RELEASE}")
  155. # Add subdirectories
  156. add_subdirectory ("math")
  157. add_subdirectory ("utils")
  158. # Add Executable
  159. add_executable (OpenRaider MACOSX_BUNDLE ${SRCS})
  160. #################################################################
  161. if (APPLE)
  162. if (${CMAKE_GENERATOR} STREQUAL "Unix Makefiles")
  163. # Copy setup script
  164. add_custom_command (TARGET OpenRaider POST_BUILD
  165. COMMAND echo "Injecting setup script..."
  166. COMMAND cp "${PROJECT_SOURCE_DIR}/cmake/setup_mac.sh" "${PROJECT_BINARY_DIR}/src/OpenRaider.app/Contents/MacOS/OpenRaider.sh"
  167. COMMAND chmod "a+x" "${PROJECT_BINARY_DIR}/src/OpenRaider.app/Contents/MacOS/OpenRaider.sh"
  168. )
  169. # Fix executable name, so setup script will be called
  170. add_custom_command (TARGET OpenRaider POST_BUILD
  171. COMMAND echo "Changing executable name..."
  172. COMMAND /usr/libexec/PlistBuddy -c "Set :CFBundleExecutable OpenRaider.sh" Info.plist
  173. WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/src/OpenRaider.app/Contents
  174. )
  175. # Preparing the bundle on install
  176. # http://www.cmake.org/Wiki/BundleUtilitiesExample
  177. set (plugin_dest_dir OpenRaider.app/Contents/MacOS)
  178. set (APPS "${PROJECT_BINARY_DIR}/src/OpenRaider.app")
  179. install (CODE "
  180. file(GLOB_RECURSE PLUGINS
  181. \"\${CMAKE_INSTALL_PREFIX}/${plugin_dest_dir}/plugins/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
  182. include(BundleUtilities)
  183. fixup_bundle(\"${APPS}\" \"\${PLUGINS}\" \"\")
  184. " COMPONENT Runtime
  185. )
  186. endif (${CMAKE_GENERATOR} STREQUAL "Unix Makefiles")
  187. endif (APPLE)
  188. #################################################################
  189. if (NOT APPLE)
  190. # Install binary
  191. install (TARGETS OpenRaider
  192. RUNTIME DESTINATION bin
  193. )
  194. endif (NOT APPLE)
  195. #################################################################
  196. # Add Math Library
  197. if (UNIX)
  198. set (LIBS ${LIBS} m)
  199. endif (UNIX)
  200. # Add utils Library
  201. set (LIBS ${LIBS} OpenRaider_math)
  202. set (LIBS ${LIBS} OpenRaider_utils)
  203. # Link to all found libs
  204. target_link_libraries (OpenRaider ${LIBS})
  205. #################################################################
  206. # Add target to run executable
  207. add_custom_target(run COMMAND OpenRaider DEPENDS OpenRaider WORKING_DIRECTORY ${CMAKE_PROJECT_DIR})