diff --git a/0001-Add-cet.h-for-writing-CET-enabled-assembly-code.patch b/0001-Add-cet.h-for-writing-CET-enabled-assembly-code.patch new file mode 100644 index 0000000..552de9e --- /dev/null +++ b/0001-Add-cet.h-for-writing-CET-enabled-assembly-code.patch @@ -0,0 +1,146 @@ +From bcc0c894f38fd8b43af521e356a167b1a12dd497 Mon Sep 17 00:00:00 2001 +From: Xiang1 Zhang +Date: Tue, 19 May 2020 13:29:30 +0800 +Subject: [PATCH] Add cet.h for writing CET-enabled assembly code + +Summary: +Add x86 feature with IBT and/or SHSTK bits to ELF program property if they are enabled. Otherwise, contents in this header file are unused. +This file is mainly design for assembly source code which want to enable CET + +Reviewers: hjl.tools, annita.zhang, LuoYuanke, craig.topper, tstellar, pengfei, rsmith + +Reviewed By: LuoYuanke + +Subscribers: cfe-commits, mgorny + +Tags: #clang + +Differential Revision: https://reviews.llvm.org/D79617 +--- + clang/lib/Headers/CMakeLists.txt | 1 + + clang/lib/Headers/cet.h | 66 ++++++++++++++++++++++++++++++++++++++++ + clang/test/CodeGen/asm-cet.S | 27 ++++++++++++++++ + 3 files changed, 94 insertions(+) + create mode 100644 clang/lib/Headers/cet.h + create mode 100644 clang/test/CodeGen/asm-cet.S + +diff --git a/clang/lib/Headers/CMakeLists.txt b/clang/lib/Headers/CMakeLists.txt +index 60d359f..c5215ee 100644 +--- a/clang/lib/Headers/CMakeLists.txt ++++ b/clang/lib/Headers/CMakeLists.txt +@@ -46,6 +46,7 @@ set(files + __clang_cuda_math_forward_declares.h + __clang_cuda_runtime_wrapper.h + cetintrin.h ++ cet.h + cldemoteintrin.h + clzerointrin.h + cpuid.h +diff --git a/clang/lib/Headers/cet.h b/clang/lib/Headers/cet.h +new file mode 100644 +index 0000000..ffb19de +--- /dev/null ++++ b/clang/lib/Headers/cet.h +@@ -0,0 +1,66 @@ ++/*===------ cet.h -Control-flow Enforcement Technology feature ------------=== ++ * Add x86 feature with IBT and/or SHSTK bits to ELF program property if they ++ * are enabled. Otherwise, contents in this header file are unused. This file ++ * is mainly design for assembly source code which want to enable CET. ++ * ++ * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. ++ * See https://llvm.org/LICENSE.txt for license information. ++ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception ++ * ++ *===-----------------------------------------------------------------------=== ++ */ ++#ifndef __CET_H ++#define __CET_H ++ ++#ifdef __ASSEMBLER__ ++ ++#ifndef __CET__ ++# define _CET_ENDBR ++#endif ++ ++#ifdef __CET__ ++ ++# ifdef __LP64__ ++# if __CET__ & 0x1 ++# define _CET_ENDBR endbr64 ++# else ++# define _CET_ENDBR ++# endif ++# else ++# if __CET__ & 0x1 ++# define _CET_ENDBR endbr32 ++# else ++# define _CET_ENDBR ++# endif ++# endif ++ ++ ++# ifdef __LP64__ ++# define __PROPERTY_ALIGN 3 ++# else ++# define __PROPERTY_ALIGN 2 ++# endif ++ ++ .pushsection ".note.gnu.property", "a" ++ .p2align __PROPERTY_ALIGN ++ .long 1f - 0f /* name length. */ ++ .long 4f - 1f /* data length. */ ++ /* NT_GNU_PROPERTY_TYPE_0. */ ++ .long 5 /* note type. */ ++0: ++ .asciz "GNU" /* vendor name. */ ++1: ++ .p2align __PROPERTY_ALIGN ++ /* GNU_PROPERTY_X86_FEATURE_1_AND. */ ++ .long 0xc0000002 /* pr_type. */ ++ .long 3f - 2f /* pr_datasz. */ ++2: ++ /* GNU_PROPERTY_X86_FEATURE_1_XXX. */ ++ .long __CET__ ++3: ++ .p2align __PROPERTY_ALIGN ++4: ++ .popsection ++#endif ++#endif ++#endif +diff --git a/clang/test/CodeGen/asm-cet.S b/clang/test/CodeGen/asm-cet.S +new file mode 100644 +index 0000000..3644ed7 +--- /dev/null ++++ b/clang/test/CodeGen/asm-cet.S +@@ -0,0 +1,27 @@ ++// REQUIRES: x86-registered-target ++// RUN: %clang --target=x86_64-pc-linux -fcf-protection -include cet.h -c %s -o - | llvm-readelf -n | FileCheck %s ++// RUN: %clang --target=x86_64-pc-linux -include cet.h -c %s -o - | llvm-readelf -S | FileCheck %s --check-prefixes=NOCET ++// RUN: %clang --target=x86_64-pc-linux -include cet.h -S %s -o - | FileCheck %s --check-prefixes=NOENDBR ++// RUN: %clang --target=x86_64-pc-linux -fcf-protection -include cet.h -S %s -o - | FileCheck %s --check-prefixes=ENDBR64 ++ ++// RUN: %clang --target=i386-pc-linux -fcf-protection -include cet.h -c %s -o - | llvm-readelf -n | FileCheck %s ++// RUN: %clang --target=i386-pc-linux -include cet.h -c %s -o - | llvm-readelf -S | FileCheck %s --check-prefixes=NOCET ++// RUN: %clang --target=i386-pc-linux -include cet.h -S %s -o - | FileCheck %s --check-prefixes=NOENDBR ++// RUN: %clang --target=i386-pc-linux -fcf-protection -include cet.h -S %s -o - | FileCheck %s --check-prefixes=ENDBR32 ++ ++// CHECK: IBT, SHSTK ++ ++// NOCET: Section Headers ++// NOCET-NOT: .note.gnu.property ++ ++// NOENDBR: foo ++// NOENDBR-NOT: endbr ++ ++// ENDBR64: endbr64 ++// ENDBR32: endbr32 ++ .text ++ .globl foo ++ .type foo, @function ++foo: ++ _CET_ENDBR ++ ret +-- +1.8.3.1 + diff --git a/0001-Driver-Accept-multiple-config-options-if-filenames-a.patch b/0001-Driver-Accept-multiple-config-options-if-filenames-a.patch new file mode 100644 index 0000000..8e11d46 --- /dev/null +++ b/0001-Driver-Accept-multiple-config-options-if-filenames-a.patch @@ -0,0 +1,64 @@ +From d970ab63e22eb5918774953da6b99ac27e5832a0 Mon Sep 17 00:00:00 2001 +From: Tom Stellard +Date: Tue, 16 Jun 2020 11:20:20 -0700 +Subject: [PATCH] Driver: Accept multiple --config options if filenames are the + same + +Summary: +We're trying to use the --config options to pass distro specific +options for Fedora via the CFLAGS variable. However, some projects +end up using the CFLAGS variable multiple times in their command line, +which leads to an error when --config is used. + +This patch resolves this issue by allowing more than one --config option +on the command line as long as the file names are the same. + +Reviewers: sepavloff, hfinkel + +Reviewed By: sepavloff + +Subscribers: cfe-commits, llvm-commits + +Tags: #clang + +Differential Revision: https://reviews.llvm.org/D81424 +--- + clang/lib/Driver/Driver.cpp | 8 ++++++-- + clang/test/Driver/config-file.c | 5 +++++ + 2 files changed, 11 insertions(+), 2 deletions(-) + +diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp +index 3add665..a8442d2 100644 +--- a/clang/lib/Driver/Driver.cpp ++++ b/clang/lib/Driver/Driver.cpp +@@ -833,8 +833,12 @@ bool Driver::loadConfigFile() { + std::vector ConfigFiles = + CLOptions->getAllArgValues(options::OPT_config); + if (ConfigFiles.size() > 1) { +- Diag(diag::err_drv_duplicate_config); +- return true; ++ if (!std::all_of( ++ ConfigFiles.begin(), ConfigFiles.end(), ++ [ConfigFiles](std::string s) { return s == ConfigFiles[0]; })) { ++ Diag(diag::err_drv_duplicate_config); ++ return true; ++ } + } + + if (!ConfigFiles.empty()) { +diff --git a/clang/test/Driver/config-file.c b/clang/test/Driver/config-file.c +index 04127d4..fde7260 100644 +--- a/clang/test/Driver/config-file.c ++++ b/clang/test/Driver/config-file.c +@@ -71,3 +71,8 @@ + // RUN: %clang --config-system-dir=%S/Inputs/config --config-user-dir=%S/Inputs/config2 --config config-4 -S %s -o /dev/null -v 2>&1 | FileCheck %s -check-prefix CHECK-PRECEDENCE + // CHECK-PRECEDENCE: Configuration file: {{.*}}Inputs{{.}}config2{{.}}config-4.cfg + // CHECK-PRECEDENCE: -Wall ++ ++ ++//--- Duplicate --config options are allowed if the value is the same ++// RUN: %clang --config-system-dir=%S/Inputs/config --config-user-dir=%S/Inputs/config2 --config config-4 --config config-4 -S %s -o /dev/null -v 2>&1 | FileCheck %s -check-prefix CHECK-SAME-CONFIG ++// CHECK-SAME-CONFIG: Configuration file: {{.*}}Inputs{{.}}config2{{.}}config-4.cfg +-- +1.8.3.1 + diff --git a/0001-Make-funwind-tables-the-default-for-all-archs.patch b/0001-Make-funwind-tables-the-default-for-all-archs.patch new file mode 100644 index 0000000..d9e9125 --- /dev/null +++ b/0001-Make-funwind-tables-the-default-for-all-archs.patch @@ -0,0 +1,39 @@ +From 690373af5a5d50cf115ed6e4d2849bb786f9dc8e Mon Sep 17 00:00:00 2001 +From: serge-sans-paille +Date: Tue, 10 Dec 2019 09:18:03 +0000 +Subject: [PATCH] Make -funwind-tables the default for all archs + +--- + clang/lib/Driver/ToolChain.cpp | 2 +- + clang/lib/Driver/ToolChains/Gnu.cpp | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp +index b1fddb0af55..43af40ed0e8 100644 +--- a/clang/lib/Driver/ToolChain.cpp ++++ b/clang/lib/Driver/ToolChain.cpp +@@ -244,7 +244,7 @@ std::string ToolChain::getInputFilename(const InputInfo &Input) const { + } + + bool ToolChain::IsUnwindTablesDefault(const ArgList &Args) const { +- return false; ++ return true; + } + + Tool *ToolChain::getClang() const { +diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp +index 33cdd3585c2..15e82be8f3a 100644 +--- a/clang/lib/Driver/ToolChains/Gnu.cpp ++++ b/clang/lib/Driver/ToolChains/Gnu.cpp +@@ -2535,7 +2535,7 @@ void Generic_GCC::printVerboseInfo(raw_ostream &OS) const { + } + + bool Generic_GCC::IsUnwindTablesDefault(const ArgList &Args) const { +- return getArch() == llvm::Triple::x86_64; ++ return true; + } + + bool Generic_GCC::isPICDefault() const { +-- +2.20.1 + diff --git a/0001-ToolChain-Add-lgcc_s-to-the-linker-flags-when-using-.patch b/0001-ToolChain-Add-lgcc_s-to-the-linker-flags-when-using-.patch new file mode 100644 index 0000000..2d924fa --- /dev/null +++ b/0001-ToolChain-Add-lgcc_s-to-the-linker-flags-when-using-.patch @@ -0,0 +1,50 @@ +From 09ae3ef5710a89505318ec721c65b6c838147276 Mon Sep 17 00:00:00 2001 +From: Tom Stellard +Date: Thu, 7 Feb 2019 21:05:37 -0800 +Subject: [PATCH] ToolChain: Add -lgcc_s to the linker flags when using libc++ + +The libc++ build for Fedora does not include an implementation of +libunwind, so we need to explicitly link against something that +provides this implementation. +--- + clang/lib/Driver/ToolChain.cpp | 1 + + clang/test/Driver/netbsd.cpp | 4 ++-- + 2 files changed, 3 insertions(+), 2 deletions(-) + +diff --git a/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp +index 88a627e..cb99844 100644 +--- a/clnag/lib/Driver/ToolChain.cpp ++++ b/clang/lib/Driver/ToolChain.cpp +@@ -767,6 +767,7 @@ void ToolChain::AddCXXStdlibLibArgs(const ArgList &Args, + switch (Type) { + case ToolChain::CST_Libcxx: + CmdArgs.push_back("-lc++"); ++ CmdArgs.push_back("-lgcc_s"); + break; + + case ToolChain::CST_Libstdcxx: +diff --git a/clang/test/Driver/netbsd.cpp b/clang/test/Driver/netbsd.cpp +index 4af7d83..ff18c62 100644 +--- a/clang/test/Driver/netbsd.cpp ++++ b/clang/test/Driver/netbsd.cpp +@@ -131,7 +131,7 @@ + // ARM-7: clang{{.*}}" "-cc1" "-triple" "armv5e-unknown-netbsd7.0.0-eabi" + // ARM-7: ld{{.*}}" "--eh-frame-hdr" "-dynamic-linker" "/libexec/ld.elf_so" + // ARM-7: "-o" "a.out" "{{.*}}/usr/lib{{/|\\\\}}crt0.o" "{{.*}}/usr/lib{{/|\\\\}}eabi{{/|\\\\}}crti.o" +-// ARM-7: "{{.*}}/usr/lib{{/|\\\\}}crtbegin.o" "{{.*}}.o" "-lc++" "-lm" "-lc" ++// ARM-7: "{{.*}}/usr/lib{{/|\\\\}}crtbegin.o" "{{.*}}.o" "-lc++" "-lgcc_s" "-lm" "-lc" + // ARM-7: "{{.*}}/usr/lib{{/|\\\\}}crtend.o" "{{.*}}/usr/lib{{/|\\\\}}crtn.o" + + // AARCH64: clang{{.*}}" "-cc1" "-triple" "aarch64-unknown-netbsd" +@@ -250,7 +250,7 @@ + // S-ARM-7: clang{{.*}}" "-cc1" "-triple" "armv5e-unknown-netbsd7.0.0-eabi" + // S-ARM-7: ld{{.*}}" "--eh-frame-hdr" "-Bstatic" + // S-ARM-7: "-o" "a.out" "{{.*}}/usr/lib{{/|\\\\}}crt0.o" "{{.*}}/usr/lib{{/|\\\\}}eabi{{/|\\\\}}crti.o" +-// S-ARM-7: "{{.*}}/usr/lib{{/|\\\\}}crtbegin.o" "{{.*}}.o" "-lc++" "-lm" "-lc" ++// S-ARM-7: "{{.*}}/usr/lib{{/|\\\\}}crtbegin.o" "{{.*}}.o" "-lc++" "-lgcc_s" "-lm" "-lc" + // S-ARM-7: "{{.*}}/usr/lib{{/|\\\\}}crtend.o" "{{.*}}/usr/lib{{/|\\\\}}crtn.o" + + // S-AARCH64: clang{{.*}}" "-cc1" "-triple" "aarch64-unknown-netbsd" +-- +1.8.3.1 + diff --git a/0001-clang-Don-t-install-static-libraries.patch b/0001-clang-Don-t-install-static-libraries.patch new file mode 100644 index 0000000..4bf7d35 --- /dev/null +++ b/0001-clang-Don-t-install-static-libraries.patch @@ -0,0 +1,25 @@ +From 856b789b9de0895786ba23681c4337172676e01e 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 cbd618e..9cf076a 100644 +--- a/clang/cmake/modules/AddClang.cmake ++++ b/clang/cmake/modules/AddClang.cmake +@@ -97,7 +97,7 @@ macro(add_clang_library name) + if(TARGET ${name}) + target_link_libraries(${name} 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)) + set(export_to_clangtargets) + if(${name} IN_LIST LLVM_DISTRIBUTION_COMPONENTS OR + "clang-libraries" IN_LIST LLVM_DISTRIBUTION_COMPONENTS OR +-- +1.8.3.1 + diff --git a/0001-clang-fix-undefined-behaviour-in-RawComment-getForma.patch b/0001-clang-fix-undefined-behaviour-in-RawComment-getForma.patch new file mode 100644 index 0000000..ccdb423 --- /dev/null +++ b/0001-clang-fix-undefined-behaviour-in-RawComment-getForma.patch @@ -0,0 +1,47 @@ +From ad7211df6f257e39da2e5a11b2456b4488f32a1e Mon Sep 17 00:00:00 2001 +From: Oliver Bruns +Date: Mon, 6 Apr 2020 10:38:30 +0200 +Subject: [PATCH] [clang] fix undefined behaviour in + RawComment::getFormattedText() + +Summary: +Calling `back()` and `pop_back()` on the empty string is undefined +behavior [1,2]. + +The issue manifested itself as an uncaught `std::out_of_range` exception +when running `clangd` compiled on RHEL7 using devtoolset-9. + +[1] https://en.cppreference.com/w/cpp/string/basic_string/back +[2] https://en.cppreference.com/w/cpp/string/basic_string/pop_back + +Fixes: 1ff7c32fc91c607b690d4bb9cf42f406be8dde68 + +Reviewers: teemperor, ioeric, cfe-commits + +Reviewed By: teemperor + +Subscribers: ilya-biryukov, kadircet, usaxena95 + +Tags: #clang + +Differential Revision: https://reviews.llvm.org/D77468 +--- + clang/lib/AST/RawCommentList.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/clang/lib/AST/RawCommentList.cpp b/clang/lib/AST/RawCommentList.cpp +index 8552b4fcd2b..a8d15036cab 100644 +--- a/clang/lib/AST/RawCommentList.cpp ++++ b/clang/lib/AST/RawCommentList.cpp +@@ -431,7 +431,7 @@ std::string RawComment::getFormattedText(const SourceManager &SourceMgr, + }; + + auto DropTrailingNewLines = [](std::string &Str) { +- while (Str.back() == '\n') ++ while (!Str.empty() && Str.back() == '\n') + Str.pop_back(); + }; + +-- +2.25.2 + diff --git a/0002-gtest-reorg.patch b/0002-gtest-reorg.patch new file mode 100644 index 0000000..f760c15 --- /dev/null +++ b/0002-gtest-reorg.patch @@ -0,0 +1,42 @@ +From 1f26a0284925859b72ee520ce74452d77d822409 Mon Sep 17 00:00:00 2001 +From: serge-sans-paille +Date: Mon, 28 Jan 2019 19:12:27 +0000 +Subject: [PATCH 2/2] [PATCH] gtest reorg + +--- + CMakeLists.txt | 12 +++++------- + 1 file changed, 5 insertions(+), 7 deletions(-) + +diff --git a/clang/CMakeLists.txt b/clang/CMakeLists.txt +index c2016a45ca..48ea3c3bb9 100644 +--- a/clang/CMakeLists.txt ++++ b/clang/CMakeLists.txt +@@ -157,12 +157,6 @@ Please install Python or specify the PYTHON_EXECUTABLE CMake variable.") + 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 +@@ -507,7 +501,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 +-- +2.19.2 + diff --git a/clang10.spec b/clang10.spec new file mode 100644 index 0000000..3067cfa --- /dev/null +++ b/clang10.spec @@ -0,0 +1,897 @@ +%global compat_build 1 + +%global maj_ver 10 +%global min_ver 0 +%global patch_ver 0 +#%%global rc_ver 6 +%global baserelease 11 + +%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-import-test \ + %{_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-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 \ + +%if 0%{?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 %{_includedir}/llvm%{maj_ver} +%global pkg_libdir %{install_libdir} +%else +%global pkg_name clang +%global install_prefix %{_prefix} +%global pkg_libdir %{_libdir} +%endif + +%if 0%{?fedora} || 0%{?rhel} > 7 +%bcond_without python3 +%else +%bcond_with python3 +%endif + +%global build_install_prefix %{buildroot}%{install_prefix} + +%ifarch ppc64le +# Too many threads on ppc64 systems causes OOM errors. +%global _smp_mflags -j8 +%endif + +%global clang_srcdir clang-%{version}%{?rc_ver:rc%{rc_ver}}.src +%global clang_tools_srcdir clang-tools-extra-%{version}%{?rc_ver:rc%{rc_ver}}.src + +Name: %pkg_name +Version: %{maj_ver}.%{min_ver}.%{patch_ver} +Release: %{baserelease}%{?rc_ver:.rc%{rc_ver}}%{?dist} +Summary: A C language family front-end for LLVM + +License: NCSA +URL: http://llvm.org +%if 0%{?rc_ver:1} +Source0: https://prereleases.llvm.org/%{version}/rc%{rc_ver}/%{clang_srcdir}.tar.xz +Source3: https://prereleases.llvm.org/%{version}/rc%{rc_ver}/%{clang_srcdir}.tar.xz.sig +%else +Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/%{clang_srcdir}.tar.xz +Source3: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/%{clang_srcdir}.tar.xz.sig +%endif +%if !0%{?compat_build} +%if 0%{?rc_ver:1} +Source1: https://prereleases.llvm.org/%{version}/rc%{rc_ver}/%{clang_tools_srcdir}.tar.xz +Source2: https://prereleases.llvm.org/%{version}/rc%{rc_ver}/%{clang_tools_srcdir}.tar.xz.sig +%else +Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/%{clang_tools_srcdir}.tar.xz +Source2: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/%{clang_tools_srcdir}.tar.xz.sig +%endif +%endif +Source4: https://prereleases.llvm.org/%{version}/hans-gpg-key.asc + +Patch4: 0002-gtest-reorg.patch +Patch11: 0001-ToolChain-Add-lgcc_s-to-the-linker-flags-when-using-.patch +Patch13: 0001-Make-funwind-tables-the-default-for-all-archs.patch +Patch14: 0001-clang-fix-undefined-behaviour-in-RawComment-getForma.patch + +# Not Upstream +Patch15: 0001-clang-Don-t-install-static-libraries.patch +Patch16: 0001-Driver-Accept-multiple-config-options-if-filenames-a.patch +Patch17: 0001-Add-cet.h-for-writing-CET-enabled-assembly-code.patch + +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: ninja-build +%if 0%{?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 + +# These build dependencies are required for the test suite. +%if %with python3 +# The testsuite uses /usr/bin/lit which is part of the python3-lit package. +BuildRequires: python3-lit +%endif + +BuildRequires: python3-sphinx +BuildRequires: libatomic + +# We need python3-devel for pathfix.py. +BuildRequires: python3-devel + +# Needed for %%multilib_fix_c_header +BuildRequires: multilib-rpm-config + +# For origin certification +BuildRequires: gnupg2 + +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 < %{version} +Conflicts: compiler-rt > %{version} + +%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. + +%package libs +Summary: Runtime library for clang +Recommends: compiler-rt%{?_isa} = %{version} +# 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} + +%description libs +Runtime library for clang. + +%package devel +Summary: Development header files for clang +%if !0%{?compat_build} +Requires: %{name}%{?_isa} = %{version}-%{release} +# The clang CMake files reference tools from clang-tools-extra. +Requires: %{name}-tools-extra%{?_isa} = %{version}-%{release} +Requires: %{name}-libs = %{version}-%{release} +%endif + +%description devel +Development header files for clang. + +%if !0%{?compat_build} +%package analyzer +Summary: A source code analysis framework +License: NCSA and 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. + +# 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}-libs%{?_isa} = %{version}-%{release} +Requires: python3 +%description -n python3-clang +%{summary}. + + +%endif + + +%prep +%{gpgverify} --keyring='%{SOURCE4}' --signature='%{SOURCE3}' --data='%{SOURCE0}' + +%if 0%{?compat_build} +%autosetup -n %{clang_srcdir} -p2 +%else + +%{gpgverify} --keyring='%{SOURCE4}' --signature='%{SOURCE2}' --data='%{SOURCE1}' +%setup -T -q -b 1 -n %{clang_tools_srcdir} + + +pathfix.py -i %{__python3} -pn \ + clang-tidy/tool/*.py \ + clang-include-fixer/find-all-symbols/tool/run-find-all-symbols.py + +%setup -q -n %{clang_srcdir} + +%patch4 -p1 -b .gtest +%patch11 -p1 -b .libcxx-fix +%patch13 -p2 -b .unwind-all +%patch14 -p2 -b .clangd +%patch15 -p2 -b .no-install-static +%patch16 -p2 -b .config-multiple +%patch17 -p2 -b .cet.h + +mv ../%{clang_tools_srcdir} tools/extra + +pathfix.py -i %{__python3} -pn \ + tools/clang-format/*.py \ + tools/clang-format/git-clang-format \ + utils/hmaptool/hmaptool \ + tools/scan-view/bin/scan-view +%endif + +%build + +# We run the builders out of memory on armv7 and i686 when LTO is enabled +%ifarch %{arm} i686 +%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} %ix86 ppc64le +# Decrease debuginfo verbosity to reduce memory consumption during final library linking +%global optflags %(echo %{optflags} | sed 's/-g /-g1 /') +%endif + +# -DCMAKE_INSTALL_RPATH=";" is a workaround for llvm manually setting the +# rpath of libraries and binaries. llvm will skip the manual setting +# if CAMKE_INSTALL_RPATH is set to a value, but cmake interprets this value +# as nothing, so it sets the rpath to "" when installing. +%cmake -G Ninja \ + -DLLVM_PARALLEL_LINK_JOBS=1 \ + -DLLVM_LINK_LLVM_DYLIB:BOOL=ON \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DPYTHON_EXECUTABLE=%{__python3} \ + -DCMAKE_INSTALL_RPATH:BOOL=";" \ +%ifarch s390 s390x %{arm} %ix86 ppc64le + -DCMAKE_C_FLAGS_RELWITHDEBINFO="%{optflags} -DNDEBUG" \ + -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="%{optflags} -DNDEBUG" \ +%endif +%if 0%{?compat_build} + -DLLVM_CONFIG:FILEPATH=%{_bindir}/llvm-config-%{maj_ver}-%{__isa_bits} \ + -DCMAKE_INSTALL_PREFIX=%{install_prefix} \ + -DCLANG_INCLUDE_TESTS:BOOL=OFF \ +%else + -DCLANG_INCLUDE_TESTS:BOOL=ON \ + -DLLVM_EXTERNAL_LIT=%{_bindir}/lit \ + -DLLVM_MAIN_SRC_DIR=%{_datadir}/llvm/src \ +%if 0%{?__isa_bits} == 64 + -DLLVM_LIBDIR_SUFFIX=64 \ +%else + -DLLVM_LIBDIR_SUFFIX= \ +%endif +%endif + \ +%if !0%{compat_build} + -DLLVM_TABLEGEN_EXE:FILEPATH=%{_bindir}/llvm-tblgen \ +%else + -DLLVM_TABLEGEN_EXE:FILEPATH=%{_bindir}/llvm-tblgen-%{maj_ver} \ +%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="%{?fedora:Fedora}%{?rhel:Red Hat} %{version}-%{release}" + +%cmake_build + +%install + +%cmake_install + +%if 0%{?compat_build} + +# Remove binaries/other files +rm -Rf %{buildroot}%{install_bindir} +rm -Rf %{buildroot}%{install_prefix}/share +rm -Rf %{buildroot}%{install_prefix}/libexec + +# Move include files +mkdir -p %{buildroot}%{pkg_includedir} +mv %{buildroot}/%{install_includedir}/clang %{buildroot}/%{pkg_includedir}/ +mv %{buildroot}/%{install_includedir}/clang-c %{buildroot}/%{pkg_includedir}/ + +%else + +# 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 + +# 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}%{_pkgdocdir} +rm -Rvf %{buildroot}%{install_prefix}/share/clang/clang-doc-default-stylesheet.css +rm -Rvf %{buildroot}%{install_prefix}/share/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 + +%check +%if !0%{?compat_build} +# requires lit.py from LLVM utilities +# FIXME: Fix failing ARM tests, s390x i686 and ppc64le tests +# FIXME: Ignore test failures until rhbz#1715016 is fixed. +LD_LIBRARY_PATH=%{buildroot}/%{pkg_libdir} %cmake_build --target check-all || \ +%ifarch s390x i686 ppc64le %{arm} +: +%else +: +%endif + +%endif + + +%if !0%{?compat_build} +%files +%{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 +%endif + +%files libs +%if !0%{?compat_build} +%{_libdir}/clang/ +%{_libdir}/*.so.* +%else +%{pkg_libdir}/*.so.* +%{pkg_libdir}/clang/%{version} +%endif + +%files devel +%if !0%{?compat_build} +%{_libdir}/*.so +%{_includedir}/clang/ +%{_includedir}/clang-c/ +%{_libdir}/cmake/* +%dir %{_datadir}/clang/ +%else +%{pkg_libdir}/*.so +%{pkg_includedir}/clang/ +%{pkg_includedir}/clang-c/ +%{pkg_libdir}/cmake/ +%endif + +%if !0%{?compat_build} +%files analyzer +%{_bindir}/scan-view +%{_bindir}/scan-build +%{_libexecdir}/ccc-analyzer +%{_libexecdir}/c++-analyzer +%{_datadir}/scan-view/ +%{_datadir}/scan-build/ +%{_mandir}/man1/scan-build.1.* + +%files tools-extra +%{clang_tools_binaries} +%{_bindir}/c-index-test +%{_bindir}/find-all-symbols +%{_bindir}/modularize +%{_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* +%{_datadir}/clang/run-clang-tidy.py* +%{_datadir}/clang/run-find-all-symbols.py* +%{_datadir}/clang/clang-rename.py* + +%files -n git-clang-format +%{_bindir}/git-clang-format + +%files -n python3-clang +%{python3_sitelib}/clang/ + + +%endif +%changelog +* 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/hans-gpg-key.asc b/hans-gpg-key.asc new file mode 100644 index 0000000..4b3cdde --- /dev/null +++ b/hans-gpg-key.asc @@ -0,0 +1,52 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +67H2IH//2sf8dw== +=ADVe +-----END PGP PUBLIC KEY BLOCK----- diff --git a/sources b/sources new file mode 100644 index 0000000..2f30f80 --- /dev/null +++ b/sources @@ -0,0 +1,4 @@ +SHA512 (clang-10.0.0.src.tar.xz.sig) = cb46d9c616de9ba6e11602269f93a003fc24951b75844d2d62ad7c435bd9ace0357bf396141b9a3e97034f617ad8f301a1a5556a3feb94b17647f8b76c0b6236 +SHA512 (clang-tools-extra-10.0.0.src.tar.xz.sig) = f0527b315ce9f2c86a19dabd462d0d466ac0843262f06d5f2b69333f77457ec9cb99f8ce9fdaa00048dfaec3de5613fb884c4259acd4a75463ba3c6714e35423 +SHA512 (clang-tools-extra-10.0.0.src.tar.xz) = 33b6019e64e9ac94bd7c000b77a4a927602a2705baa9b370e392a56b53fe09c8dad1ff7d583892729e9eb291440433ad7d71df768a96d927e4dbc1988fc01d99 +SHA512 (clang-10.0.0.src.tar.xz) = b1cccc13c46abcda3d689f51d486fa613ecec40c581c72d8b15951715100a2b8fb24370161601e6716cdba5a784337439e99ec2f0766f988e9cce92de6d775da