.PHONY: help
help:
	@echo
	@echo "Virtual Boy Emulator - September 10, 2021"
	@echo
	@echo "Target build environment is any Debian with the following packages:"
	@echo "  emscripten"
	@echo "  gcc"
	@echo "  openjdk-17-jdk"
	@echo 
	@echo "Available make targets:"
	@echo "  build   Perform all build commands"
	@echo "  bundle  Package the repository for HTML distribution"
	@echo "  clean   Remove output files"
	@echo "  core    Check the C core source for compiler warnings"
	@echo "  wasm    Build the WebAssembly core module"
	@echo

.PHONY: build
build:
	@echo "  Check C core library for style issues"
	@make -s core
	@echo "  Build WebAssembly core module"
	@make -s wasm
	@echo "  Bundle directory tree into HTML file"
	@make -s bundle

.PHONY: bundle
bundle:
	@java app/Bundle.java vbemu

.PHONY: clean
clean:
	@rm -f vbemu_*.html core.wasm

.PHONY: core
core:
	@gcc core/vb.c -I core \
        -fsyntax-only -Wall -Wextra -Werror -Wpedantic -std=c90
	@gcc core/vb.c -I core -D VB_LITTLEENDIAN \
        -fsyntax-only -Wall -Wextra -Werror -Wpedantic -std=c90

.PHONY: wasm
wasm:
	@emcc -o core.wasm wasm/wasm.c core/vb.c -Icore -D VB_LITTLEENDIAN \
        --no-entry -O2 -flto -s WASM=1 -s EXPORTED_RUNTIME_METHODS=[] \
        -s ALLOW_MEMORY_GROWTH -s MAXIMUM_MEMORY=4GB -fno-strict-aliasing
	@rm -f *.wasm.tmp*