@@ -14,39 +14,49 @@ include(CMakeDependentOption)
14
14
15
15
option (SOUFFLE_GIT "Enable/Disable git completion" ON )
16
16
17
- if (SOUFFLE_GIT)
17
+ if (SOUFFLE_GIT)
18
18
find_package (Git REQUIRED)
19
19
20
- # PACKAGE_VERSION is the full tag with git hash
20
+ # GIT_TAGNAME identifies the current commit, it is closest tag in the
21
+ # branch, possibly followed by number of additionnal commits and
22
+ # abbreviated hash
21
23
execute_process (COMMAND ${GIT_EXECUTABLE} describe --tags --always
22
24
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR} "
23
25
RESULT_VARIABLE GIT_RESULT
24
- OUTPUT_VARIABLE GIT_PACKAGE_VERSION)
25
- # FIXME: Use in cmake 3.19 or later
26
- # COMMAND_ERROR_IS_FATAL ANY)
26
+ OUTPUT_VARIABLE GIT_TAGNAME)
27
+
28
+ # GIT_CLOSEST_TAG is the closest tag in the branch
29
+ execute_process (COMMAND ${GIT_EXECUTABLE} describe --tags --always --abbrev=0
30
+ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR} "
31
+ RESULT_VARIABLE GIT_RESULT
32
+ OUTPUT_VARIABLE GIT_CLOSEST_TAG)
27
33
28
34
# Figure out the version number, depends on whether building from the git repo
29
35
if (NOT GIT_RESULT EQUAL 0)
30
36
# Not building from a git clone
31
37
message (WARNING "Unable to find git repository: version number will be incomplete" )
32
- set (PACKAGE_VERSION "UNKNOWN" )
33
- set (SOUFFLE_VERSION "" )
38
+ set (GIT_PACKAGE_VERSION "UNKNOWN" )
39
+ set (PACKAGE_VERSION "" )
34
40
else ()
35
- string (REGEX REPLACE "\n $" "" PACKAGE_VERSION "${GIT_PACKAGE_VERSION } " )
36
- message (STATUS "Building souffle version ${PACKAGE_VERSION } " )
41
+ string (REGEX REPLACE "\n $" "" GIT_PACKAGE_VERSION "${GIT_TAGNAME } " )
42
+ message (STATUS "Building souffle version ${GIT_PACKAGE_VERSION } " )
37
43
38
- # SOUFFLE_VERSION only includes the major/minor triplet
39
- string (REGEX REPLACE "-.*$" "" SOUFFLE_VERSION "${PACKAGE_VERSION} " )
44
+ string (REGEX REPLACE "\n $" "" GIT_CLOSEST_TAG "${GIT_CLOSEST_TAG} " )
45
+ # remove leading 'v' in tag if any
46
+ string (REGEX REPLACE "^v" "" PACKAGE_VERSION "${GIT_CLOSEST_TAG} " )
47
+ # remove trailing '-something' in tag
48
+ string (REGEX REPLACE "-.*$" "" PACKAGE_VERSION "${PACKAGE_VERSION} " )
40
49
41
50
# If building from a shallow clone where tag is not available.
42
- if (NOT ${SOUFFLE_VERSION } MATCHES "^[0-9.]+$" )
51
+ if (NOT ${PACKAGE_VERSION } MATCHES "^[0-9.]+$" )
43
52
message (WARNING "Cannot find a valid tag: cmake project version will be incomplete" )
44
- set (SOUFFLE_VERSION "" )
45
53
endif ()
54
+
55
+ message (STATUS "Package version ${PACKAGE_VERSION} " )
46
56
endif ()
47
57
endif ()
48
58
49
- project (souffle VERSION "${SOUFFLE_VERSION } "
59
+ project (souffle VERSION "${PACKAGE_VERSION } "
50
60
DESCRIPTION "A datalog compiler"
51
61
LANGUAGES CXX)
52
62
include (CTest)
0 commit comments