Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 2 additions & 1 deletion mozjs-sys/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name = "mozjs_sys"
description = "System crate for the Mozilla SpiderMonkey JavaScript engine."
repository.workspace = true
version = "0.140.0-0"
version = "0.140.0-1"
authors = ["Mozilla"]
links = "mozjs"
license.workspace = true
Expand Down Expand Up @@ -44,3 +44,4 @@ cc.workspace = true
walkdir = "2"
flate2 = "1"
tar = "0.4"
cargo_metadata = "0.20.0"
39 changes: 33 additions & 6 deletions mozjs-sys/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,29 @@ fn main() {
}
}

fn get_icu_capi_include_path() -> String {
// Using cargo metadata is the official recommendation from the icu4x documentation.
// See <https://icu4x.unicode.org/2_0/cppdoc/>. In the future we should try to upstream a
// patch that allows us to use DEP_ syntax, like we do with libz.
let metadata = cargo_metadata::MetadataCommand::new().exec().unwrap();
let packages = metadata.packages;
let icu_capi_info = packages
.iter()
.find(|pkg| pkg.name.contains("icu_capi"))
.expect("icu_capi not found");
let icu_cpath = &icu_capi_info.manifest_path;
// Include path for icu_capi 1.5:
let c_include_path = icu_cpath
.parent()
.expect("manifest dir?")
.join("bindings/c");
assert!(
c_include_path.exists(),
"ICU_C C include path {c_include_path} does not exist"
);
c_include_path.to_string()
}

fn build_spidermonkey(build_dir: &Path) {
let target = env::var("TARGET").unwrap();
let make;
Expand Down Expand Up @@ -188,15 +211,19 @@ fn build_spidermonkey(build_dir: &Path) {
cmd.env("MAKEFLAGS", makeflags);
}

let icu_c_include_path = get_icu_capi_include_path();
let mut cxxflags = vec![];
cxxflags.push(format!("-I{}", &icu_c_include_path.replace("\\", "/")));

if target.contains("apple") || target.contains("freebsd") || target.contains("ohos") {
let mut cxxflags = OsString::from("-stdlib=libc++");
if let Some(flags) = env::var_os("CXXFLAGS") {
cxxflags.push(" ");
cxxflags.push(flags);
}
cmd.env("CXXFLAGS", cxxflags);
cxxflags.push(String::from("-stdlib=libc++"));
}

let base_cxxflags = env::var("CXXFLAGS").unwrap_or_default();
let mut cxxflags = cxxflags.join(" ");
cxxflags.push_str(&base_cxxflags);
cmd.env("CXXFLAGS", cxxflags);

let cargo_manifest_dir = PathBuf::from(env::var_os("CARGO_MANIFEST_DIR").unwrap());
let result = cmd
.args(&["-R", "-f"])
Expand Down
3 changes: 3 additions & 0 deletions mozjs-sys/etc/filters.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@
- /build/moz.configure/rust.configure
- /build/workspace-hack
- /build/rust
- /intl/bidi
- /intl/icu_capi
- /intl/icu_segmenter_data
- /js/rust
- /js/src/build.rs
- /js/src/Cargo.toml
Expand Down
57 changes: 57 additions & 0 deletions mozjs-sys/etc/patches/0041-use-icu_capi-headers-from-cargo.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
diff --git a/intl/components/src/calendar/moz.build b/intl/components/src/calendar/moz.build
--- a/intl/components/src/calendar/moz.build (revision 518ee8df6f7dcc85bbe184d562cea69c505fc7cc)
+++ b/intl/components/src/calendar/moz.build (revision 127481d772791381e4a11122d5866adabe305dfb)
@@ -16,10 +16,6 @@
"MonthCode.h",
]

-LOCAL_INCLUDES += [
- "/intl/icu_capi/bindings/c",
-]
-
UNIFIED_SOURCES += [
"ICU4XCalendar.cpp",
"ICU4XChineseBasedCalendar.cpp",
diff --git a/intl/components/moz.build b/intl/components/moz.build
--- a/intl/components/moz.build (revision 518ee8df6f7dcc85bbe184d562cea69c505fc7cc)
+++ b/intl/components/moz.build (revision 127481d772791381e4a11122d5866adabe305dfb)
@@ -73,10 +73,6 @@
if not CONFIG["JS_STANDALONE"]:
TEST_DIRS += ["gtest"]

-LOCAL_INCLUDES += [
- "/intl/icu_capi/bindings/c",
-]
-
if not CONFIG["MOZ_SYSTEM_ICU"]:
DIRS += ["src/calendar"]

diff --git a/js/src/builtin/temporal/moz.build b/js/src/builtin/temporal/moz.build
--- a/js/src/builtin/temporal/moz.build (revision 518ee8df6f7dcc85bbe184d562cea69c505fc7cc)
+++ b/js/src/builtin/temporal/moz.build (revision 127481d772791381e4a11122d5866adabe305dfb)
@@ -12,10 +12,6 @@
include("../../js-config.mozbuild")
include("../../js-cxxflags.mozbuild")

-LOCAL_INCLUDES += [
- "/intl/icu_capi/bindings/c",
-]
-
UNIFIED_SOURCES += [
"Calendar.cpp",
"CalendarFields.cpp",
diff --git a/js/src/moz.build b/js/src/moz.build
--- a/js/src/moz.build (revision 518ee8df6f7dcc85bbe184d562cea69c505fc7cc)
+++ b/js/src/moz.build (revision 127481d772791381e4a11122d5866adabe305dfb)
@@ -512,11 +512,6 @@
"threading/posix/PosixThread.cpp",
]

-if CONFIG["JS_HAS_INTL_API"]:
- LOCAL_INCLUDES += [
- "/intl/icu_capi/bindings/c",
- ]
-
if CONFIG["JS_HAS_CTYPES"]:
SOURCES += [
"ctypes/CTypes.cpp",
7 changes: 0 additions & 7 deletions mozjs-sys/mozjs/intl/bidi/moz.build

This file was deleted.

10 changes: 0 additions & 10 deletions mozjs-sys/mozjs/intl/bidi/rust/unicode-bidi-ffi/Cargo.toml

This file was deleted.

15 changes: 0 additions & 15 deletions mozjs-sys/mozjs/intl/bidi/rust/unicode-bidi-ffi/cbindgen.toml

This file was deleted.

165 changes: 0 additions & 165 deletions mozjs-sys/mozjs/intl/bidi/rust/unicode-bidi-ffi/src/lib.rs

This file was deleted.

4 changes: 0 additions & 4 deletions mozjs-sys/mozjs/intl/components/moz.build

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 0 additions & 4 deletions mozjs-sys/mozjs/intl/components/src/calendar/moz.build

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 0 additions & 6 deletions mozjs-sys/mozjs/intl/icu_capi/.cargo_vcs_info.json

This file was deleted.

Loading
Loading