12
12
# See the License for the specific language governing permissions and
13
13
# limitations under the License.
14
14
15
- cmake_minimum_required (VERSION 3.14 )
15
+ cmake_minimum_required (VERSION 3.21 )
16
16
include (cmake/vcpkg_helper.cmake )
17
17
18
18
# Setup to use ccache
@@ -23,16 +23,14 @@ include(GNUInstallDirs)
23
23
24
24
include ("${CMAKE_CURRENT_SOURCE_DIR} /cmake/settings.cmake" )
25
25
include ("${CMAKE_CURRENT_SOURCE_DIR} /cmake/utils.cmake" )
26
+ include ("${CMAKE_CURRENT_SOURCE_DIR} /cmake/options.cmake" )
26
27
list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR} /cmake/modules" )
27
- include (CTest )
28
28
29
+ if (REMILL_ENABLE_TESTING )
30
+ include (CTest )
31
+ endif ()
29
32
30
- set (REMILL_SOURCE_DIR "${PROJECT_SOURCE_DIR} " )
31
-
32
- set (REMILL_INSTALL_LIB_DIR "${CMAKE_INSTALL_LIBDIR} " CACHE PATH "Directory in which remill libraries will be installed" )
33
- set (REMILL_INSTALL_BIN_DIR "${CMAKE_INSTALL_BINDIR} " CACHE PATH "Directory in which remill binaries will be installed" )
34
- set (REMILL_INSTALL_INCLUDE_DIR "${CMAKE_INSTALL_INCLUDEDIR} " CACHE PATH "Directory in which remill headers will be installed" )
35
- set (REMILL_INSTALL_SHARE_DIR "${CMAKE_INSTALL_DATADIR} " CACHE PATH "Directory in which remill cmake files will be installed" )
33
+ message (STATUS "Compiler ID is ${CMAKE_C_COMPILER_ID} " )
36
34
37
35
#
38
36
# libraries
@@ -47,8 +45,20 @@ string(REPLACE "." ";" LLVM_VERSION_LIST ${LLVM_PACKAGE_VERSION})
47
45
list (GET LLVM_VERSION_LIST 0 LLVM_MAJOR_VERSION )
48
46
list (GET LLVM_VERSION_LIST 1 LLVM_MINOR_VERSION )
49
47
50
- set (LLVM_MAJOR_VERSION "${LLVM_MAJOR_VERSION} " PARENT_SCOPE )
51
- set (LLVM_MINOR_VERSION "${LLVM_MINOR_VERSION} " PARENT_SCOPE )
48
+ set (LLVM_MAJOR_VERSION "${LLVM_MAJOR_VERSION} " )
49
+ set (LLVM_MINOR_VERSION "${LLVM_MINOR_VERSION} " )
50
+
51
+ set (REMILL_LLVM_VERSION "${LLVM_MAJOR_VERSION} " )
52
+
53
+ message ("Remill llvm version: ${REMILL_LLVM_VERSION} " )
54
+ set (REMILL_INSTALL_SEMANTICS_DIR "${CMAKE_INSTALL_PREFIX} /${REMILL_INSTALL_SHARE_DIR} /remill/${REMILL_LLVM_VERSION} /semantics" CACHE PATH "Directory into which semantics are installed" )
55
+ set (REMILL_BUILD_SEMANTICS_DIR_X86 "${CMAKE_CURRENT_BINARY_DIR} /lib/Arch/X86/Runtime" )
56
+ set (REMILL_BUILD_SEMANTICS_DIR_AARCH32 "${CMAKE_CURRENT_BINARY_DIR} /lib/Arch/AArch32/Runtime" )
57
+ set (REMILL_BUILD_SEMANTICS_DIR_AARCH64 "${CMAKE_CURRENT_BINARY_DIR} /lib/Arch/AArch64/Runtime" )
58
+ set (REMILL_BUILD_SEMANTICS_DIR_SPARC32 "${CMAKE_CURRENT_BINARY_DIR} /lib/Arch/SPARC32/Runtime" )
59
+ set (REMILL_BUILD_SEMANTICS_DIR_SPARC64 "${CMAKE_CURRENT_BINARY_DIR} /lib/Arch/SPARC64/Runtime" )
60
+ set (REMILL_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR} /include" )
61
+ set (REMILL_LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR} /lib" )
52
62
53
63
add_library (thirdparty_llvm INTERFACE )
54
64
target_include_directories (thirdparty_llvm SYSTEM INTERFACE
@@ -139,21 +149,7 @@ option(REMILL_BUILD_SPARC32_RUNTIME "Build the Runtime for SPARC32. Turn this of
139
149
# target settings
140
150
#
141
151
142
- set (REMILL_LLVM_VERSION "${LLVM_MAJOR_VERSION} " PARENT_SCOPE )
143
- message ("Remill llvm version: ${REMILL_LLVM_VERSION} " )
144
- math (EXPR REMILL_LLVM_VERSION_NUMBER "${LLVM_MAJOR_VERSION} * 100 + ${LLVM_MINOR_VERSION} " )
145
-
146
- set (REMILL_INSTALL_SEMANTICS_DIR "${CMAKE_INSTALL_PREFIX} /${REMILL_INSTALL_SHARE_DIR} /remill/${REMILL_LLVM_VERSION} /semantics" CACHE PATH "Directory into which semantics are installed" )
147
-
148
- set (REMILL_BUILD_SEMANTICS_DIR_X86 "${CMAKE_CURRENT_BINARY_DIR} /lib/Arch/X86/Runtime" )
149
- set (REMILL_BUILD_SEMANTICS_DIR_AARCH32 "${CMAKE_CURRENT_BINARY_DIR} /lib/Arch/AArch32/Runtime" )
150
- set (REMILL_BUILD_SEMANTICS_DIR_AARCH64 "${CMAKE_CURRENT_BINARY_DIR} /lib/Arch/AArch64/Runtime" )
151
- set (REMILL_BUILD_SEMANTICS_DIR_SPARC32 "${CMAKE_CURRENT_BINARY_DIR} /lib/Arch/SPARC32/Runtime" )
152
- set (REMILL_BUILD_SEMANTICS_DIR_SPARC64 "${CMAKE_CURRENT_BINARY_DIR} /lib/Arch/SPARC64/Runtime" )
153
-
154
152
# add everything as public.
155
- set (REMILL_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR} /include" )
156
- set (REMILL_LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR} /lib" )
157
153
158
154
add_library (remill_settings INTERFACE )
159
155
@@ -243,8 +239,6 @@ set(THIRDPARTY_LIBRARY_LIST thirdparty_llvm thirdparty_xed thirdparty_glog third
243
239
target_link_libraries (remill_settings INTERFACE
244
240
${THIRDPARTY_LIBRARY_LIST}
245
241
)
246
- install (TARGETS remill_settings ${THIRDPARTY_LIBRARY_LIST}
247
- EXPORT remillTargets )
248
242
249
243
add_subdirectory (lib/Arch )
250
244
add_subdirectory (lib/BC )
@@ -261,7 +255,6 @@ target_link_libraries(remill INTERFACE
261
255
remill_version
262
256
${LINKER_END_GROUP}
263
257
)
264
- install (TARGETS remill EXPORT remillTargets )
265
258
266
259
#
267
260
# Also install clang, libllvm and llvm-link
@@ -292,22 +285,6 @@ endforeach()
292
285
293
286
list (REMOVE_DUPLICATES THIRDPARTY_LIBRARY_FILES )
294
287
295
- # First do the basic substitutions.
296
- configure_file (
297
- "${CMAKE_CURRENT_SOURCE_DIR} /cmake/remillConfig.cmake.in"
298
- "${CMAKE_CURRENT_BINARY_DIR} /remillConfig.cmake"
299
- @ONLY
300
- )
301
-
302
- install (FILES "${CMAKE_CURRENT_BINARY_DIR} /remillConfig.cmake"
303
- "${CMAKE_CURRENT_LIST_DIR} /cmake/vcpkg_helper.cmake"
304
- DESTINATION "${REMILL_INSTALL_LIB_DIR} /cmake/remill"
305
- )
306
-
307
- install (DIRECTORY "${REMILL_INCLUDE_DIR} /remill/"
308
- DESTINATION "${REMILL_INSTALL_INCLUDE_DIR} /remill"
309
- )
310
-
311
288
#
312
289
# additional targets
313
290
#
@@ -317,27 +294,48 @@ add_custom_target(semantics)
317
294
# tools
318
295
add_subdirectory (bin )
319
296
320
- install (EXPORT remillTargets
321
- DESTINATION "${CMAKE_INSTALL_LIBDIR} /cmake/remill" )
297
+ if (REMILL_ENABLE_INSTALL_TARGET )
298
+ install (TARGETS remill EXPORT remillTargets )
299
+
300
+ install (TARGETS remill_settings ${THIRDPARTY_LIBRARY_LIST}
301
+ EXPORT remillTargets
302
+ )
303
+
304
+ # First do the basic substitutions.
305
+ configure_file (
306
+ "${CMAKE_CURRENT_SOURCE_DIR} /cmake/remillConfig.cmake.in"
307
+ "${CMAKE_CURRENT_BINARY_DIR} /remillConfig.cmake"
308
+ @ONLY
309
+ )
310
+
311
+ install (FILES "${CMAKE_CURRENT_BINARY_DIR} /remillConfig.cmake"
312
+ "${CMAKE_CURRENT_LIST_DIR} /cmake/vcpkg_helper.cmake"
313
+ DESTINATION "${REMILL_INSTALL_LIB_DIR} /cmake/remill"
314
+ )
315
+
316
+ install (DIRECTORY "${REMILL_INCLUDE_DIR} /remill/"
317
+ DESTINATION "${REMILL_INSTALL_INCLUDE_DIR} /remill"
318
+ )
319
+
320
+ install (EXPORT remillTargets
321
+ DESTINATION "${CMAKE_INSTALL_LIBDIR} /cmake/remill" )
322
+ endif ()
322
323
323
324
# tests
324
- message ("compiler ID ${CMAKE_C_COMPILER_ID} " )
325
- if ("${CMAKE_C_COMPILER_ID} " STREQUAL "Clang" OR "${CMAKE_C_COMPILER_ID} " STREQUAL "AppleClang" )
325
+ if (REMILL_ENABLE_TESTING )
326
326
# Tests require enabling exports on binaries
327
327
# https://cmake.org/cmake/help/latest/variable/CMAKE_ENABLE_EXPORTS.html#variable:CMAKE_ENABLE_EXPORTS
328
328
set (CMAKE_ENABLE_EXPORTS ON )
329
329
330
330
find_package (Threads REQUIRED )
331
331
add_custom_target (test_dependencies )
332
332
333
- if (NOT "${PLATFORM_NAME} " STREQUAL "windows" )
334
- if ("${CMAKE_HOST_SYSTEM_PROCESSOR} " STREQUAL "AMD64" OR "${CMAKE_HOST_SYSTEM_PROCESSOR} " STREQUAL "x86_64" )
335
- message (STATUS "X86 tests enabled" )
336
- add_subdirectory (tests/X86 )
337
- endif ()
333
+ if (REMILL_ENABLE_TESTING_X86 )
334
+ message (STATUS "X86 tests enabled" )
335
+ add_subdirectory (tests/X86 )
338
336
endif ()
339
337
340
- if (" ${CMAKE_HOST_SYSTEM_PROCESSOR} " STREQUAL "aarch64" AND " ${PLATFORM_NAME} " STREQUAL "linux" )
338
+ if (REMILL_ENABLE_TESTING_AARCH64 )
341
339
message (STATUS "aarch64 tests enabled" )
342
340
add_subdirectory (tests/AArch64 )
343
341
endif ()
0 commit comments