This repository has been archived by the owner on Feb 3, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathCMakeLists.txt
126 lines (94 loc) · 3.96 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# Copyright (C) 2017, Cyberhaven
# All rights reserved.
#
# Licensed under the Cyberhaven Research License Agreement.
cmake_minimum_required(VERSION 3.4.3)
project(LIBS2E)
set(LIBS2E_VERSION_MAJOR 2)
set(LIBS2E_VERSION_MINOR 0)
set(LIBS2E_VERSION_PATCH 0)
set(LIBS2E_PACKAGE_VERSION
"${LIBS2E_VERSION_MAJOR}.${LIBS2E_VERSION_MINOR}.${LIBS2E_VERSION_PATCH}")
include(CMakePackageConfigHelpers)
set(CMAKE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Version.cmake")
write_basic_package_version_file(${CMAKE_VERSION_FILE}
VERSION ${LIBS2E_PACKAGE_VERSION}
COMPATIBILITY AnyNewerVersion)
set(CMAKE_CONFIG_FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake")
set(LIBS2E_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/include")
set(LIBS2E_LIBRARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/src")
configure_file(LIBS2EConfig.cmake.in ${CMAKE_CONFIG_FILE} @ONLY)
find_package(PkgConfig REQUIRED)
pkg_check_modules(GLIB_PKG glib-2.0)
include_directories(${GLIB_PKG_INCLUDE_DIRS})
set(Protobuf_USE_STATIC_LIBS ON)
include(FindProtobuf)
find_package(Protobuf REQUIRED)
# Old CMake does not support static libraries, so we have to patch the library manually
string(REPLACE .so .a PROTOBUF_LIBRARIES "${PROTOBUF_LIBRARIES}")
##### LLVM #####
find_package(LLVM REQUIRED)
message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
add_definitions(${LLVM_DEFINITIONS})
include_directories("include" ${LLVM_INCLUDE_DIRS})
llvm_map_components_to_libnames(LLVM_LIBS all)
set(LLVM_CONFIG "${LLVM_TOOLS_BINARY_DIR}/llvm-config"
CACHE PATH "Path to llvm-config")
execute_process(COMMAND ${LLVM_CONFIG} "--cxxflags"
RESULT_VARIABLE LLVM_CONFIG_RESULT
OUTPUT_VARIABLE LLVM_CXXFLAGS
OUTPUT_STRIP_TRAILING_WHITESPACE)
##################
find_package(KLEE REQUIRED)
message(STATUS "Found klee ${KLEE_PACKAGE_VERSION}")
find_package(LIBQ REQUIRED)
message(STATUS "Found libq ${LIBQ_PACKAGE_VERSION}")
find_package(LIBCPU REQUIRED)
message(STATUS "Found libcpu ${LIBCPU_PACKAGE_VERSION}")
find_package(LIBTCG REQUIRED)
message(STATUS "Found libtcg ${LIBTCG_PACKAGE_VERSION}")
find_package(FSIGCXX REQUIRED)
message(STATUS "Found fsigc++ ${FSIGCXX_PACKAGE_VERSION}")
find_package(VMI REQUIRED)
message(STATUS "Found libvmi ${VMI_PACKAGE_VERSION}")
find_package(LIBCOROUTINE REQUIRED)
message(STATUS "Found libcoroutine ${LIBCOROUTINE_PACKAGE_VERSION}")
if(WITH_TARGET MATCHES "s2e")
# TODO: look at libcpu compile options to figure this out§
find_package(LIBS2ECORE REQUIRED)
message(STATUS "Found s2e core ${LIBS2ECORE_PACKAGE_VERSION}")
find_package(LIBS2EPLUGINS REQUIRED)
message(STATUS "Found s2e plugins ${LIBS2EPLUGINS_PACKAGE_VERSION}")
include_directories(${LIBS2ECORE_INCLUDE_DIR} ${LIBS2EPLUGINS_INCLUDE_DIR})
endif()
# We want to keep NDEBUG in all builds
foreach (flags_var_to_scrub
CMAKE_CXX_FLAGS_RELEASE
CMAKE_CXX_FLAGS_RELWITHDEBINFO
CMAKE_CXX_FLAGS_MINSIZEREL
CMAKE_C_FLAGS_RELEASE
CMAKE_C_FLAGS_RELWITHDEBINFO
CMAKE_C_FLAGS_MINSIZEREL)
string (REGEX REPLACE "(^| )[/-]D *NDEBUG($| )" " "
"${flags_var_to_scrub}" "${${flags_var_to_scrub}}")
endforeach()
include_directories(${GLIB_PKG_INCLUDE_DIRS}
${LIBTCG_INCLUDE_DIR}
${LIBCPU_INCLUDE_DIR}
${FSIGCXX_INCLUDE_DIR}
${LIBQ_INCLUDE_DIR}
${LIBCOROUTINE_INCLUDE_DIR}
${VMI_INCLUDE_DIR})
link_directories(${GLIB_PKG_LIBRARY_DIRS}
${LIBTCG_LIBRARY_DIR}
${LIBCPU_LIBRARY_DIR}
${LIBQ_LIBRARY_DIR}
${KLEE_LIBRARY_DIR}
${LUA_DIR}
${Z3_DIR}
${FSIGCXX_LIBRARY_DIR}
${LIBCOROUTINE_LIBRARY_DIR}
${LIBS2ECORE_LIBRARY_DIR}
${LIBS2EPLUGINS_LIBRARY_DIR}
${VMI_LIBRARY_DIR})
add_subdirectory(src)