#1 Initial push
Merged 3 years ago by sergesanspaille. Opened 3 years ago by sergesanspaille.
rpms/ sergesanspaille/llvm11 main  into  main

file added
+2
@@ -0,0 +1,2 @@ 

+ /llvm-11.1.0rc2.src.tar.xz

+ /llvm-11.1.0rc2.src.tar.xz.sig

@@ -0,0 +1,166 @@ 

+ From d851495f2fe614c4c860bda1bd3c80bfbe48360b Mon Sep 17 00:00:00 2001

+ From: Jonas Paulsson <paulsson@linux.vnet.ibm.com>

+ Date: Thu, 8 Oct 2020 13:18:29 +0200

+ Subject: [PATCH] [SystemZ] Use LA instead of AGR in eliminateFrameIndex().

+ 

+ Since AGR clobbers CC it should not be used here.

+ 

+ Fixes https://bugs.llvm.org/show_bug.cgi?id=47736.

+ 

+ Review: Ulrich Weigand

+ Differential Revision: https://reviews.llvm.org/D89034

+ ---

+  .../Target/SystemZ/SystemZRegisterInfo.cpp    |  4 +--

+  llvm/test/CodeGen/SystemZ/frame-14.ll         | 26 +++++++++----------

+  llvm/test/CodeGen/SystemZ/frame-16.ll         |  4 +--

+  3 files changed, 17 insertions(+), 17 deletions(-)

+ 

+ diff --git a/llvm/lib/Target/SystemZ/SystemZRegisterInfo.cpp b/llvm/lib/Target/SystemZ/SystemZRegisterInfo.cpp

+ index 53b06c6e7e6d..88212e52460f 100644

+ --- a/llvm/lib/Target/SystemZ/SystemZRegisterInfo.cpp

+ +++ b/llvm/lib/Target/SystemZ/SystemZRegisterInfo.cpp

+ @@ -322,8 +322,8 @@ SystemZRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator MI,

+          // Load the high offset into the scratch register and use it as

+          // an index.

+          TII->loadImmediate(MBB, MI, ScratchReg, HighOffset);

+ -        BuildMI(MBB, MI, DL, TII->get(SystemZ::AGR),ScratchReg)

+ -          .addReg(ScratchReg, RegState::Kill).addReg(BasePtr);

+ +        BuildMI(MBB, MI, DL, TII->get(SystemZ::LA), ScratchReg)

+ +          .addReg(BasePtr, RegState::Kill).addImm(0).addReg(ScratchReg);

+        }

+  

+        // Use the scratch register as the base.  It then dies here.

+ diff --git a/llvm/test/CodeGen/SystemZ/frame-14.ll b/llvm/test/CodeGen/SystemZ/frame-14.ll

+ index e70731249b42..193ff81123c5 100644

+ --- a/llvm/test/CodeGen/SystemZ/frame-14.ll

+ +++ b/llvm/test/CodeGen/SystemZ/frame-14.ll

+ @@ -85,13 +85,13 @@ define void @f3() {

+  define void @f4() {

+  ; CHECK-NOFP-LABEL: f4:

+  ; CHECK-NOFP: llilh %r1, 8

+ -; CHECK-NOFP: agr %r1, %r15

+ +; CHECK-NOFP: la %r1, 0(%r1,%r15)

+  ; CHECK-NOFP: mvi 0(%r1), 42

+  ; CHECK-NOFP: br %r14

+  ;

+  ; CHECK-FP-LABEL: f4:

+  ; CHECK-FP: llilh %r1, 8

+ -; CHECK-FP: agr %r1, %r11

+ +; CHECK-FP: la %r1, 0(%r1,%r11)

+  ; CHECK-FP: mvi 0(%r1), 42

+  ; CHECK-FP: br %r14

+    %region1 = alloca [524104 x i8], align 8

+ @@ -108,13 +108,13 @@ define void @f4() {

+  define void @f5() {

+  ; CHECK-NOFP-LABEL: f5:

+  ; CHECK-NOFP: llilh %r1, 8

+ -; CHECK-NOFP: agr %r1, %r15

+ +; CHECK-NOFP: la %r1, 0(%r1,%r15)

+  ; CHECK-NOFP: mvi 4095(%r1), 42

+  ; CHECK-NOFP: br %r14

+  ;

+  ; CHECK-FP-LABEL: f5:

+  ; CHECK-FP: llilh %r1, 8

+ -; CHECK-FP: agr %r1, %r11

+ +; CHECK-FP: la %r1, 0(%r1,%r11)

+  ; CHECK-FP: mvi 4095(%r1), 42

+  ; CHECK-FP: br %r14

+    %region1 = alloca [524104 x i8], align 8

+ @@ -130,13 +130,13 @@ define void @f5() {

+  define void @f6() {

+  ; CHECK-NOFP-LABEL: f6:

+  ; CHECK-NOFP: llilh %r1, 8

+ -; CHECK-NOFP: agr %r1, %r15

+ +; CHECK-NOFP: la %r1, 0(%r1,%r15)

+  ; CHECK-NOFP: mviy 4096(%r1), 42

+  ; CHECK-NOFP: br %r14

+  ;

+  ; CHECK-FP-LABEL: f6:

+  ; CHECK-FP: llilh %r1, 8

+ -; CHECK-FP: agr %r1, %r11

+ +; CHECK-FP: la %r1, 0(%r1,%r11)

+  ; CHECK-FP: mviy 4096(%r1), 42

+  ; CHECK-FP: br %r14

+    %region1 = alloca [524104 x i8], align 8

+ @@ -155,13 +155,13 @@ define void @f6() {

+  define void @f7() {

+  ; CHECK-NOFP-LABEL: f7:

+  ; CHECK-NOFP: llilh %r1, 23

+ -; CHECK-NOFP: agr %r1, %r15

+ +; CHECK-NOFP: la %r1, 0(%r1,%r15)

+  ; CHECK-NOFP: mviy 65535(%r1), 42

+  ; CHECK-NOFP: br %r14

+  ;

+  ; CHECK-FP-LABEL: f7:

+  ; CHECK-FP: llilh %r1, 23

+ -; CHECK-FP: agr %r1, %r11

+ +; CHECK-FP: la %r1, 0(%r1,%r11)

+  ; CHECK-FP: mviy 65535(%r1), 42

+  ; CHECK-FP: br %r14

+    %region1 = alloca [1048400 x i8], align 8

+ @@ -178,13 +178,13 @@ define void @f7() {

+  define void @f8() {

+  ; CHECK-NOFP-LABEL: f8:

+  ; CHECK-NOFP: llilh %r1, 24

+ -; CHECK-NOFP: agr %r1, %r15

+ +; CHECK-NOFP: la %r1, 0(%r1,%r15)

+  ; CHECK-NOFP: mvi 7(%r1), 42

+  ; CHECK-NOFP: br %r14

+  ;

+  ; CHECK-FP-LABEL: f8:

+  ; CHECK-FP: llilh %r1, 24

+ -; CHECK-FP: agr %r1, %r11

+ +; CHECK-FP: la %r1, 0(%r1,%r11)

+  ; CHECK-FP: mvi 7(%r1), 42

+  ; CHECK-FP: br %r14

+    %region1 = alloca [1048408 x i8], align 8

+ @@ -233,7 +233,7 @@ define void @f10(i32 *%vptr) {

+  ; CHECK-NOFP-LABEL: f10:

+  ; CHECK-NOFP: stg [[REGISTER:%r[1-9][0-4]?]], [[OFFSET:160|168]](%r15)

+  ; CHECK-NOFP: llilh [[REGISTER]], 8

+ -; CHECK-NOFP: agr [[REGISTER]], %r15

+ +; CHECK-NOFP: la [[REGISTER]], 0([[REGISTER]],%r15)

+  ; CHECK-NOFP: mvi 0([[REGISTER]]), 42

+  ; CHECK-NOFP: lg [[REGISTER]], [[OFFSET]](%r15)

+  ; CHECK-NOFP: br %r14

+ @@ -241,7 +241,7 @@ define void @f10(i32 *%vptr) {

+  ; CHECK-FP-LABEL: f10:

+  ; CHECK-FP: stg [[REGISTER:%r[1-9][0-4]?]], [[OFFSET:160|168]](%r11)

+  ; CHECK-FP: llilh [[REGISTER]], 8

+ -; CHECK-FP: agr [[REGISTER]], %r11

+ +; CHECK-FP: la [[REGISTER]], 0([[REGISTER]],%r11)

+  ; CHECK-FP: mvi 0([[REGISTER]]), 42

+  ; CHECK-FP: lg [[REGISTER]], [[OFFSET]](%r11)

+  ; CHECK-FP: br %r14

+ @@ -273,7 +273,7 @@ define void @f11(i32 *%vptr) {

+  ; CHECK-NOFP: stmg %r6, %r15,

+  ; CHECK-NOFP: stg [[REGISTER:%r[1-9][0-4]?]], [[OFFSET:160|168]](%r15)

+  ; CHECK-NOFP: llilh [[REGISTER]], 8

+ -; CHECK-NOFP: agr [[REGISTER]], %r15

+ +; CHECK-NOFP: la [[REGISTER]], 0([[REGISTER]],%r15)

+  ; CHECK-NOFP: mvi 0([[REGISTER]]), 42

+  ; CHECK-NOFP: lg [[REGISTER]], [[OFFSET]](%r15)

+  ; CHECK-NOFP: lmg %r6, %r15,

+ diff --git a/llvm/test/CodeGen/SystemZ/frame-16.ll b/llvm/test/CodeGen/SystemZ/frame-16.ll

+ index ae8a041ae110..a95c58207afb 100644

+ --- a/llvm/test/CodeGen/SystemZ/frame-16.ll

+ +++ b/llvm/test/CodeGen/SystemZ/frame-16.ll

+ @@ -311,13 +311,13 @@ define void @f11(i32 *%vptr, i8 %byte) {

+  define void @f12(i8 %byte, i64 %index) {

+  ; CHECK-NOFP-LABEL: f12:

+  ; CHECK-NOFP: llilh %r1, 8

+ -; CHECK-NOFP: agr %r1, %r15

+ +; CHECK-NOFP: la %r1, 0(%r1,%r15)

+  ; CHECK-NOFP: stc %r2, 0(%r3,%r1)

+  ; CHECK-NOFP: br %r14

+  ;

+  ; CHECK-FP-LABEL: f12:

+  ; CHECK-FP: llilh %r1, 8

+ -; CHECK-FP: agr %r1, %r11

+ +; CHECK-FP: la %r1, 0(%r1,%r11)

+  ; CHECK-FP: stc %r2, 0(%r3,%r1)

+  ; CHECK-FP: br %r14

+    %region1 = alloca [524104 x i8], align 8

+ -- 

+ 2.26.2

+ 

file added
+12
@@ -0,0 +1,12 @@ 

+ diff --git a/utils/benchmark/src/benchmark_register.h b/utils/benchmark/src/benchmark_register.h

+ index 0705e219..4caa5ad4 100644

+ --- a/llvm/utils/benchmark/src/benchmark_register.h

+ +++ b/llvm/utils/benchmark/src/benchmark_register.h

+ @@ -1,6 +1,7 @@

+  #ifndef BENCHMARK_REGISTER_H

+  #define BENCHMARK_REGISTER_H

+  

+ +#include <limits>

+  #include <vector>

+  

+  #include "check.h"

file modified
+2 -2
@@ -1,3 +1,3 @@ 

- # llvm11

+ # llvm11.0

  

- Compatibility package for llvm 11 

\ No newline at end of file

+ llvm 11 compatibility package 

\ No newline at end of file

file added
+17
@@ -0,0 +1,17 @@ 

+ 

+ config.llvm_tools_dir = '/usr/bin'

+ config.llvm_shlib_dir = '%(llvm_shlib_dir)s' % lit_config.params

+ 

+ if hasattr(config, 'host_triple'):

+     # This means we are running lit regression tests

+ 

+     # Regression tests write output to this directory, so we need to be able to specify

+     # a temp directory when invoking lit. e.g. lit -Dllvm_obj_root=/tmp/lit

+     config.llvm_obj_root = "%(llvm_obj_root)s" % lit_config.params

+     lit_config.load_config(config, '%(llvm_test_root)s/lit.cfg.py' % lit_config.params)

+ else:

+     # This means we are running lit unit tests

+ 

+     # For unit tests, llvm_obj_root is used to find the unit test binaries.

+     config.llvm_obj_root = '%(llvm_unittest_bindir)s' % lit_config.params

+     lit_config.load_config(config, '%(llvm_test_root)s/Unit/lit.cfg.py' % lit_config.params)

file added
+552
@@ -0,0 +1,552 @@ 

+ # Components enabled if supported by target architecture:

+ %define gold_arches %{ix86} x86_64 %{arm} aarch64 %{power64} s390x

+ %ifarch %{gold_arches}

+   %bcond_without gold

+ %else

+   %bcond_with gold

+ %endif

+ 

+ %bcond_without compat_build

+ 

+ %global llvm_libdir %{_libdir}/%{name}

+ %global build_llvm_libdir %{buildroot}%{llvm_libdir}

+ %global rc_ver 2

+ %global baserelease 1

+ %global llvm_srcdir llvm-%{version}%{?rc_ver:rc%{rc_ver}}.src

+ %global maj_ver 11

+ %global min_ver 1

+ %global patch_ver 0

+ 

+ %if %{with compat_build}

+ %global pkg_name llvm%{maj_ver}

+ %global exec_suffix -%{maj_ver}

+ %global install_prefix %{_libdir}/%{name}

+ %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}/%{name}

+ %global pkg_libdir %{install_libdir}

+ %else

+ %global pkg_name llvm

+ %global install_prefix /usr

+ %global install_libdir %{_libdir}

+ %global pkg_libdir %{install_libdir}

+ %endif

+ 

+ %if 0%{?rhel}

+ %global targets_to_build "X86;AMDGPU;PowerPC;NVPTX;SystemZ;AArch64;ARM;Mips;BPF"

+ %global experimental_targets_to_build ""

+ %else

+ %global targets_to_build "all"

+ %global experimental_targets_to_build "AVR"

+ %endif

+ 

+ %global build_install_prefix %{buildroot}%{install_prefix}

+ 

+ Name:		%{pkg_name}

+ Version:	%{maj_ver}.%{min_ver}.%{patch_ver}

+ Release:	%{?rc_ver:0.}%{baserelease}%{?rc_ver:.rc%{rc_ver}}%{?dist}

+ Summary:	The Low Level Virtual Machine

+ 

+ License:	NCSA

+ URL:		http://llvm.org

+ Source0:	https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}%{?rc_ver:-rc%{rc_ver}}/%{llvm_srcdir}.tar.xz

+ Source1:	https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}%{?rc_ver:-rc%{rc_ver}}/%{llvm_srcdir}.tar.xz.sig

+ Source2:	tstellar-gpg-key.asc

+ 

+ %if %{without compat_build}

+ Source3:	run-lit-tests

+ Source4:	lit.fedora.cfg.py

+ %endif

+ 

+ # Fix coreos-installer test crash on s390x (rhbz#1883457), https://reviews.llvm.org/D89034

+ Patch1:		0001-SystemZ-Use-LA-instead-of-AGR-in-eliminateFrameIndex.patch

+ Patch2:     0001-gcc11.patch

+ 

+ BuildRequires:	gcc

+ BuildRequires:	gcc-c++

+ BuildRequires:	cmake

+ BuildRequires:	ninja-build

+ BuildRequires:	zlib-devel

+ BuildRequires:	libffi-devel

+ BuildRequires:	ncurses-devel

+ BuildRequires:	python3-sphinx

+ BuildRequires:	python3-recommonmark

+ BuildRequires:	multilib-rpm-config

+ %if %{with gold}

+ BuildRequires:	binutils-devel

+ %endif

+ %ifarch %{valgrind_arches}

+ # Enable extra functionality when run the LLVM JIT under valgrind.

+ BuildRequires:	valgrind-devel

+ %endif

+ # LLVM's LineEditor library will use libedit if it is available.

+ BuildRequires:	libedit-devel

+ # We need python3-devel for pathfix.py.

+ BuildRequires:	python3-devel

+ 

+ # For origin certification

+ BuildRequires:	gnupg2

+ 

+ 

+ Requires:	%{name}-libs%{?_isa} = %{version}-%{release}

+ 

+ Provides:	llvm(major) = %{maj_ver}

+ 

+ %description

+ LLVM is a compiler infrastructure designed for compile-time, link-time,

+ runtime, and idle-time optimization of programs from arbitrary programming

+ languages. The compiler infrastructure includes mirror sets of programming

+ tools as well as libraries with equivalent functionality.

+ 

+ %package devel

+ Summary:	Libraries and header files for LLVM

+ Requires:	%{name}%{?_isa} = %{version}-%{release}

+ Requires:	%{name}-libs%{?_isa} = %{version}-%{release}

+ # The installed LLVM cmake files will add -ledit to the linker flags for any

+ # app that requires the libLLVMLineEditor, so we need to make sure

+ # libedit-devel is available.

+ Requires:	libedit-devel

+ # The installed cmake files reference binaries from llvm-test and llvm-static.

+ # We tried in the past to split the cmake exports for these binaries out into

+ # separate files, so that llvm-devel would not need to Require these packages,

+ # but this caused bugs (rhbz#1773678) and forced us to carry two non-upstream

+ # patches.

+ Requires:	%{name}-static%{?_isa} = %{version}-%{release}

+ %if %{without compat_build}

+ Requires:	%{name}-test%{?_isa} = %{version}-%{release}

+ %endif

+ 

+ 

+ Requires(post):	%{_sbindir}/alternatives

+ Requires(postun):	%{_sbindir}/alternatives

+ 

+ Provides:	llvm-devel(major) = %{maj_ver}

+ 

+ %description devel

+ This package contains library and header files needed to develop new native

+ programs that use the LLVM infrastructure.

+ 

+ %package doc

+ Summary:	Documentation for LLVM

+ BuildArch:	noarch

+ Requires:	%{name} = %{version}-%{release}

+ 

+ %description doc

+ Documentation for the LLVM compiler infrastructure.

+ 

+ %package libs

+ Summary:	LLVM shared libraries

+ 

+ %description libs

+ Shared libraries for the LLVM compiler infrastructure.

+ 

+ %package static

+ Summary:	LLVM static libraries

+ Conflicts:	%{name}-devel < 8

+ 

+ %description static

+ Static libraries for the LLVM compiler infrastructure.

+ 

+ %if %{without compat_build}

+ 

+ %package test

+ Summary:	LLVM regression tests

+ Requires:	%{name}%{?_isa} = %{version}-%{release}

+ Requires:	%{name}-libs%{?_isa} = %{version}-%{release}

+ Requires:	python3-lit

+ # The regression tests need gold.

+ Requires:	binutils

+ # This is for llvm-config

+ Requires:	%{name}-devel%{?_isa} = %{version}-%{release}

+ # Bugpoint tests require gcc

+ Requires:	gcc

+ Requires:	findutils

+ 

+ Provides:	llvm-test(major) = %{maj_ver}

+ 

+ %description test

+ LLVM regression tests.

+ 

+ %package googletest

+ Summary: LLVM's modified googletest sources

+ 

+ %description googletest

+ LLVM's modified googletest sources.

+ 

+ %endif

+ 

+ %prep

+ %{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}'

+ %autosetup -n %{llvm_srcdir} -p2

+ 

+ pathfix.py -i %{__python3} -pn \

+ 	test/BugPoint/compile-custom.ll.py \

+ 	tools/opt-viewer/*.py \

+ 	utils/update_cc_test_checks.py

+ 

+ %build

+ 

+ # Disable LTO on s390x, this causes some test failures:

+ # LLVM-Unit :: Target/AArch64/./AArch64Tests/InstSizes.Authenticated

+ # LLVM-Unit :: Target/AArch64/./AArch64Tests/InstSizes.PATCHPOINT

+ # LLVM-Unit :: Target/AArch64/./AArch64Tests/InstSizes.STACKMAP

+ # LLVM-Unit :: Target/AArch64/./AArch64Tests/InstSizes.TLSDESC_CALLSEQ

+ # On X86_64, LTO builds of TableGen crash.  This can be reproduced by:

+ # %%cmake_build --target include/llvm/IR/IntrinsicsAArch64.h

+ # Because of these failures, lto is disabled for now.

+ %global _lto_cflags %{nil}

+ 

+ %ifarch s390 %{arm} %ix86

+ # Decrease debuginfo verbosity to reduce memory consumption during final library linking

+ %global optflags %(echo %{optflags} | sed 's/-g /-g1 /')

+ %endif

+ 

+ # force off shared libs as cmake macros turns it on.

+ %cmake  -G Ninja \

+ 	-DBUILD_SHARED_LIBS:BOOL=OFF \

+ 	-DLLVM_PARALLEL_LINK_JOBS=1 \

+ 	-DCMAKE_BUILD_TYPE=RelWithDebInfo \

+ 	-DCMAKE_SKIP_RPATH:BOOL=ON \

+ %ifarch s390 %{arm} %ix86

+ 	-DCMAKE_C_FLAGS_RELWITHDEBINFO="%{optflags} -DNDEBUG" \

+ 	-DCMAKE_CXX_FLAGS_RELWITHDEBINFO="%{optflags} -DNDEBUG" \

+ %endif

+ %if %{without compat_build}

+ %if 0%{?__isa_bits} == 64

+ 	-DLLVM_LIBDIR_SUFFIX=64 \

+ %else

+ 	-DLLVM_LIBDIR_SUFFIX= \

+ %endif

+ %endif

+ 	\

+ 	-DLLVM_TARGETS_TO_BUILD=%{targets_to_build} \

+ 	-DLLVM_ENABLE_LIBCXX:BOOL=OFF \

+ 	-DLLVM_ENABLE_ZLIB:BOOL=ON \

+ 	-DLLVM_ENABLE_FFI:BOOL=ON \

+ 	-DLLVM_ENABLE_RTTI:BOOL=ON \

+ %if %{with gold}

+ 	-DLLVM_BINUTILS_INCDIR=%{_includedir} \

+ %endif

+ 	-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=%{experimental_targets_to_build} \

+ 	\

+ 	-DLLVM_BUILD_RUNTIME:BOOL=ON \

+ 	\

+ 	-DLLVM_INCLUDE_TOOLS:BOOL=ON \

+ 	-DLLVM_BUILD_TOOLS:BOOL=ON \

+ 	\

+ 	-DLLVM_INCLUDE_TESTS:BOOL=ON \

+ 	-DLLVM_BUILD_TESTS:BOOL=ON \

+ 	\

+ 	-DLLVM_INCLUDE_EXAMPLES:BOOL=ON \

+ 	-DLLVM_BUILD_EXAMPLES:BOOL=OFF \

+ 	\

+ 	-DLLVM_INCLUDE_UTILS:BOOL=ON \

+ %if %{with compat_build}

+ 	-DLLVM_INSTALL_UTILS:BOOL=OFF \

+ %else

+ 	-DLLVM_INSTALL_UTILS:BOOL=ON \

+ 	-DLLVM_UTILS_INSTALL_DIR:PATH=%{_bindir} \

+ 	-DLLVM_TOOLS_INSTALL_DIR:PATH=bin \

+ %endif

+ 	\

+ 	-DLLVM_INCLUDE_DOCS:BOOL=ON \

+ 	-DLLVM_BUILD_DOCS:BOOL=ON \

+ 	-DLLVM_ENABLE_SPHINX:BOOL=ON \

+ 	-DLLVM_ENABLE_DOXYGEN:BOOL=OFF \

+ 	\

+ %if %{without compat_build}

+ 	-DLLVM_VERSION_SUFFIX='' \

+ %endif

+ 	-DLLVM_BUILD_LLVM_DYLIB:BOOL=ON \

+ 	-DLLVM_DYLIB_EXPORT_ALL:BOOL=ON \

+ 	-DLLVM_LINK_LLVM_DYLIB:BOOL=ON \

+ 	-DLLVM_BUILD_EXTERNAL_COMPILER_RT:BOOL=ON \

+ 	-DLLVM_INSTALL_TOOLCHAIN_ONLY:BOOL=OFF \

+ 	\

+ 	-DSPHINX_WARNINGS_AS_ERRORS=OFF \

+ 	-DCMAKE_INSTALL_PREFIX=%{install_prefix} \

+ 	-DLLVM_INSTALL_SPHINX_HTML_DIR=%{_pkgdocdir}/html \

+ 	-DSPHINX_EXECUTABLE=%{_bindir}/sphinx-build-3

+ 

+ # Build libLLVM.so first.  This ensures that when libLLVM.so is linking, there

+ # are no other compile jobs running.  This will help reduce OOM errors on the

+ # builders without having to artificially limit the number of concurrent jobs.

+ %cmake_build --target LLVM

+ %cmake_build

+ 

+ %install

+ %cmake_install

+ 

+ 

+ %if %{without compat_build}

+ mkdir -p %{buildroot}/%{_bindir}

+ mv %{buildroot}/%{_bindir}/llvm-config %{buildroot}/%{_bindir}/llvm-config-%{__isa_bits}

+ 

+ # ghost presence

+ touch %{buildroot}%{_bindir}/llvm-config

+ 

+ # Fix some man pages

+ ln -s llvm-config.1 %{buildroot}%{_mandir}/man1/llvm-config-%{__isa_bits}.1

+ mv %{buildroot}%{_mandir}/man1/tblgen.1 %{buildroot}%{_mandir}/man1/llvm-tblgen.1

+ 

+ # Install binaries needed for lit tests

+ %global test_binaries llvm-isel-fuzzer llvm-opt-fuzzer

+ 

+ for f in %{test_binaries}

+ do

+     install -m 0755 %{_vpath_builddir}/bin/$f %{buildroot}%{_bindir}

+ done

+ 

+ # Remove testing of update utility tools

+ rm -rf test/tools/UpdateTestChecks

+ 

+ %multilib_fix_c_header --file %{_includedir}/llvm/Config/llvm-config.h

+ 

+ # Install libraries needed for unittests

+ %if 0%{?__isa_bits} == 64

+ %global build_libdir %{_vpath_builddir}/lib64

+ %else

+ %global build_libdir %{_vpath_builddir}/lib

+ %endif

+ 

+ install %{build_libdir}/libLLVMTestingSupport.a %{buildroot}%{_libdir}

+ 

+ %global install_srcdir %{buildroot}%{_datadir}/llvm/src

+ %global lit_cfg test/%{_arch}.site.cfg.py

+ %global lit_unit_cfg test/Unit/%{_arch}.site.cfg.py

+ %global lit_fedora_cfg %{_datadir}/llvm/lit.fedora.cfg.py

+ 

+ # Install gtest sources so clang can use them for gtest

+ install -d %{install_srcdir}

+ install -d %{install_srcdir}/utils/

+ cp -R utils/unittest %{install_srcdir}/utils/

+ 

+ # Clang needs these for running lit tests.

+ cp utils/update_cc_test_checks.py %{install_srcdir}/utils/

+ cp -R utils/UpdateTestChecks %{install_srcdir}/utils/

+ 

+ # One of the lit tests references this file

+ install -d %{install_srcdir}/docs/CommandGuide/

+ install -m 0644 docs/CommandGuide/dsymutil.rst %{install_srcdir}/docs/CommandGuide/

+ 

+ # Generate lit config files.  Strip off the last lines that initiates the

+ # test run, so we can customize the configuration.

+ head -n -2 %{_vpath_builddir}/test/lit.site.cfg.py >> %{lit_cfg}

+ head -n -2 %{_vpath_builddir}/test/Unit/lit.site.cfg.py >> %{lit_unit_cfg}

+ 

+ # Install custom fedora config file

+ cp %{SOURCE4} %{buildroot}%{lit_fedora_cfg}

+ 

+ # Patch lit config files to load custom fedora config:

+ for f in %{lit_cfg} %{lit_unit_cfg}; do

+   echo "lit_config.load_config(config, '%{lit_fedora_cfg}')" >> $f

+ done

+ 

+ install -d %{buildroot}%{_libexecdir}/tests/llvm

+ install -m 0755 %{SOURCE3} %{buildroot}%{_libexecdir}/tests/llvm

+ 

+ # Install lit tests.  We need to put these in a tarball otherwise rpm will complain

+ # about some of the test inputs having the wrong object file format.

+ install -d %{buildroot}%{_datadir}/llvm/

+ 

+ # The various tar options are there to make sur the archive is the same on 32 and 64 bit arch, i.e.

+ # the archive creation is reproducible. Move arch-specific content out of the tarball

+ mv %{lit_cfg} %{install_srcdir}/%{_arch}.site.cfg.py

+ mv %{lit_unit_cfg} %{install_srcdir}/%{_arch}.Unit.site.cfg.py

+ tar --sort=name --mtime='UTC 2020-01-01' -c test/ | gzip -n > %{install_srcdir}/test.tar.gz

+ 

+ # Install the unit test binaries

+ mkdir -p %{build_llvm_libdir}

+ cp -R %{_vpath_builddir}/unittests %{build_llvm_libdir}/

+ rm -rf `find %{build_llvm_libdir} -iname 'cmake*'`

+ 

+ # Install libraries used for testing

+ install -m 0755 %{build_libdir}/BugpointPasses.so %{buildroot}%{_libdir}

+ install -m 0755 %{build_libdir}/LLVMHello.so %{buildroot}%{_libdir}

+ 

+ # Install test inputs for PDB tests

+ echo "%{_datadir}/llvm/src/unittests/DebugInfo/PDB" > %{build_llvm_libdir}/unittests/DebugInfo/PDB/llvm.srcdir.txt

+ mkdir -p %{buildroot}%{_datadir}/llvm/src/unittests/DebugInfo/PDB/

+ cp -R unittests/DebugInfo/PDB/Inputs %{buildroot}%{_datadir}/llvm/src/unittests/DebugInfo/PDB/

+ 

+ %if %{with gold}

+ # Add symlink to lto plugin in the binutils plugin directory.

+ %{__mkdir_p} %{buildroot}%{_libdir}/bfd-plugins/

+ ln -s %{_libdir}/LLVMgold.so %{buildroot}%{_libdir}/bfd-plugins/

+ %endif

+ 

+ %else

+ 

+ # Add version suffix to binaries

+ mkdir -p %{buildroot}/%{_bindir}

+ for f in %{buildroot}/%{install_bindir}/*; do

+   filename=`basename $f`

+   ln -s ../../../%{install_bindir}/$filename %{buildroot}/%{_bindir}/$filename%{exec_suffix}

+ done

+ 

+ # Move header files

+ mkdir -p %{buildroot}/%{pkg_includedir}

+ ln -s ../../../%{install_includedir}/llvm %{buildroot}/%{pkg_includedir}/llvm

+ ln -s ../../../%{install_includedir}/llvm-c %{buildroot}/%{pkg_includedir}/llvm-c

+ 

+ # Fix multi-lib

+ mv %{buildroot}%{_bindir}/llvm-config{%{exec_suffix},%{exec_suffix}-%{__isa_bits}}

+ %multilib_fix_c_header --file %{install_includedir}/llvm/Config/llvm-config.h

+ 

+ # Create ld.so.conf.d entry

+ mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d

+ cat >> %{buildroot}%{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf << EOF

+ %{pkg_libdir}

+ EOF

+ 

+ # Add version suffix to man pages and move them to mandir.

+ mkdir -p %{buildroot}/%{_mandir}/man1

+ for f in %{build_install_prefix}/share/man/man1/*; do

+   filename=`basename $f | cut -f 1 -d '.'`

+   mv $f %{buildroot}%{_mandir}/man1/$filename%{exec_suffix}.1

+ done

+ 

+ # Remove opt-viewer, since this is just a compatibility package.

+ rm -Rf %{build_install_prefix}/share/opt-viewer

+ 

+ %endif

+ 

+ 

+ %check

+ # TODO: Fix the failures below

+ %ifarch %{arm}

+ rm test/tools/llvm-readobj/ELF/dependent-libraries.test

+ %endif

+ 

+ # non reproducible errors

+ rm test/tools/dsymutil/X86/swift-interface.test

+ 

+ # FIXME: use %%cmake_build instead of %%__ninja

+ LD_LIBRARY_PATH=%{buildroot}/%{_libdir}  %{__ninja} check-all -C %{_vpath_builddir}

+ 

+ %ldconfig_scriptlets libs

+ 

+ %if %{without compat_build}

+ 

+ %post devel

+ %{_sbindir}/update-alternatives --install %{_bindir}/llvm-config llvm-config %{_bindir}/llvm-config-%{__isa_bits} %{__isa_bits}

+ 

+ %postun devel

+ if [ $1 -eq 0 ]; then

+   %{_sbindir}/update-alternatives --remove llvm-config %{_bindir}/llvm-config-%{__isa_bits}

+ fi

+ 

+ %endif

+ 

+ %files

+ %license LICENSE.TXT

+ %exclude %{_mandir}/man1/llvm-config*

+ %{_mandir}/man1/*

+ %{_bindir}/*

+ 

+ %if %{without compat_build}

+ %exclude %{_bindir}/llvm-config

+ %exclude %{_bindir}/llvm-config-%{__isa_bits}

+ %exclude %{_bindir}/not

+ %exclude %{_bindir}/count

+ %exclude %{_bindir}/yaml-bench

+ %exclude %{_bindir}/lli-child-target

+ %exclude %{_bindir}/llvm-isel-fuzzer

+ %exclude %{_bindir}/llvm-opt-fuzzer

+ %{_datadir}/opt-viewer

+ %else

+ %exclude %{pkg_bindir}/llvm-config

+ %{pkg_bindir}

+ %endif

+ 

+ %files libs

+ %license LICENSE.TXT

+ %{pkg_libdir}/libLLVM-%{maj_ver}.so

+ %if %{without compat_build}

+ %if %{with gold}

+ %{_libdir}/LLVMgold.so

+ %{_libdir}/bfd-plugins/LLVMgold.so

+ %endif

+ %{_libdir}/libLLVM-%{maj_ver}.%{min_ver}*.so

+ %{_libdir}/libLTO.so*

+ %else

+ %config(noreplace) %{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf

+ %if %{with gold}

+ %{_libdir}/%{name}/lib/LLVMgold.so

+ %endif

+ %{pkg_libdir}/libLLVM-%{maj_ver}.%{min_ver}*.so

+ %{pkg_libdir}/libLTO.so*

+ %exclude %{pkg_libdir}/libLTO.so

+ %endif

+ %{pkg_libdir}/libRemarks.so*

+ 

+ %files devel

+ %license LICENSE.TXT

+ %if %{without compat_build}

+ %ghost %{_bindir}/llvm-config

+ %{_bindir}/llvm-config-%{__isa_bits}

+ %{_mandir}/man1/llvm-config*

+ %{_includedir}/llvm

+ %{_includedir}/llvm-c

+ %{_libdir}/libLLVM.so

+ %{_libdir}/cmake/llvm

+ %else

+ %{_bindir}/llvm-config%{exec_suffix}-%{__isa_bits}

+ %{pkg_bindir}/llvm-config

+ %{_mandir}/man1/llvm-config%{exec_suffix}.1.gz

+ %{install_includedir}/llvm

+ %{install_includedir}/llvm-c

+ %{pkg_includedir}/llvm

+ %{pkg_includedir}/llvm-c

+ %{pkg_libdir}/libLTO.so

+ %{pkg_libdir}/libLLVM.so

+ %{pkg_libdir}/cmake/llvm

+ %endif

+ 

+ %files doc

+ %license LICENSE.TXT

+ %doc %{_pkgdocdir}/html

+ 

+ %files static

+ %license LICENSE.TXT

+ %if %{without compat_build}

+ %{_libdir}/*.a

+ %exclude %{_libdir}/libLLVMTestingSupport.a

+ %else

+ %{_libdir}/%{name}/lib/*.a

+ %endif

+ 

+ %if %{without compat_build}

+ 

+ %files test

+ %license LICENSE.TXT

+ %{_libexecdir}/tests/llvm/

+ %{llvm_libdir}/unittests/

+ %{_datadir}/llvm/src/unittests

+ %{_datadir}/llvm/src/test.tar.gz

+ %{_datadir}/llvm/src/%{_arch}.site.cfg.py

+ %{_datadir}/llvm/src/%{_arch}.Unit.site.cfg.py

+ %{_datadir}/llvm/lit.fedora.cfg.py

+ %{_datadir}/llvm/src/docs/CommandGuide/dsymutil.rst

+ %{_bindir}/not

+ %{_bindir}/count

+ %{_bindir}/yaml-bench

+ %{_bindir}/lli-child-target

+ %{_bindir}/llvm-isel-fuzzer

+ %{_bindir}/llvm-opt-fuzzer

+ %{_libdir}/BugpointPasses.so

+ %{_libdir}/LLVMHello.so

+ 

+ %files googletest

+ %license LICENSE.TXT

+ %{_datadir}/llvm/src/utils

+ %{_libdir}/libLLVMTestingSupport.a

+ 

+ %endif

+ 

+ %changelog

+ * Wed Feb 03 2021 Serge Guelton - 11.1.0-0.1.rc2

+ - 11.1.0-rc2 release

file added
+59
@@ -0,0 +1,59 @@ 

+ #!/bin/bash

+ 

+ usage() {

+     echo "usage: `basename $0` [OPTIONS]"

+     echo "  --threads NUM         The number of threads to use for running tests."

+     echo "  --multilib-arch ARCH  Use this option to test 32-bit libs/binaries on"

+     echo "                        64-bit hosts."

+ }

+ 

+ threads_arg=''

+ 

+ while [ $# -gt 0 ]; do

+     case $1 in

+         --threads)

+             shift

+             threads_arg="--threads $1"

+             ;;

+ 	--multilib-arch)

+             shift

+ 	    ARCH=$1

+ 	    ;;

+         * )

+             echo "unknown option: $1"

+             echo ""

+             usage

+             exit 1

+             ;;

+     esac

+     shift

+ done

+ 

+ set -xe

+ 

+ if [ -z "$ARCH" ]; then

+     ARCH=`rpm --eval '%_arch'`

+ fi

+ 

+ case $ARCH in

+     arm)

+ 	;&

+     i686)

+         LIB_DIR="/usr/lib/"

+         ;;

+     *)

+         LIB_DIR="/usr/lib64/"

+         ;;

+ esac

+ 

+ cd $(mktemp -d)

+ ln -s /usr/include include

+ ln -s /usr/share/llvm/src/docs docs

+ tar -xzf /usr/share/llvm/src/test.tar.gz

+ ln -s /usr/share/llvm/src/$ARCH.site.cfg.py test/lit.site.cfg.py

+ ln -s /usr/share/llvm/src/$ARCH.Unit.site.cfg.py test/Unit/lit.site.cfg.py

+ lit -v -s $threads_arg test \

+ 	-Dllvm_obj_root=`pwd` \

+ 	-Dllvm_test_root=`pwd`/test \

+ 	-Dllvm_unittest_bindir=$LIB_DIR/llvm \

+ 	-Dllvm_shlib_dir=$LIB_DIR

file added
+2
@@ -0,0 +1,2 @@ 

+ SHA512 (llvm-11.1.0rc2.src.tar.xz) = 4293bedabfacc3de5384b5567eb69d4ae19095540c31cf1f46b8e841db36b28215353aace2e55ccc15a069a63ba2954b2c969ad6337bebaa8877248a2dca024b

+ SHA512 (llvm-11.1.0rc2.src.tar.xz.sig) = a6465924e10cf8778c23c7d25c83ac3240611fc1045b55651a2f33aa1636357e86cc4df020a5603c3ae07a0185f769df9d348e8b8321e0db7eada81497327dd1

empty or binary file added
no initial comment

This requires is missing the major version number, it should be %{name}-static...

This requires needs to be disabled for compat packages.

rebased onto a23f89f

3 years ago

rebased onto 9031c50

3 years ago

rebased onto b1ab7d1

3 years ago

Pull-Request has been merged by sergesanspaille

3 years ago