# 22 april 2015

OUTBASE = new
OUTDIR = out
OBJDIR = .obj

xHFILES = \
	ui.h \
	$(baseHFILES)

OFILES = \
	$(baseCFILES:%.c=$(OBJDIR)/%.o) \
	$(baseMFILES:%.m=$(OBJDIR)/%.o)

xCFLAGS = \
	-g \
	-Wall -Wextra \
	-Wno-unused-parameter \
	-Wno-switch \
	--std=c99 \
	$(CFLAGS) \
	$(archmflag) \
	$(baseCFLAGS)

xLDFLAGS = \
	-g \
	$(LDFLAGS) \
	$(archmflag) \
	$(baseLDFLAGS)

OUT = $(OUTDIR)/$(OUTBASE)$(baseSUFFIX)

$(OUT): $(OFILES) | $(OUTDIR)/.phony
	@$(CC) -o $(OUT) $(OFILES) $(xLDFLAGS)
	@echo ====== Linked $(OUT)

.SECONDEXPANSION:
$(OBJDIR)/%.o: %.c $(xHFILES) | $$(dir $$@).phony
	@$(CC) -o $@ -c $< $(xCFLAGS)
	@echo ====== Compiled $<

$(OBJDIR)/%.o: %.m $(xHFILES) | $$(dir $$@).phony
	@$(CC) -o $@ -c $< $(xCFLAGS)
	@echo ====== Compiled $<

# see http://www.cmcrossroads.com/article/making-directories-gnu-make
%/.phony:
	@mkdir -p $(dir $@)
	@touch $@
.PRECIOUS: %/.phony

ui.h: ui.idl
	@idl2h -extern _UI_EXTERN -guard __UI_UI_H__ < ui.idl > ui.h
	@echo ====== Generated ui.h

clean:
	rm -rf $(OUTDIR) $(OBJDIR) ui.h
.PHONY: clean