1 include(LLVMParseArguments)
3 set(SANITIZER_GEN_DYNAMIC_LIST
4 ${COMPILER_RT_SOURCE_DIR}/lib/sanitizer_common/scripts/gen_dynamic_list.py)
6 set(SANITIZER_LINT_SCRIPT
7 ${COMPILER_RT_SOURCE_DIR}/lib/sanitizer_common/scripts/check_lint.sh)
9 # Create a target "<name>-symbols" that would generate the list of symbols
10 # that need to be exported from sanitizer runtime "<name>". Function
11 # interceptors are exported automatically, user can also provide files with
12 # symbol names that should be exported as well.
13 # add_sanitizer_rt_symbols(<name> <files with extra symbols to export>)
14 macro(add_sanitizer_rt_symbols name)
15 get_target_property(libfile ${name} LOCATION)
16 set(symsfile "${libfile}.syms")
17 add_custom_command(OUTPUT ${symsfile}
18 COMMAND ${PYTHON_EXECUTABLE}
19 ${SANITIZER_GEN_DYNAMIC_LIST} ${libfile} ${ARGN}
21 DEPENDS ${name} ${SANITIZER_GEN_DYNAMIC_LIST} ${ARGN}
22 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
23 COMMENT "Generating exported symbols for ${name}"
25 add_custom_target(${name}-symbols ALL
27 SOURCES ${SANITIZER_GEN_DYNAMIC_LIST} ${ARGN})
28 install(FILES ${symsfile} DESTINATION ${COMPILER_RT_LIBRARY_INSTALL_DIR})
31 # Add target to check code style for sanitizer runtimes.
33 add_custom_target(SanitizerLintCheck
34 COMMAND LLVM_CHECKOUT=${LLVM_MAIN_SRC_DIR} SILENT=1 TMPDIR=
35 PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}
36 ${SANITIZER_LINT_SCRIPT}
37 DEPENDS ${SANITIZER_LINT_SCRIPT}
38 COMMENT "Running lint check for sanitizer sources..."