cocc_lex-yacc/Makefile

25 lines
629 B
Makefile

CC_BIN ?= gcc
LEX_BIN ?= flex
YACC_BIN ?= bison
GRAMMARS_DIR ?= ./grammars
GRAMMAR_ID ?= lysator
SAMPLES_DIR ?= ./samples
output ?= $(GRAMMAR_ID)-cocc
all: $(output)
$(GRAMMAR_ID).tab.h: $(GRAMMARS_DIR)/$(GRAMMAR_ID).y
$(YACC_BIN) -d $?
lex.yy.c: $(GRAMMARS_DIR)/$(GRAMMAR_ID).l $(GRAMMAR_ID).tab.h
$(LEX_BIN) $<
$(output): lex.yy.c $(GRAMMAR_ID).tab.c $(GRAMMAR_ID).tab.h
$(CC_BIN) -o $@ lex.yy.c $(GRAMMAR_ID).tab.c
clean:
rm -f lex.yy.c *.tab.c *.tab.h *-cocc
test: $(SAMPLES_DIR) $(output)
for cfile in $(SAMPLES_DIR)/*; do printf "\n\n *** file: %s *** \n" $$cfile; ./$(output) < $$cfile; [ -eq $$? 0 ]; done