diff --git a/README.md b/README.md index e314ac91e702cfb8ae44df89f643a7ccdd47d40a..53337a6b037b7f4a5cbab3d15e37b3f7c3d992d9 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,7 @@ -# llvm-15 +# The LLVM Compiler Infrastructure #### 介绍 -The LLVM Compiler Infrastructure - -#### 软件架构 -软件架构说明 - - -#### 安装教程 - -1. xxxx -2. xxxx -3. xxxx - -#### 使用说明 - -1. xxxx -2. xxxx -3. xxxx +The LLVM Core libraries provide a modern source- and target-independent optimizer, along with code generation support for many popular CPUs (as well as some less common ones!) These libraries are built around a well specified code representation known as the LLVM intermediate representation ("LLVM IR"). #### 参与贡献 diff --git a/llvm.spec b/llvm.spec index 86cd2739058fda8d18d8e13f7eab2b6307ef693d..342b1e8fc32b35d72751292c63200a8b680b4a64 100644 --- a/llvm.spec +++ b/llvm.spec @@ -1,21 +1,27 @@ +%bcond_without sys_llvm %bcond_without check %global maj_ver 15 %global min_ver 0 %global patch_ver 7 +%if %{with sys_llvm} +%global pkg_name llvm +%global install_prefix %{_prefix} +%else %global pkg_name llvm%{maj_ver} -%global bin_suffix -%{maj_ver} %global install_prefix %{_libdir}/%{name} +%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 pkg_bindir %{install_bindir} -%global pkg_includedir %{_includedir}/%{name} -%global pkg_libdir %{install_libdir} -%global pkg_srcdir %{install_srcdir} +%global install_docdir %{install_prefix}/share/doc %global max_link_jobs %{_smp_build_ncpus} %global targets_to_build "all" @@ -29,7 +35,7 @@ Name: %{pkg_name} Version: %{maj_ver}.%{min_ver}.%{patch_ver} -Release: 2 +Release: 3 Summary: The Low Level Virtual Machine License: NCSA @@ -136,7 +142,7 @@ cd _build %cmake .. -G Ninja \ -DBUILD_SHARED_LIBS:BOOL=OFF \ -DLLVM_PARALLEL_LINK_JOBS=%{max_link_jobs} \ - -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_SKIP_RPATH:BOOL=ON \ -DLLVM_TARGETS_TO_BUILD=%{targets_to_build} \ -DLLVM_ENABLE_LIBCXX:BOOL=OFF \ @@ -167,8 +173,13 @@ cd _build -DLLVM_DEFAULT_TARGET_TRIPLE=%{llvm_triple} \ -DSPHINX_WARNINGS_AS_ERRORS=OFF \ -DCMAKE_INSTALL_PREFIX=%{install_prefix} \ - -DLLVM_INSTALL_SPHINX_HTML_DIR=%{_pkgdocdir}/html \ + -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 -DLLVM_INCLUDE_BENCHMARKS=OFF %ninja_build LLVM @@ -184,8 +195,12 @@ 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} +%else install %{_builddir}/llvm-%{version}.src/_build/lib/libLLVMTestingSupport.a %{buildroot}%{install_libdir} +%endif # Install gtest sources so clang can use them for gtest install -d %{buildroot}%{install_srcdir} @@ -196,16 +211,10 @@ cp -R %{_builddir}/llvm-%{version}.src/utils/unittest %{buildroot}%{install_srcd 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/ -# Add version suffix to binaries -for f in %{buildroot}/%{install_bindir}/*; do - filename=`basename $f` - ln -s ../../%{install_bindir}/$filename %{buildroot}/%{_bindir}/$filename%{bin_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 +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 @@ -213,114 +222,77 @@ ln -s ../../../%{install_includedir}/llvm-c %{buildroot}/%{pkg_includedir}/llvm- # 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} +%{install_libdir} EOF -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%{bin_suffix}.1 -done - # Remove opt-viewer, since this is just a compatibility package. rm -Rf %{build_install_prefix}/share/opt-viewer -rm %{buildroot}%{_bindir}/llvm-config%{bin_suffix} -(cd %{buildroot}/%{pkg_bindir} ; ln -s llvm-config llvm-config%{bin_suffix}-%{__isa_bits} ) - -touch %{buildroot}%{_bindir}/llvm-config%{bin_suffix} - -cp -Rv ../cmake/Modules/* %{buildroot}%{pkg_libdir}/cmake/llvm +cp -Rv ../cmake/Modules/* %{buildroot}%{install_libdir}/cmake/llvm %check %if %{with check} -LD_LIBRARY_PATH=%{buildroot}/%{pkg_libdir} %{__ninja} check-all -C ./_build/ +LD_LIBRARY_PATH=%{buildroot}/%{install_libdir} %{__ninja} check-all -C ./_build/ %endif %ldconfig_scriptlets libs -%post devel -%{_sbindir}/update-alternatives --install %{_bindir}/llvm-config%{bin_suffix} llvm-config%{bin_suffix} %{pkg_bindir}/llvm-config%{bin_suffix}-%{__isa_bits} %{__isa_bits} - -%postun devel -if [ $1 -eq 0 ]; then - %{_sbindir}/update-alternatives --remove llvm-config%{bin_suffix} %{pkg_bindir}/llvm-config%{bin_suffix}-%{__isa_bits} -fi - %files %license LICENSE.TXT -%exclude %{_mandir}/man1/llvm-config* -%{_mandir}/man1/* -%{_bindir}/* -%exclude %{_bindir}/llvm-config%{bin_suffix} -%exclude %{pkg_bindir}/llvm-config%{bin_suffix}-%{__isa_bits} -%{pkg_bindir} -%exclude %{_bindir}/not%{bin_suffix} -%exclude %{_bindir}/count%{bin_suffix} -%exclude %{_bindir}/yaml-bench%{bin_suffix} -%exclude %{_bindir}/lli-child-target%{bin_suffix} -%exclude %{_bindir}/llvm-isel-fuzzer%{bin_suffix} -%exclude %{_bindir}/llvm-opt-fuzzer%{bin_suffix} -%exclude %{pkg_bindir}/not -%exclude %{pkg_bindir}/count -%exclude %{pkg_bindir}/yaml-bench -%exclude %{pkg_bindir}/lli-child-target -%exclude %{pkg_bindir}/llvm-isel-fuzzer -%exclude %{pkg_bindir}/llvm-opt-fuzzer +%{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 -%{pkg_libdir}/libLLVM-%{maj_ver}.so +%{install_libdir}/libLLVM-%{maj_ver}.so %config(noreplace) %{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf -%{_libdir}/%{name}/lib/LLVMgold.so -%{pkg_libdir}/libLLVM-%{maj_ver}.%{min_ver}*.so -%{pkg_libdir}/libLTO.so* -%exclude %{pkg_libdir}/libLTO.so -%{pkg_libdir}/libRemarks.so* +%{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 -%ghost %{_bindir}/llvm-config%{bin_suffix} -%{pkg_bindir}/llvm-config%{bin_suffix}-%{__isa_bits} -%{_mandir}/man1/llvm-config* %{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 +%{install_libdir}/libLTO.so +%{install_libdir}/libLLVM.so +%{install_libdir}/cmake/llvm %files doc %license LICENSE.TXT -%doc %{_pkgdocdir}/html +%doc %{install_docdir}/html %files static %license LICENSE.TXT -%{_libdir}/%{name}/lib/*.a -%exclude %{_libdir}/%{name}/lib/libLLVMTestingSupport.a +%{install_libdir}/*.a +%exclude %{install_libdir}/libLLVMTestingSupport.a %files test %license LICENSE.TXT -%{_bindir}/not%{bin_suffix} -%{_bindir}/count%{bin_suffix} -%{_bindir}/yaml-bench%{bin_suffix} -%{_bindir}/lli-child-target%{bin_suffix} -%{_bindir}/llvm-isel-fuzzer%{bin_suffix} -%{_bindir}/llvm-opt-fuzzer%{bin_suffix} -%{pkg_bindir}/not -%{pkg_bindir}/count -%{pkg_bindir}/yaml-bench -%{pkg_bindir}/lli-child-target -%{pkg_bindir}/llvm-isel-fuzzer -%{pkg_bindir}/llvm-opt-fuzzer +%{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 -%{pkg_srcdir}/utils -%{_libdir}/%{name}/lib/libLLVMTestingSupport.a +%{install_srcdir}/utils +%{install_libdir}/libLLVMTestingSupport.a %changelog +* May 19 2023 cf-zhao -15.0.7-3 +- Make this spec file support both system-version and multi-version. + * Wed Jun 7 2023 Chenxi Mao - 15.0.7-2 - Disable LTO as this causes crash if gcc lto enabled.