diff --git a/0003-Driver-Add-a-gcc-equivalent-triple-to-the-list-of-tr.patch b/0001-Driver-Add-a-gcc-equivalent-triple-to-the-list-of-tr.patch similarity index 100% rename from 0003-Driver-Add-a-gcc-equivalent-triple-to-the-list-of-tr.patch rename to 0001-Driver-Add-a-gcc-equivalent-triple-to-the-list-of-tr.patch diff --git a/0001-Mark-fopenmp-implicit-rpath-as-NoArgumentUnused.patch b/0001-Mark-fopenmp-implicit-rpath-as-NoArgumentUnused.patch new file mode 100644 index 0000000000000000000000000000000000000000..87c9b931c2e7623911047bc471c5388ecf14ab15 --- /dev/null +++ b/0001-Mark-fopenmp-implicit-rpath-as-NoArgumentUnused.patch @@ -0,0 +1,29 @@ +From 537e325f180d3d82bbef64aac71efcb0256d6916 Mon Sep 17 00:00:00 2001 +From: Nikita Popov +Date: Fri, 2 Sep 2022 16:30:15 +0200 +Subject: [PATCH] Mark fopenmp-implicit-rpath as NoArgumentUnused + +We pass this option unconditionally in LDFLAGS, make sure this +does not warn if openmp is not used, as this may break some +build systems. +--- + clang/include/clang/Driver/Options.td | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td +index d921ea5d5da9..d883fd3a8f04 100644 +--- a/clang/include/clang/Driver/Options.td ++++ b/clang/include/clang/Driver/Options.td +@@ -4118,7 +4118,8 @@ defm openmp_implicit_rpath: BoolFOption<"openmp-implicit-rpath", + LangOpts<"OpenMP">, + DefaultTrue, + PosFlag, +- NegFlag>; ++ NegFlag, ++ BothFlags<[NoArgumentUnused]>>; + def r : Flag<["-"], "r">, Flags<[LinkerInput,NoArgumentUnused]>, + Group; + def save_temps_EQ : Joined<["-", "--"], "save-temps=">, Flags<[CC1Option, FlangOption, NoXarchOption]>, +-- +2.37.2 + diff --git a/0000-PATCH-clang-Reorganize-gtest-integration.patch b/0001-PATCH-clang-Reorganize-gtest-integration.patch similarity index 100% rename from 0000-PATCH-clang-Reorganize-gtest-integration.patch rename to 0001-PATCH-clang-Reorganize-gtest-integration.patch diff --git a/0001-Take-into-account-Fedora-Specific-install-dir-for-li.patch b/0001-Take-into-account-Fedora-Specific-install-dir-for-li.patch new file mode 100644 index 0000000000000000000000000000000000000000..4a8fda9693b8cbdcfd2e41ec6acaba1de74feccc --- /dev/null +++ b/0001-Take-into-account-Fedora-Specific-install-dir-for-li.patch @@ -0,0 +1,45 @@ +From a85305a801c39720d7ec1c9441a88fef1ac19435 Mon Sep 17 00:00:00 2001 +From: serge-sans-paille +Date: Fri, 9 Sep 2022 10:17:01 +0200 +Subject: [PATCH] Take into account Fedora Specific install dir for libunwind + +--- + clang/lib/Driver/ToolChains/CommonArgs.cpp | 8 +++++++- + clang/test/Driver/linux-ld.c | 2 +- + 2 files changed, 8 insertions(+), 2 deletions(-) + +diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp +index 443725f..c1401a6 100644 +--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp ++++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp +@@ -1529,7 +1529,13 @@ static void AddUnwindLibrary(const ToolChain &TC, const Driver &D, + CmdArgs.push_back("-lgcc_s"); + break; + } +- case ToolChain::UNW_CompilerRT: ++ case ToolChain::UNW_CompilerRT: { ++ SmallString<256> DefaultLibPath = ++ llvm::sys::path::parent_path(TC.getDriver().Dir); ++ llvm::sys::path::append(DefaultLibPath, Twine("lib") + CLANG_LIBDIR_SUFFIX); ++ CmdArgs.push_back( ++ strdup(("-L" + DefaultLibPath + "/llvm-unwind").str().c_str())); ++ } + if (TC.getTriple().isOSAIX()) { + // AIX only has libunwind as a shared library. So do not pass + // anything in if -static is specified. +diff --git a/clang/test/Driver/linux-ld.c b/clang/test/Driver/linux-ld.c +index e76b35d..dfb8eca 100644 +--- a/clang/test/Driver/linux-ld.c ++++ b/clang/test/Driver/linux-ld.c +@@ -299,7 +299,7 @@ + // RUN: --sysroot=%S/Inputs/basic_linux_tree \ + // RUN: | FileCheck --check-prefix=CHECK-CLANG-ANDROID-STATIC %s + // CHECK-CLANG-ANDROID-STATIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" +-// CHECK-CLANG-ANDROID-STATIC: "--start-group" "{{[^"]*}}{{/|\\\\}}libclang_rt.builtins-aarch64-android.a" "-l:libunwind.a" "-lc" "--end-group" ++// CHECK-CLANG-ANDROID-STATIC: "--start-group" "{{[^"]*}}{{/|\\\\}}libclang_rt.builtins-aarch64-android.a" "-L{{[^"]*}}{{/|\\\\}}llvm-unwind" "-l:libunwind.a" "-lc" "--end-group" + // + // RUN: %clang -### %s 2>&1 \ + // RUN: --target=x86_64-unknown-linux -rtlib=platform --unwindlib=platform \ +-- +1.8.3.1 + diff --git a/0001-clang-Fix-interaction-between-asm-labels-and-inline-.patch b/0001-clang-Fix-interaction-between-asm-labels-and-inline-.patch new file mode 100644 index 0000000000000000000000000000000000000000..948d1642a0ba4b8af0b3c251bc9e5f52833b3532 --- /dev/null +++ b/0001-clang-Fix-interaction-between-asm-labels-and-inline-.patch @@ -0,0 +1,74 @@ +From bc9aa904bf9d24e7f39a2a866ff6b463858b6ccb Mon Sep 17 00:00:00 2001 +From: serge-sans-paille +Date: Wed, 21 Sep 2022 16:08:45 +0200 +Subject: [PATCH] [clang] Fix interaction between asm labels and inline + builtins + +One must pick the same name as the one referenced in CodeGenFunction when +generating .inline version of an inline builtin, otherwise they are not +correctly replaced. + +Differential Revision: https://reviews.llvm.org/D134362 +--- + clang/lib/CodeGen/CGExpr.cpp | 5 ++- + .../test/CodeGen/asm-label-inline-builtins.c | 32 +++++++++++++++++++ + 2 files changed, 36 insertions(+), 1 deletion(-) + create mode 100644 clang/test/CodeGen/asm-label-inline-builtins.c + +diff --git a/clang/lib/CodeGen/CGExpr.cpp b/clang/lib/CodeGen/CGExpr.cpp +index bf3dd812b9e8..a951d53423bf 100644 +--- a/clang/lib/CodeGen/CGExpr.cpp ++++ b/clang/lib/CodeGen/CGExpr.cpp +@@ -5046,7 +5046,10 @@ static CGCallee EmitDirectCallee(CodeGenFunction &CGF, GlobalDecl GD) { + if (auto builtinID = FD->getBuiltinID()) { + std::string NoBuiltinFD = ("no-builtin-" + FD->getName()).str(); + std::string NoBuiltins = "no-builtins"; +- std::string FDInlineName = (FD->getName() + ".inline").str(); ++ ++ auto *A = FD->getAttr(); ++ StringRef Ident = A ? A->getLabel() : FD->getName(); ++ std::string FDInlineName = (Ident + ".inline").str(); + + bool IsPredefinedLibFunction = + CGF.getContext().BuiltinInfo.isPredefinedLibFunction(builtinID); +diff --git a/clang/test/CodeGen/asm-label-inline-builtins.c b/clang/test/CodeGen/asm-label-inline-builtins.c +new file mode 100644 +index 000000000000..ab9afc29411d +--- /dev/null ++++ b/clang/test/CodeGen/asm-label-inline-builtins.c +@@ -0,0 +1,32 @@ ++// RUN: %clang_cc1 -triple x86_64 -S -emit-llvm -disable-llvm-passes -o - %s | FileCheck %s ++// ++// Verifies that clang-generated *.inline carry the same name at call and callee ++// site, in spite of asm labels. ++ ++typedef struct _IO_FILE FILE; ++extern FILE *stdout; ++extern int vprintf (const char *__restrict __format, __builtin_va_list __arg); ++extern int __vfprintf_chk (FILE *__restrict __stream, int __flag, ++ const char *__restrict __format, __builtin_va_list __ap); ++extern int __vprintf_chk (int __flag, const char *__restrict __format, ++ __builtin_va_list __ap); ++ ++extern __typeof (vprintf) vprintf __asm ("__vprintfieee128"); ++extern __typeof (__vfprintf_chk) __vfprintf_chk __asm ("__vfprintf_chkieee128"); ++extern __typeof (__vprintf_chk) __vprintf_chk __asm ("__vprintf_chkieee128"); ++ ++extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int ++vprintf (const char *__restrict __fmt, __builtin_va_list __ap) ++{ ++ return __vfprintf_chk (stdout, 2 - 1, __fmt, __ap); ++} ++ ++void test(const char *fmt, __builtin_va_list ap) { ++ vprintf(fmt, ap); ++} ++ ++// CHECK-LABEL: void @test( ++// CHECK: call i32 @__vprintfieee128.inline( ++// ++// CHECK-LABEL: internal i32 @__vprintfieee128.inline( ++// CHECK: call i32 @__vfprintf_chkieee128( +-- +2.37.2 + diff --git a/0001-clang-MinGW-Improve-extend-the-gcc-sysroot-detection.patch b/0001-clang-MinGW-Improve-extend-the-gcc-sysroot-detection.patch new file mode 100644 index 0000000000000000000000000000000000000000..7f54d320ac26b584168f6ec2a795d8d11cec4461 --- /dev/null +++ b/0001-clang-MinGW-Improve-extend-the-gcc-sysroot-detection.patch @@ -0,0 +1,280 @@ +From efe3686d4a519b357cecb5aaf715f1e1b6f2d025 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Martin=20Storsj=C3=B6?= +Date: Tue, 22 Nov 2022 14:38:54 +0200 +Subject: [PATCH 1/2] [clang] [MinGW] Improve/extend the gcc/sysroot detection + logic + +There are three functions that try to detect the right implicit +sysroot and libgcc directory setup to use +- One which looks for mingw sysroots located in + /../ +- One which looks for a mingw-targeting gcc executables in the PATH +- One which looks in the /lib/gcc directory to find the + right one to use, and the right specific triple used for arch + specific directories in the gcc/libstdc++ install + +These have mostly tried to look for executables named +"-w64-mingw32-gcc" or "mingw32-gcc" or subdirectories +named "-w64-mingw32" or "mingw32". + +In the case of findClangRelativeSysroot, it also has looked +for directories with the name of the actual triple. This +was added in deff7536278d355977171726124f83aa4bb95419, +with the intent of looking for a directory matching exactly +the user provided literal triple - however the triple here +is the normalized one, not the one provided by the user on +the command line. + +Improve and unify this logic somewhat: +- Always first look for things based on the literal triple + provided by the user. +- Secondly look for things based on the normalized triple + (which usually ends up as e.g. x86_64-w64-windows-gnu), + accessed via the Triple which is passed to the constructor +- Then look for the common triple form -w64-mingw32 + +The literal triple provided by the user is available via +Driver::getTargetTriple(), but computeTargetTriple() may +change e.g. the architecture of it, so we need to +reapply the effective architecture on the literal triple +spelling from Driver::getTargetTriple(). + +Do this consistently for all of findGcc, findClangRelativeSysroot +and findGccLibDir (while keeping the existing plain "mingw32" +cases in findGcc and findGccLibDir too). + +Fedora 37 started shipping mingw sysroots targeting UCRT, +in addition to the traditional msvcrt.dll, and these use +triples in the form -w64-mingw32ucrt - see +https://fedoraproject.org/wiki/Changes/F37MingwUCRT. + +Thus, in addition to the existing default tested triples, +try looking for triples in the form -w64-mingw32ucrt, +to automatically find the UCRT sysroots on Fedora 37. +By explicitly setting a specific target on the Clang command +line, the user can be more explicit with which flavour is +to be preferred. + +This should fix the main issue in +https://github.com/llvm/llvm-project/issues/59001. + +Differential Revision: https://reviews.llvm.org/D138692 +--- + clang/lib/Driver/ToolChains/MinGW.cpp | 68 ++++++++++++++----- + clang/lib/Driver/ToolChains/MinGW.h | 2 +- + .../12.2.1/include-fixed/.keep | 0 + .../sys-root/mingw/include/.keep | 0 + .../sys-root/mingw/include/c++/backward/.keep | 0 + .../include/c++/x86_64-w64-mingw32ucrt/.keep | 0 + clang/test/Driver/mingw-sysroot.cpp | 13 ++++ + clang/test/Driver/mingw.cpp | 4 ++ + 8 files changed, 68 insertions(+), 19 deletions(-) + create mode 100644 clang/test/Driver/Inputs/mingw_fedora_tree/usr/lib/gcc/x86_64-w64-mingw32ucrt/12.2.1/include-fixed/.keep + create mode 100644 clang/test/Driver/Inputs/mingw_fedora_tree/usr/x86_64-w64-mingw32ucrt/sys-root/mingw/include/.keep + create mode 100644 clang/test/Driver/Inputs/mingw_fedora_tree/usr/x86_64-w64-mingw32ucrt/sys-root/mingw/include/c++/backward/.keep + create mode 100644 clang/test/Driver/Inputs/mingw_fedora_tree/usr/x86_64-w64-mingw32ucrt/sys-root/mingw/include/c++/x86_64-w64-mingw32ucrt/.keep + +diff --git a/clang/lib/Driver/ToolChains/MinGW.cpp b/clang/lib/Driver/ToolChains/MinGW.cpp +index ae7c4c56bf9e..0ebacea6e87f 100644 +--- a/clang/lib/Driver/ToolChains/MinGW.cpp ++++ b/clang/lib/Driver/ToolChains/MinGW.cpp +@@ -359,13 +359,26 @@ static bool findGccVersion(StringRef LibDir, std::string &GccLibDir, + return Ver.size(); + } + +-void toolchains::MinGW::findGccLibDir() { +- llvm::SmallVector, 2> SubdirNames; ++static llvm::Triple getLiteralTriple(const Driver &D, const llvm::Triple &T) { ++ llvm::Triple LiteralTriple(D.getTargetTriple()); ++ // The arch portion of the triple may be overridden by -m32/-m64. ++ LiteralTriple.setArchName(T.getArchName()); ++ return LiteralTriple; ++} ++ ++void toolchains::MinGW::findGccLibDir(const llvm::Triple &LiteralTriple) { ++ llvm::SmallVector, 5> SubdirNames; ++ SubdirNames.emplace_back(LiteralTriple.str()); ++ SubdirNames.emplace_back(getTriple().str()); + SubdirNames.emplace_back(getTriple().getArchName()); +- SubdirNames[0] += "-w64-mingw32"; ++ SubdirNames.back() += "-w64-mingw32"; ++ SubdirNames.emplace_back(getTriple().getArchName()); ++ SubdirNames.back() += "-w64-mingw32ucrt"; + SubdirNames.emplace_back("mingw32"); +- if (SubdirName.empty()) +- SubdirName = std::string(SubdirNames[0].str()); ++ if (SubdirName.empty()) { ++ SubdirName = getTriple().getArchName(); ++ SubdirName += "-w64-mingw32"; ++ } + // lib: Arch Linux, Ubuntu, Windows + // lib64: openSUSE Linux + for (StringRef CandidateLib : {"lib", "lib64"}) { +@@ -380,10 +393,17 @@ void toolchains::MinGW::findGccLibDir() { + } + } + +-static llvm::ErrorOr findGcc(const llvm::Triple &T) { +- llvm::SmallVector, 2> Gccs; ++static llvm::ErrorOr findGcc(const llvm::Triple &LiteralTriple, ++ const llvm::Triple &T) { ++ llvm::SmallVector, 5> Gccs; ++ Gccs.emplace_back(LiteralTriple.str()); ++ Gccs.back() += "-gcc"; ++ Gccs.emplace_back(T.str()); ++ Gccs.back() += "-gcc"; + Gccs.emplace_back(T.getArchName()); +- Gccs[0] += "-w64-mingw32-gcc"; ++ Gccs.back() += "-w64-mingw32-gcc"; ++ Gccs.emplace_back(T.getArchName()); ++ Gccs.back() += "-w64-mingw32ucrt-gcc"; + Gccs.emplace_back("mingw32-gcc"); + // Please do not add "gcc" here + for (StringRef CandidateGcc : Gccs) +@@ -393,12 +413,15 @@ static llvm::ErrorOr findGcc(const llvm::Triple &T) { + } + + static llvm::ErrorOr +-findClangRelativeSysroot(const Driver &D, const llvm::Triple &T, +- std::string &SubdirName) { +- llvm::SmallVector, 2> Subdirs; ++findClangRelativeSysroot(const Driver &D, const llvm::Triple &LiteralTriple, ++ const llvm::Triple &T, std::string &SubdirName) { ++ llvm::SmallVector, 4> Subdirs; ++ Subdirs.emplace_back(LiteralTriple.str()); + Subdirs.emplace_back(T.str()); + Subdirs.emplace_back(T.getArchName()); +- Subdirs[1] += "-w64-mingw32"; ++ Subdirs.back() += "-w64-mingw32"; ++ Subdirs.emplace_back(T.getArchName()); ++ Subdirs.back() += "-w64-mingw32ucrt"; + StringRef ClangRoot = llvm::sys::path::parent_path(D.getInstalledDir()); + StringRef Sep = llvm::sys::path::get_separator(); + for (StringRef CandidateSubdir : Subdirs) { +@@ -418,14 +441,16 @@ toolchains::MinGW::MinGW(const Driver &D, const llvm::Triple &Triple, + + // The sequence for detecting a sysroot here should be kept in sync with + // the testTriple function below. ++ llvm::Triple LiteralTriple = getLiteralTriple(D, getTriple()); + if (getDriver().SysRoot.size()) + Base = getDriver().SysRoot; + // Look for /../; if found, use /.. as the + // base as it could still be a base for a gcc setup with libgcc. +- else if (llvm::ErrorOr TargetSubdir = +- findClangRelativeSysroot(getDriver(), getTriple(), SubdirName)) ++ else if (llvm::ErrorOr TargetSubdir = findClangRelativeSysroot( ++ getDriver(), LiteralTriple, getTriple(), SubdirName)) + Base = std::string(llvm::sys::path::parent_path(TargetSubdir.get())); +- else if (llvm::ErrorOr GPPName = findGcc(getTriple())) ++ else if (llvm::ErrorOr GPPName = ++ findGcc(LiteralTriple, getTriple())) + Base = std::string(llvm::sys::path::parent_path( + llvm::sys::path::parent_path(GPPName.get()))); + else +@@ -433,7 +458,7 @@ toolchains::MinGW::MinGW(const Driver &D, const llvm::Triple &Triple, + llvm::sys::path::parent_path(getDriver().getInstalledDir())); + + Base += llvm::sys::path::get_separator(); +- findGccLibDir(); ++ findGccLibDir(LiteralTriple); + // GccLibDir must precede Base/lib so that the + // correct crtbegin.o ,cetend.o would be found. + getFilePaths().push_back(GccLibDir); +@@ -576,6 +601,12 @@ void toolchains::MinGW::printVerboseInfo(raw_ostream &OS) const { + // /usr/include/c++/4.8/backward + // /usr/x86_64-w64-mingw32/include + ++// Fedora ++// /usr/x86_64-w64-mingw32ucrt/sys-root/mingw/include/c++/x86_64-w64-mingw32ucrt ++// /usr/x86_64-w64-mingw32ucrt/sys-root/mingw/include/c++/backward ++// /usr/x86_64-w64-mingw32ucrt/sys-root/mingw/include ++// /usr/lib/gcc/x86_64-w64-mingw32ucrt/12.2.1/include-fixed ++ + void toolchains::MinGW::AddClangSystemIncludeArgs(const ArgList &DriverArgs, + ArgStringList &CC1Args) const { + if (DriverArgs.hasArg(options::OPT_nostdinc)) +@@ -667,10 +698,11 @@ static bool testTriple(const Driver &D, const llvm::Triple &Triple, + std::string SubdirName; + if (D.SysRoot.size()) + return true; ++ llvm::Triple LiteralTriple = getLiteralTriple(D, Triple); + if (llvm::ErrorOr TargetSubdir = +- findClangRelativeSysroot(D, Triple, SubdirName)) ++ findClangRelativeSysroot(D, LiteralTriple, Triple, SubdirName)) + return true; +- if (llvm::ErrorOr GPPName = findGcc(Triple)) ++ if (llvm::ErrorOr GPPName = findGcc(LiteralTriple, Triple)) + return true; + // If we neither found a colocated sysroot or a matching gcc executable, + // conclude that we can't know if this is the correct spelling of the triple. +diff --git a/clang/lib/Driver/ToolChains/MinGW.h b/clang/lib/Driver/ToolChains/MinGW.h +index f15f99dc8a8c..bc17d273e776 100644 +--- a/clang/lib/Driver/ToolChains/MinGW.h ++++ b/clang/lib/Driver/ToolChains/MinGW.h +@@ -108,7 +108,7 @@ private: + std::string SubdirName; + mutable std::unique_ptr Preprocessor; + mutable std::unique_ptr Compiler; +- void findGccLibDir(); ++ void findGccLibDir(const llvm::Triple &LiteralTriple); + + bool NativeLLVMSupport; + }; +diff --git a/clang/test/Driver/Inputs/mingw_fedora_tree/usr/lib/gcc/x86_64-w64-mingw32ucrt/12.2.1/include-fixed/.keep b/clang/test/Driver/Inputs/mingw_fedora_tree/usr/lib/gcc/x86_64-w64-mingw32ucrt/12.2.1/include-fixed/.keep +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/mingw_fedora_tree/usr/x86_64-w64-mingw32ucrt/sys-root/mingw/include/.keep b/clang/test/Driver/Inputs/mingw_fedora_tree/usr/x86_64-w64-mingw32ucrt/sys-root/mingw/include/.keep +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/mingw_fedora_tree/usr/x86_64-w64-mingw32ucrt/sys-root/mingw/include/c++/backward/.keep b/clang/test/Driver/Inputs/mingw_fedora_tree/usr/x86_64-w64-mingw32ucrt/sys-root/mingw/include/c++/backward/.keep +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/mingw_fedora_tree/usr/x86_64-w64-mingw32ucrt/sys-root/mingw/include/c++/x86_64-w64-mingw32ucrt/.keep b/clang/test/Driver/Inputs/mingw_fedora_tree/usr/x86_64-w64-mingw32ucrt/sys-root/mingw/include/c++/x86_64-w64-mingw32ucrt/.keep +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/mingw-sysroot.cpp b/clang/test/Driver/mingw-sysroot.cpp +index 1cb51b3aea2d..985be9e5f2ac 100644 +--- a/clang/test/Driver/mingw-sysroot.cpp ++++ b/clang/test/Driver/mingw-sysroot.cpp +@@ -14,6 +14,11 @@ + // RUN: ln -s %S/Inputs/mingw_ubuntu_posix_tree/usr/x86_64-w64-mingw32 %T/testroot-clang/x86_64-w64-mingw32 + // RUN: ln -s %S/Inputs/mingw_arch_tree/usr/i686-w64-mingw32 %T/testroot-clang/i686-w64-mingw32 + ++// RUN: rm -rf %T/testroot-custom-triple ++// RUN: mkdir -p %T/testroot-custom-triple/bin ++// RUN: ln -s %clang %T/testroot-custom-triple/bin/x86_64-w64-mingw32foo-clang ++// RUN: ln -s %clang %T/testroot-custom-triple/bin/clang ++// RUN: ln -s %S/Inputs/mingw_ubuntu_posix_tree/usr/x86_64-w64-mingw32 %T/testroot-custom-triple/x86_64-w64-mingw32foo + + // If we find a gcc in the path with the right triplet prefix, pick that as + // sysroot: +@@ -51,3 +56,11 @@ + + // RUN: env "PATH=%T/testroot-gcc/bin:%PATH%" %T/testroot-clang/bin/x86_64-w64-mingw32-clang --target=x86_64-w64-mingw32 -m32 -rtlib=compiler-rt -stdlib=libstdc++ --sysroot="" -c -### %s 2>&1 | FileCheck -check-prefix=CHECK_TESTROOT_CLANG_I686 %s + // CHECK_TESTROOT_CLANG_I686: "{{[^"]+}}/testroot-clang{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}include" ++ ++ ++// If the user calls clang with a custom literal triple, make sure this maps ++// to sysroots with the matching spelling. ++ ++// RUN: %T/testroot-custom-triple/bin/x86_64-w64-mingw32foo-clang -rtlib=compiler-rt -stdlib=libstdc++ --sysroot="" -c -### %s 2>&1 | FileCheck -check-prefix=CHECK_TESTROOT_CUSTOM_TRIPLE %s ++// RUN: %T/testroot-custom-triple/bin/clang --target=x86_64-w64-mingw32foo -rtlib=compiler-rt -stdlib=libstdc++ --sysroot="" -c -### %s 2>&1 | FileCheck -check-prefix=CHECK_TESTROOT_CUSTOM_TRIPLE %s ++// CHECK_TESTROOT_CUSTOM_TRIPLE: "{{[^"]+}}/testroot-custom-triple{{/|\\\\}}x86_64-w64-mingw32foo{{/|\\\\}}include" +diff --git a/clang/test/Driver/mingw.cpp b/clang/test/Driver/mingw.cpp +index b37503e475d8..bde952fb3565 100644 +--- a/clang/test/Driver/mingw.cpp ++++ b/clang/test/Driver/mingw.cpp +@@ -39,6 +39,10 @@ + // CHECK_MINGW_OPENSUSE_TREE: "[[BASE]]/Inputs/mingw_opensuse_tree/usr{{/|\\\\}}x86_64-w64-mingw32/sys-root/mingw/include" + + ++// RUN: %clang -target x86_64-pc-windows-gnu -rtlib=platform -stdlib=libstdc++ -c -### --sysroot=%S/Inputs/mingw_fedora_tree/usr %s 2>&1 | FileCheck -check-prefix=CHECK_MINGW_FEDORA_TREE %s ++// CHECK_MINGW_FEDORA_TREE: "[[BASE:[^"]+]]/Inputs/mingw_fedora_tree/usr{{/|\\\\}}x86_64-w64-mingw32ucrt/sys-root/mingw/include" ++ ++ + // RUN: %clang -target i686-pc-windows-gnu -rtlib=platform -stdlib=libstdc++ -c -### --sysroot=%S/Inputs/mingw_arch_tree/usr %s 2>&1 | FileCheck -check-prefix=CHECK_MINGW_ARCH_TREE %s + // CHECK_MINGW_ARCH_TREE: "[[BASE:[^"]+]]/Inputs/mingw_arch_tree/usr{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}5.1.0" + // CHECK_MINGW_ARCH_TREE: "[[BASE]]/Inputs/mingw_arch_tree/usr{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}5.1.0{{/|\\\\}}i686-w64-mingw32" +-- +2.38.1 + diff --git a/0001-clang-tools-extra-Make-test-dependency-on-LLVMHello-.patch b/0001-clang-tools-extra-Make-test-dependency-on-LLVMHello-.patch new file mode 100644 index 0000000000000000000000000000000000000000..8f30ef40d1681abfe495f242f461a04161009eba --- /dev/null +++ b/0001-clang-tools-extra-Make-test-dependency-on-LLVMHello-.patch @@ -0,0 +1,82 @@ +From 581300e447602b9b7a505b0f07e8461d58d041ca Mon Sep 17 00:00:00 2001 +From: Tom Stellard +Date: Fri, 1 Jul 2022 21:24:17 -0700 +Subject: [PATCH] clang-tools-extra: Make test dependency on LLVMHello optional + +This fixes clang + clang-tools-extra standalone build after +36892727e4f19a60778e371d78f8fb09d8122c85. +--- + clang-tools-extra/test/CMakeLists.txt | 10 +++++++++- + clang-tools-extra/test/clang-tidy/CTTestTidyModule.cpp | 2 +- + clang-tools-extra/test/lit.cfg.py | 3 +++ + clang-tools-extra/test/lit.site.cfg.py.in | 1 + + 4 files changed, 14 insertions(+), 2 deletions(-) + +diff --git a/clang-tools-extra/test/CMakeLists.txt b/clang-tools-extra/test/CMakeLists.txt +index f4c529ee8af2..1cfb4dd529aa 100644 +--- a/clang-tools-extra/test/CMakeLists.txt ++++ b/clang-tools-extra/test/CMakeLists.txt +@@ -7,10 +7,15 @@ + set(CLANG_TOOLS_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/..") + set(CLANG_TOOLS_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/..") + ++if (TARGET LLVMHello) ++ set (LLVM_HAS_LLVM_HELLO 1) ++endif() ++ + llvm_canonicalize_cmake_booleans( + CLANG_TIDY_ENABLE_STATIC_ANALYZER + CLANG_PLUGIN_SUPPORT + LLVM_INSTALL_TOOLCHAIN_ONLY ++ LLVM_HAS_LLVM_HELLO + ) + + configure_lit_site_cfg( +@@ -86,7 +91,10 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) + endif() + + if(TARGET CTTestTidyModule) +- list(APPEND CLANG_TOOLS_TEST_DEPS CTTestTidyModule LLVMHello) ++ list(APPEND CLANG_TOOLS_TEST_DEPS CTTestTidyModule) ++ if (TARGET LLVMHello) ++ list(APPEND CLANG_TOOLS_TEST_DEPS CTTestTidyModule) ++ endif() + target_include_directories(CTTestTidyModule PUBLIC BEFORE "${CLANG_TOOLS_SOURCE_DIR}") + if(CLANG_PLUGIN_SUPPORT AND (WIN32 OR CYGWIN)) + set(LLVM_LINK_COMPONENTS +diff --git a/clang-tools-extra/test/clang-tidy/CTTestTidyModule.cpp b/clang-tools-extra/test/clang-tidy/CTTestTidyModule.cpp +index c66a94f458cf..b4e7a5d691e5 100644 +--- a/clang-tools-extra/test/clang-tidy/CTTestTidyModule.cpp ++++ b/clang-tools-extra/test/clang-tidy/CTTestTidyModule.cpp +@@ -1,4 +1,4 @@ +-// REQUIRES: plugins ++// REQUIRES: plugins, llvm-hello + // RUN: clang-tidy -checks='-*,mytest*' --list-checks -load %llvmshlibdir/CTTestTidyModule%pluginext -load %llvmshlibdir/LLVMHello%pluginext | FileCheck --check-prefix=CHECK-LIST %s + // CHECK-LIST: Enabled checks: + // CHECK-LIST-NEXT: mytest1 +diff --git a/clang-tools-extra/test/lit.cfg.py b/clang-tools-extra/test/lit.cfg.py +index 9b99bfd93440..3fca9f25fb48 100644 +--- a/clang-tools-extra/test/lit.cfg.py ++++ b/clang-tools-extra/test/lit.cfg.py +@@ -59,3 +59,6 @@ config.substitutions.append( + # Plugins (loadable modules) + if config.has_plugins and config.llvm_plugin_ext: + config.available_features.add('plugins') ++ ++if config.has_llvm_hello: ++ config.available_features.add("llvm-hello") +diff --git a/clang-tools-extra/test/lit.site.cfg.py.in b/clang-tools-extra/test/lit.site.cfg.py.in +index 4eb830a1baf1..6e5559348454 100644 +--- a/clang-tools-extra/test/lit.site.cfg.py.in ++++ b/clang-tools-extra/test/lit.site.cfg.py.in +@@ -11,6 +11,7 @@ config.target_triple = "@LLVM_TARGET_TRIPLE@" + config.host_triple = "@LLVM_HOST_TRIPLE@" + config.clang_tidy_staticanalyzer = @CLANG_TIDY_ENABLE_STATIC_ANALYZER@ + config.has_plugins = @CLANG_PLUGIN_SUPPORT@ & ~@LLVM_INSTALL_TOOLCHAIN_ONLY@ ++config.has_llvm_hello = @LLVM_HAS_LLVM_HELLO@ + # Support substitution of the tools and libs dirs with user parameters. This is + # used when we can't determine the tool dir at configuration time. + config.llvm_tools_dir = lit_config.substitute("@LLVM_TOOLS_DIR@") +-- +2.27.0 + diff --git a/0002-clang-MinGW-Improve-detection-of-libstdc-headers-on-.patch b/0002-clang-MinGW-Improve-detection-of-libstdc-headers-on-.patch new file mode 100644 index 0000000000000000000000000000000000000000..7376d7f87a1ce053a35a70113128953178cbeec4 --- /dev/null +++ b/0002-clang-MinGW-Improve-detection-of-libstdc-headers-on-.patch @@ -0,0 +1,139 @@ +From d3b79c2950d590cb272648f1c6a9dd7646f57beb Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Martin=20Storsj=C3=B6?= +Date: Tue, 22 Nov 2022 14:39:39 +0200 +Subject: [PATCH 2/2] [clang] [MinGW] Improve detection of libstdc++ headers on + Fedora + +There's some variation in where different toolchain distributions +(and linux distributions) package the mingw sysroots - this is +so far handled by adding specific known subdirectory paths +to the include and lib directory lists. + +There are multiple degrees of combinatorics involved here though; +the distros may use different locations such as +/usr/x86_64-w64-mingw32/include or +/usr/x86_64-w64-mingw32/sys-root/mingw/include. + +So far, this setup has been treated as base=/usr, subdir=x86_64-w64-mingw32, +and the driver tries to add further subdirectories such as +//include, //sys-root/mingw/include. + +When it comes to libstdc++ (and libc++), each of these come with +a large number of potential subdirectories. Instead of further +exploding the combinatorics another step by adding all combinations +of all paths, check whether //sys-root/mingw/include +exists, and if it does, append that subpath into the subdir variable. + +This allows finding libstdc++ headers in e.g. +/usr/x86_64-w64-mingw32/sys-root/mingw/include/c++/x86_64-w64-mingw32 +on Fedora. + +The same logic (where everything belonging to this target fits +under one expanded path, with just /include and /lib +under it) doesn't seem to apply on Gentoo, where the includes +are found in //usr/include while the libraries +are in //mingw/lib (see +8e218026f8d5eabfdef9141ae5e26aa91d1933e6). But apparently +the libstdc++ headers aren't installed under +//usr/include, so that path hierarchy quirk doesn't +need to be taken into account in AddClangCXXStdlibIncludeArgs. + +Differential Revision: https://reviews.llvm.org/D138693 +--- + clang/lib/Driver/ToolChains/MinGW.cpp | 19 +++++++++---------- + clang/lib/Driver/ToolChains/MinGW.h | 1 + + clang/test/Driver/mingw.cpp | 5 ++++- + 3 files changed, 14 insertions(+), 11 deletions(-) + +diff --git a/clang/lib/Driver/ToolChains/MinGW.cpp b/clang/lib/Driver/ToolChains/MinGW.cpp +index 0ebacea6e87f..2a9bf4b18f19 100644 +--- a/clang/lib/Driver/ToolChains/MinGW.cpp ++++ b/clang/lib/Driver/ToolChains/MinGW.cpp +@@ -376,7 +376,7 @@ void toolchains::MinGW::findGccLibDir(const llvm::Triple &LiteralTriple) { + SubdirNames.back() += "-w64-mingw32ucrt"; + SubdirNames.emplace_back("mingw32"); + if (SubdirName.empty()) { +- SubdirName = getTriple().getArchName(); ++ SubdirName = getTriple().getArchName().str(); + SubdirName += "-w64-mingw32"; + } + // lib: Arch Linux, Ubuntu, Windows +@@ -459,9 +459,16 @@ toolchains::MinGW::MinGW(const Driver &D, const llvm::Triple &Triple, + + Base += llvm::sys::path::get_separator(); + findGccLibDir(LiteralTriple); ++ TripleDirName = SubdirName; + // GccLibDir must precede Base/lib so that the + // correct crtbegin.o ,cetend.o would be found. + getFilePaths().push_back(GccLibDir); ++ ++ // openSUSE/Fedora ++ std::string CandidateSubdir = SubdirName + "/sys-root/mingw"; ++ if (getDriver().getVFS().exists(Base + CandidateSubdir)) ++ SubdirName = CandidateSubdir; ++ + getFilePaths().push_back( + (Base + SubdirName + llvm::sys::path::get_separator() + "lib").str()); + +@@ -470,8 +477,6 @@ toolchains::MinGW::MinGW(const Driver &D, const llvm::Triple &Triple, + (Base + SubdirName + llvm::sys::path::get_separator() + "mingw/lib").str()); + + getFilePaths().push_back(Base + "lib"); +- // openSUSE +- getFilePaths().push_back(Base + SubdirName + "/sys-root/mingw/lib"); + + NativeLLVMSupport = + Args.getLastArgValue(options::OPT_fuse_ld_EQ, CLANG_DEFAULT_LINKER) +@@ -621,12 +626,6 @@ void toolchains::MinGW::AddClangSystemIncludeArgs(const ArgList &DriverArgs, + if (DriverArgs.hasArg(options::OPT_nostdlibinc)) + return; + +- if (GetRuntimeLibType(DriverArgs) == ToolChain::RLT_Libgcc) { +- // openSUSE +- addSystemInclude(DriverArgs, CC1Args, +- Base + SubdirName + "/sys-root/mingw/include"); +- } +- + addSystemInclude(DriverArgs, CC1Args, + Base + SubdirName + llvm::sys::path::get_separator() + + "include"); +@@ -684,7 +683,7 @@ void toolchains::MinGW::AddClangCXXStdlibIncludeArgs( + for (auto &CppIncludeBase : CppIncludeBases) { + addSystemInclude(DriverArgs, CC1Args, CppIncludeBase); + CppIncludeBase += Slash; +- addSystemInclude(DriverArgs, CC1Args, CppIncludeBase + SubdirName); ++ addSystemInclude(DriverArgs, CC1Args, CppIncludeBase + TripleDirName); + addSystemInclude(DriverArgs, CC1Args, CppIncludeBase + "backward"); + } + break; +diff --git a/clang/lib/Driver/ToolChains/MinGW.h b/clang/lib/Driver/ToolChains/MinGW.h +index bc17d273e776..ef9bfb29e175 100644 +--- a/clang/lib/Driver/ToolChains/MinGW.h ++++ b/clang/lib/Driver/ToolChains/MinGW.h +@@ -106,6 +106,7 @@ private: + clang::driver::toolchains::Generic_GCC::GCCVersion GccVer; + std::string Ver; + std::string SubdirName; ++ std::string TripleDirName; + mutable std::unique_ptr Preprocessor; + mutable std::unique_ptr Compiler; + void findGccLibDir(const llvm::Triple &LiteralTriple); +diff --git a/clang/test/Driver/mingw.cpp b/clang/test/Driver/mingw.cpp +index bde952fb3565..46ea55b9500d 100644 +--- a/clang/test/Driver/mingw.cpp ++++ b/clang/test/Driver/mingw.cpp +@@ -40,7 +40,10 @@ + + + // RUN: %clang -target x86_64-pc-windows-gnu -rtlib=platform -stdlib=libstdc++ -c -### --sysroot=%S/Inputs/mingw_fedora_tree/usr %s 2>&1 | FileCheck -check-prefix=CHECK_MINGW_FEDORA_TREE %s +-// CHECK_MINGW_FEDORA_TREE: "[[BASE:[^"]+]]/Inputs/mingw_fedora_tree/usr{{/|\\\\}}x86_64-w64-mingw32ucrt/sys-root/mingw/include" ++// CHECK_MINGW_FEDORA_TREE: "[[BASE:[^"]+]]/Inputs/mingw_fedora_tree/usr{{/|\\\\}}x86_64-w64-mingw32ucrt/sys-root/mingw/include/c++" ++// CHECK_MINGW_FEDORA_TREE: "[[BASE]]/Inputs/mingw_fedora_tree/usr{{/|\\\\}}x86_64-w64-mingw32ucrt/sys-root/mingw/include/c++/x86_64-w64-mingw32ucrt" ++// CHECK_MINGW_FEDORA_TREE: "[[BASE]]/Inputs/mingw_fedora_tree/usr{{/|\\\\}}x86_64-w64-mingw32ucrt/sys-root/mingw/include/c++/backward" ++// CHECK_MINGW_FEDORA_TREE: "[[BASE]]/Inputs/mingw_fedora_tree/usr{{/|\\\\}}x86_64-w64-mingw32ucrt/sys-root/mingw/include" + + + // RUN: %clang -target i686-pc-windows-gnu -rtlib=platform -stdlib=libstdc++ -c -### --sysroot=%S/Inputs/mingw_arch_tree/usr %s 2>&1 | FileCheck -check-prefix=CHECK_MINGW_ARCH_TREE %s +-- +2.38.1 + diff --git a/0001-PATCH-clang-Make-funwind-tables-the-default-on-all-a.patch b/0003-PATCH-Make-funwind-tables-the-default-on-all-archs.patch similarity index 74% rename from 0001-PATCH-clang-Make-funwind-tables-the-default-on-all-a.patch rename to 0003-PATCH-Make-funwind-tables-the-default-on-all-archs.patch index 5eb4b3b544f36676b2cef2b658e38615420710d9..e6671f90f8d381cc0fd4cc62a390dcdea22a225a 100644 --- a/0001-PATCH-clang-Make-funwind-tables-the-default-on-all-a.patch +++ b/0003-PATCH-Make-funwind-tables-the-default-on-all-archs.patch @@ -7,18 +7,18 @@ Subject: [PATCH] [PATCH][clang] Make -funwind-tables the default on all archs clang/lib/Driver/ToolChains/Gnu.cpp | 6 ++++++ 1 file changed, 6 insertions(+) -diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp -index a27841dc5985..7489e6785150 100644 +diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp +b/clang/lib/Driver/ToolChains/Gnu.cpp +index d0808d061c82..de9c9743cd38 100644 --- a/clang/lib/Driver/ToolChains/Gnu.cpp +++ b/clang/lib/Driver/ToolChains/Gnu.cpp -@@ -2709,6 +2709,12 @@ bool Generic_GCC::IsUnwindTablesDefault(const ArgList &Args) const { - case llvm::Triple::ppc64: +@@ -2701,6 +2701,11 @@ bool Generic_GCC::IsUnwindTablesDefault(const ArgList &Args) const { case llvm::Triple::ppc64le: + case llvm::Triple::x86: case llvm::Triple::x86_64: + + // Enable -funwind-tables on all architectures supported by Fedora: + // rhbz#1655546 -+ case llvm::Triple::x86: + case llvm::Triple::systemz: + case llvm::Triple::arm: return true; diff --git a/0002-not-install-static-libraries.patch b/0003-PATCH-clang-Don-t-install-static-libraries.patch similarity index 82% rename from 0002-not-install-static-libraries.patch rename to 0003-PATCH-clang-Don-t-install-static-libraries.patch index dec5e18ddeaa330d86104b7aea222614d754b72a..bc8fa51fbe7f00ff102443a4098f0b12c1c6c1db 100644 --- a/0002-not-install-static-libraries.patch +++ b/0003-PATCH-clang-Don-t-install-static-libraries.patch @@ -4,11 +4,11 @@ Date: Fri, 31 Jan 2020 11:04:57 -0800 Subject: [PATCH][clang] Don't install static libraries --- - cmake/modules/AddClang.cmake | 2 +- + clang/cmake/modules/AddClang.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/cmake/modules/AddClang.cmake b/cmake/modules/AddClang.cmake -index 5752f427..7280ccea 100644 +diff --git a/clang/cmake/modules/AddClang.cmake b/clang/cmake/modules/AddClang.cmake +index 5752f4277444..0f52822d91f0 100644 --- a/clang/cmake/modules/AddClang.cmake +++ b/clang/cmake/modules/AddClang.cmake @@ -113,7 +113,7 @@ macro(add_clang_library name) @@ -21,5 +21,5 @@ index 5752f427..7280ccea 100644 install(TARGETS ${lib} COMPONENT ${lib} -- -2.27.0 +2.30.2 diff --git a/0004-cmake-Allow-shared-libraries-to-customize-the-soname.patch b/0004-cmake-Allow-shared-libraries-to-customize-the-soname.patch deleted file mode 100644 index e4254752265f2ebd9c11cd41df9201bdb88dad2b..0000000000000000000000000000000000000000 --- a/0004-cmake-Allow-shared-libraries-to-customize-the-soname.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 3dc5722d5c7673a879f2b4680369d3ac8b6b64b6 Mon Sep 17 00:00:00 2001 -From: Tom Stellard -Date: Wed, 4 Aug 2021 14:05:38 -0700 -Subject: [PATCH] cmake: Allow shared libraries to customize the soname using - LLVM_ABI_REVISION - -The LLVM_ABI_REVISION variable is intended to be used for release -candidates which introduce an ABI change to a shared library. This -variable can be specified per library, so there is not one global value -for all of LLVM. - -For example, if we LLVM X.0.0-rc2 introduces an ABI change for a library -compared with LLVM X.0.0-rc1, then the LLVM_ABI_REVISION number for -library will be incremented by 1. - -In the main branch, LLVM_ABI_REVISION should always be 0, it is only -meant to be used in the release branch. - -Differential Revision: https://reviews.llvm.org/D105594 ---- - clang/tools/clang-shlib/CMakeLists.txt | 5 +++++ - 3 files changed, 19 insertions(+), 2 deletions(-) - -diff --git a/clang/tools/clang-shlib/CMakeLists.txt b/clang/tools/clang-shlib/CMakeLists.txt -index 9c1f8ea452b3..4d785924e4bb 100644 ---- a/clang/tools/clang-shlib/CMakeLists.txt -+++ b/clang/tools/clang-shlib/CMakeLists.txt -@@ -1,3 +1,8 @@ -+# In the main branch, LLVM_ABI_REVISION should always be 0. In the release -+# branches, this should be incremented before each release candidate every -+# time the ABI of libclang-cpp.so changes. -+set(LLVM_ABI_REVISION 0) -+ - # Building libclang-cpp.so fails if LLVM_ENABLE_PIC=Off - if (NOT LLVM_ENABLE_PIC) - return() --- -2.27.0 - diff --git a/0005-PATCH-clang-Fix-scan-build-py-executable-lookup-path.patch b/0005-PATCH-clang-Fix-scan-build-py-executable-lookup-path.patch deleted file mode 100644 index 590f273b0eec24ac3b88d75a58e0a4e307e12ffe..0000000000000000000000000000000000000000 --- a/0005-PATCH-clang-Fix-scan-build-py-executable-lookup-path.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 62eaebcb6bb872830299efa3f87506f1d23ef366 Mon Sep 17 00:00:00 2001 -From: serge-sans-paille -Date: Mon, 13 Sep 2021 10:25:45 +0200 -Subject: [PATCH][clang] Fix scan-build-py executable lookup path - -Once installed, scan-build-py doesn't know anything about its auxiliary -executable and can't find them. -Use relative path wrt. scan-build-py script. - -Differential Revision: https://reviews.llvm.org/D109659 - -(cherry picked from commit c84755a046bbdcd0564693e30b2508034b06002b) ---- - clang/tools/scan-build-py/lib/libscanbuild/analyze.py | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/clang/tools/scan-build-py/lib/libscanbuild/analyze.py b/clang/tools/scan-build-py/lib/libscanbuild/analyze.py -index 9a249a8..d83ff2a 100644 ---- a/clang/tools/scan-build-py/lib/libscanbuild/analyze.py -+++ b/clang/tools/scan-build-py/lib/libscanbuild/analyze.py -@@ -39,8 +39,10 @@ from libscanbuild.shell import decode - - __all__ = ['scan_build', 'analyze_build', 'analyze_compiler_wrapper'] - --COMPILER_WRAPPER_CC = 'analyze-cc' --COMPILER_WRAPPER_CXX = 'analyze-c++' -+scanbuild_dir = os.path.dirname(__import__('sys').argv[0]) -+ -+COMPILER_WRAPPER_CC = os.path.join(scanbuild_dir, '..', 'libexec', 'analyze-cc') -+COMPILER_WRAPPER_CXX = os.path.join(scanbuild_dir, '..', 'libexec', 'analyze-c++') - - CTU_EXTDEF_MAP_FILENAME = 'externalDefMap.txt' - CTU_TEMP_DEFMAP_FOLDER = 'tmpExternalDefMaps' --- -1.8.3.1 - diff --git a/0006-Work-around-gcc-miscompile.patch b/0006-Work-around-gcc-miscompile.patch deleted file mode 100644 index 16c1467d31649e0d40258b11167693762a798959..0000000000000000000000000000000000000000 --- a/0006-Work-around-gcc-miscompile.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 0f97b7209eed4a428171af6044fe7e0aaf81ee2a Mon Sep 17 00:00:00 2001 -From: Nikita Popov -Date: Thu, 3 Feb 2022 10:34:44 +0100 -Subject: [PATCH] Work around gcc miscompile - -This works around https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104334, -which miscompiles clang on s390x and ppc64le. The issue is already -fixed on the gcc side, but including this as a temporary workaround -to get a working build. ---- - clang/lib/Sema/DeclSpec.cpp | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/clang/lib/Sema/DeclSpec.cpp b/clang/lib/Sema/DeclSpec.cpp -index d4dc790c008a..77a1e6c32c6f 100644 ---- a/clang/lib/Sema/DeclSpec.cpp -+++ b/clang/lib/Sema/DeclSpec.cpp -@@ -1203,8 +1203,9 @@ void DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) { - } else if (TypeSpecType == TST_double) { - // vector long double and vector long long double are never allowed. - // vector double is OK for Power7 and later, and ZVector. -- if (getTypeSpecWidth() == TypeSpecifierWidth::Long || -- getTypeSpecWidth() == TypeSpecifierWidth::LongLong) -+ TypeSpecifierWidth TypeSpecWidth = getTypeSpecWidth(); -+ if (TypeSpecWidth == TypeSpecifierWidth::Long || -+ TypeSpecWidth == TypeSpecifierWidth::LongLong) - S.Diag(TSWRange.getBegin(), - diag::err_invalid_vector_long_double_decl_spec); - else if (!S.Context.getTargetInfo().hasFeature("vsx") && --- -2.34.1 - - diff --git a/0010-PATCH-clang-Produce-DWARF4-by-default.patch b/0010-PATCH-clang-Produce-DWARF4-by-default.patch new file mode 100644 index 0000000000000000000000000000000000000000..2d698c5e63331eddc3b09c9e493041c8f2f07c6e --- /dev/null +++ b/0010-PATCH-clang-Produce-DWARF4-by-default.patch @@ -0,0 +1,100 @@ +From 1f68d73910ddee1beaf3582480b8a9738c941a43 Mon Sep 17 00:00:00 2001 +From: Konrad Kleine +Date: Thu, 24 Mar 2022 09:44:21 +0100 +Subject: [PATCH] Produce DWARF4 by default + +Have a look at the following commit to see when the move from DWARF 4 to 5 first happened upstream: + +https://github.com/llvm/llvm-project/commit/d3b26dea16108c427b19b5480c9edc76edf8f5b4?diff=unified +--- + clang/include/clang/Driver/ToolChain.h | 2 +- + clang/test/CodeGen/dwarf-version.c | 4 ++-- + clang/test/Driver/cl-options.c | 2 +- + clang/test/Driver/clang-g-opts.c | 2 +- + clang/test/Driver/ve-toolchain.c | 2 +- + clang/test/Driver/ve-toolchain.cpp | 2 +- + 6 files changed, 7 insertions(+), 7 deletions(-) + +diff --git a/clang/include/clang/Driver/ToolChain.h b/clang/include/clang/Driver/ToolChain.h +index f20ab164531b..53c86ee82936 100644 +--- a/clang/include/clang/Driver/ToolChain.h ++++ b/clang/include/clang/Driver/ToolChain.h +@@ -535,7 +535,7 @@ public: + + // Return the DWARF version to emit, in the absence of arguments + // to the contrary. +- virtual unsigned GetDefaultDwarfVersion() const { return 5; } ++ virtual unsigned GetDefaultDwarfVersion() const { return 4; } + + // Some toolchains may have different restrictions on the DWARF version and + // may need to adjust it. E.g. NVPTX may need to enforce DWARF2 even when host +diff --git a/clang/test/CodeGen/dwarf-version.c b/clang/test/CodeGen/dwarf-version.c +index 0a6fa4768026..96f01749d0d8 100644 +--- a/clang/test/CodeGen/dwarf-version.c ++++ b/clang/test/CodeGen/dwarf-version.c +@@ -2,8 +2,8 @@ + // RUN: %clang -target x86_64-linux-gnu -gdwarf-3 -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER3 + // RUN: %clang -target x86_64-linux-gnu -gdwarf-4 -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER4 + // RUN: %clang -target x86_64-linux-gnu -gdwarf-5 -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER5 +-// RUN: %clang -target x86_64-linux-gnu -g -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER5 +-// RUN: %clang -target x86_64-linux-gnu -gdwarf -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER5 ++// RUN: %clang -target x86_64-linux-gnu -g -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER4 ++// RUN: %clang -target x86_64-linux-gnu -gdwarf -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER4 + + // The -isysroot is used as a hack to avoid LIT messing with the SDKROOT + // environment variable which indirecty overrides the version in the target +diff --git a/clang/test/Driver/cl-options.c b/clang/test/Driver/cl-options.c +index a2e350a0a835..01889ba0bf9b 100644 +--- a/clang/test/Driver/cl-options.c ++++ b/clang/test/Driver/cl-options.c +@@ -570,7 +570,7 @@ + // RUN: %clang_cl /Z7 -gdwarf /c -### -- %s 2>&1 | FileCheck -check-prefix=Z7_gdwarf %s + // Z7_gdwarf: "-gcodeview" + // Z7_gdwarf: "-debug-info-kind=constructor" +-// Z7_gdwarf: "-dwarf-version= ++// Z7_gdwarf: "-dwarf-version=4 + + // RUN: %clang_cl -fmsc-version=1800 -TP -### -- %s 2>&1 | FileCheck -check-prefix=CXX11 %s + // CXX11: -std=c++11 +diff --git a/clang/test/Driver/clang-g-opts.c b/clang/test/Driver/clang-g-opts.c +index d982b1070cae..bb129e75769c 100644 +--- a/clang/test/Driver/clang-g-opts.c ++++ b/clang/test/Driver/clang-g-opts.c +@@ -32,7 +32,7 @@ + + // CHECK-WITHOUT-G-NOT: -debug-info-kind + // CHECK-WITH-G: "-debug-info-kind=constructor" +-// CHECK-WITH-G: "-dwarf-version=5" ++// CHECK-WITH-G: "-dwarf-version=4" + // CHECK-WITH-G-DWARF2: "-dwarf-version=2" + + // CHECK-WITH-G-STANDALONE: "-debug-info-kind=standalone" +diff --git a/clang/test/Driver/ve-toolchain.c b/clang/test/Driver/ve-toolchain.c +index 32e25769b6da..b8a2852daba8 100644 +--- a/clang/test/Driver/ve-toolchain.c ++++ b/clang/test/Driver/ve-toolchain.c +@@ -6,7 +6,7 @@ + /// Checking dwarf-version + + // RUN: %clang -### -g --target=ve %s 2>&1 | FileCheck -check-prefix=DWARF_VER %s +-// DWARF_VER: "-dwarf-version=5" ++// DWARF_VER: "-dwarf-version=4" + + ///----------------------------------------------------------------------------- + /// Checking include-path +diff --git a/clang/test/Driver/ve-toolchain.cpp b/clang/test/Driver/ve-toolchain.cpp +index 5a33d5eceb61..cedf895b36dc 100644 +--- a/clang/test/Driver/ve-toolchain.cpp ++++ b/clang/test/Driver/ve-toolchain.cpp +@@ -7,7 +7,7 @@ + + // RUN: %clangxx -### -g --target=ve-unknown-linux-gnu \ + // RUN: %s 2>&1 | FileCheck -check-prefix=DWARF_VER %s +-// DWARF_VER: "-dwarf-version=5" ++// DWARF_VER: "-dwarf-version=4" + + ///----------------------------------------------------------------------------- + /// Checking include-path +-- +2.37.1 + diff --git a/1001-add-anolis-os-support-in-driver.patch b/1001-add-anolis-os-support-in-driver.patch index 04a25dfba16b70754e23cc6116410c8f5155029d..f78cd1490f886710ae71d5eb2a4151bc0a7614ab 100644 --- a/1001-add-anolis-os-support-in-driver.patch +++ b/1001-add-anolis-os-support-in-driver.patch @@ -5,31 +5,29 @@ Subject: [PATCH] add anolis os support in driver --- lib/Driver/ToolChains/Gnu.cpp | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) + 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/a1/lib/Driver/ToolChains/Gnu.cpp b/b1/lib/Driver/ToolChains/Gnu.cpp index 8536701a..25d3d42d 100644 ---- a/a1/lib/Driver/ToolChains/Gnu.cpp -+++ b/b1/lib/Driver/ToolChains/Gnu.cpp -@@ -2099,7 +2099,7 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes( +--- a/a1/lib/Driver/ToolChains/Gnu.cpp.orig 2023-01-31 23:13:25.537000000 +0800 ++++ b/a1/lib/Driver/ToolChains/Gnu.cpp 2023-01-31 23:16:45.715000000 +0800 +@@ -2178,7 +2178,7 @@ static const char *const AArch64LibDirs[] = {"/lib64", "/lib"}; static const char *const AArch64Triples[] = { "aarch64-none-linux-gnu", "aarch64-linux-gnu", "aarch64-redhat-linux", -- "aarch64-suse-linux", "aarch64-linux-android"}; -+ "aarch64-suse-linux", "aarch64-linux-android", "aarch64-anolis-linux"}; +- "aarch64-suse-linux"}; ++ "aarch64-suse-linux", "aarch64-anolis-linux"}; static const char *const AArch64beLibDirs[] = {"/lib"}; static const char *const AArch64beTriples[] = {"aarch64_be-none-linux-gnu", "aarch64_be-linux-gnu"}; -@@ -2127,7 +2127,8 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes( +@@ -2208,7 +2208,7 @@ "x86_64-redhat-linux", "x86_64-suse-linux", "x86_64-manbo-linux-gnu", "x86_64-linux-gnu", "x86_64-slackware-linux", "x86_64-unknown-linux", -- "x86_64-amazon-linux", "x86_64-linux-android"}; -+ "x86_64-amazon-linux", "x86_64-linux-android", -+ "x86_64-anolis-linux"}; +- "x86_64-amazon-linux"}; ++ "x86_64-amazon-linux", "x86_64-anolis-linux"}; static const char *const X32Triples[] = {"x86_64-linux-gnux32", "x86_64-pc-linux-gnux32"}; static const char *const X32LibDirs[] = {"/libx32", "/lib"}; -- 2.27.0 - diff --git a/clang-13.0.1.src.tar.xz.sig b/clang-13.0.1.src.tar.xz.sig deleted file mode 100644 index ff0e7fa6ed49bbdc85992a8b35e735c913caff56..0000000000000000000000000000000000000000 Binary files a/clang-13.0.1.src.tar.xz.sig and /dev/null differ diff --git a/clang-13.0.1.src.tar.xz b/clang-15.0.7.src.tar.xz similarity index 65% rename from clang-13.0.1.src.tar.xz rename to clang-15.0.7.src.tar.xz index 1a249584247b86110728baf1752592957a976625..0062fa6d3e3a5fd0522d9d1d26aecd6708a5d051 100644 Binary files a/clang-13.0.1.src.tar.xz and b/clang-15.0.7.src.tar.xz differ diff --git a/clang-tools-extra-13.0.1.src.tar.xz b/clang-tools-extra-13.0.1.src.tar.xz deleted file mode 100644 index 63304022fd53331e0a4bb0cb3b1af8b8392fd175..0000000000000000000000000000000000000000 Binary files a/clang-tools-extra-13.0.1.src.tar.xz and /dev/null differ diff --git a/clang-tools-extra-13.0.1.src.tar.xz.sig b/clang-tools-extra-13.0.1.src.tar.xz.sig deleted file mode 100644 index ed76f62fc459f96833000ef4268d161b7c1efb69..0000000000000000000000000000000000000000 Binary files a/clang-tools-extra-13.0.1.src.tar.xz.sig and /dev/null differ diff --git a/clang-tools-extra-15.0.7.src.tar.xz b/clang-tools-extra-15.0.7.src.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..113884182abe53e4a1e8bfa1b0d0a9d42d986d9a Binary files /dev/null and b/clang-tools-extra-15.0.7.src.tar.xz differ diff --git a/clang.spec b/clang.spec index 9d6484c2f3132d492b1b02e52bd7da207e9b8452..52f76d877baeea1b5a218fc7e7f18597de62131d 100644 --- a/clang.spec +++ b/clang.spec @@ -1,56 +1,21 @@ -%define anolis_release 2 +%define anolis_release 1 + +%global toolchain gcc + +# Opt out of https://fedoraproject.org/wiki/Changes/fno-omit-frame-pointer +# https://bugzilla.redhat.com/show_bug.cgi?id=2158587 +%undefine _include_frame_pointers + %bcond_with compat_build -%bcond_without check +%bcond_with check -%global maj_ver 13 +%global maj_ver 15 %global min_ver 0 -%global patch_ver 1 -#global rc_ver 3 +%global patch_ver 7 %global clang_version %{maj_ver}.%{min_ver}.%{patch_ver} -%global clang_tools_binaries \ - %{_bindir}/clang-apply-replacements \ - %{_bindir}/clang-change-namespace \ - %{_bindir}/clang-check \ - %{_bindir}/clang-doc \ - %{_bindir}/clang-extdef-mapping \ - %{_bindir}/clang-format \ - %{_bindir}/clang-include-fixer \ - %{_bindir}/clang-move \ - %{_bindir}/clang-offload-bundler \ - %{_bindir}/clang-offload-wrapper \ - %{_bindir}/clang-query \ - %{_bindir}/clang-refactor \ - %{_bindir}/clang-rename \ - %{_bindir}/clang-reorder-fields \ - %{_bindir}/clang-repl \ - %{_bindir}/clang-scan-deps \ - %{_bindir}/clang-tidy \ - %{_bindir}/clangd \ - %{_bindir}/diagtool \ - %{_bindir}/hmaptool \ - %{_bindir}/pp-trace - -%global clang_binaries \ - %{_bindir}/clang \ - %{_bindir}/clang++ \ - %{_bindir}/clang-%{maj_ver} \ - %{_bindir}/clang++-%{maj_ver} \ - %{_bindir}/clang-cl \ - %{_bindir}/clang-cpp \ - -%global pkg_name clang -%global install_prefix /usr -%global pkg_libdir %{_libdir} - -%global build_install_prefix %{buildroot}%{install_prefix} - -%global clang_srcdir clang-%{clang_version}%{?rc_ver:rc%{rc_ver}}.src -%global clang_tools_srcdir clang-tools-extra-%{clang_version}%{?rc_ver:rc%{rc_ver}}.src - -%if !%{maj_ver} && 0%{?rc_ver} -%global abi_revision 2 -%endif +%global clang_srcdir clang-%{clang_version}.src +%global clang_tools_srcdir clang-tools-extra-%{clang_version}.src Name: clang Version: %{clang_version} @@ -59,26 +24,34 @@ Summary: A C language family front-end for LLVM License: NCSA URL: http://llvm.org -Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{clang_version}%{?rc_ver:-rc%{rc_ver}}/%{clang_srcdir}.tar.xz -Source3: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{clang_version}%{?rc_ver:-rc%{rc_ver}}/%{clang_srcdir}.tar.xz.sig -Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{clang_version}%{?rc_ver:-rc%{rc_ver}}/%{clang_tools_srcdir}.tar.xz -Source2: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{clang_version}%{?rc_ver:-rc%{rc_ver}}/%{clang_tools_srcdir}.tar.xz.sig -Source4: tstellar-gpg-key.asc +Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{clang_version}/%{clang_srcdir}.tar.xz +Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{clang_version}/%{clang_tools_srcdir}.tar.xz Source5: macros.%{name} # Patches for clang -Patch0: 0000-PATCH-clang-Reorganize-gtest-integration.patch -Patch1: 0001-PATCH-clang-Make-funwind-tables-the-default-on-all-a.patch -Patch2: 0002-not-install-static-libraries.patch -Patch3: 0003-Driver-Add-a-gcc-equivalent-triple-to-the-list-of-tr.patch -Patch4: 0004-cmake-Allow-shared-libraries-to-customize-the-soname.patch -Patch5: 0005-PATCH-clang-Fix-scan-build-py-executable-lookup-path.patch -Patch6: 0006-Work-around-gcc-miscompile.patch - -Patch7: 1001-add-anolis-os-support-in-driver.patch - -BuildRequires: gcc -BuildRequires: gcc-c++ +Patch0: 0001-PATCH-clang-Reorganize-gtest-integration.patch +Patch1: 0003-PATCH-Make-funwind-tables-the-default-on-all-archs.patch +Patch2: 0003-PATCH-clang-Don-t-install-static-libraries.patch +Patch3: 0001-Driver-Add-a-gcc-equivalent-triple-to-the-list-of-tr.patch +Patch5: 0010-PATCH-clang-Produce-DWARF4-by-default.patch +Patch6: 0001-Take-into-account-Fedora-Specific-install-dir-for-li.patch + +# TODO: Can be dropped in LLVM 16: https://reviews.llvm.org/D133316 +Patch7: 0001-Mark-fopenmp-implicit-rpath-as-NoArgumentUnused.patch + +# TODO: Can be dropped in LLVM 16: https://reviews.llvm.org/D134362 +Patch8: 0001-clang-Fix-interaction-between-asm-labels-and-inline-.patch + +# TODO: Can be dropped in LLVM 16. +Patch9: 0001-clang-MinGW-Improve-extend-the-gcc-sysroot-detection.patch +Patch10: 0002-clang-MinGW-Improve-detection-of-libstdc-headers-on-.patch + +# Patches for clang-tools-extra +# See https://reviews.llvm.org/D120301 +Patch201: 0001-clang-tools-extra-Make-test-dependency-on-LLVMHello-.patch +Patch100: 1001-add-anolis-os-support-in-driver.patch + +BuildRequires: clang BuildRequires: cmake BuildRequires: ninja-build BuildRequires: llvm-devel >= %{version} @@ -99,6 +72,7 @@ BuildRequires: emacs BuildRequires: python3-lit BuildRequires: python3-sphinx +BuildRequires: python3-recommonmark BuildRequires: libatomic # We need python3-devel for %%py3_shebang_fix @@ -156,6 +130,7 @@ libomp-devel to enable -fopenmp. Summary: Runtime library for clang Requires: %{name}-resource-filesystem = %{version} Recommends: compiler-rt = %{version} +Recommends: libatomic # libomp-devel is required, so clang can find the omp.h header when compiling # with -fopenmp. Recommends: libomp-devel = %{version} @@ -201,6 +176,13 @@ Requires: emacs-filesystem %description tools-extra A set of extra tools built using Clang's tooling API. +%package tools-extra-devel +Summary: Development header files for clang tools +Requires: %{name}-tools-extra = %{version}-%{release} + +%description tools-extra-devel +Development header files for clang tools. + # Put git-clang-format in its own package, because it Requires git # and we don't want to force users to install all those dependenices if they # just want clang. @@ -221,57 +203,69 @@ Requires: python3 %{summary}. %prep -%{gpgverify} --keyring='%{SOURCE4}' --signature='%{SOURCE3}' --data='%{SOURCE0}' - -%{gpgverify} --keyring='%{SOURCE4}' --signature='%{SOURCE2}' --data='%{SOURCE1}' %setup -T -q -b 1 -n %{clang_tools_srcdir} %autopatch -m200 -p2 # failing test case -rm test/clang-tidy/checkers/altera-struct-pack-align.cpp - +rm test/clang-tidy/checkers/altera/struct-pack-align.cpp + %py3_shebang_fix \ clang-tidy/tool/ \ clang-include-fixer/find-all-symbols/tool/run-find-all-symbols.py - + %setup -q -n %{clang_srcdir} %autopatch -M200 -p2 - + # failing test case rm test/CodeGen/profile-filter.c - + %py3_shebang_fix \ tools/clang-format/ \ tools/clang-format/git-clang-format \ utils/hmaptool/hmaptool \ tools/scan-view/bin/scan-view \ + tools/scan-view/share/Reporter.py \ + tools/scan-view/share/startfile.py \ tools/scan-build-py/bin/* \ tools/scan-build-py/libexec/* %build - -# This package does not ship any object files or static libraries, so we -# don't need -ffat-lto-objects. -%global _lto_cflags %(echo %{_lto_cflags} | sed 's/-ffat-lto-objects//') - -# lto builds with gcc 11 fail while running the lit tests. +%if "%{toolchain}" == "clang" +# Use ThinLTO to limit build time. +%define _lto_cflags -flto=thin +# And disable LTO on AArch64 entirely. +%ifarch aarch64 %define _lto_cflags %{nil} +%endif +%endif sed -i 's/\@FEDORA_LLVM_LIB_SUFFIX\@/64/g' test/lit.cfg.py -# -DLLVM_ENABLE_NEW_PASS_MANAGER=ON can be removed once this patch is committed: -# https://reviews.llvm.org/D107628 +%ifarch aarch64 +# Decrease debuginfo verbosity to reduce memory consumption during final library linking +%global optflags %(echo %{optflags} | sed 's/-g /-g1 /') + +# Disable dwz on aarch64, because it takes a huge amount of time to decide not to optimize things. +%define _find_debuginfo_dwz_opts %{nil} +%endif + +# We set CLANG_DEFAULT_PIE_ON_LINUX=OFF and PPC_LINUX_DEFAULT_IEEELONGDOUBLE=ON to match the +# defaults used by Fedora's GCC. %cmake -G Ninja \ + -DCLANG_DEFAULT_PIE_ON_LINUX=OFF \ + -DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=ON \ -DLLVM_PARALLEL_LINK_JOBS=1 \ -DLLVM_LINK_LLVM_DYLIB:BOOL=ON \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DPYTHON_EXECUTABLE=%{__python3} \ -DCMAKE_SKIP_RPATH:BOOL=ON \ -DCLANG_INCLUDE_TESTS:BOOL=ON \ + -DLLVM_BUILD_UTILS:BOOL=ON \ -DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR=../%{clang_tools_srcdir} \ -DLLVM_EXTERNAL_LIT=%{_bindir}/lit \ -DLLVM_MAIN_SRC_DIR=%{_datadir}/llvm/src \ -DLLVM_LIBDIR_SUFFIX=64 \ + \ -DLLVM_TABLEGEN_EXE:FILEPATH=%{_bindir}/llvm-tblgen \ -DCLANG_ENABLE_ARCMT:BOOL=ON \ -DCLANG_ENABLE_STATIC_ANALYZER:BOOL=ON \ @@ -281,7 +275,6 @@ sed -i 's/\@FEDORA_LLVM_LIB_SUFFIX\@/64/g' test/lit.cfg.py -DLLVM_ENABLE_EH=ON \ -DLLVM_ENABLE_RTTI=ON \ -DLLVM_BUILD_DOCS=ON \ - -DLLVM_ENABLE_NEW_PASS_MANAGER=ON \ -DLLVM_ENABLE_SPHINX=ON \ -DCLANG_LINK_CLANG_DYLIB=ON \ %{?abi_revision:-DLLVM_ABI_REVISION=%{abi_revision}} \ @@ -316,6 +309,9 @@ install -p -m644 bindings/python/clang/* %{buildroot}%{python3_sitelib}/clang/ mv %{buildroot}%{_prefix}/lib/{libear,libscanbuild} %{buildroot}%{python3_sitelib} %py_byte_compile %{__python3} %{buildroot}%{python3_sitelib}/{libear,libscanbuild} +# Fix permissions of scan-view scripts +chmod a+x %{buildroot}%{_datadir}/scan-view/{Reporter.py,startfile.py} + # Move emacs integration files to the correct directory mkdir -p %{buildroot}%{_emacs_sitestartdir} for f in clang-format.el clang-rename.el clang-include-fixer.el; do @@ -327,7 +323,7 @@ rm -vf %{buildroot}%{_datadir}/clang/clang-format-bbedit.applescript rm -vf %{buildroot}%{_datadir}/clang/clang-format-sublime.py* # TODO: Package html docs -rm -Rvf %{buildroot}%{_docdir}/clang/html +rm -Rvf %{buildroot}%{_docdir}/Clang/clang/html rm -Rvf %{buildroot}%{_datadir}/clang/clang-doc-default-stylesheet.css rm -Rvf %{buildroot}%{_datadir}/clang/index.js @@ -335,9 +331,9 @@ rm -Rvf %{buildroot}%{_datadir}/clang/index.js rm -vf %{buildroot}%{_datadir}/clang/bash-autocomplete.sh # Create Manpage symlinks -ln -s clang.1.gz %{buildroot}%{_mandir}/man1/clang++.1.gz -ln -s clang.1.gz %{buildroot}%{_mandir}/man1/clang-%{maj_ver}.1.gz -ln -s clang.1.gz %{buildroot}%{_mandir}/man1/clang++-%{maj_ver}.1.gz +ln -s clang.1 %{buildroot}%{_mandir}/man1/clang++.1 +ln -s clang.1 %{buildroot}%{_mandir}/man1/clang-%{maj_ver}.1 +ln -s clang.1 %{buildroot}%{_mandir}/man1/clang++-%{maj_ver}.1 # Add clang++-{version} symlink ln -s clang++ %{buildroot}%{_bindir}/clang++-%{maj_ver} @@ -357,11 +353,7 @@ popd # Create sub-directories in the clang resource directory that will be # populated by other packages -mkdir -p %{buildroot}%{pkg_libdir}/clang/%{version}/{include,lib,share}/ - - -# Remove clang-tidy headers. We don't ship the libraries for these. -rm -Rvf %{buildroot}%{_includedir}/clang-tidy/ +mkdir -p %{buildroot}%{_libdir}/clang/%{version}/{include,lib,share}/ # Add a symlink in /usr/bin to clang-format-diff ln -s %{_datadir}/clang/clang-format-diff.py %{buildroot}%{_bindir}/clang-format-diff @@ -374,14 +366,18 @@ LD_LIBRARY_PATH=%{buildroot}/%{_libdir} %{__ninja} check-all -C %{__cmake_buildd false %endif - %files %license LICENSE.TXT -%{clang_binaries} -%{_mandir}/man1/clang.1.gz -%{_mandir}/man1/clang++.1.gz -%{_mandir}/man1/clang-%{maj_ver}.1.gz -%{_mandir}/man1/clang++-%{maj_ver}.1.gz +%{_bindir}/clang +%{_bindir}/clang++ +%{_bindir}/clang-%{maj_ver} +%{_bindir}/clang++-%{maj_ver} +%{_bindir}/clang-cl +%{_bindir}/clang-cpp +%{_mandir}/man1/clang.1* +%{_mandir}/man1/clang++.1* +%{_mandir}/man1/clang-%{maj_ver}.1* +%{_mandir}/man1/clang++-%{maj_ver}.1* %files libs %{_libdir}/clang/ @@ -392,15 +388,17 @@ false %{_includedir}/clang/ %{_includedir}/clang-c/ %{_libdir}/cmake/* +%{_bindir}/clang-tblgen %dir %{_datadir}/clang/ %{_rpmmacrodir}/macros.%{name} %files resource-filesystem -%dir %{pkg_libdir}/clang/%{version}/ -%dir %{pkg_libdir}/clang/%{version}/include/ -%dir %{pkg_libdir}/clang/%{version}/lib/ -%dir %{pkg_libdir}/clang/%{version}/share/ -%{pkg_libdir}/clang/%{maj_ver} +%dir %{_libdir}/clang/ +%dir %{_libdir}/clang/%{version}/ +%dir %{_libdir}/clang/%{version}/include/ +%dir %{_libdir}/clang/%{version}/lib/ +%dir %{_libdir}/clang/%{version}/share/ +%{_libdir}/clang/%{maj_ver} %files analyzer %{_bindir}/scan-view @@ -422,12 +420,36 @@ false %files tools-extra -%{clang_tools_binaries} +%{_bindir}/clang-apply-replacements +%{_bindir}/clang-change-namespace +%{_bindir}/clang-check +%{_bindir}/clang-doc +%{_bindir}/clang-extdef-mapping +%{_bindir}/clang-format +%{_bindir}/clang-include-fixer +%{_bindir}/clang-move +%{_bindir}/clang-offload-bundler +%{_bindir}/clang-offload-packager +%{_bindir}/clang-offload-wrapper +%{_bindir}/clang-linker-wrapper +%{_bindir}/clang-nvlink-wrapper +%{_bindir}/clang-pseudo +%{_bindir}/clang-query +%{_bindir}/clang-refactor +%{_bindir}/clang-rename +%{_bindir}/clang-reorder-fields +%{_bindir}/clang-repl +%{_bindir}/clang-scan-deps +%{_bindir}/clang-tidy +%{_bindir}/clangd +%{_bindir}/diagtool +%{_bindir}/hmaptool +%{_bindir}/pp-trace %{_bindir}/c-index-test %{_bindir}/find-all-symbols %{_bindir}/modularize %{_bindir}/clang-format-diff -%{_mandir}/man1/diagtool.1.gz +%{_mandir}/man1/diagtool.1* %{_emacs_sitestartdir}/clang-format.el %{_emacs_sitestartdir}/clang-rename.el %{_emacs_sitestartdir}/clang-include-fixer.el @@ -439,6 +461,9 @@ false %{_datadir}/clang/run-find-all-symbols.py* %{_datadir}/clang/clang-rename.py* +%files tools-extra-devel +%{_includedir}/clang-tidy/ + %files -n git-clang-format %{_bindir}/git-clang-format @@ -446,6 +471,9 @@ false %{python3_sitelib}/clang/ %changelog +* Mon Jan 30 2023 Funda Wang - 15.0.7-1 +- New version 15.0.7 + * Tue Jun 21 2022 happy_orange - 13.0.1-2 - add anolis driver support diff --git a/tstellar-gpg-key.asc b/tstellar-gpg-key.asc deleted file mode 100644 index eba625c41a5fb1646d8b087acb97a6f079901712..0000000000000000000000000000000000000000 Binary files a/tstellar-gpg-key.asc and /dev/null differ