Added CBMC_VERSION defines to CMake configuration

This commit is contained in:
Michael Tautschnig 2018-06-20 12:59:15 +01:00
parent 6f98511170
commit 7ca835bac3
11 changed files with 71 additions and 0 deletions

View File

@ -38,6 +38,48 @@ if(${enable_cbmc_tests})
enable_testing()
endif()
find_package(Git)
macro(git_revision target files_var)
if(GIT_FOUND)
add_custom_command(
OUTPUT .release_info
COMMAND ${CMAKE_COMMAND} -E echo_append "#define __CBMC_VERSION " > .release_info
COMMAND "${GIT_EXECUTABLE}" "describe" "--tags" "--always" "--long" >> .release_info
COMMAND ${CMAKE_COMMAND} -E echo "#define __CBMC_VERSION_str(v) \"${CBMC_RELEASE} (\" # v \")\"" >> .release_info
COMMAND ${CMAKE_COMMAND} -E echo "#define __CBMC_VERSION_xstr(v) __CBMC_VERSION_str(v)" >> .release_info
COMMAND ${CMAKE_COMMAND} -E echo "#define CBMC_VERSION __CBMC_VERSION_xstr(__CBMC_VERSION)" >> .release_info
VERBATIM
)
add_custom_command(
TARGET ${target}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E remove -f .release_info
)
else()
add_custom_command(
OUTPUT .release_info
COMMAND ${CMAKE_COMMAND} -E echo "#define CBMC_VERSION \"${CBMC_RELEASE} (n/a)\"" >> .release_info
VERBATIM
)
endif()
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR
"${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU"
)
set_source_files_properties(
${${files_var}}
PROPERTIES
OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/.release_info
COMPILE_FLAGS "-include .release_info")
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
set_source_files_properties(
${${files_var}}
PROPERTIES
COMPILE_FLAGS "/DCBMC_VERSION=\"${CBMC_RELEASE} (n/a)\"")
endif()
endmacro()
add_subdirectory(src)
add_subdirectory(regression)
add_subdirectory(unit)

View File

@ -24,3 +24,6 @@ target_link_libraries(janalyzer-lib
# Executable
add_executable(janalyzer janalyzer_main.cpp)
target_link_libraries(janalyzer janalyzer-lib)
set(cbmc_version_files janalyzer_parse_options.cpp)
git_revision(janalyzer-lib cbmc_version_files)

View File

@ -29,3 +29,6 @@ target_link_libraries(jbmc-lib
# Executable
add_executable(jbmc jbmc_main.cpp)
target_link_libraries(jbmc jbmc-lib)
set(cbmc_version_files jbmc_parse_options.cpp)
git_revision(jbmc-lib cbmc_version_files)

View File

@ -26,3 +26,6 @@ target_link_libraries(jdiff-lib
# Executable
add_executable(jdiff jdiff_main.cpp)
target_link_libraries(jdiff jdiff-lib)
set(cbmc_version_files jdiff_parse_options.cpp)
git_revision(jdiff-lib cbmc_version_files)

View File

@ -31,3 +31,6 @@ add_if_library(cbmc-lib jsil)
# Executable
add_executable(cbmc cbmc_main.cpp)
target_link_libraries(cbmc cbmc-lib)
set(cbmc_version_files cbmc_parse_options.cpp cbmc_solvers.cpp)
git_revision(cbmc-lib cbmc_version_files)

View File

@ -30,3 +30,5 @@ add_if_library(clobber-lib bv_refinement)
add_executable(clobber clobber_main.cpp)
target_link_libraries(clobber clobber-lib)
set(cbmc_version_files clobber_parse_options.cpp)
git_revision(clobber-lib cbmc_version_files)

View File

@ -26,3 +26,6 @@ add_if_library(goto-analyzer-lib jsil)
# Executable
add_executable(goto-analyzer goto_analyzer_main.cpp)
target_link_libraries(goto-analyzer goto-analyzer-lib)
set(cbmc_version_files goto_analyzer_parse_options.cpp)
git_revision(goto-analyzer-lib cbmc_version_files)

View File

@ -34,3 +34,6 @@ else()
COMMAND "${CMAKE_COMMAND}" -E create_symlink
goto-cc $<TARGET_FILE_DIR:goto-cc>/goto-gcc)
endif()
set(cbmc_version_files as_mode.cpp compile.cpp gcc_mode.cpp goto_cc_mode.cpp)
git_revision(goto-cc-lib cbmc_version_files)

View File

@ -28,3 +28,6 @@ add_if_library(goto-diff-lib jsil)
# Executable
add_executable(goto-diff goto_diff_main.cpp)
target_link_libraries(goto-diff goto-diff-lib)
set(cbmc_version_files goto_diff_parse_options.cpp)
git_revision(goto-diff-lib cbmc_version_files)

View File

@ -32,3 +32,6 @@ add_if_library(goto-instrument-lib glpk)
# Executable
add_executable(goto-instrument goto_instrument_main.cpp)
target_link_libraries(goto-instrument goto-instrument-lib)
set(cbmc_version_files "goto_instrument_parse_options.cpp")
git_revision(goto-instrument-lib cbmc_version_files)

View File

@ -11,3 +11,6 @@ add_library(mmcc
generic_includes(mmcc)
target_link_libraries(mmcc util)
set(cbmc_version_files mmcc_parse_options.cpp)
git_revision(mmcc cbmc_version_files)