mirror of
https://gitea.wildfiregames.com/0ad/0ad.git
synced 2026-09-21 20:06:40 +00:00
@@ -51,10 +51,12 @@ RUN apt-get -qqy update \
|
|||||||
zlib1g-dev \
|
zlib1g-dev \
|
||||||
&& apt-get clean
|
&& apt-get clean
|
||||||
|
|
||||||
# Install rust and Cargo via rustup, available in Debian12 1.63, need 1.66
|
# Install rust and Cargo via rustup, available in Debian12 1.63, need 1.76
|
||||||
ENV RUSTUP_HOME=/usr/local/rust
|
ENV RUSTUP_HOME=/usr/local/rust
|
||||||
ENV CARGO_HOME=/usr/local/rust
|
ENV CARGO_HOME=/usr/local/rust
|
||||||
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain 1.66.0 -y
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain 1.76.0 -y
|
||||||
|
# Install cbindgen for building SpiderMonkey
|
||||||
|
RUN /usr/local/rust/bin/cargo install cbindgen
|
||||||
|
|
||||||
ENV PATH="${RUSTUP_HOME}/bin:${PATH}"
|
ENV PATH="${RUSTUP_HOME}/bin:${PATH}"
|
||||||
ENV SHELL=/bin/bash
|
ENV SHELL=/bin/bash
|
||||||
|
|||||||
@@ -645,7 +645,7 @@ extern_lib_defs = {
|
|||||||
compile_settings = function()
|
compile_settings = function()
|
||||||
if _OPTIONS["with-system-mozjs"] then
|
if _OPTIONS["with-system-mozjs"] then
|
||||||
if not _OPTIONS["android"] then
|
if not _OPTIONS["android"] then
|
||||||
pkgconfig.add_includes_after("mozjs-115")
|
pkgconfig.add_includes_after("mozjs-128")
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
filter "Debug"
|
filter "Debug"
|
||||||
@@ -659,17 +659,17 @@ extern_lib_defs = {
|
|||||||
link_settings = function()
|
link_settings = function()
|
||||||
if _OPTIONS["with-system-mozjs"] then
|
if _OPTIONS["with-system-mozjs"] then
|
||||||
if _OPTIONS["android"] then
|
if _OPTIONS["android"] then
|
||||||
links { "mozjs-115" }
|
links { "mozjs-128" }
|
||||||
else
|
else
|
||||||
pkgconfig.add_links("mozjs-115")
|
pkgconfig.add_links("mozjs-128")
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
filter { "Debug" }
|
filter { "Debug" }
|
||||||
links { "mozjs115-debug" }
|
links { "mozjs128-debug" }
|
||||||
filter { "Release" }
|
filter { "Release" }
|
||||||
links { "mozjs115-release" }
|
links { "mozjs128-release" }
|
||||||
filter { }
|
filter { }
|
||||||
links { "mozjs115-rust" }
|
links { "mozjs128-rust" }
|
||||||
add_source_lib_paths("spidermonkey")
|
add_source_lib_paths("spidermonkey")
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ newoption { category = "Pyrogenesis", trigger = "sanitize-undefined-behaviour",
|
|||||||
newoption { category = "Pyrogenesis", trigger = "strip-binaries", description = "Strip created binaries" }
|
newoption { category = "Pyrogenesis", trigger = "strip-binaries", description = "Strip created binaries" }
|
||||||
newoption { category = "Pyrogenesis", trigger = "with-system-cxxtest", description = "Search standard paths for cxxtest, instead of using bundled copy" }
|
newoption { category = "Pyrogenesis", trigger = "with-system-cxxtest", description = "Search standard paths for cxxtest, instead of using bundled copy" }
|
||||||
newoption { category = "Pyrogenesis", trigger = "with-lto", description = "Enable Link Time Optimization (LTO)" }
|
newoption { category = "Pyrogenesis", trigger = "with-lto", description = "Enable Link Time Optimization (LTO)" }
|
||||||
newoption { category = "Pyrogenesis", trigger = "with-system-mozjs", description = "Search standard paths for libmozjs115, instead of using bundled copy" }
|
newoption { category = "Pyrogenesis", trigger = "with-system-mozjs", description = "Search standard paths for libmozjs128, instead of using bundled copy" }
|
||||||
newoption { category = "Pyrogenesis", trigger = "with-system-nvtt", description = "Search standard paths for nvidia-texture-tools library, instead of using bundled copy" }
|
newoption { category = "Pyrogenesis", trigger = "with-system-nvtt", description = "Search standard paths for nvidia-texture-tools library, instead of using bundled copy" }
|
||||||
newoption { category = "Pyrogenesis", trigger = "with-valgrind", description = "Enable Valgrind support (non-Windows only)" }
|
newoption { category = "Pyrogenesis", trigger = "with-valgrind", description = "Enable Valgrind support (non-Windows only)" }
|
||||||
newoption { category = "Pyrogenesis", trigger = "without-audio", description = "Disable use of OpenAL/Ogg/Vorbis APIs" }
|
newoption { category = "Pyrogenesis", trigger = "without-audio", description = "Disable use of OpenAL/Ogg/Vorbis APIs" }
|
||||||
@@ -166,7 +166,7 @@ end
|
|||||||
-- The pc file doesn't specify the required -DDEBUG needed in that case
|
-- The pc file doesn't specify the required -DDEBUG needed in that case
|
||||||
local mozjs_is_debug_build = false
|
local mozjs_is_debug_build = false
|
||||||
if _OPTIONS["with-system-mozjs"] then
|
if _OPTIONS["with-system-mozjs"] then
|
||||||
local _, errorCode = os.outputof(cc .. " $(pkg-config mozjs-115 --cflags) ./tests/mozdebug.c -o /dev/null")
|
local _, errorCode = os.outputof(cc .. " $(pkg-config mozjs-128 --cflags) ./tests/mozdebug.c -o /dev/null")
|
||||||
if errorCode ~= 0 then
|
if errorCode ~= 0 then
|
||||||
mozjs_is_debug_build = true
|
mozjs_is_debug_build = true
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ cd /D "%~dp0"
|
|||||||
|
|
||||||
rem **SVN revision to checkout for windows-libs or windows-libs-amd64**
|
rem **SVN revision to checkout for windows-libs or windows-libs-amd64**
|
||||||
rem **Update this line when you commit an update to windows-libs or windows-libs-amd64**
|
rem **Update this line when you commit an update to windows-libs or windows-libs-amd64**
|
||||||
set "svnrev=28268"
|
set "svnrev=28273"
|
||||||
|
|
||||||
if "%1" == "--amd64" (
|
if "%1" == "--amd64" (
|
||||||
set "LIBS_PATH=win64"
|
set "LIBS_PATH=win64"
|
||||||
|
|||||||
@@ -6,11 +6,11 @@ set -e
|
|||||||
cd "$(dirname "$0")"
|
cd "$(dirname "$0")"
|
||||||
|
|
||||||
# This should match the version in config/milestone.txt
|
# This should match the version in config/milestone.txt
|
||||||
PV=115.16.1
|
PV=128.13.0
|
||||||
FOLDER="mozjs-${PV}"
|
FOLDER="mozjs-${PV}"
|
||||||
# If same-version changes are needed, increment this.
|
# If same-version changes are needed, increment this.
|
||||||
LIB_VERSION="${PV}+wfg6"
|
LIB_VERSION="${PV}+wfg0"
|
||||||
LIB_NAME="mozjs115"
|
LIB_NAME="mozjs128"
|
||||||
|
|
||||||
build_archive()
|
build_archive()
|
||||||
{
|
{
|
||||||
@@ -75,14 +75,6 @@ rm -Rf "${FOLDER}"
|
|||||||
(
|
(
|
||||||
cd "${FOLDER}"
|
cd "${FOLDER}"
|
||||||
|
|
||||||
# Fix build on recent macOS versions.
|
|
||||||
# https://bugzilla.mozilla.org/show_bug.cgi?id=1844694
|
|
||||||
# The --enable-bootstrap fix mentioned on the ticket does not fix the issue. Instead,
|
|
||||||
# use Homebrew's workaround.
|
|
||||||
if [ "${OS}" = "Darwin" ]; then
|
|
||||||
sed -i '' 's/\["-Wl,--version"]/["-Wl,-ld_classic,--version"]/g' build/moz.configure/toolchain.configure
|
|
||||||
fi
|
|
||||||
|
|
||||||
# shellcheck disable=SC1091
|
# shellcheck disable=SC1091
|
||||||
. ../patches/patch.sh
|
. ../patches/patch.sh
|
||||||
)
|
)
|
||||||
@@ -220,7 +212,7 @@ DEB="debug"
|
|||||||
REL="release"
|
REL="release"
|
||||||
|
|
||||||
# Fetch the jsrust static library. Path is grepped from the build file as it varies by rust toolset.
|
# Fetch the jsrust static library. Path is grepped from the build file as it varies by rust toolset.
|
||||||
rust_path=$(grep jsrust <"${FOLDER}/build-release/js/src/build/backend.mk" | cut -d = -f 2 | cut -c2-)
|
rust_path="${FOLDER}/build-release/$(grep jsrust "${FOLDER}/build-release/js/src/build/backend.mk" | cut -d / -f 2-)"
|
||||||
cp -L "${rust_path}" "lib/${LIB_PREFIX}${LIB_NAME}-rust${STATIC_LIB_SUFFIX}"
|
cp -L "${rust_path}" "lib/${LIB_PREFIX}${LIB_NAME}-rust${STATIC_LIB_SUFFIX}"
|
||||||
|
|
||||||
if [ "${OS}" = "Darwin" ]; then
|
if [ "${OS}" = "Darwin" ]; then
|
||||||
@@ -229,21 +221,21 @@ if [ "${OS}" = "Darwin" ]; then
|
|||||||
cp -L "${FOLDER}/build-${REL}/js/src/build/${LIB_PREFIX}js_static${LIB_SUFFIX}" "lib/${LIB_PREFIX}${LIB_NAME}-${REL}${LIB_SUFFIX}"
|
cp -L "${FOLDER}/build-${REL}/js/src/build/${LIB_PREFIX}js_static${LIB_SUFFIX}" "lib/${LIB_PREFIX}${LIB_NAME}-${REL}${LIB_SUFFIX}"
|
||||||
elif [ "${OS}" = "Windows_NT" ]; then
|
elif [ "${OS}" = "Windows_NT" ]; then
|
||||||
# Windows needs DLLs to binaries/, static stubs to lib/ and debug symbols
|
# Windows needs DLLs to binaries/, static stubs to lib/ and debug symbols
|
||||||
cp -L "${FOLDER}/build-${DEB}/js/src/build/${LIB_PREFIX}${LIB_NAME}-${DEB}${LIB_SUFFIX}" "bin/${LIB_PREFIX}${LIB_NAME}-${DEB}${LIB_SUFFIX}"
|
cp -L "${FOLDER}/build-${DEB}/dist/bin/${LIB_PREFIX}${LIB_NAME}-${DEB}${LIB_SUFFIX}" "bin/${LIB_PREFIX}${LIB_NAME}-${DEB}${LIB_SUFFIX}"
|
||||||
cp -L "${FOLDER}/build-${REL}/js/src/build/${LIB_PREFIX}${LIB_NAME}-${REL}${LIB_SUFFIX}" "bin/${LIB_PREFIX}${LIB_NAME}-${REL}${LIB_SUFFIX}"
|
cp -L "${FOLDER}/build-${REL}/dist/bin/${LIB_PREFIX}${LIB_NAME}-${REL}${LIB_SUFFIX}" "bin/${LIB_PREFIX}${LIB_NAME}-${REL}${LIB_SUFFIX}"
|
||||||
cp -L "${FOLDER}/build-${DEB}/js/src/build/${LIB_PREFIX}${LIB_NAME}-${DEB}${STATIC_LIB_SUFFIX}" "lib/${LIB_PREFIX}${LIB_NAME}-${DEB}${STATIC_LIB_SUFFIX}"
|
cp -L "${FOLDER}/build-${DEB}/js/src/build/${LIB_PREFIX}${LIB_NAME}-${DEB}${STATIC_LIB_SUFFIX}" "lib/${LIB_PREFIX}${LIB_NAME}-${DEB}${STATIC_LIB_SUFFIX}"
|
||||||
cp -L "${FOLDER}/build-${REL}/js/src/build/${LIB_PREFIX}${LIB_NAME}-${REL}${STATIC_LIB_SUFFIX}" "lib/${LIB_PREFIX}${LIB_NAME}-${REL}${STATIC_LIB_SUFFIX}"
|
cp -L "${FOLDER}/build-${REL}/js/src/build/${LIB_PREFIX}${LIB_NAME}-${REL}${STATIC_LIB_SUFFIX}" "lib/${LIB_PREFIX}${LIB_NAME}-${REL}${STATIC_LIB_SUFFIX}"
|
||||||
# Copy debug symbols as well.
|
# Copy debug symbols as well.
|
||||||
cp -L "${FOLDER}/build-${DEB}/js/src/build/${LIB_PREFIX}${LIB_NAME}-${DEB}.pdb" "bin/${LIB_PREFIX}${LIB_NAME}-${DEB}.pdb"
|
cp -L "${FOLDER}/build-${DEB}/js/src/build/${LIB_PREFIX}${LIB_NAME}-${DEB}.pdb" "bin/${LIB_PREFIX}${LIB_NAME}-${DEB}.pdb"
|
||||||
cp -L "${FOLDER}/build-${REL}/js/src/build/${LIB_PREFIX}${LIB_NAME}-${REL}.pdb" "bin/${LIB_PREFIX}${LIB_NAME}-${REL}.pdb"
|
cp -L "${FOLDER}/build-${REL}/js/src/build/${LIB_PREFIX}${LIB_NAME}-${REL}.pdb" "bin/${LIB_PREFIX}${LIB_NAME}-${REL}.pdb"
|
||||||
# Copy the debug jsrust library.
|
# Copy the debug jsrust library.
|
||||||
rust_path=$(grep jsrust <"${FOLDER}/build-debug/js/src/build/backend.mk" | cut -d = -f 2 | cut -c2-)
|
rust_path="${FOLDER}/build-debug/$(grep jsrust "${FOLDER}/build-debug/js/src/build/backend.mk" | cut -d / -f 2-)"
|
||||||
cp -L "${rust_path}" "lib/${LIB_PREFIX}${LIB_NAME}-rust-debug${STATIC_LIB_SUFFIX}"
|
cp -L "${rust_path}" "lib/${LIB_PREFIX}${LIB_NAME}-rust-debug${STATIC_LIB_SUFFIX}"
|
||||||
else
|
else
|
||||||
# Copy shared libs to lib/, they will also be copied to binaries/system, so the compiler and executable (resp.) can find them.
|
# Copy shared libs to lib/, they will also be copied to binaries/system, so the compiler and executable (resp.) can find them.
|
||||||
cp -L "${FOLDER}/build-${REL}/js/src/build/${LIB_PREFIX}${LIB_NAME}-${REL}${LIB_SUFFIX}" "lib/${LIB_PREFIX}${LIB_NAME}-${REL}${LIB_SUFFIX}"
|
cp -L "${FOLDER}/build-${REL}/dist/bin/${LIB_PREFIX}${LIB_NAME}-${REL}${LIB_SUFFIX}" "lib/${LIB_PREFIX}${LIB_NAME}-${REL}${LIB_SUFFIX}"
|
||||||
if [ "${OS}" != "FreeBSD" ]; then
|
if [ "${OS}" != "FreeBSD" ]; then
|
||||||
cp -L "${FOLDER}/build-${DEB}/js/src/build/${LIB_PREFIX}${LIB_NAME}-${DEB}${LIB_SUFFIX}" "lib/${LIB_PREFIX}${LIB_NAME}-${DEB}${LIB_SUFFIX}"
|
cp -L "${FOLDER}/build-${DEB}/dist/bin/${LIB_PREFIX}${LIB_NAME}-${DEB}${LIB_SUFFIX}" "lib/${LIB_PREFIX}${LIB_NAME}-${DEB}${LIB_SUFFIX}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -1,45 +0,0 @@
|
|||||||
|
|
||||||
# HG changeset patch
|
|
||||||
# User Mike Hommey <mh+mozilla@glandium.org>
|
|
||||||
# Date 1714550740 0
|
|
||||||
# Node ID 223087fdc29f18678f6174e9807b8780e439acf6
|
|
||||||
# Parent dbf00dfdc037f79df923fbb6681de64bc74c5a8e
|
|
||||||
Bug 1894423 - Remove unused ExclusiveData move constructor. r=spidermonkey-reviewers,jonco
|
|
||||||
|
|
||||||
Because the constructor is actually not used, the compiler used to not
|
|
||||||
complain about it being broken. Recent changes on clang trunk made it
|
|
||||||
catch this problem without the constructor being used.
|
|
||||||
|
|
||||||
As Mutex doesn't have a move constructor, it's also not only a matter of
|
|
||||||
adding the missing underscore to lock.
|
|
||||||
|
|
||||||
As the constructor is never used, just remove it.
|
|
||||||
|
|
||||||
Differential Revision: https://phabricator.services.mozilla.com/D209108
|
|
||||||
|
|
||||||
diff --git a/js/src/threading/ExclusiveData.h b/js/src/threading/ExclusiveData.h
|
|
||||||
--- a/js/src/threading/ExclusiveData.h
|
|
||||||
+++ b/js/src/threading/ExclusiveData.h
|
|
||||||
@@ -104,21 +104,16 @@ class ExclusiveData {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new `ExclusiveData`, constructing the protected value in place.
|
|
||||||
*/
|
|
||||||
template <typename... Args>
|
|
||||||
explicit ExclusiveData(const MutexId& id, Args&&... args)
|
|
||||||
: lock_(id), value_(std::forward<Args>(args)...) {}
|
|
||||||
|
|
||||||
- ExclusiveData(ExclusiveData&& rhs)
|
|
||||||
- : lock_(std::move(rhs.lock)), value_(std::move(rhs.value_)) {
|
|
||||||
- MOZ_ASSERT(&rhs != this, "self-move disallowed!");
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
ExclusiveData& operator=(ExclusiveData&& rhs) {
|
|
||||||
this->~ExclusiveData();
|
|
||||||
new (mozilla::KnownNotNull, this) ExclusiveData(std::move(rhs));
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An RAII class that provides exclusive access to a `ExclusiveData<T>`'s
|
|
||||||
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
--- a/js/src/old-configure
|
--- a/js/src/old-configure
|
||||||
+++ b/js/src/old-configure
|
+++ b/js/src/old-configure
|
||||||
@@ -5081,10 +5081,10 @@
|
@@ -2595,10 +2595,10 @@
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
-if test -n "$JS_STANDALONE"; then
|
-if test -n "$JS_STANDALONE"; then
|
||||||
@@ -13,4 +13,4 @@
|
|||||||
+JS_LIBRARY_NAME="mozjs$MOZILLA_SYMBOLVERSION-release"
|
+JS_LIBRARY_NAME="mozjs$MOZILLA_SYMBOLVERSION-release"
|
||||||
fi
|
fi
|
||||||
JS_CONFIG_LIBS="$NSPR_LIBS $LIBS"
|
JS_CONFIG_LIBS="$NSPR_LIBS $LIBS"
|
||||||
if test -n "$GNU_CC"; then
|
if test "$CC_TYPE" != clang-cl ; then
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
diff --git a/build/moz.configure/pkg.configure b/build/moz.configure/pkg.configure
|
||||||
|
index 418331b87..65a20b17b 100644
|
||||||
|
--- a/build/moz.configure/pkg.configure
|
||||||
|
+++ b/build/moz.configure/pkg.configure
|
||||||
|
@@ -12,7 +12,7 @@ def pkg_config(prefixes):
|
||||||
|
|
||||||
|
@depends(compile_environment, target)
|
||||||
|
def use_pkg_config(compile_environment, target):
|
||||||
|
- return compile_environment and target.os not in ("WINNT", "OSX", "Android")
|
||||||
|
+ return compile_environment and target.os not in ("WINNT", "Android")
|
||||||
|
|
||||||
|
|
||||||
|
pkg_config = check_prog(
|
||||||
|
diff --git a/build/moz.configure/toolchain.configure b/build/moz.configure/toolchain.configure
|
||||||
|
index 264027e57..e1b3cfabd 100644
|
||||||
|
--- a/build/moz.configure/toolchain.configure
|
||||||
|
+++ b/build/moz.configure/toolchain.configure
|
||||||
|
@@ -100,7 +100,7 @@ with only_when(host_is_osx | target_is_osx):
|
||||||
|
)
|
||||||
|
|
||||||
|
def mac_sdk_min_version():
|
||||||
|
- return "14.4"
|
||||||
|
+ return "13.3"
|
||||||
|
|
||||||
|
@depends(
|
||||||
|
"--with-macos-sdk",
|
||||||
|
@@ -1875,7 +1875,7 @@ def select_linker_tmpl(host_or_target):
|
||||||
|
die("Unsupported linker " + linker)
|
||||||
|
|
||||||
|
# Check the kind of linker
|
||||||
|
- version_check = ["-Wl,--version"]
|
||||||
|
+ version_check = ["-Wl,-ld_classic,--version"]
|
||||||
|
cmd_base = c_compiler.wrapper + [c_compiler.compiler] + c_compiler.flags
|
||||||
|
|
||||||
|
def try_linker(linker):
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
diff --git a/build/moz.configure/pkg.configure b/build/moz.configure/pkg.configure
|
|
||||||
--- a/build/moz.configure/pkg.configure
|
|
||||||
+++ b/build/moz.configure/pkg.configure
|
|
||||||
@@ -14,11 +14,11 @@
|
|
||||||
"PKG_CONFIG",
|
|
||||||
pkg_config,
|
|
||||||
bootstrap=depends(when=target_sysroot.bootstrapped)(lambda: "pkgconf"),
|
|
||||||
allow_missing=True,
|
|
||||||
when=compile_environment
|
|
||||||
- & depends(target.os)(lambda os: os not in ("WINNT", "OSX", "Android")),
|
|
||||||
+ & depends(target.os)(lambda os: os not in ("WINNT", "Android")),
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@depends_if(pkg_config)
|
|
||||||
@checking("for pkg-config version")
|
|
||||||
|
|
||||||
@@ -1,159 +0,0 @@
|
|||||||
|
|
||||||
# HG changeset patch
|
|
||||||
# User Markus Stange <mstange.moz@gmail.com>
|
|
||||||
# Date 1706240334 0
|
|
||||||
# Node ID a412d893c38f632f34b44a9c5b3fd8cc30bb87be
|
|
||||||
# Parent 2a507cc2cf84980ce9f160d1ef80107ee7474ae4
|
|
||||||
Bug 1876415 - Make timestamp formats consistent between Jitdump and the marker file. r=glandium
|
|
||||||
|
|
||||||
On Linux and Android, both jitdump and the marker file will keep using
|
|
||||||
`CLOCK_MONOTONIC` nanoseconds, as before.
|
|
||||||
|
|
||||||
On macOS, both jitdump and the marker file will now be using
|
|
||||||
`TimeStamp::RawMachAbsoluteTimeNanoseconds()` , i.e. "nanoseconds since
|
|
||||||
mach_absolute_time origin".
|
|
||||||
This value has the advantage that it is also relatively easy to obtain
|
|
||||||
in other browser engines, because their internal timestamp value is stored
|
|
||||||
in milliseconds or nanoseconds rather than in `mach_absolute_time` ticks.
|
|
||||||
In the past, on macOS, Firefox was using `CLOCK_MONOTONIC` nanoseconds for
|
|
||||||
jitdump and `TimeStamp::RawMachAbsoluteTimeValue()` for the marker file.
|
|
||||||
This inconsistency is now fixed.
|
|
||||||
I will update samply to change how it treats jitdump timestamps on macOS.
|
|
||||||
There are no other consumers of jitdump files on macOS that I know of.
|
|
||||||
|
|
||||||
On Windows, we will keep using raw QPC values for the marker file - this
|
|
||||||
matches what's in the ETW events. Jitdump on Windows is mostly unused but
|
|
||||||
I'm updating it to match.
|
|
||||||
|
|
||||||
Furthermore, this fixes the order in mozglue/misc/moz.build to make sure
|
|
||||||
we always use the TimeStamp_darwin implementation on Darwin (and not just
|
|
||||||
due to a broken configure check, see bug 1681445), and it fixes the #ifdef
|
|
||||||
in TimeStamp.h to match the Darwin check.
|
|
||||||
|
|
||||||
Differential Revision: https://phabricator.services.mozilla.com/D199592
|
|
||||||
|
|
||||||
diff --git a/js/src/jit/PerfSpewer.cpp b/js/src/jit/PerfSpewer.cpp
|
|
||||||
--- a/js/src/jit/PerfSpewer.cpp
|
|
||||||
+++ b/js/src/jit/PerfSpewer.cpp
|
|
||||||
@@ -118,19 +118,26 @@ static bool IsPerfProfiling() { return J
|
|
||||||
#endif
|
|
||||||
|
|
||||||
AutoLockPerfSpewer::AutoLockPerfSpewer() { PerfMutex.lock(); }
|
|
||||||
|
|
||||||
AutoLockPerfSpewer::~AutoLockPerfSpewer() { PerfMutex.unlock(); }
|
|
||||||
|
|
||||||
#ifdef JS_ION_PERF
|
|
||||||
static uint64_t GetMonotonicTimestamp() {
|
|
||||||
- struct timespec ts = {};
|
|
||||||
- clock_gettime(CLOCK_MONOTONIC, &ts);
|
|
||||||
- return ts.tv_sec * 1000000000 + ts.tv_nsec;
|
|
||||||
+ using mozilla::TimeStamp;
|
|
||||||
+# ifdef XP_LINUX
|
|
||||||
+ return TimeStamp::Now().RawClockMonotonicNanosecondsSinceBoot();
|
|
||||||
+# elif XP_WIN
|
|
||||||
+ return TimeStamp::Now().RawQueryPerformanceCounterValue().value();
|
|
||||||
+# elif XP_MACOSX
|
|
||||||
+ return TimeStamp::Now().RawMachAbsoluteTimeNanoseconds();
|
|
||||||
+# else
|
|
||||||
+ MOZ_CRASH("no timestamp");
|
|
||||||
+# endif
|
|
||||||
}
|
|
||||||
|
|
||||||
// values are from /usr/include/elf.h
|
|
||||||
static uint32_t GetMachineEncoding() {
|
|
||||||
# if defined(JS_CODEGEN_X86)
|
|
||||||
return 3; // EM_386
|
|
||||||
# elif defined(JS_CODEGEN_X64)
|
|
||||||
return 62; // EM_X86_64
|
|
||||||
diff --git a/mozglue/misc/TimeStamp.h b/mozglue/misc/TimeStamp.h
|
|
||||||
--- a/mozglue/misc/TimeStamp.h
|
|
||||||
+++ b/mozglue/misc/TimeStamp.h
|
|
||||||
@@ -469,18 +469,19 @@ class TimeStamp {
|
|
||||||
static MFBT_API void RecordProcessRestart();
|
|
||||||
|
|
||||||
#ifdef XP_LINUX
|
|
||||||
uint64_t RawClockMonotonicNanosecondsSinceBoot() {
|
|
||||||
return static_cast<uint64_t>(mValue);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
-#ifdef XP_MACOSX
|
|
||||||
- uint64_t RawMachAbsoluteTimeValue() { return static_cast<uint64_t>(mValue); }
|
|
||||||
+#ifdef XP_DARWIN
|
|
||||||
+ // Returns the number of nanoseconds since the mach_absolute_time origin.
|
|
||||||
+ MFBT_API uint64_t RawMachAbsoluteTimeNanoseconds() const;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef XP_WIN
|
|
||||||
Maybe<uint64_t> RawQueryPerformanceCounterValue() {
|
|
||||||
// mQPC is stored in `mt` i.e. QueryPerformanceCounter * 1000
|
|
||||||
// so divide out the 1000
|
|
||||||
return mValue.mHasQPC ? Some(mValue.mQPC / 1000ULL) : Nothing();
|
|
||||||
}
|
|
||||||
diff --git a/mozglue/misc/TimeStamp_darwin.cpp b/mozglue/misc/TimeStamp_darwin.cpp
|
|
||||||
--- a/mozglue/misc/TimeStamp_darwin.cpp
|
|
||||||
+++ b/mozglue/misc/TimeStamp_darwin.cpp
|
|
||||||
@@ -131,26 +131,28 @@ void TimeStamp::Startup() {
|
|
||||||
// find the number of significant digits in sResolution, for the
|
|
||||||
// sake of ToSecondsSigDigits()
|
|
||||||
for (sResolutionSigDigs = 1; !(sResolutionSigDigs == sResolution ||
|
|
||||||
10 * sResolutionSigDigs > sResolution);
|
|
||||||
sResolutionSigDigs *= 10)
|
|
||||||
;
|
|
||||||
|
|
||||||
gInitialized = true;
|
|
||||||
-
|
|
||||||
- return;
|
|
||||||
}
|
|
||||||
|
|
||||||
void TimeStamp::Shutdown() {}
|
|
||||||
|
|
||||||
TimeStamp TimeStamp::Now(bool aHighResolution) {
|
|
||||||
return TimeStamp(ClockTime());
|
|
||||||
}
|
|
||||||
|
|
||||||
+uint64_t TimeStamp::RawMachAbsoluteTimeNanoseconds() const {
|
|
||||||
+ return static_cast<uint64_t>(double(mValue) * sNsPerTick);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
// Computes and returns the process uptime in microseconds.
|
|
||||||
// Returns 0 if an error was encountered.
|
|
||||||
uint64_t TimeStamp::ComputeProcessUptime() {
|
|
||||||
struct timeval tv;
|
|
||||||
int rv = gettimeofday(&tv, nullptr);
|
|
||||||
|
|
||||||
if (rv == -1) {
|
|
||||||
return 0;
|
|
||||||
diff --git a/mozglue/misc/moz.build b/mozglue/misc/moz.build
|
|
||||||
--- a/mozglue/misc/moz.build
|
|
||||||
+++ b/mozglue/misc/moz.build
|
|
||||||
@@ -105,24 +105,24 @@ if CONFIG["OS_ARCH"] == "WINNT":
|
|
||||||
|
|
||||||
if not CONFIG["JS_STANDALONE"]:
|
|
||||||
SOURCES += [
|
|
||||||
"/ipc/mscom/COMWrappers.cpp",
|
|
||||||
"/ipc/mscom/ProcessRuntime.cpp",
|
|
||||||
"PreXULSkeletonUI.cpp",
|
|
||||||
]
|
|
||||||
|
|
||||||
+elif CONFIG["OS_ARCH"] == "Darwin":
|
|
||||||
+ SOURCES += [
|
|
||||||
+ "TimeStamp_darwin.cpp",
|
|
||||||
+ ]
|
|
||||||
elif CONFIG["HAVE_CLOCK_MONOTONIC"]:
|
|
||||||
SOURCES += [
|
|
||||||
"TimeStamp_posix.cpp",
|
|
||||||
]
|
|
||||||
-elif CONFIG["OS_ARCH"] == "Darwin":
|
|
||||||
- SOURCES += [
|
|
||||||
- "TimeStamp_darwin.cpp",
|
|
||||||
- ]
|
|
||||||
elif CONFIG["COMPILE_ENVIRONMENT"]:
|
|
||||||
error("No TimeStamp implementation on this platform. Build will not succeed")
|
|
||||||
|
|
||||||
if CONFIG["OS_ARCH"] == "WINNT":
|
|
||||||
SOURCES += [
|
|
||||||
"ConditionVariable_windows.cpp",
|
|
||||||
"Mutex_windows.cpp",
|
|
||||||
"RWLock_windows.cpp",
|
|
||||||
|
|
||||||
@@ -1,148 +0,0 @@
|
|||||||
|
|
||||||
# HG changeset patch
|
|
||||||
# User Filipe Laíns <lains@riseup.net>
|
|
||||||
# Date 1733719242 0
|
|
||||||
# Node ID b0dbc944fb7b5f7df9ae370a247405d5c7c181ee
|
|
||||||
# Parent 550046479ed6e9c01ea14ae7156002f5ec815ae5
|
|
||||||
Bug 1935621 - Fix virtual environment sysconfig path calculation r=firefox-build-system-reviewers,ahochheiden
|
|
||||||
|
|
||||||
Signed-off-by: Filipe Laíns <lains@riseup.net>
|
|
||||||
|
|
||||||
Signed-off-by: Filipe Laíns <lains@riseup.net>
|
|
||||||
|
|
||||||
Signed-off-by: Filipe Laíns <lains@riseup.net>
|
|
||||||
|
|
||||||
Differential Revision: https://phabricator.services.mozilla.com/D231480
|
|
||||||
|
|
||||||
diff --git a/python/mach/mach/site.py b/python/mach/mach/site.py
|
|
||||||
--- a/python/mach/mach/site.py
|
|
||||||
+++ b/python/mach/mach/site.py
|
|
||||||
@@ -12,16 +12,17 @@ import json
|
|
||||||
import os
|
|
||||||
import platform
|
|
||||||
import shutil
|
|
||||||
import site
|
|
||||||
import subprocess
|
|
||||||
import sys
|
|
||||||
import sysconfig
|
|
||||||
import tempfile
|
|
||||||
+import warnings
|
|
||||||
from contextlib import contextmanager
|
|
||||||
from pathlib import Path
|
|
||||||
from typing import Callable, Optional
|
|
||||||
|
|
||||||
from mach.requirements import (
|
|
||||||
MachEnvRequirements,
|
|
||||||
UnexpectedFlexibleRequirementException,
|
|
||||||
)
|
|
||||||
@@ -814,43 +815,85 @@ class CommandSiteManager:
|
|
||||||
self._metadata,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class PythonVirtualenv:
|
|
||||||
"""Calculates paths of interest for general python virtual environments"""
|
|
||||||
|
|
||||||
def __init__(self, prefix):
|
|
||||||
- if _is_windows:
|
|
||||||
- self.bin_path = os.path.join(prefix, "Scripts")
|
|
||||||
- self.python_path = os.path.join(self.bin_path, "python.exe")
|
|
||||||
+ self.prefix = os.path.realpath(prefix)
|
|
||||||
+ self.paths = self._get_sysconfig_paths(self.prefix)
|
|
||||||
+
|
|
||||||
+ # Name of the Python executable to use in virtual environments.
|
|
||||||
+ # An executable with the same name as sys.executable might not exist in
|
|
||||||
+ # virtual environments. An executable with 'python' as the steam —
|
|
||||||
+ # without version numbers or ABI flags — will always be present in
|
|
||||||
+ # virtual environments, so we use that.
|
|
||||||
+ python_exe_name = "python" + sysconfig.get_config_var("EXE")
|
|
||||||
+
|
|
||||||
+ self.bin_path = self.paths["scripts"]
|
|
||||||
+ self.python_path = os.path.join(self.bin_path, python_exe_name)
|
|
||||||
+
|
|
||||||
+ @staticmethod
|
|
||||||
+ def _get_sysconfig_paths(prefix):
|
|
||||||
+ """Calculate the sysconfig paths of a virtual environment in the given prefix.
|
|
||||||
+
|
|
||||||
+ The virtual environment MUST be using the same Python distribution as us.
|
|
||||||
+ """
|
|
||||||
+ # Determine the sysconfig scheme used in virtual environments
|
|
||||||
+ if "venv" in sysconfig.get_scheme_names():
|
|
||||||
+ # A 'venv' scheme was added in Python 3.11 to allow users to
|
|
||||||
+ # calculate the paths for a virtual environment, since the default
|
|
||||||
+ # scheme may not always be the same as used on virtual environments.
|
|
||||||
+ # Some common examples are the system Python distributed by macOS,
|
|
||||||
+ # Debian, and Fedora.
|
|
||||||
+ # For more information, see https://github.com/python/cpython/issues/89576
|
|
||||||
+ venv_scheme = "venv"
|
|
||||||
+ elif os.name == "nt":
|
|
||||||
+ # We know that before the 'venv' scheme was added, on Windows,
|
|
||||||
+ # the 'nt' scheme was used in virtual environments.
|
|
||||||
+ venv_scheme = "nt"
|
|
||||||
+ elif os.name == "posix":
|
|
||||||
+ # We know that before the 'venv' scheme was added, on POSIX,
|
|
||||||
+ # the 'posix_prefix' scheme was used in virtual environments.
|
|
||||||
+ venv_scheme = "posix_prefix"
|
|
||||||
else:
|
|
||||||
- self.bin_path = os.path.join(prefix, "bin")
|
|
||||||
- self.python_path = os.path.join(self.bin_path, "python")
|
|
||||||
- self.prefix = os.path.realpath(prefix)
|
|
||||||
+ # This should never happen with upstream Python, as the 'venv'
|
|
||||||
+ # scheme should always be available on >=3.11, and no other
|
|
||||||
+ # platforms are supported by the upstream on older Python versions.
|
|
||||||
+ #
|
|
||||||
+ # Since the 'venv' scheme isn't available, and we have no knowledge
|
|
||||||
+ # of this platform/distribution, fallback to the default scheme.
|
|
||||||
+ #
|
|
||||||
+ # Hitting this will likely be the result of running a custom Python
|
|
||||||
+ # distribution targetting a platform that is not supported by the
|
|
||||||
+ # upstream.
|
|
||||||
+ # In this case, unless the Python vendor patched the Python
|
|
||||||
+ # distribution in such a way as the default scheme may not always be
|
|
||||||
+ # the same scheme, using the default scheme should be correct.
|
|
||||||
+ # If the vendor did patch Python as such, to work around this issue,
|
|
||||||
+ # I would recommend them to define a 'venv' scheme that matches
|
|
||||||
+ # the layout used on virtual environments in their Python distribution.
|
|
||||||
+ # (rec. signed Filipe Laíns — upstream sysconfig maintainer)
|
|
||||||
+ venv_scheme = sysconfig.get_default_scheme()
|
|
||||||
+ warnings.warn(
|
|
||||||
+ f"Unknown platform '{os.name}', using the default install scheme '{venv_scheme}'. "
|
|
||||||
+ "If this is incorrect, please ask your Python vendor to add a 'venv' sysconfig scheme "
|
|
||||||
+ "(see https://github.com/python/cpython/issues/89576, or check the code comment).",
|
|
||||||
+ stacklevel=2,
|
|
||||||
+ )
|
|
||||||
+ # Build the sysconfig config_vars dictionary for the virtual environment.
|
|
||||||
+ venv_vars = sysconfig.get_config_vars().copy()
|
|
||||||
+ venv_vars["base"] = venv_vars["platbase"] = prefix
|
|
||||||
+ # Get sysconfig paths for the virtual environment.
|
|
||||||
+ return sysconfig.get_paths(venv_scheme, vars=venv_vars)
|
|
||||||
|
|
||||||
- @functools.lru_cache(maxsize=None)
|
|
||||||
def resolve_sysconfig_packages_path(self, sysconfig_path):
|
|
||||||
- # macOS uses a different default sysconfig scheme based on whether it's using the
|
|
||||||
- # system Python or running in a virtualenv.
|
|
||||||
- # Manually define the scheme (following the implementation in
|
|
||||||
- # "sysconfig._get_default_scheme()") so that we're always following the
|
|
||||||
- # code path for a virtualenv directory structure.
|
|
||||||
- if os.name == "posix":
|
|
||||||
- scheme = "posix_prefix"
|
|
||||||
- else:
|
|
||||||
- scheme = os.name
|
|
||||||
-
|
|
||||||
- sysconfig_paths = sysconfig.get_paths(scheme)
|
|
||||||
- data_path = Path(sysconfig_paths["data"])
|
|
||||||
- path = Path(sysconfig_paths[sysconfig_path])
|
|
||||||
- relative_path = path.relative_to(data_path)
|
|
||||||
-
|
|
||||||
- # Path to virtualenv's "site-packages" directory for provided sysconfig path
|
|
||||||
- return os.path.normpath(os.path.normcase(Path(self.prefix) / relative_path))
|
|
||||||
+ return self.paths[sysconfig_path]
|
|
||||||
|
|
||||||
def site_packages_dirs(self):
|
|
||||||
dirs = []
|
|
||||||
if sys.platform.startswith("win"):
|
|
||||||
dirs.append(os.path.normpath(os.path.normcase(self.prefix)))
|
|
||||||
purelib = self.resolve_sysconfig_packages_path("purelib")
|
|
||||||
platlib = self.resolve_sysconfig_packages_path("platlib")
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
--- a/js/src/moz.build
|
--- a/js/src/moz.build
|
||||||
+++ b/js/src/moz.build
|
+++ b/js/src/moz.build
|
||||||
@@ -50,9 +50,12 @@
|
@@ -47,9 +47,12 @@
|
||||||
if CONFIG["ENABLE_WASM_CRANELIFT"]:
|
with Files("builtin/intl/*"):
|
||||||
CONFIGURE_SUBST_FILES += ["rust/extra-bindgen-flags"]
|
BUG_COMPONENT = component_intl
|
||||||
|
|
||||||
+DIRS += [
|
+DIRS += [
|
||||||
+ "rust"
|
+ "rust"
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
|
||||||
|
# HG changeset patch
|
||||||
|
# User Steve Fink <sfink@mozilla.com>
|
||||||
|
# Date 1746227785 0
|
||||||
|
# Node ID 5c04f022856284273c3f1a0367a599431798bab3
|
||||||
|
# Parent 0a9b2997cbcf9652ce9440ba74cbbb3bf513a937
|
||||||
|
Bug 1953622 - Suppress -Wdangling-pointer warning when storing a Rooted address r=spidermonkey-reviewers,jonco
|
||||||
|
|
||||||
|
Differential Revision: https://phabricator.services.mozilla.com/D241310
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/js/public/RootingAPI.h b/js/public/RootingAPI.h
|
||||||
|
--- a/js/public/RootingAPI.h
|
||||||
|
+++ b/js/public/RootingAPI.h
|
||||||
|
@@ -1140,21 +1140,30 @@ using RootedTraits =
|
||||||
|
* function that requires a handle, e.g. Foo(Root<T>(cx, x)).
|
||||||
|
*
|
||||||
|
* If you want to add additional methods to Rooted for a specific
|
||||||
|
* specialization, define a RootedOperations<T> specialization containing them.
|
||||||
|
*/
|
||||||
|
template <typename T>
|
||||||
|
class MOZ_RAII Rooted : public detail::RootedTraits<T>::StackBase,
|
||||||
|
public js::RootedOperations<T, Rooted<T>> {
|
||||||
|
+
|
||||||
|
+ // Intentionally store a pointer into the stack.
|
||||||
|
+#if defined(__clang__) || (defined(__GNUC__) && __GNUC__ >= 12)
|
||||||
|
+#pragma GCC diagnostic push
|
||||||
|
+#pragma GCC diagnostic ignored "-Wdangling-pointer"
|
||||||
|
+#endif
|
||||||
|
inline void registerWithRootLists(RootedListHeads& roots) {
|
||||||
|
this->stack = &roots[JS::MapTypeToRootKind<T>::kind];
|
||||||
|
this->prev = *this->stack;
|
||||||
|
*this->stack = this;
|
||||||
|
}
|
||||||
|
+#if defined(__clang__) || (defined(__GNUC__) && __GNUC__ >= 12)
|
||||||
|
+#pragma GCC diagnostic pop
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
inline RootedListHeads& rootLists(RootingContext* cx) {
|
||||||
|
return cx->stackRoots_;
|
||||||
|
}
|
||||||
|
inline RootedListHeads& rootLists(JSContext* cx) {
|
||||||
|
return rootLists(RootingContext::get(cx));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
From 0bfc032c102b8a251e4dc751d0b48992ebf72641 Mon Sep 17 00:00:00 2001
|
|
||||||
From: phosit <phosit@autistici.org>
|
|
||||||
Date: Sun, 5 Jan 2025 14:29:33 +0100
|
|
||||||
Subject: [PATCH] Supress -Wdangling-pointer warning on GCC
|
|
||||||
|
|
||||||
---
|
|
||||||
js/public/RootingAPI.h | 7 +++++++
|
|
||||||
1 file changed, 7 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/js/public/RootingAPI.h b/js/public/RootingAPI.h
|
|
||||||
index 42be14e67351..6b167cb8ea2e 100644
|
|
||||||
--- a/js/public/RootingAPI.h
|
|
||||||
+++ b/js/public/RootingAPI.h
|
|
||||||
@@ -1166,7 +1166,14 @@ class MOZ_RAII Rooted : public detail::RootedTraits<T>::StackBase,
|
|
||||||
inline void registerWithRootLists(RootedListHeads& roots) {
|
|
||||||
this->stack = &roots[JS::MapTypeToRootKind<T>::kind];
|
|
||||||
this->prev = *this->stack;
|
|
||||||
+#if defined(__GNUC__) && __GNUC__ >= 12
|
|
||||||
+#pragma GCC diagnostic push
|
|
||||||
+#pragma GCC diagnostic ignored "-Wdangling-pointer"
|
|
||||||
+#endif
|
|
||||||
*this->stack = this;
|
|
||||||
+#if defined(__GNUC__) && __GNUC__ >= 12
|
|
||||||
+#pragma GCC diagnostic pop
|
|
||||||
+#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
inline RootedListHeads& rootLists(RootingContext* cx) {
|
|
||||||
--
|
|
||||||
2.47.1
|
|
||||||
|
|
||||||
@@ -15,15 +15,9 @@ patch -p1 <"${PATCHES}"/FixRustLinkage.diff
|
|||||||
patch -p1 <"${PATCHES}"/FixLibNames.diff
|
patch -p1 <"${PATCHES}"/FixLibNames.diff
|
||||||
|
|
||||||
# Add needed debug define in pkg-config file.
|
# Add needed debug define in pkg-config file.
|
||||||
|
# https://bugzilla.mozilla.org/show_bug.cgi?id=1935346
|
||||||
patch -p1 <"${PATCHES}"/FixPkgConfigDebug.diff
|
patch -p1 <"${PATCHES}"/FixPkgConfigDebug.diff
|
||||||
|
|
||||||
# On macOS, embedded build is broken due to a faulty check for pkg-config
|
|
||||||
# https://bugzilla.mozilla.org/show_bug.cgi?id=1776255
|
|
||||||
# The fix above is included in ESR 128, but does not apply to 115
|
|
||||||
# Instead, require pkg-config on macOS even though it's not needed here
|
|
||||||
# (from https://bugzilla.mozilla.org/show_bug.cgi?id=1783570)
|
|
||||||
patch -p1 <"${PATCHES}"/FixMacOSPkgConfig.diff
|
|
||||||
|
|
||||||
# There is an issue on 32-bit linux builds sometimes.
|
# There is an issue on 32-bit linux builds sometimes.
|
||||||
# NB: the patch here is Comment 21 modified by Comment 25
|
# NB: the patch here is Comment 21 modified by Comment 25
|
||||||
# but that seems to imperfectly fix the issue with GCC.
|
# but that seems to imperfectly fix the issue with GCC.
|
||||||
@@ -33,19 +27,15 @@ if [ "$(uname -m)" = "i686" ] && [ "${OS}" != "Windows_NT" ]; then
|
|||||||
patch -p1 <"${PATCHES}"/FixFpNormIssue.diff
|
patch -p1 <"${PATCHES}"/FixFpNormIssue.diff
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Fix build with clang19
|
# Fix build on macOS
|
||||||
# https://bugzilla.mozilla.org/show_bug.cgi?id=1894423
|
# Workarounds adapted from Homebrew's formula at https://github.com/Homebrew/homebrew-core/blob/main/Formula/s/spidermonkey.rb
|
||||||
# Fixed in ESR 128
|
# - Allow use of pkg-config to use the same zlib for SM and pyrogenesis (https://bugzilla.mozilla.org/show_bug.cgi?id=1783570)
|
||||||
patch -p1 <"${PATCHES}"/FixClang19.diff
|
# - Force allowing build with older macOS SDK
|
||||||
|
# - Fix invocation of recent compiler (https://bugzilla.mozilla.org/show_bug.cgi?id=1844694)
|
||||||
# Fix build with Python >=3.12.8 and Python >=3.13.1
|
if [ "${OS}" = "Darwin" ]; then
|
||||||
# https://bugzilla.mozilla.org/show_bug.cgi?id=1935621
|
patch -p1 <"${PATCHES}"/FixMacOSBuild.diff
|
||||||
patch -p1 <"${PATCHES}"/FixPython3.12.8.diff
|
fi
|
||||||
|
|
||||||
# Fix build for profiling with samply.
|
|
||||||
# https://bugzilla.mozilla.org/show_bug.cgi?id=1876415
|
|
||||||
# Fixed in ESR 128
|
|
||||||
patch -p1 <"${PATCHES}"/FixProfiling.diff
|
|
||||||
|
|
||||||
# Supress warning on newer GCC compilers.
|
# Supress warning on newer GCC compilers.
|
||||||
patch -p1 <"${PATCHES}"/SupressDanglingPointerWarning.patch
|
# https://bugzilla.mozilla.org/show_bug.cgi?id=1953622
|
||||||
|
patch -p1 <"${PATCHES}"/SuppressDanglingPointerWarning.patch
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ private:
|
|||||||
JS::HandleObject) final;
|
JS::HandleObject) final;
|
||||||
|
|
||||||
bool empty() const final;
|
bool empty() const final;
|
||||||
|
bool isDrainingStopped() const final { return false; }
|
||||||
|
|
||||||
js::UniquePtr<JS::JobQueue::SavedJobQueue> saveJobQueue(JSContext*) final;
|
js::UniquePtr<JS::JobQueue::SavedJobQueue> saveJobQueue(JSContext*) final;
|
||||||
|
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ bool ScriptException::CatchPending(const ScriptRequest& rq)
|
|||||||
msg << "JavaScript error: ";
|
msg << "JavaScript error: ";
|
||||||
if (report->filename)
|
if (report->filename)
|
||||||
{
|
{
|
||||||
msg << report->filename;
|
msg << report->filename.c_str();
|
||||||
msg << " line " << report->lineno << "\n";
|
msg << " line " << report->lineno << "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2024 Wildfire Games.
|
/* Copyright (C) 2025 Wildfire Games.
|
||||||
* This file is part of 0 A.D.
|
* This file is part of 0 A.D.
|
||||||
*
|
*
|
||||||
* 0 A.D. is free software: you can redistribute it and/or modify
|
* 0 A.D. is free software: you can redistribute it and/or modify
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
#include "jspubtd.h"
|
#include "jspubtd.h"
|
||||||
#include "jsapi.h"
|
#include "jsapi.h"
|
||||||
|
|
||||||
#if MOZJS_MAJOR_VERSION != 115
|
#if MOZJS_MAJOR_VERSION != 128
|
||||||
#error Your compiler is trying to use an incorrect major version of the \
|
#error Your compiler is trying to use an incorrect major version of the \
|
||||||
SpiderMonkey library. The SpiderMonkey API is subject to changes, and the \
|
SpiderMonkey library. The SpiderMonkey API is subject to changes, and the \
|
||||||
game will not build with the selected version of the library. Make sure \
|
game will not build with the selected version of the library. Make sure \
|
||||||
|
|||||||
@@ -373,7 +373,7 @@ void CBinarySerializerScriptImpl::HandleScriptVal(const ScriptRequest& rq, JS::H
|
|||||||
JS::RootedFunction func(rq.cx, JS_ValueToFunction(rq.cx, val));
|
JS::RootedFunction func(rq.cx, JS_ValueToFunction(rq.cx, val));
|
||||||
if (func)
|
if (func)
|
||||||
{
|
{
|
||||||
JS::RootedString string(rq.cx, JS_GetFunctionId(func));
|
JS::RootedString string(rq.cx, JS_GetMaybePartialFunctionId(func));
|
||||||
if (string)
|
if (string)
|
||||||
{
|
{
|
||||||
if (JS::StringHasLatin1Chars(string))
|
if (JS::StringHasLatin1Chars(string))
|
||||||
|
|||||||
@@ -411,10 +411,12 @@ JS::Value CStdDeserializer::ReadScriptVal(const char* /*name*/, JS::HandleObject
|
|||||||
#if BYTE_ORDER != LITTLE_ENDIAN
|
#if BYTE_ORDER != LITTLE_ENDIAN
|
||||||
#error TODO: need to convert JS ArrayBuffer data from little-endian
|
#error TODO: need to convert JS ArrayBuffer data from little-endian
|
||||||
#endif
|
#endif
|
||||||
void* contents = malloc(length);
|
void* bufferData = js_malloc(length);
|
||||||
ENSURE(contents);
|
ENSURE(bufferData);
|
||||||
RawBytes("buffer data", (u8*)contents, length);
|
RawBytes("buffer data", (u8*)bufferData, length);
|
||||||
JS::RootedObject bufferObj(rq.cx, JS::NewArrayBufferWithContents(rq.cx, length, contents));
|
|
||||||
|
mozilla::UniquePtr<void, JS::FreePolicy> contents{ bufferData };
|
||||||
|
JS::RootedObject bufferObj(rq.cx, JS::NewArrayBufferWithContents(rq.cx, length, std::move(contents)));
|
||||||
AddScriptBackref(bufferObj);
|
AddScriptBackref(bufferObj);
|
||||||
|
|
||||||
return JS::ObjectValue(*bufferObj);
|
return JS::ObjectValue(*bufferObj);
|
||||||
|
|||||||
Reference in New Issue
Block a user