forked from OSchip/llvm-project
[CompilerRT] Don't pass global compile test flags in non-standalone build
In a build with -DLLVM_ENABLE_LTO=Thin: $ ninja TSanitizer-x86_64-Test-Nolibc [1/1] Generating Sanitizer-x86_64-Test-Nolibc FAILED: projects/compiler-rt/lib/sanitizer_common/tests/Sanitizer-x86_64-Test-Nolibc sanitizer_nolibc_test_main.x86_64.o: file not recognized: file format not recognized because -flto=thin is getting passed to the clang_compile step. For non-standalone builds, global compilation flags shouldn't be passed to compiler-rt tests, only the flags the test specifies. Reviewed By: vitalybuka Differential Revision: https://reviews.llvm.org/D84466
This commit is contained in:
parent
46ebb619bf
commit
8b2fcc42b8
|
@ -70,29 +70,34 @@ function(clang_compile object_file source)
|
|||
if (TARGET CompilerRTUnitTestCheckCxx)
|
||||
list(APPEND SOURCE_DEPS CompilerRTUnitTestCheckCxx)
|
||||
endif()
|
||||
string(REGEX MATCH "[.](cc|cpp)$" is_cxx ${source_rpath})
|
||||
string(REGEX MATCH "[.](m|mm)$" is_objc ${source_rpath})
|
||||
if(is_cxx)
|
||||
string(REPLACE " " ";" global_flags "${CMAKE_CXX_FLAGS}")
|
||||
if(COMPILER_RT_STANDALONE_BUILD)
|
||||
# Only add global flags in standalone build.
|
||||
string(REGEX MATCH "[.](cc|cpp)$" is_cxx ${source_rpath})
|
||||
string(REGEX MATCH "[.](m|mm)$" is_objc ${source_rpath})
|
||||
if(is_cxx)
|
||||
string(REPLACE " " ";" global_flags "${CMAKE_CXX_FLAGS}")
|
||||
else()
|
||||
string(REPLACE " " ";" global_flags "${CMAKE_C_FLAGS}")
|
||||
endif()
|
||||
|
||||
if (MSVC)
|
||||
translate_msvc_cflags(global_flags "${global_flags}")
|
||||
endif()
|
||||
|
||||
if (APPLE)
|
||||
set(global_flags ${OSX_SYSROOT_FLAG} ${global_flags})
|
||||
endif()
|
||||
if (is_objc)
|
||||
list(APPEND global_flags -ObjC)
|
||||
endif()
|
||||
|
||||
# Ignore unknown warnings. CMAKE_CXX_FLAGS may contain GCC-specific options
|
||||
# which are not supported by Clang.
|
||||
list(APPEND global_flags -Wno-unknown-warning-option)
|
||||
set(compile_flags ${global_flags} ${SOURCE_CFLAGS})
|
||||
else()
|
||||
string(REPLACE " " ";" global_flags "${CMAKE_C_FLAGS}")
|
||||
set(compile_flags ${SOURCE_CFLAGS})
|
||||
endif()
|
||||
|
||||
if (MSVC)
|
||||
translate_msvc_cflags(global_flags "${global_flags}")
|
||||
endif()
|
||||
|
||||
if (APPLE)
|
||||
set(global_flags ${OSX_SYSROOT_FLAG} ${global_flags})
|
||||
endif()
|
||||
if (is_objc)
|
||||
list(APPEND global_flags -ObjC)
|
||||
endif()
|
||||
|
||||
# Ignore unknown warnings. CMAKE_CXX_FLAGS may contain GCC-specific options
|
||||
# which are not supported by Clang.
|
||||
list(APPEND global_flags -Wno-unknown-warning-option)
|
||||
set(compile_flags ${global_flags} ${SOURCE_CFLAGS})
|
||||
add_custom_command(
|
||||
OUTPUT ${object_file}
|
||||
COMMAND ${COMPILER_RT_TEST_COMPILER} ${compile_flags} -c
|
||||
|
|
Loading…
Reference in New Issue