POPCORN=popcorn.exe
POPPFLAGS=--TALC
TALC=talc.exe

# System dependencies
ifdef WINDIR
O=obj
A=lib
CC=cl
else
O=o
A=a
CC=gcc
endif

RT_DIR=../../../runtime
PLIB_DIR=../../../popcorn/lib

PLIB_BASE=core string list
PLIB=$(addprefix $(PLIB_DIR)/,  $(addsuffix .$(O), $(PLIB_BASE)))
OBJ_BASE=lex parse env svc eval plan planlib
OBJ= $(addsuffix .$(O), $(OBJ_BASE))

#########################################################
# plan.exe
#########################################################

plan.exe: $(PLIB) $(OBJ)
	$(POPCORN) -o plan.exe -I $(PLIB_DIR) -I $(RT_DIR)  $^ 

%.$(O): %.pop
	$(POPCORN) $(POPPFLAGS) -c $<

%.$(O): %.c
	$(CC) -c $<

clean:
	rm -f *~ *.$(O) *.tal *.tali *.lst *.pdb *.ilk *.exe

#########################################################
# Non-regression suite
#########################################################

REF_FILE=reference.out
CHECK_FILE=test.out

# quick check
qc:
	echo "main()" | ./plan.exe tests/values.plan

run:
	rm -f $(CHECK_FILE)
	echo "main()"        | ./plan.exe tests/values.plan   >> $(CHECK_FILE)
	echo "main()"        | ./plan.exe tests/unary.plan    >> $(CHECK_FILE)
	echo "main()"        | ./plan.exe tests/binary.plan   >> $(CHECK_FILE)
	echo "main()"        | ./plan.exe tests/exp.plan      >> $(CHECK_FILE)
	echo "main()"        | ./plan.exe tests/services.plan >> $(CHECK_FILE)
#	echo "test1()"       | ./plan.exe tests/except.plan
	echo "ping(0, 1234)" | ./plan.exe tests/ping.plan     >> $(CHECK_FILE)
	echo "traceroute(13, 1234, 57)" | ./plan.exe tests/traceroute.plan \
          >> $(CHECK_FILE)

check:
	diff $(CHECK_FILE) $(REF_FILE)

ref:
	cp $(CHECK_FILE) $(REF_FILE)

