# Build options can be changed by modifying the makefile or by building with 'make SETTING=value'.
DEBUG           ?= 1


ifeq ($(DEBUG),0)
	CARGO_ARGS  += --release
endif


RS_TABLE_GEN    := ../tools/rs_table_gen.sh


IINC            := -I ../include

TABLE_DIRS      := $(shell find src -type d)
TABLE_TEMPLATES := $(foreach dir,$(TABLE_DIRS),$(wildcard $(dir)/*.tablers.template))
TABLE_GENERATED := $(TABLE_TEMPLATES:%.tablers.template=%.rs)

TABLE_DEP_FILES := $(TABLE_GENERATED:%.rs=%.tablers.d)


all: $(TABLE_GENERATED)
	make -C ..
	cargo build $(CARGO_ARGS)

distclean:
	$(RM) -rf $(TABLE_GENERATED)


.PHONY: all distclean
.DEFAULT_GOAL := all
.SECONDARY:


%.rs: %.tablers.template
	cpp -P $(IINC) -M -MM -MMD -MP -MF $(@:.rs=.tablers.d) $<
	$(RS_TABLE_GEN) $< $@

-include $(TABLE_DEP_FILES)

# Print target for debugging
print-% : ; $(info $* is a $(flavor $*) variable set to [$($*)]) @true
