Skip to content

Commit c46fa47

Browse files
committed
CBMC_VERSION: Use generated include files instead of command-line defines
1 parent 0667125 commit c46fa47

28 files changed

+53
-73
lines changed

CMakeLists.txt

Lines changed: 13 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -44,47 +44,27 @@ string(REGEX REPLACE "^CBMC_VERSION *= *" "" CBMC_RELEASE ${config_inc_v})
4444
message(STATUS "CBMC release ${CBMC_RELEASE}")
4545

4646
find_package(Git)
47-
48-
macro(git_revision target files_var)
47+
macro(git_revision target)
4948
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
49+
add_custom_target(
50+
${target}-version.h
51+
COMMAND ${CMAKE_COMMAND} -E echo_append "#define __CBMC_VERSION " > version.h
52+
COMMAND "${GIT_EXECUTABLE}" "describe" "--tags" "--always" "--long" >> version.h
53+
COMMAND ${CMAKE_COMMAND} -E echo "#define __CBMC_VERSION_str(v) \"${CBMC_RELEASE} (\" # v \")\"" >> version.h
54+
COMMAND ${CMAKE_COMMAND} -E echo "#define __CBMC_VERSION_xstr(v) __CBMC_VERSION_str(v)" >> version.h
55+
COMMAND ${CMAKE_COMMAND} -E echo "#define CBMC_VERSION __CBMC_VERSION_xstr(__CBMC_VERSION)" >> version.h
5756
VERBATIM
5857
)
59-
add_custom_command(
60-
TARGET ${target}
61-
POST_BUILD
62-
COMMAND ${CMAKE_COMMAND} -E remove -f .release_info
63-
)
6458
else()
65-
add_custom_command(
66-
OUTPUT .release_info
67-
COMMAND ${CMAKE_COMMAND} -E echo "#define CBMC_VERSION \"${CBMC_RELEASE} (n/a)\"" >> .release_info
59+
add_custom_target(
60+
${target}-version.h
61+
COMMAND ${CMAKE_COMMAND} -E echo "#define CBMC_VERSION \"${CBMC_RELEASE} (n/a)\"" >> version.h
6862
VERBATIM
6963
)
7064
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"
75-
)
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()
65+
add_dependencies(${target} ${target}-version.h)
8766
endmacro()
67+
include_directories(${CMAKE_BINARY_DIR})
8868

8969
add_subdirectory(src)
9070
add_subdirectory(regression)

jbmc/src/janalyzer/CMakeLists.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,4 @@ target_link_libraries(janalyzer-lib
2525
add_executable(janalyzer janalyzer_main.cpp)
2626
target_link_libraries(janalyzer janalyzer-lib)
2727

28-
set(cbmc_version_files janalyzer_parse_options.cpp)
29-
git_revision(janalyzer-lib cbmc_version_files)
28+
git_revision(janalyzer-lib)

jbmc/src/janalyzer/janalyzer_parse_options.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ Author: Daniel Kroening, [email protected]
5656
#include <goto-analyzer/taint_analysis.h>
5757
#include <goto-analyzer/unreachable_instructions.h>
5858

59+
#include "version.h"
60+
5961
janalyzer_parse_optionst::janalyzer_parse_optionst(int argc, const char **argv)
6062
: parse_options_baset(JANALYZER_OPTIONS, argc, argv),
6163
messaget(ui_message_handler),

jbmc/src/jbmc/CMakeLists.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,4 @@ target_link_libraries(jbmc-lib
3030
add_executable(jbmc jbmc_main.cpp)
3131
target_link_libraries(jbmc jbmc-lib)
3232

33-
set(cbmc_version_files jbmc_parse_options.cpp)
34-
git_revision(jbmc-lib cbmc_version_files)
33+
git_revision(jbmc-lib)

jbmc/src/jbmc/jbmc_parse_options.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ Author: Daniel Kroening, [email protected]
6060
#include <java_bytecode/replace_java_nondet.h>
6161
#include <java_bytecode/simple_method_stubbing.h>
6262

63+
#include "version.h"
64+
6365
jbmc_parse_optionst::jbmc_parse_optionst(int argc, const char **argv):
6466
parse_options_baset(JBMC_OPTIONS, argc, argv),
6567
messaget(ui_message_handler),

jbmc/src/jdiff/CMakeLists.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,4 @@ target_link_libraries(jdiff-lib
2727
add_executable(jdiff jdiff_main.cpp)
2828
target_link_libraries(jdiff jdiff-lib)
2929

30-
set(cbmc_version_files jdiff_parse_options.cpp)
31-
git_revision(jdiff-lib cbmc_version_files)
30+
git_revision(jdiff-lib)

jbmc/src/jdiff/jdiff_parse_options.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ Author: Peter Schrammel
6060
#include <goto-diff/goto_diff.h>
6161
#include <goto-diff/unified_diff.h>
6262

63+
#include "version.h"
64+
6365
jdiff_parse_optionst::jdiff_parse_optionst(int argc, const char **argv)
6466
: parse_options_baset(JDIFF_OPTIONS, argc, argv),
6567
jdiff_languagest(cmdline, ui_message_handler),

src/cbmc/CMakeLists.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,4 @@ add_if_library(cbmc-lib jsil)
3232
add_executable(cbmc cbmc_main.cpp)
3333
target_link_libraries(cbmc cbmc-lib)
3434

35-
set(cbmc_version_files cbmc_parse_options.cpp cbmc_solvers.cpp)
36-
git_revision(cbmc-lib cbmc_version_files)
35+
git_revision(cbmc-lib)

src/cbmc/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,15 @@ INCLUDES= -I ..
5656

5757
LIBS =
5858

59-
CBMC_VERSION_FILES = cbmc_solvers$(OBJEXT)
60-
6159
include ../config.inc
6260
include ../common
6361

6462
CLEANFILES = cbmc$(EXEEXT)
6563

6664
all: cbmc$(EXEEXT)
6765

66+
cbmc_solvers$(OBJEXT): $(GIT_INFO_FILE)
67+
6868
ifneq ($(wildcard ../bv_refinement/Makefile),)
6969
OBJ += ../bv_refinement/bv_refinement$(LIBEXT)
7070
CP_CXXFLAGS += -DHAVE_BV_REFINEMENT

src/cbmc/cbmc_parse_options.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ Author: Daniel Kroening, [email protected]
6464

6565
#include "xml_interface.h"
6666

67+
#include "version.h"
68+
6769
cbmc_parse_optionst::cbmc_parse_optionst(int argc, const char **argv):
6870
parse_options_baset(CBMC_OPTIONS, argc, argv),
6971
xml_interfacet(cmdline),

0 commit comments

Comments
 (0)