
EMCXX = "$(HOME)/Programming/emsdk/emscripten/1.37.28/em++"

.PHONY: all
all: plc purelambdacalculus.html
	make -C explanation

plc: lexer.cpp parser.cpp
	g++ -std=c++11 -O3 -DTARGET_PLATFORM_NATIVE -o $@ $<

purelambdacalculus.html: lexer.cpp parser.cpp
	$(EMCXX) -std=c++11 -O3 -s WASM=1 \
	         -s EXPORTED_FUNCTIONS="['_RunPureLambdaCalculus']" \
	         -s EXTRA_EXPORTED_RUNTIME_METHODS='["ccall", "cwrap"]' \
	         -DTARGET_PLATFORM_WASM -o $@ $<

lexer.cpp: lexer.l
	flex -o $@ $<

parser.cpp: parser.yy
	bison -o $@ $<

.PHONY: clean
clean:
	rm -f parser.cpp lexer.cpp \
	      purelambdacalculus.html
	make -C explanation clean

.PHONY: distclean
distclean: clean
	rm -f plc \
	      purelambdacalculus.wasm purelambdacalculus.js
	make -C explanation distclean
