From 24d545955212724ad8aa45699d29806081442308 Mon Sep 17 00:00:00 2001 From: Slava Barinov Date: Thu, 1 Jun 2023 12:27:01 +0300 Subject: [PATCH] packaging: Add riscv64 platform Change-Id: I377f05d4a027040f22b9c22d361efd9865584132 Signed-off-by: Slava Barinov --- packaging/gcc-aarch64.spec | 24 +- packaging/gcc-armv7hl.spec | 24 +- packaging/gcc-armv7l.spec | 24 +- packaging/gcc-riscv64.spec | 1305 ++++++++++++++++++++++++++++++++++++++++++++ packaging/gcc.spec | 24 +- packaging/pre_checkin.sh | 2 +- 6 files changed, 1382 insertions(+), 21 deletions(-) create mode 100644 packaging/gcc-riscv64.spec diff --git a/packaging/gcc-aarch64.spec b/packaging/gcc-aarch64.spec index ddb9008..2705c16 100644 --- a/packaging/gcc-aarch64.spec +++ b/packaging/gcc-aarch64.spec @@ -64,12 +64,12 @@ %define quadmath_arch %ix86 x86_64 ia64 %define tsan_arch x86_64 aarch64 -%define asan_arch x86_64 %ix86 ppc ppc64 %sparc %arm aarch64 -%define itm_arch x86_64 %ix86 %arm ppc ppc64 ppc64le s390 s390x %sparc aarch64 -%define atomic_arch x86_64 %ix86 %arm aarch64 ppc ppc64 ppc64le s390 s390x %sparc m68k +%define asan_arch x86_64 %ix86 ppc ppc64 %sparc %arm aarch64 riscv64 +%define itm_arch x86_64 %ix86 %arm ppc ppc64 ppc64le s390 s390x %sparc aarch64 riscv64 +%define atomic_arch x86_64 %ix86 %arm aarch64 ppc ppc64 ppc64le s390 s390x %sparc m68k riscv64 %define lsan_arch x86_64 aarch64 %define hwasan_arch aarch64 x86_64 -%define ubsan_arch x86_64 %ix86 ppc ppc64 %arm aarch64 +%define ubsan_arch x86_64 %ix86 ppc ppc64 %arm aarch64 riscv64 %ifarch armv7l %define ARCH armv7l @@ -88,13 +88,16 @@ %ifarch aarch64 %define ARCH aarch64 %endif +%ifarch riscv64 +%define ARCH riscv64 +%endif %define host_arch %{ARCH}-tizen-linux-gnu%{?ABI} %define target_cpu %{?cross}%{!?cross:%{ARCH}} %define target_abi %{?cross:%{?armv7l:eabi}%{?armv7hl:eabihf}}%{!?cross:%{?ABI}} %define target_arch %{target_cpu}-tizen-linux-gnu%{?target_abi} -%define libdir %{!?cross:%{_libdir}}%{?cross:%{_prefix}/lib%{?aarch64:64}} +%define libdir %{!?cross:%{_libdir}}%{?cross:%{_prefix}/lib%{?aarch64:64}%{?riscv64:64}} %define libsubdir %{libdir}/gcc/%{target_arch}/%{version} Name: gcc%{?cross:-%{cross}} @@ -712,6 +715,9 @@ tar xf %{SOURCE12} ln -sf mpc-1.3.1 mpc tar xf %{SOURCE13} ln -sf isl-0.22 isl +pushd isl +autoreconf -vfi +popd %global gcc_datestamp `sed -e 's/^.*-//g' %{_builddir}/gcc-%{version}/gcc/DATESTAMP` @@ -816,6 +822,10 @@ TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \ --with-arch=armv8-a \ --disable-sjlj-exceptions \ %endif +%ifarch riscv64 + --with-arch=rv64gc \ + --with-abi=lp64d \ +%endif %ifarch %ix86 --with-arch-32=i586 \ --with-tune=generic \ @@ -845,6 +855,10 @@ TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \ --with-arch=armv8-a \ --disable-sjlj-exceptions \ } \ +%{?riscv64: \ + --with-arch=rv64gc \ + --with-abi=lp64d \ +} \ --disable-libgcc \ --disable-libgfortran \ --disable-libquadmath \ diff --git a/packaging/gcc-armv7hl.spec b/packaging/gcc-armv7hl.spec index 01a3cd0..5831090 100644 --- a/packaging/gcc-armv7hl.spec +++ b/packaging/gcc-armv7hl.spec @@ -64,12 +64,12 @@ %define quadmath_arch %ix86 x86_64 ia64 %define tsan_arch x86_64 aarch64 -%define asan_arch x86_64 %ix86 ppc ppc64 %sparc %arm aarch64 -%define itm_arch x86_64 %ix86 %arm ppc ppc64 ppc64le s390 s390x %sparc aarch64 -%define atomic_arch x86_64 %ix86 %arm aarch64 ppc ppc64 ppc64le s390 s390x %sparc m68k +%define asan_arch x86_64 %ix86 ppc ppc64 %sparc %arm aarch64 riscv64 +%define itm_arch x86_64 %ix86 %arm ppc ppc64 ppc64le s390 s390x %sparc aarch64 riscv64 +%define atomic_arch x86_64 %ix86 %arm aarch64 ppc ppc64 ppc64le s390 s390x %sparc m68k riscv64 %define lsan_arch x86_64 aarch64 %define hwasan_arch aarch64 x86_64 -%define ubsan_arch x86_64 %ix86 ppc ppc64 %arm aarch64 +%define ubsan_arch x86_64 %ix86 ppc ppc64 %arm aarch64 riscv64 %ifarch armv7l %define ARCH armv7l @@ -88,13 +88,16 @@ %ifarch aarch64 %define ARCH aarch64 %endif +%ifarch riscv64 +%define ARCH riscv64 +%endif %define host_arch %{ARCH}-tizen-linux-gnu%{?ABI} %define target_cpu %{?cross}%{!?cross:%{ARCH}} %define target_abi %{?cross:%{?armv7l:eabi}%{?armv7hl:eabihf}}%{!?cross:%{?ABI}} %define target_arch %{target_cpu}-tizen-linux-gnu%{?target_abi} -%define libdir %{!?cross:%{_libdir}}%{?cross:%{_prefix}/lib%{?aarch64:64}} +%define libdir %{!?cross:%{_libdir}}%{?cross:%{_prefix}/lib%{?aarch64:64}%{?riscv64:64}} %define libsubdir %{libdir}/gcc/%{target_arch}/%{version} Name: gcc%{?cross:-%{cross}} @@ -712,6 +715,9 @@ tar xf %{SOURCE12} ln -sf mpc-1.3.1 mpc tar xf %{SOURCE13} ln -sf isl-0.22 isl +pushd isl +autoreconf -vfi +popd %global gcc_datestamp `sed -e 's/^.*-//g' %{_builddir}/gcc-%{version}/gcc/DATESTAMP` @@ -816,6 +822,10 @@ TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \ --with-arch=armv8-a \ --disable-sjlj-exceptions \ %endif +%ifarch riscv64 + --with-arch=rv64gc \ + --with-abi=lp64d \ +%endif %ifarch %ix86 --with-arch-32=i586 \ --with-tune=generic \ @@ -845,6 +855,10 @@ TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \ --with-arch=armv8-a \ --disable-sjlj-exceptions \ } \ +%{?riscv64: \ + --with-arch=rv64gc \ + --with-abi=lp64d \ +} \ --disable-libgcc \ --disable-libgfortran \ --disable-libquadmath \ diff --git a/packaging/gcc-armv7l.spec b/packaging/gcc-armv7l.spec index 1a0fcc8..c2e77a4 100644 --- a/packaging/gcc-armv7l.spec +++ b/packaging/gcc-armv7l.spec @@ -64,12 +64,12 @@ %define quadmath_arch %ix86 x86_64 ia64 %define tsan_arch x86_64 aarch64 -%define asan_arch x86_64 %ix86 ppc ppc64 %sparc %arm aarch64 -%define itm_arch x86_64 %ix86 %arm ppc ppc64 ppc64le s390 s390x %sparc aarch64 -%define atomic_arch x86_64 %ix86 %arm aarch64 ppc ppc64 ppc64le s390 s390x %sparc m68k +%define asan_arch x86_64 %ix86 ppc ppc64 %sparc %arm aarch64 riscv64 +%define itm_arch x86_64 %ix86 %arm ppc ppc64 ppc64le s390 s390x %sparc aarch64 riscv64 +%define atomic_arch x86_64 %ix86 %arm aarch64 ppc ppc64 ppc64le s390 s390x %sparc m68k riscv64 %define lsan_arch x86_64 aarch64 %define hwasan_arch aarch64 x86_64 -%define ubsan_arch x86_64 %ix86 ppc ppc64 %arm aarch64 +%define ubsan_arch x86_64 %ix86 ppc ppc64 %arm aarch64 riscv64 %ifarch armv7l %define ARCH armv7l @@ -88,13 +88,16 @@ %ifarch aarch64 %define ARCH aarch64 %endif +%ifarch riscv64 +%define ARCH riscv64 +%endif %define host_arch %{ARCH}-tizen-linux-gnu%{?ABI} %define target_cpu %{?cross}%{!?cross:%{ARCH}} %define target_abi %{?cross:%{?armv7l:eabi}%{?armv7hl:eabihf}}%{!?cross:%{?ABI}} %define target_arch %{target_cpu}-tizen-linux-gnu%{?target_abi} -%define libdir %{!?cross:%{_libdir}}%{?cross:%{_prefix}/lib%{?aarch64:64}} +%define libdir %{!?cross:%{_libdir}}%{?cross:%{_prefix}/lib%{?aarch64:64}%{?riscv64:64}} %define libsubdir %{libdir}/gcc/%{target_arch}/%{version} Name: gcc%{?cross:-%{cross}} @@ -712,6 +715,9 @@ tar xf %{SOURCE12} ln -sf mpc-1.3.1 mpc tar xf %{SOURCE13} ln -sf isl-0.22 isl +pushd isl +autoreconf -vfi +popd %global gcc_datestamp `sed -e 's/^.*-//g' %{_builddir}/gcc-%{version}/gcc/DATESTAMP` @@ -816,6 +822,10 @@ TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \ --with-arch=armv8-a \ --disable-sjlj-exceptions \ %endif +%ifarch riscv64 + --with-arch=rv64gc \ + --with-abi=lp64d \ +%endif %ifarch %ix86 --with-arch-32=i586 \ --with-tune=generic \ @@ -845,6 +855,10 @@ TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \ --with-arch=armv8-a \ --disable-sjlj-exceptions \ } \ +%{?riscv64: \ + --with-arch=rv64gc \ + --with-abi=lp64d \ +} \ --disable-libgcc \ --disable-libgfortran \ --disable-libquadmath \ diff --git a/packaging/gcc-riscv64.spec b/packaging/gcc-riscv64.spec new file mode 100644 index 0000000..81a1d2d --- /dev/null +++ b/packaging/gcc-riscv64.spec @@ -0,0 +1,1305 @@ +%define cross riscv64 +%define riscv64 1 + +# +# spec file for package gcc +# +# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2015-2020 Tizen +# +# 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 http://bugs.tizen.org/ +# +# we use %%{?macro: ... } as it is more compact +%if 0%{?run_tests} +%{!?cross: +%define gcc_run_tests 1 +} +%endif +%if 0%{?dump_configure} +%define gcc_dump_configure 1 +%endif + +# Enable this when testing on device to: +# 1. Enable macro to turn on testsuite building ('gcc_run_tests 1') +# 2. Keep 'obj/' folder in build stage as we do not want to rebuild all gcc +# again on device after invoking rpmbuild --short-circuit -bc ... +# 3. Skip configure and make commands and go directly to 'make check' +%if 0%{?run_tests_on_device} +%define gcc_run_tests 1 +%define gcc_keep_build_dir 1 +%define gcc_skip_configure 1 +%define gcc_skip_make 1 +%endif + +# Exit right after 'make ..' step to keep all object files produced by gcc build +%if 0%{?exit_on_make_finish} +%define gcc_exit_on_make_finish 1 +%endif + +# Bootstrap build constrains for ASan config +%if 0%{?asanbootstrap} + %ifarch %arm aarch64 # or #if 0#{?qemu_user_space_build} + %{error:"'asanbootstrap' supposed to be used with i586/x86_64 arch"} + # The #error macro primitive cannot stop the build because macros are context + # free, lazily expanded whereever they are needed, not only during build. + # Use non-existing define for now to abort the build. + %abort_build + %endif + # We'll get 2 libasan runtime conflict: preloaded one and another from build dir. + %if 0%{?asan} + %{error:"'asanbootstrap' could not be used with sanitized environment."} + %{error:"Use 'asanbootstrap' without defined 'asan'"} + %abort_build + %endif +%endif + +%define quadmath_arch %ix86 x86_64 ia64 +%define tsan_arch x86_64 aarch64 +%define asan_arch x86_64 %ix86 ppc ppc64 %sparc %arm aarch64 riscv64 +%define itm_arch x86_64 %ix86 %arm ppc ppc64 ppc64le s390 s390x %sparc aarch64 riscv64 +%define atomic_arch x86_64 %ix86 %arm aarch64 ppc ppc64 ppc64le s390 s390x %sparc m68k riscv64 +%define lsan_arch x86_64 aarch64 +%define hwasan_arch aarch64 x86_64 +%define ubsan_arch x86_64 %ix86 ppc ppc64 %arm aarch64 riscv64 + +%ifarch armv7l +%define ARCH armv7l +%define ABI eabi +%endif +%ifarch armv7hl +%define ARCH armv7hl +%define ABI eabihf +%endif +%ifarch %ix86 +%define ARCH i586 +%endif +%ifarch x86_64 +%define ARCH x86_64 +%endif +%ifarch aarch64 +%define ARCH aarch64 +%endif +%ifarch riscv64 +%define ARCH riscv64 +%endif +%define host_arch %{ARCH}-tizen-linux-gnu%{?ABI} + +%define target_cpu %{?cross}%{!?cross:%{ARCH}} +%define target_abi %{?cross:%{?armv7l:eabi}%{?armv7hl:eabihf}}%{!?cross:%{?ABI}} + +%define target_arch %{target_cpu}-tizen-linux-gnu%{?target_abi} +%define libdir %{!?cross:%{_libdir}}%{?cross:%{_prefix}/lib%{?aarch64:64}%{?riscv64:64}} +%define libsubdir %{libdir}/gcc/%{target_arch}/%{version} + +Name: gcc%{?cross:-%{cross}} +# With generated files in src we could drop the following +BuildRequires: bison +BuildRequires: flex +BuildRequires: gettext-devel +BuildRequires: makeinfo +## until here, but at least renaming and patching info files breaks this +BuildRequires: gcc-c++ +BuildRequires: zlib-devel +BuildRequires: xz-devel +%ifarch x86_64 +BuildRequires: glibc-devel-32bit +%endif +BuildRequires: perl +%{?cross:BuildRequires: binutils-%{cross}} +# here we use %%if because OBS spec parser cannot expand +# %%{?macro:...} correctly +%if 0%{?gcc_run_tests} +BuildRequires: dejagnu +BuildRequires: expect +%endif +%if 0%{?gcc_dump_configure} +BuildRequires: configure-dumper +%endif +URL: http://gcc.gnu.org/ +Version: 13.1.0 +Release: 0 +Source: gcc-%{version}.tar.bz2 +Source10: gmp-6.2.1.tar.bz2 +Source11: mpfr-4.2.0.tar.bz2 +Source12: mpc-1.3.1.tar.gz +Source13: isl-0.22.tar.bz2 +Source20: gcc.manifest +Group: Development/Building +Summary: The GNU C Compiler and Support Files +License: GPL-3.0+ +%{?cross:ExcludeArch: %{cross}} +%description +Core package for the GNU Compiler Collection, including the C language +frontend. + +%package c++ +Summary: The GNU C++ Compiler +License: GPL-3.0+ +Group: Development/Languages +%description c++ +This package contains the GNU compiler for C++. + +%package -n libstdc++ +Summary: The standard C++ shared library +License: GPL-3.0-with-GCC-exception +Group: Development/Building +%description -n libstdc++ +The standard C++ library, needed for dynamically linked C++ programs. +%post -n libstdc++ -p /sbin/ldconfig +%postun -n libstdc++ -p /sbin/ldconfig + +%package -n libstdc++-devel +Summary: Include Files and Libraries mandatory for Development +License: GPL-3.0-with-GCC-exception +Group: Development/Building +%description -n libstdc++-devel +This package contains all the headers and libraries of the standard C++ +library. It is needed for compiling C++ code. + +%package -n libgcc +Summary: C compiler runtime library +License: GPL-3.0-with-GCC-exception +Group: Development/Building +%description -n libgcc +Libgcc is needed for dynamically linked C programs. +%post -n libgcc -p /sbin/ldconfig +%postun -n libgcc -p /sbin/ldconfig + +%package -n libgomp +Summary: The GNU compiler collection OpenMP runtime library +License: GPL-3.0-with-GCC-exception +Group: Development/Building +%description -n libgomp +This is the OpenMP runtime library needed by OpenMP enabled programs +that were built with the -fopenmp compiler option and by programs that +were auto-parallelized via the -ftree-parallelize-loops compiler +option. +%post -n libgomp -p /sbin/ldconfig +%postun -n libgomp -p /sbin/ldconfig + +%package objc +Summary: GNU Objective C Compiler +License: GPL-3.0+ +Group: Development/Languages +%description objc +This package contains the GNU Objective C compiler. Objective C is an +object oriented language, created by Next Inc. and used in their +Nextstep OS. The source code is available in the gcc package. + +%package -n libobjc +Summary: Library for the GNU Objective C Compiler +License: GPL-3.0-with-GCC-exception +Group: Development/Building +%description -n libobjc +The library for the GNU Objective C compiler. +%post -n libobjc -p /sbin/ldconfig +%postun -n libobjc -p /sbin/ldconfig + +%package -n libcc1 +Summary: GNU C Compiler plugin for GDB +License: GPL-3.0-with-GCC-exception +Group: Development/Building +%description -n libcc1 +The GCC plugin for GDB +%post -n libcc1 -p /sbin/ldconfig +%postun -n libcc1 -p /sbin/ldconfig + +%package obj-c++ +Summary: GNU Objective C++ Compiler +License: GPL-3.0+ +Group: Development/Languages +%description obj-c++ +This package contains the GNU Objective C++ compiler. Objective C++ is an +object oriented language, created by Next Inc. and used in their +Nextstep OS. The source code is available in the gcc package. + +%package -n cpp +Summary: The GCC Preprocessor +License: GPL-3.0+ +Group: Development/Languages +%description -n cpp +This Package contains just the preprocessor that is used by the X11 +packages. + +%package ada +Summary: GNU Ada95 Compiler Based on GCC (GNAT) +License: GPL-3.0+ +Group: Development/Languages +%description ada +This package contains an Ada95 compiler and associated development +tools based on the GNU GCC technology. Ada95 is the object oriented +successor of the Ada83 language. To build this package from source you +must have installed a binary version to bootstrap the compiler. + +%package -n libada +Summary: GNU Ada Runtime Libraries +License: GPL-3.0-with-GCC-exception +Group: Development/Languages +%description -n libada +This package contains the shared libraries required to run programs +compiled with the GNU Ada compiler (GNAT) if they are compiled to use +shared libraries. It also contains the shared libraries for the +Implementation of the Ada Semantic Interface Specification (ASIS), the +implementation of Distributed Systems Programming (GLADE) and the Posix +1003.5 Binding (Florist). +%post -n libada -p /sbin/ldconfig +%postun -n libada -p /sbin/ldconfig + +%package fortran +Summary: The GNU Fortran Compiler and Support Files +License: GPL-3.0+ +Group: Development/Languages +%description fortran +This is the Fortran compiler of the GNU Compiler Collection (GCC). + +%package -n libgfortran +Summary: The GNU Fortran Compiler Runtime Library +License: GPL-3.0-with-GCC-exception +Group: Development/Languages +%description -n libgfortran +The runtime library needed to run programs compiled with the Fortran compiler +of the GNU Compiler Collection (GCC). +%post -n libgfortran -p /sbin/ldconfig +%postun -n libgfortran -p /sbin/ldconfig + +%package -n libquadmath +Summary: The GNU Fortran Compiler Quadmath Runtime Library +License: LGPL-2.1 +Group: Development/Languages +%description -n libquadmath +The runtime library needed to run programs compiled with the Fortran compiler +of the GNU Compiler Collection (GCC) and quadruple precision floating point +operations. +%post -n libquadmath -p /sbin/ldconfig +%postun -n libquadmath -p /sbin/ldconfig + +%package -n libitm +Summary: The GNU Compiler Transactional Memory Runtime Library +License: GPL-3.0-with-GCC-exception +Group: Development/Languages +%description -n libitm +The runtime library needed to run programs compiled with the +-fgnu-tm option of the GNU Compiler Collection (GCC). +%post -n libitm -p /sbin/ldconfig +%postun -n libitm -p /sbin/ldconfig + +%package -n libasan +Summary: The GNU Compiler Address Sanitizer Runtime Library +License: MIT +Group: Development/Languages +%description -n libasan +The runtime library needed to run programs compiled with the +-fsanitize=address option of the GNU Compiler Collection (GCC). +%post -n libasan -p /sbin/ldconfig +%postun -n libasan -p /sbin/ldconfig + +%package -n libhwasan +Summary: The GNU Compiler Hardware-assisted Address Sanitizer Runtime Library +License: MIT +Group: Development/Languages +%description -n libhwasan +The runtime library needed to run programs compiled with the +-fsanitize=address option of the GNU Compiler Collection (GCC). +%post -n libhwasan -p /sbin/ldconfig +%postun -n libhwasan -p /sbin/ldconfig + +%package -n libtsan +Summary: The GNU Compiler Thread Sanitizer Runtime Library +License: MIT +Group: Development/Languages +%description -n libtsan +The runtime library needed to run programs compiled with the +-fsanitize=thread option of the GNU Compiler Collection (GCC). +%post -n libtsan -p /sbin/ldconfig +%postun -n libtsan -p /sbin/ldconfig + +%package -n libatomic +Summary: The GNU Compiler Atomic Operations Runtime Library +License: GPL-3.0-with-GCC-exception +Group: Development/Languages +%description -n libatomic +The runtime library for atomic operations of the GNU Compiler Collection (GCC). +%post -n libatomic -p /sbin/ldconfig +%postun -n libatomic -p /sbin/ldconfig + +%package -n liblsan +Summary: The GNU Compiler Leak Sanitizer Runtime Library +License: MIT +Group: Development/Languages +%description -n liblsan +The runtime library needed to run programs compiled with the +-fsanitize=leak option of the GNU Compiler Collection (GCC). +%post -n liblsan -p /sbin/ldconfig +%postun -n liblsan -p /sbin/ldconfig + +%package -n libubsan +Summary: The GNU Compiler Undefined Sanitizer Runtime Library +License: MIT +Group: Development/Languages +%description -n libubsan +The runtime library needed to run programs compiled with the +-fsanitize=undefined option of the GNU Compiler Collection (GCC). +%post -n libubsan -p /sbin/ldconfig +%postun -n libubsan -p /sbin/ldconfig + +%package -n libvtv +Summary: The GNU Compiler Vtable Verifier Runtime Library +License: MIT +Group: Development/Languages +%description -n libvtv +The runtime library needed to run programs compiled with the +-fvtable-verify option of the GNU Compiler Collection (GCC). +%post -n libvtv -p /sbin/ldconfig +%postun -n libvtv -p /sbin/ldconfig + +%package -n libgcj +Summary: Java Runtime Library for gcc +License: GPL-2.0-with-classpath-exception +Group: Development/Building +%description -n libgcj +This library is needed if you want to use the GNU Java compiler, gcj. +Source code for this package is in gcc. +%post -n libgcj -p /sbin/ldconfig +%postun -n libgcj -p /sbin/ldconfig + +%package java +Summary: The GNU Java Compiler +License: GPL-3.0+ +Group: Development/Languages +%description java +The Java compiler from the GCC-tools-suite. + +%package -n libgcj_bc +Summary: Fake library for BC-ABI compatibility. +License: GPL-2.0-with-classpath-exception +Group: Development/Languages +%description -n libgcj_bc +A fake library that is used at link time only. It ensures that +binaries built with the BC-ABI link against a constant SONAME. +This way, BC-ABI binaries continue to work if the SONAME underlying +libgcj.so changes. + +%package -n libgcj-jar +Summary: Java runtime library (jar files). +License: GPL-2.0-with-classpath-exception +Group: Development/Languages +%description -n libgcj-jar +These are the jar files that go along with the gcj front end to gcc. + +%package -n libgcj-devel +Summary: Include Files and Libraries mandatory for Development. +License: GPL-2.0-with-classpath-exception +Group: Development/Languages +%description -n libgcj-devel +This package contains all necessary include files and libraries needed +to develop applications that require these. + +%package -n gcc-gij +Summary: Java Bytecode Interpreter for gcc +License: GPL-2.0-with-classpath-exception +Group: Development/Languages +%description -n gcc-gij +This package contains the java bytecode interpreter gij and related tools. + +%package -n libffi +Summary: Foreign Function Interface library +License: BSD-3-Clause +Group: Development/Building +%description -n libffi +A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language. +%post -n libffi -p /sbin/ldconfig +%postun -n libffi -p /sbin/ldconfig + +%package -n libffi-devel +Summary: Foreign Function Interface library development files +License: BSD 3-Clause +Group: Development/Building +%description -n libffi-devel +A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language. + +%package go +Summary: GNU Go Compiler +License: GPL-3.0+ +Group: Development/Languages +%description go +This package contains a Go compiler and associated development +files based on the GNU GCC technology. + +%package -n libgo +Summary: GNU Go compiler runtime library +License: BSD-3-Clause +Group: Development/Languages +%description -n libgo +A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language. +%post -n libgo -p /sbin/ldconfig +%postun -n libgo -p /sbin/ldconfig + +%{?gcc_run_tests: +%package testresults +Summary: Testsuite results +License: Public Domain +Group: Development/Languages +%description testresults +Results from running the gcc and target library testsuites. +} + +%package -n gcc-32bit +Summary: The GNU C Compiler 32bit support +Group: Development/Building +%description -n gcc-32bit +This package contains 32bit support for the GNU Compiler Collection. + +%package -n libstdc++-devel-32bit +Summary: Include Files and Libraries mandatory for Development +License: GPL-3.0-with-GCC-exception +Group: Development/Building +%description -n libstdc++-devel-32bit +This package contains all the headers and libraries of the standard C++ +library. It is needed for compiling C++ code. + +%package -n libgcc-32bit +Summary: C compiler runtime library +License: GPL-3.0-with-GCC-exception +Group: Development/Building +%description -n libgcc-32bit +Libgcc is needed for dynamically linked C programs. +%post -n libgcc-32bit -p /sbin/ldconfig +%postun -n libgcc-32bit -p /sbin/ldconfig + +%package -n libgomp-32bit +Summary: The GNU compiler collection OpenMP runtime library +License: GPL-3.0-with-GCC-exception +Group: Development/Building +%description -n libgomp-32bit +This is the OpenMP runtime library needed by OpenMP enabled programs +that were built with the -fopenmp compiler option and by programs that +were auto-parallelized via the -ftree-parallelize-loops compiler +option. +%post -n libgomp-32bit -p /sbin/ldconfig +%postun -n libgomp-32bit -p /sbin/ldconfig + +%package -n libstdc++-32bit +Summary: The standard C++ shared library +License: GPL-3.0-with-GCC-exception +Group: Development/Building +%description -n libstdc++-32bit +The standard C++ library, needed for dynamically linked C++ programs. +%post -n libstdc++-32bit -p /sbin/ldconfig +%postun -n libstdc++-32bit -p /sbin/ldconfig + +%package objc-32bit +Summary: GNU Objective C Compiler +License: GPL-3.0+ +Group: Development/Languages +%description objc-32bit +This package contains the GNU Objective C compiler. Objective C is an +object oriented language, created by Next Inc. and used in their +Nextstep OS. The source code is available in the gcc package. + +%package -n libobjc-32bit +Summary: Library for the GNU Objective C Compiler +License: GPL-3.0-with-GCC-exception +Group: Development/Building +%description -n libobjc-32bit +The library for the GNU Objective C compiler. +%post -n libobjc-32bit -p /sbin/ldconfig +%postun -n libobjc-32bit -p /sbin/ldconfig + +%package ada-32bit +Summary: GNU Ada95 Compiler Based on GCC (GNAT) +License: GPL-3.0+ +Group: Development/Languages +%description ada-32bit +This package contains an Ada95 compiler and associated development +tools based on the GNU GCC technology. Ada95 is the object oriented +successor of the Ada83 language. To build this package from source you +must have installed a binary version to bootstrap the compiler. + +%package -n libada-32bit +Summary: GNU Ada Runtime Libraries +License: GPL-3.0-with-GCC-exception +Group: Development/Languages +%description -n libada-32bit +This package contains the shared libraries required to run programs +compiled with the GNU Ada compiler (GNAT) if they are compiled to use +shared libraries. It also contains the shared libraries for the +Implementation of the Ada Semantic Interface Specification (ASIS), the +implementation of Distributed Systems Programming (GLADE) and the Posix +1003.5 Binding (Florist). +%post -n libada-32bit -p /sbin/ldconfig +%postun -n libada-32bit -p /sbin/ldconfig + +%package fortran-32bit +Summary: The GNU Fortran Compiler and Support Files +License: GPL-3.0+ +Group: Development/Languages +%description fortran-32bit +This is the Fortran compiler of the GNU Compiler Collection (GCC). + +%package -n libgfortran-32bit +Summary: The GNU Fortran Compiler Runtime Library +License: GPL-3.0-with-GCC-exception +Group: Development/Languages +%description -n libgfortran-32bit +The runtime library needed to run programs compiled with the Fortran compiler +of the GNU Compiler Collection (GCC). +%post -n libgfortran-32bit -p /sbin/ldconfig +%postun -n libgfortran-32bit -p /sbin/ldconfig + +%package -n libquadmath-32bit +Summary: The GNU Fortran Compiler Quadmath Runtime Library +License: LGPL-2.1 +Group: Development/Languages +%description -n libquadmath-32bit +The runtime library needed to run programs compiled with the Fortran compiler +of the GNU Compiler Collection (GCC) and quadruple precision floating point +operations. +%post -n libquadmath-32bit -p /sbin/ldconfig +%postun -n libquadmath-32bit -p /sbin/ldconfig + +%package -n libitm-32bit +Summary: The GNU Compiler Transactional Memory Runtime Library +License: GPL-3.0-with-GCC-exception +Group: Development/Languages +%description -n libitm-32bit +The runtime library needed to run programs compiled with the +-fgnu-tm option of the GNU Compiler Collection (GCC). +%post -n libitm-32bit -p /sbin/ldconfig +%postun -n libitm-32bit -p /sbin/ldconfig + +%package -n libasan-32bit +Summary: The GNU Compiler Address Sanitizer Runtime Library +License: MIT +Group: Development/Languages +%description -n libasan-32bit +The runtime library needed to run programs compiled with the +-fsanitize=address option of the GNU Compiler Collection (GCC). +%post -n libasan-32bit -p /sbin/ldconfig +%postun -n libasan-32bit -p /sbin/ldconfig + +%package -n liblsan-32bit +Summary: The GNU Compiler Address Sanitizer Runtime Library +License: MIT +Group: Development/Languages +%description -n liblsan-32bit +The runtime library needed to run programs compiled with the +-fsanitize=leak option of the GNU Compiler Collection (GCC). +%post -n liblsan-32bit -p /sbin/ldconfig +%postun -n liblsan-32bit -p /sbin/ldconfig + +%package -n libtsan-32bit +Summary: The GNU Compiler Thread Sanitizer Runtime Library +License: MIT +Group: Development/Languages +%description -n libtsan-32bit +The runtime library needed to run programs compiled with the +-fsanitize=thread option of the GNU Compiler Collection (GCC). +%post -n libtsan-32bit -p /sbin/ldconfig +%postun -n libtsan-32bit -p /sbin/ldconfig + +%package -n libatomic-32bit +Summary: The GNU Compiler Atomic Operations Runtime Library +License: GPL-3.0-with-GCC-exception +Group: Development/Languages +%description -n libatomic-32bit +The runtime library for atomic operations of the GNU Compiler Collection (GCC). +%post -n libatomic-32bit -p /sbin/ldconfig +%postun -n libatomic-32bit -p /sbin/ldconfig + +%package -n libubsan-32bit +Summary: The GNU Compiler Undefined Sanitizer Runtime Library +License: MIT +Group: Development/Languages +%description -n libubsan-32bit +The runtime library needed to run programs compiled with the +-fsanitize=undefined option of the GNU Compiler Collection (GCC). +%post -n libubsan-32bit -p /sbin/ldconfig +%postun -n libubsan-32bit -p /sbin/ldconfig + +%package -n libvtv-32bit +Summary: The GNU Compiler Vtable Verifier Runtime Library +License: MIT +Group: Development/Languages +%description -n libvtv-32bit +The runtime library needed to run programs compiled with the +-fvtable-verify option of the GNU Compiler Collection (GCC). +%post -n libvtv-32bit -p /sbin/ldconfig +%postun -n libvtv-32bit -p /sbin/ldconfig + +%package -n libffi-32bit +Summary: Foreign Function Interface library +License: BSD-3-Clause +Group: Development/Building +%description -n libffi-32bit +A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language. +%post -n libffi-32bit -p /sbin/ldconfig +%postun -n libffi-32bit -p /sbin/ldconfig + +%package -n libffi-devel-32bit +Summary: Foreign Function Interface library development files +License: BSD 3-Clause +Group: Development/Building +%description -n libffi-devel-32bit +A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language. + +%package go-32bit +Summary: GNU Go Compiler +License: GPL-3.0+ +Group: Development/Languages +%description go-32bit +This package contains a Go compiler and associated development +files based on the GNU GCC technology. + +%package -n libgo-32bit +Summary: GNU Go compiler runtime library +License: BSD-3-Clause +Group: Development/Languages +%description -n libgo-32bit +A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language. +%post -n libgo-32bit -p /sbin/ldconfig +%postun -n libgo-32bit -p /sbin/ldconfig + +%package plugin-devel +Summary: GNU GCC Plugin development files +License: GPL-3.0+ +Group: Development/Languages +%description plugin-devel +This package contains GCC Plugin development files needed for compiler +plugins build. + +%package -n sanitizer-sources +Summary: Sanitizer family tools sources +License: MIT +Group: Development/Tools +BuildArch: noarch + +%description -n sanitizer-sources +Sanitizer family tools sources for external tools. + +%{!?cross: +%package devel-static +Summary: GNU GCC static libraries +License: GPL-3.0+ +Group: Development/Languages +%description devel-static +This package contains static libraries from GCC +} + +%{?gcc_dump_configure: +%package configure-dump +Summary: GNU GCC configure dump +License: GPL-3.0+ +Group: Development/Languages +%description configure-dump +This package contains dump of configure variables of GCC +} + +%prep +%setup -q -n gcc-%{version} +cp %{SOURCE20} . + +tar xf %{SOURCE10} +ln -sf gmp-6.2.1 gmp +tar xf %{SOURCE11} +ln -sf mpfr-4.2.0 mpfr +tar xf %{SOURCE12} +ln -sf mpc-1.3.1 mpc +tar xf %{SOURCE13} +ln -sf isl-0.22 isl +pushd isl +autoreconf -vfi +popd + +%global gcc_datestamp `sed -e 's/^.*-//g' %{_builddir}/gcc-%{version}/gcc/DATESTAMP` + +%build +%{?asan: +%gcc_unforce_options +%ifarch armv7l +RPM_OPT_FLAGS="$RPM_OPT_FLAGS -marm -Wa,-mimplicit-it=arm -fasynchronous-unwind-tables" +%endif +} +%{!?gcc_keep_build_dir: +rm -rf obj +mkdir obj +} + +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/-ffortify=.//g' -e 's/-Wall//g' -e 's/-m32//g' -e 's/-m64//g' -e 's/-fexceptions//' -e 's/\([[:space:]]\+.*-D_FORTIFY_SOURCE=\)[[:alnum:]]\+/\10/g' +RPM_OPT_FLAGS="$RPM_OPT_FLAGS -D__USE_FORTIFY_LEVEL=0"` +RPM_OPT_FLAGS=${RPM_OPT_FLAGS/-fstack-protector-strong/} +RPM_OPT_FLAGS=${RPM_OPT_FLAGS/-fstack-protector/} + +%{?cross: +RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-m\(arch\|tune\|cpu\)=[^ ]*//g'` +RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-m\(sse\|fpmath\)[^ ]*//g'` +} +RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/ */ /g'` + +# -Wall is stripped off now, so -Wformat will not turn on implicitly for +# "-Wformat-.." option group, causing additional build warnings and testsuite +# FAIL ("test for excess errors" type). +# Insert "-Wformat" if we find "-Wformat-..." +if [ ! -z "$(echo $RPM_OPT_FLAGS | grep -o "\B\-Wformat\-")" ]; then + if [ -z "$(echo $RPM_OPT_FLAGS | grep -Po "\B\-Wformat(\s|\Z)")" ]; then + RPM_OPT_FLAGS=$(echo $RPM_OPT_FLAGS | sed -e "s/-Wformat-/-Wformat -Wformat-/") + fi +fi + +%{?asan: RPM_OPT_FLAGS=$(echo $RPM_OPT_FLAGS -DASAN_INIT_FIRST) } +%{?asan_shadow_scale: RPM_OPT_FLAGS=$(echo $RPM_OPT_FLAGS -Wp,-DASAN_SHADOW_SCALE=%{asan_shadow_scale})} + +%ifarch armv7l armv7hl aarch64 +%undefine gcc_profiledbootstrap +%endif + +%ifarch %arm +## Support DA build with armv8 cpu in 32bit mode: prevent Werror on sqrt function +# Extract current march +cur_arch=$(echo ${RPM_OPT_FLAGS} | sed -e 's/.*-march=\([^[:space:]]\+\).*/\1/') +# And apply it to libatomic to prevent conflict +(echo ${RPM_OPT_FLAGS} | grep '\-march=armv8') && \ + sed -e "/@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS/s/-march=[^[:space:]]\+/-march=${cur_arch}/" -i libatomic/Makefile.in +%endif + +cd obj + +%{!?gcc_skip_configure: +%{?gcc_dump_configure:patch_configure.pl ..} # Add debug prints into configure +CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" XCFLAGS="$RPM_OPT_FLAGS" \ +TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \ +../configure \ + --prefix=%{_prefix} \ + --infodir=%{_infodir} \ + --mandir=%{_mandir} \ + --libdir=%{libdir} \ + --libexecdir=%{libdir} \ + --enable-languages=c,c++,fortran \ + --enable-checking=release \ + --disable-libssp \ + %{!?gcc_profiledbootstrap:--disable-bootstrap} \ + --disable-libvtv \ + --enable-plugin \ + --disable-libcc1 \ + --disable-libgcj \ + --with-slibdir=%{libdir} \ + --with-system-zlib \ + --with-sysroot=/ \ + --enable-__cxa_atexit \ + --enable-libstdcxx-allocator=new \ + --enable-version-specific-runtime-libs \ + --enable-linker-build-id \ + --without-system-libunwind \ + --enable-threads=posix \ + --disable-multilib \ + --disable-cet \ + --enable-lto \ +%{!?cross: \ + --enable-libcc1 \ + --enable-libgfortran \ + %{?asanbootstrap:--enable-bootstrap --with-build-config=bootstrap-asan} \ +%ifarch armv7l + --with-arch=armv7-a \ + --with-tune=cortex-a8 \ + --disable-sjlj-exceptions \ +%endif +%ifarch armv7hl + --with-arch=armv7-a+fp \ + --with-tune=cortex-a8 \ + --with-fpu=neon \ + --disable-sjlj-exceptions \ + --with-float=hard \ +%endif +%ifarch aarch64 + --with-arch=armv8-a \ + --disable-sjlj-exceptions \ +%endif +%ifarch riscv64 + --with-arch=rv64gc \ + --with-abi=lp64d \ +%endif +%ifarch %ix86 + --with-arch-32=i586 \ + --with-tune=generic \ + --disable-libmpx \ +%endif +%ifarch x86_64 + --with-arch-32=i586 \ + --with-tune=generic \ + --enable-multilib \ + --disable-libmpx \ +%endif +} \ +%{?cross: \ +%{?armv7l: \ + --with-arch=armv7-a \ + --with-tune=cortex-a8 \ + --disable-sjlj-exceptions \ +} \ +%{?armv7hl: \ + --with-arch=armv7-a+fp \ + --with-tune=cortex-a8 \ + --with-fpu=neon \ + --disable-sjlj-exceptions \ + --with-float=hard \ +} \ +%{?aarch64: \ + --with-arch=armv8-a \ + --disable-sjlj-exceptions \ +} \ +%{?riscv64: \ + --with-arch=rv64gc \ + --with-abi=lp64d \ +} \ + --disable-libgcc \ + --disable-libgfortran \ + --disable-libquadmath \ + --disable-libgomp \ + --disable-libatomic \ + --disable-libstdc++-v3 \ + --disable-libsanitizer \ + --disable-libitm \ +} \ + --with-bugurl="http://bugs.tizen.org/" \ + --with-pkgversion="Tizen GCC %{version} %{gcc_datestamp} %{release}" \ + --target=%{target_arch} \ + --host=%{host_arch} \ + --build=%{host_arch} + } + +%{?!cross: + # During native compiler build with qemu-accel enabled we have to provide + # path to accelerated lto_plugin.so to prevent + # error loading plugin: /home/abuild/rpmbuild/BUILD/gcc-12.2.0/obj/./gcc/liblto_plugin.so: wrong ELF class: ELFCLASS32 + # So we have to update: + # - CC_FOR_TARGET + # - GCC_FOR_TARGET + # - CXX_FOR_TARGET + # - RAW_CXX_FOR_TARGET + # And provide path to liblto_plugin inside /emul via -B option + # Changing configure.ac and adding a dependency from qemu-accel there is not + # reasonable, so here we patch a Makefile after configure is competed + + [[ -e '/emul' ]] && \ + sed -e '/^\(G\?CC_FOR_TARGET\)=\|^\(\(RAW_\)\?CXX_FOR_TARGET\)=/s#\(xg\(cc\|++\)\)#\1 -B/emul%{libsubdir}/#' -i Makefile +} + +%{!?gcc_skip_make: +make BOOT_CFLAGS="$RPM_OPT_FLAGS" %{?_smp_mflags} %{!?cross:%{?gcc_profiledbootstrap:profiledbootstrap}} %{?cross:all-host} +%{?gcc_dump_configure: + dump_configure.pl .. . \ + --project gcc \ + --project-version %{version} \ + --out_db gcc-%{version}-%{release}-%_project-%_repository.db + } +} + +%{?gcc_exit_on_make_finish: + exit 1 +} + +%{?gcc_run_tests: + echo "Run testsuite" + # asan needs a whole shadow address space + ulimit -v unlimited || true + make -k check %{?_smp_mflags} || true + mkdir ../testresults + ../contrib/test_summary | tee ../testresults/test_summary.txt + for tool in $(find -name '*.sum' -exec basename {} \; | sort -u | sed -e 's/.sum//'); do + ../contrib/dg-extract-results.sh -t $tool $(find -name '*.sum') | tee -a ../testresults/test_summary.txt + done +} + +%install +cd obj + +make install%{?cross:-host} DESTDIR=$RPM_BUILD_ROOT + +%{?gcc_dump_configure: + install -D -m 0644 gcc-%{version}-%{release}-%_project-%_repository.db %{buildroot}%{_datadir}/gcc-%{version}-%{release}-%_project-%_repository.db +} + +%{?gcc_run_tests: + find . \( -name "*.sum" -o -name "*.log" -a \! -name "config.log" \) -exec tar -rf testresults.tar {} \; + mkdir -p ../testresults && tar -xf testresults.tar -C ../testresults + find ../testresults/ -type f -exec chmod 644 {} \; +} + +%{remove_docs} +rm -rf %{buildroot}/%{_datadir}/locale + +#remove everything we don't need +rm -rf %{buildroot}/%{libsubdir}/install-tools +find %{buildroot}/ -name "*.la" -delete + +%{!?cross: +ln -s gcc %{buildroot}%{_bindir}/cc +mv %{buildroot}%{libsubdir}/libstdc++.so*-gdb.py %{buildroot}%{_datadir}/gcc-%{version}/python/libstdcxx/ + +# legacy preprocessor +mkdir -p %{buildroot}/lib +ln -s %{_bindir}/cpp %{buildroot}/lib/cpp + +# 32-bit libgcc in multilib configuration +%ifarch x86_64 +mv %{buildroot}%{_prefix}/lib/libgcc_s.so* %{buildroot}%{libsubdir}/32/ +%endif + +# move libraries to libdir +for lib in asan atomic gfortran gomp cc1 itm lsan quadmath stdc++ supc++ tsan ubsan +do + [ -e %{buildroot}%{libsubdir}/lib$lib.a ] && mv %{buildroot}%{libsubdir}/lib$lib.a %{buildroot}%{libdir}/ + [ -e %{buildroot}%{libsubdir}/lib$lib.so ] && mv %{buildroot}%{libsubdir}/lib$lib.so* %{buildroot}%{libdir}/ +done +} + +%{?cross: +rm -rf %{buildroot}/%{libsubdir}/include-fixed +rm -rf %{buildroot}/%{libsubdir}/include +} + +%{!?cross: +cd ../ +tar -czf libsanitizer.tar.bz libsanitizer +mkdir -p %{buildroot}/src +mv -v libsanitizer.tar.bz %{buildroot}/src +} + +%files +%manifest gcc.manifest +%defattr(-,root,root) +%{?cross: +%{_bindir}/* +%{libsubdir}/* +} +%{!?cross: +%{_bindir}/gcc +%{_bindir}/cc +%{_bindir}/gcov +%{_bindir}/gcov-dump +%{_bindir}/gcov-tool +%{_bindir}/gcc-ar +%{_bindir}/gcc-nm +%{_bindir}/gcc-ranlib +%{_bindir}/lto-dump +%{_bindir}/%{target_arch}-gcc +%{_bindir}/%{target_arch}-gcc-%{version} +%{_bindir}/%{target_arch}-gcc-ar +%{_bindir}/%{target_arch}-gcc-nm +%{_bindir}/%{target_arch}-gcc-ranlib +%{libsubdir}/collect2 +%{libsubdir}/lto1 +%{libsubdir}/lto-wrapper +%{libsubdir}/liblto_plugin.so* +%{libsubdir}/g++-mapper-server +%{libsubdir}/include-fixed/* +%{libsubdir}/include/*.h +%{libsubdir}/*.so +%{libsubdir}/*.o +%{libsubdir}/*.spec +%{libdir}/*.so +%{libsubdir}/include/sanitizer/* +%ifarch %asan_arch +%exclude %{libdir}/libasan.so +%endif +%ifarch %lsan_arch +%exclude %{libdir}/liblsan.so +%endif +%ifarch %tsan_arch +%exclude %{libdir}/libtsan.so +%endif + +%files c++ +%defattr(-,root,root) +%{libsubdir}/cc1plus +%{_bindir}/g++ +%{_bindir}/c++ +%{_bindir}/%{target_arch}-g++ +%{_bindir}/%{target_arch}-c++ + +%files -n libstdc++ +%manifest gcc.manifest +%license COPYING3 COPYING.RUNTIME +%defattr(-,root,root) +%{libdir}/libstdc++.so.* + +%files -n libstdc++-devel +%defattr(-,root,root) +%{libdir}/libstdc++.so +%{libdir}/libstdc++.a +%{libdir}/libsupc++.a +%{libsubdir}/include/c++/* +%{libsubdir}/libstdc++fs.a +%{libsubdir}/libstdc++exp.a +%{_datadir}/gcc-%{version}/python/libstdcxx/* +%ifarch x86_64 +%{libsubdir}/32/libstdc++.a +%{libsubdir}/32/libsupc++.a +%{libsubdir}/32/libstdc++fs.a +%{libsubdir}/32/libstdc++exp.a +%endif + +%files -n libgcc +%manifest gcc.manifest +%license COPYING3 COPYING.RUNTIME +%defattr(-,root,root) +%{libdir}/libgcc_s.so.* +%{libsubdir}/libgcc.a +%{libsubdir}/libgcc_eh.a +%{libsubdir}/libgcov.a + +%files -n libgomp +%manifest gcc.manifest +%license COPYING3 COPYING.RUNTIME +%defattr(-,root,root) +%{libdir}/libgomp.so.* + +%files -n libcc1 +%manifest gcc.manifest +%defattr(-,root,root) +%{libdir}/libcc1.so.* + +%ifarch %asan_arch +%files -n libasan +%manifest gcc.manifest +%license libsanitizer/LICENSE.TXT +%defattr(-,root,root) +%{libdir}/libasan.so* +%endif + +%ifarch %hwasan_arch +%files -n libhwasan +%manifest gcc.manifest +%license libsanitizer/LICENSE.TXT +%defattr(-,root,root) +%{libsubdir}/libhwasan.so* +%endif + +%ifarch %lsan_arch +%files -n liblsan +%manifest gcc.manifest +%license libsanitizer/LICENSE.TXT +%defattr(-,root,root) +%{libdir}/liblsan.so* +%endif + +%ifarch %tsan_arch +%files -n libtsan +%manifest gcc.manifest +%license libsanitizer/LICENSE.TXT +%defattr(-,root,root) +%{libdir}/libtsan.so* +%endif + +%ifarch %atomic_arch +%files -n libatomic +%manifest gcc.manifest +%license COPYING3 COPYING.RUNTIME +%defattr(-,root,root) +%{libdir}/libatomic.so.* +%endif + +%ifarch %itm_arch +%files -n libitm +%manifest gcc.manifest +%license COPYING3 COPYING.RUNTIME +%defattr(-,root,root) +%{libdir}/libitm.so.* +%endif + +%ifarch %ubsan_arch +%files -n libubsan +%manifest gcc.manifest +%license libsanitizer/LICENSE.TXT +%defattr(-,root,root) +%{libdir}/libubsan.so.* +%endif + +%files fortran +%defattr(-,root,root) +%dir %{libsubdir}/finclude +%{_bindir}/gfortran +%{_bindir}/%{target_arch}-gfortran +%{libsubdir}/f951 +%{libsubdir}/finclude/* +%{libdir}/libgfortran.a +%{libdir}/libgfortran.so +%{libsubdir}/libgfortran.spec +%{libsubdir}/libcaf_single.a +%ifarch %quadmath_arch +%{libdir}/libquadmath.a +%{libdir}/libquadmath.so +%endif + +%files -n libgfortran +%defattr(-,root,root) +%{libdir}/libgfortran.so.* + +%ifarch %quadmath_arch +%files -n libquadmath +%manifest gcc.manifest +%license COPYING.LIB +%defattr(-,root,root) +%{libdir}/libquadmath.so.* +%{libdir}/libquadmath.a +%endif + +%files -n cpp +%defattr(-,root,root) +%{_bindir}/cpp +%{libsubdir}/cc1 +/lib/cpp + +%files plugin-devel +%defattr(-,root,root) +%{libsubdir}/plugin/* + +%ifarch x86_64 +%files -n gcc-32bit +%defattr(-,root,root) +%{libsubdir}/32/*.a +%{libsubdir}/32/*.so +%{libsubdir}/32/*.o +%{libsubdir}/32/*.spec + +%ifarch %asan_arch +%files -n libasan-32bit +%manifest gcc.manifest +%license libsanitizer/LICENSE.TXT +%defattr(-,root,root) +%{libsubdir}/32/libasan.so.* +%endif + +%ifarch %atomic_arch +%files -n libatomic-32bit +%manifest gcc.manifest +%license COPYING3 COPYING.RUNTIME +%defattr(-,root,root) +%{libsubdir}/32/libatomic.so.* +%endif + +%files -n libgcc-32bit +%manifest gcc.manifest +%license COPYING3 COPYING.RUNTIME +%defattr(-,root,root) +%{libsubdir}/32/libgcc_s.so.* +%{libsubdir}/32/libgcc.a +%{libsubdir}/32/libgcc_eh.a +%{libsubdir}/32/libgcov.a + +%files -n libgomp-32bit +%manifest gcc.manifest +%license COPYING3 COPYING.RUNTIME +%defattr(-,root,root) +%{libsubdir}/32/libgomp.so.* + +%ifarch %itm_arch +%files -n libitm-32bit +%license COPYING3 COPYING.RUNTIME +%defattr(-,root,root) +%{libsubdir}/32/libitm.so.* +%endif + +%files -n libgfortran-32bit +%defattr(-,root,root) +%dir %{libsubdir}/32/finclude +%{libsubdir}/32/libgfortran.so.* +%{libsubdir}/32/finclude/* + +%ifarch %quadmath_arch +%files -n libquadmath-32bit +%license COPYING.LIB +%defattr(-,root,root) +%{libsubdir}/32/libquadmath.so.* +%{libsubdir}/32/libquadmath.a +%endif + +%ifarch %ubsan_arch +%files -n libubsan-32bit +%manifest gcc.manifest +%license libsanitizer/LICENSE.TXT +%defattr(-,root,root) +%{libsubdir}/32/libubsan.so.* +%endif + +%files -n libstdc++-32bit +%manifest gcc.manifest +%license COPYING3 COPYING.RUNTIME +%defattr(-,root,root) +%{libsubdir}/32/libstdc++.so.* +%exclude %{libsubdir}/32/libstdc++.so.*-gdb.py + +%files -n libstdc++-devel-32bit +%defattr(-,root,root) +%{libsubdir}/32/libstdc++.so.*-gdb.py +%endif + +%files -n sanitizer-sources +%defattr(-,root,root,-) +/src/libsanitizer.tar.bz +} + +%{!?cross: +%files devel-static +%manifest gcc.manifest +%license COPYING.LIB +%defattr(-,root,root) +%{libdir}/libgomp.a +%ifarch %itm_arch +%{libdir}/libitm.a +%endif +%ifarch %asan_arch +%{libdir}/libasan.a +%endif +%ifarch %hwasan_arch +%{libsubdir}/libhwasan.a +%endif +%ifarch %lsan_arch +%{libdir}/liblsan.a +%endif +%ifarch %ubsan_arch +%{libdir}/libubsan.a +%endif +%ifarch %tsan_arch +%{libdir}/libtsan.a +%endif +%{libdir}/libatomic.a +%{libsubdir}/libcaf_single.a +%ifarch %x86_64 +%{libsubdir}/32/libgomp.a +%ifarch %itm_arch +%{libsubdir}/32/libitm.a +%endif +%ifarch %asan_arch +%{libsubdir}/32/libasan.a +%endif +%ifarch %ubsan_arch +%{libsubdir}/32/libubsan.a +%endif +%{libsubdir}/32/libatomic.a +%{libsubdir}/32/libcaf_single.a +%endif +} + +%{?gcc_run_tests: +%files testresults +%defattr(-,root,root) +%doc testresults/test_summary.txt +%doc testresults/ +} + +%{?gcc_dump_configure: +%files configure-dump +%manifest gcc.manifest +%{_datadir}/gcc-%{version}-%{release}-%_project-%_repository.db +} + +%changelog diff --git a/packaging/gcc.spec b/packaging/gcc.spec index a40e0cd..7708773 100644 --- a/packaging/gcc.spec +++ b/packaging/gcc.spec @@ -61,12 +61,12 @@ %define quadmath_arch %ix86 x86_64 ia64 %define tsan_arch x86_64 aarch64 -%define asan_arch x86_64 %ix86 ppc ppc64 %sparc %arm aarch64 -%define itm_arch x86_64 %ix86 %arm ppc ppc64 ppc64le s390 s390x %sparc aarch64 -%define atomic_arch x86_64 %ix86 %arm aarch64 ppc ppc64 ppc64le s390 s390x %sparc m68k +%define asan_arch x86_64 %ix86 ppc ppc64 %sparc %arm aarch64 riscv64 +%define itm_arch x86_64 %ix86 %arm ppc ppc64 ppc64le s390 s390x %sparc aarch64 riscv64 +%define atomic_arch x86_64 %ix86 %arm aarch64 ppc ppc64 ppc64le s390 s390x %sparc m68k riscv64 %define lsan_arch x86_64 aarch64 %define hwasan_arch aarch64 x86_64 -%define ubsan_arch x86_64 %ix86 ppc ppc64 %arm aarch64 +%define ubsan_arch x86_64 %ix86 ppc ppc64 %arm aarch64 riscv64 %ifarch armv7l %define ARCH armv7l @@ -85,13 +85,16 @@ %ifarch aarch64 %define ARCH aarch64 %endif +%ifarch riscv64 +%define ARCH riscv64 +%endif %define host_arch %{ARCH}-tizen-linux-gnu%{?ABI} %define target_cpu %{?cross}%{!?cross:%{ARCH}} %define target_abi %{?cross:%{?armv7l:eabi}%{?armv7hl:eabihf}}%{!?cross:%{?ABI}} %define target_arch %{target_cpu}-tizen-linux-gnu%{?target_abi} -%define libdir %{!?cross:%{_libdir}}%{?cross:%{_prefix}/lib%{?aarch64:64}} +%define libdir %{!?cross:%{_libdir}}%{?cross:%{_prefix}/lib%{?aarch64:64}%{?riscv64:64}} %define libsubdir %{libdir}/gcc/%{target_arch}/%{version} Name: gcc%{?cross:-%{cross}} @@ -709,6 +712,9 @@ tar xf %{SOURCE12} ln -sf mpc-1.3.1 mpc tar xf %{SOURCE13} ln -sf isl-0.22 isl +pushd isl +autoreconf -vfi +popd %global gcc_datestamp `sed -e 's/^.*-//g' %{_builddir}/gcc-%{version}/gcc/DATESTAMP` @@ -813,6 +819,10 @@ TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \ --with-arch=armv8-a \ --disable-sjlj-exceptions \ %endif +%ifarch riscv64 + --with-arch=rv64gc \ + --with-abi=lp64d \ +%endif %ifarch %ix86 --with-arch-32=i586 \ --with-tune=generic \ @@ -842,6 +852,10 @@ TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \ --with-arch=armv8-a \ --disable-sjlj-exceptions \ } \ +%{?riscv64: \ + --with-arch=rv64gc \ + --with-abi=lp64d \ +} \ --disable-libgcc \ --disable-libgfortran \ --disable-libquadmath \ diff --git a/packaging/pre_checkin.sh b/packaging/pre_checkin.sh index 629435b..4d97a87 100755 --- a/packaging/pre_checkin.sh +++ b/packaging/pre_checkin.sh @@ -1,7 +1,7 @@ #!/bin/bash # the script takes gcc.spec and creates the gcc-* packages -for arch in armv7l armv7hl aarch64; do +for arch in armv7l armv7hl aarch64 riscv64; do echo -n "Building package for $arch --> gcc-$arch ..." -- 2.7.4