.PHONY: clean

libIPUpy_dir=../libIPUpy

POPCFLAGS = -Wall -Wextra -I./ -I$(libIPUpy_dir) --target=ipu21 -O2

multirepl: multirepl_host.cpp multirepl_codelets.gp
	g++ multirepl_host.cpp -std=c++17 -lpoplar -Wall -Wextra -o multirepl

multirepl_codelets.gp : multirepl_codelets.cpp
	popc  multirepl_codelets.cpp -o multirepl_stub_codelets.gp $(POPCFLAGS)
	popc multirepl_stub_codelets.gp $(libIPUpy_dir)/build/libIPUpy.gp -o multirepl_codelets.gp $(POPCFLAGS)

clean:
	rm -f multirepl ipulisp *_codelets.gp lisp_stub.gp

# Lisp is the default for this adaptation; the old multirepl target is retained.
.DEFAULT_GOAL := ipulisp
TARGET ?= ipu21
ipulisp: lisp_host.cpp lisp_codelets.gp
	$(CXX) -std=c++17 -O2 -Wall -Wextra -DLISP_CODELETS='"$(abspath lisp_codelets.gp)"' $< -lpoplar -o $@
lisp_codelets.gp: lisp_codelets.cpp ../libIPUlisp/IPUlisp.h ../libIPUlisp/build/IPUlisp.gp
	popc --target=$(TARGET) -O2 -I../libIPUlisp -o lisp_stub.gp $<
	popc --target=$(TARGET) -O2 -o $@ lisp_stub.gp ../libIPUlisp/build/IPUlisp.gp
../libIPUlisp/build/IPUlisp.gp: FORCE
	$(MAKE) -C ../libIPUlisp TARGET=$(TARGET)
.PHONY: FORCE
FORCE:
