]> git.jsancho.org Git - lugaru.git/blobdiff - CMakeLists.txt
Output version info to stdout and show in menu
[lugaru.git] / CMakeLists.txt
index 837960aebc378b9370e087c380579bac3cd488ce..ac908f06e863fa15900fceb596bdde5ca3cfca1b 100644 (file)
@@ -1,6 +1,6 @@
 project(lugaru)
 
 project(lugaru)
 
-cmake_minimum_required(VERSION 3.5)
+cmake_minimum_required(VERSION 3.0)
 cmake_policy(SET CMP0004 OLD)
 
 include(FindPkgConfig)
 cmake_policy(SET CMP0004 OLD)
 
 include(FindPkgConfig)
@@ -16,20 +16,69 @@ if(UNIX AND NOT APPLE)
 endif()
 
 
 endif()
 
 
+### Version
+
+# Version for the current (stable) or next (development) release
+set(LUGARU_VERSION_MAJOR 1)
+set(LUGARU_VERSION_MINOR 2)
+set(LUGARU_VERSION_PATCH 0)
+
+# MAJOR.MINOR, or MAJOR.MINOR.PATCH if PATCH != 0
+set(LUGARU_VERSION_NUMBER "${LUGARU_VERSION_MAJOR}.${LUGARU_VERSION_MINOR}")
+if(LUGARU_VERSION_PATCH)
+    set(LUGARU_VERSION_NUMBER "${LUGARU_VERSION_NUMBER}.${LUGARU_VERSION_PATCH}")
+endif()
+
+# Set to "" for stable (tagged) builds, "-dev" for dev builds
+set(LUGARU_VERSION_SUFFIX "-dev")  # development
+#set(LUGARU_VERSION_SUFFIX "")  # stable
+
+# Set to 7-char git commit hash if available, otherwise "".
+# On stable (tagged) builds, this is ignored.
+set(LUGARU_VERSION_HASH "")
+if(LUGARU_VERSION_SUFFIX STREQUAL "-dev" AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git)
+    find_package(Git)
+    if(GIT_FOUND)
+        execute_process(
+            COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
+            WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
+            OUTPUT_VARIABLE "LUGARU_VERSION_HASH"
+            ERROR_QUIET
+            OUTPUT_STRIP_TRAILING_WHITESPACE)
+        message(STATUS "Git commit hash: ${LUGARU_VERSION_HASH}")
+    endif()
+endif()
+
+set(LUGARU_VERSION_RELEASE "" CACHE STRING "Optional release string, e.g. for distro packages release number")
+
+# Final string built from the above constants, following the scheme:
+# MAJOR.MINOR[.PATCH][-dev] [(git HASH)] [[RELEASE]]
+set(LUGARU_VERSION_STRING "${LUGARU_VERSION_NUMBER}${LUGARU_VERSION_SUFFIX}")
+if(NOT LUGARU_VERSION_HASH STREQUAL "")
+    set(LUGARU_VERSION_STRING "${LUGARU_VERSION_STRING} (git ${LUGARU_VERSION_HASH})")
+endif()
+if(NOT LUGARU_VERSION_RELEASE STREQUAL "")
+    set(LUGARU_VERSION_STRING "${LUGARU_VERSION_STRING} [${LUGARU_VERSION_RELEASE}]")
+endif()
+
+message(STATUS "Version string: ${LUGARU_VERSION_STRING}")
+configure_file(${SRCDIR}/Version.hpp.in ${SRCDIR}/Version.hpp ESCAPE_QUOTES @ONLY)
+
+
 ### CMake config
 
 if(NOT CMAKE_BUILD_TYPE)
     set(CMAKE_BUILD_TYPE RelWithDebInfo)
 endif(NOT CMAKE_BUILD_TYPE)
 ### CMake config
 
 if(NOT CMAKE_BUILD_TYPE)
     set(CMAKE_BUILD_TYPE RelWithDebInfo)
 endif(NOT CMAKE_BUILD_TYPE)
-message("CMake build type: ${CMAKE_BUILD_TYPE}")
+message(STATUS "CMake build type: ${CMAKE_BUILD_TYPE}")
 
 
-set(CMAKE_CXX_FLAGS "-Wall -Wno-parentheses -pedantic --std=c++11 ${CMAKE_CXX_FLAGS}")
+set(CMAKE_CXX_FLAGS "-Wall -Wextra -Wno-parentheses -pedantic --std=gnu++11 ${CMAKE_CXX_FLAGS}")
 
 if(APPLE)
     set(CMAKE_OSX_ARCHITECTURES "x86_64" CACHE STRING "Build architectures for OSX")
 
 if(APPLE)
     set(CMAKE_OSX_ARCHITECTURES "x86_64" CACHE STRING "Build architectures for OSX")
-    set(CMAKE_OSX_DEPLOYMENT_TARGET "10.10" CACHE STRING
+    set(CMAKE_OSX_DEPLOYMENT_TARGET "10.11" CACHE STRING
         "Minimum OS X version to target for deployment (at runtime); newer APIs weak linked. Set to empty string for default value")
         "Minimum OS X version to target for deployment (at runtime); newer APIs weak linked. Set to empty string for default value")
-    set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.10.sdk" CACHE PATH
+    set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.11.sdk" CACHE PATH
         "The product will be built against the headers and libraries located inside the indicated SDK.")
 endif(APPLE)
 
         "The product will be built against the headers and libraries located inside the indicated SDK.")
 endif(APPLE)
 
@@ -37,7 +86,7 @@ if(LINUX)
     option(SYSTEM_INSTALL "Enable system-wide installation, with hardcoded data directory defined with CMAKE_INSTALL_DATADIR" OFF)
 endif(LINUX)
 
     option(SYSTEM_INSTALL "Enable system-wide installation, with hardcoded data directory defined with CMAKE_INSTALL_DATADIR" OFF)
 endif(LINUX)
 
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/CMake/Modules/")
 
 
 ### Sources
 
 
 ### Sources
@@ -48,77 +97,84 @@ set(LUGARU_SRCS
     ${SRCDIR}/Animation/Joint.cpp
     ${SRCDIR}/Animation/Muscle.cpp
     ${SRCDIR}/Animation/Skeleton.cpp
     ${SRCDIR}/Animation/Joint.cpp
     ${SRCDIR}/Animation/Muscle.cpp
     ${SRCDIR}/Animation/Skeleton.cpp
-    ${SRCDIR}/Frustum.cpp
-    ${SRCDIR}/Account.cpp
-    ${SRCDIR}/ConsoleCmds.cpp
-    ${SRCDIR}/Dialog.cpp
-    ${SRCDIR}/Hotspot.cpp
+    ${SRCDIR}/Audio/openal_wrapper.cpp
+    ${SRCDIR}/Audio/Sounds.cpp
+    ${SRCDIR}/Devtools/ConsoleCmds.cpp
+    ${SRCDIR}/Environment/Lights.cpp
+    ${SRCDIR}/Environment/Skybox.cpp
+    ${SRCDIR}/Environment/Terrain.cpp
+    ${SRCDIR}/Graphic/Decal.cpp
+    ${SRCDIR}/Graphic/Models.cpp
+    ${SRCDIR}/Graphic/Sprite.cpp
+    ${SRCDIR}/Graphic/Stereo.cpp
+    ${SRCDIR}/Graphic/Text.cpp
+    ${SRCDIR}/Graphic/Texture.cpp
+    ${SRCDIR}/Level/Awards.cpp
+    ${SRCDIR}/Level/Campaign.cpp
+    ${SRCDIR}/Level/Dialog.cpp
+    ${SRCDIR}/Level/Hotspot.cpp
+    ${SRCDIR}/Math/Frustum.cpp
+    ${SRCDIR}/Math/XYZ.cpp
+    ${SRCDIR}/Menu/Menu.cpp
+    ${SRCDIR}/Objects/Object.cpp
+    ${SRCDIR}/Objects/Person.cpp
+    ${SRCDIR}/Objects/Weapons.cpp
+    ${SRCDIR}/User/Account.cpp
+    ${SRCDIR}/User/Settings.cpp
+    ${SRCDIR}/Utils/Folders.cpp
+    ${SRCDIR}/Utils/ImageIO.cpp
+    ${SRCDIR}/Utils/Input.cpp
+    ${SRCDIR}/Utils/pack.c
+    ${SRCDIR}/Utils/private.c
+    ${SRCDIR}/Utils/unpack.c
     ${SRCDIR}/Game.cpp
     ${SRCDIR}/GameDraw.cpp
     ${SRCDIR}/GameInitDispose.cpp
     ${SRCDIR}/GameTick.cpp
     ${SRCDIR}/Globals.cpp
     ${SRCDIR}/Game.cpp
     ${SRCDIR}/GameDraw.cpp
     ${SRCDIR}/GameInitDispose.cpp
     ${SRCDIR}/GameTick.cpp
     ${SRCDIR}/Globals.cpp
-    ${SRCDIR}/Lights.cpp
-    ${SRCDIR}/Menu.cpp
-    ${SRCDIR}/Models.cpp
-    ${SRCDIR}/Objects.cpp
-    ${SRCDIR}/pack.c
-    ${SRCDIR}/Person.cpp
-    ${SRCDIR}/private.c
-    ${SRCDIR}/Quaternions.cpp
-    ${SRCDIR}/Skybox.cpp
-    ${SRCDIR}/Sprite.cpp
-    ${SRCDIR}/Terrain.cpp
-    ${SRCDIR}/Texture.cpp
-    ${SRCDIR}/Text.cpp
-    ${SRCDIR}/ImageIO.cpp
-    ${SRCDIR}/unpack.c
-    ${SRCDIR}/Weapons.cpp
-    ${SRCDIR}/openal_wrapper.cpp
-    ${SRCDIR}/Input.cpp
-    ${SRCDIR}/Settings.cpp
-    ${SRCDIR}/Stereo.cpp
-    ${SRCDIR}/Sounds.cpp
-    ${SRCDIR}/Awards.cpp
-    ${SRCDIR}/Utils/Folders.cpp
+    ${SRCDIR}/Tutorial.cpp
+
 )
 
 set(LUGARU_H
 )
 
 set(LUGARU_H
-    ${SRCDIR}/Animation/Animation.h
-    ${SRCDIR}/Animation/Joint.h
-    ${SRCDIR}/Animation/Muscle.h
-    ${SRCDIR}/Animation/Skeleton.h
-    ${SRCDIR}/Frustum.h
-    ${SRCDIR}/Account.h
-    ${SRCDIR}/ConsoleCmds.h
-    ${SRCDIR}/Dialog.h
-    ${SRCDIR}/Hotspot.h
-    ${SRCDIR}/Game.h
-    ${SRCDIR}/Lights.h
-    ${SRCDIR}/Menu.h
-    ${SRCDIR}/Models.h
-    ${SRCDIR}/Objects.h
-    ${SRCDIR}/Person.h
-    ${SRCDIR}/PhysicsMath.h
-    ${SRCDIR}/Quaternions.h
-    ${SRCDIR}/Random.h
-    ${SRCDIR}/Skybox.h
-    ${SRCDIR}/Sprite.h
-    ${SRCDIR}/ImageIO.h
-    ${SRCDIR}/Terrain.h
-    ${SRCDIR}/Texture.h
-    ${SRCDIR}/Text.h
-    ${SRCDIR}/Weapons.h
-    ${SRCDIR}/Input.h
-    ${SRCDIR}/binio.h
-    ${SRCDIR}/openal_wrapper.h
-    ${SRCDIR}/optionparser.h
-    ${SRCDIR}/gamegl.h
-    ${SRCDIR}/private.h
-    ${SRCDIR}/Settings.h
-    ${SRCDIR}/Stereo.h
-    ${SRCDIR}/Sounds.h
-    ${SRCDIR}/Utils/Folders.h
+    ${SRCDIR}/Animation/Animation.hpp
+    ${SRCDIR}/Animation/Joint.hpp
+    ${SRCDIR}/Animation/Muscle.hpp
+    ${SRCDIR}/Animation/Skeleton.hpp
+    ${SRCDIR}/Audio/openal_wrapper.hpp
+    ${SRCDIR}/Audio/Sounds.hpp
+    ${SRCDIR}/Devtools/ConsoleCmds.hpp
+    ${SRCDIR}/Environment/Lights.hpp
+    ${SRCDIR}/Environment/Skybox.hpp
+    ${SRCDIR}/Environment/Terrain.hpp
+    ${SRCDIR}/Graphic/Decal.hpp
+    ${SRCDIR}/Graphic/gamegl.hpp
+    ${SRCDIR}/Graphic/Models.hpp
+    ${SRCDIR}/Graphic/Sprite.hpp
+    ${SRCDIR}/Graphic/Stereo.hpp
+    ${SRCDIR}/Graphic/Text.hpp
+    ${SRCDIR}/Graphic/Texture.hpp
+    ${SRCDIR}/Level/Campaign.hpp
+    ${SRCDIR}/Level/Dialog.hpp
+    ${SRCDIR}/Level/Hotspot.hpp
+    ${SRCDIR}/Math/Frustum.hpp
+    ${SRCDIR}/Math/XYZ.hpp
+    ${SRCDIR}/Math/Random.hpp
+    ${SRCDIR}/Menu/Menu.hpp
+    ${SRCDIR}/Objects/Object.hpp
+    ${SRCDIR}/Objects/Person.hpp
+    ${SRCDIR}/Objects/Weapons.hpp
+    ${SRCDIR}/Thirdparty/optionparser.h
+    ${SRCDIR}/User/Account.hpp
+    ${SRCDIR}/User/Settings.hpp
+    ${SRCDIR}/Utils/binio.h
+    ${SRCDIR}/Utils/Folders.hpp
+    ${SRCDIR}/Utils/ImageIO.hpp
+    ${SRCDIR}/Utils/Input.hpp
+    ${SRCDIR}/Utils/private.h
+    ${SRCDIR}/Game.hpp
+    ${SRCDIR}/Tutorial.hpp
+
 )
 
 if(UNIX)
 )
 
 if(UNIX)
@@ -128,7 +184,7 @@ if(UNIX)
     )
     set(LUGARU_H
         ${LUGARU_H}
     )
     set(LUGARU_H
         ${LUGARU_H}
-        ${SRCDIR}/MacCompatibility.h
+        ${SRCDIR}/MacCompatibility.hpp
     )
 endif(UNIX)
 
     )
 endif(UNIX)
 
@@ -148,8 +204,8 @@ if(WIN32)
 
     set(LUGARU_H
         ${LUGARU_H}
 
     set(LUGARU_H
         ${LUGARU_H}
-        ${SRCDIR}/WinDefs.h
-        ${SRCDIR}/win-res/resource.h)
+        ${SRCDIR}/WinDefs.hpp
+        ${SRCDIR}/win-res/resource.hpp)
 endif(WIN32)
 
 if(APPLE)
 endif(WIN32)
 
 if(APPLE)
@@ -169,7 +225,13 @@ else(WIN32)
     find_package(OpenAL REQUIRED)
 endif(WIN32)
 
     find_package(OpenAL REQUIRED)
 endif(WIN32)
 
-find_package(sdl2 REQUIRED)
+# macOS has problems with using pkgconfig to find SDL2
+if(APPLE)
+    find_package(sdl2 REQUIRED)
+else(APPLE)
+    pkg_check_modules(SDL2 sdl2 REQUIRED)
+endif(APPLE)
+
 find_package(PNG REQUIRED)
 find_package(JPEG REQUIRED)
 find_package(ZLIB REQUIRED)
 find_package(PNG REQUIRED)
 find_package(JPEG REQUIRED)
 find_package(ZLIB REQUIRED)
@@ -226,7 +288,7 @@ endif(LINUX)
 if(APPLE)
     set(LUGARU_APP_ROOT ${CMAKE_INSTALL_PREFIX}/Lugaru.app)
     set(LUGARU_BINDIR ${LUGARU_APP_ROOT}/Contents/MacOS)
 if(APPLE)
     set(LUGARU_APP_ROOT ${CMAKE_INSTALL_PREFIX}/Lugaru.app)
     set(LUGARU_BINDIR ${LUGARU_APP_ROOT}/Contents/MacOS)
-    set(LUGARU_RESDIR ${LUGARU_APP_ROOT}/Resources)
+    set(LUGARU_RESDIR ${LUGARU_APP_ROOT}/Contents/Resources)
 endif(APPLE)
 
 # Actual installation instructions
 endif(APPLE)
 
 # Actual installation instructions
@@ -278,7 +340,7 @@ endif(LINUX)
 if(APPLE)
     install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/lugaru DESTINATION ${LUGARU_BINDIR})
     install(DIRECTORY ${CMAKE_SOURCE_DIR}/Data DESTINATION ${LUGARU_APP_ROOT})
 if(APPLE)
     install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/lugaru DESTINATION ${LUGARU_BINDIR})
     install(DIRECTORY ${CMAKE_SOURCE_DIR}/Data DESTINATION ${LUGARU_APP_ROOT})
-    install(FILES ${CMAKE_SOURCE_DIR}/Dist/OSX/lugaru.icns DESTINATION ${LUGARU_RESDIR})
+    install(FILES ${CMAKE_SOURCE_DIR}/Dist/OSX/Lugaru.icns DESTINATION ${LUGARU_RESDIR})
     install(FILES ${CMAKE_SOURCE_DIR}/Dist/OSX/Info.plist DESTINATION ${LUGARU_APP_ROOT}/Contents)
 endif(APPLE)
 
     install(FILES ${CMAKE_SOURCE_DIR}/Dist/OSX/Info.plist DESTINATION ${LUGARU_APP_ROOT}/Contents)
 endif(APPLE)
 
@@ -287,6 +349,10 @@ endif(APPLE)
 install(FILES ${CMAKE_SOURCE_DIR}/AUTHORS
               ${CMAKE_SOURCE_DIR}/CONTENT-LICENSE.txt
               ${CMAKE_SOURCE_DIR}/COPYING.txt
 install(FILES ${CMAKE_SOURCE_DIR}/AUTHORS
               ${CMAKE_SOURCE_DIR}/CONTENT-LICENSE.txt
               ${CMAKE_SOURCE_DIR}/COPYING.txt
-              ${CMAKE_SOURCE_DIR}/DEBUG-OPTIONS.txt
               ${CMAKE_SOURCE_DIR}/README.md
               ${CMAKE_SOURCE_DIR}/README.md
+              ${CMAKE_SOURCE_DIR}/RELEASE-NOTES.md
+              ${CMAKE_SOURCE_DIR}/Docs/DEVTOOLS.txt
+              ${CMAKE_SOURCE_DIR}/Docs/README.Empire.txt
+              ${CMAKE_SOURCE_DIR}/Docs/README.SevenTasks.txt
+              ${CMAKE_SOURCE_DIR}/Docs/README.Temple.txt
         DESTINATION ${LUGARU_DOCDIR})
         DESTINATION ${LUGARU_DOCDIR})