libui/redo/GNUbase.mk

71 lines
1.4 KiB
Makefile

# 22 april 2015
OUTBASE = new
OUTDIR = out
OBJDIR = .obj
IDLFILES = \
ui.idl \
$(baseIDLFILES)
xHFILES = \
uipriv.h \
$(IDLFILES:%.idl=$(OUTDIR)/%.h) \
$(baseHFILES)
OFILES = \
$(baseCFILES:%.c=$(OBJDIR)/%.o) \
$(IDLFILES:%.idl=$(OBJDIR)/z%typefuncs.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
$(OUTDIR)/%.h: %.idl tools/idl2h.go | $(OUTDIR)/.phony
@go run tools/idl2h.go -extern _UI_EXTERN -guard __UI_UI_H__ < $< > $@
@echo ====== Generated `basename $@`
.PRECIOUS: $(OUTDIR)/%.h
z%typefuncs.c: %.idl tools/idl2typefuncs.go
@go run tools/idl2typefuncs.go out/ui.h < $< > $@
@echo ====== Generated $@
.PRECIOUS: z%typefuncs.c
clean:
rm -rf $(OUTDIR) $(OBJDIR) z*
.PHONY: clean