Mercurial > hg > dmlib
view Makefile.gen @ 2208:90ec1ec89c56
Revamp the palette handling in lib64gfx somewhat, add helper functions to
lib64util for handling external palette file options and add support for
specifying one of the "internal" palettes or external (.act) palette file to
gfxconv and 64vw.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 14 Jun 2019 05:01:12 +0300 |
parents | cbac4912992c |
children | 42a0172b8c80 |
line wrap: on
line source
### ### Get settings from config.mak ### ifneq ($(DMCONFIG),) include $(DMCONFIG) else include config.mak endif 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/ DM_CFLAGS += -I$(DMLIB_SRC) ifeq ($(EXTRA_CFLAGS),) EXTRA_CFLAGS=-O3 # -march=corei7 endif ### ### 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 endif 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 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 gentab 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=fontconv DATA2INC_BIN=data2inc ### ### Rest of the rules ### CFLAGS += -g -W -Wall -DHAVE_STRING_H $(EXTRA_CFLAGS) #CFLAGS += -std=c11 -D_FILE_OFFSET_BITS=64 CXXFLAGS=$(CFLAGS) DM_CFLAGS += $(SDL_CFLAGS) DM_LDFLAGS += $(LDFLAGS) ifneq ($(V),1) 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,$+) LINK_STATIC_LIB = @echo " AR $@" && $(AR) cru $@ $(filter %.o,$+) && $(RANLIB) $@ else COMPILE_OBJ = @if test ! -d $(OBJPATH); then mkdir -p $(OBJPATH); fi && echo "$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS)" && $(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS) LINK_BIN = @if test ! -d $(BINPATH); then mkdir -p $(BINPATH); fi && echo "$(CC) -o $@ $(filter %.o %.a,$+)" && $(CC) -o $@ $(filter %.o %.a,$+) LINK_STATIC_LIB = @echo "$(AR) cru $@ $(filter %.o,$+)" && $(AR) cru $@ $(filter %.o,$+) && echo "$(RANLIB) $@" && $(RANLIB) $@ endif 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 dmfft.o dmzlib.o TESTS_TARGETS = $(addprefix $(TESTS_BINPATH),$(addsuffix $(EXEEXT),$(TESTS_BINARIES))) TOOL_TARGETS = $(addprefix $(TOOL_BINPATH),$(addsuffix $(EXEEXT),$(TOOL_BINARIES))) TARGETS += $(DMLIB_A) $(addprefix $(BINPATH),$(addsuffix $(EXEEXT),$(BINARIES))) \ $(TOOL_TARGETS) $(TESTS_TARGETS) \ $(DMLIB)assets/SetupFont.dmf \ $(DMLIB_SRC)setupfont.h \ $(DMLIB_SRC)setupimage.h \ $(DMLIB_SRC)setupmenubar.h #NONBUILD += all: $(NONBUILD) $(TARGETS) ### ### Generic object rules ### $(OBJPATH)%.o: $(DMLIB)tests/%.c $(DMLIB)tests/%.h $(COMPILE_OBJ) $(OBJPATH)%.o: $(DMLIB)tests/%.c $(COMPILE_OBJ) $(OBJPATH)%.o: $(DMLIB)tools/%.c $(DMLIB)tools/%.h $(COMPILE_OBJ) $(OBJPATH)%.o: $(DMLIB)tools/%.c $(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 $(COMPILE_OBJ) $(OBJPATH)%.o: $(DMLIB_SRC)%.c $(COMPILE_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 $(COMPILE_OBJ) $(OBJPATH)dmresw.o: $(DMLIB_SRC)dmresw.c $(DMLIB_SRC)dmres.h $(COMPILE_OBJ) $(OBJPATH)jssmod.o: $(MINIJSS)jssmod.c $(MINIJSS)jssmod.h $(MINIJSS)jss.h $(COMPILE_OBJ) $(OBJPATH)jssplr.o: $(MINIJSS)jssplr.c $(MINIJSS)jssplr.h $(MINIJSS)jss.h $(MINIJSS)jssmod.h $(MINIJSS)jssmix.h $(COMPILE_OBJ) $(OBJPATH)jssmix.o: $(MINIJSS)jssmix.c $(MINIJSS)jssmix.h $(MINIJSS)jss.h $(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 $(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 $(COMPILE_OBJ) $(OBJPATH)libgfx.o: $(DMLIB)tools/libgfx.c $(DMLIB)tools/libgfx.h $(DMLIB_A) $(COMPILE_OBJ) $(OBJPATH)lib64gfx.o: $(DMLIB)tools/lib64gfx.c $(DMLIB)tools/lib64gfx.h $(OBJPATH)libgfx.o $(COMPILE_OBJ) $(OBJPATH)lib64util.o: $(DMLIB)tools/lib64util.c $(DMLIB)tools/lib64util.h $(OBJPATH)lib64gfx.o $(COMPILE_OBJ) $(OBJPATH)lib64fmts.o: $(DMLIB)tools/lib64fmts.c $(OBJPATH)lib64gfx.o $(COMPILE_OBJ) $(OBJPATH)64vw.o: $(DMLIB)tools/64vw.c $(OBJPATH)lib64util.o $(COMPILE_OBJ) $(OBJPATH)gfxconv.o: $(DMLIB)tools/gfxconv.c $(OBJPATH)lib64util.o $(COMPILE_OBJ) $(OBJPATH)ppl.o: $(TOOL_SRC)ppl.c $(DMLIB_SRC)setupfont.h \ $(OBJPATH)libgutil.o $(DMLIB_A) $(COMPILE_OBJ) $(DMLIB)assets/SetupFont.dmf: $(DMLIB)assets/SetupFont.fnt @echo " FONT $@ $<" @$(FONTCONV_BIN) $< $@ $(DMLIB_SRC)setupfont.h: $(DMLIB)assets/SetupFont.dmf @echo " DATA $@ $<" @$(DATA2INC_BIN) -q -C -n engineSetupFont -t Uint8 $< $@ > /dev/null $(DMLIB_SRC)setupimage.h: $(DMLIB)assets/SetupImage.png @echo " DATA $@ $<" @$(DATA2INC_BIN) -q -C -n engineSetupImage -t Uint8 $< $@ > /dev/null $(DMLIB_SRC)setupmenubar.h: $(DMLIB)assets/SetupMenuBar.png @echo " DATA $@ $<" @$(DATA2INC_BIN) -q -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) $(COMPILE_OBJ) $(DMLIB_A): $(addprefix $(OBJPATH),$(DMLIB_OBJS)) $(DMLIB)Makefile.gen config.mak $(LINK_STATIC_LIB) ### ### Tests ### $(TESTS_BINPATH)blittest$(EXEEXT): $(OBJPATH)blittest.o $(DMLIB_A) $(LINK_BIN) $(SDL_LDFLAGS) $(SDL_TTF_LDFLAGS) -lm $(TESTS_BINPATH)dzlibtest$(EXEEXT): $(OBJPATH)dzlibtest.o $(DMLIB_A) $(LINK_BIN) $(DM_LDFLAGS) $(SDL_LDFLAGS) $(ZLIB_LDFLAGS) $(TESTS_BINPATH)plrtest$(EXEEXT): $(OBJPATH)plrtest.o $(DMLIB_A) $(LINK_BIN) $(DM_LDFLAGS) $(SDL_LDFLAGS) $(ZLIB_LDFLAGS) -lm $(TESTS_BINPATH)%test$(EXEEXT): $(OBJPATH)%test.o $(DMLIB_A) $(LINK_BIN) $(DM_LDFLAGS) $(TOOL_LDFLAGS) -lm ### ### Tools ### $(TOOL_BINPATH)fontconv$(EXEEXT): $(OBJPATH)fontconv.o $(DMLIB_A) $(LINK_BIN) $(DM_LDFLAGS) $(TOOL_LDFLAGS) $(SDL_LDFLAGS) $(SDL_TTF_LDFLAGS) $(ZLIB_LDFLAGS) -lm $(TOOL_BINPATH)data2inc$(EXEEXT): $(OBJPATH)data2inc.o $(DMLIB_A) $(LINK_BIN) $(DM_LDFLAGS) $(TOOL_LDFLAGS) $(TOOL_BINPATH)packed$(EXEEXT): $(OBJPATH)packed.o $(DMLIB_A) $(LINK_BIN) $(DM_LDFLAGS) $(TOOL_LDFLAGS) $(ZLIB_LDFLAGS) $(TOOL_BINPATH)mod2wav$(EXEEXT): $(OBJPATH)mod2wav.o $(DMLIB_A) $(LINK_BIN) $(DM_LDFLAGS) $(TOOL_LDFLAGS) $(ZLIB_LDFLAGS) -lm $(TOOL_BINPATH)xm2jss$(EXEEXT): $(OBJPATH)xm2jss.o $(DMLIB_A) $(LINK_BIN) $(DM_LDFLAGS) $(TOOL_LDFLAGS) $(ZLIB_LDFLAGS) $(TOOL_BINPATH)dumpmod$(EXEEXT): $(OBJPATH)dumpmod.o $(DMLIB_A) $(LINK_BIN) $(DM_LDFLAGS) $(TOOL_LDFLAGS) $(ZLIB_LDFLAGS) $(TOOL_BINPATH)ppl$(EXEEXT): $(OBJPATH)ppl.o $(OBJPATH)libgutil.o $(DMLIB_A) $(LINK_BIN) $(DM_LDFLAGS) $(ZLIB_LDFLAGS) $(SDL_LDFLAGS) -lm $(TOOL_BINPATH)objlink$(EXEEXT): $(OBJPATH)objlink.o $(DMLIB_A) $(LINK_BIN) $(DM_LDFLAGS) $(TOOL_LDFLAGS) $(TOOL_BINPATH)fanalyze$(EXEEXT): $(OBJPATH)fanalyze.o $(DMLIB_A) $(LINK_BIN) $(DM_LDFLAGS) $(TOOL_LDFLAGS) $(TOOL_BINPATH)gfxconv$(EXEEXT): $(OBJPATH)gfxconv.o $(OBJPATH)lib64gfx.o \ $(OBJPATH)lib64fmts.o $(OBJPATH)lib64util.o $(OBJPATH)libgfx.o $(DMLIB_A) $(LINK_BIN) $(DM_LDFLAGS) $(TOOL_LDFLAGS) $(LIBPNG_LDFLAGS) $(ZLIB_LDFLAGS) $(TOOL_BINPATH)64vw$(EXEEXT): $(OBJPATH)64vw.o $(OBJPATH)lib64gfx.o \ $(OBJPATH)lib64fmts.o $(OBJPATH)lib64util.o $(OBJPATH)libgfx.o $(DMLIB_A) $(LINK_BIN) $(DM_LDFLAGS) $(LIBPNG_LDFLAGS) $(ZLIB_LDFLAGS) $(SDL_LDFLAGS) $(TOOL_BINPATH)gentab$(EXEEXT): $(OBJPATH)gentab.o $(DMLIB_A) $(LINK_BIN) $(DM_LDFLAGS) $(TOOL_LDFLAGS) -lm ### ### Demo binary ### ifneq ($(DEMO_BIN),) $(BINPATH)$(DEMO_BIN)$(EXEEXT): $(addprefix $(OBJPATH),$(DEMO_OBJS)) $(DMLIB_A) $(LINK_BIN) $(DM_LDFLAGS) $(SDL_LDFLAGS) $(DEMO_LDFLAGS) -lm endif ### ### Editor targets ### $(EDITOR_PRO): $(DMLIB)Makefile.gen config.mak $(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)$(EXEEXT)" >> $@ @echo "TEMPLATE = app" >> $@ @echo "SOURCES = $(addprefix $(DMLIB),$(EDITOR_SOURCES))" >> $@ @echo "HEADERS = $(addprefix $(DMLIB),$(EDITOR_HEADERS))" >> $@ $(EDITOR_MAKEFILE): $(EDITOR_PRO) @echo " QMAKE $+" @qmake -Wall $< $(BINPATH)ed_$(DEMO_BIN)$(EXEEXT): $(EDITOR_MAKEFILE) @$(MAKE) -f $< ### ### Special targets ### clean: -$(RM) $(TARGETS) $(TMPFILES) $(OBJPATH)*.o