INCD   = ../include
CFLAGS = -I $(INCD) -g
OUT    = cintg.exe
OUTD   = .
SRCD   = ../src
GRD    = ../grammar

RM     = rm -f
CC     = gcc -c
LD     = gcc -o
# With debug info
#YACC   = zubr -lt -Itokens.h -C$(SRCD)/main.c -D$(INCD)/z_tab.h -V$(OUTD)/parser.output
#YACC   = zubr -t -C$(SRCD)/main.c -D$(INCD)/z_tab.h -V$(OUTD)/parser.output

HEADERSF = stdlibf.h
HEADERS = $(addprefix $(INCD)/, $(HEADERSF))
 
build: all run

all: interpreter

interpreter: interpreter.o get_token.o stdlibf2.o
	$(LD) $(OUT) $+

interpreter.o:  $(SRCD)/interpreter.c ${HEADERS} 
	$(CC) $(CFLAGS)  $(SRCD)/interpreter.c -o $(OUTD)/interpreter.o

get_token.o:  $(SRCD)/get_token.c ${HEADERS}
	$(CC) $(CFLAGS)  $(SRCD)/get_token.c -o $(OUTD)/get_token.o

stdlibf2.o:  $(SRCD)/stdlibf2.c ${HEADERS}
	$(CC) $(CFLAGS)  $(SRCD)/stdlibf2.c -o $(OUTD)/stdlibf2.o


code.o:  $(SRCD)/code.c ${HEADERS}
	$(CC) $(CFLAGS)  $(SRCD)/code.c -o $(OUTD)/code.o

symtab.o:  $(SRCD)/symtab.c ${HEADERS}
	$(CC) $(CFLAGS)  $(SRCD)/symtab.c -o $(OUTD)/symtab.o

#$(SRCD)/main.c: $(GRD)/main.y ${HEADERS}
#	$(YACC) $(GRD)/main.y

clean:
	$(RM) *.o  $(OUT) *.log

run:
	./$(OUT) test2.c
