From f4455e99ffd98b07ae20efb6a5a8246593c6ce6a Mon Sep 17 00:00:00 2001 From: Tulio Magno Quites Machado Filho Date: Thu, 16 Feb 2023 17:11:23 -0300 Subject: [PATCH] Import clang15 --- .gitignore | 5 + ...-equivalent-triple-to-the-list-of-tr.patch | 59 + ...p-implicit-rpath-as-NoArgumentUnused.patch | 29 + ...H-clang-Reorganize-gtest-integration.patch | 42 + ...t-Fedora-Specific-install-dir-for-li.patch | 45 + ...ction-between-asm-labels-and-inline-.patch | 74 + ...ove-extend-the-gcc-sysroot-detection.patch | 280 ++++ ...a-Make-test-dependency-on-LLVMHello-.patch | 82 ++ ...ove-detection-of-libstdc-headers-on-.patch | 139 ++ ...wind-tables-the-default-on-all-archs.patch | 29 + ...clang-Don-t-install-static-libraries.patch | 25 + ...ATCH-clang-Produce-DWARF4-by-default.patch | 100 ++ clang.rpmlintrc | 6 + clang15.spec | 1288 +++++++++++++++++ fix-lto-path.patch | 25 + macros.clang | 16 + release-keys.asc | 104 ++ sources | 4 + 18 files changed, 2352 insertions(+) create mode 100644 .gitignore create mode 100644 0001-Driver-Add-a-gcc-equivalent-triple-to-the-list-of-tr.patch create mode 100644 0001-Mark-fopenmp-implicit-rpath-as-NoArgumentUnused.patch create mode 100644 0001-PATCH-clang-Reorganize-gtest-integration.patch create mode 100644 0001-Take-into-account-Fedora-Specific-install-dir-for-li.patch create mode 100644 0001-clang-Fix-interaction-between-asm-labels-and-inline-.patch create mode 100644 0001-clang-MinGW-Improve-extend-the-gcc-sysroot-detection.patch create mode 100644 0001-clang-tools-extra-Make-test-dependency-on-LLVMHello-.patch create mode 100644 0002-clang-MinGW-Improve-detection-of-libstdc-headers-on-.patch create mode 100644 0003-PATCH-Make-funwind-tables-the-default-on-all-archs.patch create mode 100644 0003-PATCH-clang-Don-t-install-static-libraries.patch create mode 100644 0010-PATCH-clang-Produce-DWARF4-by-default.patch create mode 100644 clang.rpmlintrc create mode 100644 clang15.spec create mode 100644 fix-lto-path.patch create mode 100644 macros.clang create mode 100644 release-keys.asc create mode 100644 sources diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4f5174a --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +/*.src.rpm +/*.src.tar.xz +/*.src.tar.xz.sig +/cmake/ +/results_clang/ diff --git a/0001-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 new file mode 100644 index 0000000..6c94b4d --- /dev/null +++ b/0001-Driver-Add-a-gcc-equivalent-triple-to-the-list-of-tr.patch @@ -0,0 +1,59 @@ +From d68a5a7817dc0d43853d8b84c9185dc24338664f Mon Sep 17 00:00:00 2001 +From: Tom Stellard +Date: Wed, 6 Oct 2021 05:32:44 +0000 +Subject: [PATCH] Driver: Add a gcc equivalent triple to the list of triples to + search + +There are some gcc triples, like x86_64-redhat-linux, that provide the +same behavior as a clang triple with a similar name (e.g. +x86_64-redhat-linux-gnu). When searching for a gcc install, also search +for a gcc equivalent triple if one exists. + +Differential Revision: https://reviews.llvm.org/D111207 +--- + clang/lib/Driver/ToolChains/Gnu.cpp | 22 ++++++++++++++++++++++ + 1 file changed, 22 insertions(+) + +diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp +index fe5bda5c6605..fd4a7f72be14 100644 +--- a/clang/lib/Driver/ToolChains/Gnu.cpp ++++ b/clang/lib/Driver/ToolChains/Gnu.cpp +@@ -1884,6 +1884,18 @@ static llvm::StringRef getGCCToolchainDir(const ArgList &Args, + return GCC_INSTALL_PREFIX; + } + ++/// This function takes a 'clang' triple and converts it to an equivalent gcc ++/// triple. ++static const char *ConvertToGccTriple(StringRef CandidateTriple) { ++ return llvm::StringSwitch(CandidateTriple) ++ .Case("aarch64-redhat-linux-gnu", "aarch64-redhat-linux") ++ .Case("i686-redhat-linux-gnu", "i686-redhat-linux") ++ .Case("ppc64le-redhat-linux-gnu", "ppc64le-redhat-linux") ++ .Case("s390x-redhat-linux-gnu", "s390x-redhat-linux") ++ .Case("x86_64-redhat-linux-gnu", "x86_64-redhat-linux") ++ .Default(NULL); ++} ++ + /// Initialize a GCCInstallationDetector from the driver. + /// + /// This performs all of the autodetection and sets up the various paths. +@@ -1904,6 +1916,16 @@ void Generic_GCC::GCCInstallationDetector::init( + // The compatible GCC triples for this particular architecture. + SmallVector CandidateTripleAliases; + SmallVector CandidateBiarchTripleAliases; ++ ++ // In some cases gcc uses a slightly different triple than clang for the ++ // same target. Convert the clang triple to the gcc equivalent and use that ++ // to search for the gcc install. ++ const char *ConvertedTriple = ConvertToGccTriple(TargetTriple.str()); ++ if (ConvertedTriple) { ++ CandidateTripleAliases.push_back(ConvertedTriple); ++ CandidateBiarchTripleAliases.push_back(ConvertedTriple); ++ } ++ + CollectLibDirsAndTriples(TargetTriple, BiarchVariantTriple, CandidateLibDirs, + CandidateTripleAliases, CandidateBiarchLibDirs, + CandidateBiarchTripleAliases); +-- +2.26.2 + 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 0000000..87c9b93 --- /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/0001-PATCH-clang-Reorganize-gtest-integration.patch b/0001-PATCH-clang-Reorganize-gtest-integration.patch new file mode 100644 index 0000000..e854f01 --- /dev/null +++ b/0001-PATCH-clang-Reorganize-gtest-integration.patch @@ -0,0 +1,42 @@ +From c6b921c8d833546946b70a8c2640032fd7c62461 Mon Sep 17 00:00:00 2001 +From: serge-sans-paille +Date: Thu, 25 Feb 2021 14:04:52 +0100 +Subject: [PATCH 1/6] [PATCH][clang] Reorganize gtest integration + +--- + clang/CMakeLists.txt | 12 +++++------- + 1 file changed, 5 insertions(+), 7 deletions(-) + +diff --git a/clang/CMakeLists.txt b/clang/CMakeLists.txt +index 9e74014..0185276 100644 +--- a/clang/CMakeLists.txt ++++ b/clang/CMakeLists.txt +@@ -153,12 +153,6 @@ if( CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR ) + set(LLVM_UTILS_PROVIDED ON) + set(CLANG_TEST_DEPS FileCheck count not) + endif() +- set(UNITTEST_DIR ${LLVM_MAIN_SRC_DIR}/utils/unittest) +- if(EXISTS ${UNITTEST_DIR}/googletest/include/gtest/gtest.h +- AND NOT EXISTS ${LLVM_LIBRARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX} +- AND EXISTS ${UNITTEST_DIR}/CMakeLists.txt) +- add_subdirectory(${UNITTEST_DIR} utils/unittest) +- endif() + else() + # Seek installed Lit. + find_program(LLVM_LIT +@@ -537,7 +531,11 @@ endif() + + + if( CLANG_INCLUDE_TESTS ) +- if(EXISTS ${LLVM_MAIN_SRC_DIR}/utils/unittest/googletest/include/gtest/gtest.h) ++ set(UNITTEST_DIR ${LLVM_MAIN_SRC_DIR}/utils/unittest) ++ if(EXISTS ${UNITTEST_DIR}/googletest/include/gtest/gtest.h ++ AND NOT EXISTS ${LLVM_LIBRARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX} ++ AND EXISTS ${UNITTEST_DIR}/CMakeLists.txt) ++ add_subdirectory(${UNITTEST_DIR} utils/unittest) + add_subdirectory(unittests) + list(APPEND CLANG_TEST_DEPS ClangUnitTests) + list(APPEND CLANG_TEST_PARAMS +-- +1.8.3.1 + 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 0000000..4a8fda9 --- /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 0000000..948d164 --- /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 0000000..7f54d32 --- /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 0000000..8f30ef4 --- /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 0000000..7376d7f --- /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/0003-PATCH-Make-funwind-tables-the-default-on-all-archs.patch b/0003-PATCH-Make-funwind-tables-the-default-on-all-archs.patch new file mode 100644 index 0000000..e6671f9 --- /dev/null +++ b/0003-PATCH-Make-funwind-tables-the-default-on-all-archs.patch @@ -0,0 +1,29 @@ +From c87abee7356b8fde81512ffceadd520776c465d2 Mon Sep 17 00:00:00 2001 +From: serge-sans-paille +Date: Thu, 25 Feb 2021 14:09:29 +0100 +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 d0808d061c82..de9c9743cd38 100644 +--- a/clang/lib/Driver/ToolChains/Gnu.cpp ++++ b/clang/lib/Driver/ToolChains/Gnu.cpp +@@ -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::systemz: ++ case llvm::Triple::arm: + return true; + default: + return false; +-- +2.27.0 + diff --git a/0003-PATCH-clang-Don-t-install-static-libraries.patch b/0003-PATCH-clang-Don-t-install-static-libraries.patch new file mode 100644 index 0000000..bc8fa51 --- /dev/null +++ b/0003-PATCH-clang-Don-t-install-static-libraries.patch @@ -0,0 +1,25 @@ +From 88704fc2eabb9dd19a9c3eb81a9b3dc37d95651c Mon Sep 17 00:00:00 2001 +From: Tom Stellard +Date: Fri, 31 Jan 2020 11:04:57 -0800 +Subject: [PATCH][clang] Don't install static libraries + +--- + clang/cmake/modules/AddClang.cmake | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +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) + if(TARGET ${lib}) + target_link_libraries(${lib} INTERFACE ${LLVM_COMMON_LIBS}) + +- if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ARG_INSTALL_WITH_TOOLCHAIN) ++ if (ARG_SHARED AND (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ARG_INSTALL_WITH_TOOLCHAIN)) + get_target_export_arg(${name} Clang export_to_clangtargets UMBRELLA clang-libraries) + install(TARGETS ${lib} + COMPONENT ${lib} +-- +2.30.2 + 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 0000000..2d698c5 --- /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/clang.rpmlintrc b/clang.rpmlintrc new file mode 100644 index 0000000..8781b63 --- /dev/null +++ b/clang.rpmlintrc @@ -0,0 +1,6 @@ +# clang needs libstdc++-devel installed in order to compile c++ programs. +addFilter("E: devel-dependency libstdc\+\+-devel") +addFilter("E: explicit-lib-dependency libstdc\+\+-devel") +# clang installs libear to /usr/lib on all arches, so we have to use +# a hard-coded /usr/lib path in order to move it to the python3 sitelib. +addFilter("E: hardcoded-library-path in %{_prefix}/lib/{libear") diff --git a/clang15.spec b/clang15.spec new file mode 100644 index 0000000..986d078 --- /dev/null +++ b/clang15.spec @@ -0,0 +1,1288 @@ +%global toolchain clang + +# 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_without compat_build +%bcond_without check + +%global maj_ver 15 +%global min_ver 0 +%global patch_ver 7 +#global rc_ver 3 +%global clang_version %{maj_ver}.%{min_ver}.%{patch_ver} + +%if %{with compat_build} +%global pkg_name clang%{maj_ver} +# Install clang to same prefix as llvm, so that apps that use llvm-config +# will also be able to find clang libs. +%global install_prefix %{_libdir}/llvm%{maj_ver} +%global install_bindir %{install_prefix}/bin +%global install_includedir %{install_prefix}/include +%global install_libdir %{install_prefix}/lib + +%global pkg_bindir %{install_bindir} +%global pkg_includedir %{install_includedir} +%global pkg_libdir %{install_libdir} +%else +%global pkg_name clang +%global install_prefix /usr +%global pkg_libdir %{_libdir} +%endif + +%ifarch ppc64le +# Too many threads on ppc64 systems causes OOM errors. +%global _smp_mflags -j8 +%endif + +%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 + +Name: %pkg_name +Version: %{clang_version}%{?rc_ver:~rc%{rc_ver}} +Release: 3%{?dist} +Summary: A C language family front-end for LLVM + +License: Apache-2.0 WITH LLVM-exception OR 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 +%if %{without compat_build} +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 +%endif +Source4: release-keys.asc +%if %{without compat_build} +Source5: macros.%{name} +%endif + +# Patches for clang +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 + +%if %{with compat_build} +# Ensure that clang looks for LLVMgold.so in the directory the compat build +# uses. +Patch100: fix-lto-path.patch +%endif + +%if %{without compat_build} +# Patches for clang-tools-extra +# See https://reviews.llvm.org/D120301 +Patch201: 0001-clang-tools-extra-Make-test-dependency-on-LLVMHello-.patch +%endif + +BuildRequires: clang +BuildRequires: cmake +BuildRequires: ninja-build +%if %{with compat_build} +BuildRequires: llvm%{maj_ver}-devel = %{version} +BuildRequires: llvm%{maj_ver}-static = %{version} +%else +BuildRequires: llvm-devel = %{version} +BuildRequires: llvm-test = %{version} +# llvm-static is required, because clang-tablegen needs libLLVMTableGen, which +# is not included in libLLVM.so. +BuildRequires: llvm-static = %{version} +BuildRequires: llvm-googletest = %{version} +%endif + +BuildRequires: libxml2-devel +BuildRequires: perl-generators +BuildRequires: ncurses-devel +# According to https://fedoraproject.org/wiki/Packaging:Emacs a package +# should BuildRequires: emacs if it packages emacs integration files. +BuildRequires: emacs + +# The testsuite uses /usr/bin/lit which is part of the python3-lit package. +BuildRequires: python3-lit + +BuildRequires: python3-sphinx +BuildRequires: python3-recommonmark +BuildRequires: libatomic + +# We need python3-devel for %%py3_shebang_fix +BuildRequires: python3-devel + +%if %{without compat_build} +# For reproducible pyc file generation +# See https://docs.fedoraproject.org/en-US/packaging-guidelines/Python_Appendix/#_byte_compilation_reproducibility +BuildRequires: /usr/bin/marshalparser +%global py_reproducible_pyc_path %{buildroot}%{python3_sitelib} +%endif + +# Needed for %%multilib_fix_c_header +BuildRequires: multilib-rpm-config + +# For origin certification +BuildRequires: gnupg2 + +# scan-build uses these perl modules so they need to be installed in order +# to run the tests. +BuildRequires: perl(Digest::MD5) +BuildRequires: perl(File::Copy) +BuildRequires: perl(File::Find) +BuildRequires: perl(File::Path) +BuildRequires: perl(File::Temp) +BuildRequires: perl(FindBin) +BuildRequires: perl(Hash::Util) +BuildRequires: perl(lib) +BuildRequires: perl(Term::ANSIColor) +BuildRequires: perl(Text::ParseWords) +BuildRequires: perl(Sys::Hostname) + +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +# clang requires gcc, clang++ requires libstdc++-devel +# - https://bugzilla.redhat.com/show_bug.cgi?id=1021645 +# - https://bugzilla.redhat.com/show_bug.cgi?id=1158594 +Requires: libstdc++-devel +Requires: gcc-c++ + +Provides: clang(major) = %{maj_ver} + +Conflicts: compiler-rt < 11.0.0 + +%description +clang: noun + 1. A loud, resonant, metallic sound. + 2. The strident call of a crane or goose. + 3. C-language family front-end toolkit. + +The goal of the Clang project is to create a new C, C++, Objective C +and Objective C++ front-end for the LLVM compiler. Its tools are built +as libraries and designed to be loosely-coupled and extensible. + +Install compiler-rt if you want the Blocks C language extension or to +enable sanitization and profiling options when building, and +libomp-devel to enable -fopenmp. + +%package libs +Summary: Runtime library for clang +Requires: %{name}-resource-filesystem%{?_isa} = %{version} +Recommends: compiler-rt%{?_isa} = %{version} +# atomic support is not part of compiler-rt +Recommends: libatomic%{?_isa} +# libomp-devel is required, so clang can find the omp.h header when compiling +# with -fopenmp. +Recommends: libomp-devel%{_isa} = %{version} +Recommends: libomp%{_isa} = %{version} + +# Use lld as the default linker on ARM due to rhbz#1918924 +%ifarch %{arm} +Requires: lld +%endif + +%description libs +Runtime library for clang. + +%package devel +Summary: Development header files for clang +Requires: %{name}-libs = %{version}-%{release} +%if %{without compat_build} +Requires: %{name}%{?_isa} = %{version}-%{release} +# The clang CMake files reference tools from clang-tools-extra. +Requires: %{name}-tools-extra%{?_isa} = %{version}-%{release} +%endif + +%description devel +Development header files for clang. + +%package resource-filesystem +Summary: Filesystem package that owns the clang resource directory +Provides: %{name}-resource-filesystem(major) = %{maj_ver} + +%description resource-filesystem +This package owns the clang resouce directory: $libdir/clang/$version/ + +%if %{without compat_build} +%package analyzer +Summary: A source code analysis framework +License: Apache-2.0 WITH LLVM-exception OR NCSA OR MIT +BuildArch: noarch +Requires: %{name} = %{version}-%{release} + +%description analyzer +The Clang Static Analyzer consists of both a source code analysis +framework and a standalone tool that finds bugs in C and Objective-C +programs. The standalone tool is invoked from the command-line, and is +intended to run in tandem with a build of a project or code base. + +%package tools-extra +Summary: Extra tools for clang +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +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. +%package -n git-clang-format +Summary: Integration of clang-format for git +Requires: %{name}-tools-extra = %{version}-%{release} +Requires: git +Requires: python3 + +%description -n git-clang-format +clang-format integration for git. + + +%package -n python3-clang +Summary: Python3 bindings for clang +Requires: %{name}-devel%{?_isa} = %{version}-%{release} +Requires: python3 +%description -n python3-clang +%{summary}. + + +%endif + + +%prep +%{gpgverify} --keyring='%{SOURCE4}' --signature='%{SOURCE3}' --data='%{SOURCE0}' + +%if %{with compat_build} +%autosetup -n %{clang_srcdir} -p2 +%else + +%{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 + +%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/* +%endif + +%build + +# Use ThinLTO to limit build time. +%define _lto_cflags -flto=thin +# And disable LTO on AArch64 entirely. +%ifarch aarch64 +%define _lto_cflags %{nil} +%endif + +%if 0%{?__isa_bits} == 64 +sed -i 's/\@FEDORA_LLVM_LIB_SUFFIX\@/64/g' test/lit.cfg.py +%else +sed -i 's/\@FEDORA_LLVM_LIB_SUFFIX\@//g' test/lit.cfg.py +%endif + +%ifarch s390 s390x %{arm} aarch64 %ix86 ppc64le +# Decrease debuginfo verbosity to reduce memory consumption during final library linking +%global optflags %(echo %{optflags} | sed 's/-g /-g1 /') +%endif + +# Disable dwz on aarch64, because it takes a huge amount of time to decide not to optimize things. +%ifarch aarch64 +%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 \ +%if 0%{?fedora} || 0%{?rhel} > 9 + -DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=ON \ +%endif + -DLLVM_PARALLEL_LINK_JOBS=1 \ + -DLLVM_LINK_LLVM_DYLIB:BOOL=ON \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DPYTHON_EXECUTABLE=%{__python3} \ + -DCMAKE_SKIP_RPATH:BOOL=ON \ +%ifarch s390 s390x %{arm} %ix86 ppc64le + -DCMAKE_C_FLAGS_RELWITHDEBINFO="%{optflags} -DNDEBUG" \ + -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="%{optflags} -DNDEBUG" \ +%endif +%if %{with compat_build} + -DCLANG_BUILD_TOOLS:BOOL=OFF \ + -DLLVM_CMAKE_DIR=%{install_libdir}/cmake/llvm \ + -DCMAKE_INSTALL_PREFIX=%{install_prefix} \ + -DCLANG_INCLUDE_TESTS:BOOL=OFF \ +%else + -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_LIT_ARGS="-vv" \ + -DLLVM_MAIN_SRC_DIR=%{_datadir}/llvm/src \ +%if 0%{?__isa_bits} == 64 + -DLLVM_LIBDIR_SUFFIX=64 \ +%else + -DLLVM_LIBDIR_SUFFIX= \ +%endif +%endif + \ +%if %{with compat_build} + -DLLVM_TABLEGEN_EXE:FILEPATH=%{_bindir}/llvm-tblgen-%{maj_ver} \ +%else + -DLLVM_TABLEGEN_EXE:FILEPATH=%{_bindir}/llvm-tblgen \ +%endif + -DCLANG_ENABLE_ARCMT:BOOL=ON \ + -DCLANG_ENABLE_STATIC_ANALYZER:BOOL=ON \ + -DCLANG_INCLUDE_DOCS:BOOL=ON \ + -DCLANG_PLUGIN_SUPPORT:BOOL=ON \ + -DENABLE_LINKER_BUILD_ID:BOOL=ON \ + -DLLVM_ENABLE_EH=ON \ + -DLLVM_ENABLE_RTTI=ON \ + -DLLVM_BUILD_DOCS=ON \ + -DLLVM_ENABLE_SPHINX=ON \ + -DCLANG_LINK_CLANG_DYLIB=ON \ + -DSPHINX_WARNINGS_AS_ERRORS=OFF \ + \ + -DCLANG_BUILD_EXAMPLES:BOOL=OFF \ + -DBUILD_SHARED_LIBS=OFF \ + -DCLANG_REPOSITORY_STRING="%{?dist_vendor} %{version}-%{release}" \ +%ifarch %{arm} + -DCLANG_DEFAULT_LINKER=lld \ +%endif + -DCLANG_DEFAULT_UNWINDLIB=libgcc + +%cmake_build + +%install + +%cmake_install + +%if %{with compat_build} + +# Remove binaries/other files +rm -Rf %{buildroot}%{install_bindir} +rm -Rf %{buildroot}%{install_prefix}/share +rm -Rf %{buildroot}%{install_prefix}/libexec +# Remove scanview-py helper libs +rm -Rf %{buildroot}%{install_prefix}/lib/{libear,libscanbuild} + +%else + +# File in the macros file for other packages to use. We are not doing this +# in the compat package, because the version macros would # conflict with +# eachother if both clang and the clang compat package were installed together. +install -p -m0644 -D %{SOURCE5} %{buildroot}%{_rpmmacrodir}/macros.%{name} +sed -i -e "s|@@CLANG_MAJOR_VERSION@@|%{maj_ver}|" \ + -e "s|@@CLANG_MINOR_VERSION@@|%{min_ver}|" \ + -e "s|@@CLANG_PATCH_VERSION@@|%{patch_ver}|" \ + %{buildroot}%{_rpmmacrodir}/macros.%{name} + +# install clang python bindings +mkdir -p %{buildroot}%{python3_sitelib}/clang/ +install -p -m644 bindings/python/clang/* %{buildroot}%{python3_sitelib}/clang/ +%py_byte_compile %{__python3} %{buildroot}%{python3_sitelib}/clang + +# install scanbuild-py to python sitelib. +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} + +# multilib fix +%multilib_fix_c_header --file %{_includedir}/clang/Config/config.h + +# 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 +mv %{buildroot}{%{_datadir}/clang,%{_emacs_sitestartdir}}/$f +done + +# remove editor integrations (bbedit, sublime, emacs, vim) +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/clang/html +rm -Rvf %{buildroot}%{_datadir}/clang/clang-doc-default-stylesheet.css +rm -Rvf %{buildroot}%{_datadir}/clang/index.js + +# TODO: What are the Fedora guidelines for packaging bash autocomplete files? +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 + +# Add clang++-{version} symlink +ln -s clang++ %{buildroot}%{_bindir}/clang++-%{maj_ver} + + +# Fix permission +chmod u-x %{buildroot}%{_mandir}/man1/scan-build.1* + +# create a link to clang's resource directory that is "constant" across minor +# version bumps +# this is required for packages like ccls that hardcode the link to clang's +# resource directory to not require rebuilds on minor version bumps +# Fix for bugs like rhbz#1807574 +pushd %{buildroot}%{_libdir}/clang/ +ln -s %{version} %{maj_ver} +popd + +%endif + +# 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}/ + + +%if %{without compat_build} +# Add a symlink in /usr/bin to clang-format-diff +ln -s %{_datadir}/clang/clang-format-diff.py %{buildroot}%{_bindir}/clang-format-diff +%endif + +%check +%if %{without compat_build} +%if %{with check} +# Build test dependencies separately, to prevent invocations of host clang from being affected +# by LD_LIBRARY_PATH below. +%cmake_build --target clang-test-depends \ + ExtraToolsUnitTests ClangdUnitTests ClangIncludeCleanerUnitTests ClangPseudoUnitTests +# requires lit.py from LLVM utilities +# FIXME: Fix failing ARM tests +LD_LIBRARY_PATH=%{buildroot}/%{_libdir} %{__ninja} check-all -C %{__cmake_builddir} || \ +%ifarch %{arm} +: +%else +false +%endif +%endif +%endif + + +%if %{without compat_build} +%files +%license LICENSE.TXT +%{_bindir}/clang +%{_bindir}/clang++ +%{_bindir}/clang-%{maj_ver} +%{_bindir}/clang++-%{maj_ver} +%{_bindir}/clang-cl +%{_bindir}/clang-cpp +%{_mandir}/man1/clang.1.gz +%{_mandir}/man1/clang++.1.gz +%{_mandir}/man1/clang-%{maj_ver}.1.gz +%{_mandir}/man1/clang++-%{maj_ver}.1.gz +%endif + +%files libs +%if %{without compat_build} +%{_libdir}/clang/%{version}/include/* +%{_libdir}/*.so.* +%else +%{pkg_libdir}/*.so.* +%{pkg_libdir}/clang/%{version}/include/* +%endif + +%files devel +%if %{without compat_build} +%{_libdir}/*.so +%{_includedir}/clang/ +%{_includedir}/clang-c/ +%{_libdir}/cmake/* +%{_bindir}/clang-tblgen +%dir %{_datadir}/clang/ +%{_rpmmacrodir}/macros.%{name} +%else +%{pkg_libdir}/*.so +%{pkg_includedir}/clang/ +%{pkg_includedir}/clang-c/ +%{pkg_libdir}/cmake/ +%endif + +%files resource-filesystem +%dir %{pkg_libdir}/clang/ +%dir %{pkg_libdir}/clang/%{version}/ +%dir %{pkg_libdir}/clang/%{version}/include/ +%dir %{pkg_libdir}/clang/%{version}/lib/ +%dir %{pkg_libdir}/clang/%{version}/share/ +%if %{without compat_build} +%{pkg_libdir}/clang/%{maj_ver} +%endif + +%if %{without compat_build} +%files analyzer +%{_bindir}/scan-view +%{_bindir}/scan-build +%{_bindir}/analyze-build +%{_bindir}/intercept-build +%{_bindir}/scan-build-py +%{_libexecdir}/ccc-analyzer +%{_libexecdir}/c++-analyzer +%{_libexecdir}/analyze-c++ +%{_libexecdir}/analyze-cc +%{_libexecdir}/intercept-c++ +%{_libexecdir}/intercept-cc +%{_datadir}/scan-view/ +%{_datadir}/scan-build/ +%{_mandir}/man1/scan-build.1.* +%{python3_sitelib}/libear +%{python3_sitelib}/libscanbuild + + +%files tools-extra +%{_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 +%{_emacs_sitestartdir}/clang-format.el +%{_emacs_sitestartdir}/clang-rename.el +%{_emacs_sitestartdir}/clang-include-fixer.el +%{_datadir}/clang/clang-format.py* +%{_datadir}/clang/clang-format-diff.py* +%{_datadir}/clang/clang-include-fixer.py* +%{_datadir}/clang/clang-tidy-diff.py* +%{_bindir}/run-clang-tidy +%{_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 + +%files -n python3-clang +%{python3_sitelib}/clang/ + + +%endif +%changelog +* Thu Jan 19 2023 Tulio Magno Quites Machado Filho - 15.0.7-3 +- Update license to SPDX identifiers. +- Include the Apache license adopted in 2019. + +* Wed Jan 18 2023 Fedora Release Engineering - 15.0.7-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Thu Jan 12 2023 Nikita Popov - 15.0.7-1 +- Update to LLVM 15.0.7 + +* Thu Jan 12 2023 Nikita Popov - 15.0.6-5 +- Fix resource-filesystem ownership conflict + +* Mon Jan 09 2023 Tom Stellard - 15.0.6-4 +- Omit frame pointers when building + +* Wed Dec 21 2022 Nikita Popov - 15.0.6-3 +- Add clang-devel dep to python3-clang + +* Mon Dec 12 2022 Nikita Popov - 15.0.6-2 +- Backport patches for ucrt64 toolchain detection + +* Mon Dec 05 2022 Nikita Popov - 15.0.6-1 +- Update to LLVM 15.0.6 + +* Thu Nov 03 2022 Nikita Popov - 15.0.4-1 +- Update to LLVM 15.0.4 + +* Wed Oct 19 2022 Nikita Popov - 15.0.0-6 +- Enable ieeelongdouble for ppc64le, fix rhbz#2136099 + +* Thu Oct 13 2022 Nikita Popov - 15.0.0-5 +- Default to non-pie, fix rhbz#2134146 + +* Wed Oct 05 2022 sguelton@redhat.com - 15.0.0-4 +- Package clang-tidy headers in clang-tools-extra-devel, fix rhbz#2123479 + +* Thu Sep 22 2022 Nikita Popov - 15.0.0-3 +- Add patch for inline builtins with asm label + +* Sat Sep 17 2022 sguelton@redhat.com - 15.0.0-3 +- Improve integration of llvm's libunwind + +* Wed Sep 14 2022 Nikita Popov - 15.0.0-2 +- Downgrade implicit int and implicit function declaration to warning only + +* Tue Sep 06 2022 Nikita Popov - 15.0.0-1 +- Update to LLVM 15.0.0 + +* Mon Aug 29 2022 sguelton@redhat.com - 14.0.5-7 +- Add a Recommends on libatomic, see rhbz#2118592 + +* Wed Aug 10 2022 Nikita Popov - 14.0.5-6 +- Revert powerpc -mabi=ieeelongdouble default + +* Thu Aug 04 2022 Tom Stellard - 14.0.5-5 +- Re-enable ieee128 as the default long double format on ppc64le + +* Thu Jul 28 2022 Amit Shah - 14.0.5-4 +- Use the dist_vendor macro to identify the distribution + +* Wed Jul 20 2022 Fedora Release Engineering - 14.0.5-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Thu Jun 30 2022 Miro Hrončok - 14.0.5-2 +- Revert "Use the ieee128 format for long double on ppc64le" until rhbz#2100546 is fixed + +* Tue Jun 14 2022 Timm Bäder - 14.0.5-1 +- Update to 14.0.5 + +* Mon Jun 13 2022 Python Maint - 14.0.0-4 +- Rebuilt for Python 3.11 + +* Thu May 19 2022 Tom Stellard - 14.0.0-3 +- Use the ieee128 format for long double on ppc64le + +* Mon Apr 04 2022 Jeremy Newton - 14.0.0-2 +- Add patch for HIP (cherry-picked from llvm trunk, to be LLVM15) + +* Wed Mar 23 2022 Timm Bäder - 14.0.0-1 +- Update to 14.0.0 + +* Wed Feb 16 2022 Tom Stellard - 13.0.1-2 +- Fix some rpmlinter errors + +* Thu Feb 03 2022 Nikita Popov - 13.0.1-1 +- Update to LLVM 13.0.1 final + +* Tue Feb 01 2022 Nikita Popov - 13.0.1~rc3-1 +- Update to LLVM 13.0.1rc3 + +* Wed Jan 19 2022 Fedora Release Engineering - 13.0.1~rc2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Fri Jan 14 2022 Nikita Popov - 13.0.1~rc2-1 +- Update to LLVM 13.0.1rc2 + +* Wed Jan 12 2022 Nikita Popov - 13.0.1~rc1-1 +- Update to LLVM 13.0.1rc1 + +* Thu Oct 28 2021 Tom Stellard - 13.0.0-5 +- Make lld the default linker on arm + +* Wed Oct 27 2021 Tom Stellard - 13.0.0-4 +- Remove Conflicts: compiler-rt for newer versions of compiler-rt + +* Wed Oct 06 2021 Tom Stellard - 13.0.0-3 +- Fix gcc detection with redhat triples + +* Tue Oct 05 2021 Tom Stellard - 13.0.0-2 +- Drop abi_revision from soname + +* Fri Oct 01 2021 Tom Stellard - 13.0.0-1 +- 13.0.0 Release + +* Sat Sep 18 2021 Tom Stellard - 13.0.0~rc1-5 +- 13.0.0-rc3 Release + +* Tue Sep 14 2021 Konrad Kleine - 13.0.0~rc1-4 +- Add --without=check option + +* Fri Sep 10 2021 sguelton@redhat.com - 13.0.0~rc1-3 +- Apply scan-build-py intergation patch + +* Thu Sep 09 2021 Tom Stellard - 13.0.0~rc1-2 +- Add macros.clang file + +* Fri Aug 06 2021 Tom Stellard - 13.0.0~rc1-1 +- 13.0.0-rc1 Release + +* Thu Jul 22 2021 Tom Stellard - 12.0.1-3 +- Fix compat build + +* Wed Jul 21 2021 Fedora Release Engineering - 12.0.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Tue Jul 13 2021 Tom Stellard - 12.0.1-1 +- 12.0.1 Release + +* Fri Jul 09 2021 Tom Stellard - 12.0.1~rc3-2 +- Fix ambiguous python shebangs + +* Wed Jun 30 2021 Tom Stellard - clang-12.0.1~rc3-1 +- 12.0.1-rc3 Release + +* Tue Jun 08 2021 Tom Stellard - 12.0.1~rc1-3 +- Only enable -funwind-tables by default on Fedora arches + +* Fri Jun 04 2021 Python Maint - 12.0.1~rc1-2 +- Rebuilt for Python 3.10 + +* Thu May 27 2021 Tom Stellard - clang-12.0.1~rc1-1 +- 12.0.1-rc1 Release + +* Tue May 18 2021 sguelton@redhat.com - 12.0.0-2 +- Use the alternative-managed version of llvm-config + +* Fri Apr 16 2021 Tom Stellard - 12.0.0-1 +- 12.0.0 Release + +* Wed Apr 14 2021 Tom Stellard - 12.0.0-0.12.rc5 +- Add symlink to clang-format-diff in /usr/bin +- rhbz#1939018 + +* Thu Apr 08 2021 sguelton@redhat.com - 12.0.0-0.11.rc5 +- New upstream release candidate + +* Sat Apr 03 2021 sguelton@redhat.com - 12.0.0-0.10.rc4 +- Make pyc files from python3-clang reproducible + +* Fri Apr 02 2021 sguelton@redhat.com - 12.0.0-0.9.rc4 +- New upstream release candidate + +* Wed Mar 31 2021 Jonathan Wakely - 12.0.0-0.8.rc3 +- Rebuilt for removed libstdc++ symbols (#1937698) + +* Mon Mar 15 2021 sguelton@redhat.com - 12.0.0-0.7.rc3 +- Apply patch D97846 to fix rhbz#1934065 + +* Mon Mar 15 2021 Timm Bäder 12.0.0-0.6.rc3 +- Set CLANG_DEFAULT_UNWIND_LIB instead of using custom patch +- Add toolchains test to the tests.yml + +* Thu Mar 11 2021 sguelton@redhat.com - 12.0.0-0.5.rc3 +- LLVM 12.0.0 rc3 + +* Tue Mar 09 2021 sguelton@redhat.com - 12.0.0-0.4.rc2 +- rebuilt + +* Mon Mar 01 2021 sguelton@redhat.com - 12.0.0-0.3.rc2 +- Reapply some wrongly removed patch + +* Wed Feb 24 2021 sguelton@redhat.com - 12.0.0-0.2.rc2 +- 12.0.0-rc2 release + +* Sun Feb 14 2021 sguelton@redhat.com - 12.0.0-0.1.rc1 +- 12.0.0-rc1 release + +* Tue Feb 09 2021 Tom Stellard - 11.1.0-0.5.rc2 +- Remove some unnecessary scan-view files + +* Tue Jan 26 2021 Fedora Release Engineering - 11.1.0-0.4.rc2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Fri Jan 22 2021 Serge Guelton - 11.1.0-0.3.rc2 +- 11.1.0-rc2 release + +* Wed Jan 20 2021 Serge Guelton - 11.1.0-0.2.rc1 +- rebuilt with https://reviews.llvm.org/D94941 applied. + +* Thu Jan 14 2021 Serge Guelton - 11.1.0-0.1.rc1 +- 11.1.0-rc1 release + +* Wed Jan 06 2021 Serge Guelton - 11.0.1-4 +- LLVM 11.0.1 final + +* Sun Dec 20 2020 sguelton@redhat.com - 11.0.1-3.rc2 +- llvm 11.0.1-rc2 + +* Wed Dec 16 2020 Tom Stellard - 11.0.1-2.rc1 +- Don't build with -flto + +* Tue Dec 01 2020 sguelton@redhat.com - 11.0.1-1.rc1 +- llvm 11.0.1-rc1 + +* Thu Oct 29 2020 Tom Stellard - 11.0.0-3 +- Remove -ffat-lto-objects compiler flag + +* Wed Oct 28 2020 Tom Stellard - 11.0.0-2 +- Add clang-resource-filesystem sub-package + +* Thu Oct 15 2020 sguelton@redhat.com - 11.0.0-1 +- Fix NVR + +* Mon Oct 12 2020 sguelton@redhat.com - 11.0.0-0.7 +- llvm 11.0.0 - final release + +* Thu Oct 08 2020 sguelton@redhat.com - 11.0.0-0.6.rc6 +- 11.0.0-rc6 + +* Fri Oct 02 2020 sguelton@redhat.com - 11.0.0-0.5.rc5 +- 11.0.0-rc5 Release + +* Sun Sep 27 2020 sguelton@redhat.com - 11.0.0-0.4.rc3 +- Fix NVR + +* Thu Sep 24 2020 sguelton@redhat.com - 11.0.0-0.1.rc3 +- 11.0.0-rc3 Release + +* Tue Sep 22 2020 sguelton@redhat.com - 11.0.0-0.3.rc2 +- Prefer gcc toolchains with libgcc_s + +* Tue Sep 01 2020 sguelton@redhat.com - 11.0.0-0.2.rc2 +- Normalize some doc directory locations + +* Tue Sep 01 2020 sguelton@redhat.com - 11.0.0-0.1.rc2 +- 11.0.0-rc2 Release +- Use %%license macro + +* Tue Aug 11 2020 Tom Stellard - 11.0.0-0.2.rc1 +- Fix test failures + +* Mon Aug 10 2020 Tom Stellard - 11.0.0-0.1.rc1 +- 11.0.0-rc1 Release + +* Tue Aug 04 2020 Tom Stellard - 10.0.0-11 +- Remove Requires: emacs-filesystem + +* Sat Aug 01 2020 Fedora Release Engineering - 10.0.0-10 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jul 28 2020 Jeff Law - 10.0.0-9 +- Disable LTO on arm and i686 + +* Mon Jul 27 2020 Fedora Release Engineering - 10.0.0-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 20 2020 sguelton@redhat.com - 10.0.0-7 +- Update cmake macro usage +- Finalize source verification + +* Fri Jun 26 2020 Tom Stellard - 10.0.0-6 +- Add cet.h header + +* Mon Jun 08 2020 Tom Stellard - 10.0.0-5 +- Accept multiple --config options + +* Wed Jun 3 2020 Dan Čermák - 10.0.0-4 +- Add symlink to %%{_libdir}/clang/%%{maj_ver} for persistent access to the resource directory accross minor version bumps + +* Mon May 25 2020 Miro Hrončok - 10.0.0-3 +- Rebuilt for Python 3.9 + +* Tue May 19 2020 sguelton@redhat.com - 10.0.0-2 +- Backport ad7211df6f257e39da2e5a11b2456b4488f32a1e, see rhbz#1825593 + +* Thu Mar 26 2020 sguelton@redhat.com - 10.0.0-1 +- 10.0.0 final + +* Tue Mar 24 2020 sguelton@redhat.com - 10.0.0-0.11.rc6 +- 10.0.0 rc6 + +* Sun Mar 22 2020 sguelton@redhat.com - 10.0.0-0.10.rc5 +- Update git-clang-format dependency, see rhbz#1815913 + +* Fri Mar 20 2020 Tom Stellard - 10.0.0-0.9.rc5 +- Add dependency on libomp-devel + +* Fri Mar 20 2020 sguelton@redhat.com - 10.0.0-0.8.rc5 +- 10.0.0 rc5 + +* Sat Mar 14 2020 sguelton@redhat.com - 10.0.0-0.7.rc4 +- 10.0.0 rc4 + +* Thu Mar 12 2020 sguelton@redhat.com - 10.0.0-0.6.rc3 +- Move a few files from clang to clang-tools-extra. + +* Thu Mar 05 2020 sguelton@redhat.com - 10.0.0-0.5.rc3 +- 10.0.0 rc3 + +* Tue Feb 25 2020 sguelton@redhat.com - 10.0.0-0.4.rc2 +- Apply -fdiscard-value-names patch. + +* Mon Feb 17 2020 sguelton@redhat.com - 10.0.0-0.3.rc2 +- Fix NVR + +* Fri Feb 14 2020 sguelton@redhat.com - 10.0.0-0.1.rc2 +- 10.0.0 rc2 + +* Tue Feb 11 2020 sguelton@redhat.com - 10.0.0-0.2.rc1 +- Explicitly conflicts with any different compiler-rt version, see rhbz#1800705 + +* Fri Jan 31 2020 Tom Stellard - 10.0.0-0.1.rc1 +- Stop shipping individual component libraries +- https://fedoraproject.org/wiki/Changes/Stop-Shipping-Individual-Component-Libraries-In-clang-lib-Package + +* Fri Jan 31 2020 sguelton@redhat.com - 10.0.0-0.1.rc1 +- 10.0.0 rc1 + +* Tue Jan 28 2020 Fedora Release Engineering - 9.0.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Fri Jan 10 2020 Tom Stellard - 9.0.1-2 +- Fix crash with kernel bpf self-tests + +* Thu Dec 19 2019 Tom Stellard - 9.0.1-1 +- 9.0.1 Release + +* Wed Dec 11 2019 Tom Stellard - 9.0.0-3 +- Add explicit requires for clang-libs to fix rpmdiff errors + +* Tue Dec 10 2019 sguelton@redhat.com - 9.0.0-2 +- Activate -funwind-tables on all arches, see rhbz#1655546. + +* Thu Sep 19 2019 Tom Stellard - 9.0.0-1 +- 9.0.0 Release + +* Wed Sep 11 2019 Tom Stellard - 9.0.0-0.2.rc3 +- Reduce debug info verbosity on ppc64le to avoid OOM errors in koji + +* Thu Aug 22 2019 Tom Stellard - 9.0.0-0.1.rc3 +- 9.0.0 Release candidate 3 + +* Tue Aug 20 2019 sguelton@redhat.com - 8.0.0-4 +- Rebuilt for Python 3.8 + +* Mon Aug 19 2019 Miro Hrončok - 8.0.0-3.2 +- Rebuilt for Python 3.8 + +* Wed Jul 24 2019 Fedora Release Engineering - 8.0.0-3.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Thu May 16 2019 sguelton@redhat.com - 8.0.0-3 +- Fix for rhbz#1674031 + +* Fri Apr 12 2019 sguelton@redhat.com - 8.0.0-2 +- Remove useless patch thanks to GCC upgrade + +* Wed Mar 20 2019 sguelton@redhat.com - 8.0.0-1 +- 8.0.0 final + +* Tue Mar 12 2019 sguelton@redhat.com - 8.0.0-0.6.rc4 +- 8.0.0 Release candidate 4 + +* Mon Mar 4 2019 sguelton@redhat.com - 8.0.0-0.5.rc3 +- Cleanup specfile after llvm dependency update + +* Mon Mar 4 2019 sguelton@redhat.com - 8.0.0-0.4.rc3 +- 8.0.0 Release candidate 3 + +* Mon Feb 25 2019 tstellar@redhat.com - 8.0.0-0.3.rc2 +- Fix compiling with -stdlib=libc++ + +* Thu Feb 21 2019 sguelton@redhat.com - 8.0.0-0.2.rc2 +- 8.0.0 Release candidate 2 + +* Sat Feb 09 2019 sguelton@redhat.com - 8.0.0-0.1.rc1 +- 8.0.0 Release candidate 1 + +* Tue Feb 05 2019 sguelton@redhat.com - 7.0.1-6 +- Update patch for Python3 port of scan-view + +* Tue Feb 05 2019 sguelton@redhat.com - 7.0.1-5 +- Working CI test suite + +* Mon Feb 04 2019 sguelton@redhat.com - 7.0.1-4 +- Workaround gcc-9 bug when compiling bitfields + +* Fri Feb 01 2019 sguelton@redhat.com - 7.0.1-3 +- Fix uninitialized error detected by gcc-9 + +* Thu Jan 31 2019 Fedora Release Engineering - 7.0.1-2.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Wed Dec 19 2018 Tom Stellard - 7.0.1-2 +- Fix for rhbz#1657544 + +* Tue Dec 18 2018 sguelton@redhat.com - 7.0.1-1 +- 7.0.1 + +* Tue Dec 18 2018 sguelton@redhat.com - 7.0.0-10 +- Install proper manpage symlinks for clang/clang++ versions + +* Fri Dec 14 2018 sguelton@redhat.com - 7.0.0-9 +- No longer Ignore -fstack-clash-protection option + +* Tue Dec 04 2018 sguelton@redhat.com - 7.0.0-8 +- Ensure rpmlint passes on specfile + +* Fri Nov 30 2018 Tom Stellard - 7.0.0-7 +- Drop python2 dependency from clang-tools-extra + +* Wed Nov 21 2018 sguelton@redhat.com - 7.0.0-6 +- Prune unneeded reference to llvm-test-suite sub-package + +* Mon Nov 19 2018 Tom Stellard - 7.0.0-5 +- Run 'make check-all' instead of 'make check-clang' + +* Mon Nov 19 2018 sergesanspaille - 7.0.0-4 +- Avoid Python2 + Python3 dependency for clang-analyzer + +* Mon Nov 05 2018 Tom Stellard - 7.0.0-3 +- User helper macro to fixup config.h for multilib + +* Tue Oct 02 2018 Tom Stellard - 7.0.0-2 +- Use correct shebang substitution for python scripts + +* Mon Sep 24 2018 Tom Stellard - 7.0.0-1 +- 7.0.0 Release + +* Wed Sep 19 2018 Tom Stellard - 7.0.0-0.16.rc3 +- Move builtin headers into clang-libs sub-package + +* Wed Sep 19 2018 Tom Stellard - 7.0.0-0.15.rc3 +- Remove ambiguous python shebangs + +* Thu Sep 13 2018 Tom Stellard - 7.0.0-0.14.rc3 +- Move unversioned shared objects to devel package + +* Thu Sep 13 2018 Tom Stellard - 7.0.0-0.13.rc3 +- Rebuild with new llvm-devel that disables rpath on install + +* Thu Sep 13 2018 Tom Stellard - 7.0.0-0.12.rc3 +- Fix clang++-7 symlink + +* Wed Sep 12 2018 Tom Stellard - 7.0.0-0.11.rc3 +- 7.0.0-rc3 Release + +* Mon Sep 10 2018 Tom Stellard - 7.0.0-0.10.rc2 +- Drop siod from llvm-test-suite + +* Fri Sep 07 2018 Tom Stellard - 7.0.0-0.9.rc2 +- Drop python2 dependency from clang package + +* Thu Sep 06 2018 Tom Stellard - 7.0.0-0.8.rc2 +- Drop all uses of python2 from lit tests + +* Sat Sep 01 2018 Tom Stellard - 7.0.0-0.7.rc2 +- Add Fedora specific version string + +* Tue Aug 28 2018 Tom Stellard - 7.0.0-0.6.rc2 +- 7.0.0-rc2 Release + +* Tue Aug 28 2018 Tom Stellard - 7.0.0-0.5.rc1 +- Enable unit tests + +* Fri Aug 17 2018 Tom Stellard - 7.0.0-0.4.rc1 +- Move llvm-test-suite into a sub-package + +* Fri Aug 17 2018 Tom Stellard - 7.0.0-0.3.rc1 +- Recommend the same version of compiler-rt + +* Wed Aug 15 2018 Tom Stellard - 7.0.0-0.2.rc1 +- Rebuild for f30 + +* Mon Aug 13 2018 Tom Stellard - 7.0.0-0.1.rc1 +- 7.0.0-rc1 Release + +* Mon Jul 23 2018 Tom Stellard - 6.0.1-3 +- Sync spec file with the clang6.0 package + +* Thu Jul 12 2018 Fedora Release Engineering - 6.0.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Tue Jun 26 2018 Tom Stellard - 6.0.1-1 +- 6.0.1 Release + +* Wed Jun 13 2018 Tom Stellard - 6.0.1-0.2.rc2 +- 6.0.1-rc2 + +* Fri May 11 2018 Tom Stellard - 6.0.1-0.1.rc1 +- 6.0.1-rc1 Release + +* Fri Mar 23 2018 Tom Stellard - 6.0.0-5 +- Add a clang++-{version} symlink rhbz#1534098 + +* Thu Mar 22 2018 Tom Stellard - 6.0.0-4 +- Use correct script for running lit tests + +* Wed Mar 21 2018 Tom Stellard - 6.0.0-3 +- Fix toolchain detection so we don't default to using cross-compilers: + rhbz#1482491 + +* Mon Mar 12 2018 Tom Stellard - 6.0.0-2 +- Add Provides: clang(major) rhbz#1547444 + +* Fri Mar 09 2018 Tom Stellard - 6.0.0-1 +- 6.0.0 Release + +* Mon Feb 12 2018 Tom Stellard - 6.0.0-0.6.rc2 +- 6.0.0-rc2 Release + +* Wed Feb 07 2018 Fedora Release Engineering - 6.0.0-0.5.rc1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Feb 01 2018 Tom Stellard - 6.0.0-0.4.rc1 +- Package python helper scripts for tools + +* Fri Jan 26 2018 Tom Stellard - 6.0.0-0.3.rc1 +- Ignore -fstack-clash-protection option instead of giving an error + +* Fri Jan 26 2018 Tom Stellard - 6.0.0-0.2.rc1 +- Package emacs integration files + +* Wed Jan 24 2018 Tom Stellard - 6.0.0-0.1.rc1 +- 6.0.0-rc1 Release + +* Wed Jan 24 2018 Tom Stellard - 5.0.1-3 +- Rebuild against llvm5.0 compatibility package +- rhbz#1538231 + +* Wed Jan 03 2018 Iryna Shcherbina - 5.0.1-2 +- Update Python 2 dependency declarations to new packaging standards + (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) + +* Wed Dec 20 2017 Tom Stellard - 5.0.1-1 +- 5.0.1 Release + +* Wed Dec 13 2017 Tom Stellard - 5.0.0-3 +- Make compiler-rt a weak dependency and add a weak dependency on libomp + +* Mon Nov 06 2017 Merlin Mathesius - 5.0.0-2 +- Cleanup spec file conditionals + +* Mon Oct 16 2017 Tom Stellard - 5.0.0-1 +- 5.0.0 Release + +* Wed Oct 04 2017 Rex Dieter - 4.0.1-6 +- python2-clang subpkg (#1490997) +- tools-extras: tighten (internal) -libs dep +- %%install: avoid cd + +* Wed Aug 30 2017 Tom Stellard - 4.0.1-5 +- Add Requires: python for git-clang-format + +* Sun Aug 06 2017 Björn Esser - 4.0.1-4 +- Rebuilt for AutoReq cmake-filesystem + +* Wed Aug 02 2017 Fedora Release Engineering - 4.0.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 4.0.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Jun 23 2017 Tom Stellard - 4.0.1-1 +- 4.0.1 Release. + +* Fri Jun 16 2017 Tom Stellard - 4.0.0-8 +- Enable make check-clang + +* Mon Jun 12 2017 Tom Stellard - 4.0.0-7 +- Package git-clang-format + +* Thu Jun 08 2017 Tom Stellard - 4.0.0-6 +- Generate man pages + +* Thu Jun 08 2017 Tom Stellard - 4.0.0-5 +- Ignore test-suite failures until all arches are fixed. + +* Mon Apr 03 2017 Tom Stellard - 4.0.0-4 +- Run llvm test-suite + +* Mon Mar 27 2017 Tom Stellard - 4.0.0-3 +- Enable eh/rtti, which are required by lldb. + +* Fri Mar 24 2017 Tom Stellard - 4.0.0-2 +- Fix clang-tools-extra build +- Fix install + +* Thu Mar 23 2017 Tom Stellard - 4.0.0-1 +- clang 4.0.0 final release + +* Mon Mar 20 2017 David Goerger - 3.9.1-3 +- add clang-tools-extra rhbz#1328091 + +* Thu Mar 16 2017 Tom Stellard - 3.9.1-2 +- Enable build-id by default rhbz#1432403 + +* Thu Mar 02 2017 Dave Airlie - 3.9.1-1 +- clang 3.9.1 final release + +* Fri Feb 10 2017 Fedora Release Engineering - 3.9.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Mon Nov 14 2016 Nathaniel McCallum - 3.9.0-3 +- Add Requires: compiler-rt to clang-libs. +- Without this, compiling with certain CFLAGS breaks. + +* Tue Nov 1 2016 Peter Robinson 3.9.0-2 +- Rebuild for new arches + +* Fri Oct 14 2016 Dave Airlie - 3.9.0-1 +- clang 3.9.0 final release + +* Fri Jul 01 2016 Stephan Bergmann - 3.8.0-2 +- Resolves: rhbz#1282645 add GCC abi_tag support + +* Thu Mar 10 2016 Dave Airlie 3.8.0-1 +- clang 3.8.0 final release + +* Thu Mar 03 2016 Dave Airlie 3.8.0-0.4 +- clang 3.8.0rc3 + +* Wed Feb 24 2016 Dave Airlie - 3.8.0-0.3 +- package all libs into clang-libs. + +* Wed Feb 24 2016 Dave Airlie 3.8.0-0.2 +- enable dynamic linking of clang against llvm + +* Thu Feb 18 2016 Dave Airlie - 3.8.0-0.1 +- clang 3.8.0rc2 + +* Fri Feb 12 2016 Dave Airlie 3.7.1-4 +- rebuild against latest llvm packages +- add BuildRequires llvm-static + +* Wed Feb 03 2016 Fedora Release Engineering - 3.7.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Thu Jan 28 2016 Dave Airlie 3.7.1-2 +- just accept clang includes moving to /usr/lib64, upstream don't let much else happen + +* Thu Jan 28 2016 Dave Airlie 3.7.1-1 +- initial build in Fedora. + +* Tue Oct 06 2015 Jan Vcelak 3.7.0-100 +- initial version using cmake build system diff --git a/fix-lto-path.patch b/fix-lto-path.patch new file mode 100644 index 0000000..9602194 --- /dev/null +++ b/fix-lto-path.patch @@ -0,0 +1,25 @@ +diff --git a/clang/include/clang/Config/config.h.cmake b/clang/include/clang/Config/config.h.cmake +index dfd2f757a185..96aceb656e2b 100644 +--- a/clang/include/clang/Config/config.h.cmake ++++ b/clang/include/clang/Config/config.h.cmake +@@ -104,4 +104,6 @@ + /* Whether to enable opaque pointers by default */ + #cmakedefine01 CLANG_ENABLE_OPAQUE_POINTERS_INTERNAL + ++#define CLANG_INSTALL_PREFIX "${CLANG_INSTALL_PREFIX}" ++ + #endif +diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp +index 443725f7d8a8..23239824a0f1 100644 +--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp ++++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp +@@ -501,8 +501,7 @@ void tools::addLTOOptions(const ToolChain &ToolChain, const ArgList &Args, + #endif + + SmallString<1024> Plugin; +- llvm::sys::path::native( +- Twine(D.Dir) + "/../lib" CLANG_LIBDIR_SUFFIX "/LLVMgold" + Suffix, ++ llvm::sys::path::native(Twine(CLANG_INSTALL_PREFIX "/LLVMgold") + Suffix, + Plugin); + CmdArgs.push_back(Args.MakeArgString(Plugin)); + } diff --git a/macros.clang b/macros.clang new file mode 100644 index 0000000..1f26e35 --- /dev/null +++ b/macros.clang @@ -0,0 +1,16 @@ +%clang_major_version @@CLANG_MAJOR_VERSION@@ +%clang_minor_version @@CLANG_MINOR_VERSION@@ +%clang_patch_version @@CLANG_PATCH_VERSION@@ + +%clang_version %{clang_major_version}.%{clang_minor_version}.%{clang_patch_version} + +# This is the path to the clang resource directory that has clang's internal +# headers and libraries. This path should be used by packages that need to +# install files into this directory. This macro's value changes every time +# clang's version changes. +%clang_resource_dir %{_libdir}/clang/%{clang_version} + +# This is the path to the clang resource directory that should be used +# by packages that need to read files from this directory at runtime. +# This macro only changes when clang's major version changes. +%clang_resource_dir_readonly %{_libdir}/clang/%{clang_major_version} diff --git a/release-keys.asc b/release-keys.asc new file mode 100644 index 0000000..0d3789a --- /dev/null +++ b/release-keys.asc @@ -0,0 +1,104 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +9RmlwZlOTFGcWBYl/cfRONn9qi9a6w== +=Lvw+ +-----END PGP PUBLIC KEY BLOCK----- +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +=tMzl +-----END PGP PUBLIC KEY BLOCK----- diff --git a/sources b/sources new file mode 100644 index 0000000..217a12d --- /dev/null +++ b/sources @@ -0,0 +1,4 @@ +SHA512 (clang-15.0.7.src.tar.xz) = 9fd2736a9f5993ddbb5b3c507fe497234a6def64f6f418f379d1ca56c9c361ad1ae9a5445ab938230fbc1671ec00b4f802a412b048569023863c20dc6bb46a1f +SHA512 (clang-15.0.7.src.tar.xz.sig) = e1b41c5a6509c3554794bfa1b8d048f13268bc2234d7480f04f7700e27bd9d53e40bc1433885716a64da57458f3041c42a66639045476daefffc3f5d2e3d6efd +SHA512 (clang-tools-extra-15.0.7.src.tar.xz) = dd95d261d3a1618967b698e97ac0b41204d872d7479c0c832fcf5a91fe447af6a97fa794de07b3e271285867b30b905688f090e98f516b9df4cdfb3bad9defc6 +SHA512 (clang-tools-extra-15.0.7.src.tar.xz.sig) = 10887b80d453d1ec826afbf5cfd937d5b671ed73f54691072b2b097da21f9358b8d6372df79200dc0694cbbc40b816c4139690b4e7033ba03a8a9b92611ee4ce