mirror of
ssh://git.janware.com/srv/git/janware/proj/jw-python
synced 2026-01-15 01:52:56 +01:00
70 lines
2.1 KiB
Makefile
70 lines
2.1 KiB
Makefile
TOPDIR = ../..
|
|
|
|
GENERATED_STD = grammartest.l grammartest.y grammartest.ebnf include/grammartest.h
|
|
|
|
# These types are meant to be cut off the tree and turned into hand coded flex
|
|
# regexes
|
|
#TRIM_SYMBOLS = blah
|
|
TRIM_SYMBOLS =
|
|
GENERATE_LOG_LEVEL ?= notice
|
|
FIX_EXTENSIONS ?= discard
|
|
CHECK_SYMBOLS ?= --check-symbols=all
|
|
|
|
|
|
GRAMMAR_INPUT ?= grammartest-input.ebnf
|
|
GENERATED = grammartest-dense.ebnf $(GENERATED_STD)
|
|
GENERATE_PY = ./generate.py
|
|
GENERATE = python ./$(GENERATE_PY) --log-level $(GENERATE_LOG_LEVEL) create \
|
|
--fix-extensions $(FIX_EXTENSIONS) \
|
|
--unroll-lists \
|
|
--unroll-options \
|
|
$(CHECK_SYMBOLS) \
|
|
--trim-symbols=$(shell echo $(TRIM_SYMBOLS) | sed 's/ */,/g') \
|
|
$(CREATE_EXTRA_ARGS)
|
|
CHECK_SYMBOLS ?= special_character
|
|
|
|
FB_NAME_PREFIX ?= grammartest_
|
|
FB_HDRDIR ?= include
|
|
FB_BISON_OUT_EXT ?= cpp
|
|
FB_FLEX_OUT_EXT ?= cpp
|
|
FB_CASE_INSENSITIVE ?= true
|
|
FB_SRC ?= $(filter %.y %.l,$(GENERATED))
|
|
|
|
include $(TOPDIR)/make/proj.mk
|
|
include $(MODDIR)/make/flex-bison.mk
|
|
include $(MODDIR)/make/py-defs.mk
|
|
|
|
all:
|
|
debug-all:
|
|
GENERATE_LOG_LEVEL=debug make all 2>&1 | tee run.out
|
|
|
|
generate: $(GENERATED)
|
|
|
|
grammartest.y: include/grammartest.h
|
|
lex.grammartest.c: grammartest.l
|
|
|
|
check: $(GRAMMAR_INPUT) $(GENERATE_PY) Makefile
|
|
python ./$(GENERATE_PY) --log-level info check --fix-extensions unroll --unroll-lists --unroll-options --check-symbols='$(CHECK_SYMBOLS)' $<
|
|
|
|
grammartest-dense.ebnf: $(GRAMMAR_INPUT) $(GENERATE_PY)
|
|
python ./$(GENERATE_PY) --log-level $(GENERATE_LOG_LEVEL) create --fix-extensions keep $< grammartest.ebnf > $@.tmp
|
|
mv $@.tmp $@
|
|
|
|
define generate_rule
|
|
$(1): $$(GRAMMAR_INPUT) $$(GENERATE_PY) Makefile
|
|
$$(GENERATE) $$< $$(patsubst grammartest.%,grammartest.%,$$@) > $$@.tmp
|
|
mv $$@.tmp $$@
|
|
endef
|
|
$(foreach target,$(GENERATED_STD),$(eval $(call generate_rule,$(target))))
|
|
|
|
clean.generated:
|
|
rm -f $(GENERATED)
|
|
clean: clean.generated
|
|
echo-generated:
|
|
@echo GENERATED = $(GENERATED)
|
|
|
|
help:
|
|
$(GENERATE) --help
|
|
|
|
expand-macros:
|
|
make 2>/dev/null | sed '/g++/ !d; s/g++\|gcc//; s/-o .*//' | xargs g++ -E -C | indent
|