# HG changeset patch # User Matti Hamalainen # Date 1691042830 -10800 # Node ID 669b71e8b86882257063ec9f4364897e5eb4ebec # Parent 81f45b2fa118e000f784366f095d470934b22dd7 Rename Makefile.gen to Makefile.common diff -r 81f45b2fa118 -r 669b71e8b868 Makefile --- a/Makefile Fri Dec 30 10:35:52 2022 +0200 +++ b/Makefile Thu Aug 03 09:07:10 2023 +0300 @@ -42,7 +42,7 @@ TOOL_LDFLAGS ?= -include $(DMLIB)Makefile.gen +include $(DMLIB)Makefile.common install: all diff -r 81f45b2fa118 -r 669b71e8b868 Makefile.common --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Makefile.common Thu Aug 03 09:07:10 2023 +0300 @@ -0,0 +1,557 @@ +### +### Get settings from config.mak or other include +### +ifneq ($(DM_CONFIG),) +ifneq ($(DM_CONFIG),no) +include $(DM_CONFIG) +else +DM_CONFIG= +endif +else +include config.mak +DM_CONFIG=config.mak +endif + + +### +### Compiler flags +### +ifeq ($(EXTRA_CFLAGS),) +EXTRA_CFLAGS =-O3 +# -march=corei7 +endif + +CFLAGS += -g -W -Wall -D_FILE_OFFSET_BITS=64 -D_POSIX_C_SOURCE=200808L $(EXTRA_CFLAGS) +CXXFLAGS = $(CFLAGS) +CFLAGS += -std=c11 +#CFLAGS += -pedantic + +DM_CFLAGS += -I$(DMLIB_SRC) $(SDL_CFLAGS) +DM_LDFLAGS += $(LDFLAGS) + + +### +### Tools, paths and directories +### +MKDIR ?= mkdir +MKDIR_P ?= $(MKDIR) -p +BINPATH ?= ./ +DMLIB ?= ./ +TOOL_SRC = $(DMLIB)tools/ +TESTS_SRC = $(DMLIB)tests/ + +TOOL_BINPATH ?= $(TOOL_SRC) +TESTS_BINPATH ?= $(TESTS_SRC) + +DMLIB_SRC = $(DMLIB)src/ + + +### +### Extra debug messages etc? +### +ifeq ($(DM_DEBUG),yes) +DM_CFLAGS += -DDM_DEBUG + +# Disable JSS_LIGHT +JSS_LIGHT=no +endif + + +### +### Build demo target? +### +ifneq ($(DEMO_BIN),) +BINARIES += $(DEMO_BIN) +endif + +ifeq ($(DM_BUILT_IN_SETUP),yes) +DM_CFLAGS += -DDM_BUILT_IN_SETUP +endif + + +### +### Editor +### +ifeq ($(DM_USE_TIMELINE),yes) +DM_CFLAGS+=-DDM_USE_TIMELINE +DMLIB_OBJS += dmtimeline.o dmtimelinew.o + +ifeq ($(DM_BUILD_EDITOR),yes) +ifneq ($(DEMO_BIN),) +BINARIES += ed_$(DEMO_BIN) +TARGETS += $(EDITOR_MAKEFILE) $(EDITOR_PRO) +TMPFILES += $(OBJPATH)moc_* +endif +endif +endif + +EDITOR_PRO = editor.pro +EDITOR_MAKEFILE = Makefile.editor +EDITOR_SOURCES = editor/edmain.cpp editor/edgui.cpp editor/edview.cpp \ + editor/edtlobj.cpp editor/edtimeline.cpp editor/edwaveform.cpp \ + editor/edres.cpp +EDITOR_HEADERS = editor/edmain.h editor/edtlobj.h editor/edview.h \ + editor/edtimeline.h editor/edwaveform.h editor/edres.h + + +### +### Form additional compilation defines based on settings +### + +# Enable SIMD routines, if requested +ifeq ($(DM_USE_SIMD),yes) +DM_CFLAGS+=-DDM_USE_SIMD -msse2 +endif + +# Enable Tremor Ogg Vorbis decoder +ifeq ($(DM_USE_TREMOR),yes) +DM_CFLAGS+=-DDM_USE_TREMOR $(TREMOR_CFLAGS) +DEMO_LDFLAGS+=$(TREMOR_LDFLAGS) +endif + + +### +### Filesystem +### +ifeq ($(DM_USE_PACKFS),yes) +BUILD_RES=yes +DM_CFLAGS += -DDM_USE_PACKFS +DMLIB_OBJS += dmpack.o +ifeq ($(DM_BUILD_TOOLS),yes) +TOOL_BINARIES += packed +endif +endif + +ifeq ($(DM_USE_STDIO),yes) +BUILD_RES=yes +DM_CFLAGS += -DDM_USE_STDIO +endif + +ifeq ($(DM_USE_MEMIO),yes) +BUILD_RES=yes +DM_CFLAGS += -DDM_USE_MEMIO +endif + +ifeq ($(BUILD_RES),yes) +DMLIB_OBJS += dmres.o dmresw.o +endif + +### +### Graphics support +### + +ifeq ($(DM_GFX_LINES),yes) +DM_CFLAGS += -DDM_GFX_LINES +DMLIB_OBJS += dmline.o +endif + +ifeq ($(DM_GFX_BLITS),yes) +DM_CFLAGS += -DDM_GFX_BLITS +DMLIB_OBJS += dmblit.o + +ifeq ($(DM_GFX_BM_TEXT),yes) +DM_CFLAGS += -DDM_GFX_BM_TEXT +DMLIB_OBJS += dmtext_bm.o +ifeq ($(DM_BUILD_TOOLS),yes) +ifeq ($(DM_USE_STDIO),yes) +TOOL_BINARIES += fontconv +endif +endif +endif +endif + +ifeq ($(DM_GFX_TTF_TEXT),yes) +DM_CFLAGS += -DDM_GFX_TTF_TEXT +DMLIB_OBJS += dmtext_ttf.o + +ifeq ($(DM_BUILD_TESTS),yes) +ifeq ($(DM_GFX_BLITS),yes) +ifeq ($(DM_USE_STDIO),yes) +#TESTS_BINARIES += blittest +endif +endif +endif +else +SDL_TTF_LDFLAGS= +SDL_TTF_CFLAGS= +endif + + +### +### miniJSS +### +MINIJSS=$(DMLIB)/minijss/ + + +ifeq ($(JSS),yes) +DM_CFLAGS+=-DDM_USE_JSS -I$(MINIJSS) + +ifeq ($(JSS_LIGHT),yes) +DM_CFLAGS+=-DJSS_LIGHT -Os +else +ifeq ($(JSS_USE_ASSERTS),yes) +DM_CFLAGS+=-DJSS_USE_ASSERTS +endif +ifeq ($(JSS_DEBUG),yes) +DM_CFLAGS+=-DJSS_DEBUG +endif +endif + +ifeq ($(JSS_MIX_FP),yes) +DM_CFLAGS+=-DJSS_MIX_FP +endif + +ifeq ($(JSS_SUP_THREADS),yes) +DM_CFLAGS+=-DJSS_SUP_THREADS +endif + + +SUP_MODLOAD=no +ifeq ($(JSS_SUP_XM),yes) +SUP_MODLOAD=yes +DMLIB_OBJS+= jloadxm.o +DM_CFLAGS+=-DJSS_SUP_XM +endif + +ifeq ($(JSS_SUP_JSSMOD),yes) +SUP_MODLOAD=yes +DMLIB_OBJS+= jloadjss.o +DM_CFLAGS+=-DJSS_SUP_JSSMOD $(JSSMOD_FLAGS) +endif + +ifeq ($(DM_USE_C),yes) +DM_CFLAGS+=-DDM_USE_C +TARGETS += $(MINIJSS)jmix_c.c +DMLIB_OBJS+=jmix_c.o +endif + +#ifeq ($(DM_USE_SIMD),yes) +#DMLIB_OBJS+=jmix_simd.o +#endif + +ifeq ($(DM_BUILD_TOOLS),yes) +ifeq ($(DM_USE_STDIO),yes) +ifeq ($(JSS_SUP_JSSMOD),yes) +ifeq ($(JSS_SUP_XM),yes) +TOOL_BINARIES+= xm2jss +endif +endif +endif +endif +DMLIB_OBJS += jss.o jssmix.o jssmod.o jssplr.o +endif + + +### Dependancies +ifeq ($(DM_BUILD_TOOLS),yes) +ifeq ($(DM_USE_STDIO),yes) +TOOL_BINARIES+= objlink data2inc gfxconv fanalyze +ifeq ($(SUP_MODLOAD),yes) +TOOL_BINARIES+= dumpmod mod2wav +TESTS_BINARIES+= plrtest +ifeq ($(DM_GFX_BLITS),yes) +TOOL_BINARIES+= 64vw +ifeq ($(DM_GFX_BM_TEXT),yes) +TOOL_BINARIES+= ppl +endif +endif +endif + +endif +endif + + +### libPNG handling +ifeq ($(DM_USE_LIBPNG),yes) +DM_CFLAGS += -DDM_USE_LIBPNG $(LIBPNG_CFLAGS) +endif + + +### Check requirements for zlib +ifeq ($(DM_USE_ZLIB),yes) +DM_CFLAGS += -DDM_USE_ZLIB $(ZLIB_CFLAGS) +DEMO_LDFLAGS += $(ZLIB_LDFLAGS) +else +DEMO_LDFLAGS += +endif + + +### What tests to build? +ifeq ($(DM_BUILD_TESTS),yes) +TESTS_BINARIES += vecmattest fptest dzlibtest encbr1test +endif + +FONTCONV_BIN=$(TOOL_BINPATH)fontconv$(BINEXT) +DATA2INC_BIN=$(TOOL_BINPATH)data2inc$(BINEXT) + +ifeq ($(BINEXT),.exe) +# Cross-building Windows binaries requires locally installed utilities +FONTCONV_DEP= +DATA2INC_DEP= +else +ifeq ($(DM_BUILD_TOOLS),yes) +FONTCONV_DEP=$(FONTCONV_BIN) +DATA2INC_DEP=$(DATA2INC_BIN) +endif +endif + + +### +### Main targets and objects +### +DMLIB_A = $(OBJPATH)dmlib.a +DMLIB_OBJS += \ + dmfile.o dmlib.o dmcurves.o dmstring.o \ + dmgrowbuf.o dmargs.o dmvecmat.o dmperlin.o \ + dmimage.o dmengine.o dmzlib.o \ + dmlicense.o + + +TESTS_TARGETS = $(addprefix $(TESTS_BINPATH),$(addsuffix $(BINEXT),$(TESTS_BINARIES))) +TOOL_TARGETS = $(addprefix $(TOOL_BINPATH),$(addsuffix $(BINEXT),$(TOOL_BINARIES))) + +TARGETS += \ + $(DMLIB_A) \ + $(addprefix $(BINPATH),$(addsuffix $(BINEXT),$(BINARIES))) \ + $(TOOL_TARGETS) $(TESTS_TARGETS) + +NOBUILD_TARGETS += +NOINST_TARGETS += + + +### +### Functions and compilation/link commands +### +ifneq ($(V),1) +DO_CMD=/bin/echo -E " $(1) $(2)" && $(3) +else +DO_CMD=/bin/echo -E $(3) && $(3) +endif +DO_MKDIR=if test ! -z "$(1)" -a ! -d "$(1)"; then /bin/echo -E " MKDIR $(1)"; mkdir -p "$(1)"; fi + + +COMPILE_C_OBJ = \ + @$(call DO_MKDIR,$(OBJPATH)) ; \ + $(call DO_CMD,CC,$<,$(CC) $(CFLAGS) $(DM_CFLAGS) -c -o $@ $< $(1)) + +LINK_C_BIN = \ + @$(call DO_MKDIR,$(BINPATH)) ; \ + $(call DO_CMD,LINK,$@,$(CC) -o $@ $(filter %.o %.a,$+) $(LDFLAGS) $(1)) + +COMPILE_CXX_OBJ = \ + @$(call DO_MKDIR,$(OBJPATH)) ; \ + $(call DO_CMD,CXX,$<,$(CXX) $(CXXFLAGS) $(DM_CFLAGS) -c -o $@ $< $(1)) + +LINK_CXX_BIN = \ + @$(call DO_MKDIR,$(BINPATH)) ; \ + $(call DO_CMD,LINK,$@,$(CXX) -o $@ $(filter %.o %.a,$+) $(LDFLAGS) $(1)) + +LINK_STATIC_LIB = \ + @$(call DO_MKDIR,$(OBJPATH)) ; \ + $(call DO_CMD,AR,$@ $(filter %.o,$+),$(AR) cru $@ $(filter %.o,$+)) ; \ + $(call DO_CMD,RANLIB,$@,$(RANLIB) $@) + + +### +### Generic target rules +### +all: $(NOBUILD_TARGETS) $(NOINST_TARGETS) $(TARGETS) + + +$(OBJPATH)%.o: $(DMLIB)tests/%.c $(DMLIB)tests/%.h + $(call COMPILE_C_OBJ,) + +$(OBJPATH)%.o: $(DMLIB)tests/%.c + $(call COMPILE_C_OBJ,) + +$(OBJPATH)%.o: $(DMLIB)tools/%.c $(DMLIB)tools/%.h + $(call COMPILE_C_OBJ,) + +$(OBJPATH)%.o: $(DMLIB)tools/%.c + $(call COMPILE_C_OBJ,) + +$(OBJPATH)%.o: %.c %.h + $(call COMPILE_C_OBJ,) + +$(OBJPATH)%.o: %.c + $(call COMPILE_C_OBJ,) + +$(OBJPATH)%.o: $(MINIJSS)%.c $(MINIJSS)%.h + $(call COMPILE_C_OBJ,) + +$(OBJPATH)%.o: $(MINIJSS)%.c + $(call COMPILE_C_OBJ,) + +$(OBJPATH)%.o: $(DMLIB_SRC)%.c $(DMLIB_SRC)%.h + $(call COMPILE_C_OBJ,) + +$(OBJPATH)%.o: $(DMLIB_SRC)%.c + $(call COMPILE_C_OBJ,) + + +### +### 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 + $(call COMPILE_C_OBJ,) + +$(OBJPATH)dmresw.o: $(DMLIB_SRC)dmresw.c $(DMLIB_SRC)dmres.h + $(call COMPILE_C_OBJ,) + + +$(OBJPATH)jssmod.o: $(MINIJSS)jssmod.c $(MINIJSS)jssmod.h $(OBJPATH)jss.o + $(call COMPILE_C_OBJ,) + +$(OBJPATH)jssmix.o: $(MINIJSS)jssmix.c $(MINIJSS)jssmix.h $(OBJPATH)jssmod.o + $(call COMPILE_C_OBJ,) + +$(OBJPATH)jssplr.o: $(MINIJSS)jssplr.c $(MINIJSS)jssplr.h $(OBJPATH)jssmix.o + $(call COMPILE_C_OBJ,) + + +$(OBJPATH)dmblit.o: $(DMLIB_SRC)dmblit.c $(DMLIB_SRC)dmscaledblit.h $(DMLIB_SRC)dmunscaledblit.h $(DMLIB_SRC)dmblitfunc.h $(DMLIB_SRC)dmlib.h + $(call COMPILE_C_OBJ,) + +$(OBJPATH)dmline.o: $(DMLIB_SRC)dmline.c $(DMLIB_SRC)dmdrawline.h $(DMLIB_SRC)dmlinefunc.h $(DMLIB_SRC)dmlineclip.h $(DMLIB_SRC)dmlib.h + $(call COMPILE_C_OBJ,) + +$(OBJPATH)libgfx.o: $(DMLIB)tools/libgfx.c $(DMLIB)tools/libgfx.h $(DMLIB_A) + $(call COMPILE_C_OBJ,) + +$(OBJPATH)lib64gfx.o: $(DMLIB)tools/lib64gfx.c $(DMLIB)tools/lib64gfx.h $(OBJPATH)libgfx.o + $(call COMPILE_C_OBJ,) + +$(OBJPATH)lib64util.o: $(DMLIB)tools/lib64util.c $(DMLIB)tools/lib64util.h $(OBJPATH)lib64gfx.o + $(call COMPILE_C_OBJ,) + +$(OBJPATH)lib64fmts.o: $(DMLIB)tools/lib64fmts.c $(OBJPATH)lib64gfx.o + $(call COMPILE_C_OBJ,) + +$(OBJPATH)64vw.o: $(DMLIB)tools/64vw.c $(OBJPATH)lib64util.o + $(call COMPILE_C_OBJ,) + +$(OBJPATH)gfxconv.o: $(DMLIB)tools/gfxconv.c $(OBJPATH)lib64util.o + $(call COMPILE_C_OBJ,) + +$(OBJPATH)ppl.o: $(TOOL_SRC)ppl.c $(DMLIB_SRC)setupfont.h \ + $(OBJPATH)libgutil.o $(DMLIB_A) + $(call COMPILE_C_OBJ,) + + +$(DMLIB)assets/SetupFont.dmf: $(DMLIB)assets/SetupFont.fnt $(FONTCONV_DEP) + @$(call DO_CMD,FONT,$@ $<,$(FONTCONV_BIN) $< $@) + +$(DMLIB_SRC)setupfont.h: $(DMLIB)assets/SetupFont.dmf $(DATA2INC_DEP) + @$(call DO_CMD,DATA,$@ $<,$(DATA2INC_BIN) -q -f c -n engineSetupFont -t Uint8 $< $@ > /dev/null) + +$(DMLIB_SRC)setupimage.h: $(DMLIB)assets/SetupImage.png $(DATA2INC_DEP) + @$(call DO_CMD,DATA,$@ $<,$(DATA2INC_BIN) -q -f c -n engineSetupImage -t Uint8 $< $@ > /dev/null) + +$(DMLIB_SRC)setupmenubar.h: $(DMLIB)assets/SetupMenuBar.png $(DATA2INC_DEP) + @$(call DO_CMD,DATA,$@ $<,$(DATA2INC_BIN) -q -f c -n engineSetupMenuBar -t Uint8 $< $@ > /dev/null) + + +$(OBJPATH)dmsimple.o: $(addprefix $(DMLIB_SRC), dmsimple.c dmengine.h \ + setupmenubar.h setupfont.h setupimage.h dmsimple.c) + $(call COMPILE_C_OBJ,) + + +$(DMLIB_A): $(addprefix $(OBJPATH),$(DMLIB_OBJS)) $(DMLIB)Makefile.common $(DM_CONFIG) + $(call LINK_STATIC_LIB,) + + +### +### Tests +### +define RULE_TESTS_BIN +$$(TESTS_BINPATH)$(1)$$(BINEXT): $$(OBJPATH)$(1).o $(2) $$(DMLIB_A) + $$(call LINK_C_BIN,$$(DM_LDFLAGS) $$(SDL_LDFLAGS) $(3)) + +endef + +$(eval $(call RULE_TESTS_BIN,blittest,,$$(SDL_TTF_LDFLAGS) -lm)) +$(eval $(call RULE_TESTS_BIN,dzlibtest,,$$(ZLIB_LDFLAGS))) +$(eval $(call RULE_TESTS_BIN,plrtest,,$$(ZLIB_LDFLAGS) -lm)) +$(eval $(call RULE_TESTS_BIN,%test,,$$(TOOL_LDFLAGS) -lm)) + + +### +### Tools +### +define RULE_TOOL_BIN +$$(TOOL_BINPATH)$(1)$$(BINEXT): $$(OBJPATH)$(1).o $(2) $$(DMLIB_A) + $$(call LINK_C_BIN, $$(DM_LDFLAGS) $$(TOOL_LDFLAGS) $(3)) + +endef + +$(eval $(call RULE_TOOL_BIN,fontconv,,\ + $$(SDL_LDFLAGS) $$(SDL_TTF_LDFLAGS) $$(ZLIB_LDFLAGS) -lm)) +$(eval $(call RULE_TOOL_BIN,data2inc,,)) +$(eval $(call RULE_TOOL_BIN,packed,,$(ZLIB_LDFLAGS))) +$(eval $(call RULE_TOOL_BIN,mod2wav,,$(ZLIB_LDFLAGS) -lm)) +$(eval $(call RULE_TOOL_BIN,xm2jss,,$(ZLIB_LDFLAGS))) +$(eval $(call RULE_TOOL_BIN,dumpmod,,$(ZLIB_LDFLAGS))) +$(eval $(call RULE_TOOL_BIN,ppl,\ + $$(OBJPATH)libgutil.o,$$(ZLIB_LDFLAGS) $$(SDL_LDFLAGS) -lm)) +$(eval $(call RULE_TOOL_BIN,objlink,,)) +$(eval $(call RULE_TOOL_BIN,fanalyze,,)) + +$(eval $(call RULE_TOOL_BIN,gfxconv,\ + $$(OBJPATH)lib64gfx.o $$(OBJPATH)lib64fmts.o \ + $$(OBJPATH)lib64util.o $$(OBJPATH)libgfx.o,\ + $$(LIBPNG_LDFLAGS) $$(ZLIB_LDFLAGS))) + +$(eval $(call RULE_TOOL_BIN,64vw,\ + $$(OBJPATH)lib64gfx.o $$(OBJPATH)lib64fmts.o \ + $$(OBJPATH)lib64util.o $$(OBJPATH)libgfx.o,\ + $$(LIBPNG_LDFLAGS) $$(ZLIB_LDFLAGS) $$(SDL_LDFLAGS))) + + +### +### Demo binary +### +ifneq ($(DEMO_BIN),) +$(BINPATH)$(DEMO_BIN)$(BINEXT): $(addprefix $(OBJPATH),$(DEMO_OBJS)) $(DMLIB_A) + $(call LINK_C_BIN, $(DM_LDFLAGS) $(SDL_LDFLAGS) $(DEMO_LDFLAGS) -lm) +endif + + +### +### Editor targets +### +$(EDITOR_PRO): $(DMLIB)Makefile.common $(DM_CONFIG) $(addprefix $(DMLIB),$(EDITOR_SOURCES) $(EDITOR_HEADERS)) $(addprefix $(OBJPATH),$(DEMO_OBJS)) $(DMLIB_A) + @echo " CREATE $@" + @echo "OBJECTS_DIR = $(OBJPATH)" > $@ + @echo "MOC_DIR = $(OBJPATH)" >> $@ + @echo "QMAKE_CXXFLAGS += $(DM_CFLAGS) $(SDL_CFLAGS)" >> $@ + @echo "QMAKE_LIBS += $(filter-out %dmsimple.o,$(filter %.o %.a,$+))" >> $@ + @echo "QMAKE_LIBS += $(DM_LDFLAGS) $(SDL_LDFLAGS) $(DEMO_LDFLAGS)" >> $@ + @echo "MAKEFILE = $(EDITOR_MAKEFILE)" >> $@ + @echo "CONFIG += debug" >> $@ + @echo "QT += core gui opengl" >> $@ + @echo "TARGET = $(BINPATH)ed_$(DEMO_BIN)$(BINEXT)" >> $@ + @echo "TEMPLATE = app" >> $@ + @echo "SOURCES = $(addprefix $(DMLIB),$(EDITOR_SOURCES))" >> $@ + @echo "HEADERS = $(addprefix $(DMLIB),$(EDITOR_HEADERS))" >> $@ + + +$(EDITOR_MAKEFILE): $(EDITOR_PRO) + @$(call DO_CMD,QMAKE,$+,qmake -Wall $<) + +$(BINPATH)ed_$(DEMO_BIN)$(BINEXT): $(EDITOR_MAKEFILE) + @$(MAKE) -f $< + + +### +### Special targets +### +clean: + -$(RM) $(TARGETS) $(NOINST_TARGETS) $(CLEAN_TARGETS) $(OBJPATH)*.o + +distclean: clean + -$(RM) $(DISTCLEAN_TARGETS) *~ core *.core + +.PHONY: clean distclean all diff -r 81f45b2fa118 -r 669b71e8b868 Makefile.cross-mingw --- a/Makefile.cross-mingw Fri Dec 30 10:35:52 2022 +0200 +++ b/Makefile.cross-mingw Thu Aug 03 09:07:10 2023 +0300 @@ -66,4 +66,4 @@ TOOL_LDFLAGS ?= -mconsole -lmingw32 -include $(DMLIB)Makefile.gen +include $(DMLIB)Makefile.common diff -r 81f45b2fa118 -r 669b71e8b868 Makefile.gen --- a/Makefile.gen Fri Dec 30 10:35:52 2022 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,557 +0,0 @@ -### -### Get settings from config.mak or other include -### -ifneq ($(DM_CONFIG),) -ifneq ($(DM_CONFIG),no) -include $(DM_CONFIG) -else -DM_CONFIG= -endif -else -include config.mak -DM_CONFIG=config.mak -endif - - -### -### Compiler flags -### -ifeq ($(EXTRA_CFLAGS),) -EXTRA_CFLAGS =-O3 -# -march=corei7 -endif - -CFLAGS += -g -W -Wall -D_FILE_OFFSET_BITS=64 -D_POSIX_C_SOURCE=200808L $(EXTRA_CFLAGS) -CXXFLAGS = $(CFLAGS) -CFLAGS += -std=c11 -#CFLAGS += -pedantic - -DM_CFLAGS += -I$(DMLIB_SRC) $(SDL_CFLAGS) -DM_LDFLAGS += $(LDFLAGS) - - -### -### Tools, paths and directories -### -MKDIR ?= mkdir -MKDIR_P ?= $(MKDIR) -p -BINPATH ?= ./ -DMLIB ?= ./ -TOOL_SRC = $(DMLIB)tools/ -TESTS_SRC = $(DMLIB)tests/ - -TOOL_BINPATH ?= $(TOOL_SRC) -TESTS_BINPATH ?= $(TESTS_SRC) - -DMLIB_SRC = $(DMLIB)src/ - - -### -### Extra debug messages etc? -### -ifeq ($(DM_DEBUG),yes) -DM_CFLAGS += -DDM_DEBUG - -# Disable JSS_LIGHT -JSS_LIGHT=no -endif - - -### -### Build demo target? -### -ifneq ($(DEMO_BIN),) -BINARIES += $(DEMO_BIN) -endif - -ifeq ($(DM_BUILT_IN_SETUP),yes) -DM_CFLAGS += -DDM_BUILT_IN_SETUP -endif - - -### -### Editor -### -ifeq ($(DM_USE_TIMELINE),yes) -DM_CFLAGS+=-DDM_USE_TIMELINE -DMLIB_OBJS += dmtimeline.o dmtimelinew.o - -ifeq ($(DM_BUILD_EDITOR),yes) -ifneq ($(DEMO_BIN),) -BINARIES += ed_$(DEMO_BIN) -TARGETS += $(EDITOR_MAKEFILE) $(EDITOR_PRO) -TMPFILES += $(OBJPATH)moc_* -endif -endif -endif - -EDITOR_PRO = editor.pro -EDITOR_MAKEFILE = Makefile.editor -EDITOR_SOURCES = editor/edmain.cpp editor/edgui.cpp editor/edview.cpp \ - editor/edtlobj.cpp editor/edtimeline.cpp editor/edwaveform.cpp \ - editor/edres.cpp -EDITOR_HEADERS = editor/edmain.h editor/edtlobj.h editor/edview.h \ - editor/edtimeline.h editor/edwaveform.h editor/edres.h - - -### -### Form additional compilation defines based on settings -### - -# Enable SIMD routines, if requested -ifeq ($(DM_USE_SIMD),yes) -DM_CFLAGS+=-DDM_USE_SIMD -msse2 -endif - -# Enable Tremor Ogg Vorbis decoder -ifeq ($(DM_USE_TREMOR),yes) -DM_CFLAGS+=-DDM_USE_TREMOR $(TREMOR_CFLAGS) -DEMO_LDFLAGS+=$(TREMOR_LDFLAGS) -endif - - -### -### Filesystem -### -ifeq ($(DM_USE_PACKFS),yes) -BUILD_RES=yes -DM_CFLAGS += -DDM_USE_PACKFS -DMLIB_OBJS += dmpack.o -ifeq ($(DM_BUILD_TOOLS),yes) -TOOL_BINARIES += packed -endif -endif - -ifeq ($(DM_USE_STDIO),yes) -BUILD_RES=yes -DM_CFLAGS += -DDM_USE_STDIO -endif - -ifeq ($(DM_USE_MEMIO),yes) -BUILD_RES=yes -DM_CFLAGS += -DDM_USE_MEMIO -endif - -ifeq ($(BUILD_RES),yes) -DMLIB_OBJS += dmres.o dmresw.o -endif - -### -### Graphics support -### - -ifeq ($(DM_GFX_LINES),yes) -DM_CFLAGS += -DDM_GFX_LINES -DMLIB_OBJS += dmline.o -endif - -ifeq ($(DM_GFX_BLITS),yes) -DM_CFLAGS += -DDM_GFX_BLITS -DMLIB_OBJS += dmblit.o - -ifeq ($(DM_GFX_BM_TEXT),yes) -DM_CFLAGS += -DDM_GFX_BM_TEXT -DMLIB_OBJS += dmtext_bm.o -ifeq ($(DM_BUILD_TOOLS),yes) -ifeq ($(DM_USE_STDIO),yes) -TOOL_BINARIES += fontconv -endif -endif -endif -endif - -ifeq ($(DM_GFX_TTF_TEXT),yes) -DM_CFLAGS += -DDM_GFX_TTF_TEXT -DMLIB_OBJS += dmtext_ttf.o - -ifeq ($(DM_BUILD_TESTS),yes) -ifeq ($(DM_GFX_BLITS),yes) -ifeq ($(DM_USE_STDIO),yes) -#TESTS_BINARIES += blittest -endif -endif -endif -else -SDL_TTF_LDFLAGS= -SDL_TTF_CFLAGS= -endif - - -### -### miniJSS -### -MINIJSS=$(DMLIB)/minijss/ - - -ifeq ($(JSS),yes) -DM_CFLAGS+=-DDM_USE_JSS -I$(MINIJSS) - -ifeq ($(JSS_LIGHT),yes) -DM_CFLAGS+=-DJSS_LIGHT -Os -else -ifeq ($(JSS_USE_ASSERTS),yes) -DM_CFLAGS+=-DJSS_USE_ASSERTS -endif -ifeq ($(JSS_DEBUG),yes) -DM_CFLAGS+=-DJSS_DEBUG -endif -endif - -ifeq ($(JSS_MIX_FP),yes) -DM_CFLAGS+=-DJSS_MIX_FP -endif - -ifeq ($(JSS_SUP_THREADS),yes) -DM_CFLAGS+=-DJSS_SUP_THREADS -endif - - -SUP_MODLOAD=no -ifeq ($(JSS_SUP_XM),yes) -SUP_MODLOAD=yes -DMLIB_OBJS+= jloadxm.o -DM_CFLAGS+=-DJSS_SUP_XM -endif - -ifeq ($(JSS_SUP_JSSMOD),yes) -SUP_MODLOAD=yes -DMLIB_OBJS+= jloadjss.o -DM_CFLAGS+=-DJSS_SUP_JSSMOD $(JSSMOD_FLAGS) -endif - -ifeq ($(DM_USE_C),yes) -DM_CFLAGS+=-DDM_USE_C -TARGETS += $(MINIJSS)jmix_c.c -DMLIB_OBJS+=jmix_c.o -endif - -#ifeq ($(DM_USE_SIMD),yes) -#DMLIB_OBJS+=jmix_simd.o -#endif - -ifeq ($(DM_BUILD_TOOLS),yes) -ifeq ($(DM_USE_STDIO),yes) -ifeq ($(JSS_SUP_JSSMOD),yes) -ifeq ($(JSS_SUP_XM),yes) -TOOL_BINARIES+= xm2jss -endif -endif -endif -endif -DMLIB_OBJS += jss.o jssmix.o jssmod.o jssplr.o -endif - - -### Dependancies -ifeq ($(DM_BUILD_TOOLS),yes) -ifeq ($(DM_USE_STDIO),yes) -TOOL_BINARIES+= objlink data2inc gfxconv fanalyze -ifeq ($(SUP_MODLOAD),yes) -TOOL_BINARIES+= dumpmod mod2wav -TESTS_BINARIES+= plrtest -ifeq ($(DM_GFX_BLITS),yes) -TOOL_BINARIES+= 64vw -ifeq ($(DM_GFX_BM_TEXT),yes) -TOOL_BINARIES+= ppl -endif -endif -endif - -endif -endif - - -### libPNG handling -ifeq ($(DM_USE_LIBPNG),yes) -DM_CFLAGS += -DDM_USE_LIBPNG $(LIBPNG_CFLAGS) -endif - - -### Check requirements for zlib -ifeq ($(DM_USE_ZLIB),yes) -DM_CFLAGS += -DDM_USE_ZLIB $(ZLIB_CFLAGS) -DEMO_LDFLAGS += $(ZLIB_LDFLAGS) -else -DEMO_LDFLAGS += -endif - - -### What tests to build? -ifeq ($(DM_BUILD_TESTS),yes) -TESTS_BINARIES += vecmattest fptest dzlibtest encbr1test -endif - -FONTCONV_BIN=$(TOOL_BINPATH)fontconv$(BINEXT) -DATA2INC_BIN=$(TOOL_BINPATH)data2inc$(BINEXT) - -ifeq ($(BINEXT),.exe) -# Cross-building Windows binaries requires locally installed utilities -FONTCONV_DEP= -DATA2INC_DEP= -else -ifeq ($(DM_BUILD_TOOLS),yes) -FONTCONV_DEP=$(FONTCONV_BIN) -DATA2INC_DEP=$(DATA2INC_BIN) -endif -endif - - -### -### Main targets and objects -### -DMLIB_A = $(OBJPATH)dmlib.a -DMLIB_OBJS += \ - dmfile.o dmlib.o dmcurves.o dmstring.o \ - dmgrowbuf.o dmargs.o dmvecmat.o dmperlin.o \ - dmimage.o dmengine.o dmzlib.o \ - dmlicense.o - - -TESTS_TARGETS = $(addprefix $(TESTS_BINPATH),$(addsuffix $(BINEXT),$(TESTS_BINARIES))) -TOOL_TARGETS = $(addprefix $(TOOL_BINPATH),$(addsuffix $(BINEXT),$(TOOL_BINARIES))) - -TARGETS += \ - $(DMLIB_A) \ - $(addprefix $(BINPATH),$(addsuffix $(BINEXT),$(BINARIES))) \ - $(TOOL_TARGETS) $(TESTS_TARGETS) - -NOBUILD_TARGETS += -NOINST_TARGETS += - - -### -### Functions and compilation/link commands -### -ifneq ($(V),1) -DO_CMD=/bin/echo -E " $(1) $(2)" && $(3) -else -DO_CMD=/bin/echo -E $(3) && $(3) -endif -DO_MKDIR=if test ! -z "$(1)" -a ! -d "$(1)"; then /bin/echo -E " MKDIR $(1)"; mkdir -p "$(1)"; fi - - -COMPILE_C_OBJ = \ - @$(call DO_MKDIR,$(OBJPATH)) ; \ - $(call DO_CMD,CC,$<,$(CC) $(CFLAGS) $(DM_CFLAGS) -c -o $@ $< $(1)) - -LINK_C_BIN = \ - @$(call DO_MKDIR,$(BINPATH)) ; \ - $(call DO_CMD,LINK,$@,$(CC) -o $@ $(filter %.o %.a,$+) $(LDFLAGS) $(1)) - -COMPILE_CXX_OBJ = \ - @$(call DO_MKDIR,$(OBJPATH)) ; \ - $(call DO_CMD,CXX,$<,$(CXX) $(CXXFLAGS) $(DM_CFLAGS) -c -o $@ $< $(1)) - -LINK_CXX_BIN = \ - @$(call DO_MKDIR,$(BINPATH)) ; \ - $(call DO_CMD,LINK,$@,$(CXX) -o $@ $(filter %.o %.a,$+) $(LDFLAGS) $(1)) - -LINK_STATIC_LIB = \ - @$(call DO_MKDIR,$(OBJPATH)) ; \ - $(call DO_CMD,AR,$@ $(filter %.o,$+),$(AR) cru $@ $(filter %.o,$+)) ; \ - $(call DO_CMD,RANLIB,$@,$(RANLIB) $@) - - -### -### Generic target rules -### -all: $(NOBUILD_TARGETS) $(NOINST_TARGETS) $(TARGETS) - - -$(OBJPATH)%.o: $(DMLIB)tests/%.c $(DMLIB)tests/%.h - $(call COMPILE_C_OBJ,) - -$(OBJPATH)%.o: $(DMLIB)tests/%.c - $(call COMPILE_C_OBJ,) - -$(OBJPATH)%.o: $(DMLIB)tools/%.c $(DMLIB)tools/%.h - $(call COMPILE_C_OBJ,) - -$(OBJPATH)%.o: $(DMLIB)tools/%.c - $(call COMPILE_C_OBJ,) - -$(OBJPATH)%.o: %.c %.h - $(call COMPILE_C_OBJ,) - -$(OBJPATH)%.o: %.c - $(call COMPILE_C_OBJ,) - -$(OBJPATH)%.o: $(MINIJSS)%.c $(MINIJSS)%.h - $(call COMPILE_C_OBJ,) - -$(OBJPATH)%.o: $(MINIJSS)%.c - $(call COMPILE_C_OBJ,) - -$(OBJPATH)%.o: $(DMLIB_SRC)%.c $(DMLIB_SRC)%.h - $(call COMPILE_C_OBJ,) - -$(OBJPATH)%.o: $(DMLIB_SRC)%.c - $(call COMPILE_C_OBJ,) - - -### -### 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 - $(call COMPILE_C_OBJ,) - -$(OBJPATH)dmresw.o: $(DMLIB_SRC)dmresw.c $(DMLIB_SRC)dmres.h - $(call COMPILE_C_OBJ,) - - -$(OBJPATH)jssmod.o: $(MINIJSS)jssmod.c $(MINIJSS)jssmod.h $(OBJPATH)jss.o - $(call COMPILE_C_OBJ,) - -$(OBJPATH)jssmix.o: $(MINIJSS)jssmix.c $(MINIJSS)jssmix.h $(OBJPATH)jssmod.o - $(call COMPILE_C_OBJ,) - -$(OBJPATH)jssplr.o: $(MINIJSS)jssplr.c $(MINIJSS)jssplr.h $(OBJPATH)jssmix.o - $(call COMPILE_C_OBJ,) - - -$(OBJPATH)dmblit.o: $(DMLIB_SRC)dmblit.c $(DMLIB_SRC)dmscaledblit.h $(DMLIB_SRC)dmunscaledblit.h $(DMLIB_SRC)dmblitfunc.h $(DMLIB_SRC)dmlib.h - $(call COMPILE_C_OBJ,) - -$(OBJPATH)dmline.o: $(DMLIB_SRC)dmline.c $(DMLIB_SRC)dmdrawline.h $(DMLIB_SRC)dmlinefunc.h $(DMLIB_SRC)dmlineclip.h $(DMLIB_SRC)dmlib.h - $(call COMPILE_C_OBJ,) - -$(OBJPATH)libgfx.o: $(DMLIB)tools/libgfx.c $(DMLIB)tools/libgfx.h $(DMLIB_A) - $(call COMPILE_C_OBJ,) - -$(OBJPATH)lib64gfx.o: $(DMLIB)tools/lib64gfx.c $(DMLIB)tools/lib64gfx.h $(OBJPATH)libgfx.o - $(call COMPILE_C_OBJ,) - -$(OBJPATH)lib64util.o: $(DMLIB)tools/lib64util.c $(DMLIB)tools/lib64util.h $(OBJPATH)lib64gfx.o - $(call COMPILE_C_OBJ,) - -$(OBJPATH)lib64fmts.o: $(DMLIB)tools/lib64fmts.c $(OBJPATH)lib64gfx.o - $(call COMPILE_C_OBJ,) - -$(OBJPATH)64vw.o: $(DMLIB)tools/64vw.c $(OBJPATH)lib64util.o - $(call COMPILE_C_OBJ,) - -$(OBJPATH)gfxconv.o: $(DMLIB)tools/gfxconv.c $(OBJPATH)lib64util.o - $(call COMPILE_C_OBJ,) - -$(OBJPATH)ppl.o: $(TOOL_SRC)ppl.c $(DMLIB_SRC)setupfont.h \ - $(OBJPATH)libgutil.o $(DMLIB_A) - $(call COMPILE_C_OBJ,) - - -$(DMLIB)assets/SetupFont.dmf: $(DMLIB)assets/SetupFont.fnt $(FONTCONV_DEP) - @$(call DO_CMD,FONT,$@ $<,$(FONTCONV_BIN) $< $@) - -$(DMLIB_SRC)setupfont.h: $(DMLIB)assets/SetupFont.dmf $(DATA2INC_DEP) - @$(call DO_CMD,DATA,$@ $<,$(DATA2INC_BIN) -q -f c -n engineSetupFont -t Uint8 $< $@ > /dev/null) - -$(DMLIB_SRC)setupimage.h: $(DMLIB)assets/SetupImage.png $(DATA2INC_DEP) - @$(call DO_CMD,DATA,$@ $<,$(DATA2INC_BIN) -q -f c -n engineSetupImage -t Uint8 $< $@ > /dev/null) - -$(DMLIB_SRC)setupmenubar.h: $(DMLIB)assets/SetupMenuBar.png $(DATA2INC_DEP) - @$(call DO_CMD,DATA,$@ $<,$(DATA2INC_BIN) -q -f c -n engineSetupMenuBar -t Uint8 $< $@ > /dev/null) - - -$(OBJPATH)dmsimple.o: $(addprefix $(DMLIB_SRC), dmsimple.c dmengine.h \ - setupmenubar.h setupfont.h setupimage.h dmsimple.c) - $(call COMPILE_C_OBJ,) - - -$(DMLIB_A): $(addprefix $(OBJPATH),$(DMLIB_OBJS)) $(DMLIB)Makefile.gen $(DM_CONFIG) - $(call LINK_STATIC_LIB,) - - -### -### Tests -### -define RULE_TESTS_BIN -$$(TESTS_BINPATH)$(1)$$(BINEXT): $$(OBJPATH)$(1).o $(2) $$(DMLIB_A) - $$(call LINK_C_BIN,$$(DM_LDFLAGS) $$(SDL_LDFLAGS) $(3)) - -endef - -$(eval $(call RULE_TESTS_BIN,blittest,,$$(SDL_TTF_LDFLAGS) -lm)) -$(eval $(call RULE_TESTS_BIN,dzlibtest,,$$(ZLIB_LDFLAGS))) -$(eval $(call RULE_TESTS_BIN,plrtest,,$$(ZLIB_LDFLAGS) -lm)) -$(eval $(call RULE_TESTS_BIN,%test,,$$(TOOL_LDFLAGS) -lm)) - - -### -### Tools -### -define RULE_TOOL_BIN -$$(TOOL_BINPATH)$(1)$$(BINEXT): $$(OBJPATH)$(1).o $(2) $$(DMLIB_A) - $$(call LINK_C_BIN, $$(DM_LDFLAGS) $$(TOOL_LDFLAGS) $(3)) - -endef - -$(eval $(call RULE_TOOL_BIN,fontconv,,\ - $$(SDL_LDFLAGS) $$(SDL_TTF_LDFLAGS) $$(ZLIB_LDFLAGS) -lm)) -$(eval $(call RULE_TOOL_BIN,data2inc,,)) -$(eval $(call RULE_TOOL_BIN,packed,,$(ZLIB_LDFLAGS))) -$(eval $(call RULE_TOOL_BIN,mod2wav,,$(ZLIB_LDFLAGS) -lm)) -$(eval $(call RULE_TOOL_BIN,xm2jss,,$(ZLIB_LDFLAGS))) -$(eval $(call RULE_TOOL_BIN,dumpmod,,$(ZLIB_LDFLAGS))) -$(eval $(call RULE_TOOL_BIN,ppl,\ - $$(OBJPATH)libgutil.o,$$(ZLIB_LDFLAGS) $$(SDL_LDFLAGS) -lm)) -$(eval $(call RULE_TOOL_BIN,objlink,,)) -$(eval $(call RULE_TOOL_BIN,fanalyze,,)) - -$(eval $(call RULE_TOOL_BIN,gfxconv,\ - $$(OBJPATH)lib64gfx.o $$(OBJPATH)lib64fmts.o \ - $$(OBJPATH)lib64util.o $$(OBJPATH)libgfx.o,\ - $$(LIBPNG_LDFLAGS) $$(ZLIB_LDFLAGS))) - -$(eval $(call RULE_TOOL_BIN,64vw,\ - $$(OBJPATH)lib64gfx.o $$(OBJPATH)lib64fmts.o \ - $$(OBJPATH)lib64util.o $$(OBJPATH)libgfx.o,\ - $$(LIBPNG_LDFLAGS) $$(ZLIB_LDFLAGS) $$(SDL_LDFLAGS))) - - -### -### Demo binary -### -ifneq ($(DEMO_BIN),) -$(BINPATH)$(DEMO_BIN)$(BINEXT): $(addprefix $(OBJPATH),$(DEMO_OBJS)) $(DMLIB_A) - $(call LINK_C_BIN, $(DM_LDFLAGS) $(SDL_LDFLAGS) $(DEMO_LDFLAGS) -lm) -endif - - -### -### Editor targets -### -$(EDITOR_PRO): $(DMLIB)Makefile.gen $(DM_CONFIG) $(addprefix $(DMLIB),$(EDITOR_SOURCES) $(EDITOR_HEADERS)) $(addprefix $(OBJPATH),$(DEMO_OBJS)) $(DMLIB_A) - @echo " CREATE $@" - @echo "OBJECTS_DIR = $(OBJPATH)" > $@ - @echo "MOC_DIR = $(OBJPATH)" >> $@ - @echo "QMAKE_CXXFLAGS += $(DM_CFLAGS) $(SDL_CFLAGS)" >> $@ - @echo "QMAKE_LIBS += $(filter-out %dmsimple.o,$(filter %.o %.a,$+))" >> $@ - @echo "QMAKE_LIBS += $(DM_LDFLAGS) $(SDL_LDFLAGS) $(DEMO_LDFLAGS)" >> $@ - @echo "MAKEFILE = $(EDITOR_MAKEFILE)" >> $@ - @echo "CONFIG += debug" >> $@ - @echo "QT += core gui opengl" >> $@ - @echo "TARGET = $(BINPATH)ed_$(DEMO_BIN)$(BINEXT)" >> $@ - @echo "TEMPLATE = app" >> $@ - @echo "SOURCES = $(addprefix $(DMLIB),$(EDITOR_SOURCES))" >> $@ - @echo "HEADERS = $(addprefix $(DMLIB),$(EDITOR_HEADERS))" >> $@ - - -$(EDITOR_MAKEFILE): $(EDITOR_PRO) - @$(call DO_CMD,QMAKE,$+,qmake -Wall $<) - -$(BINPATH)ed_$(DEMO_BIN)$(BINEXT): $(EDITOR_MAKEFILE) - @$(MAKE) -f $< - - -### -### Special targets -### -clean: - -$(RM) $(TARGETS) $(NOINST_TARGETS) $(CLEAN_TARGETS) $(OBJPATH)*.o - -distclean: clean - -$(RM) $(DISTCLEAN_TARGETS) *~ core *.core - -.PHONY: clean distclean all