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
 | 
			
		||||
  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.
 | 
			
		||||
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)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
  # Run ASan tests only if we're sure we may produce working binaries.
 | 
			
		||||
  set(ASAN_TEST_DEPS
 | 
			
		||||
    clang clang-headers FileCheck count not llvm-nm llvm-symbolizer
 | 
			
		||||
    ${ASAN_RUNTIME_LIBRARIES}
 | 
			
		||||
    )
 | 
			
		||||
    ${SANITIZER_COMMON_LIT_TEST_DEPS}
 | 
			
		||||
    ${ASAN_RUNTIME_LIBRARIES})
 | 
			
		||||
  set(ASAN_TEST_PARAMS
 | 
			
		||||
    asan_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
 | 
			
		||||
    )
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,9 +14,8 @@ configure_lit_site_cfg(
 | 
			
		|||
if(COMPILER_RT_CAN_EXECUTE_TESTS)
 | 
			
		||||
  # Run MSan tests only if we're sure we may produce working binaries.
 | 
			
		||||
  set(MSAN_TEST_DEPS
 | 
			
		||||
    clang clang-headers FileCheck count not llvm-nm llvm-symbolizer
 | 
			
		||||
    ${MSAN_RUNTIME_LIBRARIES}
 | 
			
		||||
    )
 | 
			
		||||
    ${SANITIZER_COMMON_LIT_TEST_DEPS}
 | 
			
		||||
    ${MSAN_RUNTIME_LIBRARIES})
 | 
			
		||||
  set(MSAN_TEST_PARAMS
 | 
			
		||||
    msan_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
 | 
			
		||||
    )
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,9 +11,8 @@ configure_lit_site_cfg(
 | 
			
		|||
if(COMPILER_RT_CAN_EXECUTE_TESTS)
 | 
			
		||||
  # Run TSan output tests only if we're sure we can produce working binaries.
 | 
			
		||||
  set(TSAN_TEST_DEPS
 | 
			
		||||
    clang clang-headers FileCheck count not llvm-symbolizer
 | 
			
		||||
    ${TSAN_RUNTIME_LIBRARIES}
 | 
			
		||||
    )
 | 
			
		||||
    ${SANITIZER_COMMON_LIT_TEST_DEPS}
 | 
			
		||||
    ${TSAN_RUNTIME_LIBRARIES})
 | 
			
		||||
  set(TSAN_TEST_PARAMS
 | 
			
		||||
    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
 | 
			
		||||
  # working binaries.
 | 
			
		||||
  set(UBSAN_TEST_DEPS
 | 
			
		||||
    clang clang-headers FileCheck count not
 | 
			
		||||
    ${UBSAN_RUNTIME_LIBRARIES}
 | 
			
		||||
    )
 | 
			
		||||
    ${SANITIZER_COMMON_LIT_TEST_DEPS}
 | 
			
		||||
    ${UBSAN_RUNTIME_LIBRARIES})
 | 
			
		||||
  set(UBSAN_TEST_PARAMS
 | 
			
		||||
    ubsan_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
 | 
			
		||||
    )
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue