view Makefile.gen @ 584:923d920a8a85

Build setupfont.h and setupimage.h from source data files. Use setupfont in PPL.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 12 Apr 2013 05:12:08 +0300
parents 14640d0688d3
children 296133d29611
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_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 = 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

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)
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

endif
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  dmq3d.o

ifeq ($(DM_BUILD_TESTS),yes)
BINARIES += vecmattest fptest
endif

FONTCONV_BIN=$(BINPATH)fontconv$(EXEEXT)
DATA2INC_BIN=$(BINPATH)data2inc$(EXEEXT)

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)


$(FONTCONV_BIN): $(OBJPATH)fontconv.o $(DMLIB_A)
	@echo " LINK $+"
	@$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(SDL_LDFLAGS) -lSDL_ttf

$(DMLIB)graphics/SetupFont.dmf: $(DMLIB)graphics/SetupFont.fnt
	$(FONTCONV_BIN) -o $@ $<

setupfont.h: $(DMLIB)graphics/SetupFont.dmf
	$(DATA2INC_BIN) -C -n engineSetupFont -t Uint8 $< $@

$(BINPATH)ppl$(EXEEXT): $(OBJPATH)ppl.o $(DMLIB_A) setupfont.h
	@echo " LINK $+"
	@$(CC) -o $@ $(filter %.o %.a,$+) $(DM_LDFLAGS) $(SDL_LDFLAGS)


$(BINPATH)testpl$(EXEEXT): $(OBJPATH)testpl.o $(DMLIB_A)
	@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)

$(DATA2INC_BIN): $(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) $(LIBPNG_LDFLAGS) $(ZLIB_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) $(TMPFILES) $(OBJPATH)*.o