summaryrefslogtreecommitdiff
path: root/lib/msandr/CMakeLists.txt
blob: e302726b44cdb19a6b1a8cdb82e720e0760fc85c (plain)
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

if(DynamoRIO_DIR AND DrMemoryFramework_DIR)
  set(CMAKE_COMPILER_IS_GNUCC 1)
  find_package(DynamoRIO)
  find_package(DrMemoryFramework)

  option(MSANDR_NATIVE_EXEC "Building msandr client for running in DynamoRIO hybrid mode, which allows some module running natively" OFF)
  if (MSANDR_NATIVE_EXEC)
    add_definitions(-DMSANDR_NATIVE_EXEC)
  endif (MSANDR_NATIVE_EXEC)

  set(arch "x86_64")
  add_library(clang_rt.msandr-${arch} SHARED msandr.cc)
  configure_DynamoRIO_client(clang_rt.msandr-${arch})

  function(append_target_cflags tgt cflags)
    get_property(old_cflags TARGET clang_rt.msandr-${arch} PROPERTY COMPILE_FLAGS)
    set_property(TARGET clang_rt.msandr-${arch} PROPERTY COMPILE_FLAGS "${old_cflags} ${cflags}")
  endfunction(append_target_cflags)

  append_target_cflags(clang_rt.msandr-${arch} "-Wno-c++11-extensions")

  use_DynamoRIO_extension(clang_rt.msandr-${arch} drutil)
  use_DynamoRIO_extension(clang_rt.msandr-${arch} drmgr)
  use_DynamoRIO_extension(clang_rt.msandr-${arch} drsyscall)

  set_target_properties(clang_rt.msandr-${arch} PROPERTIES
    LIBRARY_OUTPUT_DIRECTORY ${COMPILER_RT_LIBRARY_OUTPUT_DIR})
  install(TARGETS clang_rt.msandr-${arch}
    LIBRARY DESTINATION ${COMPILER_RT_LIBRARY_INSTALL_DIR})
endif()