project = ../bin/asm
objects = assembler.tab.c lex.yy.c
hfiles = $(wildcard *.h)
cfiles = $(filter-out $(objects), $(wildcard *.c))

.PHONY: all clean

all: $(project)

$(project) : $(objects) $(cfiles) $(hfiles)
	gcc -o $@ $(objects) $(cfiles)

assembler.tab.c : assembler.y 
	bison -d $<

lex.yy.c : assembler.lex assembler.tab.h
	flex $<

clean :
	rm -f assembler.tab.c assembler.tab.h lex.yy.c $(project) $(project:=.exe)

# This rule keeps Make happy, while the %.tab.h file is generated by
#  the bison rule above
%.tab.h: %.tab.c
	if [ -a $@ ]; then touch $@; else false; fi
