[compiler-rt] r359305 - [CMake] Fix the value of `config.target_cflags` for non-macOS Apple
Dan Liew via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 26 06:22:39 PDT 2019
Author: delcypher
Date: Fri Apr 26 06:22:39 2019
New Revision: 359305
URL: http://llvm.org/viewvc/llvm-project?rev=359305&view=rev
Log:
[CMake] Fix the value of `config.target_cflags` for non-macOS Apple
platforms.
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.
rdar://problem/50124489
Differential Revision: https://reviews.llvm.org/D58578
Modified:
compiler-rt/trunk/cmake/config-ix.cmake
compiler-rt/trunk/test/asan/CMakeLists.txt
compiler-rt/trunk/test/fuzzer/CMakeLists.txt
compiler-rt/trunk/test/tsan/CMakeLists.txt
compiler-rt/trunk/test/ubsan/CMakeLists.txt
Modified: compiler-rt/trunk/cmake/config-ix.cmake
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/cmake/config-ix.cmake?rev=359305&r1=359304&r2=359305&view=diff
==============================================================================
--- compiler-rt/trunk/cmake/config-ix.cmake (original)
+++ compiler-rt/trunk/cmake/config-ix.cmake Fri Apr 26 06:22:39 2019
@@ -205,6 +205,32 @@ macro(get_test_cc_for_arch arch cc_out c
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)
Modified: compiler-rt/trunk/test/asan/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/CMakeLists.txt?rev=359305&r1=359304&r2=359305&view=diff
==============================================================================
--- compiler-rt/trunk/test/asan/CMakeLists.txt (original)
+++ compiler-rt/trunk/test/asan/CMakeLists.txt Fri Apr 26 06:22:39 2019
@@ -89,7 +89,11 @@ if(APPLE)
foreach(arch ${DARWIN_iossim_ARCHS})
set(ASAN_TEST_APPLE_PLATFORM "iossim")
set(ASAN_TEST_TARGET_ARCH ${arch})
- set(ASAN_TEST_TARGET_CFLAGS "-arch ${arch} -isysroot ${DARWIN_iossim_SYSROOT} ${COMPILER_RT_TEST_COMPILER_CFLAGS}")
+ get_test_cflags_for_apple_platform(
+ "${ASAN_TEST_APPLE_PLATFORM}"
+ "${ASAN_TEST_TARGET_ARCH}"
+ ASAN_TEST_TARGET_CFLAGS
+ )
set(ASAN_TEST_CONFIG_SUFFIX "-${arch}-${ASAN_TEST_APPLE_PLATFORM}")
get_bits_for_arch(${arch} ASAN_TEST_BITS)
string(TOUPPER ${arch} ARCH_UPPER_CASE)
@@ -106,7 +110,10 @@ if(APPLE)
foreach (arch ${DARWIN_ios_ARCHS})
set(ASAN_TEST_APPLE_PLATFORM "ios")
set(ASAN_TEST_TARGET_ARCH ${arch})
- set(ASAN_TEST_TARGET_CFLAGS "-arch ${arch} -isysroot ${DARWIN_ios_SYSROOT} ${COMPILER_RT_TEST_COMPILER_CFLAGS}")
+ get_test_cflags_for_apple_platform(
+ "${ASAN_TEST_APPLE_PLATFORM}"
+ "${arch}"
+ ASAN_TEST_TARGET_CFLAGS)
set(ASAN_TEST_CONFIG_SUFFIX "-${arch}-${ASAN_TEST_APPLE_PLATFORM}")
get_bits_for_arch(${arch} ASAN_TEST_BITS)
string(TOUPPER ${arch} ARCH_UPPER_CASE)
Modified: compiler-rt/trunk/test/fuzzer/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/fuzzer/CMakeLists.txt?rev=359305&r1=359304&r2=359305&view=diff
==============================================================================
--- compiler-rt/trunk/test/fuzzer/CMakeLists.txt (original)
+++ compiler-rt/trunk/test/fuzzer/CMakeLists.txt Fri Apr 26 06:22:39 2019
@@ -91,7 +91,11 @@ if (APPLE)
foreach(arch ${DARWIN_ios_ARCHS})
set(LIBFUZZER_TEST_APPLE_PLATFORM "ios")
set(LIBFUZZER_TEST_TARGET_ARCH ${arch})
- set(LIBFUZZER_TEST_FLAGS "-arch ${arch} -isysroot ${DARWIN_ios_SYSROOT} ${COMPILER_RT_TEST_COMPILER_CFLAGS}")
+ get_test_cflags_for_apple_platform(
+ "${LIBFUZZER_TEST_APPLE_PLATFORM}"
+ "${LIBFUZZER_TEST_TARGET_ARCH}"
+ LIBFUZZER_TEST_FLAGS
+ )
set(LIBFUZZER_TEST_CONFIG_SUFFIX "-${arch}-${LIBFUZZER_TEST_APPLE_PLATFORM}")
string(TOUPPER ${arch} ARCH_UPPER_CASE)
set(CONFIG_NAME "IOS${ARCH_UPPER_CASE}Config")
Modified: compiler-rt/trunk/test/tsan/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/tsan/CMakeLists.txt?rev=359305&r1=359304&r2=359305&view=diff
==============================================================================
--- compiler-rt/trunk/test/tsan/CMakeLists.txt (original)
+++ compiler-rt/trunk/test/tsan/CMakeLists.txt Fri Apr 26 06:22:39 2019
@@ -56,7 +56,11 @@ if(APPLE)
set(TSAN_TEST_APPLE_PLATFORM "iossim")
set(arch "x86_64")
set(TSAN_TEST_TARGET_ARCH ${arch})
- set(TSAN_TEST_TARGET_CFLAGS "-arch ${arch} -isysroot ${DARWIN_iossim_SYSROOT} ${COMPILER_RT_TEST_COMPILER_CFLAGS}")
+ get_test_cflags_for_apple_platform(
+ "${TSAN_TEST_APPLE_PLATFORM}"
+ "${TSAN_TEST_TARGET_ARCH}"
+ TSAN_TEST_TARGET_CFLAGS
+ )
set(TSAN_TEST_CONFIG_SUFFIX "-${arch}-${TSAN_TEST_APPLE_PLATFORM}")
string(TOUPPER ${arch} ARCH_UPPER_CASE)
set(CONFIG_NAME "IOSSim${ARCH_UPPER_CASE}Config")
@@ -71,7 +75,11 @@ if(APPLE)
set(TSAN_TEST_APPLE_PLATFORM "ios")
set(arch "arm64")
set(TSAN_TEST_TARGET_ARCH ${arch})
- set(TSAN_TEST_TARGET_CFLAGS "-arch ${arch} -isysroot ${DARWIN_ios_SYSROOT} ${COMPILER_RT_TEST_COMPILER_CFLAGS}")
+ get_test_cflags_for_apple_platform(
+ "${TSAN_TEST_APPLE_PLATFORM}"
+ "${TSAN_TEST_TARGET_ARCH}"
+ TSAN_TEST_TARGET_CFLAGS
+ )
set(TSAN_TEST_CONFIG_SUFFIX "-${arch}-${TSAN_TEST_APPLE_PLATFORM}")
string(TOUPPER ${arch} ARCH_UPPER_CASE)
set(CONFIG_NAME "IOS${ARCH_UPPER_CASE}Config")
Modified: compiler-rt/trunk/test/ubsan/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/ubsan/CMakeLists.txt?rev=359305&r1=359304&r2=359305&view=diff
==============================================================================
--- compiler-rt/trunk/test/ubsan/CMakeLists.txt (original)
+++ compiler-rt/trunk/test/ubsan/CMakeLists.txt Fri Apr 26 06:22:39 2019
@@ -113,10 +113,11 @@ if(APPLE)
endif()
foreach(platform ${UBSAN_APPLE_PLATFORMS})
foreach(arch ${DARWIN_${platform}_ARCHS})
- get_target_flags_for_arch(${arch} UBSAN_TEST_TARGET_ARCH_FLAGS_AS_LIST)
- string(REPLACE ";" " " UBSAN_TEST_TARGET_ARCH_FLAGS "${UBSAN_TEST_TARGET_ARCH_FLAGS_AS_LIST}")
- set(UBSAN_TEST_TARGET_CFLAGS
- "${UBSAN_TEST_TARGET_ARCH_FLAGS} -isysroot ${DARWIN_${platform}_SYSROOT}")
+ get_test_cflags_for_apple_platform(
+ "${platform}"
+ "${arch}"
+ UBSAN_TEST_TARGET_CFLAGS
+ )
if (";${UBSAN_SUPPORTED_ARCH};" MATCHES ";${arch};")
add_ubsan_device_testsuite("Standalone" ubsan ${platform} ${arch})
endif()
More information about the llvm-commits
mailing list