# # spec file for package gcc # # Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # # 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.opensuse.org/ # Name: gcc %define separate_bi32 0 %define separate_bi64 0 %ifarch ppc %define separate_bi64 1 %endif %ifarch x86_64 s390x ppc64 %define separate_bi32 1 %endif # Ada currently fails to build on a few platforms, enable it only # on those that work # Note that AdaCore only supports %ix86, x86_64 and ia64 %ifarch %ix86 x86_64 ppc ppc64 ppc64le s390 s390x ia64 aarch64 %define build_ada 1 %else # alpha hppa arm %define build_ada 0 %endif Url: http://gcc.gnu.org/ %define gcc_version 8 %define gcc_suffix 8 Version: 8 Release: 0 Summary: The system GNU C Compiler License: GPL-3.0+ Group: Development/Languages/C and C++ Provides: c_compiler Obsoletes: gcc-ar Obsoletes: gcc-mudflap Obsoletes: gcc-nm Obsoletes: gcc-ranlib Requires: cpp Requires: gcc%{gcc_version} BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: gcc%{gcc_version} Source: cpp %description The system GNU C Compiler. %package -n gcc-32bit Summary: The system GNU C Compiler License: GPL-3.0+ Group: Development/Languages/C and C++ Requires: gcc = %{version} Requires: gcc%{gcc_version}-32bit %description -n gcc-32bit The system GNU C Compiler. %package -n gcc-64bit Summary: The system GNU C Compiler License: GPL-3.0+ Group: Development/Languages/C and C++ Requires: gcc = %{version} Requires: gcc%{gcc_version}-64bit %description -n gcc-64bit The system GNU C Compiler. %package -n cpp Summary: The system GNU Preprocessor License: GPL-3.0+ Group: Development/Languages/C and C++ Requires: cpp%{gcc_version} %description -n cpp The system GNU Preprocessor. %package -n gcc-devel Summary: The system GNU C Compiler Plugin development files License: GPL-3.0+ Group: Development/Languages/C and C++ Requires: gcc = %{version} Requires: gcc%{gcc_version}-devel %description -n gcc-devel The system GNU C Compiler Plugin development files. %package -n gcc-locale Summary: The system GNU Compiler locale files License: GPL-3.0+ Group: Development/Languages/C and C++ Requires: gcc%{gcc_version}-locale %description -n gcc-locale The system GNU Compiler locale files. %package -n gcc-info Summary: The system GNU Compiler documentation License: GFDL-1.2 Group: Development/Languages/C and C++ PreReq: %{install_info_prereq} PreReq: gcc%{gcc_version}-info %description -n gcc-info The system GNU Compiler documentation. # install / update the entries %post -n gcc-info %install_info --info-dir=%{_infodir} --name=cpp --description='The GNU C preprocessor.' %{_infodir}/cpp.info.gz %install_info --info-dir=%{_infodir} --name=gcc --description='The GNU Compiler Collection.' %{_infodir}/gcc.info.gz %install_info --info-dir=%{_infodir} --name=g++ --description='The GNU C++ compiler.' %{_infodir}/gcc.info.gz %install_info --info-dir=%{_infodir} --name=gfortran --description='The GNU Fortran compiler.' %{_infodir}/gfortran.info.gz # if we uninstall, clean the entries %preun -n gcc-info if [ "$1" -eq "0" ] ; then %install_info --delete --info-dir=%{_infodir} --name=cpp %{_infodir}/cpp.info.gz %install_info --delete --info-dir=%{_infodir} --name=gcc %{_infodir}/gcc.info.gz %install_info --delete --info-dir=%{_infodir} --name=g++ %{_infodir}/gcc.info.gz %install_info --delete --info-dir=%{_infodir} --name=gfortran %{_infodir}/gfortran.info.gz fi %package -n gcc-c++ Summary: The system GNU C++ Compiler License: GPL-3.0+ Group: Development/Languages/C and C++ Provides: c++_compiler Requires: gcc = %{version} Requires: gcc%{gcc_version}-c++ %description -n gcc-c++ The system GNU C++ Compiler. %package -n gcc-c++-32bit Summary: The system GNU C++ Compiler License: GPL-3.0+ Group: Development/Languages/C and C++ Requires: gcc%{gcc_version}-c++-32bit Requires: gcc-32bit = %{version} Requires: gcc-c++ = %{version} %description -n gcc-c++-32bit The system GNU C++ Compiler 32 bit support. %package -n gcc-c++-64bit Summary: The system GNU C++ Compiler License: GPL-3.0+ Group: Development/Languages/C and C++ Requires: gcc%{gcc_version}-c++-64bit Requires: gcc-64bit = %{version} Requires: gcc-c++ = %{version} %description -n gcc-c++-64bit The system GNU C++ Compiler 64 bit support. %package -n libstdc++-devel Summary: The system GNU C++ development files License: GPL-3.0-with-GCC-exception Group: System/Libraries Requires: libstdc++6-devel-gcc%{gcc_version} %description -n libstdc++-devel The system GNU C++ development files. %package -n libstdc++-devel-32bit Summary: The system GNU C++ 32bit development files License: GPL-3.0-with-GCC-exception Group: System/Libraries Requires: libstdc++-devel Requires: libstdc++6-devel-gcc%{gcc_version}-32bit %description -n libstdc++-devel-32bit The system GNU C++ 32bit development files. %package -n libstdc++-devel-64bit Summary: The system GNU C++ 64bit development files License: GPL-3.0-with-GCC-exception Group: System/Libraries Requires: libstdc++-devel Requires: libstdc++6-devel-gcc%{gcc_version}-64bit %description -n libstdc++-devel-64bit The system GNU C++ 64bit development files. %package -n gcc-fortran Summary: The system GNU Fortran Compiler License: GPL-3.0+ Group: Development/Languages/Fortran Requires: gcc = %{version} Requires: gcc%{gcc_version}-fortran %description -n gcc-fortran The system GNU Fortran Compiler. %package -n gcc-fortran-32bit Summary: The system GNU Fortran Compiler License: GPL-3.0+ Group: Development/Languages/Fortran Requires: gcc%{gcc_version}-fortran-32bit Requires: gcc-fortran = %{version} %description -n gcc-fortran-32bit The system GNU Fortran Compiler 32 bit support. %package -n gcc-fortran-64bit Summary: The system GNU Fortran Compiler License: GPL-3.0+ Group: Development/Languages/Fortran Requires: gcc%{gcc_version}-fortran-64bit Requires: gcc-fortran = %{version} %description -n gcc-fortran-64bit The system GNU Fortran Compiler 64 bit support. %package -n gcc-objc Summary: The system GNU Objective C Compiler License: GPL-3.0+ Group: Development/Languages/Other Requires: gcc = %{version} Requires: gcc%{gcc_version}-objc %ifarch ppc64 Obsoletes: gcc-objc-64bit %endif %description -n gcc-objc The system GNU Objective C Compiler. %package -n gcc-objc-32bit Summary: The system GNU Objective C Compiler License: GPL-3.0+ Group: Development/Languages/Other Requires: gcc%{gcc_version}-objc-32bit Requires: gcc-objc = %{version} %description -n gcc-objc-32bit The system GNU Objective C Compiler 32 bit support. %package -n gcc-objc-64bit Summary: The system GNU Objective C Compiler License: GPL-3.0+ Group: Development/Languages/Other Requires: gcc%{gcc_version}-objc-64bit Requires: gcc-objc = %{version} %description -n gcc-objc-64bit The system GNU Objective C Compiler 64 bit support. %package -n gcc-obj-c++ Summary: The system GNU Objective C++ Compiler License: GPL-3.0+ Group: Development/Languages/Other Requires: gcc%{gcc_version}-obj-c++ Requires: gcc-objc = %{version} %description -n gcc-obj-c++ The system GNU Objective C++ Compiler. %package -n gcc-PIE Summary: A default configuration to build all binaries in PIE mode License: GPL-3.0+ Group: Development/Languages/Other Requires: gcc %description -n gcc-PIE This package contains a configuration file (spec) that changes the compilers default setting to build all ELF binaries in the Position Independend Executable (PIE) variant. This enables better address space randomization (ASLR). %package -n gcc-ada Summary: The system GNU Ada Compiler License: GPL-3.0+ Group: Development/Languages/C and C++ Requires: gcc = %{version} Requires: gcc%{gcc_version}-ada %description -n gcc-ada The system GNU Ada Compiler. %package -n gcc-ada-32bit Summary: The system GNU Ada Compiler License: GPL-3.0+ Group: Development/Languages/C and C++ Requires: gcc%{gcc_version}-ada-32bit Requires: gcc-ada = %{version} %description -n gcc-ada-32bit The system GNU Ada Compiler 32 bit support. %package -n gcc-ada-64bit Summary: The system GNU Ada Compiler License: GPL-3.0+ Group: Development/Languages/C and C++ Requires: gcc%{gcc_version}-ada-64bit Requires: gcc-ada = %{version} %description -n gcc-ada-64bit The system GNU Ada Compiler 64 bit support. %package -n gcc-go Summary: The system GNU Go Compiler License: GPL-3.0+ Group: Development/Languages/C and C++ Requires: gcc = %{version} Requires: gcc%{gcc_version}-go Requires(post): update-alternatives Requires(postun): update-alternatives %description -n gcc-go The system GNU Go Compiler. %package -n gcc-go-32bit Summary: The system GNU Go Compiler License: GPL-3.0+ Group: Development/Languages/C and C++ Requires: gcc%{gcc_version}-go-32bit Requires: gcc-go = %{version} %description -n gcc-go-32bit The system GNU Go Compiler 32bit support. %package -n gcc-go-64bit Summary: The system GNU Go Compiler License: GPL-3.0+ Group: Development/Languages/C and C++ Requires: gcc%{gcc_version}-go-64bit Requires: gcc-go = %{version} %description -n gcc-go-64bit The system GNU Go Compiler 64bit support. %prep %install mkdir -p $RPM_BUILD_ROOT/lib mkdir -p $RPM_BUILD_ROOT%{_prefix}/bin mkdir -p $RPM_BUILD_ROOT%{_mandir}/man1 mkdir -p $RPM_BUILD_ROOT%{_infodir} mkdir -p $RPM_BUILD_ROOT%{_prefix}/share/doc/packages/gcc-objc/ mkdir -p $RPM_BUILD_ROOT%{_prefix}/share/doc/packages/gcc-obj-c++/ # Link all the binaries for program in \ gcc gcov gcov-dump gcov-tool \ g++ \ cpp \ gfortran \ gccgo \ %if %{build_ada} gnat gnatbind gnatbl gnatchop gnatclean gnatfind gnatkr \ gnatlink gnatls gnatmake gnatname gnatprep gnatxref gprmake \ %endif gcc-ar gcc-nm gcc-ranlib \ ; do ln -sf $program-%{gcc_suffix} $RPM_BUILD_ROOT%{_prefix}/bin/$program done # For go and gofmt use alternatives since they are shared with golang mkdir -p %{buildroot}%{_sysconfdir}/alternatives ln -sf %{_sysconfdir}/alternatives/go %{buildroot}%{_bindir}/go ln -sf %{_sysconfdir}/alternatives/gofmt %{buildroot}%{_bindir}/gofmt # Link section 1 manpages for man1 in \ gcc gcov gcov-dump gcov-tool \ g++ \ cpp \ gfortran \ gccgo \ ; do ln -sf $man1-%{gcc_suffix}.1.gz $RPM_BUILD_ROOT%{_mandir}/man1/$man1.1.gz done # Link info pages for info in cpp gcc gfortran ; do ln -sf $info-%{gcc_suffix}.info.gz $RPM_BUILD_ROOT%{_infodir}/$info.info.gz done # Provide the traditional /lib/cpp that only handles C cp $RPM_SOURCE_DIR/cpp $RPM_BUILD_ROOT/lib/ chmod 755 $RPM_BUILD_ROOT/lib/cpp # Provide extra symlinks ln -sf g++-%{gcc_suffix} $RPM_BUILD_ROOT%{_prefix}/bin/c++ ln -sf gcc-%{gcc_suffix} $RPM_BUILD_ROOT%{_prefix}/bin/cc ln -sf g++-%{gcc_suffix}.1.gz $RPM_BUILD_ROOT%{_mandir}/man1/c++.1.gz ln -sf gcc-%{gcc_suffix}.1.gz $RPM_BUILD_ROOT%{_mandir}/man1/cc.1.gz # Install the LTO linker plugin so it is auto-loaded by BFD mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib/bfd-plugins ln -s `gcc-%{gcc_suffix} -print-file-name=liblto_plugin.so.0.0.0` $RPM_BUILD_ROOT%{_prefix}/lib/bfd-plugins/liblto_plugin.so.0.0.0 dir=`gcc-%{gcc_suffix} -print-prog-name=cc1` dir=${dir%/cc1} mkdir -p $RPM_BUILD_ROOT/$dir cat > $RPM_BUILD_ROOT/$dir/defaults.spec <