TREESOURCES = $(wildcard *.ftree)

SOURCES = $(wildcard *.cpp)

OBJECTS = $(SOURCES:.cpp=.o) $(TREESOURCES:.ftree=_tree.o)
DEPENDS = $(OBJECTS:%.o=.%.d)

CXXFLAGS = -I.

all:: foundry-build

check: all

update: all

clean::
	$(RM) foundry-build

foundry-build: $(OBJECTS)
	$(CXX) $(LDFLAGS) -o $@ $^

%.o: %.cpp
	$(CXX) $(CXXFLAGS) -MD -MF .$*.d -o $@ -c $<

clean::
	$(RM) *.o

%_tree.cpp: ../lang/foundry-tree %.ftree
	$^ -c -o $@

clean::
	$(RM) $(TREESOURCES:.ftree=_tree.cpp)

%_tree.hpp: ../lang/foundry-tree %.ftree
	$^ -o $@

clean::
	$(RM) $(TREESOURCES:.ftree=_tree.hpp)

sinclude $(DEPENDS)

.%.d:
	@echo "$*.o: $(TREESOURCES:.ftree=_tree.hpp)" >$@

clean::
	$(RM) .*.d
