@@ -39,52 +39,47 @@ if(${enable_cbmc_tests})
39
39
enable_testing ()
40
40
endif ()
41
41
42
- file (STRINGS src/config.inc config_inc_v REGEX "CBMC_VERSION *= *[0-9\. ]+" )
43
- string (REGEX REPLACE "^CBMC_VERSION *= *" "" CBMC_RELEASE ${config_inc_v} )
44
- message (STATUS "CBMC release ${CBMC_RELEASE} " )
45
-
42
+ # based on https://cmake.org/pipermail/cmake/2010-July/038015.html
46
43
find_package (Git)
44
+ if (GIT_FOUND)
45
+ file (WRITE ${CMAKE_BINARY_DIR} /version .cmake
46
+ "
47
+ file(STRINGS \$ {CBMC_SOURCE_DIR}/config.inc
48
+ config_inc_v REGEX \" CBMC_VERSION *= *[0-9\. ]+\" )
49
+ string(REGEX REPLACE \" ^CBMC_VERSION *= *\" \"\" CBMC_RELEASE \$ {config_inc_v})
50
+ execute_process(
51
+ COMMAND \" ${GIT_EXECUTABLE} \" \" describe\" \" --tags\" \" --always\" \" --dirty\"
52
+ OUTPUT_VARIABLE GIT_INFO
53
+ OUTPUT_STRIP_TRAILING_WHITESPACE
54
+ )
55
+ configure_file(\$ {CUR}/version.h.in version.h)
56
+ "
57
+ )
58
+ else ()
59
+ file (WRITE ${CMAKE_BINARY_DIR} /version .cmake
60
+ "
61
+ file(STRINGS \$ {CBMC_SOURCE_DIR}/config.inc
62
+ config_inc_v REGEX \" CBMC_VERSION *= *[0-9\. ]+\" )
63
+ string(REGEX REPLACE \" ^CBMC_VERSION *= *\" \"\" CBMC_RELEASE \$ {config_inc_v})
64
+ set(GIT_INFO \" n/a\" )
65
+ configure_file(\$ {CUR}/version.h.in version.h)
66
+ "
67
+ )
68
+ endif ()
47
69
48
- macro (git_revision target files_var)
49
- if (GIT_FOUND)
50
- add_custom_command (
51
- OUTPUT .release_info
52
- COMMAND ${CMAKE_COMMAND} -E echo_append "#define __CBMC_VERSION " > .release_info
53
- COMMAND "${GIT_EXECUTABLE} " "describe" "--tags" "--always" "--long" >> .release_info
54
- COMMAND ${CMAKE_COMMAND} -E echo "#define __CBMC_VERSION_str(v) \" ${CBMC_RELEASE} (\" # v \" )\" " >> .release_info
55
- COMMAND ${CMAKE_COMMAND} -E echo "#define __CBMC_VERSION_xstr(v) __CBMC_VERSION_str(v)" >> .release_info
56
- COMMAND ${CMAKE_COMMAND} -E echo "#define CBMC_VERSION __CBMC_VERSION_xstr(__CBMC_VERSION)" >> .release_info
57
- VERBATIM
58
- )
59
- add_custom_command (
60
- TARGET ${target}
61
- POST_BUILD
62
- COMMAND ${CMAKE_COMMAND} -E remove -f .release_info
63
- )
64
- else ()
65
- add_custom_command (
66
- OUTPUT .release_info
67
- COMMAND ${CMAKE_COMMAND} -E echo "#define CBMC_VERSION \" ${CBMC_RELEASE} (n/a)\" " >> .release_info
68
- VERBATIM
69
- )
70
- endif ()
71
-
72
- if ("${CMAKE_CXX_COMPILER_ID} " STREQUAL "Clang" OR
73
- "${CMAKE_CXX_COMPILER_ID} " STREQUAL "AppleClang" OR
74
- "${CMAKE_CXX_COMPILER_ID} " STREQUAL "GNU"
70
+ macro (git_revision target )
71
+ file (WRITE ${CMAKE_CURRENT_BINARY_DIR} /version .h.in
72
+ "\# define CBMC_VERSION \" @CBMC_RELEASE@ (@GIT_INFO@)\"\n " )
73
+ add_custom_target (
74
+ ${target} -version .h
75
+ COMMAND ${CMAKE_COMMAND}
76
+ -D CBMC_SOURCE_DIR=${CBMC_SOURCE_DIR}
77
+ -D CUR=${CMAKE_CURRENT_BINARY_DIR}
78
+ -P ${CMAKE_BINARY_DIR} /version .cmake
75
79
)
76
- set_source_files_properties (
77
- ${${files_var} }
78
- PROPERTIES
79
- OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR} /.release_info
80
- COMPILE_FLAGS "-include .release_info" )
81
- elseif ("${CMAKE_CXX_COMPILER_ID} " STREQUAL "MSVC" )
82
- set_source_files_properties (
83
- ${${files_var} }
84
- PROPERTIES
85
- COMPILE_FLAGS "/DCBMC_VERSION=\" ${CBMC_RELEASE} (n/a)\" " )
86
- endif ()
80
+ add_dependencies (${target} ${target} -version .h)
87
81
endmacro ()
82
+ include_directories (${CMAKE_CURRENT_BINARY_DIR} )
88
83
89
84
add_subdirectory (src)
90
85
add_subdirectory (regression)
0 commit comments