c29eaa39392c7bd3ebf1aeeda19a7b234f08b351
[cvc5.git] / src / base / CMakeLists.txt
1 #-----------------------------------------------------------------------------#
2 # Extract info from Git for git_versioninfo.cpp
3
4 find_package(Git)
5
6 set(GIT_BUILD "false")
7 set(GIT_IS_DIRTY "false")
8 set(GIT_SHA1 "")
9 set(GIT_BRANCH "")
10
11 if(GIT_FOUND)
12 # Get current git branch, result is != 0 if this is not a git repository
13 execute_process(
14 COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
15 RESULT_VARIABLE GIT_RESULT
16 OUTPUT_VARIABLE GIT_BRANCH
17 OUTPUT_STRIP_TRAILING_WHITESPACE
18 )
19 if("${GIT_RESULT}" STREQUAL "0")
20 set(GIT_BUILD "true")
21 # Extract sha1 of HEAD
22 execute_process(
23 COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
24 OUTPUT_VARIABLE GIT_SHA1
25 OUTPUT_STRIP_TRAILING_WHITESPACE
26 )
27 # Result is != 0 if worktree is dirty
28 execute_process(
29 COMMAND git diff --quiet
30 RESULT_VARIABLE GIT_RESULT
31 )
32 if(NOT "${GIT_RESULT}" STREQUAL "0")
33 set(GIT_IS_DIRTY "true")
34 endif()
35 endif()
36 endif()
37
38 #-----------------------------------------------------------------------------#
39 # Generate git_versioninfo.cpp
40
41 configure_file(git_versioninfo.cpp.in git_versioninfo.cpp)
42
43 libcvc4_add_sources(
44 configuration.cpp
45 configuration.h
46 configuration_private.h
47 cvc4_assert.cpp
48 cvc4_assert.h
49 cvc4_check.cpp
50 cvc4_check.h
51 exception.cpp
52 exception.h
53 listener.cpp
54 listener.h
55 modal_exception.h
56 output.cpp
57 output.h
58 )
59
60 libcvc4_add_sources(GENERATED git_versioninfo.cpp)
61
62 #-----------------------------------------------------------------------------#
63 # Generate code for debug/trace tags
64
65 set(gentmptags_script ${CMAKE_CURRENT_LIST_DIR}/gentmptags.sh)
66 set(gentags_script ${CMAKE_CURRENT_LIST_DIR}/gentags.sh)
67 set(genheader_script ${CMAKE_CURRENT_LIST_DIR}/genheader.sh)
68
69 file(GLOB_RECURSE source_files
70 ${PROJECT_SOURCE_DIR}/src/*.cpp
71 ${PROJECT_SOURCE_DIR}/src/*.cc
72 ${PROJECT_SOURCE_DIR}/src/*.h
73 ${PROJECT_SOURCE_DIR}/src/*.g)
74 string(REPLACE ";" " " source_files_list "${source_files}")
75
76 add_custom_command(
77 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/Debug_tags.tmp
78 COMMAND
79 ${gentmptags_script} ${CMAKE_CURRENT_LIST_DIR} Debug ${source_files_list}
80 DEPENDS mktags
81 )
82
83 add_custom_command(
84 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/Trace_tags.tmp
85 COMMAND
86 ${gentmptags_script} ${CMAKE_CURRENT_LIST_DIR} Trace ${source_files_list}
87 DEPENDS mktags
88 )
89
90 add_custom_command(
91 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/Debug_tags
92 COMMAND ${gentags_script} Debug
93 DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Debug_tags.tmp
94 )
95
96 add_custom_command(
97 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/Trace_tags
98 COMMAND ${gentags_script} Trace
99 DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Trace_tags.tmp
100 )
101
102 add_custom_command(
103 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/Debug_tags.h
104 COMMAND ${genheader_script} ${CMAKE_CURRENT_LIST_DIR} Debug
105 DEPENDS mktagheaders ${CMAKE_CURRENT_BINARY_DIR}/Debug_tags
106 )
107
108 add_custom_command(
109 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/Trace_tags.h
110 COMMAND ${genheader_script} ${CMAKE_CURRENT_LIST_DIR} Trace
111 DEPENDS mktagheaders ${CMAKE_CURRENT_BINARY_DIR}/Trace_tags
112 )
113
114 add_custom_target(gen-tags
115 DEPENDS
116 ${CMAKE_CURRENT_BINARY_DIR}/Debug_tags.h
117 ${CMAKE_CURRENT_BINARY_DIR}/Trace_tags.h
118 )