Mageia Bugzilla – Attachment 14533 Details for
Bug 33215
gcc-PIE - A default configuration to build all binaries in PIE mode
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
New Account
|
Forgot Password
Proposal spec file
gcc.spec (text/x-rpm-spec), 18.45 KB, created by
Kristoffer Grundström
on 2024-05-15 05:10:15 CEST
(
hide
)
Description:
Proposal spec file
Filename:
MIME Type:
Creator:
Kristoffer Grundström
Created:
2024-05-15 05:10:15 CEST
Size:
18.45 KB
patch
obsolete
>%define libname %mklibname %{name} %{major} >%define develname %mklibname %{name} -d > >%define flavor %{nil} > >%if "%{flavor}" == "build" >%define gccsuffix -build >%define gcc_version 12 >%define gcc_suffix 12 >%else >%define gccsuffix %{nil} >%define gcc_version 12 >%define gcc_suffix 12 >%endif > >Name: gcc%{gccsuffix} >%define separate_bi32 0 >%define separate_bi64 0 >%if 0%{!?disable_32bit:1} >%ifarch ppc sparcv9 >%define separate_bi64 1 >%endif >%ifarch x86_64 s390x ppc64 sparc64 >%define separate_bi32 1 >%endif >%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 riscv64 >%define build_ada 1 >%else ># alpha hppa arm >%define build_ada 0 >%endif >%ifarch x86_64 %ix86 %arm aarch64 riscv64 s390x >%define build_d 1 >%else >%define build_d 0 >%endif >%define libgccjit_sover 0 >URL: http://gcc.gnu.org/ >Version: %{gcc_version} >Release: 1%{?dist} >Summary: The system GNU C Compiler >License: GPL-3.0-or-later >Group: Development/Other >Provides: c_compiler = %{version} >Requires: cpp%{gccsuffix} >Requires: gcc%{gcc_version} >BuildRequires: gcc%{gcc_version} >BuildRequires: gcc%{gcc_version}-c++ >BuildRequires: gcc%{gcc_version}-fortran >BuildRequires: gcc%{gcc_version}-go >%if %{build_ada} >BuildRequires: gcc%{gcc_version}-ada >%endif >%if %{build_d} >BuildRequires: gcc%{gcc_version}-d >%endif >Source: cpp >%if "%{gccsuffix}" != "" && 0%{?is_opensuse} >ExclusiveArch: do-not-build >%endif > >%description -n gcc%{gccsuffix} >The system GNU C Compiler. > >%package -n gcc%{gccsuffix}-32bit >Summary: The system GNU C Compiler >License: GPL-3.0-or-later >Group: Development/Other >Requires: gcc%{gcc_version}-32bit >Requires: gcc%{gccsuffix} = %{version} > >%description -n gcc%{gccsuffix}-32bit >The system GNU C Compiler. > >%package -n gcc%{gccsuffix}-64bit >Summary: The system GNU C Compiler >License: GPL-3.0-or-later >Group: Development/Other >Requires: gcc%{gcc_version}-64bit >Requires: gcc%{gccsuffix} = %{version} > >%description -n gcc%{gccsuffix}-64bit >The system GNU C Compiler. > >%package -n cpp%{gccsuffix} >Summary: The system GNU Preprocessor >License: GPL-3.0-or-later >Group: Development/Other >Requires: cpp%{gcc_version} ># Only one of the symlink packages can be installed at the same time >Provides: cpp = %{version}-%{release} >Conflicts: cpp > >%description -n cpp%{gccsuffix} >The system GNU Preprocessor. > >%package -n gcc%{gccsuffix}-devel >Summary: The system GNU C Compiler Plugin development files >License: GPL-3.0-or-later >Group: Development/Other >Requires: gcc%{gcc_version}-devel >Requires: gcc%{gccsuffix} = %{version} > >%description -n gcc%{gccsuffix}-devel >The system GNU C Compiler Plugin development files. > >%package -n gcc%{gccsuffix}-locale >Summary: The system GNU Compiler locale files >License: GPL-3.0-or-later >Group: Development/Other >Requires: gcc%{gcc_version}-locale > >%description -n gcc%{gccsuffix}-locale >The system GNU Compiler locale files. > >%package -n gcc%{gccsuffix}-info >Summary: The system GNU Compiler documentation >License: GFDL-1.2-only >Group: Development/Other >#PreReq: %%{install_info_prereq} >#PreReq: gcc%%{gcc_version}-info > >%description -n gcc%{gccsuffix}-info >The system GNU Compiler documentation. > ># install / update the entries > >%post -n gcc%{gccsuffix}-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%{gccsuffix}-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%{gccsuffix}-c++ >Summary: The system GNU C++ Compiler >License: GPL-3.0-or-later >Group: Development/Other >Provides: c++_compiler = %{version} >Requires: gcc%{gcc_version}-c++ >Requires: gcc%{gccsuffix} = %{version} > >%description -n gcc%{gccsuffix}-c++ >The system GNU C++ Compiler. > >%package -n gcc%{gccsuffix}-c++-32bit >Summary: The system GNU C++ Compiler >License: GPL-3.0-or-later >Group: Development/Other >Requires: gcc%{gcc_version}-c++-32bit >Requires: gcc%{gccsuffix}-32bit = %{version} >Requires: gcc%{gccsuffix}-c++ = %{version} > >%description -n gcc%{gccsuffix}-c++-32bit >The system GNU C++ Compiler 32 bit support. > >%package -n gcc%{gccsuffix}-c++-64bit >Summary: The system GNU C++ Compiler >License: GPL-3.0-or-later >Group: Development/Other >Requires: gcc%{gcc_version}-c++-64bit >Requires: gcc%{gccsuffix}-64bit = %{version} >Requires: gcc%{gccsuffix}-c++ = %{version} > >%description -n gcc%{gccsuffix}-c++-64bit >The system GNU C++ Compiler 64 bit support. > >%package -n libstdc++%{gccsuffix}-devel >Summary: The system GNU C++ development files >License: GPL-3.0-only WITH GCC-exception-3.1 >Group: System/Libraries >Requires: libstdc++6-devel-gcc%{gcc_version} > >%description -n libstdc++%{gccsuffix}-devel >The system GNU C++ development files. > >%package -n libstdc++%{gccsuffix}-devel-32bit >Summary: The system GNU C++ 32bit development files >License: GPL-3.0-only WITH GCC-exception-3.1 >Group: System/Libraries >Requires: libstdc++%{gccsuffix}-devel >Requires: libstdc++6-devel-gcc%{gcc_version}-32bit > >%description -n libstdc++%{gccsuffix}-devel-32bit >The system GNU C++ 32bit development files. > >%package -n libstdc++%{gccsuffix}-devel-64bit >Summary: The system GNU C++ 64bit development files >License: GPL-3.0-only WITH GCC-exception-3.1 >Group: System/Libraries >Requires: libstdc++%{gccsuffix}-devel >Requires: libstdc++6-devel-gcc%{gcc_version}-64bit > >%description -n libstdc++%{gccsuffix}-devel-64bit >The system GNU C++ 64bit development files. > >%package -n gcc%{gccsuffix}-fortran >Summary: The system GNU Fortran Compiler >License: GPL-3.0-or-later >Group: Development/Other >Requires: gcc%{gcc_version}-fortran >Requires: gcc%{gccsuffix} = %{version} > >%description -n gcc%{gccsuffix}-fortran >The system GNU Fortran Compiler. > >%package -n gcc%{gccsuffix}-fortran-32bit >Summary: The system GNU Fortran Compiler >License: GPL-3.0-or-later >Group: Development/Other >Requires: gcc%{gcc_version}-fortran-32bit >Requires: gcc%{gccsuffix}-fortran = %{version} > >%description -n gcc%{gccsuffix}-fortran-32bit >The system GNU Fortran Compiler 32 bit support. > >%package -n gcc%{gccsuffix}-fortran-64bit >Summary: The system GNU Fortran Compiler >License: GPL-3.0-or-later >Group: Development/Other >Requires: gcc%{gcc_version}-fortran-64bit >Requires: gcc%{gccsuffix}-fortran = %{version} > >%description -n gcc%{gccsuffix}-fortran-64bit >The system GNU Fortran Compiler 64 bit support. > >%package -n gcc%{gccsuffix}-objc >Summary: The system GNU Objective C Compiler >License: GPL-3.0-or-later >Group: Development/Other >Requires: gcc%{gcc_version}-objc >Requires: gcc%{gccsuffix} = %{version} >%ifarch ppc64 >Obsoletes: gcc%{gccsuffix}-objc-64bit = <13 >%endif > >%description -n gcc%{gccsuffix}-objc >The system GNU Objective C Compiler. > >%package -n gcc%{gccsuffix}-objc-32bit >Summary: The system GNU Objective C Compiler >License: GPL-3.0-or-later >Group: Development/Other >Requires: gcc%{gcc_version}-objc-32bit >Requires: gcc%{gccsuffix}-objc = %{version} > >%description -n gcc%{gccsuffix}-objc-32bit >The system GNU Objective C Compiler 32 bit support. > >%package -n gcc%{gccsuffix}-objc-64bit >Summary: The system GNU Objective C Compiler >License: GPL-3.0-or-later >Group: Development/Other >Requires: gcc%{gcc_version}-objc-64bit >Requires: gcc%{gccsuffix}-objc = %{version} > >%description -n gcc%{gccsuffix}-objc-64bit >The system GNU Objective C Compiler 64 bit support. > >%package -n gcc%{gccsuffix}-obj-c++ >Summary: The system GNU Objective C++ Compiler >License: GPL-3.0-or-later >Group: Development/Other >Requires: gcc%{gcc_version}-obj-c++ >Requires: gcc%{gccsuffix}-objc = %{version} > >%description -n gcc%{gccsuffix}-obj-c++ >The system GNU Objective C++ Compiler. > >%package -n gcc%{gccsuffix}-PIE >Summary: A default configuration to build all binaries in PIE mode >License: GPL-3.0-or-later >Group: Development/Other >Requires: gcc%{gcc_version}-PIE > >%description -n gcc%{gccsuffix}-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%{gccsuffix}-ada >Summary: The system GNU Ada Compiler >License: GPL-3.0-or-later >Group: Development/Other >Requires: gcc%{gcc_version}-ada >Requires: gcc%{gccsuffix} = %{version} > >%description -n gcc%{gccsuffix}-ada >The system GNU Ada Compiler. > >%package -n gcc%{gccsuffix}-ada-32bit >Summary: The system GNU Ada Compiler >License: GPL-3.0-or-later >Group: Development/Other >Requires: gcc%{gcc_version}-ada-32bit >Requires: gcc%{gccsuffix}-ada = %{version} > >%description -n gcc%{gccsuffix}-ada-32bit >The system GNU Ada Compiler 32 bit support. > >%package -n gcc%{gccsuffix}-ada-64bit >Summary: The system GNU Ada Compiler >License: GPL-3.0-or-later >Group: Development/Other >Requires: gcc%{gcc_version}-ada-64bit >Requires: gcc%{gccsuffix}-ada = %{version} > >%description -n gcc%{gccsuffix}-ada-64bit >The system GNU Ada Compiler 64 bit support. > >%package -n gcc%{gccsuffix}-go >Summary: The system GNU Go Compiler >License: GPL-3.0-or-later >Group: Development/Other >Requires: gcc%{gcc_version}-go >Requires: gcc%{gccsuffix} = %{version} >Requires(post): update-alternatives >Requires(postun):update-alternatives > >%description -n gcc%{gccsuffix}-go >The system GNU Go Compiler. > >%package -n gcc%{gccsuffix}-go-32bit >Summary: The system GNU Go Compiler >License: GPL-3.0-or-later >Group: Development/Other >Requires: gcc%{gcc_version}-go-32bit >Requires: gcc%{gccsuffix}-go = %{version} > >%description -n gcc%{gccsuffix}-go-32bit >The system GNU Go Compiler 32bit support. > >%package -n gcc%{gccsuffix}-go-64bit >Summary: The system GNU Go Compiler >License: GPL-3.0-or-later >Group: Development/Other >Requires: gcc%{gcc_version}-go-64bit >Requires: gcc%{gccsuffix}-go = %{version} > >%description -n gcc%{gccsuffix}-go-64bit >The system GNU Go Compiler 64bit support. > >%package -n gcc%{gccsuffix}-d >Summary: The system GNU D Compiler >License: GPL-3.0-or-later >Group: Development/Other >Requires: gcc%{gcc_version}-d >Requires: gcc%{gccsuffix} = %{version} >Requires(post): update-alternatives >Requires(postun):update-alternatives > >%description -n gcc%{gccsuffix}-d >The system GNU D Compiler. > >%package -n gcc%{gccsuffix}-d-32bit >Summary: The system GNU D Compiler >License: GPL-3.0-or-later >Group: Development/Other >Requires: gcc%{gcc_version}-d-32bit >Requires: gcc%{gccsuffix}-d = %{version} > >%description -n gcc%{gccsuffix}-d-32bit >The system GNU D Compiler 32bit support. > >%package -n gcc%{gccsuffix}-d-64bit >Summary: The system GNU D Compiler >License: GPL-3.0-or-later >Group: Development/Other >Requires: gcc%{gcc_version}-d-64bit >Requires: gcc%{gccsuffix}-d = %{version} > >%description -n gcc%{gccsuffix}-d-64bit >The system GNU D Compiler 64bit support. > >%package -n libgccjit%{gccsuffix}-devel >Summary: Support for embedding GCC inside programs and libraries >License: GPL-3.0-or-later >Group: Development/Other >Requires: libgccjit%{libgccjit_sover}-devel-gcc%{gcc_version} > >%description -n libgccjit%{gccsuffix}-devel >Package contains header files and documentation for GCC JIT front-end. > >%prep >%{nil} > >%build >%{nil} > >%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 lto-dump \ > g++ \ > cpp \ > gfortran \ > gccgo \ >%if %{build_ada} > gnat gnatbind gnatchop gnatclean gnatkr \ > gnatlink gnatls gnatmake gnatname gnatprep \ >%endif >%if %{build_d} > gdc \ >%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 lto-dump \ > g++ \ > cpp \ > gfortran \ > gccgo \ >%if %{build_d} > gdc \ >%endif > ; 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 (as /usr/lib/cpp on usrmerged systems) ># that only handles C >mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib >cp $RPM_BUILD_ROOT/cpp $RPM_BUILD_ROOT%{_prefix}/lib/ >chmod 755 $RPM_BUILD_ROOT%{_prefix}/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%{_libdir}/bfd-plugins >ln -s `gcc-%{gcc_suffix} -print-file-name=liblto_plugin.so` $RPM_BUILD_ROOT%{_libdir}/bfd-plugins/liblto_plugin.so > >%post -n gcc%{gccsuffix}-go ># we don't want a BuildRequires on gccN-go but otherwise the install ># step of the build fails, so simply skip the script when gccN-go isn't there >if [ -f %{_bindir}/go-%{gcc_suffix} ] ; then >update-alternatives \ > --install %{_bindir}/go go %{_bindir}/go-%{gcc_suffix} 100 \ > --slave %{_bindir}/gofmt gofmt %{_bindir}/gofmt-%{gcc_suffix} >fi > >%postun -n gcc%{gccsuffix}-go >if [ $1 -eq 0 ] ; then > update-alternatives --remove go %{_bindir}/go-%{gcc_suffix} >fi > >%files -n gcc%{gccsuffix} >%{_prefix}/bin/gcc >%{_prefix}/bin/cc >%{_prefix}/bin/gcov >%{_prefix}/bin/gcov-dump >%{_prefix}/bin/gcov-tool >%{_prefix}/bin/lto-dump >%{_prefix}/bin/gcc-ar >%{_prefix}/bin/gcc-nm >%{_prefix}/bin/gcc-ranlib >%dir %{_libdir}/bfd-plugins >%{_libdir}/bfd-plugins/liblto_plugin.so >%doc %{_mandir}/man1/gcc.1.gz >%doc %{_mandir}/man1/cc.1.gz >%doc %{_mandir}/man1/gcov.1.gz >%doc %{_mandir}/man1/gcov-dump.1.gz >%doc %{_mandir}/man1/gcov-tool.1.gz >%doc %{_mandir}/man1/lto-dump.1.gz > >%files -n cpp%{gccsuffix} >%{_prefix}/lib/cpp >%{_prefix}/bin/cpp >%doc %{_mandir}/man1/cpp.1.gz > ># Plugins are only enabled for Tumbleweed >%if 0%{!?sle_version:1} >%files -n gcc%{gccsuffix}-devel ># empty - only for the dependency >%endif > >%files -n gcc%{gccsuffix}-c++ >%{_prefix}/bin/g++ >%{_prefix}/bin/c++ >%doc %{_mandir}/man1/g++.1.gz >%doc %{_mandir}/man1/c++.1.gz > >%files -n gcc%{gccsuffix}-fortran >%{_prefix}/bin/gfortran >%doc %{_mandir}/man1/gfortran.1.gz > >%files -n gcc%{gccsuffix}-objc ># empty - only for the dependency > >%files -n gcc%{gccsuffix}-obj-c++ ># empty - only for the dependency > >%files -n gcc%{gccsuffix}-PIE ># empty - only for the dependency > >%files -n gcc%{gccsuffix}-locale ># empty - only for the dependency > >%files -n gcc%{gccsuffix}-info >%{_infodir}/cpp.info.gz >%{_infodir}/gcc.info.gz >%{_infodir}/gfortran.info.gz > >%if %{build_ada} >%files -n gcc%{gccsuffix}-ada >%{_prefix}/bin/gnat >%{_prefix}/bin/gnatbind >%{_prefix}/bin/gnatchop >%{_prefix}/bin/gnatclean >%{_prefix}/bin/gnatkr >%{_prefix}/bin/gnatlink >%{_prefix}/bin/gnatls >%{_prefix}/bin/gnatmake >%{_prefix}/bin/gnatname >%{_prefix}/bin/gnatprep >%endif > >%files -n libstdc++%{gccsuffix}-devel ># empty - only for the dependency > >%files -n gcc%{gccsuffix}-go >%{_bindir}/gccgo >%{_bindir}/go >%{_bindir}/gofmt >%ghost %{_sysconfdir}/alternatives/go >%ghost %{_sysconfdir}/alternatives/gofmt >%doc %{_mandir}/man1/gccgo.1.gz > >%if %{build_d} >%files -n gcc%{gccsuffix}-d > >%{_bindir}/gdc >%doc %{_mandir}/man1/gdc.1.gz >%endif > >%if %{separate_bi32} > >%files -n gcc%{gccsuffix}-32bit ># empty - only for the dependency > >%files -n gcc%{gccsuffix}-c++-32bit ># empty - only for the dependency > >%files -n libstdc++%{gccsuffix}-devel-32bit ># empty - only for the dependency > >%files -n gcc%{gccsuffix}-fortran-32bit ># empty - only for the dependency > >%files -n gcc%{gccsuffix}-objc-32bit ># empty - only for the dependency > >%if %{build_ada} >%files -n gcc%{gccsuffix}-ada-32bit ># empty - only for the dependency >%endif > >%files -n gcc%{gccsuffix}-go-32bit ># empty - only for the dependency > >%if %{build_d} >%files -n gcc%{gccsuffix}-d-32bit ># empty - only for the dependency >%endif >%endif >%if %{separate_bi64} > >%files -n gcc%{gccsuffix}-64bit ># empty - only for the dependency > >%files -n gcc%{gccsuffix}-c++-64bit ># empty - only for the dependency > >%files -n libstdc++%{gccsuffix}-devel-64bit ># empty - only for the dependency > >%files -n gcc%{gccsuffix}-fortran-64bit ># empty - only for the dependency > >%files -n gcc%{gccsuffix}-objc-64bit ># empty - only for the dependency > >%if %{build_ada} >%files -n gcc%{gccsuffix}-ada-64bit ># empty - only for the dependency >%endif > >%files -n gcc%{gccsuffix}-go-64bit ># empty - only for the dependency > >%if %{build_d} >%files -n gcc%{gccsuffix}-d-64bit ># empty - only for the dependency >%endif >%endif > >%files -n libgccjit%{gccsuffix}-devel ># empty - only for the dependency
%define libname %mklibname %{name} %{major} %define develname %mklibname %{name} -d %define flavor %{nil} %if "%{flavor}" == "build" %define gccsuffix -build %define gcc_version 12 %define gcc_suffix 12 %else %define gccsuffix %{nil} %define gcc_version 12 %define gcc_suffix 12 %endif Name: gcc%{gccsuffix} %define separate_bi32 0 %define separate_bi64 0 %if 0%{!?disable_32bit:1} %ifarch ppc sparcv9 %define separate_bi64 1 %endif %ifarch x86_64 s390x ppc64 sparc64 %define separate_bi32 1 %endif %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 riscv64 %define build_ada 1 %else # alpha hppa arm %define build_ada 0 %endif %ifarch x86_64 %ix86 %arm aarch64 riscv64 s390x %define build_d 1 %else %define build_d 0 %endif %define libgccjit_sover 0 URL: http://gcc.gnu.org/ Version: %{gcc_version} Release: 1%{?dist} Summary: The system GNU C Compiler License: GPL-3.0-or-later Group: Development/Other Provides: c_compiler = %{version} Requires: cpp%{gccsuffix} Requires: gcc%{gcc_version} BuildRequires: gcc%{gcc_version} BuildRequires: gcc%{gcc_version}-c++ BuildRequires: gcc%{gcc_version}-fortran BuildRequires: gcc%{gcc_version}-go %if %{build_ada} BuildRequires: gcc%{gcc_version}-ada %endif %if %{build_d} BuildRequires: gcc%{gcc_version}-d %endif Source: cpp %if "%{gccsuffix}" != "" && 0%{?is_opensuse} ExclusiveArch: do-not-build %endif %description -n gcc%{gccsuffix} The system GNU C Compiler. %package -n gcc%{gccsuffix}-32bit Summary: The system GNU C Compiler License: GPL-3.0-or-later Group: Development/Other Requires: gcc%{gcc_version}-32bit Requires: gcc%{gccsuffix} = %{version} %description -n gcc%{gccsuffix}-32bit The system GNU C Compiler. %package -n gcc%{gccsuffix}-64bit Summary: The system GNU C Compiler License: GPL-3.0-or-later Group: Development/Other Requires: gcc%{gcc_version}-64bit Requires: gcc%{gccsuffix} = %{version} %description -n gcc%{gccsuffix}-64bit The system GNU C Compiler. %package -n cpp%{gccsuffix} Summary: The system GNU Preprocessor License: GPL-3.0-or-later Group: Development/Other Requires: cpp%{gcc_version} # Only one of the symlink packages can be installed at the same time Provides: cpp = %{version}-%{release} Conflicts: cpp %description -n cpp%{gccsuffix} The system GNU Preprocessor. %package -n gcc%{gccsuffix}-devel Summary: The system GNU C Compiler Plugin development files License: GPL-3.0-or-later Group: Development/Other Requires: gcc%{gcc_version}-devel Requires: gcc%{gccsuffix} = %{version} %description -n gcc%{gccsuffix}-devel The system GNU C Compiler Plugin development files. %package -n gcc%{gccsuffix}-locale Summary: The system GNU Compiler locale files License: GPL-3.0-or-later Group: Development/Other Requires: gcc%{gcc_version}-locale %description -n gcc%{gccsuffix}-locale The system GNU Compiler locale files. %package -n gcc%{gccsuffix}-info Summary: The system GNU Compiler documentation License: GFDL-1.2-only Group: Development/Other #PreReq: %%{install_info_prereq} #PreReq: gcc%%{gcc_version}-info %description -n gcc%{gccsuffix}-info The system GNU Compiler documentation. # install / update the entries %post -n gcc%{gccsuffix}-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%{gccsuffix}-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%{gccsuffix}-c++ Summary: The system GNU C++ Compiler License: GPL-3.0-or-later Group: Development/Other Provides: c++_compiler = %{version} Requires: gcc%{gcc_version}-c++ Requires: gcc%{gccsuffix} = %{version} %description -n gcc%{gccsuffix}-c++ The system GNU C++ Compiler. %package -n gcc%{gccsuffix}-c++-32bit Summary: The system GNU C++ Compiler License: GPL-3.0-or-later Group: Development/Other Requires: gcc%{gcc_version}-c++-32bit Requires: gcc%{gccsuffix}-32bit = %{version} Requires: gcc%{gccsuffix}-c++ = %{version} %description -n gcc%{gccsuffix}-c++-32bit The system GNU C++ Compiler 32 bit support. %package -n gcc%{gccsuffix}-c++-64bit Summary: The system GNU C++ Compiler License: GPL-3.0-or-later Group: Development/Other Requires: gcc%{gcc_version}-c++-64bit Requires: gcc%{gccsuffix}-64bit = %{version} Requires: gcc%{gccsuffix}-c++ = %{version} %description -n gcc%{gccsuffix}-c++-64bit The system GNU C++ Compiler 64 bit support. %package -n libstdc++%{gccsuffix}-devel Summary: The system GNU C++ development files License: GPL-3.0-only WITH GCC-exception-3.1 Group: System/Libraries Requires: libstdc++6-devel-gcc%{gcc_version} %description -n libstdc++%{gccsuffix}-devel The system GNU C++ development files. %package -n libstdc++%{gccsuffix}-devel-32bit Summary: The system GNU C++ 32bit development files License: GPL-3.0-only WITH GCC-exception-3.1 Group: System/Libraries Requires: libstdc++%{gccsuffix}-devel Requires: libstdc++6-devel-gcc%{gcc_version}-32bit %description -n libstdc++%{gccsuffix}-devel-32bit The system GNU C++ 32bit development files. %package -n libstdc++%{gccsuffix}-devel-64bit Summary: The system GNU C++ 64bit development files License: GPL-3.0-only WITH GCC-exception-3.1 Group: System/Libraries Requires: libstdc++%{gccsuffix}-devel Requires: libstdc++6-devel-gcc%{gcc_version}-64bit %description -n libstdc++%{gccsuffix}-devel-64bit The system GNU C++ 64bit development files. %package -n gcc%{gccsuffix}-fortran Summary: The system GNU Fortran Compiler License: GPL-3.0-or-later Group: Development/Other Requires: gcc%{gcc_version}-fortran Requires: gcc%{gccsuffix} = %{version} %description -n gcc%{gccsuffix}-fortran The system GNU Fortran Compiler. %package -n gcc%{gccsuffix}-fortran-32bit Summary: The system GNU Fortran Compiler License: GPL-3.0-or-later Group: Development/Other Requires: gcc%{gcc_version}-fortran-32bit Requires: gcc%{gccsuffix}-fortran = %{version} %description -n gcc%{gccsuffix}-fortran-32bit The system GNU Fortran Compiler 32 bit support. %package -n gcc%{gccsuffix}-fortran-64bit Summary: The system GNU Fortran Compiler License: GPL-3.0-or-later Group: Development/Other Requires: gcc%{gcc_version}-fortran-64bit Requires: gcc%{gccsuffix}-fortran = %{version} %description -n gcc%{gccsuffix}-fortran-64bit The system GNU Fortran Compiler 64 bit support. %package -n gcc%{gccsuffix}-objc Summary: The system GNU Objective C Compiler License: GPL-3.0-or-later Group: Development/Other Requires: gcc%{gcc_version}-objc Requires: gcc%{gccsuffix} = %{version} %ifarch ppc64 Obsoletes: gcc%{gccsuffix}-objc-64bit = <13 %endif %description -n gcc%{gccsuffix}-objc The system GNU Objective C Compiler. %package -n gcc%{gccsuffix}-objc-32bit Summary: The system GNU Objective C Compiler License: GPL-3.0-or-later Group: Development/Other Requires: gcc%{gcc_version}-objc-32bit Requires: gcc%{gccsuffix}-objc = %{version} %description -n gcc%{gccsuffix}-objc-32bit The system GNU Objective C Compiler 32 bit support. %package -n gcc%{gccsuffix}-objc-64bit Summary: The system GNU Objective C Compiler License: GPL-3.0-or-later Group: Development/Other Requires: gcc%{gcc_version}-objc-64bit Requires: gcc%{gccsuffix}-objc = %{version} %description -n gcc%{gccsuffix}-objc-64bit The system GNU Objective C Compiler 64 bit support. %package -n gcc%{gccsuffix}-obj-c++ Summary: The system GNU Objective C++ Compiler License: GPL-3.0-or-later Group: Development/Other Requires: gcc%{gcc_version}-obj-c++ Requires: gcc%{gccsuffix}-objc = %{version} %description -n gcc%{gccsuffix}-obj-c++ The system GNU Objective C++ Compiler. %package -n gcc%{gccsuffix}-PIE Summary: A default configuration to build all binaries in PIE mode License: GPL-3.0-or-later Group: Development/Other Requires: gcc%{gcc_version}-PIE %description -n gcc%{gccsuffix}-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%{gccsuffix}-ada Summary: The system GNU Ada Compiler License: GPL-3.0-or-later Group: Development/Other Requires: gcc%{gcc_version}-ada Requires: gcc%{gccsuffix} = %{version} %description -n gcc%{gccsuffix}-ada The system GNU Ada Compiler. %package -n gcc%{gccsuffix}-ada-32bit Summary: The system GNU Ada Compiler License: GPL-3.0-or-later Group: Development/Other Requires: gcc%{gcc_version}-ada-32bit Requires: gcc%{gccsuffix}-ada = %{version} %description -n gcc%{gccsuffix}-ada-32bit The system GNU Ada Compiler 32 bit support. %package -n gcc%{gccsuffix}-ada-64bit Summary: The system GNU Ada Compiler License: GPL-3.0-or-later Group: Development/Other Requires: gcc%{gcc_version}-ada-64bit Requires: gcc%{gccsuffix}-ada = %{version} %description -n gcc%{gccsuffix}-ada-64bit The system GNU Ada Compiler 64 bit support. %package -n gcc%{gccsuffix}-go Summary: The system GNU Go Compiler License: GPL-3.0-or-later Group: Development/Other Requires: gcc%{gcc_version}-go Requires: gcc%{gccsuffix} = %{version} Requires(post): update-alternatives Requires(postun):update-alternatives %description -n gcc%{gccsuffix}-go The system GNU Go Compiler. %package -n gcc%{gccsuffix}-go-32bit Summary: The system GNU Go Compiler License: GPL-3.0-or-later Group: Development/Other Requires: gcc%{gcc_version}-go-32bit Requires: gcc%{gccsuffix}-go = %{version} %description -n gcc%{gccsuffix}-go-32bit The system GNU Go Compiler 32bit support. %package -n gcc%{gccsuffix}-go-64bit Summary: The system GNU Go Compiler License: GPL-3.0-or-later Group: Development/Other Requires: gcc%{gcc_version}-go-64bit Requires: gcc%{gccsuffix}-go = %{version} %description -n gcc%{gccsuffix}-go-64bit The system GNU Go Compiler 64bit support. %package -n gcc%{gccsuffix}-d Summary: The system GNU D Compiler License: GPL-3.0-or-later Group: Development/Other Requires: gcc%{gcc_version}-d Requires: gcc%{gccsuffix} = %{version} Requires(post): update-alternatives Requires(postun):update-alternatives %description -n gcc%{gccsuffix}-d The system GNU D Compiler. %package -n gcc%{gccsuffix}-d-32bit Summary: The system GNU D Compiler License: GPL-3.0-or-later Group: Development/Other Requires: gcc%{gcc_version}-d-32bit Requires: gcc%{gccsuffix}-d = %{version} %description -n gcc%{gccsuffix}-d-32bit The system GNU D Compiler 32bit support. %package -n gcc%{gccsuffix}-d-64bit Summary: The system GNU D Compiler License: GPL-3.0-or-later Group: Development/Other Requires: gcc%{gcc_version}-d-64bit Requires: gcc%{gccsuffix}-d = %{version} %description -n gcc%{gccsuffix}-d-64bit The system GNU D Compiler 64bit support. %package -n libgccjit%{gccsuffix}-devel Summary: Support for embedding GCC inside programs and libraries License: GPL-3.0-or-later Group: Development/Other Requires: libgccjit%{libgccjit_sover}-devel-gcc%{gcc_version} %description -n libgccjit%{gccsuffix}-devel Package contains header files and documentation for GCC JIT front-end. %prep %{nil} %build %{nil} %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 lto-dump \ g++ \ cpp \ gfortran \ gccgo \ %if %{build_ada} gnat gnatbind gnatchop gnatclean gnatkr \ gnatlink gnatls gnatmake gnatname gnatprep \ %endif %if %{build_d} gdc \ %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 lto-dump \ g++ \ cpp \ gfortran \ gccgo \ %if %{build_d} gdc \ %endif ; 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 (as /usr/lib/cpp on usrmerged systems) # that only handles C mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib cp $RPM_BUILD_ROOT/cpp $RPM_BUILD_ROOT%{_prefix}/lib/ chmod 755 $RPM_BUILD_ROOT%{_prefix}/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%{_libdir}/bfd-plugins ln -s `gcc-%{gcc_suffix} -print-file-name=liblto_plugin.so` $RPM_BUILD_ROOT%{_libdir}/bfd-plugins/liblto_plugin.so %post -n gcc%{gccsuffix}-go # we don't want a BuildRequires on gccN-go but otherwise the install # step of the build fails, so simply skip the script when gccN-go isn't there if [ -f %{_bindir}/go-%{gcc_suffix} ] ; then update-alternatives \ --install %{_bindir}/go go %{_bindir}/go-%{gcc_suffix} 100 \ --slave %{_bindir}/gofmt gofmt %{_bindir}/gofmt-%{gcc_suffix} fi %postun -n gcc%{gccsuffix}-go if [ $1 -eq 0 ] ; then update-alternatives --remove go %{_bindir}/go-%{gcc_suffix} fi %files -n gcc%{gccsuffix} %{_prefix}/bin/gcc %{_prefix}/bin/cc %{_prefix}/bin/gcov %{_prefix}/bin/gcov-dump %{_prefix}/bin/gcov-tool %{_prefix}/bin/lto-dump %{_prefix}/bin/gcc-ar %{_prefix}/bin/gcc-nm %{_prefix}/bin/gcc-ranlib %dir %{_libdir}/bfd-plugins %{_libdir}/bfd-plugins/liblto_plugin.so %doc %{_mandir}/man1/gcc.1.gz %doc %{_mandir}/man1/cc.1.gz %doc %{_mandir}/man1/gcov.1.gz %doc %{_mandir}/man1/gcov-dump.1.gz %doc %{_mandir}/man1/gcov-tool.1.gz %doc %{_mandir}/man1/lto-dump.1.gz %files -n cpp%{gccsuffix} %{_prefix}/lib/cpp %{_prefix}/bin/cpp %doc %{_mandir}/man1/cpp.1.gz # Plugins are only enabled for Tumbleweed %if 0%{!?sle_version:1} %files -n gcc%{gccsuffix}-devel # empty - only for the dependency %endif %files -n gcc%{gccsuffix}-c++ %{_prefix}/bin/g++ %{_prefix}/bin/c++ %doc %{_mandir}/man1/g++.1.gz %doc %{_mandir}/man1/c++.1.gz %files -n gcc%{gccsuffix}-fortran %{_prefix}/bin/gfortran %doc %{_mandir}/man1/gfortran.1.gz %files -n gcc%{gccsuffix}-objc # empty - only for the dependency %files -n gcc%{gccsuffix}-obj-c++ # empty - only for the dependency %files -n gcc%{gccsuffix}-PIE # empty - only for the dependency %files -n gcc%{gccsuffix}-locale # empty - only for the dependency %files -n gcc%{gccsuffix}-info %{_infodir}/cpp.info.gz %{_infodir}/gcc.info.gz %{_infodir}/gfortran.info.gz %if %{build_ada} %files -n gcc%{gccsuffix}-ada %{_prefix}/bin/gnat %{_prefix}/bin/gnatbind %{_prefix}/bin/gnatchop %{_prefix}/bin/gnatclean %{_prefix}/bin/gnatkr %{_prefix}/bin/gnatlink %{_prefix}/bin/gnatls %{_prefix}/bin/gnatmake %{_prefix}/bin/gnatname %{_prefix}/bin/gnatprep %endif %files -n libstdc++%{gccsuffix}-devel # empty - only for the dependency %files -n gcc%{gccsuffix}-go %{_bindir}/gccgo %{_bindir}/go %{_bindir}/gofmt %ghost %{_sysconfdir}/alternatives/go %ghost %{_sysconfdir}/alternatives/gofmt %doc %{_mandir}/man1/gccgo.1.gz %if %{build_d} %files -n gcc%{gccsuffix}-d %{_bindir}/gdc %doc %{_mandir}/man1/gdc.1.gz %endif %if %{separate_bi32} %files -n gcc%{gccsuffix}-32bit # empty - only for the dependency %files -n gcc%{gccsuffix}-c++-32bit # empty - only for the dependency %files -n libstdc++%{gccsuffix}-devel-32bit # empty - only for the dependency %files -n gcc%{gccsuffix}-fortran-32bit # empty - only for the dependency %files -n gcc%{gccsuffix}-objc-32bit # empty - only for the dependency %if %{build_ada} %files -n gcc%{gccsuffix}-ada-32bit # empty - only for the dependency %endif %files -n gcc%{gccsuffix}-go-32bit # empty - only for the dependency %if %{build_d} %files -n gcc%{gccsuffix}-d-32bit # empty - only for the dependency %endif %endif %if %{separate_bi64} %files -n gcc%{gccsuffix}-64bit # empty - only for the dependency %files -n gcc%{gccsuffix}-c++-64bit # empty - only for the dependency %files -n libstdc++%{gccsuffix}-devel-64bit # empty - only for the dependency %files -n gcc%{gccsuffix}-fortran-64bit # empty - only for the dependency %files -n gcc%{gccsuffix}-objc-64bit # empty - only for the dependency %if %{build_ada} %files -n gcc%{gccsuffix}-ada-64bit # empty - only for the dependency %endif %files -n gcc%{gccsuffix}-go-64bit # empty - only for the dependency %if %{build_d} %files -n gcc%{gccsuffix}-d-64bit # empty - only for the dependency %endif %endif %files -n libgccjit%{gccsuffix}-devel # empty - only for the dependency
View Attachment As Raw
Actions:
View
Attachments on
bug 33215
: 14533 |
14534