Mercurial > hg > dmlib
view Makefile.gen @ 510:43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
to DMEncDecOps and adding fields and op enums for custom encode functions, renaming,
etc. Split generic op sanity checking into a separate function in
preparation for its use in generic encoding function.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Mon, 19 Nov 2012 15:06:01 +0200 |
parents | e1526854e735 |
children | 2a70f5902b70 |
line wrap: on
line source
### ### Get settings from config.mak ### include config.mak ifeq ($(EXTRA_CFLAGS),) EXTRA_CFLAGS=-O3 -march=core2 -DDM_DEVEL endif ifneq ($(DMLIB),) DM_CFLAGS += -I$(DMLIB) endif ### ### Editor ### ifeq ($(DM_BUILD_EDITOR),yes) ifneq ($(DEMO_BIN),) BINARIES += ed_$(DEMO_BIN) TARGETS += $(OBJPATH)moc_* $(EDITOR_MAKEFILE) $(EDITOR_PRO) endif endif EDITOR_PRO = editor.pro EDITOR_MAKEFILE = Makefile.editor EDITOR_SOURCES = edmain.cpp edgui.cpp edview.cpp edtlobj.cpp edtimeline.cpp edwaveform.cpp edres.cpp EDITOR_HEADERS = edmain.h edtlobj.h edview.h edtimeline.h edwaveform.h edres.h ### ### Form additional compilation defines based on settings ### # If C routines are not explicitly disabled, we enable them ifeq ($(DM_USE_C),) DM_USE_C=yes endif ifeq ($(DM_USE_C),yes) DM_CFLAGS+=-DDM_USE_C endif # 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) DM_LDFLAGS+=$(TREMOR_LDFLAGS) endif ### ### Filesystem ### ifeq ($(DM_USE_PACKFS),yes) BUILD_RES=yes DM_CFLAGS += -DDM_USE_PACKFS $(ZLIB_CFLAGS) DM_LDFLAGS += $(ZLIB_LDFLAGS) DMLIB_OBJS += dmpack.o dmpackutil.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_MISC),yes) DM_CFLAGS += -DDM_GFX_MISC DMLIB_OBJS += dmgfx.o endif 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) BINARIES += blittest vptest efu endif endif endif endif ifeq ($(DM_GFX_8BIT),yes) DM_CFLAGS += -DDM_GFX_8BIT endif ifeq ($(DM_GFX_15BIT),yes) DM_CFLAGS += -DDM_GFX_15BIT endif ifeq ($(DM_GFX_16BIT),yes) DM_CFLAGS += -DDM_GFX_15BIT endif ifeq ($(DM_GFX_32BIT),yes) DM_CFLAGS += -DDM_GFX_15BIT endif ### ### miniJSS ### ifeq ($(JSS),yes) DM_CFLAGS+=-DDM_USE_JSS 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) TARGETS += $(DMLIB)jmix_c.c DMLIB_OBJS+=jmix_c.o endif #ifeq ($(DM_USE_SIMD),yes) #DMLIB_OBJS+=jmix_simd.o #endif ### Dependancies ifeq ($(DM_BUILD_TOOLS),yes) DMLIB_OBJS += libgfx.o lib64gfx.o ifeq ($(DM_USE_STDIO),yes) TOOL_BINARIES+= objlink data2inc gfxconv gentab ifeq ($(SUP_MODLOAD),yes) TOOL_BINARIES+= viewmod mod2wav testpl ifeq ($(DM_GFX_BLITS),yes) TOOL_BINARIES+= view64 ifeq ($(DM_GFX_BM_TEXT),yes) ifeq ($(DM_GFX_MISC),yes) TOOL_BINARIES+= ppl endif endif endif endif 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 ifeq ($(DM_USE_LIBPNG),yes) DM_CFLAGS += -DDM_USE_LIBPNG $(LIBPNG_CFLAGS) $(ZLIB_CFLAGS) endif ### ### Rest of the rules ### CFLAGS += -g -W -Wall -DHAVE_STRING_H $(EXTRA_CFLAGS) CXXFLAGS=$(CFLAGS) DM_CFLAGS += $(SDL_CFLAGS) DM_LDFLAGS += $(LDFLAGS) DMLIB_A=$(OBJPATH)dmlib.a DMLIB_OBJS += dmfile.o dmbstr.o dmlib.o dmlerp.o dmstring.o \ dmargs.o dmvecmat.o dmperlin.o dmimage.o \ dmwav.o dmengine.o dmtimeline.o dmtimelinew.o dmq3d.o ifeq ($(DM_BUILD_TESTS),yes) BINARIES += vecmattest fptest endif TOOL_TARGETS = $(addprefix $(BINPATH),$(addsuffix $(EXEEXT),$(TOOL_BINARIES))) TARGETS += $(DMLIB_A) $(addprefix $(BINPATH),$(addsuffix $(EXEEXT),$(BINARIES))) $(TOOL_TARGETS) all: $(TARGETS) ### ### Generic rules ### $(OBJPATH)gtk%.o: $(DMLIB)gtk%.c $(DMLIB)gtk%.h @echo " CC $+" @$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS) $(GTK_CFLAGS) $(OBJPATH)%.d: $(DMLIB)%.c @echo > $@ @grep '#\s*include\s*\"' $< | sed 's/#\s*include\s\s*"\(.*\)"/\1/' | while read i; do if test -e "$$i"; then echo "$$i" >> $@; fi; done $(OBJPATH)%.o: $(DMLIB)%.c $(DMLIB)%.h @echo " CC $<" @$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS) $(OBJPATH)%.o: $(DMLIB)%.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) ### ### dmlib rules ### $(DMLIB)jmix_c.c: $(DMLIB)jmix_c_in.c $(DMLIB)jmixtmpl_c.h $(DMLIB)jmix_post_c.h (echo "#include \"jssmix.h\"" && cpp $< $(DM_CFLAGS)) | sed "s/^# .*//g" > $@ $(OBJPATH)dmimage.o: $(DMLIB)dmimage.c $(DMLIB)stb_image.c $(DMLIB)dmimage.h @echo " CC $+" @$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS) $(OBJPATH)jssmod.o: $(DMLIB)jssmod.c $(DMLIB)jssmod.h $(DMLIB)jss.h @echo " CC $+" @$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS) $(OBJPATH)jssplr.o: $(DMLIB)jssplr.c $(DMLIB)jssplr.h $(DMLIB)jss.h $(DMLIB)jssmod.h $(DMLIB)jssmix.h @echo " CC $+" @$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS) $(OBJPATH)jssmix.o: $(DMLIB)jssmix.c $(DMLIB)jssmix.h $(DMLIB)jss.h @echo " CC $+" @$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS) $(OBJPATH)dmblit.o: $(DMLIB)dmblit.c $(DMLIB)dmscaledblit.h $(DMLIB)dmunscaledblit.h $(DMLIB)dmblitfunc.h $(DMLIB)dmlib.h @echo " CC $+" @$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS) $(OBJPATH)dmline.o: $(DMLIB)dmline.c $(DMLIB)dmdrawline.h $(DMLIB)dmlinefunc.h $(DMLIB)dmlineclip.h $(DMLIB)dmlib.h @echo " CC $+" @$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS) $(OBJPATH)dmargs.o: $(DMLIB)dmargs.c $(DMLIB)dmargs.h $(DMLIB)dmargs_int.c $(DMLIB)dmlib.h @echo " CC $+" @$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS) $(OBJPATH)libgfx.o: $(DMLIB)libgfx.c $(DMLIB)libgfx.h @echo " CC $+" @$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS) $(LIBPNG_CFLAGS) $(DMLIB_A): $(addprefix $(OBJPATH),$(DMLIB_OBJS)) $(DMLIB)Makefile.gen config.mak @echo " AR $@ $(addprefix $(OBJPATH),$(DMLIB_OBJS))" @$(AR) cru $@ $+ $(addprefix $(OBJPATH),$(DMLIB_OBJS)) @$(RANLIB) $@ ### ### Tests and binaries ### $(BINPATH)blittest$(EXEEXT): $(OBJPATH)blittest.o $(DMLIB_A) @echo " LINK $+" @$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(SDL_LDFLAGS) -lSDL_ttf $(BINPATH)efu$(EXEEXT): $(OBJPATH)efu.o $(DMLIB_A) @echo " LINK $+" @$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(SDL_LDFLAGS) -lSDL_ttf $(BINPATH)vptest$(EXEEXT): $(OBJPATH)vptest.o $(DMLIB_A) @echo " LINK $+" @$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(SDL_LDFLAGS) -lSDL_ttf $(BINPATH)%test$(EXEEXT): $(OBJPATH)%test.o $(DMLIB_A) @echo " LINK $+" @$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) -lm $(BINPATH)packed$(EXEEXT): $(OBJPATH)packed.o $(DMLIB_A) @echo " LINK $+" @$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(BINPATH)mod2wav$(EXEEXT): $(OBJPATH)mod2wav.o $(DMLIB_A) @echo " LINK $+" @$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) -lm $(BINPATH)xm2jss$(EXEEXT): $(OBJPATH)xm2jss.o $(DMLIB_A) @echo " LINK $+" @$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(BINPATH)viewmod$(EXEEXT): $(OBJPATH)viewmod.o $(DMLIB_A) @echo " LINK $+" @$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(BINPATH)fontconv$(EXEEXT): $(OBJPATH)fontconv.o $(DMLIB_A) @echo " LINK $+" @$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(SDL_LDFLAGS) -lSDL_ttf $(BINPATH)testpl$(EXEEXT): $(OBJPATH)testpl.o $(DMLIB_A) @echo " LINK $+" @$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(SDL_LDFLAGS) $(BINPATH)ppl$(EXEEXT): $(OBJPATH)ppl.o $(DMLIB_A) pplfont.h @echo " LINK $+" @$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(SDL_LDFLAGS) $(BINPATH)$(DEMO_BIN)$(EXEEXT): $(addprefix $(OBJPATH),$(DEMO_OBJS)) $(DMLIB_A) @echo " LINK $+" @$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(SDL_LDFLAGS) $(BINPATH)objlink$(EXEEXT): $(OBJPATH)objlink.o $(DMLIB_A) @echo " LINK $+" @$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(BINPATH)data2inc$(EXEEXT): $(OBJPATH)data2inc.o $(DMLIB_A) @echo " LINK $+" @$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(BINPATH)gfxconv$(EXEEXT): $(OBJPATH)gfxconv.o $(DMLIB_A) @echo " LINK $+" @$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(LIBPNG_LDFLAGS) $(ZLIB_LDFLAGS) $(BINPATH)view64$(EXEEXT): $(OBJPATH)view64.o $(DMLIB_A) @echo " LINK $+" @$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(SDL_LDFLAGS) $(BINPATH)gentab$(EXEEXT): $(OBJPATH)gentab.o $(DMLIB_A) @echo " LINK $+" @$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) -lm ### ### 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)" >> $@ @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) $(OBJPATH)*.o