| # Replace the line below with the location of xosgen |
| PREFIX=../ |
| XOSGEN=python $(PREFIX)/tool/xosgen |
| |
| DJANGO_TARGET=$(PREFIX)/targets/django-split.xtarget |
| DOT_TARGET=$(PREFIX)/targets/model-deps-graphviz.xtarget |
| DEP_TARGET=$(PREFIX)/targets/model-deps.xtarget |
| |
| INIT_TARGET=$(PREFIX)/targets/init.xtarget |
| XPROTOS_TMP := $(shell mktemp) |
| |
| # Rule to compile Python files |
| %.py: %.xproto |
| $(XOSGEN) --attic attic --target $(DJANGO_TARGET) --output $@ $< |
| |
| # Rule to produce test results |
| %.ok: %.py |
| PYTHONPATH=$(PYTHONPATH):$(PREFIX)/tool python -m $(subst /,.,$(subst .py,,$<)) |
| |
| # Rule to produce graphviz dot |
| %.dot: %.xproto |
| $(XOSGEN) --target $(DOT_TARGET) $< > $@ |
| |
| # Rule to produce model dependencies |
| %.json: %.xproto |
| $(XOSGEN) --target $(DEP_TARGET) $< > $@ |
| |
| # Rule to produce json dependencies |
| %.ok: %.py |
| PYTHONPATH=$(PYTHONPATH):$(PREFIX)/tool python -m $(subst /,.,$(subst .py,,$<)) && touch $@ |
| |
| # List of xprotos |
| xprotos = $(wildcard *.xproto) |
| pys = $(xprotos:.xproto=.py) |
| |
| # List of tests |
| tests = $(wildcard tests/*test.py) |
| oks = $(tests:.py=.ok) |
| |
| all: $(pys) __init__.py |
| |
| __init__.py: $(xprotos) |
| cat $(xprotos) > $(XPROTOS_TMP) |
| $(XOSGEN) --attic attic --target $(INIT_TARGET) --output $@ $(XPROTOS_TMP) | awk '!seen[$$0]++' > __init__.py |
| |
| tests: $(oks) |
| |
| .PHONY: clean all init tests |
| |
| clean: |
| rm -f $(pys) |
| rm -f $(oks) |
| rm -f __init__.py |