DEPDIR := .d
$(shell mkdir -p $(DEPDIR) > /dev/null)
DEPFLAGS = -MT $@ -MMD -MP -MF $(DEPDIR)/$*.Td
UNAME=$(shell uname -s)

ifeq ($(UNAME),Darwin)
	CC=clang
else
	CC=gcc
endif

CFLAGS=--std=c++17 -Os $(DEPFLAGS)
CDEFINES=-D__STDC_WANT_LIB_EXT1__=1
BOOSTLIB=$(BOOST)/stage/lib/libboost_program_options.a
POSTCOMPILE = @mv -f $(DEPDIR)/$*.Td $(DEPDIR)/$*.d && touch $@

SRCS = $(wildcard *.cpp)
OBJS = $(SRCS:.cpp=.o)

all: dump_objs

clean:
	rm -f *.o
	rm -f gobj_parse

%.o : %.cpp
%.o: %.cpp $(DEPDIR)/%.d
	$(CC) $(CFLAGS) $(CDEFINES) -c -o $@ $<
	$(POSTCOMPILE)

gobj_parse: $(OBJS)
	$(CC) $(CFLAGS) -o $@ $^ -lstdc++ $(BOOSTLIB)

dump_objs: gobj_parse
	echo date > dump_objs
	./gobj_parse -i ../mdlsrc/dung.mud -g 1 > ../mdlfun/gobject.h
	./gobj_parse -i ../mdlsrc/dung.mud -g 0 > ../mdlfun/objdefs.h
	./gobj_parse -i ../mdlsrc/dung.mud -r 1 > ../mdlfun/roomdefs.h
	./gobj_parse -i ../mdlsrc/dung.mud -s 1 -h 1 > ../mdlfun/zstring.h

$(DEPDIR)/%.d: ;
.PRECIOUS: $(DEPDIR)/%.d

include $(wildcard $(patsubst %,$(DEPDIR)/%.d,$(basename $(SRCS))))

