changeset 1994:34f397078334

Clean up the build process a bit.
author Matti Hamalainen <ccr@tnsp.org>
date Sun, 01 Jul 2018 23:09:15 +0300
parents 7190f4fbc0dd
children ea6337c873c6
files Makefile.gen
diffstat 1 files changed, 50 insertions(+), 98 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile.gen	Sun Jul 01 23:07:33 2018 +0300
+++ b/Makefile.gen	Sun Jul 01 23:09:15 2018 +0300
@@ -276,6 +276,9 @@
 DM_LDFLAGS += $(LDFLAGS)
 
 
+COMPILE_OBJ = @if test ! -d $(OBJPATH); then mkdir -p $(OBJPATH); fi && echo " CC $<" && $(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS)
+LINK_BIN = @if test ! -d $(BINPATH); then mkdir -p $(BINPATH); fi && echo " LINK $@" && $(CC) -o $@ $(filter %.o %.a,$+)
+
 DMLIB_A=$(OBJPATH)dmlib.a
 DMLIB_OBJS += \
 	dmfile.o dmlib.o dmcurves.o dmstring.o \
@@ -288,111 +291,79 @@
 TARGETS += $(DMLIB_A) $(addprefix $(BINPATH),$(addsuffix $(EXEEXT),$(BINARIES))) \
 	$(TOOL_TARGETS) $(TESTS_TARGETS)
 
-NONBUILD += $(OBJPATH) $(BINPATH)
+#NONBUILD +=
 
 
 all: $(NONBUILD) $(TARGETS)
 
 
 ###
-### Generic rules
+### Generic object rules
 ###
-$(OBJPATH):
-	$(MKDIR_P) $@
-
-$(BINPATH):
-	$(MKDIR_P) $@
-
-
-$(OBJPATH)%.o: $(MINIJSS)%.c $(MINIJSS)%.h
-	@echo " CC $<"
-	@$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS)
-
-$(OBJPATH)%.o: $(MINIJSS)%.c
-	@echo " CC $<"
-	@$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS)
-
-
 $(OBJPATH)%.o: $(DMLIB)tests/%.c $(DMLIB)tests/%.h
-	@echo " CC $<"
-	@$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS)
+	$(COMPILE_OBJ)
 
 $(OBJPATH)%.o: $(DMLIB)tests/%.c
-	@echo " CC $<"
-	@$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS)
-
+	$(COMPILE_OBJ)
 
 $(OBJPATH)%.o: $(DMLIB)tools/%.c $(DMLIB)tools/%.h
-	@echo " CC $<"
-	@$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS)
+	$(COMPILE_OBJ)
 
 $(OBJPATH)%.o: $(DMLIB)tools/%.c
-	@echo " CC $<"
-	@$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS)
+	$(COMPILE_OBJ)
+
+$(OBJPATH)%.o: %.c %.h
+	$(COMPILE_OBJ)
 
+$(OBJPATH)%.o: %.c
+	$(COMPILE_OBJ)
 
+$(OBJPATH)%.o: $(MINIJSS)%.c $(MINIJSS)%.h
+	$(COMPILE_OBJ)
+
+$(OBJPATH)%.o: $(MINIJSS)%.c
+	$(COMPILE_OBJ)
 
 $(OBJPATH)%.o: $(DMLIB_SRC)%.c $(DMLIB_SRC)%.h
-	@echo " CC $<"
-	@$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS)
+	$(COMPILE_OBJ)
 
 $(OBJPATH)%.o: $(DMLIB_SRC)%.c
-	@echo " CC $<"
-	@$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS)
-
-
-$(OBJPATH)%.o: %.c %.h
-	@echo " CC $<"
-	@$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS)
-
-$(OBJPATH)%.o: %.c
-	@echo " CC $<"
-	@$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS)
+	$(COMPILE_OBJ)
 
 
 ###
-### dmlib rules
+### dmlib-specific rules
 ###
-
 $(MINIJSS)jmix_c.c: $(MINIJSS)jmix_c_in.c $(MINIJSS)jmixtmpl_c.h $(MINIJSS)jmix_post_c.h
 	(echo "#include \"jssmix.h\"" && cpp $< $(DM_CFLAGS)) | sed "s/^# .*//g" > $@
 
 $(OBJPATH)dmimage.o: $(DMLIB_SRC)dmimage.c $(DMLIB_SRC)stb_image.c $(DMLIB_SRC)dmimage.h
-	@echo " CC $+"
-	@$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS)
+	$(COMPILE_OBJ)
 
 $(OBJPATH)dmresw.o: $(DMLIB_SRC)dmresw.c $(DMLIB_SRC)dmres.h
-	@echo " CC $+"
-	@$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS)
+	$(COMPILE_OBJ)
 
 
 $(OBJPATH)jssmod.o: $(MINIJSS)jssmod.c $(MINIJSS)jssmod.h $(MINIJSS)jss.h
-	@echo " CC $+"
-	@$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS)
+	$(COMPILE_OBJ)
 
 $(OBJPATH)jssplr.o: $(MINIJSS)jssplr.c $(MINIJSS)jssplr.h $(MINIJSS)jss.h $(MINIJSS)jssmod.h $(MINIJSS)jssmix.h
-	@echo " CC $+"
-	@$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS)
+	$(COMPILE_OBJ)
 
 $(OBJPATH)jssmix.o: $(MINIJSS)jssmix.c $(MINIJSS)jssmix.h $(MINIJSS)jss.h
-	@echo " CC $+"
-	@$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS)
+	$(COMPILE_OBJ)
 
 $(OBJPATH)dmblit.o: $(DMLIB_SRC)dmblit.c $(DMLIB_SRC)dmscaledblit.h $(DMLIB_SRC)dmunscaledblit.h $(DMLIB_SRC)dmblitfunc.h $(DMLIB_SRC)dmlib.h
-	@echo " CC $+"
-	@$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS)
+	$(COMPILE_OBJ)
 
 $(OBJPATH)dmline.o: $(DMLIB_SRC)dmline.c $(DMLIB_SRC)dmdrawline.h $(DMLIB_SRC)dmlinefunc.h $(DMLIB_SRC)dmlineclip.h $(DMLIB_SRC)dmlib.h
-	@echo " CC $+"
-	@$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS)
+	$(COMPILE_OBJ)
 
 $(OBJPATH)libgfx.o: $(DMLIB)tools/libgfx.c $(DMLIB)tools/libgfx.h
-	@echo " CC $+"
-	@$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS) $(LIBPNG_CFLAGS)
+	$(COMPILE_OBJ)
 
 $(OBJPATH)lib64fmts.o: $(DMLIB)tools/lib64fmts.c $(DMLIB)tools/lib64gfx.h
-	@echo " CC $+"
-	@$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS)
+	$(COMPILE_OBJ)
 
 
 $(DMLIB)assets/SetupFont.dmf: $(DMLIB)assets/SetupFont.fnt
@@ -411,8 +382,7 @@
 $(OBJPATH)dmsimple.o: $(DMLIB_SRC)dmsimple.c $(DMLIB_SRC)dmengine.h \
 	$(DMLIB_SRC)setupmenubar.h $(DMLIB_SRC)setupfont.h \
 	$(DMLIB_SRC)setupimage.h $(DMLIB_SRC)dmsimple.c
-	@echo " CC $+"
-	@$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS)
+	$(COMPILE_OBJ)
 
 
 $(DMLIB_A): $(addprefix $(OBJPATH),$(DMLIB_OBJS)) $(DMLIB)Makefile.gen config.mak
@@ -425,76 +395,59 @@
 ### Tests
 ###
 $(TESTS_BINPATH)blittest$(EXEEXT): $(OBJPATH)blittest.o $(DMLIB_A)
-	@echo " LINK $+"
-	@$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(SDL_LDFLAGS) $(SDL_TTF_LDFLAGS) -lm
+	$(LINK_BIN) $(SDL_LDFLAGS) $(SDL_TTF_LDFLAGS) -lm
 
 $(TESTS_BINPATH)dzlibtest$(EXEEXT): $(OBJPATH)dzlibtest.o $(DMLIB_A)
-	@echo " LINK $+"
-	@$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(SDL_LDFLAGS) $(ZLIB_LDFLAGS)
+	$(LINK_BIN) $(DM_LDFLAGS) $(SDL_LDFLAGS) $(ZLIB_LDFLAGS)
 
 $(TESTS_BINPATH)plrtest$(EXEEXT): $(OBJPATH)plrtest.o $(DMLIB_A)
-	@echo " LINK $+"
-	@$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(SDL_LDFLAGS) $(ZLIB_LDFLAGS) -lm
+	$(LINK_BIN) $(DM_LDFLAGS) $(SDL_LDFLAGS) $(ZLIB_LDFLAGS) -lm
 
 $(TESTS_BINPATH)%test$(EXEEXT): $(OBJPATH)%test.o $(DMLIB_A)
-	@echo " LINK $+"
-	@$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(TOOL_LDFLAGS) -lm
+	$(LINK_BIN) $(DM_LDFLAGS) $(TOOL_LDFLAGS) -lm
 
 
 ###
 ### Tools
 ###
 $(TOOL_BINPATH)fontconv$(EXEEXT): $(OBJPATH)fontconv.o $(DMLIB_A)
-	@echo " LINK $+"
-	@$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(TOOL_LDFLAGS) $(SDL_LDFLAGS) $(SDL_TTF_LDFLAGS) $(ZLIB_LDFLAGS) -lm
+	$(LINK_BIN) $(DM_LDFLAGS) $(TOOL_LDFLAGS) $(SDL_LDFLAGS) $(SDL_TTF_LDFLAGS) $(ZLIB_LDFLAGS) -lm
 
 $(TOOL_BINPATH)data2inc$(EXEEXT): $(OBJPATH)data2inc.o $(DMLIB_A)
-	@echo " LINK $+"
-	@$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(TOOL_LDFLAGS)
+	$(LINK_BIN) $(DM_LDFLAGS) $(TOOL_LDFLAGS)
 
 $(TOOL_BINPATH)packed$(EXEEXT): $(OBJPATH)packed.o $(DMLIB_A)
-	@echo " LINK $+"
-	@$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(TOOL_LDFLAGS) $(ZLIB_LDFLAGS)
+	$(LINK_BIN) $(DM_LDFLAGS) $(TOOL_LDFLAGS) $(ZLIB_LDFLAGS)
 
 $(TOOL_BINPATH)mod2wav$(EXEEXT): $(OBJPATH)mod2wav.o $(DMLIB_A)
-	@echo " LINK $+"
-	@$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(TOOL_LDFLAGS) $(ZLIB_LDFLAGS) -lm
+	$(LINK_BIN) $(DM_LDFLAGS) $(TOOL_LDFLAGS) $(ZLIB_LDFLAGS) -lm
 
 $(TOOL_BINPATH)xm2jss$(EXEEXT): $(OBJPATH)xm2jss.o $(DMLIB_A)
-	@echo " LINK $+"
-	@$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(TOOL_LDFLAGS) $(ZLIB_LDFLAGS)
+	$(LINK_BIN) $(DM_LDFLAGS) $(TOOL_LDFLAGS) $(ZLIB_LDFLAGS)
 
 $(TOOL_BINPATH)dumpmod$(EXEEXT): $(OBJPATH)dumpmod.o $(DMLIB_A)
-	@echo " LINK $+"
-	@$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(TOOL_LDFLAGS) $(ZLIB_LDFLAGS)
+	$(LINK_BIN) $(DM_LDFLAGS) $(TOOL_LDFLAGS) $(ZLIB_LDFLAGS)
 
 $(OBJPATH)ppl.o: $(TOOL_SRC)ppl.c $(MINIJSS)jssplr.h $(MINIJSS)jss.h $(MINIJSS)jssmod.h $(MINIJSS)jssmix.h $(DMLIB_SRC)setupfont.h
-	@echo " CC $+"
-	@$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS)
+	$(COMPILE_OBJ)
 
 $(TOOL_BINPATH)ppl$(EXEEXT): $(OBJPATH)ppl.o $(OBJPATH)libgutil.o $(DMLIB_A)
-	@echo " LINK $+"
-	@$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(ZLIB_LDFLAGS) $(SDL_LDFLAGS) -lm
+	$(LINK_BIN) $(DM_LDFLAGS) $(ZLIB_LDFLAGS) $(SDL_LDFLAGS) -lm
 
 $(TOOL_BINPATH)objlink$(EXEEXT): $(OBJPATH)objlink.o $(DMLIB_A)
-	@echo " LINK $+"
-	@$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(TOOL_LDFLAGS)
+	$(LINK_BIN) $(DM_LDFLAGS) $(TOOL_LDFLAGS)
 
 $(TOOL_BINPATH)fanalyze$(EXEEXT): $(OBJPATH)fanalyze.o $(DMLIB_A)
-	@echo " LINK $+"
-	@$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(TOOL_LDFLAGS)
+	$(LINK_BIN) $(DM_LDFLAGS) $(TOOL_LDFLAGS)
 
 $(TOOL_BINPATH)gfxconv$(EXEEXT): $(OBJPATH)gfxconv.o $(OBJPATH)lib64gfx.o $(OBJPATH)lib64fmts.o $(OBJPATH)libgfx.o $(DMLIB_A)
-	@echo " LINK $+"
-	@$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(TOOL_LDFLAGS) $(LIBPNG_LDFLAGS) $(ZLIB_LDFLAGS)
+	$(LINK_BIN) $(DM_LDFLAGS) $(TOOL_LDFLAGS) $(LIBPNG_LDFLAGS) $(ZLIB_LDFLAGS)
 
 $(TOOL_BINPATH)64vw$(EXEEXT): $(OBJPATH)64vw.o $(OBJPATH)lib64gfx.o $(OBJPATH)lib64fmts.o $(OBJPATH)libgfx.o $(DMLIB_A)
-	@echo " LINK $+"
-	@$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(LIBPNG_LDFLAGS) $(ZLIB_LDFLAGS) $(SDL_LDFLAGS)
+	$(LINK_BIN) $(DM_LDFLAGS) $(LIBPNG_LDFLAGS) $(ZLIB_LDFLAGS) $(SDL_LDFLAGS)
 
 $(TOOL_BINPATH)gentab$(EXEEXT): $(OBJPATH)gentab.o $(DMLIB_A)
-	@echo " LINK $+"
-	@$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(TOOL_LDFLAGS) -lm
+	$(LINK_BIN) $(DM_LDFLAGS) $(TOOL_LDFLAGS) -lm
 
 
 ###
@@ -502,8 +455,7 @@
 ###
 ifneq ($(DEMO_BIN),)
 $(BINPATH)$(DEMO_BIN)$(EXEEXT): $(addprefix $(OBJPATH),$(DEMO_OBJS)) $(DMLIB_A)
-	@echo " LINK $+"
-	@$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(SDL_LDFLAGS) $(DEMO_LDFLAGS) -lm
+	$(LINK_BIN) $(DM_LDFLAGS) $(SDL_LDFLAGS) $(DEMO_LDFLAGS) -lm
 endif