# # spec file for package # # Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via https://bugs.opensuse.org/ # %define pkgname cross-riscv64-elf-gcc11 %define cross_arch riscv64 %define gcc_target_arch riscv64-elf %define gcc_target_newlib 1 %define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64 URL: https://gcc.gnu.org/ Version: 11.0.0+git176801 Release: 0 %define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1) %define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/') %define binsuffix -11 %if %{suse_version} < 1310 BuildRoot: %{_tmppath}/%{name}-%{version}-build %endif Source: gcc-%{version}.tar.xz Source1: change_spec Source2: gcc11-rpmlintrc Source3: gcc11-testresults-rpmlintrc Source4: README.First-for.SuSE.packagers Source5: newlib-3.3.0.tar.xz Patch2: gcc-add-defaultsspec.diff Patch5: tls-no-direct.diff Patch6: gcc43-no-unwind-tables.diff Patch7: gcc48-libstdc++-api-reference.patch Patch9: gcc48-remove-mpfr-2.4.0-requirement.patch Patch11: gcc7-remove-Wexpansion-to-defined-from-Wextra.patch Patch15: gcc7-avoid-fixinc-error.diff Patch16: gcc9-reproducible-builds.patch Patch17: gcc9-reproducible-builds-buildid-for-checksum.patch # A set of patches from the RH srpm Patch51: gcc41-ppc32-retaddr.patch Patch52: gcc10-foffload-default.patch # Some patches taken from Debian Patch60: gcc44-textdomain.patch Patch61: gcc44-rename-info-files.patch # Define the canonical target and host architecture # %%gcc_target_arch is supposed to be the full target triple # %%cross_arch is supposed to be the rpm target variant arch # %%TARGET_ARCH will be the canonicalized target CPU part # %%HOST_ARCH will be the canonicalized host CPU part %if 0%{?gcc_target_arch:1} %define TARGET_ARCH %(echo %{cross_arch} | sed -e "s/i.86/i586/;s/ppc/powerpc/;s/sparc64.*/sparc64/;s/sparcv.*/sparc/;") %else %define TARGET_ARCH %(echo %{_target_cpu} | sed -e "s/i.86/i586/;s/ppc/powerpc/;s/sparc64.*/sparc64/;s/sparcv.*/sparc/;") %endif %if 0%{?disable_32bit:1} %define biarch 0 %else %define biarch %(case " %{biarch_targets} " in (*" %{TARGET_ARCH} "*) echo 1;; (*) echo 0;; esac) %endif %define HOST_ARCH %(echo %{_host_cpu} | sed -e "s/i.86/i586/;s/ppc/powerpc/;s/sparc64.*/sparc64/;s/sparcv.*/sparc/;") %ifarch ppc %define GCCDIST powerpc64-suse-linux %else %ifarch %sparc %define GCCDIST sparc64-suse-linux %else %ifarch %arm %define GCCDIST %{HOST_ARCH}-suse-linux-gnueabi %else %define GCCDIST %{HOST_ARCH}-suse-linux %endif %endif %endif %define libsubdir %{_libdir}/gcc/%{GCCDIST}/%{gcc_dir_version} %define gxxinclude %{_prefix}/include/c++/%{gcc_dir_version} %prep %if 0%{?nvptx_newlib:1}%{?amdgcn_newlib:1} %setup -q -n gcc-%{version} -a 5 ln -s newlib-3.3.0/newlib . %else %setup -q -n gcc-%{version} %endif #test patching start %patch2 %patch5 %patch6 %patch7 %if %{suse_version} < 1310 %patch9 %endif %patch11 %patch15 %patch16 %patch17 -p1 %patch51 %patch52 -p1 %patch60 -p1 %patch61 #test patching end %build %define _lto_cflags %{nil} # Avoid rebuilding of generated files contrib/gcc_update --touch # SLE11 does not allow empty rpms %if %{suse_version} < 1310 echo "This is a dummy package to provide a dependency." > README %endif rm -rf obj-%{GCCDIST} mkdir obj-%{GCCDIST} cd obj-%{GCCDIST} RPM_OPT_FLAGS="$RPM_OPT_FLAGS -U_FORTIFY_SOURCE" RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-fno-rtti//g' -e 's/-fno-exceptions//g' -e 's/-Wmissing-format-attribute//g' -e 's/-fstack-protector[^ ]*//g' -e 's/-ffortify=.//g' -e 's/-Wall//g' -e 's/-m32//g' -e 's/-m64//g'` %ifarch %ix86 # -mcpu is superceded by -mtune but -mtune is not supported by # our bootstrap compiler. -mcpu gives a warning that stops # the build process, so remove it for now. Also remove all other # -march and -mtune flags. They are superseeded by proper # default compiler settings now. RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-mcpu=i.86//g' -e 's/-march=i.86//g' -e 's/-mtune=i.86//g'` %endif %ifarch s390 s390x RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-fsigned-char//g'` RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-O1/-O2/g'` %endif %if 0%{?gcc_target_arch:1} # Kill all -march/tune/cpu because that screws building the target libs RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-m\(arch\|tune\|cpu\)=[^ ]*//g'` %endif # Replace 2 spaces by one finally RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/ / /g'` languages=c %if %{build_cp} languages=$languages,c++ %endif %if %{build_objc} languages=$languages,objc %endif %if %{build_fortran} languages=$languages,fortran %endif %if %{build_objcp} languages=$languages,obj-c++ %endif %if %{build_ada} languages=$languages,ada %endif %if %{build_go} languages=$languages,go %endif %if %{build_d} languages=$languages,d %endif # In general we want to ship release checking enabled compilers # which is the default for released compilers #ENABLE_CHECKING="--enable-checking=yes" ENABLE_CHECKING="--enable-checking=release" #ENABLE_CHECKING="" # Work around tail/head -1 changes export _POSIX2_VERSION=199209 %if "%{TARGET_ARCH}" == "amdgcn" mkdir -p target-tools/bin ln -s /usr/bin/llvm-ar target-tools/bin/amdgcn-amdhsa-ar ln -s /usr/bin/llvm-mc target-tools/bin/amdgcn-amdhsa-as ln -s /usr/bin/lld target-tools/bin/amdgcn-amdhsa-ld ln -s /usr/bin/llvm-nm target-tools/bin/amdgcn-amdhsa-nm ln -s /usr/bin/llvm-ranlib target-tools/bin/amdgcn-amdhsa-ranlib export PATH="`pwd`/target-tools/bin:$PATH" %endif %if %{build_ada} # Using the host gnatmake like # CC="gcc%%{hostsuffix}" GNATBIND="gnatbind%%{hostsuffix}" # GNATMAKE="gnatmake%%{hostsuffix}" # doesn't work due to PR33857, so an un-suffixed gnatmake has to be # available mkdir -p host-tools/bin cp -a /usr/bin/gnatmake%{hostsuffix} host-tools/bin/gnatmake cp -a /usr/bin/gnatlink%{hostsuffix} host-tools/bin/gnatlink cp -a /usr/bin/gnatbind%{hostsuffix} host-tools/bin/gnatbind cp -a /usr/bin/gcc%{hostsuffix} host-tools/bin/gcc cp -a /usr/bin/g++%{hostsuffix} host-tools/bin/g++ ln -sf /usr/%{_lib} host-tools/%{_lib} export PATH="`pwd`/host-tools/bin:$PATH" %endif CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" XCFLAGS="$RPM_OPT_FLAGS" \ TCFLAGS="$RPM_OPT_FLAGS" \ ../configure \ --prefix=%{_prefix} \ --infodir=%{_infodir} \ --mandir=%{_mandir} \ --libdir=%{_libdir} \ --libexecdir=%{_libdir} \ --enable-languages=$languages \ %if %{build_hsa} || %{build_nvptx} --enable-offload-targets=\ %if %{build_hsa} hsa,\ %endif %if %{build_nvptx} nvptx-none=%{_prefix}/nvptx-none,\ %endif %if %{build_gcn} amdgcn-amdhsa=%{_prefix}/amdgcn-amdhsa,\ %endif %endif %if %{build_nvptx} --without-cuda-driver \ %endif $ENABLE_CHECKING \ --disable-werror \ --with-gxx-include-dir=%{_prefix}/include/c++/%{gcc_dir_version} \ --enable-ssp \ --disable-libssp \ %if 0%{!?build_libvtv:1} --disable-libvtv \ %endif --disable-cet \ --disable-libcc1 \ %if %{enable_plugins} --enable-plugin \ %else --disable-plugin \ %endif --with-bugurl="https://bugs.opensuse.org/" \ --with-pkgversion="SUSE Linux" \ --with-slibdir=/%{_lib} \ --with-system-zlib \ --enable-libstdcxx-allocator=new \ --disable-libstdcxx-pch \ %if 0%{suse_version} <= 1320 --with-default-libstdcxx-abi=gcc4-compatible \ %endif %if %{build_d} --enable-libphobos \ %endif --enable-version-specific-runtime-libs \ --with-gcc-major-version-only \ --enable-linker-build-id \ --enable-linux-futex \ %if %{suse_version} >= 1315 %ifarch %ix86 x86_64 ppc ppc64 ppc64le %arm aarch64 s390 s390x %sparc --enable-gnu-indirect-function \ %endif %endif --program-suffix=%{binsuffix} \ %if 0%{?disable_32bit:1} --disable-multilib \ %endif %if 0%{!?gcc_target_arch:1} %ifarch ia64 --with-system-libunwind \ %else --without-system-libunwind \ %endif %endif %if 0%{?gcc_target_arch:1} --program-prefix=%{gcc_target_arch}- \ --target=%{gcc_target_arch} \ --disable-nls \ %if 0%{?sysroot:1} --with-sysroot=%sysroot \ %endif %if 0%{?build_sysroot:1} --with-build-sysroot=%{build_sysroot} \ %else %if 0%{?sysroot:1} --with-build-sysroot=%{sysroot} \ %endif %endif %if 0%{?binutils_os:1} --with-build-time-tools=/usr/%{binutils_os}/bin \ %endif %if 0%{?gcc_target_newlib} --with-newlib \ %if 0%{?gcc_libc_bootstrap:1} --without-headers \ %endif %endif %if "%{TARGET_ARCH}" == "spu" --with-gxx-include-dir=%sysroot/include/c++/%{gcc_dir_version} \ --with-newlib \ %endif %if "%{TARGET_ARCH}" == "nvptx" --enable-as-accelerator-for=%{GCCDIST} \ --disable-sjlj-exceptions \ --enable-newlib-io-long-long \ %endif %if "%{TARGET_ARCH}" == "amdgcn" --enable-as-accelerator-for=%{GCCDIST} \ --enable-libgomp \ %endif %if "%{TARGET_ARCH}" == "avr" --enable-lto \ --without-gxx-include-dir \ --with-native-system-header-dir=/include \ %endif %endif %if "%{TARGET_ARCH}" == "arm" --with-arch=armv6zk \ --with-tune=arm1176jzf-s \ --with-float=hard \ --with-abi=aapcs-linux \ --with-fpu=vfp \ --disable-sjlj-exceptions \ %endif %if "%{TARGET_ARCH}" == "armv5tel" --with-arch=armv5te \ --with-float=soft \ --with-mode=arm \ --with-abi=aapcs-linux \ --disable-sjlj-exceptions \ %endif %if "%{TARGET_ARCH}" == "armv6hl" --with-arch=armv6zk \ --with-tune=arm1176jzf-s \ --with-float=hard \ --with-abi=aapcs-linux \ --with-fpu=vfp \ --disable-sjlj-exceptions \ %endif %if "%{TARGET_ARCH}" == "armv7hl" --with-arch=armv7-a \ --with-tune=cortex-a15 \ --with-float=hard \ --with-abi=aapcs-linux \ --with-fpu=vfpv3-d16 \ --disable-sjlj-exceptions \ %endif %if "%{TARGET_ARCH}" == "aarch64" --enable-fix-cortex-a53-835769 \ --enable-fix-cortex-a53-843419 \ %endif %if "%{TARGET_ARCH}" == "powerpc" || "%{TARGET_ARCH}" == "powerpc64" || "%{TARGET_ARCH}" == "powerpc64le" %if "%{TARGET_ARCH}" == "powerpc" --with-cpu=default32 \ %endif %if "%{TARGET_ARCH}" == "powerpc64le" %if %{suse_version} >= 1350 --with-cpu=power8 \ --with-tune=power9 \ %else %if %{suse_version} >= 1315 && %{suse_version} != 1320 --with-cpu=power8 \ --with-tune=power8 \ %else --with-cpu=power7 \ --with-tune=power7 \ %endif %endif %else --with-cpu-64=power4 \ %endif --enable-secureplt \ --with-long-double-128 \ %if "%{TARGET_ARCH}" == "powerpc64le" --enable-targets=powerpcle-linux \ --disable-multilib \ %endif %endif %if "%{TARGET_ARCH}" == "sparc64" --with-cpu=ultrasparc \ --with-long-double-128 \ %endif %if "%{TARGET_ARCH}" == "sparc" --with-cpu=v8 \ --with-long-double-128 \ %endif %if "%{TARGET_ARCH}" == "i586" %if 0%{?sle_version:%sle_version} >= 150000 --with-arch-32=x86-64 \ %else --with-arch-32=i586 \ %endif --with-tune=generic \ %endif %if "%{TARGET_ARCH}" == "x86_64" --enable-multilib \ --with-arch-32=x86-64 \ --with-tune=generic \ %endif %if "%{TARGET_ARCH}" == "s390" %if %{suse_version} >= 1310 --with-tune=zEC12 --with-arch=z196 \ %else --with-tune=z9-109 --with-arch=z900 \ %endif --with-long-double-128 \ --enable-decimal-float \ %endif %if "%{TARGET_ARCH}" == "s390x" %if %{suse_version} >= 1310 --with-tune=zEC12 --with-arch=z196 \ %else --with-tune=z9-109 --with-arch=z900 \ %endif --with-long-double-128 \ --enable-decimal-float \ %endif %if "%{TARGET_ARCH}" == "m68k" --disable-multilib \ %endif %if "%{TARGET_ARCH}" == "riscv64" --disable-multilib \ %endif %if %{use_lto_bootstrap} && !0%{?building_testsuite:1} --with-build-config=bootstrap-lto-lean \ --enable-link-mutex \ %endif %ifarch riscv64 --enable-link-mutex \ %endif --build=%{GCCDIST} \ --host=%{GCCDIST} %changelog