Open8
servo/mozjs
Githubのリンク
/src/lib.rs
→ /build/jsapi.rs
→ (/build.rs
のbuild_jsapi_bindings
内で生成?) /src/jsglue.hpp
→ /mozjs/js/src/jsapi.h
(とか) の順番でインクルードしてるっぽい?
/build.rs
のbuild_jsapi
関数内でmake
コマンドを使ってc++ファイルをコンパイルしている?
170-177行目
let result = cmd // makeコマンド
.args(&["-R", "-f"]) // -R 暗黙のルールをクリア -f ファイルを指定
.arg(cargo_manifest_dir.join("makefile.cargo")) // ファイル名
.current_dir(&build_dir) // "出力フォルダ/build" を指定
.env("SRC_DIR", &cargo_manifest_dir.join("mozjs")) // "/mozjs" をソースに指定
.env("NO_RUST_PANIC_HOOK", "1")
.status() // コマンドを実行
.expect("Failed to run `make`");
/makefile.cargo
内188行目と合わせると/mozjs/js/src
にソースファイルがあることになりそう
188行目
JSSRC := '$(SRC_DIR)'/js/src
Cargo.toml
Cargo.toml
[package]
build = "build.rs"
ビルド時に実行するスクリプトファイル
Cargo.toml
[dependencies]
encoding_c = "0.9.6"
encoding_c_mem = "0.2.5"
libc = "0.2"
libz-sys = "1.0"
依存しているクレートとそのバージョン
build.rs
main
関数が実行される
- 環境変数のセット
-
$OUT_DIR/build
ディレクトリが作られる
ここにcファイルのコンパイル結果が入るはず -
build_jsapi
関数呼び出し -
build_jsglue
関数呼び出 -
build_jsapi_bindings
関数呼び出し -
cargo:rerun-if-changed
を設定
設定したファイルが変更された時、再コンパイルされる
build_jsapi
関数
-
make
コマンド
mozmake
$MAKE
gmake
make
のどれか -
$OUT_DIR/build/mozjs
ディレクトリをビルドする - C++ライブラリをリンク
build_jsglue
関数
- cc
$OUT_DIR/build/js/src/js-confdefs.h
$OUT_DIR/build/dist/include
-
$OUT_DIR/build/js/src
たぶんbuild_jsapi
で出力される -
/src/jsglue.cpp
を$OUT_DIR/build/glue/jsglue
にビルドして出力