Skip to content

Commit 314da99

Browse files
chore: check if tree is dirty and enable build on non git tree
1 parent b0edc0f commit 314da99

File tree

1 file changed

+35
-11
lines changed

1 file changed

+35
-11
lines changed

CMakeLists.txt

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,41 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
22
PROJECT(proxyme)
33

44
# 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()
1640

1741
# configure a header file to pass some of the CMake settings
1842
# to the source code

0 commit comments

Comments
 (0)