[compiler-rt] [llvm] [openmp] [Runtimes] Default build must use its own output dirs (PR #168266)
Michael Kruse via llvm-commits
llvm-commits at lists.llvm.org
Sun Nov 16 14:21:01 PST 2025
https://github.com/Meinersbur updated https://github.com/llvm/llvm-project/pull/168266
>From ce507a8441c51fa6098fc34b31e4a5ea2466f71f Mon Sep 17 00:00:00 2001
From: Michael Kruse <llvm-project at meinersbur.de>
Date: Sun, 16 Nov 2025 13:17:42 +0100
Subject: [PATCH 1/4] [Runtimes] Default build must use its own output dir
---
runtimes/CMakeLists.txt | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/runtimes/CMakeLists.txt b/runtimes/CMakeLists.txt
index b17bd8f665361..d9fcac3a646b8 100644
--- a/runtimes/CMakeLists.txt
+++ b/runtimes/CMakeLists.txt
@@ -77,11 +77,6 @@ if (NOT LLVM_FOUND)
set(LLVM_LIBRARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX})
endif()
-# Setting these variables will allow the sub-build to put their outputs into
-# the library and bin directories of the top-level build.
-set(LLVM_LIBRARY_OUTPUT_INTDIR ${LLVM_LIBRARY_DIR})
-set(LLVM_RUNTIME_OUTPUT_INTDIR ${LLVM_TOOLS_BINARY_DIR})
-
# This variable makes sure that e.g. llvm-lit is found.
set(LLVM_MAIN_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../llvm)
set(LLVM_CMAKE_DIR ${LLVM_MAIN_SRC_DIR}/cmake/modules)
@@ -99,6 +94,17 @@ if (LLVM_LIBRARY_OUTPUT_INTDIR AND LLVM_RUNTIME_OUTPUT_INTDIR AND PACKAGE_VERSIO
set(LLVM_TREE_AVAILABLE ON)
endif()
+if(LLVM_TREE_AVAILABLE)
+ # Setting these variables will allow the sub-build to put their outputs into
+ # the library and bin directories of the top-level build.
+ set(LLVM_LIBRARY_OUTPUT_INTDIR ${LLVM_LIBRARY_DIR})
+ set(LLVM_RUNTIME_OUTPUT_INTDIR ${LLVM_TOOLS_BINARY_DIR})
+else()
+ # Use own build directory for artifact output.
+ set(LLVM_LIBRARY_OUTPUT_INTDIR "${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}")
+ set(LLVM_RUNTIME_OUTPUT_INTDIR "${CMAKE_BINARY_DIR}/bin")
+endif()
+
# CMake omits default compiler include paths, but in runtimes build, we use
# -nostdinc and -nostdinc++ and control include paths manually so this behavior
# is undesirable. Filtering CMAKE_{LANG}_IMPLICIT_INCLUDE_DIRECTORIES to remove
>From c8e73cae146ba31b77ab4ab79645b6be0993be4a Mon Sep 17 00:00:00 2001
From: Michael Kruse <llvm-project at meinersbur.de>
Date: Sun, 16 Nov 2025 13:39:14 +0100
Subject: [PATCH 2/4] Fix wrong uses of LLVM_RUNTIME_OUTPUT_INTDIR in
compiler-rt
---
compiler-rt/cmake/base-config-ix.cmake | 4 ++--
compiler-rt/lib/sanitizer_common/symbolizer/CMakeLists.txt | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/compiler-rt/cmake/base-config-ix.cmake b/compiler-rt/cmake/base-config-ix.cmake
index d92bc0e71fa1a..37dfa5534dfef 100644
--- a/compiler-rt/cmake/base-config-ix.cmake
+++ b/compiler-rt/cmake/base-config-ix.cmake
@@ -59,9 +59,9 @@ if (LLVM_TREE_AVAILABLE)
set(_host_executable_suffix ${CMAKE_EXECUTABLE_SUFFIX})
endif()
set(COMPILER_RT_TEST_COMPILER
- ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang${_host_executable_suffix})
+ ${LLVM_TOOLS_BINARY_DIR}/clang${_host_executable_suffix})
set(COMPILER_RT_TEST_CXX_COMPILER
- ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang++${_host_executable_suffix})
+ ${LLVM_TOOLS_BINARY_DIR}/clang++${_host_executable_suffix})
else()
# Take output dir and install path from the user.
set(COMPILER_RT_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH
diff --git a/compiler-rt/lib/sanitizer_common/symbolizer/CMakeLists.txt b/compiler-rt/lib/sanitizer_common/symbolizer/CMakeLists.txt
index ab37454acbe19..bb8298931c390 100644
--- a/compiler-rt/lib/sanitizer_common/symbolizer/CMakeLists.txt
+++ b/compiler-rt/lib/sanitizer_common/symbolizer/CMakeLists.txt
@@ -13,7 +13,7 @@ foreach(arch ${SANITIZER_COMMON_SUPPORTED_ARCH})
scripts/build_symbolizer.sh
WORKING_DIRECTORY ${RTSanitizerCommonSymbolizerInternalDir}
COMMAND FLAGS=${TARGET_CFLAGS}
- CLANG=${LLVM_RUNTIME_OUTPUT_INTDIR}/clang
+ CLANG=${LLVM_TOOLS_BINARY_DIR}/clang
${CMAKE_CURRENT_SOURCE_DIR}/scripts/build_symbolizer.sh
${CMAKE_CURRENT_BINARY_DIR}/RTSanitizerCommonSymbolizerInternal.${arch}.o
USES_TERMINAL)
>From e26b30d46ddcec5bf6c7c69aa963beea57794d69 Mon Sep 17 00:00:00 2001
From: Michael Kruse <llvm-project at meinersbur.de>
Date: Sun, 16 Nov 2025 13:49:51 +0100
Subject: [PATCH 3/4] Fix wrong uses of LLVM_RUNTIME_OUTPUT_INTDIR in
openmp/offload
---
offload/CMakeLists.txt | 12 ++++++------
offload/cmake/OpenMPTesting.cmake | 8 ++++----
offload/test/lit.site.cfg.in | 2 +-
openmp/CMakeLists.txt | 8 ++++----
openmp/cmake/OpenMPTesting.cmake | 4 ++--
5 files changed, 17 insertions(+), 17 deletions(-)
diff --git a/offload/CMakeLists.txt b/offload/CMakeLists.txt
index b277380783500..6e801b1d47011 100644
--- a/offload/CMakeLists.txt
+++ b/offload/CMakeLists.txt
@@ -90,18 +90,18 @@ else()
set(OPENMP_INSTALL_LIBDIR "lib${LLVM_LIBDIR_SUFFIX}")
if (NOT MSVC)
- set(OPENMP_TEST_C_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang)
- set(OPENMP_TEST_CXX_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang++)
+ set(OPENMP_TEST_C_COMPILER ${LLVM_TOOLS_BINARY_DIR}/clang)
+ set(OPENMP_TEST_CXX_COMPILER ${LLVM_TOOLS_BINARY_DIR}/clang++)
else()
- set(OPENMP_TEST_C_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang.exe)
- set(OPENMP_TEST_CXX_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang++.exe)
+ set(OPENMP_TEST_C_COMPILER ${LLVM_TOOLS_BINARY_DIR}/clang.exe)
+ set(OPENMP_TEST_CXX_COMPILER ${LLVM_TOOLS_BINARY_DIR}/clang++.exe)
endif()
# Check for flang
if (NOT MSVC)
- set(OPENMP_TEST_Fortran_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR}/flang)
+ set(OPENMP_TEST_Fortran_COMPILER ${LLVM_TOOLS_BINARY_DIR}/flang)
else()
- set(OPENMP_TEST_Fortran_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR}/flang.exe)
+ set(OPENMP_TEST_Fortran_COMPILER ${LLVM_TOOLS_BINARY_DIR}/flang.exe)
endif()
# Set fortran test compiler if flang is found
diff --git a/offload/cmake/OpenMPTesting.cmake b/offload/cmake/OpenMPTesting.cmake
index ef8cf34ba0c85..623909bb15415 100644
--- a/offload/cmake/OpenMPTesting.cmake
+++ b/offload/cmake/OpenMPTesting.cmake
@@ -68,12 +68,12 @@ else()
message(WARNING "The check targets will not be available!")
set(ENABLE_CHECK_TARGETS FALSE)
else()
- set(OPENMP_FILECHECK_EXECUTABLE ${LLVM_RUNTIME_OUTPUT_INTDIR}/FileCheck)
+ set(OPENMP_FILECHECK_EXECUTABLE ${LLVM_TOOLS_BINARY_DIR}/FileCheck)
endif()
- set(OPENMP_NOT_EXECUTABLE ${LLVM_RUNTIME_OUTPUT_INTDIR}/not)
+ set(OPENMP_NOT_EXECUTABLE ${LLVM_TOOLS_BINARY_DIR}/not)
endif()
-set(OFFLOAD_DEVICE_INFO_EXECUTABLE ${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-offload-device-info)
-set(OFFLOAD_TBLGEN_EXECUTABLE ${LLVM_RUNTIME_OUTPUT_INTDIR}/offload-tblgen)
+set(OFFLOAD_DEVICE_INFO_EXECUTABLE ${LLVM_TOOLS_BINARY_DIR}/llvm-offload-device-info)
+set(OFFLOAD_TBLGEN_EXECUTABLE ${LLVM_TOOLS_BINARY_DIR}/offload-tblgen)
# Macro to extract information about compiler from file. (no own scope)
macro(extract_test_compiler_information lang file)
diff --git a/offload/test/lit.site.cfg.in b/offload/test/lit.site.cfg.in
index 00f4e2b74a5b0..c8ba45c9683e2 100644
--- a/offload/test/lit.site.cfg.in
+++ b/offload/test/lit.site.cfg.in
@@ -1,6 +1,6 @@
@AUTO_GEN_COMMENT@
-config.bin_llvm_tools_dir = "@LLVM_RUNTIME_OUTPUT_INTDIR@"
+config.bin_llvm_tools_dir = "@LLVM_TOOLS_BINARY_DIR@"
config.test_c_compiler = "@OPENMP_TEST_C_COMPILER@"
config.test_cxx_compiler = "@OPENMP_TEST_CXX_COMPILER@"
config.test_fortran_compiler="@OPENMP_TEST_Fortran_COMPILER@"
diff --git a/openmp/CMakeLists.txt b/openmp/CMakeLists.txt
index 88be8c75abfe6..44cef3fb3f413 100644
--- a/openmp/CMakeLists.txt
+++ b/openmp/CMakeLists.txt
@@ -71,11 +71,11 @@ else()
endif()
if (NOT MSVC)
- set(OPENMP_TEST_C_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang)
- set(OPENMP_TEST_CXX_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang++)
+ set(OPENMP_TEST_C_COMPILER ${LLVM_TOOLS_BINARY_DIR}/clang)
+ set(OPENMP_TEST_CXX_COMPILER ${LLVM_TOOLS_BINARY_DIR}/clang++)
else()
- set(OPENMP_TEST_C_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang.exe)
- set(OPENMP_TEST_CXX_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang++.exe)
+ set(OPENMP_TEST_C_COMPILER ${LLVM_TOOLS_BINARY_DIR}/clang.exe)
+ set(OPENMP_TEST_CXX_COMPILER ${LLVM_TOOLS_BINARY_DIR}/clang++.exe)
endif()
# Set fortran test compiler if flang is found
diff --git a/openmp/cmake/OpenMPTesting.cmake b/openmp/cmake/OpenMPTesting.cmake
index 60280b7ed4893..262ea968c8351 100644
--- a/openmp/cmake/OpenMPTesting.cmake
+++ b/openmp/cmake/OpenMPTesting.cmake
@@ -68,9 +68,9 @@ else()
message(WARNING "The check targets will not be available!")
set(ENABLE_CHECK_TARGETS FALSE)
else()
- set(OPENMP_FILECHECK_EXECUTABLE ${LLVM_RUNTIME_OUTPUT_INTDIR}/FileCheck)
+ set(OPENMP_FILECHECK_EXECUTABLE ${LLVM_TOOLS_BINARY_DIR}/FileCheck)
endif()
- set(OPENMP_NOT_EXECUTABLE ${LLVM_RUNTIME_OUTPUT_INTDIR}/not)
+ set(OPENMP_NOT_EXECUTABLE ${LLVM_TOOLS_BINARY_DIR}/not)
endif()
# Macro to extract information about compiler from file. (no own scope)
>From 983ebe8280ddf50b7b48a2bfcc16c5bdf48d8616 Mon Sep 17 00:00:00 2001
From: Michael Kruse <llvm-project at meinersbur.de>
Date: Sun, 16 Nov 2025 18:27:56 +0100
Subject: [PATCH 4/4] config-specific dir
---
runtimes/CMakeLists.txt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/runtimes/CMakeLists.txt b/runtimes/CMakeLists.txt
index d9fcac3a646b8..415dc64bcb2f2 100644
--- a/runtimes/CMakeLists.txt
+++ b/runtimes/CMakeLists.txt
@@ -101,8 +101,8 @@ if(LLVM_TREE_AVAILABLE)
set(LLVM_RUNTIME_OUTPUT_INTDIR ${LLVM_TOOLS_BINARY_DIR})
else()
# Use own build directory for artifact output.
- set(LLVM_LIBRARY_OUTPUT_INTDIR "${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}")
- set(LLVM_RUNTIME_OUTPUT_INTDIR "${CMAKE_BINARY_DIR}/bin")
+ set(LLVM_LIBRARY_OUTPUT_INTDIR "${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX}")
+ set(LLVM_RUNTIME_OUTPUT_INTDIR "${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin")
endif()
# CMake omits default compiler include paths, but in runtimes build, we use
More information about the llvm-commits
mailing list