summaryrefslogtreecommitdiff
path: root/llvm.spec
diff options
context:
space:
mode:
Diffstat (limited to 'llvm.spec')
-rw-r--r--llvm.spec488
1 files changed, 488 insertions, 0 deletions
diff --git a/llvm.spec b/llvm.spec
new file mode 100644
index 0000000..73dfde2
--- /dev/null
+++ b/llvm.spec
@@ -0,0 +1,488 @@
+%bcond_without sys_llvm
+%bcond_without check
+%bcond_with classic_flang
+
+%global maj_ver 17
+%global min_ver 0
+%global patch_ver 6
+
+%if %{with sys_llvm}
+%global pkg_name llvm
+%global install_prefix %{_prefix}
+%global install_datadir %{_datadir}
+%else
+%global pkg_name llvm%{maj_ver}
+%global install_prefix %{_libdir}/%{name}
+%global install_datadir %{install_prefix}/share
+%endif
+
+%global install_bindir %{install_prefix}/bin
+%global install_includedir %{install_prefix}/include
+%if 0%{?__isa_bits} == 64
+%global install_libdir %{install_prefix}/lib64
+%else
+%global install_libdir %{install_prefix}/lib
+%endif
+%global install_srcdir %{install_prefix}/src
+%global install_docdir %{install_prefix}/share/doc
+
+%global max_link_jobs %{_smp_build_ncpus}
+%global targets_to_build "all"
+%global experimental_targets_to_build ""
+
+%global build_install_prefix %{buildroot}%{install_prefix}
+%global llvm_triple %{_host}
+
+# Disable LTO as this causes crash if gcc lto enabled.
+%define _lto_cflags %{nil}
+
+Name: %{pkg_name}
+Version: %{maj_ver}.%{min_ver}.%{patch_ver}
+Release: 10
+Summary: The Low Level Virtual Machine
+
+License: NCSA
+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}/cmake-%{version}.src.tar.xz
+Source2: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/third-party-%{version}.src.tar.xz
+
+# Patch{1-10} for supporting `relax` feture on LoongArch, which is consistent with !47 in openEuler repos
+Patch1: 0001-Backport-LoongArch-Add-relax-feature-and-keep-relocations.patch
+Patch2: 0002-Backport-LoongArch-Allow-delayed-decision-for-ADD-SUB-relocations.patch
+Patch3: 0003-Backport-LoongArch-Emit-R_LARCH_RELAX-when-expanding-some-LoadAddress.patch
+Patch4: 0004-Backport-MC-LoongArch-Add-AlignFragment-size-if-layout-is-available-and-not-need-insert-nops.patch
+Patch5: 0005-Backport-LoongArch-RISCV-Support-R_LARCH_-ADD-SUB-_ULEB128-R_RISCV_-SET-SUB-_ULEB128-for-uleb128-directives.patch
+Patch6: 0006-Backport-LoongArch-Add-relaxDwarfLineAddr-and-relaxDwarfCFA-to-handle-the-mutable-label-diff-in-dwarfinfo.patch
+Patch7: 0007-Backport-LoongArch-Insert-nops-and-emit-align-reloc-when-handle-alignment-directive.patch
+Patch8: 0008-Backport-test-Update-dwarf-loongarch-relocs.ll.patch
+Patch9: 0009-Backport-MC-test-Change-ELF-uleb-ehtable.s-Mach-O-to-use-private-symbols-in-.uleb128-for-label-differences.patch
+Patch10: 0010-Backport-Mips-MC-AttemptToFoldSymbolOffsetDifference-revert-isMicroMips-special-case.patch
+
+Patch11: 0011-Backport-LoongArch-Add-the-support-for-vector-in-llvm17.patch
+Patch12: 0012-Backport-LoongArch-improve-the-support-for-compiler-rt-and-bugfix.patch
+Patch13: 0013-Backport-Bitcode-Add-some-missing-GetTypeByID-failure-checks.patch
+Patch14: 0014-Backport-X86-Inline-Skip-inline-asm-in-inlining-targ.patch
+Patch15: 0015-Backport-ARM-Check-all-terms-in-emitPopInst-when-clearing-Res.patch
+Patch16: 0016-Backport-ARM-Update-IsRestored-for-LR-based-on-all-returns-82.patch
+Patch17: 0017-Add-the-support-for-classic-flang.patch
+Patch18: 0018-Fix-declaration-definition-mismatch-for-classic-flang.patch
+Patch19: 0019-Backport-LoongArch-Improve-the-support-for-atomic-and-clear_cache.patch
+Patch20: 0020-Update-llvm-lit-config-to-support-build_for_openeule.patch
+
+BuildRequires: binutils-devel
+BuildRequires: cmake
+BuildRequires: gcc
+BuildRequires: gcc-c++
+BuildRequires: libedit-devel
+BuildRequires: libffi-devel
+BuildRequires: multilib-rpm-config
+BuildRequires: ncurses-devel
+BuildRequires: ninja-build
+BuildRequires: python3-devel
+BuildRequires: python3-psutil
+BuildRequires: python3-recommonmark
+BuildRequires: python3-sphinx
+BuildRequires: python3-setuptools
+BuildRequires: zlib-devel
+
+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}
+Requires: libedit-devel
+Requires: %{name}-static%{?_isa} = %{version}-%{release}
+
+%if %{with sys_llvm}
+Requires: %{name}-test%{?_isa} = %{version}-%{release}
+Requires: %{name}-googletest%{?_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
+
+Provides: llvm-static(major) = %{maj_ver}
+
+%description static
+Static libraries for the LLVM compiler infrastructure.
+
+%package cmake-utils
+Summary: CMake shared utilities
+
+%description cmake-utils
+CMake moudules shared between LLVM projects at buid time.
+This is for internal use by LLVM packages only.
+
+%package test
+Summary: LLVM regression tests
+Requires: %{name}%{?_isa} = %{version}-%{release}
+Requires: %{name}-libs%{?_isa} = %{version}-%{release}
+
+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.
+
+%prep
+%setup -T -q -b 1 -n cmake-%{version}.src
+cd ..
+mv cmake-%{version}.src cmake
+%setup -T -q -b 2 -n third-party-%{version}.src
+cd ..
+mv third-party-%{version}.src third-party
+%setup -T -q -b 0 -n llvm-%{version}.src
+%autopatch -p2
+
+pathfix.py -i %{__python3} -pn \
+ test/BugPoint/compile-custom.ll.py \
+ tools/opt-viewer/*.py \
+ utils/update_cc_test_checks.py
+
+%build
+mkdir -p _build
+cd _build
+
+%cmake .. -G Ninja \
+ -DBUILD_SHARED_LIBS:BOOL=OFF \
+ -DLLVM_PARALLEL_LINK_JOBS=%{max_link_jobs} \
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+ -DCMAKE_SKIP_RPATH:BOOL=ON \
+ -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 \
+ -DLLVM_USE_PERF:BOOL=ON \
+ -DLLVM_BINUTILS_INCDIR=%{_includedir} \
+ -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 \
+%if %{with sys_llvm}
+ -DLLVM_INSTALL_GTEST:BOOL=ON \
+%else
+ -DLLVM_INSTALL_GTEST:BOOL=OFF \
+%endif
+ -DLLVM_LIT_ARGS=-v \
+ -DLLVM_INCLUDE_EXAMPLES:BOOL=ON \
+ -DLLVM_BUILD_EXAMPLES:BOOL=OFF \
+ -DLLVM_INCLUDE_UTILS:BOOL=ON \
+ -DLLVM_INSTALL_UTILS:BOOL=ON \
+ -DLLVM_INCLUDE_DOCS:BOOL=ON \
+ -DLLVM_BUILD_DOCS:BOOL=ON \
+ -DLLVM_ENABLE_SPHINX:BOOL=ON \
+ -DLLVM_ENABLE_DOXYGEN:BOOL=OFF \
+ -DLLVM_BUILD_LLVM_DYLIB:BOOL=ON \
+ -DLLVM_LINK_LLVM_DYLIB:BOOL=ON \
+ -DLLVM_BUILD_EXTERNAL_COMPILER_RT:BOOL=ON \
+ -DLLVM_INSTALL_TOOLCHAIN_ONLY:BOOL=OFF \
+ -DLLVM_DEFAULT_TARGET_TRIPLE=%{llvm_triple} \
+ -DSPHINX_WARNINGS_AS_ERRORS=OFF \
+ -DCMAKE_INSTALL_PREFIX=%{install_prefix} \
+ -DLLVM_INSTALL_SPHINX_HTML_DIR=%{install_docdir}/html \
+ -DSPHINX_EXECUTABLE=%{_bindir}/sphinx-build-3 \
+%if 0%{?__isa_bits} == 64
+ -DLLVM_LIBDIR_SUFFIX=64 \
+%else
+ -DLLVM_LIBDIR_SUFFIX= \
+%endif
+%if %{with classic_flang}
+ -DLLVM_ENABLE_CLASSIC_FLANG=ON \
+%endif
+ -DLLVM_INCLUDE_BENCHMARKS=OFF
+%ninja_build LLVM
+%ninja_build
+
+%install
+%ninja_install -C _build
+
+mkdir -p %{buildroot}/%{_bindir}
+
+# Install binaries needed for lit tests
+for f in llvm-isel-fuzzer llvm-opt-fuzzer
+do
+ install -m 0755 %{_builddir}/llvm-%{version}.src/_build/bin/$f %{buildroot}%{install_bindir}
+done
+
+%if 0%{?__isa_bits} == 64
+install %{_builddir}/llvm-%{version}.src/_build/lib64/libLLVMTestingSupport.a %{buildroot}%{install_libdir}
+install %{_builddir}/llvm-%{version}.src/_build/lib64/libLLVMTestingAnnotations.a %{buildroot}%{install_libdir}
+%else
+install %{_builddir}/llvm-%{version}.src/_build/lib/libLLVMTestingSupport.a %{buildroot}%{install_libdir}
+install %{_builddir}/llvm-%{version}.src/_build/lib/libLLVMTestingAnnotations.a %{buildroot}%{install_libdir}
+%endif
+
+# Install gtest sources so clang can use them for gtest
+install -d %{buildroot}%{install_srcdir}
+install -d %{buildroot}%{install_srcdir}/utils/
+cp -R ../third-party/unittest %{buildroot}%{install_srcdir}/utils/
+
+# Clang needs these for running lit tests.
+cp %{_builddir}/llvm-%{version}.src/utils/update_cc_test_checks.py %{buildroot}%{install_srcdir}/utils/
+cp -R %{_builddir}/llvm-%{version}.src/utils/UpdateTestChecks %{buildroot}%{install_srcdir}/utils/
+
+# Move header files
+mkdir -p %{buildroot}/%{install_includedir}
+ln -s ../../../%{install_includedir}/llvm %{buildroot}/%{install_includedir}/llvm
+ln -s ../../../%{install_includedir}/llvm-c %{buildroot}/%{install_includedir}/llvm-c
+
+# Fix multi-lib
+%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
+%{install_libdir}
+EOF
+
+# Remove opt-viewer, since this is just a compatibility package.
+rm -Rf %{build_install_prefix}/share/opt-viewer
+
+mkdir -p %{buildroot}%{install_datadir}/llvm/cmake
+cp -Rv ../cmake/* %{buildroot}%{install_datadir}/llvm/cmake
+
+%check
+%if %{with check}
+LD_LIBRARY_PATH=%{buildroot}/%{install_libdir} %{__ninja} check-all -C ./_build/
+%endif
+
+%ldconfig_scriptlets libs
+
+%files
+%license LICENSE.TXT
+%{install_prefix}/share/man/man1/*
+%{install_bindir}/*
+%exclude %{install_bindir}/not
+%exclude %{install_bindir}/count
+%exclude %{install_bindir}/yaml-bench
+%exclude %{install_bindir}/lli-child-target
+%exclude %{install_bindir}/llvm-isel-fuzzer
+%exclude %{install_bindir}/llvm-opt-fuzzer
+
+%files libs
+%license LICENSE.TXT
+%{install_libdir}/libLLVM-%{maj_ver}.so
+%config(noreplace) %{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf
+%{install_libdir}/LLVMgold.so
+%{install_libdir}/libLLVM-%{maj_ver}.%{min_ver}*.so
+%{install_libdir}/libLTO.so*
+%exclude %{install_libdir}/libLTO.so
+%{install_libdir}/libRemarks.so*
+
+%files devel
+%license LICENSE.TXT
+%{install_includedir}/llvm
+%{install_includedir}/llvm-c
+%{install_libdir}/libLTO.so
+%{install_libdir}/libLLVM.so
+%{install_libdir}/cmake/llvm
+
+%files doc
+%license LICENSE.TXT
+%doc %{install_docdir}/html
+
+%files static
+%license LICENSE.TXT
+%{install_libdir}/*.a
+%exclude %{install_libdir}/libLLVMTestingSupport.a
+%exclude %{install_libdir}/libLLVMTestingAnnotations.a
+
+%files cmake-utils
+%license LICENSE.TXT
+%{install_datadir}/llvm/cmake
+
+%files test
+%license LICENSE.TXT
+%{install_bindir}/not
+%{install_bindir}/count
+%{install_bindir}/yaml-bench
+%{install_bindir}/lli-child-target
+%{install_bindir}/llvm-isel-fuzzer
+%{install_bindir}/llvm-opt-fuzzer
+
+%files googletest
+%license LICENSE.TXT
+%{install_srcdir}/utils
+%{install_libdir}/libLLVMTestingSupport.a
+%{install_libdir}/libLLVMTestingAnnotations.a
+%{install_libdir}/libllvm_gtest.a
+%{install_libdir}/libllvm_gtest_main.a
+%{install_includedir}/llvm-gtest
+%{install_includedir}/llvm-gmock
+
+%changelog
+* Mon Apr 29 2024 wangqiang <wangqiang1@kylinos.cn> - 17.0.6-10
+- Update llvm-lit config to support macro `build_for_openeuler`
+
+* Sun Apr 21 2024 zhanglimin <zhanglimin@loongson.cn> - 17.0.6-9
+- Improve the support for atomic and __clear_cache
+
+* Wed Apr 17 2024 luofeng <luofeng13@huawei.com> - 17.0.6-8
+- Add the support for classic flang
+
+* Fri Apr 12 2024 liyunfei <liyunfei33@huawei.com> - 17.0.6-7
+- Backport patch to fix CVE-2024-31852
+
+* Thu Apr 11 2024 wangqiang <wangqiang1@kylinos.cn> - 17.0.6-6
+- Skip inline asm in inlining target feature check on X86
+
+* Tue Apr 09 2024 liyunfei <liyunfei33@huawei.com> - 17.0.6-5
+- Backport patch to fix CVE-2023-46049
+
+* Wed Apr 03 2024 zhanglimin <zhanglimin@loongson.cn> - 17.0.6-4
+- Improve the support for compiler-rt and fix some bugs on LoongArch
+
+* Fri Mar 29 2024 zhanglimin <zhanglimin@loongson.cn> - 17.0.6-3
+- Add the support for vector on LoongArch
+
+* Sat Mar 16 2024 zhanglimin <zhanglimin@loongson.cn> - 17.0.6-2
+- Supoort `relax` feature on LoongArch
+
+* Thu Nov 30 2023 zhoujing <zhoujing106@huawei.com> - 17.0.6-1
+- Update to 17.0.6
+
+* Thu Jul 13 2023 cf-zhao <zhaochuanfeng@huawei.com> -12.0.1-7
+- Disable check.
+
+* Sat Jul 08 2023 cf-zhao <zhaochuanfeng@huawei.com> -12.0.1-6
+- Make this spec file support both system-version and multi-version.
+
+* Tue Feb 14 2023 cf-zhao <zhaochuanfeng@huawei.com> - 12.0.1-5
+- Disable check temporarily to avoid a build error that `rmbuild` cannot
+- remove a file due to no permission.
+
+* Wed Dec 21 2022 eastb233 <xiezhiheng@huawei.com> - 12.0.1-4
+- Type: Compile Option
+- ID: NA
+- SUG: NA
+- DESC: Add -fPIE and -pie options
+
+* Tue Aug 23 2022 guopeilin <guopeilin1@huawei.com> - 12.0.1-3
+- Type: enhancement
+- ID: NA
+- SUG: NA
+- DESC: Delete the .so file of old version
+
+* Tue Feb 8 2022 zhangweiguo <zhangweiguo2@huawei.com> - 12.0.1-2
+- Type: enhancement
+- ID: NA
+- SUG: NA
+- DESC: Disabe DLLVM_BUILD_TEST
+
+* Mon Dec 13 2021 zoulin <zoulin13@huawei.com> - 12.0.1-1
+- Type: enhancement
+- ID: NA
+- SUG: NA
+- DESC: Update version to 12.0.1
+
+* Wed Sep 8 2021 zhangruifang <zhangruifang1@huawei.com> - 10.0.1-4
+- Type: enhancement
+- ID: NA
+- SUG: NA
+- DESC: Remove rpath
+
+* Wed Oct 14 2020 Hugel <gengqihu1@huawei.com> - 10.0.1-3
+- Type: enhancement
+- ID: NA
+- SUG: NA
+- DESC: Delete the .so file of old version
+
+* Tue Aug 18 2020 Liquor <lirui130@huawei.com> - 10.0.1-2
+- Type: bugfix
+- ID: NA
+- SUG: NA
+- DESC:Use -DLLVM_TARGETS_TO_BUILD=all in configure
+
+* Tue Jul 28 2020 Liquor <lirui130@huawei.com> - 10.0.1-1
+- Type: update
+- ID: NA
+- SUG: NA
+- DESC:update to 10.0.1
+
+* Wed Jul 22 2020 Hugel <gengqihu1@huawei.com> - 7.0.0-10
+- Type: enhancement
+- ID: NA
+- SUG: NA
+- DESC: Ensure that variant part discriminator is read by MetadataLoader
+ Fix Assembler/debug-info.ll
+
+* Wed Mar 18 2020 openEuler Buildteam <buildteam@openeuler.org> - 7.0.0-9
+- Type: enhancement
+- ID: NA
+- SUG: NA
+- DESC: add four patches
+
+* Sat Jan 11 2020 openEuler Buildteam <buildteam@openeuler.org> - 7.0.0-8
+- Type: enhancement
+- ID: NA
+- SUG: NA
+- DESC: remove unnecessary files
+
+* Tue Dec 31 2019 openEuler Buildteam <buildteam@openeuler.org> -7.0.0-7
+- Type: enhancement
+- ID: NA
+- SUG: NA
+- DESC: delete conflict files in llvm
+
+* Fri Nov 1 2019 jiangchuangang <jiangchuangang@huawei.com> -7.0.0-6
+- Type: enhancement
+- ID: NA
+- SUG: NA
+- DESC: add libs package
+
+* Mon Oct 28 2019 jiangchuangang <jiangchuangang@huawei.com> -7.0.0-5
+- Type: enhancement
+- ID: NA
+- SUG: NA
+- DESC: add test files
+
+* Sun Sep 29 2019 luhuaxin <luhuaxin@huawei.com> - 7.0.0-4
+- Type: enhancement
+- ID: NA
+- SUG: NA
+- DESC: add license file
+
+* Fri Sep 20 2019 luhuaxin <luhuaxin@huawei.com> - 7.0.0-3
+- Package init