<pre style='margin:0'>
Jeremy Huddleston Sequoia (jeremyhu) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/d1096f65193e6a12ccc49649f72049f403ebb4ab">https://github.com/macports/macports-ports/commit/d1096f65193e6a12ccc49649f72049f403ebb4ab</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new d1096f65193 muniversal: Initial support for Apple Silicon
</span>d1096f65193 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit d1096f65193e6a12ccc49649f72049f403ebb4ab
</span>Author: Jeremy Huddleston Sequoia <jeremyhu@macports.org>
AuthorDate: Sun Jul 19 23:23:20 2020 -0700

<span style='display:block; white-space:pre;color:#404040;'>    muniversal: Initial support for Apple Silicon
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    This reverts commit 409fb4e3ee7518a370a43d9cec3b5efea6e7b5ac.
</span>---
 _resources/port1.0/group/muniversal-1.0.tcl | 77 +++++++++++++++++++++++------
 1 file changed, 61 insertions(+), 16 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/_resources/port1.0/group/muniversal-1.0.tcl b/_resources/port1.0/group/muniversal-1.0.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index c6cfd342021..2cb6308a63e 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/_resources/port1.0/group/muniversal-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/_resources/port1.0/group/muniversal-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -52,6 +52,8 @@ proc muniversal_get_arch_flag {arch {fortran ""}} {
</span>             set archf -m32
         } elseif { ${os.arch}=="powerpc" && ${arch}=="ppc64" } {
             set archf -m64
<span style='display:block; white-space:pre;background:#e0ffe0;'>+        } elseif { ${os.arch}=="arm64" && ${arch}=="arm64" } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set archf -m64
</span>         } else {
             if { ${fortran}=="" } {
                 return -code error "selected compiler can't build for ${arch}"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -115,14 +117,20 @@ variant universal {
</span> 
     # user has specified that build platform must be able to run binaries for supported architectures
     if { ${merger_must_run_binaries}=="yes" } {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        if { ${os.arch}=="i386" } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {${os.arch}=="arm64"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set universal_archs_supported [ldelete ${universal_archs_supported} "ppc"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set universal_archs_supported [ldelete ${universal_archs_supported} "ppc64"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set universal_archs_supported [ldelete ${universal_archs_supported} "i386"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        } elseif { ${os.arch}=="i386" } {
</span>             set universal_archs_supported [ldelete ${universal_archs_supported} "ppc64"]
<span style='display:block; white-space:pre;background:#e0ffe0;'>+            set universal_archs_supported [ldelete ${universal_archs_supported} "arm64"]
</span>             if {${os.major} >= 9 && [sysctl hw.cpu64bit_capable] == 0} {
                 set universal_archs_supported [ldelete ${universal_archs_supported} "x86_64"]
             }
         } else {
             set universal_archs_supported [ldelete ${universal_archs_supported} "i386"]
             set universal_archs_supported [ldelete ${universal_archs_supported} "x86_64"]
<span style='display:block; white-space:pre;background:#e0ffe0;'>+            set universal_archs_supported [ldelete ${universal_archs_supported} "arm64"]
</span>             if {${os.major} >= 9 && [sysctl hw.cpu64bit_capable] == 0} {
                 set universal_archs_supported [ldelete ${universal_archs_supported} "ppc64"]
             }
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -145,23 +153,45 @@ variant universal {
</span> 
     # if merger_no_3_archs is yes, prune universal_archs_to_use until it only has two elements
     if { ${merger_no_3_archs}=="yes" } {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        if { [llength ${universal_archs_to_use}] == 3 } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            # first try to remove cross-compiled 64-bit arch
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            if { ${os.arch}=="i386" } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if { [llength ${universal_archs_to_use}] >= 3 } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # First, try to remove ppc64 unless we're powerpc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if { ${os.arch} != "powerpc" } {
</span>                 set universal_archs_to_use [ldelete ${universal_archs_to_use} "ppc64"]
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set universal_archs_to_use [ldelete ${universal_archs_to_use} "x86_64"]
</span>             }
         }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        if { [llength ${universal_archs_to_use}] == 3 } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            # next try to remove cross-compiled 32-bit arch
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            if { ${os.arch}=="i386" } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if { [llength ${universal_archs_to_use}] >= 3 } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # Next, delete archs that are not evolutionarilary adjacent
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if { ${os.arch} == "powerpc" } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                set universal_archs_to_use [ldelete ${universal_archs_to_use} "arm64"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            } else if {${os.arch} == "arm64" } {
</span>                 set universal_archs_to_use [ldelete ${universal_archs_to_use} "ppc"]
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            } else {
</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;'>+        if { [llength ${universal_archs_to_use}] >= 3 } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # Next continue to prune architectures that are not evolutionarilary adjacent
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if { ${os.arch} == "arm64" } {
</span>                 set universal_archs_to_use [ldelete ${universal_archs_to_use} "i386"]
<span style='display:block; white-space:pre;background:#e0ffe0;'>+            } else if { ${os.arch} == "powerpc" } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                set universal_archs_to_use [ldelete ${universal_archs_to_use} "x86_64"]
</span>             }
         }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        if { [llength ${universal_archs_to_use}] == 3 } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # arm64 hosts should be down to arm64 + x86_64 at this point
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # i386 hosts should be down to ppc + i386 + x86_64 at this point
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # powerpc hosts should be down to ppc + ppc64 + i386 at this point
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if { [llength ${universal_archs_to_use}] >= 3 } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # Lastly, remove remaining cross-compiled arch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if { ${os.arch} == "powerpc" } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                set universal_archs_to_use [ldelete ${universal_archs_to_use} "i386"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            } else if { ${os.arch} == "i386" } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                set universal_archs_to_use [ldelete ${universal_archs_to_use} "ppc"]
</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;'>+        if { [llength ${universal_archs_to_use}] >= 3 } {
</span>             # at least one arch should have been removed from universal_archs_to_use
             error "Should Not Happen"
         }
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -252,9 +282,11 @@ variant universal {
</span>                     set bits_differ 1
                 }
                 # check if building for a completely different arch
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                if {$bits_differ || (${os.arch}=="i386" && (${arch}=="ppc" || ${arch}=="ppc64"))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        || (${os.arch}=="powerpc" && (${arch}=="i386" || ${arch}=="x86_64"))} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                if {$bits_differ || (${os.arch}=="arm64" && (${arch}=="i386" || ${arch}=="x86_64" || ${arch}=="ppc" || ${arch}=="ppc64"))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                 || (${os.arch}=="i386" && (${arch}=="arm64" || ${arch}=="ppc" || ${arch}=="ppc64"))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                 || (${os.arch}=="powerpc" && (${arch}=="i386" || ${arch}=="x86_64"))} {
</span>                     switch -- ${arch} {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+                        arm64   {set host "--host=aarch64-apple-${os.platform}${os.version}"}
</span>                         x86_64  {set host "--host=x86_64-apple-${os.platform}${os.version}"}
                         i386    {set host "--host=i686-apple-${os.platform}${os.version}"}
                         ppc     {set host "--host=powerpc-apple-${os.platform}${os.version}"}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -793,15 +825,28 @@ variant universal {
</span> --changed-group-format='#ifndef __LP64__
 %<#else
 %>#endif
<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 diffFormatArmElse {--old-group-format='#ifdef __arm64__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%<#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+' \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--new-group-format='#ifndef __arm64__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%>#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+' \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--unchanged-group-format='%=' \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--changed-group-format='#ifdef __arm64__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%<#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%>#endif
</span> '}
 
         if { ![info exists merger_dont_diff] } {
             set merger_dont_diff {}
         }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        merge2Dir  ${workpath}/destroot-ppc      ${workpath}/destroot-ppc64 ${workpath}/destroot-powerpc  ""  ppc ppc64    ${merger_dont_diff}  ${diffFormatM}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        merge2Dir  ${workpath}/destroot-i386     ${workpath}/destroot-x86_64 ${workpath}/destroot-intel   ""  i386 x86_64  ${merger_dont_diff}  ${diffFormatM}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        merge2Dir  ${workpath}/destroot-powerpc  ${workpath}/destroot-intel ${workpath}/destroot          ""  powerpc x86  ${merger_dont_diff}  ${diffFormatProc}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        merge2Dir  ${workpath}/destroot-ppc      ${workpath}/destroot-ppc64     ${workpath}/destroot-powerpc   ""  ppc ppc64      ${merger_dont_diff}  ${diffFormatM}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        merge2Dir  ${workpath}/destroot-i386     ${workpath}/destroot-x86_64    ${workpath}/destroot-intel     ""  i386 x86_64    ${merger_dont_diff}  ${diffFormatM}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        merge2Dir  ${workpath}/destroot-powerpc  ${workpath}/destroot-intel     ${workpath}/destroot-ppc-intel ""  powerpc x86    ${merger_dont_diff}  ${diffFormatProc}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        merge2Dir  ${workpath}/destroot-arm64    ${workpath}/destroot-ppc-intel ${workpath}/destroot           ""  arm64 ppcintel ${merger_dont_diff}  ${diffFormatArmElse}
</span>     }
 
     test {
</pre><pre style='margin:0'>

</pre>