xref: /aosp_15_r20/external/compiler-rt/lib/dfsan/CMakeLists.txt (revision 7c3d14c8b49c529e04be81a3ce6f5cc23712e4c6)
1*7c3d14c8STreehugger Robotinclude_directories(..)
2*7c3d14c8STreehugger Robot
3*7c3d14c8STreehugger Robot# Runtime library sources and build flags.
4*7c3d14c8STreehugger Robotset(DFSAN_RTL_SOURCES
5*7c3d14c8STreehugger Robot  dfsan.cc
6*7c3d14c8STreehugger Robot  dfsan_custom.cc
7*7c3d14c8STreehugger Robot  dfsan_interceptors.cc)
8*7c3d14c8STreehugger Robotset(DFSAN_COMMON_CFLAGS ${SANITIZER_COMMON_CFLAGS})
9*7c3d14c8STreehugger Robotappend_rtti_flag(OFF DFSAN_COMMON_CFLAGS)
10*7c3d14c8STreehugger Robot# Prevent clang from generating libc calls.
11*7c3d14c8STreehugger Robotappend_list_if(COMPILER_RT_HAS_FFREESTANDING_FLAG -ffreestanding DFSAN_COMMON_CFLAGS)
12*7c3d14c8STreehugger Robot
13*7c3d14c8STreehugger Robot# Static runtime library.
14*7c3d14c8STreehugger Robotadd_custom_target(dfsan)
15*7c3d14c8STreehugger Robotset_target_properties(dfsan PROPERTIES FOLDER "Compiler-RT Misc")
16*7c3d14c8STreehugger Robot
17*7c3d14c8STreehugger Robotforeach(arch ${DFSAN_SUPPORTED_ARCH})
18*7c3d14c8STreehugger Robot  set(DFSAN_CFLAGS ${DFSAN_COMMON_CFLAGS})
19*7c3d14c8STreehugger Robot  append_list_if(COMPILER_RT_HAS_FPIE_FLAG -fPIE DFSAN_CFLAGS)
20*7c3d14c8STreehugger Robot  add_compiler_rt_runtime(clang_rt.dfsan
21*7c3d14c8STreehugger Robot    STATIC
22*7c3d14c8STreehugger Robot    ARCHS ${arch}
23*7c3d14c8STreehugger Robot    SOURCES ${DFSAN_RTL_SOURCES}
24*7c3d14c8STreehugger Robot            $<TARGET_OBJECTS:RTInterception.${arch}>
25*7c3d14c8STreehugger Robot            $<TARGET_OBJECTS:RTSanitizerCommon.${arch}>
26*7c3d14c8STreehugger Robot            $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}>
27*7c3d14c8STreehugger Robot    CFLAGS ${DFSAN_CFLAGS}
28*7c3d14c8STreehugger Robot    PARENT_TARGET dfsan)
29*7c3d14c8STreehugger Robot  add_sanitizer_rt_symbols(clang_rt.dfsan
30*7c3d14c8STreehugger Robot    ARCHS ${arch}
31*7c3d14c8STreehugger Robot    EXTRA dfsan.syms.extra)
32*7c3d14c8STreehugger Robot  add_dependencies(dfsan
33*7c3d14c8STreehugger Robot    clang_rt.dfsan-${arch}-symbols)
34*7c3d14c8STreehugger Robotendforeach()
35*7c3d14c8STreehugger Robot
36*7c3d14c8STreehugger Robotset(dfsan_abilist_filename ${COMPILER_RT_OUTPUT_DIR}/dfsan_abilist.txt)
37*7c3d14c8STreehugger Robotadd_custom_target(dfsan_abilist ALL
38*7c3d14c8STreehugger Robot  DEPENDS ${dfsan_abilist_filename})
39*7c3d14c8STreehugger Robotadd_custom_command(OUTPUT ${dfsan_abilist_filename}
40*7c3d14c8STreehugger Robot                   VERBATIM
41*7c3d14c8STreehugger Robot                   COMMAND
42*7c3d14c8STreehugger Robot                     cat ${CMAKE_CURRENT_SOURCE_DIR}/done_abilist.txt
43*7c3d14c8STreehugger Robot                         ${CMAKE_CURRENT_SOURCE_DIR}/libc_ubuntu1404_abilist.txt
44*7c3d14c8STreehugger Robot                         > ${dfsan_abilist_filename}
45*7c3d14c8STreehugger Robot                   DEPENDS done_abilist.txt libc_ubuntu1404_abilist.txt)
46*7c3d14c8STreehugger Robotadd_dependencies(dfsan dfsan_abilist)
47*7c3d14c8STreehugger Robotinstall(FILES ${dfsan_abilist_filename}
48*7c3d14c8STreehugger Robot        DESTINATION ${COMPILER_RT_INSTALL_PATH})
49*7c3d14c8STreehugger Robot
50*7c3d14c8STreehugger Robotadd_dependencies(compiler-rt dfsan)
51