
FLEX := flex
BISON := bison

TARGET := jlc
LDFLAGS := -lfl

COBJS := lex.yy.o
CXXOBJS := $(TARGET).tab.o
CXXOBJS += ASTNode.o

all: $(TARGET)

$(TARGET): $(COBJS) $(CXXOBJS)
	$(CXX) -o $@ $^ $(LDFLAGS)

%.o: %.c
	$(CC) -c -o $@ $<

%.o: %.cc
	$(CXX) -c -o $@ $<

$(TARGET).tab.cc $(TARGET).tab.hh: $(TARGET).yy
	$(BISON) -d $<

lex.yy.o: lex.yy.c

lex.yy.c: $(TARGET).tab.hh
lex.yy.c: $(TARGET).lex
	$(FLEX) $<

clean:
	-rm -f lex.yy.c $(TARGET).tab.cc $(TARGET).tab.hh *~ *.o $(TARGET)
