mirror of
https://github.com/navidrome/navidrome.git
synced 2026-01-14 09:48:30 -05:00
31 lines
1019 B
Makefile
31 lines
1019 B
Makefile
# Build test plugins used for integration testing
|
|
# Auto-discover all plugin folders (folders containing go.mod)
|
|
PLUGINS := $(patsubst %/go.mod,%,$(wildcard */go.mod))
|
|
|
|
# Prefer tinygo if available, it produces smaller wasm binaries and
|
|
# makes the tests faster.
|
|
TINYGO := $(shell command -v tinygo 2> /dev/null)
|
|
|
|
all: $(PLUGINS:%=%.ndp)
|
|
|
|
clean:
|
|
rm -f $(PLUGINS:%=%.ndp) $(PLUGINS:%=%.wasm)
|
|
|
|
# PDK source files that trigger rebuild when changed (recursive)
|
|
PDK_SOURCES := $(shell find ../pdk/go -name '*.go' 2>/dev/null)
|
|
|
|
# Build the .ndp package (zip containing manifest.json + plugin.wasm)
|
|
%.ndp: %.wasm %/manifest.json
|
|
@rm -f $@
|
|
@cp $< plugin.wasm
|
|
zip -j $@ $*/manifest.json plugin.wasm
|
|
@rm -f plugin.wasm
|
|
@mv $< $<.tmp && mv $<.tmp $< # Touch wasm to ensure it's older than ndp
|
|
|
|
# Build the wasm binary
|
|
%.wasm: %/*.go %/go.mod $(PDK_SOURCES)
|
|
ifdef TINYGO
|
|
cd $* && tinygo build -target wasip1 -buildmode=c-shared -o ../$@ .
|
|
else
|
|
cd $* && GOOS=wasip1 GOARCH=wasm go build -buildmode=c-shared -o ../$@ .
|
|
endif |