[compiler-rt] compiler-rt: Stop using APPLE cmake variable (PR #203357)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 11 13:08:02 PDT 2026


https://github.com/arsenm updated https://github.com/llvm/llvm-project/pull/203357

>From 569280f1af8dd0aff9203cce260145a30da87951 Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Thu, 11 Jun 2026 12:51:24 +0200
Subject: [PATCH 1/2] compiler-rt: Stop using APPLE cmake variable

Use a variable derived from the target triple instead.
This is a partial fix for cross compiling the GPU runtimes
on macos. Previously on mac hosts, the build system would go
down completely wrong paths. This improves the situation by
moving the failures to compilation pulling in host flags which
shouldn't be forwarded.

Despite the cmake documentation claiming the APPLE constant
is "Set to True when the target system is an Apple platform",
this appears to be true when the host is apple. Not sure if this
is worth reporting as a cmake bug, or if it's an artifact of some
runtimes build specifics. Change to using a new variable computed
from the target triple. Presumably the same bug exists for the various
WIN32 and ANDROID checks around, there are just fewer of them.
---
 compiler-rt/CMakeLists.txt                     | 16 ++++++++--------
 compiler-rt/cmake/Modules/AddCompilerRT.cmake  | 18 +++++++++---------
 .../cmake/Modules/AllSupportedArchDefs.cmake   |  6 +++---
 .../cmake/Modules/CompilerRTCompile.cmake      |  4 ++--
 .../cmake/Modules/CompilerRTUtils.cmake        | 10 ++++++++--
 compiler-rt/cmake/base-config-ix.cmake         | 17 ++++++++---------
 compiler-rt/cmake/builtin-config-ix.cmake      |  4 ++--
 compiler-rt/cmake/config-ix.cmake              | 12 ++++++------
 compiler-rt/cmake/crt-config-ix.cmake          |  2 +-
 compiler-rt/lib/asan/CMakeLists.txt            |  8 ++++----
 compiler-rt/lib/asan/tests/CMakeLists.txt      | 12 ++++++------
 compiler-rt/lib/asan_abi/CMakeLists.txt        |  2 +-
 compiler-rt/lib/builtins/CMakeLists.txt        | 14 +++++++-------
 compiler-rt/lib/fuzzer/tests/CMakeLists.txt    |  6 +++---
 .../lib/interception/tests/CMakeLists.txt      |  6 +++---
 compiler-rt/lib/lsan/CMakeLists.txt            |  2 +-
 compiler-rt/lib/nsan/CMakeLists.txt            |  4 ++--
 compiler-rt/lib/orc/CMakeLists.txt             |  2 +-
 compiler-rt/lib/orc/tests/CMakeLists.txt       |  6 +++---
 compiler-rt/lib/profile/CMakeLists.txt         |  2 +-
 compiler-rt/lib/rtsan/CMakeLists.txt           |  4 ++--
 compiler-rt/lib/rtsan/tests/CMakeLists.txt     |  6 +++---
 .../lib/sanitizer_common/CMakeLists.txt        |  2 +-
 .../lib/sanitizer_common/tests/CMakeLists.txt  |  8 ++++----
 compiler-rt/lib/stats/CMakeLists.txt           |  2 +-
 compiler-rt/lib/tsan/dd/CMakeLists.txt         |  2 +-
 compiler-rt/lib/tsan/rtl/CMakeLists.txt        |  4 ++--
 compiler-rt/lib/tsan/tests/CMakeLists.txt      |  2 +-
 compiler-rt/lib/tysan/CMakeLists.txt           |  2 +-
 compiler-rt/lib/ubsan/CMakeLists.txt           |  4 ++--
 compiler-rt/lib/ubsan_minimal/CMakeLists.txt   |  2 +-
 compiler-rt/lib/xray/CMakeLists.txt            |  2 +-
 compiler-rt/lib/xray/tests/CMakeLists.txt      |  8 ++++----
 compiler-rt/test/asan/CMakeLists.txt           |  8 ++++----
 compiler-rt/test/asan_abi/CMakeLists.txt       |  4 ++--
 compiler-rt/test/builtins/CMakeLists.txt       |  6 +++---
 compiler-rt/test/cfi/CMakeLists.txt            |  8 ++++----
 compiler-rt/test/dfsan/CMakeLists.txt          |  2 +-
 compiler-rt/test/fuzzer/CMakeLists.txt         |  6 +++---
 compiler-rt/test/interception/CMakeLists.txt   |  2 +-
 compiler-rt/test/lsan/CMakeLists.txt           |  2 +-
 compiler-rt/test/msan/CMakeLists.txt           |  4 ++--
 compiler-rt/test/profile/CMakeLists.txt        |  2 +-
 compiler-rt/test/rtsan/CMakeLists.txt          |  2 +-
 compiler-rt/test/safestack/CMakeLists.txt      |  2 +-
 .../test/sanitizer_common/CMakeLists.txt       |  4 ++--
 compiler-rt/test/tsan/CMakeLists.txt           |  6 +++---
 compiler-rt/test/tysan/CMakeLists.txt          |  2 +-
 compiler-rt/test/ubsan/CMakeLists.txt          | 10 +++++-----
 compiler-rt/test/ubsan_minimal/CMakeLists.txt  |  2 +-
 50 files changed, 139 insertions(+), 134 deletions(-)

diff --git a/compiler-rt/CMakeLists.txt b/compiler-rt/CMakeLists.txt
index 115d953e456c9..732e7d5271d3b 100644
--- a/compiler-rt/CMakeLists.txt
+++ b/compiler-rt/CMakeLists.txt
@@ -141,7 +141,7 @@ if (COMPILER_RT_STANDALONE_BUILD)
   endif()
 
   # Ensure that fat libraries are built correctly on Darwin
-  if(APPLE)
+  if(COMPILER_RT_TARGET_APPLE)
     include(UseLibtool)
   endif()
 
@@ -193,7 +193,7 @@ option(COMPILER_RT_INTERCEPT_LIBDISPATCH
   "Support interception of libdispatch (GCD). Requires '-fblocks'" OFF)
 option(COMPILER_RT_LIBDISPATCH_INSTALL_PATH
   "Specify if libdispatch is installed in a custom location" "")
-if (COMPILER_RT_INTERCEPT_LIBDISPATCH AND NOT APPLE)
+if (COMPILER_RT_INTERCEPT_LIBDISPATCH AND NOT COMPILER_RT_TARGET_APPLE)
   set(COMPILER_RT_LIBDISPATCH_CFLAGS -fblocks)
   set(COMPILER_RT_TEST_LIBDISPATCH_CFLAGS)
   if (COMPILER_RT_LIBDISPATCH_INSTALL_PATH)
@@ -204,12 +204,12 @@ if (COMPILER_RT_INTERCEPT_LIBDISPATCH AND NOT APPLE)
   endif()
   list(APPEND COMPILER_RT_TEST_LIBDISPATCH_CFLAGS -lBlocksRuntime -ldispatch)
 endif()
-if (APPLE) # Always enable on Apple platforms.
+if (COMPILER_RT_TARGET_APPLE) # Always enable on Apple platforms.
   set(COMPILER_RT_INTERCEPT_LIBDISPATCH ON)
 endif()
 pythonize_bool(COMPILER_RT_INTERCEPT_LIBDISPATCH)
 
-if(APPLE AND SANITIZER_MIN_OSX_VERSION AND SANITIZER_MIN_OSX_VERSION VERSION_LESS "10.9")
+if(COMPILER_RT_TARGET_APPLE AND SANITIZER_MIN_OSX_VERSION AND SANITIZER_MIN_OSX_VERSION VERSION_LESS "10.9")
   # Mac OS X prior to 10.9 had problems with exporting symbols from
   # libc++/libc++abi.
   set(cxxabi_supported OFF)
@@ -231,7 +231,7 @@ macro(handle_default_cxx_lib var)
     set(${var}_LIBNAME "${CMAKE_MATCH_1}")
     set(${var}_SYSTEM 1)
   elseif (${var} STREQUAL "default")
-    if (APPLE OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD" OR CMAKE_SYSTEM_NAME MATCHES "OpenBSD")
+    if (COMPILER_RT_TARGET_APPLE OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD" OR CMAKE_SYSTEM_NAME MATCHES "OpenBSD")
       set(${var}_LIBNAME "libc++")
       set(${var}_SYSTEM 1)
     elseif (FUCHSIA)
@@ -398,7 +398,7 @@ if(NOT WIN32)
 endif()
 append_list_if(COMPILER_RT_HAS_FNO_BUILTIN_FLAG -fno-builtin SANITIZER_COMMON_CFLAGS)
 append_list_if(COMPILER_RT_HAS_FNO_EXCEPTIONS_FLAG -fno-exceptions SANITIZER_COMMON_CFLAGS)
-if(NOT COMPILER_RT_DEBUG AND NOT APPLE)
+if(NOT COMPILER_RT_DEBUG AND NOT COMPILER_RT_TARGET_APPLE)
   append_list_if(COMPILER_RT_HAS_FOMIT_FRAME_POINTER_FLAG -fomit-frame-pointer SANITIZER_COMMON_CFLAGS)
 endif()
 append_list_if(COMPILER_RT_HAS_FUNWIND_TABLES_FLAG -funwind-tables SANITIZER_COMMON_CFLAGS)
@@ -522,7 +522,7 @@ endif()
 # in cflags during testing. This fixes the compiler/linker version mismatch
 # issue when running a clang built with a newer Xcode in an older Xcode
 set(COMPILER_RT_DARWIN_LINKER_VERSION)
-if (APPLE AND NOT CMAKE_LINKER MATCHES ".*lld.*")
+if (COMPILER_RT_TARGET_APPLE AND NOT CMAKE_LINKER MATCHES ".*lld.*")
   get_darwin_linker_version(COMPILER_RT_DARWIN_LINKER_VERSION)
   message(STATUS "Host linker version: ${COMPILER_RT_DARWIN_LINKER_VERSION}")
 endif()
@@ -540,7 +540,7 @@ if(MSVC)
     string(REGEX REPLACE "(^| )/Z[i7I]($| )" " /Z7 "
            "${var_to_update}" "${${var_to_update}}")
   endforeach()
-elseif("${COMPILER_RT_DEFAULT_TARGET_TRIPLE}" MATCHES "apple")
+elseif(COMPILER_RT_TARGET_APPLE)
   # On Apple platforms use full debug info (i.e. not `-gline-tables-only`)
   # for all build types so that the runtime can be debugged.
   if(NOT COMPILER_RT_HAS_G_FLAG)
diff --git a/compiler-rt/cmake/Modules/AddCompilerRT.cmake b/compiler-rt/cmake/Modules/AddCompilerRT.cmake
index 2ae73dfb433e2..531aa732e35af 100644
--- a/compiler-rt/cmake/Modules/AddCompilerRT.cmake
+++ b/compiler-rt/cmake/Modules/AddCompilerRT.cmake
@@ -39,7 +39,7 @@ function(add_compiler_rt_object_libraries name)
   cmake_parse_arguments(LIB "" "" "OS;ARCHS;SOURCES;CFLAGS;DEFS;DEPS;ADDITIONAL_HEADERS"
     ${ARGN})
   set(libnames)
-  if(APPLE)
+  if(COMPILER_RT_TARGET_APPLE)
     foreach(os ${LIB_OS})
       set(libname "${name}.${os}")
       set(libnames ${libnames} ${libname})
@@ -73,12 +73,12 @@ function(add_compiler_rt_object_libraries name)
 
     # Strip out -msse3 if this isn't macOS.
     set(target_flags ${LIB_CFLAGS})
-    if(APPLE AND NOT "${libname}" MATCHES ".*\.osx.*")
+    if(COMPILER_RT_TARGET_APPLE AND NOT "${libname}" MATCHES ".*\.osx.*")
       list(REMOVE_ITEM target_flags "-msse3")
     endif()
 
     # Build the macOS sanitizers with Mac Catalyst support.
-    if (APPLE AND
+    if (COMPILER_RT_TARGET_APPLE AND
         "${COMPILER_RT_ENABLE_MACCATALYST}" AND
         "${libname}" MATCHES ".*\.osx.*")
       foreach(arch ${LIB_ARCHS_${libname}})
@@ -92,7 +92,7 @@ function(add_compiler_rt_object_libraries name)
     set_property(TARGET ${libname} APPEND PROPERTY
       COMPILE_DEFINITIONS ${LIB_DEFS})
     set_target_properties(${libname} PROPERTIES FOLDER "Compiler-RT/Libraries")
-    if(APPLE)
+    if(COMPILER_RT_TARGET_APPLE)
       set_target_properties(${libname} PROPERTIES
         OSX_ARCHITECTURES "${LIB_ARCHS_${libname}}")
     endif()
@@ -219,7 +219,7 @@ function(add_compiler_rt_runtime name type)
     )
   endif()
 
-  if(APPLE)
+  if(COMPILER_RT_TARGET_APPLE)
     foreach(os ${LIB_OS})
       # Strip out -msse3 if this isn't macOS.
       list(LENGTH LIB_CFLAGS HAS_EXTRA_CFLAGS)
@@ -395,7 +395,7 @@ function(add_compiler_rt_runtime name type)
       target_link_libraries(${libname} PRIVATE ${builtins_${libname}})
     endif()
     if(${type} STREQUAL "SHARED")
-      if(APPLE OR WIN32)
+      if(COMPILER_RT_TARGET_APPLE OR WIN32)
         set_property(TARGET ${libname} PROPERTY BUILD_WITH_INSTALL_RPATH ON)
       endif()
       if(WIN32 AND NOT CYGWIN AND NOT MINGW)
@@ -406,7 +406,7 @@ function(add_compiler_rt_runtime name type)
         endif()
       endif()
       find_program(CODESIGN codesign)
-      if (APPLE AND NOT CMAKE_LINKER MATCHES ".*lld.*" AND CODESIGN)
+      if (COMPILER_RT_TARGET_APPLE AND NOT CMAKE_LINKER MATCHES ".*lld.*" AND CODESIGN)
         # Apple's linker signs the resulting dylib with an ad-hoc code signature in
         # most situations, except:
         # 1. Versions of ld64 prior to ld64-609 in Xcode 12 predate this behavior.
@@ -445,7 +445,7 @@ function(add_compiler_rt_runtime name type)
     endif()
     add_compiler_rt_install_targets(${libname} ${parent_target_arg})
 
-    if(APPLE)
+    if(COMPILER_RT_TARGET_APPLE)
       set_target_properties(${libname} PROPERTIES
       OSX_ARCHITECTURES "${LIB_ARCHS_${libname}}")
     endif()
@@ -797,7 +797,7 @@ function(rt_externalize_debuginfo name)
     set(strip_command COMMAND xcrun strip -Sl $<TARGET_FILE:${name}>)
   endif()
 
-  if(APPLE)
+  if(COMPILER_RT_TARGET_APPLE)
     if(CMAKE_CXX_FLAGS MATCHES "-flto"
       OR CMAKE_CXX_FLAGS_${uppercase_CMAKE_BUILD_TYPE} MATCHES "-flto")
 
diff --git a/compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake b/compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
index a535cf9e3a8da..aaec5f7979db4 100644
--- a/compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
+++ b/compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
@@ -31,7 +31,7 @@ if (COMPILER_RT_PROFILE_BAREMETAL)
   )
 endif()
 
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   set(ARM64 arm64)
   set(ARM32 armv7 armv7s armv7k)
   set(ARM64_32 arm64_32)
@@ -79,7 +79,7 @@ else()
 endif()
 
 set(ALL_GWP_ASAN_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${HEXAGON})
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   set(ALL_LSAN_SUPPORTED_ARCH ${X86} ${X86_64} ${MIPS64} ${ARM64})
 else()
   set(ALL_LSAN_SUPPORTED_ARCH ${X86} ${X86_64} ${MIPS64} ${ARM64} ${ARM32}
@@ -118,7 +118,7 @@ set(ALL_CFI_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${MIPS64}
     ${HEXAGON} ${LOONGARCH64})
 set(ALL_SCUDO_STANDALONE_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64}
     ${MIPS32} ${MIPS64} ${PPC64} ${HEXAGON} ${LOONGARCH64} ${RISCV64} ${S390X})
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
 set(ALL_XRAY_SUPPORTED_ARCH ${X86_64} ${ARM64})
 else()
 set(ALL_XRAY_SUPPORTED_ARCH ${X86_64} ${ARM32} ${ARM64} ${MIPS32} ${MIPS64}
diff --git a/compiler-rt/cmake/Modules/CompilerRTCompile.cmake b/compiler-rt/cmake/Modules/CompilerRTCompile.cmake
index aa50f71ce472a..72d19ca950e2b 100644
--- a/compiler-rt/cmake/Modules/CompilerRTCompile.cmake
+++ b/compiler-rt/cmake/Modules/CompilerRTCompile.cmake
@@ -89,7 +89,7 @@ function(clang_compile object_file source)
       translate_msvc_cflags(global_flags "${global_flags}")
     endif()
 
-    if (APPLE)
+    if (COMPILER_RT_TARGET_APPLE)
       set(global_flags ${OSX_SYSROOT_FLAG} ${global_flags})
     endif()
 
@@ -135,7 +135,7 @@ endfunction()
 # it.
 # On other platforms, this is currently not an issue.
 macro(clang_compiler_add_cxx_check)
-  if (APPLE)
+  if (COMPILER_RT_TARGET_APPLE)
     set(CMD
       "echo '#include <iostream>' | ${COMPILER_RT_TEST_COMPILER} ${OSX_SYSROOT_FLAG} -E -x c++ - > /dev/null"
       "if [ $? != 0 ] "
diff --git a/compiler-rt/cmake/Modules/CompilerRTUtils.cmake b/compiler-rt/cmake/Modules/CompilerRTUtils.cmake
index 75216ed704bce..eb83b511164b1 100644
--- a/compiler-rt/cmake/Modules/CompilerRTUtils.cmake
+++ b/compiler-rt/cmake/Modules/CompilerRTUtils.cmake
@@ -425,6 +425,12 @@ macro(construct_compiler_rt_default_triple)
     set(COMPILER_RT_TARGET_AMDGPU FALSE)
   endif()
 
+  if("${COMPILER_RT_DEFAULT_TARGET_TRIPLE}" MATCHES "apple")
+    set(COMPILER_RT_TARGET_APPLE TRUE)
+  else()
+    set(COMPILER_RT_TARGET_APPLE FALSE)
+  endif()
+
   # If we are directly targeting a GPU we need to check that the compiler is
   # compatible and pass some default arguments.
   if(COMPILER_RT_DEFAULT_TARGET_ONLY)
@@ -501,7 +507,7 @@ endfunction()
 
 function(get_compiler_rt_install_dir arch install_dir)
   # TODO: Use RUNTIMES_INSTALL_RESOURCE_LIB_PATH instead
-  if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
+  if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT COMPILER_RT_TARGET_APPLE)
     get_compiler_rt_target(${arch} target)
     set(${install_dir} ${COMPILER_RT_INSTALL_LIBRARY_DIR}/${target} PARENT_SCOPE)
   else()
@@ -511,7 +517,7 @@ endfunction()
 
 function(get_compiler_rt_output_dir arch output_dir)
   # TODO: Use RUNTIMES_OUTPUT_RESOURCE_LIB_DIR instead
-  if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
+  if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT COMPILER_RT_TARGET_APPLE)
     get_compiler_rt_target(${arch} target)
     set(${output_dir} ${COMPILER_RT_OUTPUT_LIBRARY_DIR}/${target} PARENT_SCOPE)
   else()
diff --git a/compiler-rt/cmake/base-config-ix.cmake b/compiler-rt/cmake/base-config-ix.cmake
index 1b66dec9a6c03..eae8050792402 100644
--- a/compiler-rt/cmake/base-config-ix.cmake
+++ b/compiler-rt/cmake/base-config-ix.cmake
@@ -123,13 +123,13 @@ if(NOT DEFINED COMPILER_RT_OS_DIR)
 endif()
 
 # TODO: Use common runtimes infrastructure for output and install paths
-if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
+if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT COMPILER_RT_TARGET_APPLE)
   set(COMPILER_RT_OUTPUT_LIBRARY_DIR
     ${COMPILER_RT_OUTPUT_DIR}/lib)
   extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" lib)
   set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH
     "Path where built compiler-rt libraries should be installed.")
-else(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
+else(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT COMPILER_RT_TARGET_APPLE)
   set(COMPILER_RT_OUTPUT_LIBRARY_DIR
     ${COMPILER_RT_OUTPUT_DIR}/lib/${COMPILER_RT_OS_DIR})
   extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "lib/${COMPILER_RT_OS_DIR}")
@@ -146,7 +146,7 @@ extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_
 set(COMPILER_RT_INSTALL_DATA_DIR "${default_install_path}" CACHE PATH
   "Path where compiler-rt data files should be installed.")
 
-if(APPLE)
+macro(detect_darwin_sdk)
   # On Darwin if /usr/include/c++ doesn't exist, the user probably has Xcode but
   # not the command line tools (or is using macOS 10.14 or newer). If this is
   # the case, we need to find the OS X sysroot to pass to clang.
@@ -186,8 +186,9 @@ if(APPLE)
   option(COMPILER_RT_ENABLE_WATCHOS "Enable building for watchOS - Experimental" Off)
   option(COMPILER_RT_ENABLE_TVOS "Enable building for tvOS - Experimental" Off)
   option(COMPILER_RT_ENABLE_XROS "Enable building for xrOS - Experimental" Off)
+endmacro()
 
-else()
+if(NOT COMPILER_RT_TARGET_APPLE)
   option(COMPILER_RT_DEFAULT_TARGET_ONLY "Build builtins only for the default target" Off)
 endif()
 
@@ -201,10 +202,8 @@ if(WIN32 AND NOT MINGW AND NOT CYGWIN)
 endif()
 
 macro(test_targets)
-  if("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "amdgpu|amdgcn")
-    set(COMPILER_RT_TARGET_AMDGPU TRUE)
-  else()
-    set(COMPILER_RT_TARGET_AMDGPU FALSE)
+  if(COMPILER_RT_TARGET_APPLE)
+    detect_darwin_sdk()
   endif()
 
   # Find and run MSVC (not clang-cl) and get its version. This will tell clang-cl
@@ -235,7 +234,7 @@ macro(test_targets)
     # Examine compiler output to determine target architecture.
     detect_target_arch()
     set(COMPILER_RT_OS_SUFFIX "-android")
-  elseif(NOT APPLE) # Supported archs for Apple platforms are generated later
+  elseif(NOT COMPILER_RT_TARGET_APPLE) # Supported archs for Apple platforms are generated later
     if(COMPILER_RT_DEFAULT_TARGET_ONLY)
       add_default_target_arch(${COMPILER_RT_DEFAULT_TARGET_ARCH})
     elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "i[2-6]86|x86|amd64")
diff --git a/compiler-rt/cmake/builtin-config-ix.cmake b/compiler-rt/cmake/builtin-config-ix.cmake
index 07955f3340d0a..02416800b21b5 100644
--- a/compiler-rt/cmake/builtin-config-ix.cmake
+++ b/compiler-rt/cmake/builtin-config-ix.cmake
@@ -101,7 +101,7 @@ set(WASM64 wasm64)
 set(VE ve)
 set(M68K m68k)
 
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   set(ARM64 arm64 arm64e)
   set(ARM32 armv7 armv7k armv7s)
   set(X86_64 x86_64 x86_64h)
@@ -116,7 +116,7 @@ set(ALL_BUILTIN_SUPPORTED_ARCH
 include(CompilerRTUtils)
 include(CompilerRTDarwinUtils)
 
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
 
   find_darwin_sdk_dir(DARWIN_osx_SYSROOT macosx)
   if(COMPILER_RT_ENABLE_IOS)
diff --git a/compiler-rt/cmake/config-ix.cmake b/compiler-rt/cmake/config-ix.cmake
index 083f1c98d0f16..eedf709926a7f 100644
--- a/compiler-rt/cmake/config-ix.cmake
+++ b/compiler-rt/cmake/config-ix.cmake
@@ -227,7 +227,7 @@ if(COMPILER_RT_HAS_GNU_VERSION_SCRIPT_COMPAT)
 endif()
 llvm_check_compiler_linker_flag(C "${VERS_OPTION}" COMPILER_RT_HAS_VERSION_SCRIPT)
 
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   llvm_check_compiler_linker_flag(C "-Wl,-mac_public_arm64e" COMPILER_RT_HAS_MAC_PUBLIC_ARM64E)
 endif()
 
@@ -265,7 +265,7 @@ function(get_target_flags_for_arch arch out_var)
   if(ARCH_INDEX EQUAL -1)
     message(FATAL_ERROR "Unsupported architecture: ${arch}")
   else()
-    if (NOT APPLE)
+    if (NOT COMPILER_RT_TARGET_APPLE)
       set(${out_var} ${TARGET_${arch}_CFLAGS} PARENT_SCOPE)
     else()
       # This is only called in constructing cflags for tests executing on the
@@ -309,14 +309,14 @@ macro(get_test_cc_for_arch arch cc_out cflags_out)
   if (NOT ${ARGC} EQUAL 3)
     message(FATAL_ERROR "got too many args. expected 3, got ${ARGC} (namely: ${ARGV})")
   endif()
-  if(ANDROID OR (NOT APPLE AND ${arch} MATCHES "arm|aarch64|riscv32|riscv64"))
+  if(ANDROID OR (NOT COMPILER_RT_TARGET_APPLE AND ${arch} MATCHES "arm|aarch64|riscv32|riscv64"))
     # This is only true if we are cross-compiling.
     # Build all tests with host compiler and use host tools.
     set(${cc_out} ${COMPILER_RT_TEST_COMPILER})
     set(${cflags_out} ${COMPILER_RT_TEST_COMPILER_CFLAGS})
   else()
     get_target_flags_for_arch(${arch} ${cflags_out})
-    if(APPLE)
+    if(COMPILER_RT_TARGET_APPLE)
       list(APPEND ${cflags_out} ${DARWIN_osx_CFLAGS})
     endif()
     string(REPLACE ";" " " ${cflags_out} "${${cflags_out}}")
@@ -416,7 +416,7 @@ endfunction()
 
 include(AllSupportedArchDefs)
 
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   include(CompilerRTDarwinUtils)
 
   find_darwin_sdk_dir(DARWIN_osx_SYSROOT macosx)
@@ -785,7 +785,7 @@ else()
   set(COMPILER_RT_HAS_INTERCEPTION FALSE)
 endif()
 
-if (COMPILER_RT_HAS_SANITIZER_COMMON AND ASAN_SUPPORTED_ARCH AND APPLE)
+if (COMPILER_RT_HAS_SANITIZER_COMMON AND ASAN_SUPPORTED_ARCH AND COMPILER_RT_TARGET_APPLE)
   set(COMPILER_RT_HAS_ASAN_ABI TRUE)
 else()
   set(COMPILER_RT_HAS_ASAN_ABI FALSE)
diff --git a/compiler-rt/cmake/crt-config-ix.cmake b/compiler-rt/cmake/crt-config-ix.cmake
index ebc7d671e74ee..248381f163f93 100644
--- a/compiler-rt/cmake/crt-config-ix.cmake
+++ b/compiler-rt/cmake/crt-config-ix.cmake
@@ -38,7 +38,7 @@ set(ALL_CRT_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${PPC32}
 
 include(CompilerRTUtils)
 
-if(NOT APPLE)
+if(NOT COMPILER_RT_TARGET_APPLE)
   if(COMPILER_RT_CRT_STANDALONE_BUILD)
     test_targets()
   endif()
diff --git a/compiler-rt/lib/asan/CMakeLists.txt b/compiler-rt/lib/asan/CMakeLists.txt
index 6d25cdc367742..1adc296666db6 100644
--- a/compiler-rt/lib/asan/CMakeLists.txt
+++ b/compiler-rt/lib/asan/CMakeLists.txt
@@ -47,7 +47,7 @@ if(WIN32)
     )
 endif()
 
-if (NOT WIN32 AND NOT APPLE)
+if (NOT WIN32 AND NOT COMPILER_RT_TARGET_APPLE)
   list(APPEND ASAN_SOURCES
     asan_interceptors_vfork.S
     )
@@ -61,7 +61,7 @@ set(ASAN_STATIC_SOURCES
   asan_rtl_static.cpp
   )
 
-if ("x86_64" IN_LIST ASAN_SUPPORTED_ARCH AND NOT WIN32 AND NOT APPLE)
+if ("x86_64" IN_LIST ASAN_SUPPORTED_ARCH AND NOT WIN32 AND NOT COMPILER_RT_TARGET_APPLE)
   list(APPEND ASAN_STATIC_SOURCES
     asan_rtl_x86_64.S
   )
@@ -235,7 +235,7 @@ add_compiler_rt_object_libraries(RTAsan_dynamic_cxx
   DEFS ${ASAN_DYNAMIC_DEFINITIONS}
   DEPS ${ASAN_CXX_DEPS})
 
-if(NOT APPLE)
+if(NOT COMPILER_RT_TARGET_APPLE)
   add_compiler_rt_object_libraries(RTAsan
     ARCHS ${ASAN_SUPPORTED_ARCH}
     SOURCES ${ASAN_SOURCES}
@@ -273,7 +273,7 @@ endif()
 # Build ASan runtimes shipped with Clang.
 add_compiler_rt_component(asan)
 
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   add_weak_symbols("asan" WEAK_SYMBOL_LINK_FLAGS)
   add_weak_symbols("lsan" WEAK_SYMBOL_LINK_FLAGS)
   add_weak_symbols("ubsan" WEAK_SYMBOL_LINK_FLAGS)
diff --git a/compiler-rt/lib/asan/tests/CMakeLists.txt b/compiler-rt/lib/asan/tests/CMakeLists.txt
index 6d88c96a23bbc..12bd120963ce0 100644
--- a/compiler-rt/lib/asan/tests/CMakeLists.txt
+++ b/compiler-rt/lib/asan/tests/CMakeLists.txt
@@ -60,7 +60,7 @@ list(APPEND ASAN_UNITTEST_COMMON_CFLAGS
   -DASAN_UAR=0
   )
 
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   list(APPEND ASAN_UNITTEST_COMMON_CFLAGS ${DARWIN_osx_CFLAGS})
   list(APPEND ASAN_UNITTEST_COMMON_LINK_FLAGS ${DARWIN_osx_LINK_FLAGS})
 
@@ -86,7 +86,7 @@ if(CMAKE_SYSTEM MATCHES "FreeBSD-9.2-RELEASE")
 endif()
 
 # Unit tests on Mac depend on Foundation.
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   list(APPEND ASAN_UNITTEST_COMMON_LINK_FLAGS -framework Foundation)
 endif()
 if(ANDROID)
@@ -105,7 +105,7 @@ set(ASAN_UNITTEST_INSTRUMENTED_LIBS)
 
 set(ASAN_UNITTEST_NOINST_LINK_FLAGS ${ASAN_UNITTEST_COMMON_LINK_FLAGS})
 append_list_if(MSVC -Wl,-nodefaultlib:msvcrt ASAN_UNITTEST_NOINST_LINK_FLAGS)
-if(NOT APPLE)
+if(NOT COMPILER_RT_TARGET_APPLE)
   append_list_if(COMPILER_RT_HAS_LIBM -lm ASAN_UNITTEST_NOINST_LINK_FLAGS)
   append_list_if(COMPILER_RT_HAS_LIBDL -ldl ASAN_UNITTEST_NOINST_LINK_FLAGS)
   append_list_if(COMPILER_RT_HAS_LIBRT -lrt ASAN_UNITTEST_NOINST_LINK_FLAGS)
@@ -148,7 +148,7 @@ set(ASAN_INST_TEST_SOURCES
   asan_str_test.cpp
   asan_test_main.cpp
   )
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   list(APPEND ASAN_INST_TEST_SOURCES
     asan_mac_test.cpp
     asan_mac_test_helpers.mm
@@ -252,7 +252,7 @@ endfunction()
 
 if(COMPILER_RT_CAN_EXECUTE_TESTS AND NOT ANDROID)
   set(ASAN_TEST_ARCH ${ASAN_SUPPORTED_ARCH})
-  if(APPLE)
+  if(COMPILER_RT_TARGET_APPLE)
     darwin_filter_host_archs(ASAN_SUPPORTED_ARCH ASAN_TEST_ARCH)
   endif()
   list(REMOVE_ITEM ASAN_TEST_ARCH sparcv9)
@@ -264,7 +264,7 @@ if(COMPILER_RT_CAN_EXECUTE_TESTS AND NOT ANDROID)
 
     # Add static ASan runtime that will be linked with uninstrumented tests.
     set(ASAN_TEST_RUNTIME RTAsanTest.${arch})
-    if(APPLE)
+    if(COMPILER_RT_TARGET_APPLE)
       set(ASAN_TEST_RUNTIME_OBJECTS
         $<TARGET_OBJECTS:RTAsan_dynamic.osx>
         $<TARGET_OBJECTS:RTInterception.osx>
diff --git a/compiler-rt/lib/asan_abi/CMakeLists.txt b/compiler-rt/lib/asan_abi/CMakeLists.txt
index ffb17eed5f71a..cf62962a843b6 100644
--- a/compiler-rt/lib/asan_abi/CMakeLists.txt
+++ b/compiler-rt/lib/asan_abi/CMakeLists.txt
@@ -12,7 +12,7 @@ include_directories(..)
 
 add_compiler_rt_component(asan_abi)
 
-if (APPLE)
+if (COMPILER_RT_TARGET_APPLE)
   # Compile Stable API sources into an object library.
   add_compiler_rt_object_libraries(RTASAN_ABI
     OS ${SANITIZER_COMMON_SUPPORTED_OS}
diff --git a/compiler-rt/lib/builtins/CMakeLists.txt b/compiler-rt/lib/builtins/CMakeLists.txt
index 9a0ca3bad0188..ee95f97fba13a 100644
--- a/compiler-rt/lib/builtins/CMakeLists.txt
+++ b/compiler-rt/lib/builtins/CMakeLists.txt
@@ -31,10 +31,10 @@ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
   construct_compiler_rt_default_triple()
 
   include(SetPlatformToolchainTools)
-  if(APPLE)
+  if(COMPILER_RT_TARGET_APPLE)
     include(CompilerRTDarwinUtils)
   endif()
-  if(APPLE)
+  if(COMPILER_RT_TARGET_APPLE)
     include(UseLibtool)
   endif()
   include(AddCompilerRT)
@@ -274,7 +274,7 @@ if(COMPILER_RT_HAS_ATOMIC_KEYWORD AND NOT COMPILER_RT_EXCLUDE_ATOMIC_BUILTIN)
   )
 endif()
 
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   set(GENERIC_SOURCES
     ${GENERIC_SOURCES}
     atomic_flag_clear.c
@@ -724,10 +724,10 @@ if(CLANG_CL OR NOT MSVC)
   )
 endif()
 
-set(COMPILER_RT_AARCH64_FMV_USES_GLOBAL_CONSTRUCTOR NOT(FUCHSIA OR APPLE))
+set(COMPILER_RT_AARCH64_FMV_USES_GLOBAL_CONSTRUCTOR NOT(FUCHSIA OR COMPILER_RT_TARGET_APPLE))
 
 if (COMPILER_RT_HAS_AARCH64_SME)
-  if (APPLE)
+  if (COMPILER_RT_TARGET_APPLE)
     list(APPEND aarch64_SOURCES aarch64/arm_apple_sme_abi.s)
     set_source_files_properties(aarch64/arm_apple_sme_abi.s PROPERTIES COMPILE_FLAGS -march=armv8a+sme)
     message(STATUS "AArch64 Apple SME ABI routines enabled")
@@ -798,7 +798,7 @@ if (MINGW)
 endif()
 
 # Don't build enable_execute_stack on arm64 darwin.
-if (APPLE)
+if (COMPILER_RT_TARGET_APPLE)
   list(REMOVE_ITEM aarch64_SOURCES enable_execute_stack.c)
 endif()
 
@@ -975,7 +975,7 @@ option(COMPILER_RT_ENABLE_SOFTWARE_INT128
   "Enable the int128 builtin routines for all targets."
   OFF)
 
-if (APPLE)
+if (COMPILER_RT_TARGET_APPLE)
   add_subdirectory(Darwin-excludes)
   add_subdirectory(macho_embedded)
   darwin_add_builtin_libraries(${BUILTIN_SUPPORTED_OS})
diff --git a/compiler-rt/lib/fuzzer/tests/CMakeLists.txt b/compiler-rt/lib/fuzzer/tests/CMakeLists.txt
index c5885ccccd207..17616426d9e23 100644
--- a/compiler-rt/lib/fuzzer/tests/CMakeLists.txt
+++ b/compiler-rt/lib/fuzzer/tests/CMakeLists.txt
@@ -7,7 +7,7 @@ set(LIBFUZZER_UNITTEST_CFLAGS
   -fno-rtti
   -O2)
 
-if (APPLE)
+if (COMPILER_RT_TARGET_APPLE)
   set(FUZZER_SUPPORTED_OS osx)
 endif()
 
@@ -23,7 +23,7 @@ list(APPEND LIBFUZZER_UNITTEST_LINK_FLAGS --driver-mode=g++)
 if(MSVC)
   list(APPEND LIBFUZZER_UNITTEST_LINK_FLAGS -Wl,-defaultlib:libcmt,-defaultlib:oldnames)
 else()
-  if (APPLE)
+  if (COMPILER_RT_TARGET_APPLE)
     list(APPEND LIBFUZZER_UNITTEST_CFLAGS -isysroot ${DARWIN_osx_SYSROOT})
     list(APPEND LIBFUZZER_UNITTEST_LINK_FLAGS -isysroot ${DARWIN_osx_SYSROOT})
   endif()
@@ -68,7 +68,7 @@ if(COMPILER_RT_DEFAULT_TARGET_ARCH IN_LIST FUZZER_SUPPORTED_ARCH)
   set(arch ${COMPILER_RT_DEFAULT_TARGET_ARCH})
 
   set(LIBFUZZER_TEST_RUNTIME RTFuzzerTest.${arch})
-  if(APPLE)
+  if(COMPILER_RT_TARGET_APPLE)
     set(LIBFUZZER_TEST_RUNTIME_OBJECTS
       $<TARGET_OBJECTS:RTfuzzer.osx>)
   else()
diff --git a/compiler-rt/lib/interception/tests/CMakeLists.txt b/compiler-rt/lib/interception/tests/CMakeLists.txt
index f348c35cbe22f..4a3aaa34e86f9 100644
--- a/compiler-rt/lib/interception/tests/CMakeLists.txt
+++ b/compiler-rt/lib/interception/tests/CMakeLists.txt
@@ -85,7 +85,7 @@ macro(add_interceptor_lib library)
 endmacro()
 
 function(get_interception_lib_for_arch arch lib)
-  if(APPLE)
+  if(COMPILER_RT_TARGET_APPLE)
     set(tgt_name "RTInterception.test.osx")
   else()
     set(tgt_name "RTInterception.test.${arch}")
@@ -111,10 +111,10 @@ macro(add_interception_tests_for_arch arch)
     LINK_FLAGS ${INTERCEPTION_TEST_LINK_FLAGS_COMMON})
 endmacro()
 
-if(COMPILER_RT_CAN_EXECUTE_TESTS AND NOT ANDROID AND NOT APPLE)
+if(COMPILER_RT_CAN_EXECUTE_TESTS AND NOT ANDROID AND NOT COMPILER_RT_TARGET_APPLE)
   # We use just-built clang to build interception unittests, so we must
   # be sure that produced binaries would work.
-  if(APPLE)
+  if(COMPILER_RT_TARGET_APPLE)
     add_interceptor_lib("RTInterception.test.osx"
                         $<TARGET_OBJECTS:RTInterception.osx>)
   else()
diff --git a/compiler-rt/lib/lsan/CMakeLists.txt b/compiler-rt/lib/lsan/CMakeLists.txt
index cece6238a7901..6ec0823f34268 100644
--- a/compiler-rt/lib/lsan/CMakeLists.txt
+++ b/compiler-rt/lib/lsan/CMakeLists.txt
@@ -46,7 +46,7 @@ add_compiler_rt_object_libraries(RTLSanCommon
 
 if(COMPILER_RT_HAS_LSAN)
   add_compiler_rt_component(lsan)
-  if(APPLE)
+  if(COMPILER_RT_TARGET_APPLE)
     set(LSAN_LINK_LIBS ${SANITIZER_COMMON_LINK_LIBS})
 
     add_weak_symbols("lsan" WEAK_SYMBOL_LINK_FLAGS)
diff --git a/compiler-rt/lib/nsan/CMakeLists.txt b/compiler-rt/lib/nsan/CMakeLists.txt
index 2846f0292307b..f9f37c2092cbc 100644
--- a/compiler-rt/lib/nsan/CMakeLists.txt
+++ b/compiler-rt/lib/nsan/CMakeLists.txt
@@ -60,7 +60,7 @@ add_compiler_rt_object_libraries(RTNsan_dynamic
   ADDITIONAL_HEADERS ${NSAN_HEADERS}
   CFLAGS ${NSAN_CFLAGS})
 
-if(NOT APPLE)
+if(NOT COMPILER_RT_TARGET_APPLE)
   add_compiler_rt_object_libraries(RTNsan
       ARCHS ${NSAN_SUPPORTED_ARCH}
       SOURCES ${NSAN_SOURCES}
@@ -89,7 +89,7 @@ add_compiler_rt_runtime(
   CFLAGS ${NSAN_CFLAGS}
   PARENT_TARGET nsan)
 
-if(NOT APPLE)
+if(NOT COMPILER_RT_TARGET_APPLE)
   foreach(arch ${NSAN_SUPPORTED_ARCH})
     if (COMPILER_RT_HAS_VERSION_SCRIPT)
       add_sanitizer_rt_version_list(clang_rt.nsan-dynamic-${arch}
diff --git a/compiler-rt/lib/orc/CMakeLists.txt b/compiler-rt/lib/orc/CMakeLists.txt
index efaf0358bb7d8..65fd974a03d43 100644
--- a/compiler-rt/lib/orc/CMakeLists.txt
+++ b/compiler-rt/lib/orc/CMakeLists.txt
@@ -49,7 +49,7 @@ if (TARGET cxx-headers OR HAVE_LIBCXX)
   set(ORC_DEPS cxx-headers)
 endif()
 
-if (APPLE)
+if (COMPILER_RT_TARGET_APPLE)
   set(ORC_ASM_SOURCES
     macho_tlv.x86-64.S
     macho_tlv.arm64.S
diff --git a/compiler-rt/lib/orc/tests/CMakeLists.txt b/compiler-rt/lib/orc/tests/CMakeLists.txt
index 7039a32e6bc8b..62fa47528901e 100644
--- a/compiler-rt/lib/orc/tests/CMakeLists.txt
+++ b/compiler-rt/lib/orc/tests/CMakeLists.txt
@@ -26,7 +26,7 @@ function(add_orc_lib library)
 endfunction()
 
 function(get_orc_lib_for_arch arch lib)
-  if(APPLE)
+  if(COMPILER_RT_TARGET_APPLE)
     if("osx" IN_LIST ORC_SUPPORTED_OS)
       set(tgt_name "RTOrc.test.osx")
     endif()
@@ -43,7 +43,7 @@ set(ORC_UNITTEST_LINK_FLAGS
   ${COMPILER_RT_UNWINDER_LINK_LIBS}
   ${COMPILER_RT_CXX_LINK_LIBS})
 
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   darwin_filter_host_archs(ORC_SUPPORTED_ARCH ORC_TEST_ARCH)
   list(APPEND ORC_UNITTEST_CFLAGS ${DARWIN_osx_CFLAGS})
   list(APPEND ORC_UNITTEST_LINK_FLAGS ${DARWIN_osx_LINK_FLAGS})
@@ -101,7 +101,7 @@ macro(add_orc_tool toolname)
   endif()
 endmacro()
 
-if (APPLE)
+if (COMPILER_RT_TARGET_APPLE)
   if("osx" IN_LIST ORC_SUPPORTED_OS)
     add_orc_lib("RTOrc.test.osx"
       $<TARGET_OBJECTS:RTOrc.osx>)
diff --git a/compiler-rt/lib/profile/CMakeLists.txt b/compiler-rt/lib/profile/CMakeLists.txt
index b41843ad555b2..f32ce9ec7f82a 100644
--- a/compiler-rt/lib/profile/CMakeLists.txt
+++ b/compiler-rt/lib/profile/CMakeLists.txt
@@ -195,7 +195,7 @@ if(COMPILER_RT_GPU_BUILD AND TARGET runtimes-libc-headers)
   list(APPEND PROFILE_LINK_LIBS runtimes-libc-headers)
 endif()
 
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   add_compiler_rt_runtime(clang_rt.profile
     STATIC
     OS ${PROFILE_SUPPORTED_OS}
diff --git a/compiler-rt/lib/rtsan/CMakeLists.txt b/compiler-rt/lib/rtsan/CMakeLists.txt
index a74dccc9be290..b2778380b4e3c 100644
--- a/compiler-rt/lib/rtsan/CMakeLists.txt
+++ b/compiler-rt/lib/rtsan/CMakeLists.txt
@@ -38,7 +38,7 @@ set(RTSAN_DYNAMIC_LIBS
 
 append_rtti_flag(OFF RTSAN_CFLAGS)
 
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   add_compiler_rt_object_libraries(RTRtsan
     OS ${SANITIZER_COMMON_SUPPORTED_OS}
     ARCHS ${RTSAN_SUPPORTED_ARCH}
@@ -75,7 +75,7 @@ append_list_if(COMPILER_RT_HAS_LIBLOG log RTSAN_DYNAMIC_LIBS)
 
 add_compiler_rt_component(rtsan)
 
-if (APPLE)
+if (COMPILER_RT_TARGET_APPLE)
   add_weak_symbols("sanitizer_common" WEAK_SYMBOL_LINK_FLAGS)
   set(RTSAN_LINK_FLAGS ${RTSAN_LINK_FLAGS} ${WEAK_SYMBOL_LINK_FLAGS})
 
diff --git a/compiler-rt/lib/rtsan/tests/CMakeLists.txt b/compiler-rt/lib/rtsan/tests/CMakeLists.txt
index 0cf07b307d461..ced2aee0799b1 100644
--- a/compiler-rt/lib/rtsan/tests/CMakeLists.txt
+++ b/compiler-rt/lib/rtsan/tests/CMakeLists.txt
@@ -52,7 +52,7 @@ append_list_if(COMPILER_RT_HAS_LIBM -lm RTSAN_UNITTEST_LINK_FLAGS)
 append_list_if(COMPILER_RT_HAS_LIBPTHREAD -pthread RTSAN_UNITTEST_LINK_FLAGS)
 append_list_if(COMPILER_RT_HAS_LIBLOG -llog RTSAN_UNITTEST_LINK_FLAGS)
 
-if (APPLE)
+if (COMPILER_RT_TARGET_APPLE)
   add_weak_symbols("sanitizer_common" WEAK_SYMBOL_LINK_FLAGS)
   list(APPEND RTSAN_UNITTEST_LINK_FLAGS ${WEAK_SYMBOL_LINK_FLAGS})
   list(APPEND RTSAN_UNITTEST_LINK_FLAGS ${DARWIN_osx_LINK_FLAGS})
@@ -62,7 +62,7 @@ endif()
 set(COMPILER_RT_GOOGLETEST_SOURCES ${COMPILER_RT_GTEST_SOURCE} ${COMPILER_RT_GMOCK_SOURCE})
 
 set(RTSAN_TEST_ARCH ${RTSAN_SUPPORTED_ARCH})
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   darwin_filter_host_archs(RTSAN_SUPPORTED_ARCH RTSAN_TEST_ARCH)
 endif()
 
@@ -90,7 +90,7 @@ foreach(arch ${RTSAN_TEST_ARCH})
   endif()
 
   set(RTSAN_TEST_RUNTIME RTRtsanTest.${arch})
-  if(APPLE)
+  if(COMPILER_RT_TARGET_APPLE)
     set(RTSAN_TEST_RUNTIME_OBJECTS
       $<TARGET_OBJECTS:RTRtsan.osx>
       $<TARGET_OBJECTS:RTInterception.osx>
diff --git a/compiler-rt/lib/sanitizer_common/CMakeLists.txt b/compiler-rt/lib/sanitizer_common/CMakeLists.txt
index 96c23c6d8ab82..bc4427f72f01c 100644
--- a/compiler-rt/lib/sanitizer_common/CMakeLists.txt
+++ b/compiler-rt/lib/sanitizer_common/CMakeLists.txt
@@ -245,7 +245,7 @@ append_list_if(SANITIZER_LIMIT_FRAME_SIZE -Wframe-larger-than=570
 append_list_if(COMPILER_RT_HAS_WGLOBAL_CONSTRUCTORS_FLAG -Wglobal-constructors
                SANITIZER_CFLAGS)
 
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   set(OS_OPTION OS ${SANITIZER_COMMON_SUPPORTED_OS})
 endif()
 
diff --git a/compiler-rt/lib/sanitizer_common/tests/CMakeLists.txt b/compiler-rt/lib/sanitizer_common/tests/CMakeLists.txt
index 55c7d665e639f..eaeaff82d2710 100644
--- a/compiler-rt/lib/sanitizer_common/tests/CMakeLists.txt
+++ b/compiler-rt/lib/sanitizer_common/tests/CMakeLists.txt
@@ -4,7 +4,7 @@ clang_compiler_add_cxx_check()
 
 # FIXME: use SANITIZER_COMMON_SUPPORTED_ARCH here
 filter_available_targets(SANITIZER_UNITTEST_SUPPORTED_ARCH x86_64 i386 mips64 mips64el riscv64 sparcv9 sparc)
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   list(APPEND SANITIZER_UNITTEST_SUPPORTED_ARCH arm64)
   darwin_filter_host_archs(SANITIZER_UNITTEST_SUPPORTED_ARCH SANITIZER_UNITTEST_SUPPORTED_ARCH)
 endif()
@@ -104,7 +104,7 @@ if(ANDROID)
   list(APPEND SANITIZER_TEST_LINK_FLAGS_COMMON -pie)
 endif()
 
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   list(APPEND SANITIZER_TEST_CFLAGS_COMMON ${DARWIN_osx_CFLAGS})
   list(APPEND SANITIZER_TEST_LINK_FLAGS_COMMON ${DARWIN_osx_LINK_FLAGS})
 
@@ -151,7 +151,7 @@ macro(add_sanitizer_common_lib library)
 endmacro()
 
 function(get_sanitizer_common_lib_for_arch arch lib)
-  if(APPLE)
+  if(COMPILER_RT_TARGET_APPLE)
     set(tgt_name "RTSanitizerCommon.test.osx")
   else()
     set(tgt_name "RTSanitizerCommon.test.${arch}")
@@ -206,7 +206,7 @@ endmacro()
 if(COMPILER_RT_CAN_EXECUTE_TESTS AND NOT ANDROID)
   # We use just-built clang to build sanitizer_common unittests, so we must
   # be sure that produced binaries would work.
-  if(APPLE)
+  if(COMPILER_RT_TARGET_APPLE)
     add_sanitizer_common_lib("RTSanitizerCommon.test.osx"
                              $<TARGET_OBJECTS:RTSanitizerCommon.osx>
                              $<TARGET_OBJECTS:RTSanitizerCommonLibc.osx>
diff --git a/compiler-rt/lib/stats/CMakeLists.txt b/compiler-rt/lib/stats/CMakeLists.txt
index 6df221a9a7716..74f0e3f4dd3fc 100644
--- a/compiler-rt/lib/stats/CMakeLists.txt
+++ b/compiler-rt/lib/stats/CMakeLists.txt
@@ -6,7 +6,7 @@ include_directories(..)
 add_custom_target(stats)
 set_target_properties(stats PROPERTIES FOLDER "Compiler-RT/Metatargets")
 
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   set(STATS_LIB_FLAVOR SHARED)
 
   set(STATS_LINK_LIBS ${SANITIZER_COMMON_LINK_LIBS})
diff --git a/compiler-rt/lib/tsan/dd/CMakeLists.txt b/compiler-rt/lib/tsan/dd/CMakeLists.txt
index 1864d7a49fa60..bc775b6b533b4 100644
--- a/compiler-rt/lib/tsan/dd/CMakeLists.txt
+++ b/compiler-rt/lib/tsan/dd/CMakeLists.txt
@@ -23,7 +23,7 @@ add_custom_target(dd)
 set_target_properties(dd PROPERTIES FOLDER "Compiler-RT/Metatargets")
 
 # Deadlock detector is currently supported on 64-bit Linux only.
-if(CAN_TARGET_x86_64 AND UNIX AND NOT APPLE AND NOT ANDROID)
+if(CAN_TARGET_x86_64 AND UNIX AND NOT COMPILER_RT_TARGET_APPLE AND NOT ANDROID)
   set(arch "x86_64")
   add_compiler_rt_runtime(clang_rt.dd
     STATIC
diff --git a/compiler-rt/lib/tsan/rtl/CMakeLists.txt b/compiler-rt/lib/tsan/rtl/CMakeLists.txt
index 6f093500c8f61..e65d6ab2f3efc 100644
--- a/compiler-rt/lib/tsan/rtl/CMakeLists.txt
+++ b/compiler-rt/lib/tsan/rtl/CMakeLists.txt
@@ -60,7 +60,7 @@ set(TSAN_PREINIT_SOURCES
   tsan_preinit.cpp
   )
 
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   list(APPEND TSAN_SOURCES
     tsan_interceptors_mac.cpp
     tsan_interceptors_mach_vm.cpp
@@ -116,7 +116,7 @@ if("${CMAKE_C_FLAGS}" MATCHES "-Wno-(error=)?unused-command-line-argument")
   set(EXTRA_CFLAGS "-Wno-error=unused-command-line-argument ${EXTRA_CFLAGS}")
 endif()
 
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   # Ideally we would check the SDK version for the actual platform we are
   # building for here.  To make our lifes easier we assume the host SDK setup is
   # sane and use the macOS SDK version as a proxy for aligned SDKs.
diff --git a/compiler-rt/lib/tsan/tests/CMakeLists.txt b/compiler-rt/lib/tsan/tests/CMakeLists.txt
index 1bc08bbf7450c..811116be61e00 100644
--- a/compiler-rt/lib/tsan/tests/CMakeLists.txt
+++ b/compiler-rt/lib/tsan/tests/CMakeLists.txt
@@ -31,7 +31,7 @@ set(TSAN_UNITTEST_LINK_FLAGS
   ${COMPILER_RT_UNWINDER_LINK_LIBS}
   ${SANITIZER_TEST_CXX_LIBRARIES})
 
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
 
   # Create a static library for test dependencies.
   set(TSAN_TEST_RUNTIME_OBJECTS
diff --git a/compiler-rt/lib/tysan/CMakeLists.txt b/compiler-rt/lib/tysan/CMakeLists.txt
index e7a6e71b86a0c..2bc4c41847834 100644
--- a/compiler-rt/lib/tysan/CMakeLists.txt
+++ b/compiler-rt/lib/tysan/CMakeLists.txt
@@ -36,7 +36,7 @@ add_compiler_rt_object_libraries(RTTysan_dynamic
 add_compiler_rt_component(tysan)
 
 
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   add_weak_symbols("sanitizer_common" WEAK_SYMBOL_LINK_FLAGS)
 
   add_compiler_rt_runtime(clang_rt.tysan
diff --git a/compiler-rt/lib/ubsan/CMakeLists.txt b/compiler-rt/lib/ubsan/CMakeLists.txt
index 75a4942debd3f..c09fbdd8ee1ee 100644
--- a/compiler-rt/lib/ubsan/CMakeLists.txt
+++ b/compiler-rt/lib/ubsan/CMakeLists.txt
@@ -78,7 +78,7 @@ endif()
 
 add_compiler_rt_component(ubsan)
 
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   set(UBSAN_COMMON_SOURCES ${UBSAN_SOURCES})
   if(SANITIZER_CAN_USE_CXXABI)
     list(APPEND UBSAN_COMMON_SOURCES ${UBSAN_CXXABI_SOURCES})
@@ -118,7 +118,7 @@ if(APPLE)
       LINK_FLAGS ${WEAK_SYMBOL_LINK_FLAGS}
       PARENT_TARGET ubsan)
 
-    if (NOT APPLE)
+    if (NOT COMPILER_RT_TARGET_APPLE)
       add_compiler_rt_runtime(clang_rt.ubsan
         STATIC
         OS ${UBSAN_SUPPORTED_OS}
diff --git a/compiler-rt/lib/ubsan_minimal/CMakeLists.txt b/compiler-rt/lib/ubsan_minimal/CMakeLists.txt
index 1f6e50857e9dd..06d2341c27f80 100644
--- a/compiler-rt/lib/ubsan_minimal/CMakeLists.txt
+++ b/compiler-rt/lib/ubsan_minimal/CMakeLists.txt
@@ -43,7 +43,7 @@ add_compiler_rt_runtime(clang_rt.ubsan_minimal
   LINK_LIBS ${UBSAN_DYNAMIC_LIBS}
   PARENT_TARGET ubsan-minimal)
 
-if (SANITIZER_USE_SYMBOLS AND NOT APPLE)
+if (SANITIZER_USE_SYMBOLS AND NOT COMPILER_RT_TARGET_APPLE)
   set(ARCHS_FOR_SYMBOLS ${UBSAN_SUPPORTED_ARCH})
   list(REMOVE_ITEM ARCHS_FOR_SYMBOLS i386 i686)
   add_sanitizer_rt_symbols(clang_rt.ubsan_minimal
diff --git a/compiler-rt/lib/xray/CMakeLists.txt b/compiler-rt/lib/xray/CMakeLists.txt
index c79b0b634ddf1..6863670ef5a0b 100644
--- a/compiler-rt/lib/xray/CMakeLists.txt
+++ b/compiler-rt/lib/xray/CMakeLists.txt
@@ -228,7 +228,7 @@ if (TARGET cxx-headers OR HAVE_LIBCXX)
   set(XRAY_DEPS cxx-headers)
 endif()
 
-if (APPLE)
+if (COMPILER_RT_TARGET_APPLE)
   add_weak_symbols("sanitizer_common" WEAK_SYMBOL_LINK_FLAGS)
   add_weak_symbols("xray" WEAK_SYMBOL_LINK_FLAGS)
 
diff --git a/compiler-rt/lib/xray/tests/CMakeLists.txt b/compiler-rt/lib/xray/tests/CMakeLists.txt
index 6b9d9ced9a1df..620b40b8e8a92 100644
--- a/compiler-rt/lib/xray/tests/CMakeLists.txt
+++ b/compiler-rt/lib/xray/tests/CMakeLists.txt
@@ -38,7 +38,7 @@ function(add_xray_lib library)
 endfunction()
 
 function(get_xray_lib_for_arch arch lib)
-  if(APPLE)
+  if(COMPILER_RT_TARGET_APPLE)
     set(tgt_name "RTXRay.test.osx")
   else()
     set(tgt_name "RTXRay.test.${arch}")
@@ -53,7 +53,7 @@ set(XRAY_UNITTEST_LINK_FLAGS
   ${COMPILER_RT_UNWINDER_LINK_LIBS}
   ${COMPILER_RT_CXX_LINK_LIBS})
 
-if (NOT APPLE)
+if (NOT COMPILER_RT_TARGET_APPLE)
   # We add the library directories one at a time in our CFLAGS.
   foreach (DIR ${LLVM_LIBRARY_DIR})
     list(APPEND XRAY_UNITTEST_LINK_FLAGS -L${DIR})
@@ -87,7 +87,7 @@ endif()
 
 macro(add_xray_unittest testname)
   cmake_parse_arguments(TEST "" "" "SOURCES;HEADERS" ${ARGN})
-  if(UNIX AND NOT APPLE)
+  if(UNIX AND NOT COMPILER_RT_TARGET_APPLE)
     set(CMAKE_DL_LIBS_INIT "")
     foreach(arch ${XRAY_TEST_ARCH})
       set(TEST_OBJECTS)
@@ -116,7 +116,7 @@ macro(add_xray_unittest testname)
 endmacro()
 
 if(COMPILER_RT_CAN_EXECUTE_TESTS)
-  if (APPLE)
+  if (COMPILER_RT_TARGET_APPLE)
     add_xray_lib("RTXRay.test.osx"
       $<TARGET_OBJECTS:RTXray.osx>
       $<TARGET_OBJECTS:RTXrayFDR.osx>
diff --git a/compiler-rt/test/asan/CMakeLists.txt b/compiler-rt/test/asan/CMakeLists.txt
index f99a90a12aedc..11681de625e9c 100644
--- a/compiler-rt/test/asan/CMakeLists.txt
+++ b/compiler-rt/test/asan/CMakeLists.txt
@@ -26,14 +26,14 @@ endmacro()
 set(ASAN_TEST_DEPS ${SANITIZER_COMMON_LIT_TEST_DEPS})
 list(APPEND ASAN_TEST_DEPS asan)
 if(NOT COMPILER_RT_STANDALONE_BUILD)
-  if(NOT APPLE AND COMPILER_RT_HAS_LLD AND "lld" IN_LIST LLVM_ENABLE_PROJECTS)
+  if(NOT COMPILER_RT_TARGET_APPLE AND COMPILER_RT_HAS_LLD AND "lld" IN_LIST LLVM_ENABLE_PROJECTS)
     list(APPEND ASAN_TEST_DEPS lld)
   endif()
 endif()
 set(ASAN_DYNAMIC_TEST_DEPS ${ASAN_TEST_DEPS})
 
 set(ASAN_TEST_ARCH ${ASAN_SUPPORTED_ARCH})
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   darwin_filter_host_archs(ASAN_SUPPORTED_ARCH ASAN_TEST_ARCH)
 endif()
 list(REMOVE_ITEM ASAN_TEST_ARCH sparcv9)
@@ -50,7 +50,7 @@ foreach(arch ${ASAN_TEST_ARCH})
   string(TOLOWER "-${arch}-${OS_NAME}" ASAN_TEST_CONFIG_SUFFIX)
   get_bits_for_arch(${arch} ASAN_TEST_BITS)
   get_test_cc_for_arch(${arch} ASAN_TEST_TARGET_CC ASAN_TEST_TARGET_CFLAGS)
-  if(ANDROID OR APPLE)
+  if(ANDROID OR COMPILER_RT_TARGET_APPLE)
     set(ASAN_TEST_DYNAMIC True)
   else()
     set(ASAN_TEST_DYNAMIC False)
@@ -90,7 +90,7 @@ endforeach()
 # "check-asan-iossim-x86_64" and similar. They also require that an extra env
 # variable to select which iOS device or simulator to use, e.g.:
 # SANITIZER_IOSSIM_TEST_DEVICE_IDENTIFIER="iPhone 6"
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   set(ASAN_TEST_TARGET_CC ${COMPILER_RT_TEST_COMPILER})
   set(ASAN_TEST_DYNAMIC True)
   set(ASAN_APPLE_PLATFORMS ${SANITIZER_COMMON_SUPPORTED_OS})
diff --git a/compiler-rt/test/asan_abi/CMakeLists.txt b/compiler-rt/test/asan_abi/CMakeLists.txt
index 1df86c683af5f..79a300ea61924 100644
--- a/compiler-rt/test/asan_abi/CMakeLists.txt
+++ b/compiler-rt/test/asan_abi/CMakeLists.txt
@@ -12,7 +12,7 @@ endmacro()
 set(ASAN_ABI_TEST_DEPS ${SANITIZER_COMMON_LIT_TEST_DEPS} asan_abi)
 
 set(ASAN_ABI_TEST_ARCH ${ASAN_ABI_SUPPORTED_ARCH})
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   darwin_filter_host_archs(ASAN_ABI_SUPPORTED_ARCH ASAN_ABI_TEST_ARCH)
 endif()
 
@@ -36,7 +36,7 @@ foreach(arch ${ASAN_ABI_TEST_ARCH})
     )
 endforeach()
 
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   set(ASAN_ABI_TEST_TARGET_CC ${COMPILER_RT_TEST_COMPILER})
   set(ASAN_ABI_TEST_APPLE_PLATFORMS ${SANITIZER_COMMON_SUPPORTED_OS})
 
diff --git a/compiler-rt/test/builtins/CMakeLists.txt b/compiler-rt/test/builtins/CMakeLists.txt
index 16349f221463e..caf96fb8b76db 100644
--- a/compiler-rt/test/builtins/CMakeLists.txt
+++ b/compiler-rt/test/builtins/CMakeLists.txt
@@ -44,7 +44,7 @@ endif()
 pythonize_bool(BUILTINS_IS_MSVC)
 
 set(BUILTIN_TEST_ARCH ${BUILTIN_SUPPORTED_ARCH})
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   darwin_filter_host_archs(BUILTIN_SUPPORTED_ARCH BUILTIN_TEST_ARCH)
 endif()
 
@@ -76,7 +76,7 @@ foreach(arch ${BUILTIN_TEST_ARCH})
     string(REPLACE ";" " " BUILTINS_TEST_TARGET_CFLAGS "${BUILTINS_TEST_TARGET_CFLAGS}")
   endif()
 
-  if(APPLE)
+  if(COMPILER_RT_TARGET_APPLE)
     # TODO: Support the new ABI on Apple platforms.
     if (${arch} MATCHES "arm|armhf|aarch64|arm64" AND COMPILER_RT_HAS_${arch}_FLOAT16)
       list(APPEND BUILTINS_TEST_TARGET_CFLAGS -DCOMPILER_RT_HAS_FLOAT16)
@@ -125,7 +125,7 @@ foreach(arch ${BUILTIN_TEST_ARCH})
   endif()
 
   # Compute builtins available in library and add them as lit features.
-  if(APPLE)
+  if(COMPILER_RT_TARGET_APPLE)
     # TODO: Support other Apple platforms.
     set(BUILTIN_LIB_TARGET_NAME "clang_rt.builtins_${arch}_osx")
     set(BUILTIN_LIB_OUTPUT_NAME "clang_rt.builtins_${arch}_osx")
diff --git a/compiler-rt/test/cfi/CMakeLists.txt b/compiler-rt/test/cfi/CMakeLists.txt
index 5e1c9253a1d17..20494e9300c96 100644
--- a/compiler-rt/test/cfi/CMakeLists.txt
+++ b/compiler-rt/test/cfi/CMakeLists.txt
@@ -35,14 +35,14 @@ macro (add_cfi_test_suites lld thinlto traploop)
 endmacro()
 
 set(CFI_TEST_ARCH ${CFI_SUPPORTED_ARCH})
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   darwin_filter_host_archs(CFI_SUPPORTED_ARCH CFI_TEST_ARCH)
 endif()
 
 foreach(arch ${CFI_TEST_ARCH})
   set(CFI_TEST_TARGET_ARCH ${arch})
   get_test_cc_for_arch(${arch} CFI_TEST_TARGET_CC CFI_TEST_TARGET_CFLAGS)
-  if (APPLE)
+  if (COMPILER_RT_TARGET_APPLE)
     # FIXME: enable ThinLTO tests after fixing http://llvm.org/pr32741
     add_cfi_test_suites(False False False)
   elseif(WIN32)
@@ -80,13 +80,13 @@ if(NOT COMPILER_RT_STANDALONE_BUILD)
         LLVMgold
       )
     endif()
-    if(APPLE)
+    if(COMPILER_RT_TARGET_APPLE)
       list(APPEND CFI_TEST_DEPS
         LTO
       )
     endif()
   endif()
-  if(NOT APPLE AND COMPILER_RT_HAS_LLD AND TARGET lld)
+  if(NOT COMPILER_RT_TARGET_APPLE AND COMPILER_RT_HAS_LLD AND TARGET lld)
     list(APPEND CFI_TEST_DEPS
       lld
     )
diff --git a/compiler-rt/test/dfsan/CMakeLists.txt b/compiler-rt/test/dfsan/CMakeLists.txt
index 98fe5665c3ce5..badd690b43b77 100644
--- a/compiler-rt/test/dfsan/CMakeLists.txt
+++ b/compiler-rt/test/dfsan/CMakeLists.txt
@@ -3,7 +3,7 @@ set(DFSAN_LIT_TESTS_DIR ${CMAKE_CURRENT_SOURCE_DIR})
 set(DFSAN_TESTSUITES)
  
 set(DFSAN_TEST_ARCH ${DFSAN_SUPPORTED_ARCH})
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   darwin_filter_host_archs(DFSAN_SUPPORTED_ARCH DFSAN_TEST_ARCH)
 endif()
 
diff --git a/compiler-rt/test/fuzzer/CMakeLists.txt b/compiler-rt/test/fuzzer/CMakeLists.txt
index 8228743816ce1..29c48203085c3 100644
--- a/compiler-rt/test/fuzzer/CMakeLists.txt
+++ b/compiler-rt/test/fuzzer/CMakeLists.txt
@@ -12,13 +12,13 @@ if (COMPILER_RT_HAS_DFSAN)
   list(APPEND LIBFUZZER_TEST_DEPS dfsan)
 endif()
 if (NOT COMPILER_RT_STANDALONE_BUILD)
-  if(NOT APPLE AND COMPILER_RT_HAS_LLD AND "lld" IN_LIST LLVM_ENABLE_PROJECTS)
+  if(NOT COMPILER_RT_TARGET_APPLE AND COMPILER_RT_HAS_LLD AND "lld" IN_LIST LLVM_ENABLE_PROJECTS)
     list(APPEND LIBFUZZER_TEST_DEPS lld)
   endif()
 endif()
 
 set(FUZZER_TEST_ARCH ${FUZZER_SUPPORTED_ARCH})
-if (APPLE)
+if (COMPILER_RT_TARGET_APPLE)
   darwin_filter_host_archs(FUZZER_SUPPORTED_ARCH FUZZER_TEST_ARCH)
 endif()
 
@@ -89,7 +89,7 @@ if(LIBFUZZER_TESTSUITES)
     DEPENDS ${LIBFUZZER_TEST_DEPS})
 endif()
 
-if (APPLE)
+if (COMPILER_RT_TARGET_APPLE)
   set(LIBFUZZER_TEST_COMPILER ${COMPILER_RT_TEST_COMPILER})
   set(FUZZER_APPLE_PLATFORMS ${FUZZER_SUPPORTED_OS})
   foreach(platform ${FUZZER_APPLE_PLATFORMS})
diff --git a/compiler-rt/test/interception/CMakeLists.txt b/compiler-rt/test/interception/CMakeLists.txt
index 8ed1a003c1b3c..21d3f7b225d48 100644
--- a/compiler-rt/test/interception/CMakeLists.txt
+++ b/compiler-rt/test/interception/CMakeLists.txt
@@ -3,7 +3,7 @@ set(INTERCEPTION_TESTSUITES)
 
 # Unit tests. There are currently no unit tests capable to running on Apple or
 # Android targets.
-if(NOT ANDROID AND NOT APPLE)
+if(NOT ANDROID AND NOT COMPILER_RT_TARGET_APPLE)
   configure_lit_site_cfg(
     ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.py.in
     ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg.py)
diff --git a/compiler-rt/test/lsan/CMakeLists.txt b/compiler-rt/test/lsan/CMakeLists.txt
index 1c545a97d3acc..c1100440691ff 100644
--- a/compiler-rt/test/lsan/CMakeLists.txt
+++ b/compiler-rt/test/lsan/CMakeLists.txt
@@ -3,7 +3,7 @@ set(LSAN_LIT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
 set(LSAN_TESTSUITES)
 
 set(LSAN_TEST_ARCH ${LSAN_SUPPORTED_ARCH})
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   darwin_filter_host_archs(LSAN_SUPPORTED_ARCH LSAN_TEST_ARCH)
 endif()
 
diff --git a/compiler-rt/test/msan/CMakeLists.txt b/compiler-rt/test/msan/CMakeLists.txt
index df5719761e607..24b459028ffed 100644
--- a/compiler-rt/test/msan/CMakeLists.txt
+++ b/compiler-rt/test/msan/CMakeLists.txt
@@ -4,7 +4,7 @@ set(MSAN_TESTSUITES)
 set(MSAN_TEST_DEPS ${SANITIZER_COMMON_LIT_TEST_DEPS} msan)
 
 set(MSAN_TEST_ARCH ${MSAN_SUPPORTED_ARCH})
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   darwin_filter_host_archs(MSAN_SUPPORTED_ARCH MSAN_TEST_ARCH)
 endif()
 
@@ -36,7 +36,7 @@ endmacro()
 foreach(arch ${MSAN_TEST_ARCH})
   add_msan_testsuite(${arch} False False)
 
-  if(COMPILER_RT_HAS_LLD AND arch STREQUAL "x86_64" AND NOT (APPLE OR WIN32))
+  if(COMPILER_RT_HAS_LLD AND arch STREQUAL "x86_64" AND NOT (COMPILER_RT_TARGET_APPLE OR WIN32))
     add_msan_testsuite(${arch} True False)
   endif()
 endforeach()
diff --git a/compiler-rt/test/profile/CMakeLists.txt b/compiler-rt/test/profile/CMakeLists.txt
index 213a05032ed80..8cd339ad0acee 100644
--- a/compiler-rt/test/profile/CMakeLists.txt
+++ b/compiler-rt/test/profile/CMakeLists.txt
@@ -13,7 +13,7 @@ if(NOT COMPILER_RT_STANDALONE_BUILD)
 endif()
 
 set(PROFILE_TEST_ARCH ${PROFILE_SUPPORTED_ARCH})
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   darwin_filter_host_archs(PROFILE_SUPPORTED_ARCH PROFILE_TEST_ARCH)
 endif()
 
diff --git a/compiler-rt/test/rtsan/CMakeLists.txt b/compiler-rt/test/rtsan/CMakeLists.txt
index 59fc5a29703fe..63f3443915e8e 100644
--- a/compiler-rt/test/rtsan/CMakeLists.txt
+++ b/compiler-rt/test/rtsan/CMakeLists.txt
@@ -6,7 +6,7 @@ set(RTSAN_FDR_TESTSUITES)
 set(RTSAN_TEST_DEPS ${SANITIZER_COMMON_LIT_TEST_DEPS})
 set(RTSAN_FDR_TEST_DEPS ${SANITIZER_COMMON_LIT_TEST_DEPS})
 set(RTSAN_TEST_ARCH ${RTSAN_SUPPORTED_ARCH})
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   darwin_filter_host_archs(RTSAN_SUPPORTED_ARCH RTSAN_TEST_ARCH)
 endif()
 
diff --git a/compiler-rt/test/safestack/CMakeLists.txt b/compiler-rt/test/safestack/CMakeLists.txt
index fca06024c9856..bad429299a4b2 100644
--- a/compiler-rt/test/safestack/CMakeLists.txt
+++ b/compiler-rt/test/safestack/CMakeLists.txt
@@ -15,7 +15,7 @@ macro(add_safestack_testsuite test_mode sanitizer arch)
       if(LLVM_BINUTILS_INCDIR)
         list(APPEND SAFESTACK_TEST_DEPS LLVMgold)
       endif()
-      if(APPLE)
+      if(COMPILER_RT_TARGET_APPLE)
         list(APPEND SAFESTACK_TEST_DEPS LTO)
       endif()
     endif()
diff --git a/compiler-rt/test/sanitizer_common/CMakeLists.txt b/compiler-rt/test/sanitizer_common/CMakeLists.txt
index 739879d961248..8201c860e5fce 100644
--- a/compiler-rt/test/sanitizer_common/CMakeLists.txt
+++ b/compiler-rt/test/sanitizer_common/CMakeLists.txt
@@ -55,7 +55,7 @@ foreach(tool ${SUPPORTED_TOOLS})
     list(APPEND SANITIZER_COMMON_TEST_DEPS ${tool})
   endif()
   set(TEST_ARCH ${${tool_toupper}_SUPPORTED_ARCH})
-  if(APPLE)
+  if(COMPILER_RT_TARGET_APPLE)
     darwin_filter_host_archs(${tool_toupper}_SUPPORTED_ARCH TEST_ARCH)
   endif()
   if(${tool} STREQUAL "asan")
@@ -105,7 +105,7 @@ endforeach()
 # "check-sanitizer-iossim-arm64" and similar. They also require an extra environment
 # variable to select which iOS device or simulator to use, e.g.:
 # SANITIZER_IOSSIM_TEST_DEVICE_IDENTIFIER="iPhone 16"
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   set(SANITIZER_APPLE_PLATFORMS ${SANITIZER_COMMON_SUPPORTED_OS})
 
   foreach(platform ${SANITIZER_APPLE_PLATFORMS})
diff --git a/compiler-rt/test/tsan/CMakeLists.txt b/compiler-rt/test/tsan/CMakeLists.txt
index 4cd88507a2baf..593cbbb53993d 100644
--- a/compiler-rt/test/tsan/CMakeLists.txt
+++ b/compiler-rt/test/tsan/CMakeLists.txt
@@ -8,7 +8,7 @@ list(APPEND TSAN_TEST_DEPS tsan)
 if(COMPILER_RT_LIBCXX_PATH AND
    COMPILER_RT_LIBCXXABI_PATH AND
    COMPILER_RT_TEST_COMPILER_ID STREQUAL "Clang"
-   AND NOT APPLE AND NOT ANDROID)
+   AND NOT COMPILER_RT_TARGET_APPLE AND NOT ANDROID)
   list(APPEND TSAN_TEST_DEPS libcxx_tsan)
   set(TSAN_HAS_LIBCXX True)
 else()
@@ -24,7 +24,7 @@ if (NOT DEFINED TSAN_TEST_DEFLAKE_THRESHOLD)
 endif()
 
 set(TSAN_TEST_ARCH ${TSAN_SUPPORTED_ARCH})
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   darwin_filter_host_archs(TSAN_SUPPORTED_ARCH TSAN_TEST_ARCH)
 endif()
 
@@ -75,7 +75,7 @@ endforeach()
 # "check-tsan-iossim-x86_64" and similar. They also require an extra environment
 # variable to select which iOS device or simulator to use, e.g.:
 # SANITIZER_IOSSIM_TEST_DEVICE_IDENTIFIER="iPhone 6"
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   set(TSAN_TEST_TARGET_CC ${COMPILER_RT_TEST_COMPILER})
   set(TSAN_APPLE_PLATFORMS ${TSAN_SUPPORTED_OS})
   foreach(platform ${TSAN_APPLE_PLATFORMS})
diff --git a/compiler-rt/test/tysan/CMakeLists.txt b/compiler-rt/test/tysan/CMakeLists.txt
index ce0afa8769f03..fadd028b0ecb8 100644
--- a/compiler-rt/test/tysan/CMakeLists.txt
+++ b/compiler-rt/test/tysan/CMakeLists.txt
@@ -3,7 +3,7 @@ set(TYSAN_LIT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
 set(TYSAN_TESTSUITES)
 
 set(TYSAN_TEST_ARCH ${TYSAN_SUPPORTED_ARCH})
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   darwin_filter_host_archs(TYSAN_SUPPORTED_ARCH TYSAN_TEST_ARCH)
 endif()
 
diff --git a/compiler-rt/test/ubsan/CMakeLists.txt b/compiler-rt/test/ubsan/CMakeLists.txt
index a83215d82d57e..4108b325a5e5e 100644
--- a/compiler-rt/test/ubsan/CMakeLists.txt
+++ b/compiler-rt/test/ubsan/CMakeLists.txt
@@ -29,19 +29,19 @@ endmacro()
 macro(add_ubsan_testsuites test_mode sanitizer arch)
   add_ubsan_testsuite(${test_mode} ${sanitizer} ${arch} False False)
 
-  if(COMPILER_RT_HAS_LLD AND arch STREQUAL "x86_64" AND NOT (APPLE OR WIN32))
+  if(COMPILER_RT_HAS_LLD AND arch STREQUAL "x86_64" AND NOT (COMPILER_RT_TARGET_APPLE OR WIN32))
     add_ubsan_testsuite(${test_mode} ${sanitizer} ${arch} True False)
   endif()
 endmacro()
 
 set(UBSAN_TEST_ARCH ${UBSAN_SUPPORTED_ARCH})
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   darwin_filter_host_archs(UBSAN_SUPPORTED_ARCH UBSAN_TEST_ARCH)
 endif()
 
 foreach(arch ${UBSAN_TEST_ARCH})
   set(UBSAN_TEST_TARGET_ARCH ${arch})
-  if (APPLE)
+  if (COMPILER_RT_TARGET_APPLE)
     set(UBSAN_TEST_APPLE_PLATFORM "osx")
     set(UBSAN_TEST_MIN_DEPLOYMENT_TARGET_FLAG "${DARWIN_osx_MIN_VER_FLAG}")
     set(UBSAN_TEST_APPLE_TARGET_IS_HOST ON)
@@ -76,7 +76,7 @@ macro(add_ubsan_device_testsuite test_mode sanitizer platform arch)
   set(UBSAN_TEST_TARGET_ARCH ${arch})
   set(UBSAN_TEST_USE_LLD "False")
   set(UBSAN_TEST_USE_THINLTO "False")
-  if (APPLE)
+  if (COMPILER_RT_TARGET_APPLE)
     set(UBSAN_TEST_APPLE_PLATFORM "${platform}")
     set(UBSAN_TEST_MIN_DEPLOYMENT_TARGET_FLAG "${DARWIN_${platform}_MIN_VER_FLAG}")
     set(UBSAN_TEST_APPLE_TARGET_IS_HOST OFF)
@@ -97,7 +97,7 @@ macro(add_ubsan_device_testsuite test_mode sanitizer platform arch)
     DEPENDS ${UBSAN_TEST_DEPS})
 endmacro()
 
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   foreach(arch ${UBSAN_TEST_ARCH})
     set(UBSAN_TEST_TARGET_ARCH ${arch})
     get_test_cc_for_arch(${arch} UBSAN_TEST_TARGET_CC UBSAN_TEST_TARGET_CFLAGS)
diff --git a/compiler-rt/test/ubsan_minimal/CMakeLists.txt b/compiler-rt/test/ubsan_minimal/CMakeLists.txt
index cf978ddc24bf5..9dbf41fe512f0 100644
--- a/compiler-rt/test/ubsan_minimal/CMakeLists.txt
+++ b/compiler-rt/test/ubsan_minimal/CMakeLists.txt
@@ -1,7 +1,7 @@
 set(UBSAN_LIT_TESTS_DIR ${CMAKE_CURRENT_SOURCE_DIR})
 
 set(UBSAN_TEST_ARCH ${UBSAN_SUPPORTED_ARCH})
-if(APPLE)
+if(COMPILER_RT_TARGET_APPLE)
   darwin_filter_host_archs(UBSAN_SUPPORTED_ARCH UBSAN_TEST_ARCH)
 endif()
 

>From 3328744c5b905824b0caf8cea32bef47ea552175 Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Thu, 11 Jun 2026 22:07:05 +0200
Subject: [PATCH 2/2] Fix !LLVM_ENABLE_PER_TARGET_RUNTIME_DIR case

---
 compiler-rt/CMakeLists.txt              |  2 +
 compiler-rt/cmake/base-config-ix.cmake  | 50 +++++++++++++------------
 compiler-rt/lib/builtins/CMakeLists.txt |  1 +
 3 files changed, 30 insertions(+), 23 deletions(-)

diff --git a/compiler-rt/CMakeLists.txt b/compiler-rt/CMakeLists.txt
index 732e7d5271d3b..04cb7f2addfd7 100644
--- a/compiler-rt/CMakeLists.txt
+++ b/compiler-rt/CMakeLists.txt
@@ -155,6 +155,8 @@ if (COMPILER_RT_STANDALONE_BUILD)
 endif()
 
 construct_compiler_rt_default_triple()
+setup_compiler_rt_output_dirs()
+
 if ("${COMPILER_RT_DEFAULT_TARGET_TRIPLE}" MATCHES ".*hf$")
   if (${COMPILER_RT_DEFAULT_TARGET_ARCH} MATCHES "^arm")
     set(COMPILER_RT_DEFAULT_TARGET_ARCH "armhf")
diff --git a/compiler-rt/cmake/base-config-ix.cmake b/compiler-rt/cmake/base-config-ix.cmake
index eae8050792402..979a5132adea0 100644
--- a/compiler-rt/cmake/base-config-ix.cmake
+++ b/compiler-rt/cmake/base-config-ix.cmake
@@ -122,29 +122,33 @@ if(NOT DEFINED COMPILER_RT_OS_DIR)
   endif()
 endif()
 
-# TODO: Use common runtimes infrastructure for output and install paths
-if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT COMPILER_RT_TARGET_APPLE)
-  set(COMPILER_RT_OUTPUT_LIBRARY_DIR
-    ${COMPILER_RT_OUTPUT_DIR}/lib)
-  extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" lib)
-  set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH
-    "Path where built compiler-rt libraries should be installed.")
-else(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT COMPILER_RT_TARGET_APPLE)
-  set(COMPILER_RT_OUTPUT_LIBRARY_DIR
-    ${COMPILER_RT_OUTPUT_DIR}/lib/${COMPILER_RT_OS_DIR})
-  extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "lib/${COMPILER_RT_OS_DIR}")
-  set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH
-    "Path where built compiler-rt libraries should be installed.")
-endif()
-extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_BINDIR}")
-set(COMPILER_RT_INSTALL_BINARY_DIR "${default_install_path}" CACHE PATH
-  "Path where built compiler-rt executables should be installed.")
-extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_INCLUDEDIR}")
-set(COMPILER_RT_INSTALL_INCLUDE_DIR "${default_install_path}" CACHE PATH
-  "Path where compiler-rt headers should be installed.")
-extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_DATADIR}")
-set(COMPILER_RT_INSTALL_DATA_DIR "${default_install_path}" CACHE PATH
-  "Path where compiler-rt data files should be installed.")
+# This macro must be called after construct_compiler_rt_default_triple()
+# because it depends on COMPILER_RT_TARGET_APPLE.
+macro(setup_compiler_rt_output_dirs)
+  # TODO: Use common runtimes infrastructure for output and install paths
+  if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT COMPILER_RT_TARGET_APPLE)
+    set(COMPILER_RT_OUTPUT_LIBRARY_DIR
+      ${COMPILER_RT_OUTPUT_DIR}/lib)
+    extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" lib)
+    set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH
+      "Path where built compiler-rt libraries should be installed.")
+  else()
+    set(COMPILER_RT_OUTPUT_LIBRARY_DIR
+      ${COMPILER_RT_OUTPUT_DIR}/lib/${COMPILER_RT_OS_DIR})
+    extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "lib/${COMPILER_RT_OS_DIR}")
+    set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH
+      "Path where built compiler-rt libraries should be installed.")
+  endif()
+  extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_BINDIR}")
+  set(COMPILER_RT_INSTALL_BINARY_DIR "${default_install_path}" CACHE PATH
+    "Path where built compiler-rt executables should be installed.")
+  extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_INCLUDEDIR}")
+  set(COMPILER_RT_INSTALL_INCLUDE_DIR "${default_install_path}" CACHE PATH
+    "Path where compiler-rt headers should be installed.")
+  extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_DATADIR}")
+  set(COMPILER_RT_INSTALL_DATA_DIR "${default_install_path}" CACHE PATH
+    "Path where compiler-rt data files should be installed.")
+endmacro()
 
 macro(detect_darwin_sdk)
   # On Darwin if /usr/include/c++ doesn't exist, the user probably has Xcode but
diff --git a/compiler-rt/lib/builtins/CMakeLists.txt b/compiler-rt/lib/builtins/CMakeLists.txt
index ee95f97fba13a..09b7a0b801d26 100644
--- a/compiler-rt/lib/builtins/CMakeLists.txt
+++ b/compiler-rt/lib/builtins/CMakeLists.txt
@@ -29,6 +29,7 @@ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
     load_llvm_config()
   endif()
   construct_compiler_rt_default_triple()
+  setup_compiler_rt_output_dirs()
 
   include(SetPlatformToolchainTools)
   if(COMPILER_RT_TARGET_APPLE)



More information about the llvm-commits mailing list