Explicitly list all sanitizer headers in CMake build rules. Make sure sanitizer lit_tests depend on fresh headers.
llvm-svn: 179293
This commit is contained in:
parent
1c77de3aeb
commit
9f3938e271
|
|
@ -170,49 +170,13 @@ endif()
|
||||||
filter_available_targets(SANITIZER_COMMON_SUPPORTED_ARCH
|
filter_available_targets(SANITIZER_COMMON_SUPPORTED_ARCH
|
||||||
x86_64 i386 powerpc64 powerpc)
|
x86_64 i386 powerpc64 powerpc)
|
||||||
|
|
||||||
file(GLOB_RECURSE COMPILER_RT_HEADERS
|
|
||||||
RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/include"
|
|
||||||
"include/*.h")
|
|
||||||
|
|
||||||
set(output_dir ${LLVM_BINARY_DIR}/lib/clang/${CLANG_VERSION}/include)
|
|
||||||
|
|
||||||
if(MSVC_IDE OR XCODE)
|
|
||||||
set(other_output_dir ${LLVM_BINARY_DIR}/bin/lib/clang/${CLANG_VERSION}/include)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Copy compiler-rt headers to the build tree.
|
|
||||||
set(out_files)
|
|
||||||
foreach( f ${COMPILER_RT_HEADERS} )
|
|
||||||
set( src ${CMAKE_CURRENT_SOURCE_DIR}/include/${f} )
|
|
||||||
set( dst ${output_dir}/${f} )
|
|
||||||
add_custom_command(OUTPUT ${dst}
|
|
||||||
DEPENDS ${src}
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${src} ${dst}
|
|
||||||
COMMENT "Copying compiler-rt's ${f}...")
|
|
||||||
list(APPEND out_files ${dst})
|
|
||||||
|
|
||||||
if(other_output_dir)
|
|
||||||
set(other_dst ${other_output_dir}/${f})
|
|
||||||
add_custom_command(OUTPUT ${other_dst}
|
|
||||||
DEPENDS ${src}
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${src} ${other_dst}
|
|
||||||
COMMENT "Copying compiler-rt's ${f}...")
|
|
||||||
list(APPEND out_files ${other_dst})
|
|
||||||
endif()
|
|
||||||
endforeach( f )
|
|
||||||
|
|
||||||
add_custom_target(compiler-rt-headers ALL DEPENDS ${out_files})
|
|
||||||
|
|
||||||
# Install compiler-rt headers.
|
|
||||||
install(DIRECTORY include/
|
|
||||||
DESTINATION ${LIBCLANG_INSTALL_PATH}/include
|
|
||||||
FILES_MATCHING
|
|
||||||
PATTERN "*.h"
|
|
||||||
PATTERN ".svn" EXCLUDE
|
|
||||||
)
|
|
||||||
|
|
||||||
# Add the public header's directory to the includes for all of compiler-rt.
|
# Add the public header's directory to the includes for all of compiler-rt.
|
||||||
include_directories(include)
|
include_directories(include)
|
||||||
|
add_subdirectory(include)
|
||||||
|
|
||||||
|
set(SANITIZER_COMMON_LIT_TEST_DEPS
|
||||||
|
clang clang-headers FileCheck count not llvm-nm llvm-symbolizer
|
||||||
|
compiler-rt-headers)
|
||||||
|
|
||||||
add_subdirectory(lib)
|
add_subdirectory(lib)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,39 @@
|
||||||
|
set(SANITIZER_HEADERS
|
||||||
|
sanitizer/asan_interface.h
|
||||||
|
sanitizer/common_interface_defs.h
|
||||||
|
sanitizer/linux_syscall_hooks.h
|
||||||
|
sanitizer/msan_interface.h)
|
||||||
|
|
||||||
|
set(output_dir ${LLVM_BINARY_DIR}/lib/clang/${CLANG_VERSION}/include)
|
||||||
|
|
||||||
|
if(MSVC_IDE OR XCODE)
|
||||||
|
set(other_output_dir ${LLVM_BINARY_DIR}/bin/lib/clang/${CLANG_VERSION}/include)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Copy compiler-rt headers to the build tree.
|
||||||
|
set(out_files)
|
||||||
|
foreach( f ${SANITIZER_HEADERS} )
|
||||||
|
set( src ${CMAKE_CURRENT_SOURCE_DIR}/${f} )
|
||||||
|
set( dst ${output_dir}/${f} )
|
||||||
|
add_custom_command(OUTPUT ${dst}
|
||||||
|
DEPENDS ${src}
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${src} ${dst}
|
||||||
|
COMMENT "Copying compiler-rt's ${f}...")
|
||||||
|
list(APPEND out_files ${dst})
|
||||||
|
|
||||||
|
if(other_output_dir)
|
||||||
|
set(other_dst ${other_output_dir}/${f})
|
||||||
|
add_custom_command(OUTPUT ${other_dst}
|
||||||
|
DEPENDS ${src}
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${src} ${other_dst}
|
||||||
|
COMMENT "Copying compiler-rt's ${f}...")
|
||||||
|
list(APPEND out_files ${other_dst})
|
||||||
|
endif()
|
||||||
|
endforeach( f )
|
||||||
|
|
||||||
|
add_custom_target(compiler-rt-headers ALL DEPENDS ${out_files})
|
||||||
|
|
||||||
|
# Install sanitizer headers.
|
||||||
|
install(FILES ${SANITIZER_HEADERS}
|
||||||
|
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
|
||||||
|
DESTINATION ${LIBCLANG_INSTALL_PATH}/include/sanitizer)
|
||||||
|
|
@ -14,9 +14,8 @@ configure_lit_site_cfg(
|
||||||
if(COMPILER_RT_CAN_EXECUTE_TESTS)
|
if(COMPILER_RT_CAN_EXECUTE_TESTS)
|
||||||
# Run ASan tests only if we're sure we may produce working binaries.
|
# Run ASan tests only if we're sure we may produce working binaries.
|
||||||
set(ASAN_TEST_DEPS
|
set(ASAN_TEST_DEPS
|
||||||
clang clang-headers FileCheck count not llvm-nm llvm-symbolizer
|
${SANITIZER_COMMON_LIT_TEST_DEPS}
|
||||||
${ASAN_RUNTIME_LIBRARIES}
|
${ASAN_RUNTIME_LIBRARIES})
|
||||||
)
|
|
||||||
set(ASAN_TEST_PARAMS
|
set(ASAN_TEST_PARAMS
|
||||||
asan_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
|
asan_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -14,9 +14,8 @@ configure_lit_site_cfg(
|
||||||
if(COMPILER_RT_CAN_EXECUTE_TESTS)
|
if(COMPILER_RT_CAN_EXECUTE_TESTS)
|
||||||
# Run MSan tests only if we're sure we may produce working binaries.
|
# Run MSan tests only if we're sure we may produce working binaries.
|
||||||
set(MSAN_TEST_DEPS
|
set(MSAN_TEST_DEPS
|
||||||
clang clang-headers FileCheck count not llvm-nm llvm-symbolizer
|
${SANITIZER_COMMON_LIT_TEST_DEPS}
|
||||||
${MSAN_RUNTIME_LIBRARIES}
|
${MSAN_RUNTIME_LIBRARIES})
|
||||||
)
|
|
||||||
set(MSAN_TEST_PARAMS
|
set(MSAN_TEST_PARAMS
|
||||||
msan_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
|
msan_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -11,9 +11,8 @@ configure_lit_site_cfg(
|
||||||
if(COMPILER_RT_CAN_EXECUTE_TESTS)
|
if(COMPILER_RT_CAN_EXECUTE_TESTS)
|
||||||
# Run TSan output tests only if we're sure we can produce working binaries.
|
# Run TSan output tests only if we're sure we can produce working binaries.
|
||||||
set(TSAN_TEST_DEPS
|
set(TSAN_TEST_DEPS
|
||||||
clang clang-headers FileCheck count not llvm-symbolizer
|
${SANITIZER_COMMON_LIT_TEST_DEPS}
|
||||||
${TSAN_RUNTIME_LIBRARIES}
|
${TSAN_RUNTIME_LIBRARIES})
|
||||||
)
|
|
||||||
set(TSAN_TEST_PARAMS
|
set(TSAN_TEST_PARAMS
|
||||||
tsan_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
|
tsan_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -7,9 +7,8 @@ if(COMPILER_RT_CAN_EXECUTE_TESTS)
|
||||||
# Run UBSan output tests only if we're sure that clang would produce
|
# Run UBSan output tests only if we're sure that clang would produce
|
||||||
# working binaries.
|
# working binaries.
|
||||||
set(UBSAN_TEST_DEPS
|
set(UBSAN_TEST_DEPS
|
||||||
clang clang-headers FileCheck count not
|
${SANITIZER_COMMON_LIT_TEST_DEPS}
|
||||||
${UBSAN_RUNTIME_LIBRARIES}
|
${UBSAN_RUNTIME_LIBRARIES})
|
||||||
)
|
|
||||||
set(UBSAN_TEST_PARAMS
|
set(UBSAN_TEST_PARAMS
|
||||||
ubsan_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
|
ubsan_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue