<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>