first commit
This commit is contained in:
74
examples/plugins/hello-world-wasm-go/Makefile
Normal file
74
examples/plugins/hello-world-wasm-go/Makefile
Normal file
@@ -0,0 +1,74 @@
|
||||
.PHONY: all build clean help check-tinygo
|
||||
|
||||
# Colors
|
||||
COLOR_RESET = \033[0m
|
||||
COLOR_INFO = \033[36m
|
||||
COLOR_SUCCESS = \033[32m
|
||||
COLOR_WARNING = \033[33m
|
||||
COLOR_ERROR = \033[31m
|
||||
COLOR_BOLD = \033[1m
|
||||
|
||||
# Plugin configuration
|
||||
PLUGIN_NAME = hello-world
|
||||
OUTPUT_DIR = build
|
||||
OUTPUT = $(OUTPUT_DIR)/$(PLUGIN_NAME).wasm
|
||||
|
||||
# TinyGo build flags
|
||||
TINYGO_TARGET = wasi
|
||||
TINYGO_SCHEDULER = none
|
||||
|
||||
help: ## Show this help message
|
||||
@echo '$(COLOR_BOLD)Hello World WASM Plugin$(COLOR_RESET)'
|
||||
@echo ''
|
||||
@echo '$(COLOR_BOLD)Usage:$(COLOR_RESET) make [target]'
|
||||
@echo ''
|
||||
@echo '$(COLOR_BOLD)Prerequisites:$(COLOR_RESET)'
|
||||
@echo ' - TinyGo (https://tinygo.org/getting-started/install/)'
|
||||
@echo ' macOS: brew install tinygo'
|
||||
@echo ' Linux: See TinyGo installation docs'
|
||||
@echo ''
|
||||
@echo '$(COLOR_BOLD)Available targets:$(COLOR_RESET)'
|
||||
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " $(COLOR_INFO)%-15s$(COLOR_RESET) %s\n", $$1, $$2}' $(MAKEFILE_LIST)
|
||||
|
||||
check-tinygo: ## Check if TinyGo is installed
|
||||
@which tinygo > /dev/null 2>&1 || (echo "$(COLOR_ERROR)Error: TinyGo is not installed$(COLOR_RESET)"; \
|
||||
echo "$(COLOR_INFO)Install TinyGo:$(COLOR_RESET)"; \
|
||||
echo " macOS: brew install tinygo"; \
|
||||
echo " Linux: See https://tinygo.org/getting-started/install/"; \
|
||||
exit 1)
|
||||
@echo "$(COLOR_SUCCESS)✓ TinyGo found: $$(tinygo version)$(COLOR_RESET)"
|
||||
|
||||
build: check-tinygo ## Build the WASM plugin
|
||||
@mkdir -p $(OUTPUT_DIR)
|
||||
@echo "$(COLOR_INFO)Building WASM plugin...$(COLOR_RESET)"
|
||||
GOWORK=off tinygo build -o $(OUTPUT) -target=$(TINYGO_TARGET) -scheduler=$(TINYGO_SCHEDULER) .
|
||||
@echo "$(COLOR_SUCCESS)✓ Plugin built successfully: $(OUTPUT)$(COLOR_RESET)"
|
||||
@ls -lh $(OUTPUT) | awk '{print " Size: " $$5}'
|
||||
|
||||
build-optimized: check-tinygo ## Build the WASM plugin with size optimizations
|
||||
@mkdir -p $(OUTPUT_DIR)
|
||||
@echo "$(COLOR_INFO)Building optimized WASM plugin...$(COLOR_RESET)"
|
||||
GOWORK=off tinygo build -o $(OUTPUT) -target=$(TINYGO_TARGET) -scheduler=$(TINYGO_SCHEDULER) -no-debug -gc=leaking .
|
||||
@echo "$(COLOR_SUCCESS)✓ Optimized plugin built: $(OUTPUT)$(COLOR_RESET)"
|
||||
@ls -lh $(OUTPUT) | awk '{print " Size: " $$5}'
|
||||
|
||||
clean: ## Remove build artifacts
|
||||
@echo "$(COLOR_INFO)Cleaning build artifacts...$(COLOR_RESET)"
|
||||
@rm -rf $(OUTPUT_DIR)
|
||||
@echo "$(COLOR_SUCCESS)✓ Clean complete$(COLOR_RESET)"
|
||||
|
||||
info: ## Show build information
|
||||
@echo "$(COLOR_BOLD)Build Configuration$(COLOR_RESET)"
|
||||
@echo " Plugin Name: $(PLUGIN_NAME)"
|
||||
@echo " Output: $(OUTPUT)"
|
||||
@echo " Target: $(TINYGO_TARGET)"
|
||||
@echo " Scheduler: $(TINYGO_SCHEDULER)"
|
||||
@echo ""
|
||||
@if [ -f "$(OUTPUT)" ]; then \
|
||||
echo "$(COLOR_SUCCESS)Plugin exists:$(COLOR_RESET)"; \
|
||||
ls -lh $(OUTPUT) | awk '{print " " $$9 " (" $$5 ")"}'; \
|
||||
else \
|
||||
echo "$(COLOR_WARNING)Plugin not built yet$(COLOR_RESET)"; \
|
||||
fi
|
||||
|
||||
.DEFAULT_GOAL := help
|
||||
Reference in New Issue
Block a user