File tree 11 files changed +71
-0
lines changed 11 files changed +71
-0
lines changed Original file line number Diff line number Diff line change @@ -38,6 +38,48 @@ if(${enable_cbmc_tests})
38
38
enable_testing ()
39
39
endif ()
40
40
41
+ find_package (Git)
42
+
43
+ macro (git_revision target files_var)
44
+ if (GIT_FOUND)
45
+ add_custom_command (
46
+ OUTPUT .release_info
47
+ COMMAND ${CMAKE_COMMAND} -E echo_append "#define __CBMC_VERSION " > .release_info
48
+ COMMAND "${GIT_EXECUTABLE} " "describe" "--tags" "--always" "--long" >> .release_info
49
+ COMMAND ${CMAKE_COMMAND} -E echo "#define __CBMC_VERSION_str(v) \" ${CBMC_RELEASE} (\" # v \" )\" " >> .release_info
50
+ COMMAND ${CMAKE_COMMAND} -E echo "#define __CBMC_VERSION_xstr(v) __CBMC_VERSION_str(v)" >> .release_info
51
+ COMMAND ${CMAKE_COMMAND} -E echo "#define CBMC_VERSION __CBMC_VERSION_xstr(__CBMC_VERSION)" >> .release_info
52
+ VERBATIM
53
+ )
54
+ add_custom_command (
55
+ TARGET ${target}
56
+ POST_BUILD
57
+ COMMAND ${CMAKE_COMMAND} -E remove -f .release_info
58
+ )
59
+ else ()
60
+ add_custom_command (
61
+ OUTPUT .release_info
62
+ COMMAND ${CMAKE_COMMAND} -E echo "#define CBMC_VERSION \" ${CBMC_RELEASE} (n/a)\" " >> .release_info
63
+ VERBATIM
64
+ )
65
+ endif ()
66
+
67
+ if ("${CMAKE_CXX_COMPILER_ID} " STREQUAL "Clang" OR
68
+ "${CMAKE_CXX_COMPILER_ID} " STREQUAL "GNU"
69
+ )
70
+ set_source_files_properties (
71
+ ${${files_var} }
72
+ PROPERTIES
73
+ OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR} /.release_info
74
+ COMPILE_FLAGS "-include .release_info" )
75
+ elseif ("${CMAKE_CXX_COMPILER_ID} " STREQUAL "MSVC" )
76
+ set_source_files_properties (
77
+ ${${files_var} }
78
+ PROPERTIES
79
+ COMPILE_FLAGS "/DCBMC_VERSION=\" ${CBMC_RELEASE} (n/a)\" " )
80
+ endif ()
81
+ endmacro ()
82
+
41
83
add_subdirectory (src)
42
84
add_subdirectory (regression)
43
85
add_subdirectory (unit)
Original file line number Diff line number Diff line change @@ -24,3 +24,6 @@ target_link_libraries(janalyzer-lib
24
24
# Executable
25
25
add_executable (janalyzer janalyzer_main.cpp)
26
26
target_link_libraries (janalyzer janalyzer-lib)
27
+
28
+ set (cbmc_version_files janalyzer_parse_options.cpp)
29
+ git_revision(janalyzer-lib cbmc_version_files)
Original file line number Diff line number Diff line change @@ -29,3 +29,6 @@ target_link_libraries(jbmc-lib
29
29
# Executable
30
30
add_executable (jbmc jbmc_main.cpp)
31
31
target_link_libraries (jbmc jbmc-lib)
32
+
33
+ set (cbmc_version_files jbmc_parse_options.cpp)
34
+ git_revision(jbmc-lib cbmc_version_files)
Original file line number Diff line number Diff line change @@ -26,3 +26,6 @@ target_link_libraries(jdiff-lib
26
26
# Executable
27
27
add_executable (jdiff jdiff_main.cpp)
28
28
target_link_libraries (jdiff jdiff-lib)
29
+
30
+ set (cbmc_version_files jdiff_parse_options.cpp)
31
+ git_revision(jdiff-lib cbmc_version_files)
Original file line number Diff line number Diff line change @@ -31,3 +31,6 @@ add_if_library(cbmc-lib jsil)
31
31
# Executable
32
32
add_executable (cbmc cbmc_main.cpp)
33
33
target_link_libraries (cbmc cbmc-lib)
34
+
35
+ set (cbmc_version_files cbmc_parse_options.cpp cbmc_solvers.cpp)
36
+ git_revision(cbmc-lib cbmc_version_files)
Original file line number Diff line number Diff line change @@ -30,3 +30,5 @@ add_if_library(clobber-lib bv_refinement)
30
30
add_executable (clobber clobber_main.cpp)
31
31
target_link_libraries (clobber clobber-lib)
32
32
33
+ set (cbmc_version_files clobber_parse_options.cpp)
34
+ git_revision(clobber-lib cbmc_version_files)
Original file line number Diff line number Diff line change @@ -26,3 +26,6 @@ add_if_library(goto-analyzer-lib jsil)
26
26
# Executable
27
27
add_executable (goto-analyzer goto_analyzer_main.cpp)
28
28
target_link_libraries (goto-analyzer goto-analyzer-lib)
29
+
30
+ set (cbmc_version_files goto_analyzer_parse_options.cpp)
31
+ git_revision(goto-analyzer-lib cbmc_version_files)
Original file line number Diff line number Diff line change 34
34
COMMAND "${CMAKE_COMMAND} " -E create_symlink
35
35
goto-cc $<TARGET_FILE_DIR:goto-cc>/goto-gcc)
36
36
endif ()
37
+
38
+ set (cbmc_version_files as_mode.cpp compile.cpp gcc_mode.cpp goto_cc_mode.cpp)
39
+ git_revision(goto-cc-lib cbmc_version_files)
Original file line number Diff line number Diff line change @@ -28,3 +28,6 @@ add_if_library(goto-diff-lib jsil)
28
28
# Executable
29
29
add_executable (goto-diff goto_diff_main.cpp)
30
30
target_link_libraries (goto-diff goto-diff-lib)
31
+
32
+ set (cbmc_version_files goto_diff_parse_options.cpp)
33
+ git_revision(goto-diff-lib cbmc_version_files)
Original file line number Diff line number Diff line change @@ -32,3 +32,6 @@ add_if_library(goto-instrument-lib glpk)
32
32
# Executable
33
33
add_executable (goto-instrument goto_instrument_main.cpp)
34
34
target_link_libraries (goto-instrument goto-instrument-lib)
35
+
36
+ set (cbmc_version_files "goto_instrument_parse_options.cpp" )
37
+ git_revision(goto-instrument-lib cbmc_version_files)
Original file line number Diff line number Diff line change @@ -11,3 +11,6 @@ add_library(mmcc
11
11
generic_includes(mmcc)
12
12
13
13
target_link_libraries (mmcc util)
14
+
15
+ set (cbmc_version_files mmcc_parse_options.cpp)
16
+ git_revision(mmcc cbmc_version_files)
You can’t perform that action at this time.
0 commit comments