diff --git a/.abf.yml b/.abf.yml index f07a305..7c05754 100644 --- a/.abf.yml +++ b/.abf.yml @@ -1,6 +1,2 @@ sources: - clang-11.0.1.src.tar.xz: 10516c6d177dc3d893e640c75d891ee3d6c1edcf - clang-tools-extra-11.0.1.src.tar.xz: f5698eb81569a5dea2496c4934401be653eeb031 - compiler-rt-11.0.1.src.tar.xz: c492a0142887efbe667f6b3994b43a48f53d4832 - llvm-11.0.1.src.tar.xz: 1a911295260d4e41116b72788eb602702b4bb252 - polly-11.0.1.src.tar.xz: 1489870c457e7a6396bf4793b62dd264faf844b7 + llvm12-bc9ab9a5cd6bafc5e1293f3d5d51638f8f5cd26c.tar.gz: 782707b0cf798ac7deb9da87b3a2161f5992646a diff --git a/clang-rosa.patch b/clang-rosa.patch index cd0f941..2e4866e 100644 --- a/clang-rosa.patch +++ b/clang-rosa.patch @@ -1,7 +1,7 @@ -diff -Naur clang-9.0.1.src-orig/include/clang/Driver/Distro.h clang-9.0.1.src/include/clang/Driver/Distro.h ---- clang-9.0.1.src-orig/include/clang/Driver/Distro.h 2019-12-11 22:15:30.000000000 +0300 -+++ clang-9.0.1.src/include/clang/Driver/Distro.h 2020-02-14 19:46:31.781378040 +0300 -@@ -38,8 +38,10 @@ +diff -urN a/clang/include/clang/Driver/Distro.h b/clang/include/clang/Driver/Distro.h +--- a/clang/include/clang/Driver/Distro.h 2021-01-21 14:47:54.887955961 +0300 ++++ b/clang/include/clang/Driver/Distro.h 2021-01-21 14:49:48.564035875 +0300 +@@ -41,8 +41,10 @@ RHEL5, RHEL6, RHEL7, @@ -12,7 +12,7 @@ diff -Naur clang-9.0.1.src-orig/include/clang/Driver/Distro.h clang-9.0.1.src/in OpenSUSE, UbuntuHardy, UbuntuIntrepid, -@@ -109,6 +111,10 @@ +@@ -115,6 +117,10 @@ return DistroVal == Fedora || (DistroVal >= RHEL5 && DistroVal <= RHEL7); } @@ -20,12 +20,12 @@ diff -Naur clang-9.0.1.src-orig/include/clang/Driver/Distro.h clang-9.0.1.src/in + return DistroVal == ROSA; + } + - bool IsOpenSUSE() const { - return DistroVal == OpenSUSE; - } + bool IsOpenSUSE() const { return DistroVal == OpenSUSE; } + + bool IsDebian() const { @@ -129,6 +135,9 @@ - return DistroVal == Gentoo; - } + + bool IsGentoo() const { return DistroVal == Gentoo; } + bool IsMandriva() const { + return DistroVal == OpenMandriva; @@ -33,24 +33,23 @@ diff -Naur clang-9.0.1.src-orig/include/clang/Driver/Distro.h clang-9.0.1.src/in /// @} }; -diff -Naur clang-9.0.1.src-orig/lib/Driver/Distro.cpp clang-9.0.1.src/lib/Driver/Distro.cpp ---- clang-9.0.1.src-orig/lib/Driver/Distro.cpp 2019-12-11 22:15:30.000000000 +0300 -+++ clang-9.0.1.src/lib/Driver/Distro.cpp 2020-02-14 19:50:25.775772017 +0300 -@@ -57,6 +57,10 @@ - return Version; +diff -urN a/clang/lib/Driver/Distro.cpp b/clang/lib/Driver/Distro.cpp +--- a/clang/lib/Driver/Distro.cpp 2021-01-21 14:47:54.974619591 +0300 ++++ b/clang/lib/Driver/Distro.cpp 2021-01-21 14:52:04.312828583 +0300 +@@ -188,6 +188,9 @@ } -+ File = VFS.getBufferForFile("/etc/rosa-release"); -+ if (File) + // ...and others. ++ if (VFS.exists("/etc/rosa-release")) + return Distro::ROSA; + - File = VFS.getBufferForFile("/etc/redhat-release"); - if (File) { - StringRef Data = File.get()->getBuffer(); -diff -Naur clang-9.0.1.src-orig/lib/Driver/ToolChains/Gnu.cpp clang-9.0.1.src/lib/Driver/ToolChains/Gnu.cpp ---- clang-9.0.1.src-orig/lib/Driver/ToolChains/Gnu.cpp 2019-12-11 22:15:30.000000000 +0300 -+++ clang-9.0.1.src/lib/Driver/ToolChains/Gnu.cpp 2020-02-14 19:19:59.341584610 +0300 -@@ -1927,7 +1927,9 @@ + if (VFS.exists("/etc/exherbo-release")) + return Distro::Exherbo; + +diff -urN a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp +--- a/clang/lib/Driver/ToolChains/Gnu.cpp 2021-01-21 14:47:54.984619240 +0300 ++++ b/clang/lib/Driver/ToolChains/Gnu.cpp 2021-01-21 14:49:10.282009317 +0300 +@@ -2075,7 +2075,9 @@ static const char *const AArch64LibDirs[] = {"/lib64", "/lib"}; static const char *const AArch64Triples[] = { "aarch64-none-linux-gnu", "aarch64-linux-gnu", "aarch64-redhat-linux", @@ -61,7 +60,7 @@ diff -Naur clang-9.0.1.src-orig/lib/Driver/ToolChains/Gnu.cpp clang-9.0.1.src/li static const char *const AArch64beLibDirs[] = {"/lib"}; static const char *const AArch64beTriples[] = {"aarch64_be-none-linux-gnu", "aarch64_be-linux-gnu"}; -@@ -1937,6 +1939,8 @@ +@@ -2085,6 +2087,8 @@ "arm-linux-androideabi"}; static const char *const ARMHFTriples[] = {"arm-linux-gnueabihf", "armv7hl-redhat-linux-gnueabi", @@ -70,7 +69,7 @@ diff -Naur clang-9.0.1.src-orig/lib/Driver/ToolChains/Gnu.cpp clang-9.0.1.src/li "armv6hl-suse-linux-gnueabi", "armv7hl-suse-linux-gnueabi"}; static const char *const ARMebLibDirs[] = {"/lib"}; -@@ -1955,7 +1959,8 @@ +@@ -2103,7 +2107,8 @@ "x86_64-redhat-linux", "x86_64-suse-linux", "x86_64-manbo-linux-gnu", "x86_64-linux-gnu", "x86_64-slackware-linux", "x86_64-unknown-linux", @@ -80,7 +79,7 @@ diff -Naur clang-9.0.1.src-orig/lib/Driver/ToolChains/Gnu.cpp clang-9.0.1.src/li static const char *const X32LibDirs[] = {"/libx32"}; static const char *const X86LibDirs[] = {"/lib32", "/lib"}; static const char *const X86Triples[] = { -@@ -1964,7 +1969,9 @@ +@@ -2112,7 +2117,9 @@ "i586-redhat-linux", "i386-redhat-linux", "i586-suse-linux", "i486-slackware-linux", "i686-montavista-linux", "i586-linux-gnu", "i686-linux-android", "i386-gnu", "i486-gnu", @@ -91,10 +90,10 @@ diff -Naur clang-9.0.1.src-orig/lib/Driver/ToolChains/Gnu.cpp clang-9.0.1.src/li static const char *const MIPSLibDirs[] = {"/lib"}; static const char *const MIPSTriples[] = { -diff -Naur clang-9.0.1.src-orig/lib/Driver/ToolChains/Linux.cpp clang-9.0.1.src/lib/Driver/ToolChains/Linux.cpp ---- clang-9.0.1.src-orig/lib/Driver/ToolChains/Linux.cpp 2019-12-11 22:15:30.000000000 +0300 -+++ clang-9.0.1.src/lib/Driver/ToolChains/Linux.cpp 2020-02-14 19:35:44.855908872 +0300 -@@ -248,7 +248,7 @@ +diff -urN a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp +--- a/clang/lib/Driver/ToolChains/Linux.cpp 2021-01-21 14:47:54.984619240 +0300 ++++ b/clang/lib/Driver/ToolChains/Linux.cpp 2021-01-21 14:49:10.285342537 +0300 +@@ -231,7 +231,7 @@ } if (Distro.IsOpenSUSE() || Distro.IsUbuntu() || Distro.IsAlpineLinux() || @@ -103,7 +102,7 @@ diff -Naur clang-9.0.1.src-orig/lib/Driver/ToolChains/Linux.cpp clang-9.0.1.src/ ExtraOpts.push_back("-z"); ExtraOpts.push_back("relro"); } -@@ -289,6 +289,7 @@ +@@ -271,6 +271,7 @@ // Hexagon linker/loader does not support .gnu.hash if (!IsMips && !IsHexagon) { if (Distro.IsRedhat() || Distro.IsOpenSUSE() || Distro.IsAlpineLinux() || @@ -111,7 +110,7 @@ diff -Naur clang-9.0.1.src-orig/lib/Driver/ToolChains/Linux.cpp clang-9.0.1.src/ (Distro.IsUbuntu() && Distro >= Distro::UbuntuMaverick) || (IsAndroid && !Triple.isAndroidVersionLT(23))) ExtraOpts.push_back("--hash-style=gnu"); -@@ -304,7 +305,7 @@ +@@ -286,7 +287,7 @@ ExtraOpts.push_back("--build-id"); #endif diff --git a/llvm11.rpmlintrc b/llvm12.rpmlintrc similarity index 100% rename from llvm11.rpmlintrc rename to llvm12.rpmlintrc diff --git a/llvm11.spec b/llvm12.spec similarity index 62% rename from llvm11.spec rename to llvm12.spec index 0a1a90d..0a3a07d 100644 --- a/llvm11.spec +++ b/llvm12.spec @@ -7,11 +7,11 @@ %define _libdir %{_prefix}/%{_lib} %define _libexecdir %{_prefix}/libexec %define _mandir %{_prefix}/share/man -%define __cmake /usr/bin/cmake %define debugcflags %{nil} %define debug_package %{nil} +%define _disable_ld_no_undefined 1 %global optflags %{optflags} -fno-strict-aliasing %global ldflags %{ldflags} -Wl,-rpath,%{_libdir} @@ -22,21 +22,21 @@ %define compile_apidox 0 %{?_with_apidox: %{expand: %%global compile_apidox 1}} -%define maj_ver 11 +%define maj_ver 12 + +# pre-release +%define commit bc9ab9a5cd6bafc5e1293f3d5d51638f8f5cd26c +%define short_commit %(echo %{commit} | head -c 6) Summary: LLVM and Clang in %{_prefix} # llvm11 Name: llvm%{maj_ver} -Version: %{maj_ver}.0.1 -Release: 3 +Version: %{maj_ver} +Release: 0.git%{short_commit}.1 License: NCSA Group: Development/Other Url: http://llvm.org -Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/llvm-%{version}.src.tar.xz -Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/clang-%{version}.src.tar.xz -Source2: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/clang-tools-extra-%{version}.src.tar.xz -Source3: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/polly-%{version}.src.tar.xz -Source4: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/compiler-rt-%{version}.src.tar.xz +Source0: https://github.com/llvm/llvm-project/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz Source1000: llvm%{maj_ver}.rpmlintrc # Adjust the search paths to match the OS, adjust the default compiler flags # as well. @@ -70,7 +70,7 @@ AutoProv: 0 Requires: %(patchelf --print-soname /usr/%{_lib}/libffi.so || echo foo)%{_arch_tag_suffix} %else # _arch_tag_suffix in needed form does not exist in rpm5, make a more dirty hack -Requires: %mklibname ffi %(patchelf --print-soname /usr/%{_lib}/libffi.so | awk -F '.' '{print $NF}' || echo 0) +Requires: %{_lib}ffi%(patchelf --print-soname /usr/%{_lib}/libffi.so | rev | cut -d. -f1 | rev) %endif @@ -85,82 +85,12 @@ for effective implementation, proper tail calls or garbage collection. This package contains LLVM and Clang in %{_prefix}. %files -%doc LICENSE.TXT -%doc README.txt -%doc docs/tutorial -%doc examples -%if %{compile_apidox} -%doc docs/doxygen -%endif -%{_bindir}/bugpoint -%{_bindir}/c-index-test -%{_bindir}/clang* -%{_bindir}/diagtool -%{_bindir}/dsymutil -%{_bindir}/find-all-symbols -%{_bindir}/git-clang-format -%{_bindir}/hmaptool -%{_bindir}/llc -%{_bindir}/lli -%{_bindir}/llvm* -%{_bindir}/modularize -%{_bindir}/obj2yaml -%{_bindir}/opt -%{_bindir}/pollyc++ -%{_bindir}/pollycc -%{_bindir}/pp-trace -%{_bindir}/sancov -%{_bindir}/sanstats -%{_bindir}/scan-build -%{_bindir}/scan-view -%{_bindir}/verify-uselistorder -%{_bindir}/yaml2obj -%{_datadir}/clang -%{_datadir}/opt-viewer -%{_datadir}/scan-build/ -%{_datadir}/scan-view/ -%{_includedir}/clang -%{_includedir}/clang-c -%{_includedir}/clang-tidy -%{_includedir}/%{oname} -%{_includedir}/%{oname}-c -%{_includedir}/polly -%{_libdir}/BugpointPasses.so -%{_libdir}/clang/ -%{_libdir}/cmake/clang/ClangConfig.cmake -%{_libdir}/cmake/clang/ClangTargets.cmake -%{_libdir}/cmake/clang/ClangTargets-relwithdebinfo.cmake -%{_libdir}/cmake/%{oname}/* -%{_libdir}/cmake/polly/*.cmake -%{_libdir}/libclang*.a -%{_libdir}/libclang*.so -%{_libdir}/libclang*.so.%{maj_ver} -%{_libdir}/libfindAllSymbols.a -%{_libdir}/libLLVM*.a -%{_libdir}/libLLVM-*.so -%{_libdir}/libLLVM.so -%{_libdir}/libLTO.so* -%{_libdir}/libPolly*.a -%{_libdir}/libRemarks.so* -%{_libdir}/LLVMgold.so -%{_libdir}/LLVMHello.so -%{_libdir}/LLVMPolly.so -%{_libexecdir}/c++-analyzer -%{_libexecdir}/ccc-analyzer -%{_mandir}/man1/scan-build.1 +%{_prefix} #---------------------------------------------------------------------------- %prep -%setup -qn %{oname}-%{version}.src -a1 -a2 -a3 -a4 -rm -rf tools/clang -mv clang-%{version}.src tools/clang -mv polly-%{version}.src tools/polly -mv clang-tools-extra-%{version}.src tools/clang/tools/extra -mv compiler-rt-%{version}.src projects/compiler-rt -cd tools/clang -%patch1 -p1 -b .rosa~ -cd - +%autosetup -p1 -n llvm-project-%{commit} %build # Build with gcc/g++, not clang if it happens to be installed @@ -194,19 +124,18 @@ EOF done %endif -%cmake \ - -DCMAKE_BUILD_TYPE=RelWithDebInfo \ +%setup_compile_flags +mkdir -p build +cd build +cmake ../llvm \ + -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} \ + -DCMAKE_BUILD_TYPE=Release \ + -DLLVM_ENABLE_PROJECTS='clang;clang-tools-extra;libcxx;libcxxabi;libunwind;lldb;compiler-rt;lld;polly' \ -DBUILD_SHARED_LIBS:BOOL=OFF \ -DLLVM_LIBDIR_SUFFIX=$(echo %{_lib} | sed -e 's,^lib,,') \ -DCLANG_LIBDIR_SUFFIX=$(echo %{_lib} | sed -e 's,^lib,,') \ - -DWITH_POLLY:BOOL=ON \ - -DLINK_POLLY_INTO_TOOLS:BOOL=ON \ -DLLVM_ENABLE_FFI:BOOL=ON \ -DLLVM_ENABLE_RTTI:BOOL=ON \ - -DLLVM_BINUTILS_INCDIR=%{_includedir} \ - -DLLVM_INCLUDE_UTILS:BOOL=ON \ - -DLLVM_BUILD_LLVM_DYLIB=ON \ - -DLLVM_LINK_LLVM_DYLIB=ON \ -DOCAMLFIND=NOTFOUND \ %if %{compile_apidox} -DLLVM_INCLUDE_DOCS:BOOL=ON \