<pre style='margin:0'>
Chris Jones (cjones051073) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/7aa2ff679e61f923475b6c2a56958da61205430b">https://github.com/macports/macports-ports/commit/7aa2ff679e61f923475b6c2a56958da61205430b</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 7aa2ff6 cctools: try to use clang in as
</span>7aa2ff6 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 7aa2ff679e61f923475b6c2a56958da61205430b
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Fri Jan 25 02:01:15 2019 +1100
<span style='display:block; white-space:pre;color:#404040;'> cctools: try to use clang in as
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> The clang integrated assembler is way more up-to-date than the ancient
</span><span style='display:block; white-space:pre;color:#404040;'> pre-GPLv3 version of gas that is the alternative. The latter doesn't
</span><span style='display:block; white-space:pre;color:#404040;'> know about newer instructions such as AVX. The as(1) shipped with
</span><span style='display:block; white-space:pre;color:#404040;'> recent Xcode versions will just run clang behind the scenes under most
</span><span style='display:block; white-space:pre;color:#404040;'> circumstances for this reason.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Our cctools can't actually depend on clang because that would create a
</span><span style='display:block; white-space:pre;color:#404040;'> circular dependency. So we'll try to run the clang corresponding to the
</span><span style='display:block; white-space:pre;color:#404040;'> LLVM being used by cctools, and if that isn't present, try the system
</span><span style='display:block; white-space:pre;color:#404040;'> clang in /usr/bin if we're on an OS version that has a clang with a
</span><span style='display:block; white-space:pre;color:#404040;'> working integrated assembler. (The ancient gas is still used as a final
</span><span style='display:block; white-space:pre;color:#404040;'> fallback.)
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Fixes: https://trac.macports.org/ticket/37846
</span>---
devel/cctools/Portfile | 13 ++++++++++++-
devel/cctools/files/as-try-clang.patch | 34 ++++++++++++++++++++++++++++++++++
devel/cctools/files/not-clang.patch | 12 ------------
3 files changed, 46 insertions(+), 13 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/cctools/Portfile b/devel/cctools/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index b83bdf2..eba645b 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/cctools/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/cctools/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -6,6 +6,7 @@ name cctools
</span> # Xcode 10.0
version 921
set ld64_version 409.12
<span style='display:block; white-space:pre;background:#e0ffe0;'>+revision 1
</span> categories devel
platforms darwin
maintainers {jeremyhu @jeremyhu} openmaintainer
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -37,7 +38,7 @@ patchfiles cctools-829-lto.patch \
</span> PR-12400897.patch \
cctools-862-prunetrie.patch \
cctools-921-noavx512.patch \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- not-clang.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ as-try-clang.patch
</span>
if {${os.major} < 11} {
patchfiles-append snowleopard-strnlen.patch
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -139,8 +140,18 @@ post-patch {
</span> reinplace "s:\"llvm-objdump\":\"llvm-objdump-mp-${llvm_version}\":" ${worksrcpath}/otool/main.c
reinplace "s:\"llvm-mc\":\"llvm-mc-mp-${llvm_version}\":" ${worksrcpath}/as/driver.c
reinplace "s:@@LLVM_LIBDIR@@:${prefix}/libexec/llvm-${llvm_version}/lib:" ${worksrcpath}/libstuff/lto.c
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace "s:__MP_CLANG_NAME__:clang-mp-${llvm_version}:" ${worksrcpath}/as/driver.c
</span> }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${os.major} >= 11} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set try_system_clang 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # clang's integrated assembler may not work well on 10.6 and doesn't
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # exist on older OS versions.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set try_system_clang 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace "s:__TRY_SYSTEM_CLANG__:${try_system_clang}:" ${worksrcpath}/as/driver.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> foreach file [glob ${worksrcpath}/{*/,}Makefile] {
reinplace "s:/usr/local:@PREFIX@:g" ${file}
reinplace "s:/usr:@PREFIX@:g" ${file}
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/cctools/files/as-try-clang.patch b/devel/cctools/files/as-try-clang.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..22ee4de
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/cctools/files/as-try-clang.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,34 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- as/driver.c.orig 2018-09-19 08:01:56.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ as/driver.c 2019-01-25 01:35:21.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -295,11 +295,18 @@ char **envp)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ arch_flag.cputype == CPU_TYPE_ARM64 ||
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ arch_flag.cputype == CPU_TYPE_ARM64_32 ||
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ arch_flag.cputype == CPU_TYPE_ARM)){
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- as = makestr(prefix, CLANG, NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if(access(as, F_OK) != 0){
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- printf("%s: assembler (%s) not installed\n", progname, as);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- exit(1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ as = makestr(prefix, "__MP_CLANG_NAME__", NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if(access(as, F_OK) != 0){
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if __TRY_SYSTEM_CLANG__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ as = "/usr/bin/clang";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if(access(as, F_OK) != 0){
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ as = NULL;
</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;'>++ as = NULL;
</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;'>++ if (as != NULL) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ new_argv = allocate((argc + 8) * sizeof(char *));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ new_argv[0] = as;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ j = 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -360,6 +367,7 @@ char **envp)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit(0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit(1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } /* as != NULL */
</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;color:#808080;'>diff --git a/devel/cctools/files/not-clang.patch b/devel/cctools/files/not-clang.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 6db44a2..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/cctools/files/not-clang.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,12 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- as/driver.c.orig 2015-11-23 21:01:45.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ as/driver.c 2015-11-23 21:09:24.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -280,6 +280,9 @@ char **envp)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- arch_flag.cputype == CPU_TYPE_ARM)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- run_clang = 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ /* MACPORTS: Don't use the clang assembler for now. */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ run_clang = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Use the clang as the assembler if is the default or asked to with
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * the -q flag. But don't use it asked to use the system assembler
</span></pre><pre style='margin:0'>
</pre>