diff options
author | Hans Wennborg <hans@hanshq.net> | 2019-06-19 09:09:39 +0000 |
---|---|---|
committer | Hans Wennborg <hans@hanshq.net> | 2019-06-19 09:09:39 +0000 |
commit | 8be6b779912a1d83a6917cf7349b12c6f07feed1 (patch) | |
tree | 7047fabddf2fae9c9bb7eb6f72d9c57ac0d9e5b7 /cmake | |
parent | 4503b71259974a31ea8103a681dbd894a850c883 (diff) | |
download | compiler-rt-8be6b779912a1d83a6917cf7349b12c6f07feed1.tar.gz |
Revert r363633 "[CMake] Fix the value of `config.target_cflags` for non-macOS Apple platforms. Attempt #2."
This caused Chromium's clang package to stop building, see comment on
https://reviews.llvm.org/D61242 for details.
> Summary:
> The main problem here is that `-*-version_min=` was not being passed to
> the compiler when building test cases. This can cause problems when
> testing on devices running older OSs because Clang would previously
> assume the minimum deployment target is the the latest OS in the SDK
> which could be much newer than what the device is running.
>
> Previously the generated value looked like this:
>
> `-arch arm64 -isysroot
> <path_to_xcode>/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.1.sdk`
>
> With this change it now looks like:
>
> `-arch arm64 -stdlib=libc++ -miphoneos-version-min=8.0 -isysroot
> <path_to_xcode>/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.1.sdk`
>
> This mirrors the setting of `config.target_cflags` on macOS.
>
> This change is made for ASan, LibFuzzer, TSan, and UBSan.
>
> To implement this a new `get_test_cflags_for_apple_platform()` function
> has been added that when given an Apple platform name and architecture
> returns a string containing the C compiler flags to use when building
> tests. This also calls a new helper function `is_valid_apple_platform()`
> that validates Apple platform names.
>
> This is the second attempt at landing the patch. The first attempt (r359305)
> had to be reverted (r359327) due to a buildbot failure. The problem was
> that calling `get_test_cflags_for_apple_platform()` can trigger a CMake
> error if the provided architecture is not supported by the current
> CMake configuration. Previously, this could be triggered by passing
> `-DCOMPILER_RT_ENABLE_IOS=OFF` to CMake. The root cause is that we were
> generating test configurations for a list of architectures without
> checking if the relevant Sanitizer actually supported that architecture.
> We now intersect the list of architectures for an Apple platform
> with `<SANITIZER>_SUPPORTED_ARCH` (where `<SANITIZER>` is a Sanitizer
> name) to iterate through the correct list of architectures.
>
> rdar://problem/50124489
>
> Reviewers: kubamracek, yln, vsk, juliehockett, phosek
>
> Subscribers: mgorny, javed.absar, kristof.beyls, #sanitizers, llvm-commits
>
> Tags: #llvm, #sanitizers
>
> Differential Revision: https://reviews.llvm.org/D61242
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@363779 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/config-ix.cmake | 26 |
1 files changed, 0 insertions, 26 deletions
diff --git a/cmake/config-ix.cmake b/cmake/config-ix.cmake index bfbd7970f..166b8ce08 100644 --- a/cmake/config-ix.cmake +++ b/cmake/config-ix.cmake @@ -208,32 +208,6 @@ macro(get_test_cc_for_arch arch cc_out cflags_out) endif() endmacro() -# Returns CFLAGS that should be used to run tests for the -# specific apple platform and architecture. -function(get_test_cflags_for_apple_platform platform arch cflags_out) - is_valid_apple_platform("${platform}" is_valid_platform) - if (NOT is_valid_platform) - message(FATAL_ERROR "\"${platform}\" is not a valid apple platform") - endif() - set(test_cflags "") - get_target_flags_for_arch(${arch} test_cflags) - list(APPEND test_cflags ${DARWIN_${platform}_CFLAGS}) - string(REPLACE ";" " " test_cflags_str "${test_cflags}") - string(APPEND test_cflags_str "${COMPILER_RT_TEST_COMPILER_CFLAGS}") - set(${cflags_out} "${test_cflags_str}" PARENT_SCOPE) -endfunction() - -function(is_valid_apple_platform platform is_valid_out) - set(is_valid FALSE) - if ("${platform}" STREQUAL "") - message(FATAL_ERROR "platform cannot be empty") - endif() - if ("${platform}" MATCHES "^(osx|((ios|watchos|tvos)(sim)?))$") - set(is_valid TRUE) - endif() - set(${is_valid_out} ${is_valid} PARENT_SCOPE) -endfunction() - set(ARM64 aarch64) set(ARM32 arm armhf) set(HEXAGON hexagon) |