<pre style='margin:0'>
Ken (kencu) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/50cdf084768436a421e2c6d05e995d122bc93bca">https://github.com/macports/macports-ports/commit/50cdf084768436a421e2c6d05e995d122bc93bca</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 50cdf084768 mozjs60: Support for 10.4, 10.5, and PowerPC (#12186)
</span>50cdf084768 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 50cdf084768436a421e2c6d05e995d122bc93bca
</span>Author: Evan Miller <emmiller@gmail.com>
AuthorDate: Mon Sep 13 15:28:14 2021 -0400
<span style='display:block; white-space:pre;color:#404040;'> mozjs60: Support for 10.4, 10.5, and PowerPC (#12186)
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Closes: https://trac.macports.org/ticket/62350
</span><span style='display:block; white-space:pre;color:#404040;'> See: https://trac.macports.org/ticket/57032
</span>---
lang/mozjs60/Portfile | 57 ++++++++++++-
lang/mozjs60/files/patch-config-powerpc.diff | 19 +++++
lang/mozjs60/files/patch-js-shell.diff | 15 ++++
lang/mozjs60/files/patch-libatomic.diff | 12 +++
.../files/patch-malloc_default_purgeable_zone.diff | 19 +++++
lang/mozjs60/files/patch-no-libc++.diff | 49 +++++++++++
lang/mozjs60/files/patch-powerpc.diff | 95 ++++++++++++++++++++++
lang/mozjs60/files/patch-pthread_setname_np.diff | 20 +++++
8 files changed, 285 insertions(+), 1 deletion(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/mozjs60/Portfile b/lang/mozjs60/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 00f41f72eff..65b31691a2f 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/mozjs60/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/mozjs60/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -107,11 +107,66 @@ if {${universal_possible} && [variant_isset universal]} {
</span> configure.args-append \
--host=i686-apple-${os.platform}${os.major} \
--target=i686-apple-${os.platform}${os.major}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- } elseif {${build_arch} eq "x86_64"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {${build_arch} in "x86_64 ppc ppc64"} {
</span> configure.args-append \
--host=${build_arch}-apple-${os.platform}${os.major} \
--target=${build_arch}-apple-${os.platform}${os.major}
}
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# Now for 10.4/10.5...
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if { ${os.platform} eq "darwin" && ${os.major} < 10 } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patchfiles-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patch-malloc_default_purgeable_zone.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patch-no-libc++.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patch-js-shell.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patch-libatomic.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patch-powerpc.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patch-pthread_setname_np.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ post-configure {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Some of the patches disrupt the configure timestamp chain
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ touch ${worksrcpath}/js/src/configure
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ touch ${worksrcpath}/js/src/obj/config.status
</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 { ${os.major} == 8 } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Tiger ships with Make 3.80; need 3.81 or later
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_build-append port:gmake
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ build.cmd gmake
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.cppflags-append -D__DARWIN_UNIX03
</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;'>+ # the old gas assembler doesn't like the included ICU files.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Also there's a run-time failure in u_init(), so just
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # disable ICU until someone wants to sort it out.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.args-append --without-intl-api
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[string match *gcc* ${configure.compiler}] && ${os.arch} eq "powerpc" } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Make structs size-compatible with Intel (fixes several static_asserts)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.cxxflags-append -mone-byte-bool
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # The C API is littered with bools and references to bools, so we need to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # make sure clients (including gjs and policykit) also use the magic flag.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # We do this via pkg-config and js-config; note that with this approach
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # there is some danger that distinct compilation units within the same
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # project may end up with different bool sizes (for example, if a project's
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Makefile only applies the result of `pkg-config --cflags` to source files
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # that actually consume <jsapi.h>), so some care is needed when compiling
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # against this library. The benefit of this approach is that projects using
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # pkg-config don't need to remember this flag, and well-designed projects
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # can "contain" one-byte bools and not have to expose them downstream.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patchfiles-append patch-config-powerpc.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ notes-append "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ In order to run on PowerPC, ${name} has been compiled with the special
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ compiler flag, -mone-byte-bool. Most users are unaffected; however, if you
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ are a software developer compiling against the SpiderMonkey C API (jsapi.h),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ you will need to add this compiler flag to your own projects, or prepare to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ encounter unexpected program behavior. The flag will be added automatically
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ to projects that use pkg-config or js-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> livecheck.type none
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/mozjs60/files/patch-config-powerpc.diff b/lang/mozjs60/files/patch-config-powerpc.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..7d41f469ea3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/mozjs60/files/patch-config-powerpc.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,19 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- js/src/build/js.pc.in.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ js/src/build/js.pc.in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -8,4 +8,4 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Version: @MOZILLA_VERSION@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @PKGCONF_REQUIRES_PRIVATE@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Libs: -L${libdir} -l@JS_LIBRARY_NAME@ -lmozglue
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-Cflags: -include ${includedir}/@JS_LIBRARY_NAME@/js/RequiredDefines.h -I${includedir}/@JS_LIBRARY_NAME@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Cflags: -mone-byte-bool -include ${includedir}/@JS_LIBRARY_NAME@/js/RequiredDefines.h -I${includedir}/@JS_LIBRARY_NAME@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- js/src/build/js-config.in.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ js/src/build/js-config.in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -108,7 +108,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if test "$echo_cflags" = "yes"; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- echo "-std=gnu++11 -include $includedir/$JS_LIBRARY_NAME/js/RequiredDefines.h -I$includedir/$JS_LIBRARY_NAME $NSPR_CFLAGS"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ echo "-mone-byte-bool -std=gnu++11 -include $includedir/$JS_LIBRARY_NAME/js/RequiredDefines.h -I$includedir/$JS_LIBRARY_NAME $NSPR_CFLAGS"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if test "$echo_libs" = "yes"; then
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/mozjs60/files/patch-js-shell.diff b/lang/mozjs60/files/patch-js-shell.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..b5169508e14
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/mozjs60/files/patch-js-shell.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,15 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Actually print something useful if the JS engine can't be started for some
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+reason.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- js/src/shell/js.cpp.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ js/src/shell/js.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -8185,7 +8185,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ SetOutputFile("JS_STDERR", &rcStderr, &gErrFile);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Start the engine.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (!JS_Init()) return 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ const char *message = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if ((message = JS_InitWithFailureDiagnostic())) { fprintf(stderr, "%s\n", message); return 1; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ auto shutdownEngine = MakeScopeExit([]() { JS_ShutDown(); });
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/mozjs60/files/patch-libatomic.diff b/lang/mozjs60/files/patch-libatomic.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..5048595acb9
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/mozjs60/files/patch-libatomic.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,12 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- js/src/build/moz.build.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ js/src/build/moz.build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -47,6 +47,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 'zlib',
</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 CONFIG['MOZ_NEEDS_LIBATOMIC']:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ OS_LIBS += ['atomic']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if CONFIG['OS_ARCH'] not in ('WINNT', 'HP-UX'):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ OS_LIBS += [
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 'm',
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/mozjs60/files/patch-malloc_default_purgeable_zone.diff b/lang/mozjs60/files/patch-malloc_default_purgeable_zone.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..1891fd40e0f
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/mozjs60/files/patch-malloc_default_purgeable_zone.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,19 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- memory/build/zone.c.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ memory/build/zone.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -340,7 +340,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // malloc_default_purgeable_zone is called beforehand so that the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // default purgeable zone is created when the default zone is still
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // a scalable_zone.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- malloc_zone_t* purgeable_zone = malloc_default_purgeable_zone();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // There is a problem related to the above with the system nano zone, which
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // is hard to work around from here, and that is instead worked around by
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -370,8 +369,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // On OSX >= 10.6, unregistering replaces the purgeable zone with the last
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // registered zone above, i.e the default zone. Registering it again then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // puts it at the end, obviously after the default zone.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- malloc_zone_unregister(purgeable_zone);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- malloc_zone_register(purgeable_zone);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ default_zone = get_default_zone();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } while (default_zone != &zone);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/mozjs60/files/patch-no-libc++.diff b/lang/mozjs60/files/patch-no-libc++.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..140fbfebae3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/mozjs60/files/patch-no-libc++.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,49 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- build/build-clang/build-clang.py.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ build/build-clang/build-clang.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -503,9 +503,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if is_darwin():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extra_cflags = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- extra_cxxflags = ["-stdlib=libc++"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ extra_cxxflags = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extra_cflags2 = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- extra_cxxflags2 = ["-stdlib=libc++"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ extra_cxxflags2 = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extra_asmflags = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extra_ldflags = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ elif is_linux():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- build/clang-plugin/moz.build.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ build/clang-plugin/moz.build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -62,8 +62,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # libc++ is required to build plugins against clang on OS X.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if CONFIG['HOST_OS_ARCH'] == 'Darwin':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- CXXFLAGS += ['-stdlib=libc++']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- LDFLAGS += ['-lc++']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ CXXFLAGS += []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ LDFLAGS += []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DIRS += [
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 'tests',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- js/src/old-configure.in.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ js/src/old-configure.in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -565,7 +565,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *-darwin*)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ MOZ_OPTIMIZE_FLAGS="-O3 -fno-stack-protector"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ CFLAGS="$CFLAGS -fno-common"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- CXXFLAGS="$CXXFLAGS -fno-common -stdlib=libc++"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ CXXFLAGS="$CXXFLAGS -fno-common"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DSO_LDOPTS=''
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ STRIP="$STRIP -x -S"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ LDFLAGS="$LDFLAGS -lobjc"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- js/src/old-configure.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ js/src/old-configure
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -4939,7 +4939,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *-darwin*)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ MOZ_OPTIMIZE_FLAGS="-O3 -fno-stack-protector"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ CFLAGS="$CFLAGS -fno-common"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- CXXFLAGS="$CXXFLAGS -fno-common -stdlib=libc++"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ CXXFLAGS="$CXXFLAGS -fno-common"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DSO_LDOPTS=''
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ STRIP="$STRIP -x -S"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ LDFLAGS="$LDFLAGS -lobjc"
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/mozjs60/files/patch-powerpc.diff b/lang/mozjs60/files/patch-powerpc.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..d0e45127467
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/mozjs60/files/patch-powerpc.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,95 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Fall back to the generic UNIX signal and exception handlers on PowerPC.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Also fix PPC platform detection.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- js/src/ds/MemoryProtectionExceptionHandler.cpp.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ js/src/ds/MemoryProtectionExceptionHandler.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -11,7 +11,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if defined(XP_WIN)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "util/Windows.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#elif defined(XP_UNIX) && !defined(XP_DARWIN)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined(XP_UNIX) && (defined(__POWERPC__) || !defined(XP_DARWIN))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <signal.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <sys/types.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <unistd.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -204,7 +204,7 @@
</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;'>+-#elif defined(XP_UNIX) && !defined(XP_DARWIN)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined(XP_UNIX) && (defined(__POWERPC__) || !defined(XP_DARWIN))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static struct sigaction sPrevSEGVHandler = {};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- js/src/vm/JSContext.h.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ js/src/vm/JSContext.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -586,7 +586,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void disableProfilerSampling() { suppressProfilerSampling = true; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void enableProfilerSampling() { suppressProfilerSampling = false; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(XP_DARWIN)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(XP_DARWIN) && !defined(__POWERPC__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ js::wasm::MachExceptionHandler wasmMachExceptionHandler;
</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;'>+--- js/src/wasm/WasmSignalHandlers.cpp.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ js/src/wasm/WasmSignalHandlers.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -400,7 +400,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // the same as CONTEXT, but on Mac we use a different structure since we call
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // into the emulator code from a Mach exception handler rather than a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // sigaction-style signal handler.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(XP_DARWIN)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(XP_DARWIN) && !defined(__POWERPC__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if defined(__x86_64__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct macos_x64_context {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ x86_thread_state64_t thread;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -488,7 +488,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif // KNOWS_MACHINE_STATE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(XP_DARWIN)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(XP_DARWIN) && !defined(__POWERPC__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static uint8_t** ContextToPC(EMULATOR_CONTEXT* context) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if defined(__x86_64__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1160,7 +1160,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return EXCEPTION_CONTINUE_SEARCH;
</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;'>+-#elif defined(XP_DARWIN)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined(XP_DARWIN) && !defined(__POWERPC__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <mach/exc.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // This definition was generated by mig (the Mach Interface Generator) for the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1717,7 +1717,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (!AddVectoredExceptionHandler(firstHandler, WasmFaultHandler))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#elif defined(XP_DARWIN)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined(XP_DARWIN) && !defined(__POWERPC__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // OSX handles seg faults via the Mach exception handler above, so don't
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // install WasmFaultHandler.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1761,7 +1761,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Nothing to do if the platform doesn't support it.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (!ProcessHasSignalHandlers()) return true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(XP_DARWIN)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(XP_DARWIN) && !defined(__POWERPC__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // On OSX, each JSContext which runs wasm gets its own handler thread.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (!cx->wasmMachExceptionHandler.installed() &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ !cx->wasmMachExceptionHandler.install(cx))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- python/mozbuild/mozbuild/configure/constants.py.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ python/mozbuild/mozbuild/configure/constants.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -80,8 +80,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ('ia64', '__ia64__'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ('s390x', '__s390x__'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ('s390', '__s390__'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ('ppc64', '__powerpc64__'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ('ppc', '__powerpc__'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ('ppc64', '__powerpc64__ || __POWERPC64__'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ('ppc', '__powerpc__ || __POWERPC__'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ('Alpha', '__alpha__'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ('hppa', '__hppa__'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ('sparc64', '__sparc__ && __arch64__'),
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/mozjs60/files/patch-pthread_setname_np.diff b/lang/mozjs60/files/patch-pthread_setname_np.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..32f770fa879
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/mozjs60/files/patch-pthread_setname_np.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,20 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Fix the build on 10.4/10.5. The configure script already checks for
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+pthread_getname_np, so just use the result of that to decide whether
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+pthread_setname_np is available. (Patching the configure script itself
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+introduces timestamp and patch-maintenance headaches.)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- js/src/threading/posix/Thread.cpp.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ js/src/threading/posix/Thread.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -152,9 +152,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ name = nameBuf;
</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;'>+- int rv;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int rv = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef XP_DARWIN
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_PTHREAD_GETNAME_NP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rv = pthread_setname_np(name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(__DragonFly__) || defined(__FreeBSD__) || defined(__OpenBSD__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pthread_set_name_np(pthread_self(), name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rv = 0;
</span></pre><pre style='margin:0'>
</pre>