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
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 47 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,54 @@
cmake_minimum_required(VERSION 3.27)

include("StarlingMonkey/cmake/add_as_subproject.cmake")
if (DEFINED ENV{STARLINGMONKEY_SRC})
set(STARLINGMONKEY_SRC $ENV{STARLINGMONKEY_SRC})
if (EXISTS ${STARLINGMONKEY_SRC})
cmake_path(ABSOLUTE_PATH STARLINGMONKEY_SRC)
endif()
if (NOT EXISTS ${STARLINGMONKEY_SRC})
message(FATAL_ERROR "StarlingMonkey source not found at `$ENV{STARLINGMONKEY_SRC}`.")
endif()
else()
set(STARLINGMONKEY_SRC ${CMAKE_CURRENT_SOURCE_DIR}/StarlingMonkey)
endif()

include("${STARLINGMONKEY_SRC}/cmake/add_as_subproject.cmake")

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

project(ComponentizeJS)

set(RAW_WASM ${CMAKE_CURRENT_BINARY_DIR}/starling-raw.wasm/starling-raw.wasm)

# Define output filenames based on build configuration
set(OUTPUT_NAME_RELEASE "starlingmonkey_embedding.wasm")
set(OUTPUT_NAME_DEBUG "starlingmonkey_embedding.debug.wasm")
set(OUTPUT_NAME_WEVAL "starlingmonkey_embedding_weval.wasm")

# Set the appropriate name based on current configuration
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set(OUTPUT_FILENAME ${OUTPUT_NAME_DEBUG})
elseif(WEVAL)
set(OUTPUT_FILENAME ${OUTPUT_NAME_WEVAL})
else()
set(OUTPUT_FILENAME ${OUTPUT_NAME_RELEASE})
endif()

set(OUTPUT_FILENAME ${CMAKE_CURRENT_SOURCE_DIR}/lib/${OUTPUT_FILENAME})

add_custom_target(starlingmonkey_embedding
DEPENDS starling-raw.wasm
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_BINARY_DIR}/starling-raw.wasm/starling-raw.wasm
${OUTPUT_FILENAME}
)

if(CMAKE_BUILD_TYPE STREQUAL "Debug")
add_custom_command(TARGET starlingmonkey_embedding POST_BUILD
COMMAND ${WASM_TOOLS_BIN} strip ${OUTPUT_FILENAME} -d ".debug_(info|loc|ranges|abbrev|line|str)" -o ${OUTPUT_FILENAME}
COMMENT "Stripping debug info from ${OUTPUT_FILENAME}"
VERBATIM
)
endif()
message(STATUS "Output file: ${OUTPUT_FILENAME}, wasm tools: ${WASM_TOOLS_BIN}")
18 changes: 9 additions & 9 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# WASM_OPT ?= $(shell rm node_modules/.bin/wasm-opt ; which wasm-opt)
JCO ?= ./node_modules/.bin/jco
STARLINGMONKEY_SRC ?= StarlingMonkey

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

STARLINGMONKEY_DEPS = $(STARLINGMONKEY_SRC)/cmake/* embedding/* $(STARLINGMONKEY_SRC)/runtime/* $(STARLINGMONKEY_SRC)/builtins/* $(STARLINGMONKEY_SRC)/builtins/*/* $(STARLINGMONKEY_SRC)/builtins/*/*/* $(STARLINGMONKEY_SRC)/include/*

all: release
debug: lib/starlingmonkey_embedding.debug.wasm lib/spidermonkey-embedding-splicer.js
release: lib/starlingmonkey_embedding.wasm lib/spidermonkey-embedding-splicer.js
Expand All @@ -21,23 +24,20 @@ lib/spidermonkey-embedding-splicer.js: target/wasm32-wasip1/release/spidermonkey
target/wasm32-wasip1/release/spidermonkey_embedding_splicer.wasm: Cargo.toml crates/spidermonkey-embedding-splicer/Cargo.toml crates/spidermonkey-embedding-splicer/src/*.rs
cargo build --release --target wasm32-wasip1

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

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

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

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

obj:
mkdir -p obj
Expand Down