Mercurial > hg > dmlib
view Makefile.gen @ 2576:812b16ee49db
I had been living under apparent false impression that "realfft.c"
on which the FFT implementation in DMLIB was basically copied from
was released in public domain at some point, but it could very well
be that it never was. Correct license is (or seems to be) GNU GPL.
Thus I removing the code from DMLIB, and profusely apologize to the
author, Philip Van Baren.
It was never my intention to distribute code based on his original
work under a more liberal license than originally intended.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 11 Mar 2022 16:32:50 +0200 |
parents | fdea5e3d727f |
children | 9807ae37ad69 |
line wrap: on
line source
### ### 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 $(EXTRA_CFLAGS) #CFLAGS += -std=c11 -D_FILE_OFFSET_BITS=64 -D_POSIX_C_SOURCE=200808L CXXFLAGS = $(CFLAGS) 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