CMakeLists.txt 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. cmake_minimum_required(VERSION 2.6)
  2. project(QGears)
  3. # The version number.
  4. set(QGears_VERSION_MAJOR 0)
  5. set(QGears_VERSION_MINOR 22)
  6. set(QGears_VERSION_PATCH 0)
  7. set(CMAKE_FRAMEWORK_PATH
  8. ${CMAKE_FRAMEWORK_PATH}
  9. /Users/travis/build/q-gears/q-gears/OgreSDK/lib/macosx/Release
  10. /Users/travis/build/q-gears/q-gears/OgreSDK/lib/macosx/Debug
  11. )
  12. set(OGRE_FRAMEWORK_INCLUDES
  13. /Users/travis/build/q-gears/q-gears/OgreSDK/include
  14. )
  15. option(QGears_BUILD_PLUGINS "Build the plugins" TRUE)
  16. option(QGears_BUILD_UTILITIES "Build the utilities" TRUE)
  17. option(QGears_BUILD_TESTS "Build the unit tests" TRUE)
  18. option(QGears_MULTITHREADING "Enable multithreading" FALSE)
  19. option(QGears_SOUND "Enable Sound" FALSE)
  20. find_path(OGRE_CMAKE_MODULE_PATH FindOGRE.cmake
  21. HINTS
  22. "$ENV{OGRE_HOME}/CMake/"
  23. "/usr/local/lib/OGRE/cmake"
  24. "/usr/lib/OGRE/cmake"
  25. "/usr/share/OGRE/cmake/modules"
  26. "/Users/travis/build/q-gears/q-gears/OgreSDK/CMake"
  27. )
  28. if(OGRE_CMAKE_MODULE_PATH-NOTFOUND)
  29. message(SEND_ERROR "Failed to find OGRE module path.")
  30. else()
  31. set(CMAKE_MODULE_PATH "${OGRE_CMAKE_MODULE_PATH};${CMAKE_MODULE_PATH}")
  32. endif()
  33. set(CMAKE_MODULE_PATH "${OGRE_CMAKE_MODULE_PATH};${CMAKE_MODULE_PATH}")
  34. set(CMAKE_MODULE_PATH
  35. "${CMAKE_MODULE_PATH}"
  36. "${QGears_SOURCE_DIR}/CMake"
  37. )
  38. if ("${CMAKE_BUILD_TYPE}" STREQUAL "")
  39. # CMake defaults to leaving CMAKE_BUILD_TYPE empty. This screws up
  40. # differentiation between debug and release builds.
  41. set(CMAKE_BUILD_TYPE "release" CACHE STRING "Choose the type of build, options are: None (CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel." FORCE)
  42. message("RELEASE set")
  43. endif ()
  44. set(CMAKE_DEBUG_POSTFIX "_d")
  45. if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
  46. set(CMAKE_INSTALL_PREFIX
  47. "${QGears_SOURCE_DIR}/output" CACHE PATH "Q-Gears install prefix" FORCE
  48. )
  49. endif()
  50. find_package( ZLIB REQUIRED )
  51. find_package(OGRE REQUIRED)
  52. find_package(OIS REQUIRED)
  53. if(NOT OIS_FOUND)
  54. message(SEND_ERROR "Failed to find OIS.")
  55. endif()
  56. # Find Boost
  57. if (NOT OGRE_BUILD_PLATFORM_IPHONE)
  58. if (WIN32 OR APPLE)
  59. set(Boost_USE_STATIC_LIBS TRUE)
  60. else ()
  61. # Statically linking boost to a dynamic Ogre build doesn't work on Linux 64bit
  62. set(Boost_USE_STATIC_LIBS ${OGRE_STATIC})
  63. endif ()
  64. if (MINGW)
  65. # this is probably a bug in CMake: the boost find module tries to look for
  66. # boost libraries with name libboost_*, but CMake already prefixes library
  67. # search names with "lib". This is the workaround.
  68. set(CMAKE_FIND_LIBRARY_PREFIXES ${CMAKE_FIND_LIBRARY_PREFIXES} "")
  69. endif ()
  70. set(Boost_ADDITIONAL_VERSIONS "1.53" "1.53.0" "1.52" "1.52.0" "1.51" "1.51.0" "1.50" "1.50.0" "1.49" "1.49.0" "1.48" "1.48.0" "1.47" "1.47.0" "1.46" "1.46.0" "1.45" "1.45.0" "1.44" "1.44.0" "1.42" "1.42.0" "1.41.0" "1.41" "1.40.0" "1.40")
  71. # Components that need linking (NB does not include header-only components like bind)
  72. set(OGRE_BOOST_COMPONENTS thread date_time)
  73. find_package(Boost COMPONENTS ${OGRE_BOOST_COMPONENTS} QUIET)
  74. if (NOT Boost_FOUND)
  75. set(Boost_USE_STATIC_LIBS NOT ${Boost_USE_STATIC_LIBS})
  76. find_package(Boost COMPONENTS ${OGRE_BOOST_COMPONENTS} QUIET)
  77. endif()
  78. if(Boost_FOUND AND Boost_VERSION GREATER 104900)
  79. set(OGRE_BOOST_COMPONENTS thread date_time system chrono)
  80. find_package(Boost COMPONENTS ${OGRE_BOOST_COMPONENTS} QUIET)
  81. endif()
  82. # Set up referencing of Boost
  83. include_directories(${Boost_INCLUDE_DIR})
  84. add_definitions(-DBOOST_ALL_NO_LIB)
  85. set(OGRE_LIBRARIES ${OGRE_LIBRARIES} ${Boost_LIBRARIES})
  86. find_package(Boost COMPONENTS program_options filesystem QUIET)
  87. set(OGRE_LIBRARIES ${OGRE_LIBRARIES} ${Boost_LIBRARIES})
  88. set(QGears_LIBRARIES ${OGRE_LIBRARIES})
  89. if(QGears_SOUND)
  90. find_package(OpenAL REQUIRED)
  91. find_package(OggVorbis REQUIRED)
  92. add_definitions(-DQGears_SOUND)
  93. set(QGears_LIBRARIES
  94. ${QGears_LIBRARIES}
  95. ${OPENAL_LIBRARY}
  96. ${OGGVORBIS_LIBRARIES}
  97. )
  98. endif()
  99. if(QGears_MULTITHREADING)
  100. # Find Threads
  101. find_package (Threads REQUIRED)
  102. set(QGears_LIBRARIES
  103. ${QGears_LIBRARIES}
  104. ${CMAKE_THREAD_LIBS_INIT}
  105. )
  106. endif()
  107. if(QGears_BUILD_TESTS)
  108. find_package(Boost COMPONENTS unit_test_framework QUIET)
  109. set(QGears_TEST_LIBRARIES
  110. ${OGRE_LIBRARIES}
  111. ${Boost_LIBRARIES}
  112. )
  113. # enable CTest
  114. enable_testing()
  115. endif()
  116. endif()
  117. set(OGRE_LIBRARIES ${OGRE_LIBRARIES} ${OGRE_Overlay_LIBRARIES})
  118. find_package(Boost COMPONENTS unit_test_framework REQUIRED)
  119. if (Boost_LIBRARIES STREQUAL "")
  120. message(SEND_ERROR "Boost_LIBRARIES is not set")
  121. endif()
  122. set(QGears_INCLUDE_DIRS
  123. ${OIS_INCLUDE_DIRS}
  124. ${OGRE_INCLUDE_DIRS}
  125. ${OGRE_Overlay_INCLUDE_DIRS}
  126. ${OGRE_SAMPLES_INCLUDEPATH}
  127. ${CMAKE_CURRENT_SOURCE_DIR}/dependencies
  128. ${CMAKE_CURRENT_BINARY_DIR}/dependencies/luajit
  129. ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/luajit/src
  130. ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/luabind
  131. ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/luabind/luabind/detail
  132. ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/tinyxml
  133. )
  134. if (MSVC)
  135. # Build cpp files on all cores
  136. SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
  137. else()
  138. # Enable C++11, you may need to use -std=c++0x if using an older gcc compiler
  139. SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fPIC")
  140. endif()
  141. add_definitions(-DTIXML_USE_STL)
  142. add_subdirectory(dependencies)
  143. add_subdirectory(QGearsMain)
  144. add_subdirectory(SupportedGames)
  145. if(QGears_BUILD_PLUGINS)
  146. add_subdirectory(PlugIns)
  147. endif()
  148. if(QGears_BUILD_UTILITIES)
  149. add_subdirectory(utilities)
  150. endif()
  151. if(QGears_BUILD_TESTS)
  152. add_subdirectory(Tests)
  153. endif()
  154. SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/output)
  155. # Set generic CPack properties
  156. INCLUDE(InstallRequiredSystemLibraries)
  157. set(CPACK_PACKAGE_NAME "q-gears")
  158. SET(CPACK_PACKAGE_VERSION ${QGears_VERSION_MAJOR}.${QGears_VERSION_MINOR}.${QGears_VERSION_PATCH})
  159. SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A Free Final Fantasy VII Engine")
  160. # TODO: Need to set these up properly, installing build instructions is a bit strange :)
  161. SET(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/COPYING.txt")
  162. #SET(CPACK_RESOURCE_FILE_README "${PROJECT_SOURCE_DIR}/readme.md")
  163. MESSAGE( STATUS "CMAKE_BUILD_TYPE: " ${CMAKE_BUILD_TYPE} )
  164. MESSAGE( STATUS "BOOST_ROOT: " ${BOOST_ROOT} )
  165. #OS SPECIFIC
  166. if(WIN32)
  167. # On Windows generate MSI packages
  168. SET(CPACK_GENERATOR "WIX")
  169. set(CPACK_WIX_TEMPLATE "${CMAKE_CURRENT_SOURCE_DIR}/wix.template.in")
  170. SET(CPACK_WIX_UPGRADE_GUID 8fbb893f-5622-4f6d-a7f6-c221f7be5d52)
  171. # TODO: Set MSI banner image, copyright info etc, also include startmenu/desktop shortcuts
  172. #set the name of the installer default formating is name-version-os
  173. # If empty assume release
  174. if ("${CMAKE_BUILD_TYPE}" STREQUAL "" OR "${CMAKE_BUILD_TYPE}" STREQUAL "release")
  175. message("RELEASE installer build")
  176. install(FILES ${PROJECT_SOURCE_DIR}/output/resources.cfg DESTINATION ./)
  177. install(FILES ${PROJECT_SOURCE_DIR}/output/plugins.cfg DESTINATION ./)
  178. install(FILES ${OGRE_CMAKE_MODULE_PATH}/../bin/release/OgreMain.dll DESTINATION ./)
  179. install(FILES ${OGRE_CMAKE_MODULE_PATH}/../bin/release/RenderSystem_GL.dll DESTINATION ./)
  180. install(FILES ${OGRE_CMAKE_MODULE_PATH}/../bin/release/OGREOVERLAY.DLL DESTINATION ./)
  181. install(FILES ${OGRE_CMAKE_MODULE_PATH}/../bin/release/OIS.DLL DESTINATION ./)
  182. install(FILES "${BOOST_ROOT}/stage/lib/BOOST_SYSTEM-VC120-MT-1_55.DLL" DESTINATION ./)
  183. else()
  184. message("DEBUG installer build")
  185. install(FILES ${PROJECT_SOURCE_DIR}/output/resources_d.cfg DESTINATION ./)
  186. install(FILES ${PROJECT_SOURCE_DIR}/output/plugins_d.cfg DESTINATION ./)
  187. install(FILES ${OGRE_CMAKE_MODULE_PATH}/../bin/debug/OgreMain_d.dll DESTINATION ./)
  188. install(FILES ${OGRE_CMAKE_MODULE_PATH}/../bin/debug/RenderSystem_GL_d.dll DESTINATION ./)
  189. install(FILES ${OGRE_CMAKE_MODULE_PATH}/../bin/debug/OGREOVERLAY_D.DLL DESTINATION ./)
  190. install(FILES ${OGRE_CMAKE_MODULE_PATH}/../bin/debug/OIS_D.DLL DESTINATION ./)
  191. install(FILES "${BOOST_ROOT}/stage/lib/BOOST_SYSTEM-VC120-MT-GD-1_55.DLL" DESTINATION ./)
  192. endif()
  193. else()
  194. # On Linux generate DEB packages
  195. SET(CPACK_GENERATOR "DEB")
  196. install( FILES ${PROJECT_SOURCE_DIR}/q-gears.png DESTINATION ./share/pixmaps/ )
  197. install( FILES ${PROJECT_SOURCE_DIR}/q-gears.desktop DESTINATION ./share/applications/ )
  198. # Setup DEB package properties
  199. SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "Chris Rizzitello <sithlord48@gmail.com>")
  200. #Find out what architecture are we running on and set the package architecture
  201. EXECUTE_PROCESS(COMMAND dpkg --print-architecture OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE)
  202. MESSAGE ("Architecture: ${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}")
  203. SET(CPACK_DEBIAN_PACKAGE_SECTION games)
  204. SET(CPACK_DEBIAN_PACKAGE_PRIORITY extra)
  205. SET(CPACK_PACKAGE_EXECUTABLE )
  206. #set the name to be debian package like.
  207. SET(CPACK_PACKAGE_FILE_NAME "q-gears_${CPACK_PACKAGE_VERSION}-${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}")
  208. #SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libogre-1.9, libois,libboost-program-options,libboost-filesystem,libvorbis,libopenal,libboost-test,zlib1g")
  209. SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libogre-1.9.0, libois-1.3.0,libboost-program-options1.54.0,libboost-filesystem1.54.0,libvorbis0a,libvorbisfile3,libvorbisenc2,libopenal1,libboost-test1.54.0,zlib1g")
  210. endif()
  211. INCLUDE(CPack)
  212. #End of install instructions