# # spec file for package gcc # # Copyright (c) 2016 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 ia64 %define build_ada 1 %else # alpha s390x hppa arm %define build_ada 0 %endif Url: http://gcc.gnu.org/ %define gcc_version 5 %define gcc_suffix 5 Version: 5 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 Source99: README.packaging %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-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}/g++.info.gz %install_info --info-dir=%{_infodir} --name=gcj --description='Ahead-of-time compiler for the Java language' %{_infodir}/gcj.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}/g++.info.gz %install_info --delete --info-dir=%{_infodir} --name=gcj %{_infodir}/gcj.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++6-devel-gcc%{gcc_version} %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++6-devel-gcc%{gcc_version} %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-java Summary: The system GNU Java Compiler License: GPL-3.0+ Group: Development/Languages/Java Requires: gcc%{gcc_version}-java Requires: libgcj-devel = %{version} Recommends: gcc-gij = %{version} Requires: gcc = %{version} %description -n gcc-java The system GNU Java Compiler. %package -n libgcj-devel Summary: The system GNU Java development files. License: GPL-2.0-with-classpath-exception Group: Development/Libraries/Java Requires: libgcj-devel-gcc%{gcc_version} %description -n libgcj-devel The system GNU Java development files. %package -n gcc-gij Summary: The system GNU Java bytecode interpreter License: GPL-2.0+ Group: Development/Languages/Java Requires: gcc%{gcc_version}-gij %description -n gcc-gij The system GNU Java bytecode interpreter. %package -n gcc-gij-32bit Summary: The system GNU Java bytecode interpreter License: GPL-2.0+ Group: Development/Languages/Java Requires: gcc%{gcc_version}-gij-32bit %description -n gcc-gij-32bit The system GNU Java bytecode interpreter as 32 bit application. %package -n gcc-gij-64bit Summary: The system GNU Java bytecode interpreter License: GPL-2.0+ Group: Development/Languages/Java Requires: gcc%{gcc_version}-gij-64bit %description -n gcc-gij-64bit The system GNU Java bytecode interpreter as 64 bit application. %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 %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 %build echo "This is a dummy package to provide a dependency on the system compiler." > README %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 \ g++ \ cpp \ gcj gcjh gcj-dbtool jcf-dump jv-convert gc-analyze \ gij \ gappletviewer \ gjar gjarsigner gjavah gkeytool gnative2ascii gorbd grmic \ grmid grmiregistry gserialver gtnameserv \ %if %{separate_bi32} grmiregistry32 \ gij32 \ %endif %if %{separate_bi64} grmiregistry64 \ gij64 \ %endif gfortran \ %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 # Link section 1 manpages for man1 in \ gcc gcov \ g++ \ cpp \ gfortran \ gcj gcjh gcj-dbtool jcf-dump jv-convert gc-analyze \ gij \ gappletviewer gjar gjarsigner gjavah \ gkeytool gnative2ascii gorbd grmic grmid grmiregistry gserialver \ gtnameserv \ ; 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 g++ gcj 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 <