tools/build/feature/Makefile | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
Perf build auto-detects features and packages already installed
for its build. This is done in directory tools/build/feature. This
directory contains small sample programs. When they successfully
compile the necessary prereqs in form of libraries and header
files are present.
Such a check is also done for clang. And this check fails.
Fix this and update to the latest C++ standard and use the
new library provided by clang (which contains new packaging)
see this link for reference:
https://fedoraproject.org/wiki/Changes/Stop-Shipping-Individual-Component-Libraries-In-clang-lib-Package
Output before:
# rm -f ./test-clang.bin; make test-clang.bin; ./test-clang.bin; \
ll test-clang.make.output
g++ -MD -Wall -Werror -o test-clang.bin test-clang.cpp \
> test-clang.make.output 2>&1 -std=gnu++14 \
-I/usr/include \
-L/usr/lib64 \
-Wl,--start-group -lclangBasic -lclangDriver \
-lclangFrontend -lclangEdit -lclangLex \
-lclangAST -Wl,--end-group \
-lLLVM-16 \
\
> test-clang.make.output 2>&1
make: *** [Makefile:356: test-clang.bin] Error 1
-bash: ./test-clang.bin: No such file or directory
-rw-r--r--. 1 root root 252041 Jul 12 09:56 test-clang.make.output
#
File test-clang.make.output contains many lines of unreferenced
symbols.
Output after:
# rm -f ./test-clang.bin; make test-clang.bin; ./test-clang.bin; \
cat test-clang.make.output
g++ -MD -Wall -Werror -o test-clang.bin test-clang.cpp \
> test-clang.make.output 2>&1 -std=gnu++17 \
-I/usr/include \
-L/usr/lib64 \
-Wl,--start-group -lclang-cpp -Wl,--end-group \
-lLLVM-16 \
\
> test-clang.make.output 2>&1
#
Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
---
tools/build/feature/Makefile | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile
index f8db69654791..0b4a6e43c5cc 100644
--- a/tools/build/feature/Makefile
+++ b/tools/build/feature/Makefile
@@ -353,12 +353,10 @@ $(OUTPUT)test-llvm-version.bin:
> $(@:.bin=.make.output) 2>&1
$(OUTPUT)test-clang.bin:
- $(BUILDXX) -std=gnu++14 \
+ $(BUILDXX) -std=gnu++17 \
-I$(shell $(LLVM_CONFIG) --includedir) \
-L$(shell $(LLVM_CONFIG) --libdir) \
- -Wl,--start-group -lclangBasic -lclangDriver \
- -lclangFrontend -lclangEdit -lclangLex \
- -lclangAST -Wl,--end-group \
+ -Wl,--start-group -lclang-cpp -Wl,--end-group \
$(shell $(LLVM_CONFIG) --libs Core option) \
$(shell $(LLVM_CONFIG) --system-libs) \
> $(@:.bin=.make.output) 2>&1
--
2.41.0
On Wed, Jul 12, 2023 at 1:35 AM Thomas Richter <tmricht@linux.ibm.com> wrote: > > Perf build auto-detects features and packages already installed > for its build. This is done in directory tools/build/feature. This > directory contains small sample programs. When they successfully > compile the necessary prereqs in form of libraries and header > files are present. > > Such a check is also done for clang. And this check fails. > > Fix this and update to the latest C++ standard and use the > new library provided by clang (which contains new packaging) > see this link for reference: > https://fedoraproject.org/wiki/Changes/Stop-Shipping-Individual-Component-Libraries-In-clang-lib-Package > > Output before: > # rm -f ./test-clang.bin; make test-clang.bin; ./test-clang.bin; \ > ll test-clang.make.output > g++ -MD -Wall -Werror -o test-clang.bin test-clang.cpp \ > > test-clang.make.output 2>&1 -std=gnu++14 \ > -I/usr/include \ > -L/usr/lib64 \ > -Wl,--start-group -lclangBasic -lclangDriver \ > -lclangFrontend -lclangEdit -lclangLex \ > -lclangAST -Wl,--end-group \ > -lLLVM-16 \ > \ > > test-clang.make.output 2>&1 > make: *** [Makefile:356: test-clang.bin] Error 1 > -bash: ./test-clang.bin: No such file or directory > -rw-r--r--. 1 root root 252041 Jul 12 09:56 test-clang.make.output > # > > File test-clang.make.output contains many lines of unreferenced > symbols. > > Output after: > # rm -f ./test-clang.bin; make test-clang.bin; ./test-clang.bin; \ > cat test-clang.make.output > g++ -MD -Wall -Werror -o test-clang.bin test-clang.cpp \ > > test-clang.make.output 2>&1 -std=gnu++17 \ > -I/usr/include \ > -L/usr/lib64 \ > -Wl,--start-group -lclang-cpp -Wl,--end-group \ > -lLLVM-16 \ > \ > > test-clang.make.output 2>&1 > # > > Signed-off-by: Thomas Richter <tmricht@linux.ibm.com> Tested-by: Ian Rogers <irogers@google.com> Thanks! Ian > --- > tools/build/feature/Makefile | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile > index f8db69654791..0b4a6e43c5cc 100644 > --- a/tools/build/feature/Makefile > +++ b/tools/build/feature/Makefile > @@ -353,12 +353,10 @@ $(OUTPUT)test-llvm-version.bin: > > $(@:.bin=.make.output) 2>&1 > > $(OUTPUT)test-clang.bin: > - $(BUILDXX) -std=gnu++14 \ > + $(BUILDXX) -std=gnu++17 \ > -I$(shell $(LLVM_CONFIG) --includedir) \ > -L$(shell $(LLVM_CONFIG) --libdir) \ > - -Wl,--start-group -lclangBasic -lclangDriver \ > - -lclangFrontend -lclangEdit -lclangLex \ > - -lclangAST -Wl,--end-group \ > + -Wl,--start-group -lclang-cpp -Wl,--end-group \ > $(shell $(LLVM_CONFIG) --libs Core option) \ > $(shell $(LLVM_CONFIG) --system-libs) \ > > $(@:.bin=.make.output) 2>&1 > -- > 2.41.0 >
On Wed, Jul 12, 2023 at 8:02 PM Ian Rogers <irogers@google.com> wrote: > > On Wed, Jul 12, 2023 at 1:35 AM Thomas Richter <tmricht@linux.ibm.com> wrote: > > > > Perf build auto-detects features and packages already installed > > for its build. This is done in directory tools/build/feature. This > > directory contains small sample programs. When they successfully > > compile the necessary prereqs in form of libraries and header > > files are present. > > > > Such a check is also done for clang. And this check fails. > > > > Fix this and update to the latest C++ standard and use the > > new library provided by clang (which contains new packaging) > > see this link for reference: > > https://fedoraproject.org/wiki/Changes/Stop-Shipping-Individual-Component-Libraries-In-clang-lib-Package > > > > Output before: > > # rm -f ./test-clang.bin; make test-clang.bin; ./test-clang.bin; \ > > ll test-clang.make.output > > g++ -MD -Wall -Werror -o test-clang.bin test-clang.cpp \ > > > test-clang.make.output 2>&1 -std=gnu++14 \ > > -I/usr/include \ > > -L/usr/lib64 \ > > -Wl,--start-group -lclangBasic -lclangDriver \ > > -lclangFrontend -lclangEdit -lclangLex \ > > -lclangAST -Wl,--end-group \ > > -lLLVM-16 \ > > \ > > > test-clang.make.output 2>&1 > > make: *** [Makefile:356: test-clang.bin] Error 1 > > -bash: ./test-clang.bin: No such file or directory > > -rw-r--r--. 1 root root 252041 Jul 12 09:56 test-clang.make.output > > # > > > > File test-clang.make.output contains many lines of unreferenced > > symbols. > > > > Output after: > > # rm -f ./test-clang.bin; make test-clang.bin; ./test-clang.bin; \ > > cat test-clang.make.output > > g++ -MD -Wall -Werror -o test-clang.bin test-clang.cpp \ > > > test-clang.make.output 2>&1 -std=gnu++17 \ > > -I/usr/include \ > > -L/usr/lib64 \ > > -Wl,--start-group -lclang-cpp -Wl,--end-group \ > > -lLLVM-16 \ > > \ > > > test-clang.make.output 2>&1 > > # > > > > Signed-off-by: Thomas Richter <tmricht@linux.ibm.com> > > Tested-by: Ian Rogers <irogers@google.com> Ah, presumably obsolete to: https://lore.kernel.org/linux-perf-users/20230712083037.4081444-1-tmricht@linux.ibm.com/ Thanks, Ian > Thanks! > Ian > > > --- > > tools/build/feature/Makefile | 6 ++---- > > 1 file changed, 2 insertions(+), 4 deletions(-) > > > > diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile > > index f8db69654791..0b4a6e43c5cc 100644 > > --- a/tools/build/feature/Makefile > > +++ b/tools/build/feature/Makefile > > @@ -353,12 +353,10 @@ $(OUTPUT)test-llvm-version.bin: > > > $(@:.bin=.make.output) 2>&1 > > > > $(OUTPUT)test-clang.bin: > > - $(BUILDXX) -std=gnu++14 \ > > + $(BUILDXX) -std=gnu++17 \ > > -I$(shell $(LLVM_CONFIG) --includedir) \ > > -L$(shell $(LLVM_CONFIG) --libdir) \ > > - -Wl,--start-group -lclangBasic -lclangDriver \ > > - -lclangFrontend -lclangEdit -lclangLex \ > > - -lclangAST -Wl,--end-group \ > > + -Wl,--start-group -lclang-cpp -Wl,--end-group \ > > $(shell $(LLVM_CONFIG) --libs Core option) \ > > $(shell $(LLVM_CONFIG) --system-libs) \ > > > $(@:.bin=.make.output) 2>&1 > > -- > > 2.41.0 > >
© 2016 - 2026 Red Hat, Inc.