svf-tools 1.0.846 → 1.0.847

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. package/.config.cmake.in +24 -0
  2. package/.config.in +26 -0
  3. package/.gitignore +2 -0
  4. package/CMakeLists.txt +138 -47
  5. package/SVF-doxygen/html/CMakeLists_8txt.html +1 -24
  6. package/SVF-doxygen/html/globals_func_i.html +0 -3
  7. package/SVF-doxygen/html/globals_i.html +2 -5
  8. package/SVF-doxygen/html/search/all_10.js +325 -325
  9. package/SVF-doxygen/html/search/all_11.js +224 -224
  10. package/SVF-doxygen/html/search/all_12.js +552 -552
  11. package/SVF-doxygen/html/search/all_13.js +190 -190
  12. package/SVF-doxygen/html/search/all_14.js +67 -67
  13. package/SVF-doxygen/html/search/all_15.js +168 -168
  14. package/SVF-doxygen/html/search/all_16.js +63 -63
  15. package/SVF-doxygen/html/search/all_17.js +1 -1
  16. package/SVF-doxygen/html/search/all_18.js +1 -1
  17. package/SVF-doxygen/html/search/all_19.js +11 -11
  18. package/SVF-doxygen/html/search/all_1a.js +173 -173
  19. package/SVF-doxygen/html/search/all_9.js +540 -541
  20. package/SVF-doxygen/html/search/all_a.js +46 -46
  21. package/SVF-doxygen/html/search/all_b.js +26 -26
  22. package/SVF-doxygen/html/search/all_c.js +115 -115
  23. package/SVF-doxygen/html/search/all_d.js +197 -197
  24. package/SVF-doxygen/html/search/all_e.js +207 -207
  25. package/SVF-doxygen/html/search/all_f.js +116 -116
  26. package/SVF-doxygen/html/search/classes_0.js +26 -26
  27. package/SVF-doxygen/html/search/classes_1.js +9 -9
  28. package/SVF-doxygen/html/search/classes_10.js +73 -73
  29. package/SVF-doxygen/html/search/classes_11.js +15 -15
  30. package/SVF-doxygen/html/search/classes_12.js +2 -2
  31. package/SVF-doxygen/html/search/classes_13.js +10 -10
  32. package/SVF-doxygen/html/search/classes_14.js +14 -14
  33. package/SVF-doxygen/html/search/classes_15.js +1 -1
  34. package/SVF-doxygen/html/search/classes_2.js +81 -81
  35. package/SVF-doxygen/html/search/classes_3.js +37 -37
  36. package/SVF-doxygen/html/search/classes_4.js +9 -9
  37. package/SVF-doxygen/html/search/classes_5.js +28 -28
  38. package/SVF-doxygen/html/search/classes_6.js +104 -104
  39. package/SVF-doxygen/html/search/classes_7.js +34 -34
  40. package/SVF-doxygen/html/search/classes_8.js +56 -56
  41. package/SVF-doxygen/html/search/classes_9.js +1 -1
  42. package/SVF-doxygen/html/search/classes_a.js +12 -12
  43. package/SVF-doxygen/html/search/classes_b.js +29 -29
  44. package/SVF-doxygen/html/search/classes_c.js +6 -6
  45. package/SVF-doxygen/html/search/classes_d.js +18 -18
  46. package/SVF-doxygen/html/search/classes_e.js +36 -36
  47. package/SVF-doxygen/html/search/classes_f.js +25 -25
  48. package/SVF-doxygen/html/search/defines_0.js +3 -3
  49. package/SVF-doxygen/html/search/defines_1.js +2 -2
  50. package/SVF-doxygen/html/search/defines_2.js +30 -30
  51. package/SVF-doxygen/html/search/defines_3.js +20 -20
  52. package/SVF-doxygen/html/search/defines_4.js +2 -2
  53. package/SVF-doxygen/html/search/defines_5.js +4 -4
  54. package/SVF-doxygen/html/search/defines_6.js +2 -2
  55. package/SVF-doxygen/html/search/defines_7.js +5 -5
  56. package/SVF-doxygen/html/search/defines_8.js +11 -11
  57. package/SVF-doxygen/html/search/defines_9.js +9 -9
  58. package/SVF-doxygen/html/search/defines_a.js +2 -2
  59. package/SVF-doxygen/html/search/defines_b.js +1 -1
  60. package/SVF-doxygen/html/search/defines_c.js +3 -3
  61. package/SVF-doxygen/html/search/defines_d.js +2 -2
  62. package/SVF-doxygen/html/search/defines_e.js +7 -7
  63. package/SVF-doxygen/html/search/defines_f.js +3 -3
  64. package/SVF-doxygen/html/search/enums_0.js +3 -3
  65. package/SVF-doxygen/html/search/enums_1.js +2 -2
  66. package/SVF-doxygen/html/search/enums_10.js +1 -1
  67. package/SVF-doxygen/html/search/enums_11.js +1 -1
  68. package/SVF-doxygen/html/search/enums_2.js +8 -8
  69. package/SVF-doxygen/html/search/enums_3.js +1 -1
  70. package/SVF-doxygen/html/search/enums_4.js +3 -3
  71. package/SVF-doxygen/html/search/enums_5.js +1 -1
  72. package/SVF-doxygen/html/search/enums_6.js +2 -2
  73. package/SVF-doxygen/html/search/enums_7.js +2 -2
  74. package/SVF-doxygen/html/search/enums_8.js +4 -4
  75. package/SVF-doxygen/html/search/enums_9.js +1 -1
  76. package/SVF-doxygen/html/search/enums_a.js +1 -1
  77. package/SVF-doxygen/html/search/enums_b.js +7 -7
  78. package/SVF-doxygen/html/search/enums_c.js +1 -1
  79. package/SVF-doxygen/html/search/enums_d.js +4 -4
  80. package/SVF-doxygen/html/search/enums_e.js +2 -2
  81. package/SVF-doxygen/html/search/enums_f.js +4 -4
  82. package/SVF-doxygen/html/search/enumvalues_0.js +14 -14
  83. package/SVF-doxygen/html/search/enumvalues_1.js +14 -14
  84. package/SVF-doxygen/html/search/enumvalues_10.js +35 -35
  85. package/SVF-doxygen/html/search/enumvalues_11.js +3 -3
  86. package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
  87. package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
  88. package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
  89. package/SVF-doxygen/html/search/enumvalues_15.js +3 -3
  90. package/SVF-doxygen/html/search/enumvalues_2.js +36 -36
  91. package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
  92. package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
  93. package/SVF-doxygen/html/search/enumvalues_5.js +47 -47
  94. package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
  95. package/SVF-doxygen/html/search/enumvalues_7.js +8 -8
  96. package/SVF-doxygen/html/search/enumvalues_8.js +23 -23
  97. package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
  98. package/SVF-doxygen/html/search/enumvalues_a.js +15 -15
  99. package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
  100. package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
  101. package/SVF-doxygen/html/search/enumvalues_d.js +18 -18
  102. package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
  103. package/SVF-doxygen/html/search/enumvalues_f.js +45 -45
  104. package/SVF-doxygen/html/search/files_0.js +13 -13
  105. package/SVF-doxygen/html/search/files_1.js +7 -7
  106. package/SVF-doxygen/html/search/files_10.js +8 -8
  107. package/SVF-doxygen/html/search/files_11.js +8 -8
  108. package/SVF-doxygen/html/search/files_12.js +2 -2
  109. package/SVF-doxygen/html/search/files_2.js +57 -57
  110. package/SVF-doxygen/html/search/files_3.js +14 -14
  111. package/SVF-doxygen/html/search/files_4.js +5 -5
  112. package/SVF-doxygen/html/search/files_5.js +13 -13
  113. package/SVF-doxygen/html/search/files_6.js +9 -9
  114. package/SVF-doxygen/html/search/files_7.js +14 -14
  115. package/SVF-doxygen/html/search/files_8.js +13 -13
  116. package/SVF-doxygen/html/search/files_9.js +18 -18
  117. package/SVF-doxygen/html/search/files_a.js +3 -3
  118. package/SVF-doxygen/html/search/files_b.js +2 -2
  119. package/SVF-doxygen/html/search/files_c.js +20 -20
  120. package/SVF-doxygen/html/search/files_d.js +4 -4
  121. package/SVF-doxygen/html/search/files_e.js +62 -62
  122. package/SVF-doxygen/html/search/files_f.js +8 -8
  123. package/SVF-doxygen/html/search/functions_0.js +13 -13
  124. package/SVF-doxygen/html/search/functions_1.js +362 -362
  125. package/SVF-doxygen/html/search/functions_10.js +140 -140
  126. package/SVF-doxygen/html/search/functions_11.js +139 -139
  127. package/SVF-doxygen/html/search/functions_12.js +288 -288
  128. package/SVF-doxygen/html/search/functions_13.js +59 -59
  129. package/SVF-doxygen/html/search/functions_14.js +39 -39
  130. package/SVF-doxygen/html/search/functions_15.js +71 -71
  131. package/SVF-doxygen/html/search/functions_16.js +32 -32
  132. package/SVF-doxygen/html/search/functions_17.js +3 -3
  133. package/SVF-doxygen/html/search/functions_18.js +173 -173
  134. package/SVF-doxygen/html/search/functions_2.js +89 -89
  135. package/SVF-doxygen/html/search/functions_3.js +261 -261
  136. package/SVF-doxygen/html/search/functions_4.js +78 -78
  137. package/SVF-doxygen/html/search/functions_5.js +53 -53
  138. package/SVF-doxygen/html/search/functions_6.js +60 -60
  139. package/SVF-doxygen/html/search/functions_7.js +855 -855
  140. package/SVF-doxygen/html/search/functions_8.js +148 -148
  141. package/SVF-doxygen/html/search/functions_9.js +420 -421
  142. package/SVF-doxygen/html/search/functions_a.js +30 -30
  143. package/SVF-doxygen/html/search/functions_b.js +2 -2
  144. package/SVF-doxygen/html/search/functions_c.js +25 -25
  145. package/SVF-doxygen/html/search/functions_d.js +79 -79
  146. package/SVF-doxygen/html/search/functions_e.js +35 -35
  147. package/SVF-doxygen/html/search/functions_f.js +56 -56
  148. package/SVF-doxygen/html/search/namespaces_0.js +1 -1
  149. package/SVF-doxygen/html/search/namespaces_1.js +7 -7
  150. package/SVF-doxygen/html/search/related_0.js +2 -2
  151. package/SVF-doxygen/html/search/related_1.js +2 -2
  152. package/SVF-doxygen/html/search/related_2.js +3 -3
  153. package/SVF-doxygen/html/search/related_3.js +2 -2
  154. package/SVF-doxygen/html/search/related_4.js +2 -2
  155. package/SVF-doxygen/html/search/related_5.js +1 -1
  156. package/SVF-doxygen/html/search/related_6.js +2 -2
  157. package/SVF-doxygen/html/search/related_7.js +4 -4
  158. package/SVF-doxygen/html/search/related_8.js +2 -2
  159. package/SVF-doxygen/html/search/related_9.js +4 -4
  160. package/SVF-doxygen/html/search/related_a.js +19 -19
  161. package/SVF-doxygen/html/search/related_b.js +4 -4
  162. package/SVF-doxygen/html/search/related_c.js +2 -2
  163. package/SVF-doxygen/html/search/related_d.js +12 -12
  164. package/SVF-doxygen/html/search/related_e.js +2 -2
  165. package/SVF-doxygen/html/search/related_f.js +2 -2
  166. package/SVF-doxygen/html/search/typedefs_0.js +19 -19
  167. package/SVF-doxygen/html/search/typedefs_1.js +26 -26
  168. package/SVF-doxygen/html/search/typedefs_10.js +62 -62
  169. package/SVF-doxygen/html/search/typedefs_11.js +13 -13
  170. package/SVF-doxygen/html/search/typedefs_12.js +11 -11
  171. package/SVF-doxygen/html/search/typedefs_13.js +33 -33
  172. package/SVF-doxygen/html/search/typedefs_14.js +8 -8
  173. package/SVF-doxygen/html/search/typedefs_2.js +129 -129
  174. package/SVF-doxygen/html/search/typedefs_3.js +39 -39
  175. package/SVF-doxygen/html/search/typedefs_4.js +17 -17
  176. package/SVF-doxygen/html/search/typedefs_5.js +41 -41
  177. package/SVF-doxygen/html/search/typedefs_6.js +56 -56
  178. package/SVF-doxygen/html/search/typedefs_7.js +44 -44
  179. package/SVF-doxygen/html/search/typedefs_8.js +1 -1
  180. package/SVF-doxygen/html/search/typedefs_9.js +6 -6
  181. package/SVF-doxygen/html/search/typedefs_a.js +29 -29
  182. package/SVF-doxygen/html/search/typedefs_b.js +29 -29
  183. package/SVF-doxygen/html/search/typedefs_c.js +41 -41
  184. package/SVF-doxygen/html/search/typedefs_d.js +14 -14
  185. package/SVF-doxygen/html/search/typedefs_e.js +52 -52
  186. package/SVF-doxygen/html/search/typedefs_f.js +14 -14
  187. package/SVF-doxygen/html/search/variables_0.js +151 -151
  188. package/SVF-doxygen/html/search/variables_1.js +75 -75
  189. package/SVF-doxygen/html/search/variables_10.js +98 -98
  190. package/SVF-doxygen/html/search/variables_11.js +45 -45
  191. package/SVF-doxygen/html/search/variables_12.js +90 -90
  192. package/SVF-doxygen/html/search/variables_13.js +74 -74
  193. package/SVF-doxygen/html/search/variables_14.js +14 -14
  194. package/SVF-doxygen/html/search/variables_15.js +49 -49
  195. package/SVF-doxygen/html/search/variables_16.js +9 -9
  196. package/SVF-doxygen/html/search/variables_17.js +1 -1
  197. package/SVF-doxygen/html/search/variables_18.js +2 -2
  198. package/SVF-doxygen/html/search/variables_2.js +38 -38
  199. package/SVF-doxygen/html/search/variables_3.js +142 -142
  200. package/SVF-doxygen/html/search/variables_4.js +50 -50
  201. package/SVF-doxygen/html/search/variables_5.js +37 -37
  202. package/SVF-doxygen/html/search/variables_6.js +66 -66
  203. package/SVF-doxygen/html/search/variables_7.js +34 -34
  204. package/SVF-doxygen/html/search/variables_8.js +7 -7
  205. package/SVF-doxygen/html/search/variables_9.js +78 -78
  206. package/SVF-doxygen/html/search/variables_a.js +4 -4
  207. package/SVF-doxygen/html/search/variables_b.js +10 -10
  208. package/SVF-doxygen/html/search/variables_c.js +45 -45
  209. package/SVF-doxygen/html/search/variables_d.js +55 -55
  210. package/SVF-doxygen/html/search/variables_e.js +123 -123
  211. package/SVF-doxygen/html/search/variables_f.js +30 -30
  212. package/package.json +1 -1
  213. package/svf/CMakeLists.txt +25 -30
  214. package/svf-llvm/CMakeLists.txt +60 -45
  215. package/svf-llvm/tools/CMakeLists.txt +1 -2
@@ -0,0 +1,24 @@
1
+ @PACKAGE_INIT@
2
+
3
+ set_and_check(SVF_INSTALL_ROOT "@PACKAGE_SVF_INSTALL_ROOT@")
4
+ set_and_check(SVF_INSTALL_BIN_DIR "@PACKAGE_SVF_INSTALL_BIN_DIR@")
5
+ set_and_check(SVF_INSTALL_LIB_DIR "@PACKAGE_SVF_INSTALL_LIB_DIR@")
6
+ set_and_check(SVF_INSTALL_INCLUDE_DIR "@PACKAGE_SVF_INSTALL_INCLUDE_DIR@")
7
+
8
+ set_and_check(SVF_INSTALL_EXTAPI_DIR "@PACKAGE_SVF_INSTALL_EXTAPI_DIR@")
9
+ set_and_check(SVF_INSTALL_EXTAPI_FILE "@PACKAGE_SVF_INSTALL_EXTAPI_FILE@")
10
+
11
+ set(SVF_SANITIZE "@SVF_SANITIZE@")
12
+
13
+ set(SVF_COVERAGE "@SVF_COVERAGE@")
14
+ set(SVF_WARN_AS_ERROR "@SVF_WARN_AS_ERROR@")
15
+ set(SVF_EXPORT_DYNAMIC "@SVF_EXPORT_DYNAMIC@")
16
+ set(SVF_ENABLE_ASSERTIONS "@SVF_ENABLE_ASSERTIONS@")
17
+
18
+ set(SVF_BUILD_TYPE "@CMAKE_BUILD_TYPE@")
19
+ set(SVF_CXX_STANDARD "@CMAKE_CXX_STANDARD@")
20
+
21
+ set(SVF_ENABLE_RTTI "@SVF_ENABLE_RTTI@")
22
+ set(SVF_ENABLE_EXCEPTIONS "@SVF_ENABLE_EXCEPTIONS@")
23
+
24
+ include("${CMAKE_CURRENT_LIST_DIR}/SVFTargets.cmake")
package/.config.in ADDED
@@ -0,0 +1,26 @@
1
+ #ifndef CONFIG_H_IN
2
+ #define CONFIG_H_IN
3
+
4
+ // Directory structure of SVF build
5
+ #define SVF_ROOT "@CMAKE_CURRENT_SOURCE_DIR@"
6
+ #define SVF_BUILD_DIR "@CMAKE_CURRENT_BINARY_DIR@"
7
+ #define SVF_INSTALL_DIR "@SVF_INSTALL_ROOT@"
8
+ #define SVF_BIN_DIR "@SVF_INSTALL_BIN_DIR@"
9
+ #define SVF_LIB_DIR "@SVF_INSTALL_LIB_DIR@"
10
+ #define SVF_INCLUDE_DIR "@SVF_INSTALL_INCLUDE_DIR@"
11
+ #define SVF_EXTAPI_DIR "@SVF_INSTALL_EXTAPI_DIR@"
12
+ #define SVF_EXTAPI_BC "@SVF_INSTALL_EXTAPI_FILE@"
13
+
14
+ // Build mode used to build SVF
15
+ #define SVF_BUILD_TYPE "@CMAKE_BUILD_TYPE@"
16
+
17
+ // Sanitiser mode used for building SVF
18
+ #cmakedefine SVF_SANITIZE "@SVF_SANITIZE@"
19
+
20
+ // Build options used when building SVF
21
+ #cmakedefine SVF_COVERAGE
22
+ #cmakedefine SVF_WARN_AS_ERROR
23
+ #cmakedefine SVF_EXPORT_DYNAMIC
24
+ #cmakedefine SVF_ENABLE_ASSERTIONS
25
+
26
+ #endif // CONFIG_H_IN
package/.gitignore CHANGED
@@ -9,6 +9,8 @@ autoconf/
9
9
  tests/result/
10
10
  doxygen/
11
11
  .*
12
+ !.config.in
13
+ !.config.cmake.in
12
14
  !.gitignore
13
15
  *~
14
16
  *.o
package/CMakeLists.txt CHANGED
@@ -1,38 +1,95 @@
1
1
  cmake_minimum_required(VERSION 3.13.4)
2
2
 
3
- project("SVF")
3
+ project(SVF
4
+ VERSION 2.7.1
5
+ DESCRIPTION "SVF is a static value-flow analysis tool for LLVM-based languages"
6
+ HOMEPAGE_URL "https://github.com/SVF-tools/SVF"
7
+ LANGUAGES C CXX
8
+ )
9
+
10
+ # Ensure installation directories like ${CMAKE_INSTALL_LIBDIR} are available
11
+ include(GNUInstallDirs)
4
12
 
5
- message(STATUS "Using CMake with generator: ${CMAKE_GENERATOR}")
13
+ # Configurable (string) options for building SVF
14
+ set(SVF_SANITIZE "" CACHE STRING "Create sanitizer build (address)")
15
+
16
+ # Configurable (boolean) options for building SVF
17
+ option(SVF_COVERAGE "Create coverage build")
18
+ option(SVF_WARN_AS_ERROR "Treat warnings as errors when building SVF (default: on)" ON)
19
+ option(SVF_EXPORT_DYNAMIC "Export all (not only used) dynamic symbols to dynamic symbol table")
20
+ option(SVF_ENABLE_ASSERTIONS "Always enable assertions")
6
21
 
7
- configure_file(${PROJECT_SOURCE_DIR}/.config.in ${PROJECT_BINARY_DIR}/include/Util/config.h)
22
+ # Configure top-level SVF variables (used by CMake for configuring installed SVF package)
23
+ set(SVF_INSTALL_ROOT ${CMAKE_INSTALL_PREFIX})
24
+ set(SVF_INSTALL_BIN_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR})
25
+ set(SVF_INSTALL_LIB_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR})
26
+ set(SVF_INSTALL_INCLUDE_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}/svf)
27
+
28
+ # Set where extapi.bc is exported to in the installed CMake package
29
+ set(SVF_INSTALL_EXTAPI_DIR ${SVF_INSTALL_INCLUDE_DIR}/SVF-LLVM)
30
+ set(SVF_INSTALL_EXTAPI_FILE ${SVF_INSTALL_EXTAPI_DIR}/extapi.bc)
31
+
32
+ message(STATUS "Building ${PROJECT_NAME} with configuration:
33
+ SVF version: ${SVF_VERSION}
34
+ SVF root directory: ${SVF_SOURCE_DIR}
35
+ SVF binary directory: ${SVF_BINARY_DIR}
36
+ SVF option - create sanitiser build (str): ${SVF_SANITIZE}
37
+ SVF option - coverage build: ${SVF_COVERAGE}
38
+ SVF option - warnings as errors: ${SVF_WARN_AS_ERROR}
39
+ SVF option - unused dynamic symbols: ${SVF_EXPORT_DYNAMIC}
40
+ SVF option - enable build assertions: ${SVF_ENABLE_ASSERTIONS}")
41
+
42
+ message(STATUS "Using CMake build configuration:
43
+ CMake generator: ${CMAKE_GENERATOR}
44
+ CMake C compiler: ${CMAKE_C_COMPILER_ID}
45
+ CMake C++ compiler: ${CMAKE_CXX_COMPILER_ID}
46
+ CMake current list directory: ${CMAKE_CURRENT_LIST_DIR}
47
+ CMake current source directory: ${CMAKE_CURRENT_SOURCE_DIR}
48
+ CMake current binary directory: ${CMAKE_CURRENT_BINARY_DIR}")
49
+
50
+ # Create config.h based on config.in
51
+ configure_file(${SVF_SOURCE_DIR}/.config.in ${SVF_BINARY_DIR}/include/Util/config.h)
52
+
53
+ # Include the directory where the configuration header is exported for all targets
54
+ include_directories(${SVF_BINARY_DIR}/include)
8
55
 
9
- # Treat compiler warnings as errors
10
- add_compile_options("-Werror" "-Wall" "-Wno-deprecated-declarations")
56
+ # Install generated configuration header (see `configure_file()`) to top-level include dir of SVF
57
+ install(
58
+ FILES ${SVF_BINARY_DIR}/include/Util/config.h
59
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/svf/Util
60
+ )
11
61
 
12
62
  # Build SVF with C++ standard C++17
13
63
  set(CMAKE_CXX_STANDARD 17)
14
64
  set(CMAKE_CXX_EXTENSIONS ON)
15
65
  set(CMAKE_CXX_STANDARD_REQUIRED ON)
66
+ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
67
+ set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON)
68
+
69
+ # By default, build SVF and its targets treating all compiler warnings as errors (except deprecations)
70
+ add_compile_options(
71
+ "$<$<BOOL:${SVF_WARN_AS_ERROR}>:-Wall>"
72
+ "$<$<BOOL:${SVF_WARN_AS_ERROR}>:-Werror>"
73
+ "$<$<BOOL:${SVF_WARN_AS_ERROR}>:-Wno-deprecated-declarations>"
74
+ )
16
75
 
17
76
  # Keep assertions enabled if requested
18
- option(SVF_ENABLE_ASSERTIONS "Always enable assertions")
19
- if(SVF_ENABLE_ASSERTIONS)
20
- add_compile_options("-UNDEBUG")
21
- endif()
77
+ add_compile_options("$<$<BOOL:${SVF_ENABLE_ASSERTIONS}>:-UNDEBUG>")
22
78
 
23
- # Turn this on if you need symbols (e.g., use them for backtrace debugging)
24
- # add_link_options("-rdynamic")
79
+ # Export dynamic symbols if requested (adds "-export-dynamic" to linkers that support it to enable backtraces)
80
+ add_compile_options("$<$<BOOL:${SVF_EXPORT_DYNAMIC}>:-rdynamic>")
25
81
 
26
- option(SVF_COVERAGE "Create coverage build")
27
- if(SVF_COVERAGE OR DEFINED ENV{SVF_COVERAGE})
28
- add_compile_options("-fprofile-arcs" "-ftest-coverage")
29
- add_link_options("-fprofile-arcs" "-ftest-coverage")
30
- message(STATUS "Enable coverage")
31
- endif()
82
+ # Configure whether a coverage build should be created for SVF (i.e. add runtime instrumentation)
83
+ add_compile_options(
84
+ "$<$<OR:$<BOOL:${SVF_COVERAGE}>,$<BOOL:$ENV{SVF_COVERAGE}>>:-fprofile-arcs>"
85
+ "$<$<OR:$<BOOL:${SVF_COVERAGE}>,$<BOOL:$ENV{SVF_COVERAGE}>>:-ftest-coverage>"
86
+ )
87
+ add_link_options(
88
+ "$<$<OR:$<BOOL:${SVF_COVERAGE}>,$<BOOL:$ENV{SVF_COVERAGE}>>:-fprofile-arcs>"
89
+ "$<$<OR:$<BOOL:${SVF_COVERAGE}>,$<BOOL:$ENV{SVF_COVERAGE}>>:-ftest-coverage>"
90
+ )
32
91
 
33
- set(SVF_SANITIZE
34
- ""
35
- CACHE STRING "Create sanitizer build (address)")
92
+ # If building with sanitiser, load the given sanitiser mode
36
93
  if(SVF_SANITIZE STREQUAL "address")
37
94
  add_compile_options("-fno-omit-frame-pointer" "-fsanitize=address")
38
95
  add_link_options("-fsanitize=address")
@@ -42,54 +99,88 @@ elseif(SVF_SANITIZE STREQUAL "thread")
42
99
  add_link_options("-fsanitize=thread")
43
100
  message(STATUS "Sanitizer build: ${SVF_SANITIZE}")
44
101
  elseif(NOT SVF_SANITIZE STREQUAL "")
45
- message(ERROR "Unknown sanitizer type: ${SVF_SANITIZE}")
102
+ message(FATAL_ERROR "Unknown sanitizer type: ${SVF_SANITIZE}")
46
103
  endif()
47
104
 
105
+ # Check if the test-suite is present, if it is then build bc files and add testing to cmake build
106
+ if(EXISTS "${PROJECT_SOURCE_DIR}/Test-Suite")
107
+ include_directories(${PROJECT_SOURCE_DIR}/Test-Suite)
108
+ enable_testing()
109
+ add_subdirectory(Test-Suite)
110
+ include(CTest)
111
+ endif()
112
+
113
+ # Find Z3 and its include directory from the top-level include file
48
114
  find_library(
49
115
  Z3_LIBRARIES
116
+ REQUIRED
50
117
  NAMES z3
51
118
  HINTS ${Z3_DIR} ENV Z3_DIR
52
119
  PATH_SUFFIXES bin lib)
53
120
  find_path(
54
121
  Z3_INCLUDES
122
+ REQUIRED
55
123
  NAMES z3++.h
56
124
  HINTS ${Z3_DIR} ENV Z3_DIR
57
125
  PATH_SUFFIXES include z3)
58
- if(NOT Z3_LIBRARIES OR NOT Z3_INCLUDES)
59
- message(FATAL_ERROR "Z3 not found!")
60
- endif()
61
- message(STATUS "Found Z3: ${Z3_LIBRARIES}")
62
- message(STATUS "Z3 include dir: ${Z3_INCLUDES}")
126
+ message(STATUS "Z3 STATUS:
127
+ Z3 library file: ${Z3_LIBRARIES}
128
+ Z3 include directory: ${Z3_INCLUDES}")
63
129
 
64
- include_directories(${PROJECT_SOURCE_DIR}/svf/include
65
- ${PROJECT_BINARY_DIR}/include ${Z3_INCLUDES})
66
-
67
- # checks if the test-suite is present, if it is then build bc files and add
68
- # testing to cmake build
69
- if(EXISTS "${PROJECT_SOURCE_DIR}/Test-Suite")
70
- include_directories(${PROJECT_SOURCE_DIR}/Test-Suite)
71
- enable_testing()
72
- add_subdirectory(Test-Suite)
73
- include(CTest)
74
- endif()
130
+ # Add the Z3 include directory and link the Z3 library to all targets of SVF
131
+ link_libraries(${Z3_LIBRARIES})
132
+ include_directories(SYSTEM ${Z3_INCLUDES})
75
133
 
134
+ # Add the actual SVF and SVF-LLVM targets
76
135
  add_subdirectory(svf)
77
136
  add_subdirectory(svf-llvm)
78
137
 
79
138
  # Whether RTTI/Exceptions are enabled currently depends on whether the LLVM instance used to build
80
139
  # SVF had them enabled; since the LLVM instance is found in the "svf-llvm" subdirectory, it sets the
81
140
  # below variables in its parent directory (i.e. for this CMakeLists.txt) so check them here
82
- if(SVF_NO_RTTI)
83
- add_compile_options("-fno-rtti")
84
- endif()
141
+ add_compile_definitions(
142
+ $<IF:$<BOOL:${SVF_ENABLE_RTTI}>,,-fno-rtti>
143
+ $<IF:$<BOOL:${SVF_ENABLE_EXCEPTIONS}>,,-fno-exceptions>
144
+ )
85
145
 
86
- if(SVF_NO_EH)
87
- add_compile_options("-fno-exceptions")
88
- endif()
146
+ # Export the SVF target for including SVF from CMake using find_package(SVF)
147
+ include(CMakePackageConfigHelpers)
148
+
149
+ # Generate SVFConfig.cmake
150
+ configure_package_config_file(
151
+ .config.cmake.in
152
+ ${CMAKE_CURRENT_BINARY_DIR}/SVFConfig.cmake
153
+ INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/SVF
154
+ PATH_VARS
155
+ SVF_INSTALL_ROOT
156
+ SVF_INSTALL_BIN_DIR
157
+ SVF_INSTALL_LIB_DIR
158
+ SVF_INSTALL_INCLUDE_DIR
159
+ SVF_INSTALL_EXTAPI_DIR
160
+ SVF_INSTALL_EXTAPI_FILE
161
+ )
89
162
 
90
- # Install generated configuration header (see `configure_file()`) to top-level include dir of SVF
91
- include(GNUInstallDirs)
163
+ # Generate SVFConfigVersion.cmake
164
+ write_basic_package_version_file(
165
+ "${CMAKE_CURRENT_BINARY_DIR}/SVFConfigVersion.cmake"
166
+ VERSION "${SVF_VERSION_MAJOR}.${SVF_VERSION_MINOR}"
167
+ COMPATIBILITY AnyNewerVersion
168
+ )
169
+
170
+ # Install above CMake files as part of installation
92
171
  install(
93
- FILES ${PROJECT_BINARY_DIR}/include/Util/config.h
94
- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/svf/Util
172
+ FILES
173
+ ${CMAKE_CURRENT_BINARY_DIR}/SVFConfig.cmake
174
+ ${CMAKE_CURRENT_BINARY_DIR}/SVFConfigVersion.cmake
175
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/SVF
95
176
  )
177
+
178
+ # Install CMake targets from different SVF subprojects so they can be found by find_package(SVF)
179
+ install(
180
+ EXPORT SVFTargets
181
+ FILE SVFTargets.cmake
182
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/SVF
183
+ )
184
+
185
+ # Export targets added to SVFTargets (set by install() command)
186
+ export(EXPORT SVFTargets FILE "${CMAKE_CURRENT_BINARY_DIR}/SVFTargets.cmake")
@@ -72,8 +72,6 @@ $(function() {
72
72
  Functions</h2></td></tr>
73
73
  <tr class="memitem:ab0c0fec5e777861a934894bc00fc585c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="CMakeLists_8txt.html#ab0c0fec5e777861a934894bc00fc585c">add_subdirectory</a> (SABER) add_subdirectory(WPA) add_subdirectory(Example) add_subdirectory(DDA) add_subdirectory(MTA) add_subdirectory(CFL) add_subdirectory(LLVM2SVF) set_target_properties(cfl dvf svf-ex llvm2svf mta saber wpa PROPERTIES RUNTIME_OUTPUT_DIRECTORY $</td></tr>
74
74
  <tr class="separator:ab0c0fec5e777861a934894bc00fc585c"><td class="memSeparator" colspan="2">&#160;</td></tr>
75
- <tr class="memitem:a9f6d70f6197845162ae5fd12f33f094a"><td class="memItemLeft" align="right" valign="top">bin&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="CMakeLists_8txt.html#a9f6d70f6197845162ae5fd12f33f094a">include</a> (GNUInstallDirs) install(TARGETS cfl dvf svf-ex llvm2svf mta saber wpa RUNTIME DESTINATION $</td></tr>
76
- <tr class="separator:a9f6d70f6197845162ae5fd12f33f094a"><td class="memSeparator" colspan="2">&#160;</td></tr>
77
75
  </table>
78
76
  <h2 class="groupheader">Function Documentation</h2>
79
77
  <a id="ab0c0fec5e777861a934894bc00fc585c"></a>
@@ -93,28 +91,7 @@ Functions</h2></td></tr>
93
91
  </div><div class="memdoc">
94
92
 
95
93
  <p class="definition">Definition at line <a class="el" href="CMakeLists_8txt_source.html#l00001">1</a> of file <a class="el" href="CMakeLists_8txt_source.html">CMakeLists.txt</a>.</p>
96
- <div class="fragment"><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; {CMAKE_BINARY_DIR}/bin</div>
97
- </div><!-- fragment -->
98
- </div>
99
- </div>
100
- <a id="a9f6d70f6197845162ae5fd12f33f094a"></a>
101
- <h2 class="memtitle"><span class="permalink"><a href="#a9f6d70f6197845162ae5fd12f33f094a">&#9670;&nbsp;</a></span>include()</h2>
102
-
103
- <div class="memitem">
104
- <div class="memproto">
105
- <table class="memname">
106
- <tr>
107
- <td class="memname">bin include </td>
108
- <td>(</td>
109
- <td class="paramtype">GNUInstallDirs&#160;</td>
110
- <td class="paramname"></td><td>)</td>
111
- <td></td>
112
- </tr>
113
- </table>
114
- </div><div class="memdoc">
115
-
116
- <p class="definition">Definition at line <a class="el" href="CMakeLists_8txt_source.html#l00016">16</a> of file <a class="el" href="CMakeLists_8txt_source.html">CMakeLists.txt</a>.</p>
117
- <div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; {CMAKE_INSTALL_BINDIR}</div>
94
+ <div class="fragment"><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; {CMAKE_BINARY_DIR}/bin</div>
118
95
  </div><!-- fragment -->
119
96
  </div>
120
97
  </div>
@@ -67,9 +67,6 @@ $(function() {
67
67
  <li>if()
68
68
  : <a class="el" href="cJSON_8cpp.html#a90e6101bee79e6d18c535254695e91e3">cJSON.cpp</a>
69
69
  </li>
70
- <li>include()
71
- : <a class="el" href="CMakeLists_8txt.html#a9f6d70f6197845162ae5fd12f33f094a">CMakeLists.txt</a>
72
- </li>
73
70
  <li>indent()
74
71
  : <a class="el" href="DCHG_8cpp.html#a6673217180d3b6fb73c7c6387777f269">DCHG.cpp</a>
75
72
  </li>
@@ -67,9 +67,6 @@ $(function() {
67
67
  <li>if()
68
68
  : <a class="el" href="cJSON_8cpp.html#a90e6101bee79e6d18c535254695e91e3">cJSON.cpp</a>
69
69
  </li>
70
- <li>include()
71
- : <a class="el" href="CMakeLists_8txt.html#a9f6d70f6197845162ae5fd12f33f094a">CMakeLists.txt</a>
72
- </li>
73
70
  <li>indent()
74
71
  : <a class="el" href="DCHG_8cpp.html#a6673217180d3b6fb73c7c6387777f269">DCHG.cpp</a>
75
72
  </li>
@@ -139,8 +136,8 @@ $(function() {
139
136
  : <a class="el" href="extapi_8c.html#adaf3aadefe3fc4fb07b6be0d7b880f53">extapi.c</a>
140
137
  </li>
141
138
  <li>item
142
- : <a class="el" href="cJSON_8cpp.html#ac011de571ff16ba220d2e0d757e4e8b0">cJSON.cpp</a>
143
- , <a class="el" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">cJSON.h</a>
139
+ : <a class="el" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">cJSON.h</a>
140
+ , <a class="el" href="cJSON_8cpp.html#ac011de571ff16ba220d2e0d757e4e8b0">cJSON.cpp</a>
144
141
  </li>
145
142
  </ul>
146
143
  </div><!-- contents -->