xref: /llvm-project/compiler-rt/lib/dfsan/CMakeLists.txt (revision 2224dce7e490340717adb3bd864f17b5d7da4421)
1include_directories(..)
2
3# Runtime library sources and build flags.
4set(DFSAN_RTL_SOURCES
5  dfsan.cpp
6  dfsan_allocator.cpp
7  dfsan_chained_origin_depot.cpp
8  dfsan_custom.cpp
9  dfsan_interceptors.cpp
10  dfsan_new_delete.cpp
11  dfsan_thread.cpp
12  )
13
14set(DFSAN_RTL_HEADERS
15  dfsan.h
16  dfsan_allocator.h
17  dfsan_chained_origin_depot.h
18  dfsan_flags.inc
19  dfsan_flags.h
20  dfsan_platform.h
21  dfsan_thread.h
22  )
23
24set(DFSAN_COMMON_CFLAGS ${SANITIZER_COMMON_CFLAGS})
25append_rtti_flag(OFF DFSAN_COMMON_CFLAGS)
26# Prevent clang from generating libc calls.
27append_list_if(COMPILER_RT_HAS_FFREESTANDING_FLAG -ffreestanding DFSAN_COMMON_CFLAGS)
28
29# Too many existing bugs, needs cleanup.
30append_list_if(COMPILER_RT_HAS_WNO_FORMAT -Wno-format DFSAN_COMMON_CFLAGS)
31
32# Static runtime library.
33add_compiler_rt_component(dfsan)
34
35foreach(arch ${DFSAN_SUPPORTED_ARCH})
36  set(DFSAN_CFLAGS ${DFSAN_COMMON_CFLAGS})
37  append_list_if(COMPILER_RT_HAS_FPIE_FLAG -fPIE DFSAN_CFLAGS)
38  add_compiler_rt_runtime(clang_rt.dfsan
39    STATIC
40    ARCHS ${arch}
41    SOURCES ${DFSAN_RTL_SOURCES}
42            $<TARGET_OBJECTS:RTInterception.${arch}>
43            $<TARGET_OBJECTS:RTSanitizerCommon.${arch}>
44            $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}>
45            $<TARGET_OBJECTS:RTSanitizerCommonSymbolizer.${arch}>
46            $<TARGET_OBJECTS:RTSanitizerCommonSymbolizerInternal.${arch}>
47    ADDITIONAL_HEADERS ${DFSAN_RTL_HEADERS}
48    CFLAGS ${DFSAN_CFLAGS}
49    PARENT_TARGET dfsan)
50  add_sanitizer_rt_symbols(clang_rt.dfsan
51    ARCHS ${arch}
52    EXTRA dfsan.syms.extra)
53  add_dependencies(dfsan
54    clang_rt.dfsan-${arch}-symbols)
55endforeach()
56
57set(dfsan_abilist_dir ${COMPILER_RT_OUTPUT_DIR}/share)
58set(dfsan_abilist_filename ${dfsan_abilist_dir}/dfsan_abilist.txt)
59add_custom_target(dfsan_abilist ALL
60  DEPENDS ${dfsan_abilist_filename})
61add_custom_command(OUTPUT ${dfsan_abilist_filename}
62                   VERBATIM
63                   COMMAND
64                    ${CMAKE_COMMAND} -E make_directory ${dfsan_abilist_dir}
65                   COMMAND
66                    ${CMAKE_COMMAND} -E cat
67                         ${CMAKE_CURRENT_SOURCE_DIR}/done_abilist.txt
68                         ${CMAKE_CURRENT_SOURCE_DIR}/libc_ubuntu1404_abilist.txt
69                         > ${dfsan_abilist_filename}
70                   DEPENDS done_abilist.txt libc_ubuntu1404_abilist.txt)
71add_dependencies(dfsan dfsan_abilist)
72install(FILES ${dfsan_abilist_filename}
73        DESTINATION ${COMPILER_RT_INSTALL_DATA_DIR})
74