Skip to content

Commit 7ca835b

Browse files
committed
Added CBMC_VERSION defines to CMake configuration
1 parent 6f98511 commit 7ca835b

File tree

11 files changed

+71
-0
lines changed

11 files changed

+71
-0
lines changed

CMakeLists.txt

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,48 @@ if(${enable_cbmc_tests})
3838
enable_testing()
3939
endif()
4040

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+
4183
add_subdirectory(src)
4284
add_subdirectory(regression)
4385
add_subdirectory(unit)

jbmc/src/janalyzer/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,6 @@ target_link_libraries(janalyzer-lib
2424
# Executable
2525
add_executable(janalyzer janalyzer_main.cpp)
2626
target_link_libraries(janalyzer janalyzer-lib)
27+
28+
set(cbmc_version_files janalyzer_parse_options.cpp)
29+
git_revision(janalyzer-lib cbmc_version_files)

jbmc/src/jbmc/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,6 @@ target_link_libraries(jbmc-lib
2929
# Executable
3030
add_executable(jbmc jbmc_main.cpp)
3131
target_link_libraries(jbmc jbmc-lib)
32+
33+
set(cbmc_version_files jbmc_parse_options.cpp)
34+
git_revision(jbmc-lib cbmc_version_files)

jbmc/src/jdiff/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,6 @@ target_link_libraries(jdiff-lib
2626
# Executable
2727
add_executable(jdiff jdiff_main.cpp)
2828
target_link_libraries(jdiff jdiff-lib)
29+
30+
set(cbmc_version_files jdiff_parse_options.cpp)
31+
git_revision(jdiff-lib cbmc_version_files)

src/cbmc/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,6 @@ add_if_library(cbmc-lib jsil)
3131
# Executable
3232
add_executable(cbmc cbmc_main.cpp)
3333
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)

src/clobber/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,5 @@ add_if_library(clobber-lib bv_refinement)
3030
add_executable(clobber clobber_main.cpp)
3131
target_link_libraries(clobber clobber-lib)
3232

33+
set(cbmc_version_files clobber_parse_options.cpp)
34+
git_revision(clobber-lib cbmc_version_files)

src/goto-analyzer/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,6 @@ add_if_library(goto-analyzer-lib jsil)
2626
# Executable
2727
add_executable(goto-analyzer goto_analyzer_main.cpp)
2828
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)

src/goto-cc/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,6 @@ else()
3434
COMMAND "${CMAKE_COMMAND}" -E create_symlink
3535
goto-cc $<TARGET_FILE_DIR:goto-cc>/goto-gcc)
3636
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)

src/goto-diff/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,6 @@ add_if_library(goto-diff-lib jsil)
2828
# Executable
2929
add_executable(goto-diff goto_diff_main.cpp)
3030
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)

src/goto-instrument/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,6 @@ add_if_library(goto-instrument-lib glpk)
3232
# Executable
3333
add_executable(goto-instrument goto_instrument_main.cpp)
3434
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)

src/memory-models/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,6 @@ add_library(mmcc
1111
generic_includes(mmcc)
1212

1313
target_link_libraries(mmcc util)
14+
15+
set(cbmc_version_files mmcc_parse_options.cpp)
16+
git_revision(mmcc cbmc_version_files)

0 commit comments

Comments
 (0)