25 lines
629 B
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
|