@@ -2,17 +2,41 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
2
2
PROJECT (proxyme )
3
3
4
4
# get the git tag and hash
5
- exec_program (
6
- "git"
7
- ${CMAKE_CURRENT_SOURCE_DIR}
8
- ARGS "name-rev --tags --name-only $(git rev-parse HEAD)"
9
- OUTPUT_VARIABLE proxyme_GITTAG )
10
- exec_program (
11
- "git"
12
- ${CMAKE_CURRENT_SOURCE_DIR}
13
- ARGS "rev-parse --short HEAD"
14
- OUTPUT_VARIABLE proxyme_GITHASH )
15
- set (proxyme_VERSION "${proxyme_GITTAG} (${proxyme_GITHASH} )" )
5
+ find_program (GIT "git" )
6
+ if (NOT "${GIT} " STREQUAL "GIT-NOTFOUND" )
7
+ exec_program (
8
+ ${GIT}
9
+ ${CMAKE_CURRENT_SOURCE_DIR}
10
+ ARGS "rev-parse --is-inside-work-tree"
11
+ OUTPUT_VARIABLE GITWORKTREE )
12
+ if ( "${GITWORKTREE} " STREQUAL "true" )
13
+ exec_program (
14
+ ${GIT}
15
+ ${CMAKE_CURRENT_SOURCE_DIR}
16
+ ARGS "name-rev --tags --name-only $(git rev-parse HEAD)"
17
+ OUTPUT_VARIABLE GITTAG )
18
+ exec_program (
19
+ ${GIT}
20
+ ${CMAKE_CURRENT_SOURCE_DIR}
21
+ ARGS "rev-parse --short HEAD"
22
+ OUTPUT_VARIABLE GITHASH )
23
+ exec_program (
24
+ ${GIT}
25
+ ${CMAKE_CURRENT_SOURCE_DIR}
26
+ ARGS "diff-index --name-only HEAD"
27
+ OUTPUT_VARIABLE GITDIRTY
28
+ OUTPUT_STRIP_TRAILING_WHITESPACE )
29
+ if (GITDIRTY )
30
+ set (proxyme_VERSION "${GITTAG} (${GITHASH} -dirty)" )
31
+ else ()
32
+ set (proxyme_VERSION "${GITTAG} (${GITHASH} )" )
33
+ endif ()
34
+ else ()
35
+ set (proxyme_VERSION "undefined (no git tree)" )
36
+ endif ()
37
+ else ()
38
+ set (proxyme_VERSION "undefined (git not found)" )
39
+ endif ()
16
40
17
41
# configure a header file to pass some of the CMake settings
18
42
# to the source code
0 commit comments