view Makefile.gen @ 495:30145d17aebd

Move certain editor related targets to the actual TARGETS variable, and remove them from being separately specified in the "make clean" target, thusly cleaning them only when editor is enabled in build configuration.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 16 Nov 2012 19:18:03 +0200
parents 8ca18222db10
children 966617f0f6cd
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)
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)
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)
BINARIES+= objlink data2inc gfxconv
ifeq ($(SUP_MODLOAD),yes)
BINARIES+= viewmod mod2wav testpl
ifeq ($(DM_GFX_BLITS),yes)
BINARIES+= view64
ifeq ($(DM_GFX_BM_TEXT),yes)
ifeq ($(DM_GFX_MISC),yes)
BINARIES+= ppl
endif
endif
endif
endif

ifeq ($(JSS_SUP_JSSMOD),yes)
ifeq ($(JSS_SUP_XM),yes)
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

TARGETS += $(DMLIB_A) $(addprefix $(BINPATH),$(addsuffix $(EXEEXT),$(BINARIES)))

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)


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