<pre style='margin:0'>
Jimmy Yuen Ho Wong (wyuenho) pushed a commit to branch gcc11
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/79897b3083ee5f4b8441ce89f5113909c7eae8f1">https://github.com/macports/macports-ports/commit/79897b3083ee5f4b8441ce89f5113909c7eae8f1</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 79897b3083ee5f4b8441ce89f5113909c7eae8f1
</span>Author: Jimmy Yuen Ho Wong <wyuenho@users.noreply.github.com>
AuthorDate: Wed May 5 11:09:34 2021 +0100

<span style='display:block; white-space:pre;color:#404040;'>    gcc11: new port
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    * libgcc: update to 4.0 and require libgcc11 on macOS >= 11
</span>---
 lang/gcc11/Portfile       | 379 ++++++++++++++++++++++++++++++++++++++++++++++
 lang/gcc11/files/mp-gcc11 |   6 +
 lang/libgcc/Portfile      |   4 +-
 3 files changed, 387 insertions(+), 2 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/gcc11/Portfile b/lang/gcc11/Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..73800127c08
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/gcc11/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,379 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:filetype=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem                                       1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           select                       1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           compiler_blacklist_versions  1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           active_variants              1.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           conflicts_build              1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           cltversion                   1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+epoch               6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name                gcc11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage            https://gcc.gnu.org/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platforms           darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories          lang
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers         nomaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# an exception in the license allows dependents to not be GPL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license             {GPL-3+ Permissive}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description         The GNU compiler collection
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description    The GNU compiler collection, including front ends for \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    C, C++, Objective-C, Objective-C++ and Fortran.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version             11.1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport             libgcc11 { conflicts libgcc-devel }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  083384ca351ea1cb6e04d15425af2103c908edf4 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  4c4a6fb8a8396059241c2e674b85b351c26a5d678274007f076957afa1cc9ddf \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    78877216
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Primary releases
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+master_sites        https://ftpmirror.gnu.org/gcc/gcc-${version}/ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    https://mirror.its.dal.ca/gnu/gcc/gcc-${version}/ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    https://mirrors.kernel.org/gnu/gcc/gcc-${version}/ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/gcc/gcc-${version}/ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    https://ftp-stud.hs-esslingen.de/pub/Mirrors/ftp.gnu.org/gcc/gcc-${version}/ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    https://mirror.yongbok.net/gnu/gcc/gcc-${version}/ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    http://mirror.koddos.net/gcc/releases/gcc-${version}/ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ftp://ftp.gwdg.de/pub/linux/gcc/releases/gcc-${version}/ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ftp://gcc.ftp.nluug.nl/mirror/languages/gcc/releases/gcc-${version}/ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ftp://gcc.gnu.org/pub/gcc/releases/gcc-${version}/ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    gnu:gcc/gcc-${version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+distname            gcc-${version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_xz              yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles          Make-lang.in.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_build-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:texinfo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib-append  port:cctools \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:gmp \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    path:lib/pkgconfig/isl.pc:isl \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:ld64 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:libiconv \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:libmpc \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:mpfr \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:zlib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_run-append  port:gcc_select \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:libgcc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_skip_archcheck-append gcc_select ld64 cctools
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license_noconflict  gmp mpfr ppl libmpc zlib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set major           [lindex [split ${version} .-] 0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platform darwin {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.pre_args-append --build=${build_arch}-apple-darwin${os.major}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set gcc_configure_langs {c c++ objc obj-c++ lto fortran}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${subport} eq "gcc11"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    lappend gcc_configure_langs jit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.dir       ${workpath}/build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cmd       ${worksrcpath}/configure
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args      --enable-languages=[join ${gcc_configure_langs} ","] \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --libdir=${prefix}/lib/${name} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --includedir=${prefix}/include/${name} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --infodir=${prefix}/share/info \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --mandir=${prefix}/share/man \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --datarootdir=${prefix}/share/gcc-${major} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --with-local-prefix=${prefix} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --with-system-zlib \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --disable-nls \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --program-suffix=-mp-${major} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --with-gxx-include-dir=${prefix}/include/${name}/c++/ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --with-gmp=${prefix} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --with-mpfr=${prefix} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --with-mpc=${prefix} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --with-isl=${prefix} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --disable-multilib \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --enable-lto \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --enable-libstdcxx-time \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --with-as=${prefix}/bin/as \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --with-ld=${prefix}/bin/ld \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --with-ar=${prefix}/bin/ar \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --with-bugurl=https://trac.macports.org/newticket \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --enable-host-shared
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# see https://lists.macports.org/pipermail/macports-dev/2017-August/036209.html
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# --disable-tls does not limit functionality
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# it only determines how std::call_once works
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --disable-tls
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.env-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    AR_FOR_TARGET=${prefix}/bin/ar \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    AS_FOR_TARGET=${prefix}/bin/as \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    LD_FOR_TARGET=${prefix}/bin/ld \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    NM_FOR_TARGET=${prefix}/bin/nm \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    OBJDUMP_FOR_TARGET=${prefix}/bin/objdump \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    RANLIB_FOR_TARGET=${prefix}/bin/ranlib \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    STRIP_FOR_TARGET=${prefix}/bin/strip \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    OTOOL=${prefix}/bin/otool \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    OTOOL64=${prefix}/bin/otool
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# clang (as) from Xcode 12.5 has various problems with gcc build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if { ${os.platform} eq "darwin" && \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         ( [ vercmp ${xcodeversion} 12.5 ] >= 0 || [ vercmp ${cltversion} 12.5 ] >= 0 ) } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    pre-configure {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_warn "Applying '--without-build-config' workaround to Xcode ${xcodeversion} / CLT ${cltversion}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_warn "If versions > 12.5 please check if it is still required"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # clang 11 and older have issues with macOS 11.3 (Xcode 12.5) SDK
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # https://trac.macports.org/ticket/62770
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    compiler.blacklist-append {macports-clang-[5-9].0} {macports-clang-1[0-1]}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # gcc has build issues on macOS 11.3 with the use of Xcode clang as 'as'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100340
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # https://trac.macports.org/ticket/62775
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append  --without-build-config
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+pre-configure {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Set package info
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append --with-pkgversion="MacPorts ${name} ${version}_${revision}${portvariants}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {${configure.sdkroot} ne ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # We should be using --with-build-sysroot here.  Using --with-sysroot
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # changes the behavior of the installed gcc to look in that sysroot
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # by default instead of /.  Using --with-build-sysroot is supposed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # to be used during the build but not impact the installed product.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # Unfortunately, the build fails because the value doesn't get
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # plumbed everywhere it is supposed to.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        #
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # https://trac.macports.org/ticket/53726
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79885
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # if the sdkroot is one of the current, rapidly changing SDKS, use the generic one
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.args-append --with-sysroot="[regsub {MacOSX1[1-9]\.[0-9]+\.sdk} ${configure.sdkroot} {MacOSX.sdk}]"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://trac.macports.org/ticket/29067
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://trac.macports.org/ticket/29104
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://trac.macports.org/ticket/47996
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://trac.macports.org/ticket/58493
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.blacklist-append {clang < 800} gcc-4.0 *gcc-4.2 {llvm-gcc-4.2 < 2336.1} {macports-clang-3.[4-7]}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://build.macports.org/builders/ports-10.13_x86_64-builder/builds/105513/steps/install-port/logs/stdio
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# c++/v1/functional:1408:2: error: no member named 'fancy_abort' in namespace 'std::__1'; did you mean simply 'fancy_abort'?
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.blacklist-append {clang < 1000}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# "-stdlib" would be passed on to the bootstrap compiler if present
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cxx_stdlib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.dir           ${configure.dir}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.target        bootstrap-lean
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_parallel_build  yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot.target     install install-info-host
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Is this gcc release supported here.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if { ${os.major} < 11 } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    known_fail      yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    pre-fetch {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_error "${name} ${version} is not supported on Darwin ${os.major}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        return -code error "incompatible OS X version"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# gcc cannot build if libunwind-headers is active
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+conflicts_build-append libunwind-headers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# List of dylibs to be installed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Note that we really don't want to include libgcc_ext.10.[45].dylib here, but install_name_tool
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# doesn't know how to change the id of stubs, and it's easier than recreating them for each
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# gcc port.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set dylibs {libgcc_ext.10.4.dylib libgcc_ext.10.5.dylib libgcc_s.1.dylib libgcc_s.2.dylib libgfortran.5.dylib libquadmath.0.dylib libstdc++.6.dylib libobjc-gnu.4.dylib libgomp.1.dylib libitm.1.dylib libssp.0.dylib libasan.6.dylib libubsan.1.dylib libatomic.1.dylib}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${subport} eq "libgcc11"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Set conflict against port providing primary runtime
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if { ${os.major} < 10 } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        conflicts libgcc7
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        conflicts libgcc10
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Activate hack for new libgcc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # https://trac.macports.org/wiki/PortfileRecipes#deactivatehack
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    pre-activate {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {![catch {set installed [lindex [registry_active libgcc9] 0]}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # Extract the epoch of the installed libgcc9
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set _epoch [lindex $installed 5]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # If < 3 need to deactivate
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {[vercmp $_epoch 3] < 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                registry_deactivate_composite libgcc9 "" [list ports_nodepcheck 1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {![catch {set installed [lindex [registry_active libgcc-devel] 0]}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # Extract the epoch of the installed libgcc-devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set _epoch [lindex $installed 5]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # If < 4 need to deactivate
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {[vercmp $_epoch 4] < 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                registry_deactivate_composite libgcc-devel "" [list ports_nodepcheck 1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {![catch {set installed [lindex [registry_active libgcc10] 0]}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # Extract the epoch of the installed libgcc10
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set _epoch [lindex $installed 5]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # If < 5 need to deactivate
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {[vercmp $_epoch 5] < 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                registry_deactivate_composite libgcc10 "" [list ports_nodepcheck 1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-replace \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        --libdir=${prefix}/lib/${name} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        --libdir=${prefix}/lib/libgcc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # see https://trac.macports.org/ticket/54766
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-replace \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        --includedir=${prefix}/include/${name} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        --includedir=${prefix}/include/gcc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-replace \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        --with-gxx-include-dir=${prefix}/include/${name}/c++/ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        --with-gxx-include-dir=${prefix}/include/gcc/c++/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # http://trac.macports.org/ticket/35770
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # http://trac.macports.org/ticket/38814
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # While there can be multiple versions of these runtimes in a single
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # process, it is not possible to pass objects between different versions,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # so we simplify this by having the libgcc port provide the newest version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # of these runtimes for all versions of gcc to use.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    #
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # If there is a binary incompatible change to the runtime in a future
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # version of gcc, then the latest version of gcc to provide a given ABI
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # version should continue to provide a subport for that and older gcc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # versions.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_run
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-delete   port:zlib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_build-append {*}${depends_lib}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib          port:zlib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    post-destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # Temporary working dir for dylibs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        file mkdir ${destroot}${prefix}/lib/libgcc.merged
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # loop over libs to install
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        foreach dylib ${dylibs} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # Different OS versions (e.g. Leopard) or architectures (e.g. PPC) don't produce all the dylibs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # https://trac.macports.org/ticket/40098
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # https://trac.macports.org/ticket/40100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {! [file exists ${destroot}${prefix}/lib/libgcc/${dylib}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                continue
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            move ${destroot}${prefix}/lib/libgcc/${dylib} ${destroot}${prefix}/lib/libgcc.merged
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {[variant_exists universal] && [variant_isset universal]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                foreach archdir [glob ${destroot}${prefix}/lib/libgcc/*/] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    set archdir_nodestroot [string map "${destroot}/ /" ${archdir}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    if {[file exists ${archdir}/${dylib}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        system "install_name_tool -id ${prefix}/lib/libgcc/${dylib} ${archdir}/${dylib}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        foreach link [glob -tails -directory ${archdir} *.dylib] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            system "install_name_tool -change ${archdir_nodestroot}${link} ${prefix}/lib/libgcc/${link} ${archdir}/${dylib}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        system "lipo -create -output ${destroot}${prefix}/lib/libgcc.merged/${dylib}~ ${destroot}${prefix}/lib/libgcc.merged/${dylib} ${archdir}/${dylib} && mv ${destroot}${prefix}/lib/libgcc.merged/${dylib}~ ${destroot}${prefix}/lib/libgcc.merged/${dylib}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # strip debug symbols to supress debugger warnings:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # http://trac.macports.org/attachment/ticket/34831
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {! [string match *libgcc_ext* ${dylib}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                system "strip -x ${destroot}${prefix}/lib/libgcc.merged/${dylib}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        file delete -force ${destroot}${prefix}/bin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        file delete -force ${destroot}${prefix}/share
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        file delete -force ${destroot}${prefix}/lib/libgcc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        file delete -force ${destroot}${prefix}/libexec
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        move ${destroot}${prefix}/lib/libgcc.merged ${destroot}${prefix}/lib/libgcc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # For binary compatibility with binaries that linked against the old libstdcxx port
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ln -s libgcc/libstdc++.6.dylib ${destroot}${prefix}/lib/libstdc++.6.dylib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+} else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    post-destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        file delete ${destroot}${prefix}/share/info/dir
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        foreach file [glob ${destroot}${prefix}/share/{info,man/man7}/*] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set extension [file extension ${file}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set newfile [regsub "${extension}$" ${file} "-mp-${major}${extension}"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            file rename ${file} ${newfile}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # loop over libs to install
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        foreach dylib ${dylibs} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # Different OS versions (e.g. Leopard) or architectures (e.g. PPC) don't produce all the dylibs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # https://trac.macports.org/ticket/40098
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # https://trac.macports.org/ticket/40100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {[file exists ${destroot}${prefix}/lib/${name}/${dylib}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                delete ${destroot}${prefix}/lib/${name}/${dylib}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                ln -s ${prefix}/lib/libgcc/${dylib} ${destroot}${prefix}/lib/${name}/${dylib}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {[variant_exists universal] && [variant_isset universal]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                foreach archdir [glob ${destroot}${prefix}/lib/${name}/*/] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    if {[file exists ${archdir}/${dylib}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        delete ${archdir}/${dylib}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        ln -s ${prefix}/lib/libgcc/${dylib} ${archdir}/${dylib}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    select.group        gcc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    select.file         ${filespath}/mp-${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platform powerpc {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.universal_archs ppc ppc64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platform i386 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.universal_archs i386 x86_64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant universal {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-delete --disable-multilib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# the generated compiler doesn't accept -arch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.env-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    "CPP=${configure.cc} -E" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    "CXXCPP=${configure.cxx} -E"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.env-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    "CPP=${configure.cc} -E" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    "CXXCPP=${configure.cxx} -E"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cc-append [get_canonical_archflags]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cc_archflags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cxx-append ${configure.cxx_archflags}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cxx_archflags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.objc_archflags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.ld_archflags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.universal_cflags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.universal_cxxflags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.universal_ldflags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.universal_args
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.type      regex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.url       http://mirror.koddos.net/gcc/releases/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.regex     gcc-(${major}\\.\[0-9.\]+)/
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/gcc11/files/mp-gcc11 b/lang/gcc11/files/mp-gcc11
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..ee0de6dec26
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/gcc11/files/mp-gcc11
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/gcc-mp-11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/cpp-mp-11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/g++-mp-11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/gcov-mp-11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/gfortran-mp-11
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/libgcc/Portfile b/lang/libgcc/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index fbfd9c4cf4d..a81ef14c01f 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/libgcc/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/libgcc/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -5,7 +5,7 @@ PortGroup select    1.0
</span> 
 epoch               3
 name                libgcc
<span style='display:block; white-space:pre;background:#ffe0e0;'>-version             3.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version             4.0
</span> revision            0
 
 conflicts           libgcc-devel
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -36,7 +36,7 @@ if { ${os.major} < 10 } {
</span>     if { ${os.major} < 11 } {
         set gcc_version 8
     } else {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        set gcc_version 10
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set gcc_version 11
</span>     }
 }
 depends_lib port:libgcc${gcc_version}
</pre><pre style='margin:0'>

</pre>