From 18b060a99c856d34bac34aafac08a4db0df61ff5 Mon Sep 17 00:00:00 2001 From: eastb233 Date: Mon, 17 Aug 2020 09:28:00 +0800 Subject: [PATCH 1/2] Add riscv64 support --- gcc.spec | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/gcc.spec b/gcc.spec index a0e5fc2..a130346 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,4 +1,4 @@ -%global DATE 20200828 +%global DATE 20200901 %global gcc_version 9.3.1 %global gcc_major 9.3.1 @@ -13,7 +13,7 @@ %global build_go 0 %global build_d 0 %global build_check 0 -%ifarch %{ix86} x86_64 ia64 ppc64le +%ifarch %{ix86} x86_64 ia64 ppc64le aarch64 %global build_libquadmath 1 %else %global build_libquadmath 0 @@ -38,7 +38,7 @@ %else %global build_libubsan 0 %endif -%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 %{mips} +%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 %{mips} riscv64 %global build_libatomic 1 %else %global build_libatomic 0 @@ -56,10 +56,14 @@ %global attr_ifunc 0 %endif +%ifarch riscv64 +%global _lib lib +%endif + Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{DATE}.3 +Release: %{DATE}.4 License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD Source0: gcc-9.3.0.tar.xz %global isl_version 0.16.1 @@ -705,7 +709,7 @@ OPT_FLAGS=`echo "$OPT_FLAGS" | sed -e 's/[[:blank:]]\+/ /g'` case "$OPT_FLAGS" in *-fasynchronous-unwind-tables*) sed -i -e 's/-fno-exceptions /-fno-exceptions -fno-asynchronous-unwind-tables /' \ - gcc/Makefile.in + libgcc/Makefile.in ;; esac @@ -735,7 +739,7 @@ export extra_ldflags_libobjc="-Wl,-z,relro,-z,now" export FCFLAGS="$OPT_FLAGS" CC="$CC" CFLAGS="$OPT_FLAGS" \ CXXFLAGS="`echo " $OPT_FLAGS " | sed 's/ -Wall / /g;s/ -fexceptions / /g' \ - | sed 's/ -Werror=format-security //'`" \ + | sed 's/ -Werror=format-security / /'`" \ LDFLAGS="$OPT_LDFLAGS" \ CFLAGS_FOR_TARGET="$OPT_FLAGS" \ CXXFLAGS_FOR_TARGET="$OPT_FLAGS" \ @@ -757,6 +761,12 @@ CC="$CC" CFLAGS="$OPT_FLAGS" \ %ifarch aarch64 --with-multilib-list=lp64 %endif +%ifarch riscv64 + --with-arch=rv64g \ + --with-abi=lp64d \ + --disable-multilib \ + --disable-libquadmath +%endif %ifarch sparc sparcv9 sparc64 make -j32 BOOT_CFLAGS="$OPT_FLAGS" bootstrap @@ -2607,6 +2617,9 @@ end %doc rpm.doc/changelogs/libcc1/ChangeLog* %changelog +* Tue Sep 01 2020 eastb233 - 9.3.1-20200901.4 +- gcc.spec: Add riscv64 support + * Mon Aug 28 2020 eastb233 - 9.3.1-20200828.4 - Add add-checks-to-avoid-spoiling-if-conversion.patch - Add add-option-fallow-store-data-races.patch -- Gitee From d13edd33eb6598b69cc930330c10b92750e3fd43 Mon Sep 17 00:00:00 2001 From: eastb233 Date: Wed, 19 Aug 2020 10:07:19 +0800 Subject: [PATCH 2/2] Introduce _smp_mflags to control parallel compilation --- gcc.spec | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/gcc.spec b/gcc.spec index a130346..98e02cd 100644 --- a/gcc.spec +++ b/gcc.spec @@ -8,6 +8,12 @@ %undefine _hardened_build %undefine _annotated_build +%ifarch riscv64 +%global _smp_mflags -j6 +%else +%global _smp_mflags -j32 +%endif + %global build_ada 0 %global build_objc 1 %global build_go 0 @@ -769,9 +775,9 @@ CC="$CC" CFLAGS="$OPT_FLAGS" \ %endif %ifarch sparc sparcv9 sparc64 -make -j32 BOOT_CFLAGS="$OPT_FLAGS" bootstrap +make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" bootstrap %else -make -j32 BOOT_CFLAGS="$OPT_FLAGS" BOOT_LDFLAGS="-pie -Wl,-z,relro,-z,now" +make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" BOOT_LDFLAGS="-pie -Wl,-z,relro,-z,now" %endif # Make generated man pages even if Pod::Man is not new enough @@ -850,7 +856,7 @@ cd obj-%{gcc_target_platform} TARGET_PLATFORM=%{gcc_target_platform} # There are some MP bugs in libstdc++ Makefiles -make -j -C %{gcc_target_platform}/libstdc++-v3 +make %{?_smp_mflags} -C %{gcc_target_platform}/libstdc++-v3 make prefix=%{buildroot}%{_prefix} mandir=%{buildroot}%{_mandir} \ infodir=%{buildroot}%{_infodir} install @@ -1583,7 +1589,7 @@ cd obj-%{gcc_target_platform} %if %{build_check} # run the tests. -LC_ALL=C make -j32 -k check ALT_CC_UNDER_TEST=gcc ALT_CXX_UNDER_TEST=g++ \ +LC_ALL=C make %{?_smp_mflags} -k check ALT_CC_UNDER_TEST=gcc ALT_CXX_UNDER_TEST=g++ \ RUNTESTFLAGS="--target_board=unix/'{,-fstack-protector-strong}'" || : echo ====================TESTING========================= ( LC_ALL=C ../contrib/test_summary || : ) 2>&1 | sed -n '/^cat.*EOF/,/^EOF/{/^cat.*EOF/d;/^EOF/d;/^LAST_UPDATED:/d;p;}' -- Gitee