https://github.com/arsenm created 
https://github.com/llvm/llvm-project/pull/205133

Reverts llvm/llvm-project#203504

Breaks build pending #205130

>From 9783b3c3413133623d4fb6dc24daa77199bb50d6 Mon Sep 17 00:00:00 2001
From: Matt Arsenault <[email protected]>
Date: Mon, 22 Jun 2026 18:29:57 +0200
Subject: [PATCH] Revert "runtimes: Pass CMAKE_SYSTEM_NAME based on target
 triple (#203504)"

This reverts commit 6e4e181c83d076bb8e4c208ae28817f3900b23fa.
---
 clang/cmake/modules/ClangConfig.cmake.in      |  5 +-
 cmake/Modules/GetTripleCMakeSystemName.cmake  | 89 -------------------
 cmake/Modules/NormalizeTriple.cmake           | 36 --------
 llvm/cmake/modules/LLVMConfig.cmake.in        | 69 +++++++-------
 .../modules/LLVMExternalProjectUtils.cmake    | 64 ++++---------
 llvm/runtimes/CMakeLists.txt                  |  4 +
 runtimes/CMakeLists.txt                       | 18 +++-
 7 files changed, 73 insertions(+), 212 deletions(-)
 delete mode 100644 cmake/Modules/GetTripleCMakeSystemName.cmake
 delete mode 100644 cmake/Modules/NormalizeTriple.cmake

diff --git a/clang/cmake/modules/ClangConfig.cmake.in 
b/clang/cmake/modules/ClangConfig.cmake.in
index e199c7e17b6b7..68f723d050117 100644
--- a/clang/cmake/modules/ClangConfig.cmake.in
+++ b/clang/cmake/modules/ClangConfig.cmake.in
@@ -13,10 +13,7 @@ set(CLANG_LINK_CLANG_DYLIB "@CLANG_LINK_CLANG_DYLIB@")
 set(CLANG_DEFAULT_LINKER "@CLANG_DEFAULT_LINKER@")
 
 # Provide all our library targets to users.
-# Skip when cross-compiling, as host library targets are not usable.
-if(NOT CMAKE_CROSSCOMPILING)
-  @CLANG_CONFIG_INCLUDE_EXPORTS@
-endif()
+@CLANG_CONFIG_INCLUDE_EXPORTS@
 
 # By creating clang-tablegen-targets here, subprojects that depend on Clang's
 # tablegen-generated headers can always depend on this target whether building
diff --git a/cmake/Modules/GetTripleCMakeSystemName.cmake 
b/cmake/Modules/GetTripleCMakeSystemName.cmake
deleted file mode 100644
index 6cd8d3c59324e..0000000000000
--- a/cmake/Modules/GetTripleCMakeSystemName.cmake
+++ /dev/null
@@ -1,89 +0,0 @@
-#===--------------------------------------------------------------------===//
-#
-# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-# See https://llvm.org/LICENSE.txt for details.
-# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-#
-#===--------------------------------------------------------------------===//
-
-# Extract the OS component from a target triple and map it to the
-# corresponding CMake system name.
-#
-# Usage:
-#   get_triple_cmake_system_name(<triple> <out_var>)
-#
-# Parses the triple (arch-vendor-os[-env]) and sets <out_var> to the
-# CMake-style system name (e.g. "Darwin", "Linux", "Windows").
-# Unrecognized OS values are mapped to "Generic". This expects a
-# normalized triple.
-
-function(get_triple_cmake_system_name triple out_var)
-  string(REPLACE "-" ";" _components "${triple}")
-  list(LENGTH _components _len)
-  if(_len LESS 3)
-    set(${out_var} "${CMAKE_HOST_SYSTEM_NAME}" PARENT_SCOPE)
-    return()
-  endif()
-
-  list(GET _components 1 _vendor)
-  list(GET _components 2 _os)
-  set(_env "")
-  if(_len GREATER_EQUAL 4)
-    list(GET _components 3 _env)
-  endif()
-
-  # Check the special environment components first, since it can
-  # override the usual OS mapping.
-  if("${_env}" MATCHES "^android")
-    set(${out_var} "Android" PARENT_SCOPE)
-  elseif("${_env}" MATCHES "^cygnus")
-    set(${out_var} "CYGWIN" PARENT_SCOPE)
-  elseif("${_os}" MATCHES "^darwin|^macos")
-    set(${out_var} "Darwin" PARENT_SCOPE)
-  elseif("${_os}" MATCHES "^ios")
-    set(${out_var} "iOS" PARENT_SCOPE)
-  elseif("${_os}" MATCHES "^tvos")
-    set(${out_var} "tvOS" PARENT_SCOPE)
-  elseif("${_os}" MATCHES "^watchos")
-    set(${out_var} "watchOS" PARENT_SCOPE)
-  elseif("${_os}" MATCHES "^xros|^visionos")
-    set(${out_var} "visionOS" PARENT_SCOPE)
-  elseif("${_vendor}" STREQUAL "apple")
-    # Catch-all for other Apple triples (e.g. driverkit, bridgeos).
-    set(${out_var} "Darwin" PARENT_SCOPE)
-  elseif("${_os}" MATCHES "^linux")
-    set(${out_var} "Linux" PARENT_SCOPE)
-  elseif("${_os}" MATCHES "^windows")
-    set(${out_var} "Windows" PARENT_SCOPE)
-  elseif("${_os}" MATCHES "^freebsd|^kfreebsd")
-    set(${out_var} "FreeBSD" PARENT_SCOPE)
-  elseif("${_os}" MATCHES "^netbsd")
-    set(${out_var} "NetBSD" PARENT_SCOPE)
-  elseif("${_os}" MATCHES "^openbsd")
-    set(${out_var} "OpenBSD" PARENT_SCOPE)
-  elseif("${_os}" MATCHES "^dragonfly")
-    set(${out_var} "DragonFly" PARENT_SCOPE)
-  elseif("${_os}" MATCHES "^solaris")
-    set(${out_var} "SunOS" PARENT_SCOPE)
-  elseif("${_os}" MATCHES "^aix")
-    set(${out_var} "AIX" PARENT_SCOPE)
-  elseif("${_os}" MATCHES "^fuchsia")
-    set(${out_var} "Fuchsia" PARENT_SCOPE)
-  elseif("${_os}" MATCHES "^haiku")
-    set(${out_var} "Haiku" PARENT_SCOPE)
-  elseif("${_os}" MATCHES "^emscripten")
-    set(${out_var} "Emscripten" PARENT_SCOPE)
-  elseif("${_os}" MATCHES "^wasi")
-    set(${out_var} "WASI" PARENT_SCOPE)
-  elseif("${_os}" MATCHES "^rtems")
-    set(${out_var} "RTEMS" PARENT_SCOPE)
-  elseif("${_os}" MATCHES "^zos")
-    set(${out_var} "OS390" PARENT_SCOPE)
-  elseif("${_os}" MATCHES "^hurd")
-    set(${out_var} "GNU" PARENT_SCOPE)
-  elseif("${_os}" MATCHES "^serenity")
-    set(${out_var} "SerenityOS" PARENT_SCOPE)
-  else()
-    set(${out_var} "Generic" PARENT_SCOPE)
-  endif()
-endfunction()
diff --git a/cmake/Modules/NormalizeTriple.cmake 
b/cmake/Modules/NormalizeTriple.cmake
deleted file mode 100644
index 08f09a22bdbb0..0000000000000
--- a/cmake/Modules/NormalizeTriple.cmake
+++ /dev/null
@@ -1,36 +0,0 @@
-#===--------------------------------------------------------------------===//
-#
-# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-# See https://llvm.org/LICENSE.txt for details.
-# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-#
-#===--------------------------------------------------------------------===//
-
-# Normalize a target triple using clang's -print-target-triple.
-#
-# Usage:
-#   normalize_triple(<compiler> <triple> <out_var>)
-#
-# Runs <compiler> --target=<triple> -print-target-triple to produce a
-# canonical triple. If the compiler invocation fails (e.g. the compiler
-# is not clang), <triple> is returned unchanged.
-
-function(normalize_triple compiler triple out_var)
-  set(_prefix "")
-  if(CMAKE_C_COMPILER_FRONTEND_VARIANT MATCHES "MSVC")
-    set(_prefix "/clang:")
-  endif()
-  execute_process(
-    COMMAND "${compiler}" "${_prefix}--target=${triple}" 
"${_prefix}-print-target-triple"
-    RESULT_VARIABLE _result
-    OUTPUT_VARIABLE _output
-    OUTPUT_STRIP_TRAILING_WHITESPACE
-    ERROR_QUIET)
-  if(_result EQUAL 0 AND _output)
-    set(${out_var} "${_output}" PARENT_SCOPE)
-  else()
-    # TODO(#97876): Report an error.
-    message(WARNING "Failed to execute `${compiler} 
${_prefix}--target=${triple} ${_prefix}-print-target-triple` to normalize 
target triple.")
-    set(${out_var} "${triple}" PARENT_SCOPE)
-  endif()
-endfunction()
diff --git a/llvm/cmake/modules/LLVMConfig.cmake.in 
b/llvm/cmake/modules/LLVMConfig.cmake.in
index 6ef0cef7d0296..300c25e7c6101 100644
--- a/llvm/cmake/modules/LLVMConfig.cmake.in
+++ b/llvm/cmake/modules/LLVMConfig.cmake.in
@@ -56,47 +56,52 @@ set(LLVM_ENABLE_ASSERTIONS @LLVM_ENABLE_ASSERTIONS@)
 set(LLVM_ENABLE_EH @LLVM_ENABLE_EH@)
 
 set(LLVM_ENABLE_FFI @LLVM_ENABLE_FFI@)
+if(LLVM_ENABLE_FFI)
+  find_package(FFI)
+endif()
+
 set(LLVM_ENABLE_RTTI @LLVM_ENABLE_RTTI@)
+
+set(LLVM_ENABLE_LIBEDIT @HAVE_LIBEDIT@)
+if(LLVM_ENABLE_LIBEDIT)
+  find_package(LibEdit)
+endif()
+
 set(LLVM_ENABLE_THREADS @LLVM_ENABLE_THREADS@)
+
 set(LLVM_ENABLE_UNWIND_TABLES @LLVM_ENABLE_UNWIND_TABLES@)
+
 set(LLVM_ENABLE_ZLIB @LLVM_ENABLE_ZLIB@)
+if(LLVM_ENABLE_ZLIB)
+  set(ZLIB_ROOT @ZLIB_ROOT@)
+  find_package(ZLIB)
+endif()
+
 set(LLVM_ENABLE_ZSTD @LLVM_ENABLE_ZSTD@)
+if(LLVM_ENABLE_ZSTD)
+  find_package(zstd)
+endif()
+
 set(LLVM_ENABLE_LIBXML2 @LLVM_ENABLE_LIBXML2@)
+if(LLVM_ENABLE_LIBXML2)
+  find_package(LibXml2)
+endif()
+
 set(LLVM_ENABLE_CURL @LLVM_ENABLE_CURL@)
+if(LLVM_ENABLE_CURL)
+  find_package(CURL)
+endif()
+
 set(LLVM_ENABLE_HTTPLIB @LLVM_ENABLE_HTTPLIB@)
+if(LLVM_ENABLE_HTTPLIB)
+  find_package(httplib)
+endif()
+
 set(LLVM_WITH_Z3 @LLVM_WITH_Z3@)
-set(LLVM_ENABLE_DIA_SDK @LLVM_ENABLE_DIA_SDK@)
-set(LLVM_ENABLE_LIBEDIT @HAVE_LIBEDIT@)
 
-# These are host libraries that LLVM was built with. Only find them when the
-# consumer can actually use them (i.e. not when cross-compiling for an
-# incompatible target).
-if(NOT CMAKE_CROSSCOMPILING)
-  if(LLVM_ENABLE_FFI)
-    find_package(FFI)
-  endif()
-  if(LLVM_ENABLE_LIBEDIT)
-    find_package(LibEdit)
-  endif()
-  if(LLVM_ENABLE_ZLIB)
-    set(ZLIB_ROOT @ZLIB_ROOT@)
-    find_package(ZLIB)
-  endif()
-  if(LLVM_ENABLE_ZSTD)
-    find_package(zstd)
-  endif()
-  if(LLVM_ENABLE_LIBXML2)
-    find_package(LibXml2)
-  endif()
-  if(LLVM_ENABLE_CURL)
-    find_package(CURL)
-  endif()
-  if(LLVM_ENABLE_HTTPLIB)
-    find_package(httplib)
-  endif()
-  if(LLVM_ENABLE_DIA_SDK)
-    find_package(DIASDK)
-  endif()
+set(LLVM_ENABLE_DIA_SDK @LLVM_ENABLE_DIA_SDK@)
+if(LLVM_ENABLE_DIA_SDK)
+  find_package(DIASDK)
 endif()
 
 set(LLVM_NATIVE_ARCH @LLVM_NATIVE_ARCH@)
@@ -147,7 +152,7 @@ set(LLVM_ENABLE_SHARED_LIBS @BUILD_SHARED_LIBS@)
 set(LLVM_DEFAULT_EXTERNAL_LIT "@LLVM_CONFIG_DEFAULT_EXTERNAL_LIT@")
 set(LLVM_LIT_ARGS "@LLVM_LIT_ARGS@")
 
-if(NOT TARGET LLVMSupport AND NOT CMAKE_CROSSCOMPILING)
+if(NOT TARGET LLVMSupport)
   @LLVM_CONFIG_INCLUDE_EXPORTS@
   @llvm_config_include_buildtree_only_exports@
 endif()
diff --git a/llvm/cmake/modules/LLVMExternalProjectUtils.cmake 
b/llvm/cmake/modules/LLVMExternalProjectUtils.cmake
index 9567792e664e4..ee270d70a778d 100644
--- a/llvm/cmake/modules/LLVMExternalProjectUtils.cmake
+++ b/llvm/cmake/modules/LLVMExternalProjectUtils.cmake
@@ -84,6 +84,12 @@ function(llvm_ExternalProject_Add name source_dir)
     endif()
   endforeach()
 
+  # If CMAKE_SYSTEM_NAME is not set explicitly in the arguments passed to us,
+  # reflect CMake's own default.
+  if (NOT _cmake_system_name)
+    set(_cmake_system_name "${CMAKE_HOST_SYSTEM_NAME}")
+  endif()
+
   if(NOT ARG_TARGET_TRIPLE)
     set(target_triple ${LLVM_DEFAULT_TARGET_TRIPLE})
   else()
@@ -92,36 +98,6 @@ function(llvm_ExternalProject_Add name source_dir)
 
   is_msvc_triple(is_msvc_target "${target_triple}")
 
-  if(ARG_USE_TOOLCHAIN AND NOT CMAKE_CROSSCOMPILING)
-    set(_cmake_c_compiler 
"${LLVM_RUNTIME_OUTPUT_INTDIR}/clang${CMAKE_EXECUTABLE_SUFFIX}")
-    set(_cmake_cxx_compiler 
"${LLVM_RUNTIME_OUTPUT_INTDIR}/clang++${CMAKE_EXECUTABLE_SUFFIX}")
-    set(_cmake_asm_compiler "${_cmake_c_compiler}")
-    if(is_msvc_target)
-      set(_cmake_c_compiler 
"${LLVM_RUNTIME_OUTPUT_INTDIR}/clang-cl${CMAKE_EXECUTABLE_SUFFIX}")
-      set(_cmake_cxx_compiler "${_cmake_c_compiler}")
-      set(_cmake_asm_compiler "${_cmake_c_compiler}")
-    endif()
-  else()
-    set(_cmake_c_compiler "${CMAKE_C_COMPILER}")
-    set(_cmake_cxx_compiler "${CMAKE_CXX_COMPILER}")
-    set(_cmake_asm_compiler "${CMAKE_C_COMPILER}")
-  endif()
-
-  # If CMAKE_SYSTEM_NAME is not set explicitly in the arguments passed to us,
-  # derive it from the target triple if available, otherwise reflect CMake's
-  # own default. This ensures that cross-compilation targets get the correct
-  # platform files (e.g. AMDGPU targets on a Darwin host won't get macOS 
flags).
-  if (NOT _cmake_system_name)
-    if(ARG_TARGET_TRIPLE)
-      include(NormalizeTriple)
-      normalize_triple("${_cmake_c_compiler}" "${ARG_TARGET_TRIPLE}" 
_normalized_triple)
-      include(GetTripleCMakeSystemName)
-      get_triple_cmake_system_name("${_normalized_triple}" _cmake_system_name)
-    else()
-      set(_cmake_system_name "${CMAKE_HOST_SYSTEM_NAME}")
-    endif()
-  endif()
-
   if(NOT ARG_TOOLCHAIN_TOOLS)
     set(ARG_TOOLCHAIN_TOOLS clang)
     if (ARG_ENABLE_FORTRAN)
@@ -255,9 +231,15 @@ function(llvm_ExternalProject_Add name source_dir)
 
   if(ARG_USE_TOOLCHAIN AND NOT CMAKE_CROSSCOMPILING)
     if(CLANG_IN_TOOLCHAIN)
-      set(compiler_args -DCMAKE_C_COMPILER=${_cmake_c_compiler}
-                        -DCMAKE_CXX_COMPILER=${_cmake_cxx_compiler}
-                        -DCMAKE_ASM_COMPILER=${_cmake_asm_compiler})
+      if(is_msvc_target)
+        set(compiler_args 
-DCMAKE_C_COMPILER=${LLVM_RUNTIME_OUTPUT_INTDIR}/clang-cl${CMAKE_EXECUTABLE_SUFFIX}
+                          
-DCMAKE_CXX_COMPILER=${LLVM_RUNTIME_OUTPUT_INTDIR}/clang-cl${CMAKE_EXECUTABLE_SUFFIX}
+                          
-DCMAKE_ASM_COMPILER=${LLVM_RUNTIME_OUTPUT_INTDIR}/clang-cl${CMAKE_EXECUTABLE_SUFFIX})
+      else()
+        set(compiler_args 
-DCMAKE_C_COMPILER=${LLVM_RUNTIME_OUTPUT_INTDIR}/clang${CMAKE_EXECUTABLE_SUFFIX}
+                          
-DCMAKE_CXX_COMPILER=${LLVM_RUNTIME_OUTPUT_INTDIR}/clang++${CMAKE_EXECUTABLE_SUFFIX}
+                          
-DCMAKE_ASM_COMPILER=${LLVM_RUNTIME_OUTPUT_INTDIR}/clang${CMAKE_EXECUTABLE_SUFFIX})
+      endif()
     endif()
     if(FLANG_IN_TOOLCHAIN)
       list(APPEND compiler_args 
-DCMAKE_Fortran_COMPILER=${LLVM_RUNTIME_OUTPUT_INTDIR}/flang${CMAKE_EXECUTABLE_SUFFIX})
@@ -397,22 +379,6 @@ function(llvm_ExternalProject_Add name source_dir)
     list(APPEND compiler_args -DCMAKE_CXX_COMPILER_TARGET=${ARG_TARGET_TRIPLE})
     list(APPEND compiler_args 
-DCMAKE_Fortran_COMPILER_TARGET=${ARG_TARGET_TRIPLE})
     list(APPEND compiler_args -DCMAKE_ASM_COMPILER_TARGET=${ARG_TARGET_TRIPLE})
-
-    # Pass CMAKE_SYSTEM_NAME derived from the target triple so the sub-build
-    # loads the correct platform files instead of the host's.
-    if(NOT "${_cmake_system_name}" STREQUAL "${CMAKE_HOST_SYSTEM_NAME}")
-      list(APPEND compiler_args -DCMAKE_SYSTEM_NAME=${_cmake_system_name})
-    endif()
-
-    # Forward Darwin-specific variables only when targeting Darwin.
-    if("${_cmake_system_name}" STREQUAL "Darwin")
-      if(CMAKE_OSX_SYSROOT)
-        list(APPEND compiler_args -DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT})
-      endif()
-      if(CMAKE_OSX_DEPLOYMENT_TARGET)
-        list(APPEND compiler_args 
-DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET})
-      endif()
-    endif()
   endif()
 
   if(CMAKE_VERBOSE_MAKEFILE)
diff --git a/llvm/runtimes/CMakeLists.txt b/llvm/runtimes/CMakeLists.txt
index af50413c9b0b7..6d81b26d2d416 100644
--- a/llvm/runtimes/CMakeLists.txt
+++ b/llvm/runtimes/CMakeLists.txt
@@ -4,6 +4,10 @@
 # the two files.
 
 set(COMMON_CMAKE_ARGS 
"-DHAVE_LLVM_LIT=ON;-DCLANG_RESOURCE_DIR=${CLANG_RESOURCE_DIR}")
+if(APPLE AND CMAKE_OSX_SYSROOT AND (LLVM_TARGET_TRIPLE STREQUAL 
LLVM_HOST_TRIPLE))
+  # Only propagate the host sysroot for native runtimes builds.
+  list(APPEND RUNTIMES_CMAKE_ARGS "-DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT}")
+endif()
 foreach(proj ${LLVM_ENABLE_RUNTIMES})
   string(TOUPPER "${proj}" canon_name)
   STRING(REGEX REPLACE "-" "_" canon_name ${canon_name})
diff --git a/runtimes/CMakeLists.txt b/runtimes/CMakeLists.txt
index 36ebe594edc0d..0a84ef3957f76 100644
--- a/runtimes/CMakeLists.txt
+++ b/runtimes/CMakeLists.txt
@@ -228,8 +228,22 @@ message(STATUS "LLVM default target triple: 
${LLVM_DEFAULT_TARGET_TRIPLE}")
 set(LLVM_TARGET_TRIPLE "${LLVM_DEFAULT_TARGET_TRIPLE}")
 
 if(CMAKE_C_COMPILER_ID MATCHES "Clang")
-  include(NormalizeTriple)
-  normalize_triple("${CMAKE_C_COMPILER}" "${LLVM_DEFAULT_TARGET_TRIPLE}" 
LLVM_DEFAULT_TARGET_TRIPLE)
+  set(option_prefix "")
+  if (CMAKE_C_COMPILER_FRONTEND_VARIANT MATCHES "MSVC")
+    set(option_prefix "/clang:")
+  endif()
+  set(print_target_triple ${CMAKE_C_COMPILER} 
${option_prefix}--target=${LLVM_DEFAULT_TARGET_TRIPLE} 
${option_prefix}-print-target-triple)
+  execute_process(COMMAND ${print_target_triple}
+    RESULT_VARIABLE result
+    OUTPUT_VARIABLE output
+    OUTPUT_STRIP_TRAILING_WHITESPACE)
+  if(result EQUAL 0)
+    set(LLVM_DEFAULT_TARGET_TRIPLE ${output})
+  else()
+    string(REPLACE ";" " " print_target_triple "${print_target_triple}")
+    # TODO(#97876): Report an error.
+    message(WARNING "Failed to execute `${print_target_triple}` to normalize 
target triple.")
+  endif()
 endif()
 
 # Determine output and install paths based on LLVM_TARGET_TRIPLE

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to