Skip to content

Commit c7ba3d7

Browse files
Make StarlingMonkey location overridable (#196)
This adds the ability to override the location the `StarlingMonkey` source is found at via the env var `STARLINGMONKEY_SRC`. This makes it much easier to develop against a local version of StarlingMonkey. I also cleaned up the `Makefile` a bit, and moved some more stuff over into the `CMakeLists.txt` file, but that's really just minor cleanup.
1 parent 2f62e7d commit c7ba3d7

File tree

2 files changed

+56
-10
lines changed

2 files changed

+56
-10
lines changed

CMakeLists.txt

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,54 @@
11
cmake_minimum_required(VERSION 3.27)
22

3-
include("StarlingMonkey/cmake/add_as_subproject.cmake")
3+
if (DEFINED ENV{STARLINGMONKEY_SRC})
4+
set(STARLINGMONKEY_SRC $ENV{STARLINGMONKEY_SRC})
5+
if (EXISTS ${STARLINGMONKEY_SRC})
6+
cmake_path(ABSOLUTE_PATH STARLINGMONKEY_SRC)
7+
endif()
8+
if (NOT EXISTS ${STARLINGMONKEY_SRC})
9+
message(FATAL_ERROR "StarlingMonkey source not found at `$ENV{STARLINGMONKEY_SRC}`.")
10+
endif()
11+
else()
12+
set(STARLINGMONKEY_SRC ${CMAKE_CURRENT_SOURCE_DIR}/StarlingMonkey)
13+
endif()
14+
15+
include("${STARLINGMONKEY_SRC}/cmake/add_as_subproject.cmake")
416

517
add_builtin(componentize::embedding SRC embedding/embedding.cpp)
618
include_directories("StarlingMonkey")
719

820
project(ComponentizeJS)
21+
22+
set(RAW_WASM ${CMAKE_CURRENT_BINARY_DIR}/starling-raw.wasm/starling-raw.wasm)
23+
24+
# Define output filenames based on build configuration
25+
set(OUTPUT_NAME_RELEASE "starlingmonkey_embedding.wasm")
26+
set(OUTPUT_NAME_DEBUG "starlingmonkey_embedding.debug.wasm")
27+
set(OUTPUT_NAME_WEVAL "starlingmonkey_embedding_weval.wasm")
28+
29+
# Set the appropriate name based on current configuration
30+
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
31+
set(OUTPUT_FILENAME ${OUTPUT_NAME_DEBUG})
32+
elseif(WEVAL)
33+
set(OUTPUT_FILENAME ${OUTPUT_NAME_WEVAL})
34+
else()
35+
set(OUTPUT_FILENAME ${OUTPUT_NAME_RELEASE})
36+
endif()
37+
38+
set(OUTPUT_FILENAME ${CMAKE_CURRENT_SOURCE_DIR}/lib/${OUTPUT_FILENAME})
39+
40+
add_custom_target(starlingmonkey_embedding
41+
DEPENDS starling-raw.wasm
42+
COMMAND ${CMAKE_COMMAND} -E copy
43+
${CMAKE_CURRENT_BINARY_DIR}/starling-raw.wasm/starling-raw.wasm
44+
${OUTPUT_FILENAME}
45+
)
46+
47+
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
48+
add_custom_command(TARGET starlingmonkey_embedding POST_BUILD
49+
COMMAND ${WASM_TOOLS_BIN} strip ${OUTPUT_FILENAME} -d ".debug_(info|loc|ranges|abbrev|line|str)" -o ${OUTPUT_FILENAME}
50+
COMMENT "Stripping debug info from ${OUTPUT_FILENAME}"
51+
VERBATIM
52+
)
53+
endif()
54+
message(STATUS "Output file: ${OUTPUT_FILENAME}, wasm tools: ${WASM_TOOLS_BIN}")

Makefile

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# WASM_OPT ?= $(shell rm node_modules/.bin/wasm-opt ; which wasm-opt)
22
JCO ?= ./node_modules/.bin/jco
3+
STARLINGMONKEY_SRC ?= StarlingMonkey
34

45
ifndef JCO
56
JCO = $(error No jco in PATH. Run npm install -g @bytecodealliance/jco)
@@ -9,6 +10,8 @@ endif
910
# WASM_OPT = $(error No Binaryen wasm-opt in PATH)
1011
# endif
1112

13+
STARLINGMONKEY_DEPS = $(STARLINGMONKEY_SRC)/cmake/* embedding/* $(STARLINGMONKEY_SRC)/runtime/* $(STARLINGMONKEY_SRC)/builtins/* $(STARLINGMONKEY_SRC)/builtins/*/* $(STARLINGMONKEY_SRC)/builtins/*/*/* $(STARLINGMONKEY_SRC)/include/*
14+
1215
all: release
1316
debug: lib/starlingmonkey_embedding.debug.wasm lib/spidermonkey-embedding-splicer.js
1417
release: lib/starlingmonkey_embedding.wasm lib/spidermonkey-embedding-splicer.js
@@ -21,23 +24,20 @@ lib/spidermonkey-embedding-splicer.js: target/wasm32-wasip1/release/spidermonkey
2124
target/wasm32-wasip1/release/spidermonkey_embedding_splicer.wasm: Cargo.toml crates/spidermonkey-embedding-splicer/Cargo.toml crates/spidermonkey-embedding-splicer/src/*.rs
2225
cargo build --release --target wasm32-wasip1
2326

24-
lib/starlingmonkey_embedding.wasm: StarlingMonkey/cmake/* embedding/* StarlingMonkey/runtime/* StarlingMonkey/builtins/* StarlingMonkey/builtins/*/* StarlingMonkey/builtins/*/*/* StarlingMonkey/include/* | lib
27+
lib/starlingmonkey_embedding.wasm: $(STARLINGMONKEY_DEPS) | lib
2528
cmake -B build-release -DCMAKE_BUILD_TYPE=Release
26-
make -j16 -C build-release
27-
@cp build-release/starling-raw.wasm/starling-raw.wasm $@
29+
make -j16 -C build-release starlingmonkey_embedding
2830

29-
lib/starlingmonkey_embedding_weval.wasm: StarlingMonkey/cmake/* embedding/* StarlingMonkey/runtime/* StarlingMonkey/builtins/* StarlingMonkey/builtins/*/* StarlingMonkey/builtins/*/*/* StarlingMonkey/include/* | lib
31+
lib/starlingmonkey_embedding_weval.wasm: $(STARLINGMONKEY_DEPS) | lib
3032
cmake -B build-release-weval -DCMAKE_BUILD_TYPE=Release -DUSE_WASM_OPT=OFF -DWEVAL=ON
31-
make -j16 -C build-release-weval
32-
@cp build-release-weval/starling-raw.wasm/starling-raw.wasm $@
33+
make -j16 -C build-release-weval starlingmonkey_embedding
3334

3435
lib/starlingmonkey_ics.wevalcache: lib/starlingmonkey_embedding_weval.wasm
3536
@cp build-release-weval/starling-raw.wasm/starling-ics.wevalcache $@
3637

37-
lib/starlingmonkey_embedding.debug.wasm: StarlingMonkey/cmake/* embedding/* StarlingMonkey/runtime/* StarlingMonkey/builtins/* StarlingMonkey/builtins/*/* StarlingMonkey/builtins/*/*/* StarlingMonkey/include/* | lib
38+
lib/starlingmonkey_embedding.debug.wasm: $(STARLINGMONKEY_DEPS) | lib
3839
cmake -B build-debug -DCMAKE_BUILD_TYPE=RelWithDebInfo
39-
make -j16 -C build-debug
40-
wasm-tools strip build-debug/starling-raw.wasm/starling-raw.wasm -d ".debug_(info|loc|ranges|abbrev|line|str)" -o $@
40+
make -j16 -C build-debug starlingmonkey_embedding
4141

4242
obj:
4343
mkdir -p obj

0 commit comments

Comments
 (0)