blob: e3b28ab844014a9d874aaf75e8e9ad446c7f3089 [file] [log] [blame]
# 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