# Tell CMake about or own modules
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
-# Versions
-set(QUASSEL_MAJOR 0)
-set(QUASSEL_MINOR 13)
-set(QUASSEL_PATCH 50)
-set(QUASSEL_VERSION_STRING "0.14-pre")
-
-# Output CMake and Quassel versions as well as build type for debug reasons
-message(STATUS "Building Quassel ${QUASSEL_VERSION_STRING}...")
+include(QuasselVersion)
+
message(STATUS "Using CMake ${CMAKE_VERSION}")
# Set up build type rather early
endif()
endif()
-# Generate version information from Git
-#####################################################################
-
-include(GetGitRevisionDescription)
-get_git_head_revision(GIT_REFSPEC GIT_HEAD)
-git_describe(GIT_DESCRIBE --long)
-
-# If in a Git repo we can get the commit-date from a git command
-if (GIT_HEAD)
- execute_process(
- COMMAND git -c log.showsignature=false show -s --format=%ct
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
- OUTPUT_VARIABLE GIT_COMMIT_DATE
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
-endif()
-
-# If not in a Git repo try to read GIT_HEAD and GIT_DESCRIBE from
-# enviroment
-if (NOT GIT_HEAD OR NOT GIT_DESCRIBE)
- if (DEFINED ENV{GIT_HEAD})
- set(GIT_HEAD $ENV{GIT_HEAD})
- endif()
- if (DEFINED ENV{GIT_DESCRIBE})
- set(GIT_DESCRIBE $ENV{GIT_DESCRIBE})
- endif()
-endif()
-
-# Sanitize things if we're not in a Git repo
-if (NOT GIT_HEAD OR NOT GIT_DESCRIBE)
- set(GIT_HEAD "")
- set(GIT_DESCRIBE "")
- set(GIT_COMMIT_DATE 0)
-endif()
-
-configure_file(version.h.in ${CMAKE_BINARY_DIR}/version.h @ONLY)
-
# Prepare the build
#####################################################################
--- /dev/null
+# Set up version-related information
+###############################################################################
+
+# Quassel version
+set(QUASSEL_MAJOR 0)
+set(QUASSEL_MINOR 13)
+set(QUASSEL_PATCH 50)
+set(QUASSEL_VERSION_STRING "0.14-pre")
+
+# Get additional version information from Git
+include(GetGitRevisionDescription)
+get_git_head_revision(GIT_REFSPEC GIT_HEAD)
+git_describe(GIT_DESCRIBE --long)
+
+# If in a Git repo we can get the commit-date from a git command
+if (GIT_HEAD)
+ find_program(GIT_COMMAND NAMES git)
+ if (GIT_COMMAND)
+ execute_process(
+ COMMAND ${GIT_COMMAND} -c log.showsignature=false show -s --format=%ct
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+ OUTPUT_VARIABLE GIT_COMMIT_DATE
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ endif()
+endif()
+
+# If not in a Git repo try to read GIT_HEAD and GIT_DESCRIBE from enviroment
+if (NOT GIT_HEAD OR NOT GIT_DESCRIBE)
+ if (DEFINED ENV{GIT_HEAD})
+ set(GIT_HEAD $ENV{GIT_HEAD})
+ endif()
+ if (DEFINED ENV{GIT_DESCRIBE})
+ set(GIT_DESCRIBE $ENV{GIT_DESCRIBE})
+ endif()
+endif()
+
+# Sanitize things if we're not in a Git repo
+if (NOT GIT_HEAD OR NOT GIT_DESCRIBE)
+ set(GIT_HEAD "")
+ set(GIT_DESCRIBE "")
+ set(GIT_COMMIT_DATE 0)
+endif()
+
+# Ensure we have a sensible value for GIT_COMMIT_DATE
+if (NOT GIT_COMMIT_DATE)
+ set(GIT_COMMIT_DATE 0)
+endif()
+
+# Generate version header
+configure_file(version.h.in ${CMAKE_BINARY_DIR}/version.h @ONLY)
+
+# Output version, with commit hash if available
+if (GIT_HEAD)
+ string(SUBSTRING "${GIT_HEAD}" 0 7 extra_version)
+ set(extra_version " (git-${extra_version})")
+endif()
+message(STATUS "Building Quassel ${QUASSEL_VERSION_STRING}${extra_version}")