[PATCH] D141581: [clang] Make clangBasic and clangDriver depend on LLVMTargetParser.
Francesco Petrogalli via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Jan 16 08:57:17 PST 2023
fpetrogalli added a comment.
@barannikov88 - Imam stuck with an incomplete explanation:
The issue raised by @mgorny is about stand-alone <https://llvm.org/docs/GettingStarted.html#stand-alone-builds> builds. In this build configuration, clang is built separately from LLVM, which is first build and installed in a folder.
When clang is build as a stand-alone project, clang does not have access to the cmake configuration of LLVM. Therefore it knows nothing about the tablegen target `RISCVTargetParserTableGen`.
The's why we see the following error when building stand-alone clang on `main`:
CMake Error at /Users/fpetrogalli/projects/cpu-defs/install/lib/cmake/llvm/AddLLVM.cmake:536 (add_dependencies):
The dependency target "RISCVTargetParserTableGen" of target
"obj.clangBasic" does not exist.
Call Stack (most recent call first):
cmake/modules/AddClang.cmake:106 (llvm_add_library)
lib/Basic/CMakeLists.txt:40 (add_clang_library)
I do not know why `LLVMTargetParser` (which is also specified in the cmake configuration of llvm) is instead recognised as a valid dependencies of clang on some LLVM library. Maybe because cmake looks in the prefix folder where LLVM was installed and finds the object file of the library?
FWIW, I was able to reproduce the issue reported by @mgorny via the following script when run on `main`:
#!/bin/sh
build_llvm=`pwd`/build-llvm
build_clang=`pwd`/build-clang
installprefix=`pwd`/install
llvm=`pwd`/llvm-project
mkdir -p $build_llvm
mkdir -p $installprefix
cmake -G Ninja -S $llvm/llvm -B $build_llvm \
-DLLVM_INSTALL_UTILS=ON \
-DCMAKE_INSTALL_PREFIX=$installprefix \
-DCMAKE_BUILD_TYPE=Release
ninja -C $build_llvm install
cmake -G Ninja -S $llvm/clang -B $build_clang \
-DLLVM_EXTERNAL_LIT=$build_llvm/utils/llvm-lit \
-DLLVM_ROOT=$installprefix
Given it was an issue that cmake itself was reporting (and not a build time failure), I thought that its disappearance after applying this patch was a signal thatI was doing the right thing.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D141581/new/
https://reviews.llvm.org/D141581
More information about the cfe-commits
mailing list