diff --git a/compiler-rt/cmake/config-ix.cmake b/compiler-rt/cmake/config-ix.cmake --- a/compiler-rt/cmake/config-ix.cmake +++ b/compiler-rt/cmake/config-ix.cmake @@ -203,6 +203,32 @@ 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) diff --git a/compiler-rt/test/asan/CMakeLists.txt b/compiler-rt/test/asan/CMakeLists.txt --- a/compiler-rt/test/asan/CMakeLists.txt +++ b/compiler-rt/test/asan/CMakeLists.txt @@ -95,7 +95,11 @@ 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) @@ -112,7 +116,10 @@ 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) diff --git a/compiler-rt/test/fuzzer/CMakeLists.txt b/compiler-rt/test/fuzzer/CMakeLists.txt --- a/compiler-rt/test/fuzzer/CMakeLists.txt +++ b/compiler-rt/test/fuzzer/CMakeLists.txt @@ -91,7 +91,11 @@ 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") diff --git a/compiler-rt/test/tsan/CMakeLists.txt b/compiler-rt/test/tsan/CMakeLists.txt --- a/compiler-rt/test/tsan/CMakeLists.txt +++ b/compiler-rt/test/tsan/CMakeLists.txt @@ -53,7 +53,11 @@ 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") @@ -68,7 +72,11 @@ 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") diff --git a/compiler-rt/test/ubsan/CMakeLists.txt b/compiler-rt/test/ubsan/CMakeLists.txt --- a/compiler-rt/test/ubsan/CMakeLists.txt +++ b/compiler-rt/test/ubsan/CMakeLists.txt @@ -113,10 +113,11 @@ 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()