[PATCH] D118964: Fix broken 2-stage build when -tblgen tools may depend on runpath that is not yet built
Arcadiy Ivanov via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Feb 3 20:16:40 PST 2022
arcivanov created this revision.
arcivanov added reviewers: LLVM, clang.
arcivanov added projects: clang, LLVM.
Herald added a subscriber: mgorny.
arcivanov requested review of this revision.
Herald added a subscriber: cfe-commits.
In my case `-tblgen` tools in the **second stage** end up being built depending on `libc++.so`.
While the the dependency is correct and the tools are built successfully, `-tblgen` tools would not function until `libc++.so` is built in the `$ORIGIN/../lib`.
But `libc++.so` of the second stage cannot be built without second stage `llvm-tblgen` and `clang-tblgen` functioning.
This patch makes sure that in a bootstrapped build `llvm-tblgen`and `clang-tblgen` are always used from the bootstrap //even when not crosscompiling//.
See https://github.com/llvm/llvm-project/issues/53561 for extensive logs, printouts and cmake caches.
If accepted please also send to 13.x and 14.x.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D118964
Files:
clang/CMakeLists.txt
Index: clang/CMakeLists.txt
===================================================================
--- clang/CMakeLists.txt
+++ clang/CMakeLists.txt
@@ -747,6 +747,13 @@
-DCMAKE_ASM_COMPILER=${LLVM_RUNTIME_OUTPUT_INTDIR}/${C_COMPILER}
-DCMAKE_ASM_COMPILER_ID=Clang)
+ # If -tblgen is linked to libc++.so and it's not available in the system, the tool can't run
+ # since the runpath doesn't yet contain libc++.so, which can't be built without -tblgen
+ # See https://github.com/llvm/llvm-project/issues/53561
+ set(${CLANG_STAGE}_TABLEGEN
+ -DLLVM_TABLEGEN=${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-tblgen
+ -DCLANG_TABLEGEN=${LLVM_RUNTIME_OUTPUT_INTDIR}/clang-tblgen)
+
# cmake requires CMAKE_LINKER to be specified if the compiler is MSVC-like,
# otherwise it defaults the linker to be link.exe.
if(BOOTSTRAP_LLVM_ENABLE_LLD)
@@ -757,9 +764,6 @@
if(BOOTSTRAP_CMAKE_SYSTEM_NAME)
set(${CLANG_STAGE}_CONFIG -DLLVM_CONFIG_PATH=${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-config)
- set(${CLANG_STAGE}_TABLEGEN
- -DLLVM_TABLEGEN=${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-tblgen
- -DCLANG_TABLEGEN=${LLVM_RUNTIME_OUTPUT_INTDIR}/clang-tblgen)
if(BOOTSTRAP_CMAKE_SYSTEM_NAME STREQUAL "Linux")
if(BOOTSTRAP_LLVM_ENABLE_LLD)
set(${CLANG_STAGE}_LINKER -DCMAKE_LINKER=${LLVM_RUNTIME_OUTPUT_INTDIR}/ld.lld)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D118964.405862.patch
Type: text/x-patch
Size: 1344 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20220204/d8387670/attachment.bin>
More information about the cfe-commits
mailing list