55 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Makefile
		
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Makefile
		
	
	
	
.PHONY: help
 | 
						|
help:
 | 
						|
	@echo
 | 
						|
	@echo "Virtual Boy Emulator - April 20, 2022"
 | 
						|
	@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 app/core/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
 | 
						|
	@emcc core/vb.c -I core \
 | 
						|
        -fsyntax-only -Wall -Wextra -Werror -Wpedantic -std=c90
 | 
						|
	@emcc core/vb.c -I core -D VB_LITTLEENDIAN \
 | 
						|
        -fsyntax-only -Wall -Wextra -Werror -Wpedantic -std=c90
 | 
						|
 | 
						|
.PHONY: wasm
 | 
						|
wasm:
 | 
						|
	@emcc -o app/core/core.wasm wasm/wasm.c core/vb.c -Icore \
 | 
						|
        -D VB_LITTLEENDIAN --no-entry -O2 -flto -s WASM=1 \
 | 
						|
        -D "VB_EXPORT=__attribute__((used))" \
 | 
						|
        -s EXPORTED_RUNTIME_METHODS=[] -s ALLOW_MEMORY_GROWTH \
 | 
						|
        -s MAXIMUM_MEMORY=4GB -fno-strict-aliasing
 | 
						|
	@rm -f app/core/*.wasm.tmp*
 |