From de95d59e49a80de1aea035be3c0cc9ee26522a4f Mon Sep 17 00:00:00 2001 From: Derek Homeier Date: Thu, 12 Oct 2023 01:01:35 +0200 Subject: [PATCH] Sonoma Dist-packages for gcc 12, 13 (libsanitizer disabled) --- .../main/finkinfo/languages/gcc12-14.0.info | 315 ++++++++++++++++++ .../main/finkinfo/languages/gcc13-14.0.info | 315 ++++++++++++++++++ 2 files changed, 630 insertions(+) create mode 100644 10.9-libcxx/stable/main/finkinfo/languages/gcc12-14.0.info create mode 100644 10.9-libcxx/stable/main/finkinfo/languages/gcc13-14.0.info diff --git a/10.9-libcxx/stable/main/finkinfo/languages/gcc12-14.0.info b/10.9-libcxx/stable/main/finkinfo/languages/gcc12-14.0.info new file mode 100644 index 0000000000..fa21a07673 --- /dev/null +++ b/10.9-libcxx/stable/main/finkinfo/languages/gcc12-14.0.info @@ -0,0 +1,315 @@ +Info2: << +Package: gcc12 +Version: 12.3.0 +Revision: 1 +Type: gccver (12) +Distribution: 14.0 +Source: mirror:gnu:gcc/gcc-%v/gcc-%v.tar.xz +Source-Checksum: SHA256(949a5d4f99e786421a93b532b22ffab5578de7321369975b91aec97adfda8c3b) +PatchFile: %n.patch +PatchFile-MD5: e245cee9fa6aa2fd5298d7712358e8e1 +PatchScript: << + #!/bin/sh -ev + patch -p1 < %{PatchFile} + # don't update live infodoc dir + find . -name Makefile.in | xargs perl -pi -e 's/install-info --version/false/g' +<< +NoSetCPPFLAGS: True +NoSetLDFLAGS: True +UseMaxBuildJobs: True +Conflicts: << + gcc5, gcc6, gcc7, gcc8, + gcc9, + gcc10, + gcc11, + gcc12, + gcc13, + gcc14 +<< +Replaces: << + gcc5, gcc6, gcc7, gcc8, + gcc9, + gcc10, + gcc11, + gcc12, + gcc13, + gcc14 +<< +Depends: << + %N-compiler (= %v-%r) +<< +BuildDepends: << + fink (>= 0.32), + fink-package-precedence, + gettext-tools, + gmp5 (>= 6.1.2-1), + install-info, + isl22, + libgettext8-dev, + libiconv-dev, + libmpc3 (>= 1.0.3-1), + libmpfr6, + x11-dev +<< +ConfigureParams: << + --prefix=%p/lib/gcc%type_num[gccver] \ + --mandir=%p/share/man \ + --infodir=%p/lib/gcc%type_num[gccver]/info \ + --enable-languages=c,c++,fortran,lto,objc,obj-c++ \ + --with-gmp=%p \ + --with-libiconv-prefix=%p \ + --with-isl=%p \ + --with-mpc=%p \ + --with-system-zlib \ + --program-suffix=-fsf-%type_num[gccver] \ + --disable-multilib \ + --enable-stage1-checking \ + ${USE_SYSROOT} \ + --with-pkgversion="Fink %n %v-%r" \ + --with-bugurl="https://github.com/fink/fink-distributions/issues" +<< +InfoTest: << + TestDepends: << + autogen, + dejagnu, + ( "%m" != "arm64" ) apple-gdb + << + TestScript: << + #!/bin/bash -ev + if [ "%m" = "arm64" ]; then + echo "The gcc testsuite requires Apple's gdb, which is not available on this architecture." + exit 0 + elif [ $UID = 0 ]; then + if [ -e /usr/bin/csrutil && `csrutil status | grep -c disabled` ]; then + cd ../darwin_objdir; make -k check RUNTESTFLAGS="--target_board=unix'{-m64}'" || : + else + echo "The gcc testsuite must be run with SIP disabled or package installed." + exit 0 + fi + else + echo "The gcc testsuite must be run as root due to its use of gdb." + exit 0 + fi + << +<< +InfoDocs: gcc.info gfortran.info cpp.info gccinstall.info libgomp.info cppinternals.info gccint.info +CompileScript: << + #!/bin/bash -ev + set +x + if [ -e /usr/local/lib/libgmp.a ] || [ -e /usr/local/lib/libgmp.dylib ]; then + echo "-----WARNING-----WARNING-----WARNING-----" + echo "You seem to have GMP installed in /usr/local." + echo "This is known to cause %N to fail to build." + echo "Please move aside /usr/local and try again." + echo "-----WARNING-----WARNING-----WARNING-----" + exit 1 + else + echo "Good, /usr/local/lib/libgmp* not present." + fi + set -x + ulimit -s `ulimit -s` + mkdir ../darwin_objdir + cd ../darwin_objdir + # build doesn't play well with GNU-make + # unsupported option '-static-libgcc' + export MAKE=/usr/bin/make + # Only need sysroot on 10.14+ because /usr/include has been removed + OSX_MAJOR_VERSION=`sw_vers -productVersion | cut -d. -f1-2` + if dpkg --compare-versions "$OSX_MAJOR_VERSION" ge "10.14"; then + # Get the unversioned SDK path + SDK_PATH=`dirname $(xcrun --sdk macosx --show-sdk-path)`/MacOSX.sdk + # This should really be --with-build-sysroot but that's not getting propagated through the entire build process. + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79885 + export USE_SYSROOT="--with-sysroot=${SDK_PATH}" + fi + # check for incompatible clang ( 6.0 << bad-clang << 7.2) + clangvers=`clang --version | cut -d\ -f4` + $(`dpkg --compare-versions $clangvers '>>' 6.0`) && $(`dpkg --compare-versions $clangvers '<<' 7.2`) && clangcheck='y' + if [ "$clangcheck" = "y" ]; then + ../gcc-%v/configure %c --with-build-config=bootstrap-debug + else + ../gcc-%v/configure %c + fi + # Use bootstrap-lean to reduce disk usage. + # Note that this causes plugin testsuite failures + # since the plugin headers must come from prev-gcc. + # make bootstrap-lean + make bootstrap + fink-package-precedence --prohibit-bdep=%n . +<< +InstallScript: << + #!/bin/sh -ev + darwinvers=`uname -r` + cd ../darwin_objdir + make -j 1 install DESTDIR=%d + mkdir -p %i/bin + + # Add symlinks to recreate previous naming of executables in %p/bin + # as well as %p/lib/gcc%type_num[gccver]/bin and new -fsf-%type_num[gccver] naming in %p/bin. + binfiles="gcc g++ c++ cpp gcov" + for binfile in $binfiles ; do + ln -s %p/lib/gcc%type_num[gccver]/bin/$binfile-fsf-%type_num[gccver] %i/lib/gcc%type_num[gccver]/bin/$binfile-%type_num[gccver] + ln -s %p/lib/gcc%type_num[gccver]/bin/$binfile-fsf-%type_num[gccver] %i/bin/$binfile-%type_num[gccver] + ln -s %p/lib/gcc%type_num[gccver]/bin/$binfile-fsf-%type_num[gccver] %i/bin/$binfile-fsf-%type_num[gccver] + done + binfiles="gfortran" + for binfile in $binfiles ; do + ln -s %p/lib/gcc%type_num[gccver]/bin/$binfile-fsf-%type_num[gccver] %i/lib/gcc%type_num[gccver]/bin/$binfile + ln -s %p/lib/gcc%type_num[gccver]/bin/$binfile-fsf-%type_num[gccver] %i/bin/$binfile + ln -s %p/lib/gcc%type_num[gccver]/bin/$binfile-fsf-%type_num[gccver] %i/bin/$binfile-fsf-%type_num[gccver] + done + + # Remove unsupported executables + binfiles="gcc-ar gcc-nm gcc-ranlib" + for binfile in $binfiles ; do + rm -f %i/lib/gcc%type_num[gccver]/bin/$binfile-fsf-%type_num[gccver] %i/lib/gcc%type_num[gccver]/bin/*-apple-darwin${darwinvers}-$binfile-fsf-%type_num[gccver] + done + + # Add symlinks for manpages under old names. + man1files="cpp g++ gcc gcov" + for man1file in $man1files ; do + ln -s $man1file-fsf-%type_num[gccver].1 %i/share/man/man1/$man1file-%type_num[gccver].1 + done + man1files="gfortran" + for man1file in $man1files ; do + ln -s $man1file-fsf-%type_num[gccver].1 %i/share/man/man1/$man1file.1 + done + + # Rename manpages with -fsf-%type_num[gccver] suffix and create symlinks to old names. + man7files="fsf-funding gfdl gpl" + for man7file in $man7files ; do + mv %i/share/man/man7/$man7file.7 %i/share/man/man7/$man7file-fsf-%type_num[gccver].7 + ln -s $man7file-fsf-%type_num[gccver].7 %i/share/man/man7/$man7file.7 + done + + # Add dir for installed info files, and link them to %i/share/info. + # the %i/lib/gcc%type_num[gccver]/info/* files will go into the -compiler package + # and the files in %i/share/info go into the main package, this allows + # the info files for specific compiler versions to be accessed with + # e.g. `info -d /fink_install_dir/lib/gcc%type_num[gccver]/info gcc', but the "main" info files will + # be available for the install gccXX package in %p/share/info, as usual + install -d -m 755 %i/share/info + for infofile in $(find %i/lib/gcc%type_num[gccver]/info -name '*.info*'); do + infobase=$(basename $infofile) + case $infofile in + *info) %p/bin/install-info --infodir=%i/lib/gcc%type_num[gccver]/info ${infofile} ;; + esac + ln -s %p/lib/gcc%type_num[gccver]/info/$infobase %i/share/info/$infobase + done + + # remove build path from .la files + perl -pi -e "s, \-L[^ ']*/%n-%v-%r/darwin_objdir/[^ ']*,,g" `find %i/lib/gcc%type_num[gccver]/lib -name '*.la'` + if [ "%m" = "arm64" -o "%m" = "arm" ]; then + arch=aarch64 + else + arch=%m + fi + + # @rpath install_names are required for aarch64 build, but break some linked binaries + # - enforce actual install paths here; take care to update the cross-referenced dylibs. + cd %d + for dylib in .%p/lib/gcc%type_num[gccver]/lib/lib*.[0-9].dylib; do + install_name_tool -id ${dylib#.} $dylib + install_name_tool -change @rpath/libgcc_s.1.1.dylib %p/lib/gcc%type_num[gccver]/lib/libgcc_s.1.1.dylib \ + -change @rpath/libstdc++.6.dylib %p/lib/gcc%type_num[gccver]/lib/libstdc++.6.dylib \ + -change @rpath/libquadmath.0.dylib %p/lib/gcc%type_num[gccver]/lib/libquadmath.0.dylib $dylib + done + otool -L .%p/lib/gcc%type_num[gccver]/lib/lib*.[0-9].dylib | grep '@rpath' && exit 2 + + cp %b/gcc/config/darwin-sections.def %i/lib/gcc%type_num[gccver]/lib/gcc/${arch}-apple-darwin${darwinvers}/%v/plugin/include/config +<< +SplitOff: << + Package: %N-shlibs + Replaces: << + gcc4 (<= 20050130-4), + gfortran-shlibs + << + Provides: << + gfortran-shlibs + << + Description: Shared libraries for %N + DocFiles: gcc/COPYING gcc/COPYING.LIB + Files: << + lib/gcc%type_num[gccver]/lib/libgfortran.5*.dylib + lib/gcc%type_num[gccver]/lib/libstdc++.6*.dylib + lib/gcc%type_num[gccver]/lib/libgcc_s.1*.dylib + lib/gcc%type_num[gccver]/lib/libitm.1*.dylib + lib/gcc%type_num[gccver]/lib/libssp.0*.dylib + lib/gcc%type_num[gccver]/lib/libobjc-gnu.4*.dylib + lib/gcc%type_num[gccver]/lib/libgomp.1*.dylib + lib/gcc%type_num[gccver]/lib/libquadmath.0*.dylib + lib/gcc%type_num[gccver]/lib/libatomic.1*.dylib + << + Shlibs: << + %p/lib/gcc%type_num[gccver]/lib/libgfortran.5.dylib 6.0.0 %n (>= 12.0.0-1) + %p/lib/gcc%type_num[gccver]/lib/libstdc++.6.dylib 7.0.0 %n (>= 12.0.0-1) + ( "%m" = "arm64" ) %p/lib/gcc%type_num[gccver]/lib/libgcc_s.1.1.dylib 1.0.0 %n (>= 12.0.0-1) + ( "%m" != "arm64" ) %p/lib/gcc%type_num[gccver]/lib/libgcc_s.1.dylib 1.0.0 %n (>= 12.0.0-1) + ( "%m" != "arm64" ) !%p/lib/gcc%type_num[gccver]/lib/libgcc_s.1.1.dylib + %p/lib/gcc%type_num[gccver]/lib/libitm.1.dylib 2.0.0 %n (>= 12.0.0-1) + %p/lib/gcc%type_num[gccver]/lib/libssp.0.dylib 1.0.0 %n (>= 12.0.0-1) + %p/lib/gcc%type_num[gccver]/lib/libobjc-gnu.4.dylib 5.0.0 %n (>= 12.0.0-1) + %p/lib/gcc%type_num[gccver]/lib/libgomp.1.dylib 2.0.0 %n (>= 12.0.0-1) + %p/lib/gcc%type_num[gccver]/lib/libquadmath.0.dylib 1.0.0 %n (>= 12.0.0-1) + %p/lib/gcc%type_num[gccver]/lib/libatomic.1.dylib 4.0.0 %n (>= 12.0.0-1) + << +<< +SplitOff2: << + Package: %N-compiler + Depends: << + gmp5-shlibs (>= 6.1.2-1), + isl22-shlibs, + libgettext8-shlibs, + libgmpxx5-shlibs (>= 6.1.2-1), + libiconv, + libmpc3-shlibs (>= 1.0.3-1), + libmpfr6-shlibs, + %N-shlibs (= %v-%r) + << + BuildDependsOnly: False + Description: Compiler Binaries for gcc%type_num[gccver] + DocFiles: gcc/COPYING gcc/COPYING.LIB gcc/ChangeLog gcc/ABOUT-GCC-NLS gcc/README.Portability + Files: << + bin/*-fsf-%type_num[gccver] + lib/gcc%type_num[gccver] + share/man/man1/*-fsf-%type_num[gccver].1 + share/man/man7/*-fsf-%type_num[gccver].7 + << +<< +License: GPL +Description: GNU Compiler Collection Version %type_num[gccver] +DescDetail: << + GCC, the GNU Compiler Collection, includes front ends for + C, C++, Objective-C, Objective-C++, Fortran and Ada. + . + C, C++, Objective C and Fortran are included in this package. + . + The C and C++ compilers are named gcc-12 and g++-12 to avoid + conflicts with gcc and g++ installed by the Apple Developer Tools. +<< +DescPackaging: << + Build with -fsf-%type_num[gccver] suffix and place non-overlapping files into new gcc%type_num[gccver]-compiler + package which can co-exist with other gccXX-compiler packages. Overlapping files + are left in main gcc%type_num[gccver] package which still conflicts with other gccXX packages. + + macOS10.14 no longer supports building 32bit libraries, so must disable multilib. + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87030 + + We use --with-sysroot to find the hidden system-headers in case /usr/include is not + populated. Ideally want --with-build-sysroot because we only need the headers to build + gcc and that should not impact the end product, but then anything using gccX will + need to add it's own -isysroot flag. + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79885 + + Homebrew patches for arm64/aarch64 build and macOS 13 from + https://github.com/Homebrew/formula-patches/blob/master/gcc/gcc-%v.diff + - libasan.* and libsubsan.* currently not built on darwin22+ - see + https://github.com/iains/gcc-darwin-arm64/commit/e722a1f4 + and missing from the 13.0 package until resolved. + There are both "1" and "1.1" versions of libgcc_s.dylib now, but only "1.1" on arm64. + Manual fixes of @rpath install_names required for aarch64 build to maintain downstream + package compatibility. +<< +Homepage: http://gcc.gnu.org/ +Maintainer: None +<< diff --git a/10.9-libcxx/stable/main/finkinfo/languages/gcc13-14.0.info b/10.9-libcxx/stable/main/finkinfo/languages/gcc13-14.0.info new file mode 100644 index 0000000000..df7961caae --- /dev/null +++ b/10.9-libcxx/stable/main/finkinfo/languages/gcc13-14.0.info @@ -0,0 +1,315 @@ +Info2: << +Package: gcc13 +Version: 13.2.0 +Revision: 1 +Type: gccver (13) +Distribution: 14.0 +Source: mirror:gnu:gcc/gcc-%v/gcc-%v.tar.xz +Source-Checksum: SHA256(e275e76442a6067341a27f04c5c6b83d8613144004c0413528863dc6b5c743da) +PatchFile: %n.patch +PatchFile-MD5: 16943e477797787fbe51c3a2404140de +PatchScript: << + #!/bin/sh -ev + patch -p1 < %{PatchFile} + # don't update live infodoc dir + find . -name Makefile.in | xargs perl -pi -e 's/install-info --version/false/g' +<< +NoSetCPPFLAGS: True +NoSetLDFLAGS: True +UseMaxBuildJobs: True +Conflicts: << + gcc5, gcc6, gcc7, gcc8, + gcc9, + gcc10, + gcc11, + gcc12, + gcc13, + gcc14 +<< +Replaces: << + gcc5, gcc6, gcc7, gcc8, + gcc9, + gcc10, + gcc11, + gcc12, + gcc13, + gcc14 +<< +Depends: << + %N-compiler (= %v-%r) +<< +BuildDepends: << + fink (>= 0.32), + fink-package-precedence, + gettext-tools, + gmp5 (>= 6.1.2-1), + install-info, + isl22, + libgettext8-dev, + libiconv-dev, + libmpc3 (>= 1.0.3-1), + libmpfr6, + x11-dev +<< +ConfigureParams: << + --prefix=%p/lib/gcc%type_num[gccver] \ + --mandir=%p/share/man \ + --infodir=%p/lib/gcc%type_num[gccver]/info \ + --enable-languages=c,c++,fortran,lto,objc,obj-c++ \ + --with-gmp=%p \ + --with-libiconv-prefix=%p \ + --with-isl=%p \ + --with-mpc=%p \ + --with-system-zlib \ + --program-suffix=-fsf-%type_num[gccver] \ + --disable-multilib \ + --enable-stage1-checking \ + ${USE_SYSROOT} \ + --with-pkgversion="Fink %n %v-%r" \ + --with-bugurl="https://github.com/fink/fink-distributions/issues" +<< +InfoTest: << + TestDepends: << + autogen, + dejagnu, + ( "%m" != "arm64" ) apple-gdb + << + TestScript: << + #!/bin/bash -ev + if [ "%m" = "arm64" ]; then + echo "The gcc testsuite requires Apple's gdb, which is not available on this architecture." + exit 0 + elif [ $UID = 0 ]; then + if [ -e /usr/bin/csrutil && `csrutil status | grep -c disabled` ]; then + cd ../darwin_objdir; make -k check RUNTESTFLAGS="--target_board=unix'{-m64}'" || : + else + echo "The gcc testsuite must be run with SIP disabled or package installed." + exit 0 + fi + else + echo "The gcc testsuite must be run as root due to its use of gdb." + exit 0 + fi + << +<< +InfoDocs: gcc.info gfortran.info cpp.info gccinstall.info libgomp.info cppinternals.info gccint.info +CompileScript: << + #!/bin/bash -ev + set +x + if [ -e /usr/local/lib/libgmp.a ] || [ -e /usr/local/lib/libgmp.dylib ]; then + echo "-----WARNING-----WARNING-----WARNING-----" + echo "You seem to have GMP installed in /usr/local." + echo "This is known to cause %N to fail to build." + echo "Please move aside /usr/local and try again." + echo "-----WARNING-----WARNING-----WARNING-----" + exit 1 + else + echo "Good, /usr/local/lib/libgmp* not present." + fi + set -x + ulimit -s `ulimit -s` + mkdir ../darwin_objdir + cd ../darwin_objdir + # build doesn't play well with GNU-make + # unsupported option '-static-libgcc' + export MAKE=/usr/bin/make + # Only need sysroot on 10.14+ because /usr/include has been removed + OSX_MAJOR_VERSION=`sw_vers -productVersion | cut -d. -f1-2` + if dpkg --compare-versions "$OSX_MAJOR_VERSION" ge "10.14"; then + # Get the unversioned SDK path + SDK_PATH=`dirname $(xcrun --sdk macosx --show-sdk-path)`/MacOSX.sdk + # This should really be --with-build-sysroot but that's not getting propagated through the entire build process. + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79885 + export USE_SYSROOT="--with-sysroot=${SDK_PATH}" + fi + # check for incompatible clang ( 6.0 << bad-clang << 7.2) + clangvers=`clang --version | cut -d\ -f4` + $(`dpkg --compare-versions $clangvers '>>' 6.0`) && $(`dpkg --compare-versions $clangvers '<<' 7.2`) && clangcheck='y' + if [ "$clangcheck" = "y" ]; then + ../gcc-%v/configure %c --with-build-config=bootstrap-debug + else + ../gcc-%v/configure %c + fi + # Use bootstrap-lean to reduce disk usage. + # Note that this causes plugin testsuite failures + # since the plugin headers must come from prev-gcc. + # make bootstrap-lean + make bootstrap + fink-package-precedence --prohibit-bdep=%n . +<< +InstallScript: << + #!/bin/sh -ev + darwinvers=`uname -r` + cd ../darwin_objdir + make -j 1 install DESTDIR=%d + mkdir -p %i/bin + + # Add symlinks to recreate previous naming of executables in %p/bin + # as well as %p/lib/gcc%type_num[gccver]/bin and new -fsf-%type_num[gccver] naming in %p/bin. + binfiles="gcc g++ c++ cpp gcov" + for binfile in $binfiles ; do + ln -s %p/lib/gcc%type_num[gccver]/bin/$binfile-fsf-%type_num[gccver] %i/lib/gcc%type_num[gccver]/bin/$binfile-%type_num[gccver] + ln -s %p/lib/gcc%type_num[gccver]/bin/$binfile-fsf-%type_num[gccver] %i/bin/$binfile-%type_num[gccver] + ln -s %p/lib/gcc%type_num[gccver]/bin/$binfile-fsf-%type_num[gccver] %i/bin/$binfile-fsf-%type_num[gccver] + done + binfiles="gfortran" + for binfile in $binfiles ; do + ln -s %p/lib/gcc%type_num[gccver]/bin/$binfile-fsf-%type_num[gccver] %i/lib/gcc%type_num[gccver]/bin/$binfile + ln -s %p/lib/gcc%type_num[gccver]/bin/$binfile-fsf-%type_num[gccver] %i/bin/$binfile + ln -s %p/lib/gcc%type_num[gccver]/bin/$binfile-fsf-%type_num[gccver] %i/bin/$binfile-fsf-%type_num[gccver] + done + + # Remove unsupported executables + binfiles="gcc-ar gcc-nm gcc-ranlib" + for binfile in $binfiles ; do + rm -f %i/lib/gcc%type_num[gccver]/bin/$binfile-fsf-%type_num[gccver] %i/lib/gcc%type_num[gccver]/bin/*-apple-darwin${darwinvers}-$binfile-fsf-%type_num[gccver] + done + + # Add symlinks for manpages under old names. + man1files="cpp g++ gcc gcov" + for man1file in $man1files ; do + ln -s $man1file-fsf-%type_num[gccver].1 %i/share/man/man1/$man1file-%type_num[gccver].1 + done + man1files="gfortran" + for man1file in $man1files ; do + ln -s $man1file-fsf-%type_num[gccver].1 %i/share/man/man1/$man1file.1 + done + + # Rename manpages with -fsf-%type_num[gccver] suffix and create symlinks to old names. + man7files="fsf-funding gfdl gpl" + for man7file in $man7files ; do + mv %i/share/man/man7/$man7file.7 %i/share/man/man7/$man7file-fsf-%type_num[gccver].7 + ln -s $man7file-fsf-%type_num[gccver].7 %i/share/man/man7/$man7file.7 + done + + # Add dir for installed info files, and link them to %i/share/info. + # the %i/lib/gcc%type_num[gccver]/info/* files will go into the -compiler package + # and the files in %i/share/info go into the main package, this allows + # the info files for specific compiler versions to be accessed with + # e.g. `info -d /fink_install_dir/lib/gcc%type_num[gccver]/info gcc', but the "main" info files will + # be available for the install gccXX package in %p/share/info, as usual + install -d -m 755 %i/share/info + for infofile in $(find %i/lib/gcc%type_num[gccver]/info -name '*.info*'); do + infobase=$(basename $infofile) + case $infofile in + *info) %p/bin/install-info --infodir=%i/lib/gcc%type_num[gccver]/info ${infofile} ;; + esac + ln -s %p/lib/gcc%type_num[gccver]/info/$infobase %i/share/info/$infobase + done + + # remove build path from .la files + perl -pi -e "s, \-L[^ ']*/%n-%v-%r/darwin_objdir/[^ ']*,,g" `find %i/lib/gcc%type_num[gccver]/lib -name '*.la'` + if [ "%m" = "arm64" -o "%m" = "arm" ]; then + arch=aarch64 + else + arch=%m + fi + + # @rpath install_names are required for aarch64 build, but break some linked binaries + # - enforce actual install paths here; take care to update the cross-referenced dylibs. + cd %d + for dylib in .%p/lib/gcc%type_num[gccver]/lib/lib*.[0-9].dylib; do + install_name_tool -id ${dylib#.} $dylib + install_name_tool -change @rpath/libgcc_s.1.1.dylib %p/lib/gcc%type_num[gccver]/lib/libgcc_s.1.1.dylib \ + -change @rpath/libstdc++.6.dylib %p/lib/gcc%type_num[gccver]/lib/libstdc++.6.dylib \ + -change @rpath/libquadmath.0.dylib %p/lib/gcc%type_num[gccver]/lib/libquadmath.0.dylib $dylib + done + otool -L .%p/lib/gcc%type_num[gccver]/lib/lib*.[0-9].dylib | grep '@rpath' && exit 2 + + cp %b/gcc/config/darwin-sections.def %i/lib/gcc%type_num[gccver]/lib/gcc/${arch}-apple-darwin${darwinvers}/%v/plugin/include/config +<< +SplitOff: << + Package: %N-shlibs + Replaces: << + gcc4 (<= 20050130-4), + gfortran-shlibs + << + Provides: << + gfortran-shlibs + << + Description: Shared libraries for %N + DocFiles: gcc/COPYING gcc/COPYING.LIB + Files: << + lib/gcc%type_num[gccver]/lib/libgfortran.5*.dylib + lib/gcc%type_num[gccver]/lib/libstdc++.6*.dylib + lib/gcc%type_num[gccver]/lib/libgcc_s.1*.dylib + lib/gcc%type_num[gccver]/lib/libitm.1*.dylib + lib/gcc%type_num[gccver]/lib/libssp.0*.dylib + lib/gcc%type_num[gccver]/lib/libobjc-gnu.4*.dylib + lib/gcc%type_num[gccver]/lib/libgomp.1*.dylib + lib/gcc%type_num[gccver]/lib/libquadmath.0*.dylib + lib/gcc%type_num[gccver]/lib/libatomic.1*.dylib + << + Shlibs: << + %p/lib/gcc%type_num[gccver]/lib/libgfortran.5.dylib 6.0.0 %n (>= 13.1.0-1) + %p/lib/gcc%type_num[gccver]/lib/libstdc++.6.dylib 7.0.0 %n (>= 13.1.0-1) + ( "%m" = "arm64" ) %p/lib/gcc%type_num[gccver]/lib/libgcc_s.1.1.dylib 1.0.0 %n (>= 13.1.0-1) + ( "%m" != "arm64" ) %p/lib/gcc%type_num[gccver]/lib/libgcc_s.1.dylib 1.0.0 %n (>= 13.1.0-1) + ( "%m" != "arm64" ) !%p/lib/gcc%type_num[gccver]/lib/libgcc_s.1.1.dylib + %p/lib/gcc%type_num[gccver]/lib/libitm.1.dylib 2.0.0 %n (>= 13.1.0-1) + %p/lib/gcc%type_num[gccver]/lib/libssp.0.dylib 1.0.0 %n (>= 13.1.0-1) + %p/lib/gcc%type_num[gccver]/lib/libobjc-gnu.4.dylib 5.0.0 %n (>= 13.1.0-1) + %p/lib/gcc%type_num[gccver]/lib/libgomp.1.dylib 2.0.0 %n (>= 13.1.0-1) + %p/lib/gcc%type_num[gccver]/lib/libquadmath.0.dylib 1.0.0 %n (>= 13.1.0-1) + %p/lib/gcc%type_num[gccver]/lib/libatomic.1.dylib 4.0.0 %n (>= 13.1.0-1) + << +<< +SplitOff2: << + Package: %N-compiler + Depends: << + gmp5-shlibs (>= 6.1.2-1), + isl22-shlibs, + libgettext8-shlibs, + libgmpxx5-shlibs (>= 6.1.2-1), + libiconv, + libmpc3-shlibs (>= 1.0.3-1), + libmpfr6-shlibs, + %N-shlibs (= %v-%r) + << + BuildDependsOnly: False + Description: Compiler Binaries for gcc%type_num[gccver] + DocFiles: gcc/COPYING gcc/COPYING.LIB gcc/ChangeLog gcc/ABOUT-GCC-NLS gcc/README.Portability + Files: << + bin/*-fsf-%type_num[gccver] + lib/gcc%type_num[gccver] + share/man/man1/*-fsf-%type_num[gccver].1 + share/man/man7/*-fsf-%type_num[gccver].7 + << +<< +License: GPL +Description: GNU Compiler Collection Version %type_num[gccver] +DescDetail: << + GCC, the GNU Compiler Collection, includes front ends for + C, C++, Objective-C, Objective-C++, Fortran and Ada. + . + C, C++, Objective C and Fortran are included in this package. + . + The C and C++ compilers are named gcc-13 and g++-13 to avoid + conflicts with gcc and g++ installed by the Apple Developer Tools. +<< +DescPackaging: << + Build with -fsf-%type_num[gccver] suffix and place non-overlapping files into new gcc%type_num[gccver]-compiler + package which can co-exist with other gccXX-compiler packages. Overlapping files + are left in main gcc%type_num[gccver] package which still conflicts with other gccXX packages. + + macOS10.14 no longer supports building 32bit libraries, so must disable multilib. + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87030 + + We use --with-sysroot to find the hidden system-headers in case /usr/include is not + populated. Ideally want --with-build-sysroot because we only need the headers to build + gcc and that should not impact the end product, but then anything using gccX will + need to add it's own -isysroot flag. + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79885 + + Homebrew patches for arm64/aarch64 build and macOS 13 from + https://github.com/Homebrew/formula-patches/blob/master/gcc/gcc-%v.diff + - libasan.* and libsubsan.* currently not built on darwin22+ - see + https://github.com/iains/gcc-darwin-arm64/commit/e722a1f4 + and missing from the 13.0 package until resolved. + There are both "1" and "1.1" versions of libgcc_s.dylib now, but only "1.1" on arm64. + Manual fixes of @rpath install_names required for aarch64 build to maintain downstream + package compatibility. +<< +Homepage: http://gcc.gnu.org/ +Maintainer: None +<<