pumpkin-api-kt/Makefile
Demetrius Kanios c43f34ed91 Initial commit
2026-06-16 11:24:56 -07:00

55 lines
2.5 KiB
Makefile

BUILD_DEV_OUT_DIR=build/compileSync/wasmWasi/main/developmentExecutable/kotlin
BUILD_PROD_OUT_DIR=build/compileSync/wasmWasi/main/productionExecutable/optimized
BUILD_ROOT_DIR=build/
BINDINGS_OUT_DIR=src/wasmWasiMain/kotlin/bindings/
TOOLS_DIR=tools
WIT_BINDGEN_BRANCH=kotlin
WIT_BINDGEN_PATH=$(TOOLS_DIR)/bin/wit-bindgen
WIT_PATH=wit/v0.1
# Make sure this matches the value in `settings.gradle.kts`
PROJECT_NAME=pumpkin-plugin-template-kt
.PHONY: componentify componentify-dev componentify-prod compile compile-dev compile-prod setup setup-and-componentify clean install-wit-bindgen run-wit-bindgen
# default target for when you don't want to think about it
setup-and-componentify: # no dependencies, as setup and run "look" independent to the Makefile, this guarantees the order:
$(MAKE) setup
$(MAKE) componentify
setup: install-wit-bindgen
compile: compile-prod
compile-dev: run-wit-bindgen
./gradlew compileDevelopmentExecutableKotlinWasmWasi
compile-prod: run-wit-bindgen
./gradlew compileProductionExecutableKotlinWasmWasiOptimize
componentify: componentify-prod
componentify-dev: compile-dev
wasm-tools component embed $(WIT_PATH) $(BUILD_DEV_OUT_DIR)/$(PROJECT_NAME).wasm -o $(BUILD_DEV_OUT_DIR)/$(PROJECT_NAME)-embedded.wasm
wasm-tools component new $(BUILD_DEV_OUT_DIR)/$(PROJECT_NAME)-embedded.wasm --adapt wasi_snapshot_preview1=wasi_snapshot_preview1.reactor.wasm -o $(BUILD_DEV_OUT_DIR)/$(PROJECT_NAME)-component.wasm
cp $(BUILD_DEV_OUT_DIR)/$(PROJECT_NAME)-component.wasm $(BUILD_ROOT_DIR)/$(PROJECT_NAME).wasm
componentify-prod: compile-prod
wasm-tools component embed $(WIT_PATH) $(BUILD_PROD_OUT_DIR)/$(PROJECT_NAME).wasm -o $(BUILD_PROD_OUT_DIR)/$(PROJECT_NAME)-embedded.wasm
wasm-tools component new $(BUILD_PROD_OUT_DIR)/$(PROJECT_NAME)-embedded.wasm --adapt wasi_snapshot_preview1=wasi_snapshot_preview1.reactor.wasm -o $(BUILD_PROD_OUT_DIR)/$(PROJECT_NAME)-component.wasm
cp $(BUILD_PROD_OUT_DIR)/$(PROJECT_NAME)-component.wasm $(BUILD_ROOT_DIR)/$(PROJECT_NAME).wasm
clean:
./gradlew clean
rm -rf build
rm -rf $(TOOLS_DIR)
rm -f $(BINDINGS_OUT_DIR)/*
# doesn't depend on install-wit-bindgen* so that we can run the target
# multiple times with the same wit-bindgen installation
run-wit-bindgen:
$(WIT_BINDGEN_PATH) kotlin --kotlin-imports 'plugin.*' --kotlin-package-name pumpkin $(WIT_PATH) --out-dir=$(BINDINGS_OUT_DIR)
install-wit-bindgen:
cargo install wit-bindgen-cli --git https://github.com/Kotlin/wit-bindgen --branch $(WIT_BINDGEN_BRANCH) --root $(TOOLS_DIR)