cmake: avoid de-duplication of user's CXXFLAGS
[quassel.git] / cmake / QuasselVersion.cmake
1 # Set up version-related information
2 ###############################################################################
3
4 # Quassel version
5 set(QUASSEL_MAJOR  0)
6 set(QUASSEL_MINOR 14)
7 set(QUASSEL_PATCH 50)
8 set(QUASSEL_VERSION_STRING "0.15-pre")
9
10 # Get additional version information from Git
11 include(GetGitRevisionDescription)
12 get_git_head_revision(GIT_REFSPEC GIT_HEAD)
13 git_describe(GIT_DESCRIBE --long)
14
15 # If in a Git repo we can get the commit-date from a git command
16 if (GIT_HEAD)
17     find_program(GIT_COMMAND NAMES git)
18     if (GIT_COMMAND)
19         execute_process(
20             COMMAND ${GIT_COMMAND} -c log.showsignature=false show -s --format=%ct
21             WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
22             OUTPUT_VARIABLE GIT_COMMIT_DATE
23             OUTPUT_STRIP_TRAILING_WHITESPACE
24         )
25     endif()
26 endif()
27
28 # If not in a Git repo try to read GIT_HEAD and GIT_DESCRIBE from environment
29 if (NOT GIT_HEAD OR NOT GIT_DESCRIBE)
30   if (DEFINED ENV{GIT_HEAD})
31       set(GIT_HEAD $ENV{GIT_HEAD})
32   endif()
33   if (DEFINED ENV{GIT_DESCRIBE})
34      set(GIT_DESCRIBE $ENV{GIT_DESCRIBE})
35   endif()
36 endif()
37
38 # Sanitize things if we're not in a Git repo
39 if (NOT GIT_HEAD OR NOT GIT_DESCRIBE)
40     set(GIT_HEAD "")
41     set(GIT_DESCRIBE "")
42     set(GIT_COMMIT_DATE 0)
43 endif()
44
45 # Ensure we have a sensible value for GIT_COMMIT_DATE
46 if (NOT GIT_COMMIT_DATE)
47     set(GIT_COMMIT_DATE 0)
48 endif()
49
50 # Generate version header
51 configure_file(version.h.in ${CMAKE_BINARY_DIR}/version.h @ONLY)
52
53 # Output version, with commit hash if available
54 if (GIT_HEAD)
55     string(SUBSTRING "${GIT_HEAD}" 0 7 extra_version)
56     set(extra_version " (git-${extra_version})")
57 endif()
58 message(STATUS "Building Quassel ${QUASSEL_VERSION_STRING}${extra_version}")