-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
38 lines (30 loc) · 1.46 KB
/
CMakeLists.txt
File metadata and controls
38 lines (30 loc) · 1.46 KB
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
cmake_minimum_required(VERSION 3.7)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ggdb -O3")
find_package(DynamoRIO ${VERSION_NUMBER_MAJOR}.${VERSION_NUMBER_MINOR})
if (NOT DynamoRIO_FOUND)
message(FATAL_ERROR "DynamoRIO package required to build")
endif(NOT DynamoRIO_FOUND)
function (add_sample_client name source_file_list extension_list)
add_library(${name} SHARED ${source_file_list})
configure_DynamoRIO_client(${name})
foreach (ext ${extension_list})
use_DynamoRIO_extension(${name} ${ext})
endforeach (ext)
# Provide a hint for how to use the client
if (NOT DynamoRIO_INTERNAL OR NOT "${CMAKE_GENERATOR}" MATCHES "Ninja")
DynamoRIO_get_full_path(path ${name} "${location_suffix}")
add_custom_command(TARGET ${name}
POST_BUILD
COMMAND ${CMAKE_COMMAND}
ARGS -E echo "Usage: pass to drconfig or drrun: -c ${path}"
VERBATIM)
endif ()
get_property(sample_list GLOBAL PROPERTY DynamoRIO_sample_list) # NON-PUBLIC
set_property(GLOBAL PROPERTY DynamoRIO_sample_list # NON-PUBLIC
"${sample_list};${name}") # NON-PUBLIC
set(srcs ${srcs} ${source_file_list} PARENT_SCOPE) # NON-PUBLIC
set(tgts ${tgts} ${name} PARENT_SCOPE) # NON-PUBLIC
endfunction (add_sample_client)
configure_DynamoRIO_global(OFF ON)
add_sample_client(shadowcallstack "shadowcallstack.c;utils.c" "drmgr;drsyms;drx;drcontainers")
configure_DynamoRIO_client(shadowcallstack)