view Makefile.gen @ 49:033c660c25f5

Restructure module playing, removing 8bit sample mixing (output can still be 8bit, but samples are internally upconverted to 16bit after module loading.) Also prepare for floating point mixing support.
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 01 Oct 2012 02:51:41 +0300
parents 7908061da010
children 36e2f910219c
line wrap: on
line source

###
### Get settings from config.mak
###
include config.mak

ifeq ($(EXTRA_CFLAGS),)
EXTRA_CFLAGS=-march=core2
endif

ifneq ($(DMLIB),)
DM_CFLAGS += -I$(DMLIB)
endif

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


###
### Filesystem
###
ifeq ($(DMRES_PACKFS),yes)
DM_CFLAGS += -DDMRES_PACKFS
DMLIB_OBJS += dmpack.o dmpackutil.o
DM_LDFLAGS += -lz
ifeq ($(DM_BUILD_TOOLS),yes)
BINARIES += packed
endif
endif

ifeq ($(DMRES_STDIO),yes)
DM_CFLAGS += -DDMRES_STDIO
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_TTF_TEXT),yes)
DM_CFLAGS += -DDM_GFX_TTF_TEXT
DMLIB_OBJS += dmtext.o

ifeq ($(DM_BUILD_TESTS),yes)
ifeq ($(DM_GFX_BLITS),yes)
BINARIES += blittest vview vptest efu
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)

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)
ifeq ($(DMRES_STDIO),yes)
ifeq ($(SUP_MODLOAD),yes)
BINARIES+= viewmod mod2wav testpl
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

###
### Rest of the rules
###
CFLAGS += -g -W -Wall -DHAVE_STRING_H -O3 $(EXTRA_CFLAGS)
CXXFLAGS=$(CFLAGS)

DM_CFLAGS += $(SDL_CFLAGS)
DM_LDFLAGS += $(LDFLAGS) $(SDL_LDFLAGS)


DMLIB_A=$(OBJPATH)dmlib.a
DMLIB_OBJS += dmfile.o dmlib.o dmlerp.o dmstring.o \
	dmargs.o dmvecmat.o dmperlin.o dmimage.o dmres.o \
	dmsimple.o

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

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

all: $(TARGETS)

###
### Generic rules
###

$(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 $<) | sed "s/^# .*//g" > $@

$(OBJPATH)dmimage.o: $(DMLIB)dmimage.c $(DMLIB)stb_image.c
	@echo " CC $+"
	@$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS)

$(OBJPATH)dmblit.o: $(DMLIB)dmblit.c $(DMLIB)dmscaledblit.h $(DMLIB)dmblitfunc.h
	@echo " CC $+"
	@$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS)

$(OBJPATH)dmline.o: $(DMLIB)dmline.c $(DMLIB)dmdrawline.h $(DMLIB)dmlinefunc.h
	@echo " CC $+"
	@$(CC) $(CFLAGS) -c -o $@ $< $(DM_CFLAGS)

$(OBJPATH)dmargs.o: $(DMLIB)dmargs.c $(DMLIB)dmargs.h $(DMLIB)dmargs_int.c
	@echo " CC $+"
	@$(CC) $(CFLAGS) -c -o $@ $< $(DM_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)%$(EXEEXT): $(OBJPATH)%.o $(DMLIB_A)
	@echo " LINK $+"
	@$(CC) -o $@ $+ $(DM_LDFLAGS)

$(BINPATH)vview$(EXEEXT): $(OBJPATH)vview.o $(DMLIB_A)
	@echo " LINK $+"
	@$(CC) -o $@ $+ $(DM_LDFLAGS) -lSDL_ttf

$(BINPATH)blittest$(EXEEXT): $(OBJPATH)blittest.o $(DMLIB_A)
	@echo " LINK $+"
	@$(CC) -o $@ $+ $(DM_LDFLAGS) -lSDL_ttf

$(BINPATH)efu$(EXEEXT): $(OBJPATH)efu.o $(DMLIB_A)
	@echo " LINK $+"
	@$(CC) -o $@ $+ $(DM_LDFLAGS) -lSDL_ttf

$(BINPATH)vptest$(EXEEXT): $(OBJPATH)vptest.o $(DMLIB_A)
	@echo " LINK $+"
	@$(CC) -o $@ $+ $(DM_LDFLAGS) -lSDL_ttf

$(BINPATH)%test$(EXEEXT): $(OBJPATH)%test.o $(DMLIB_A)
	@echo " LINK $+"
	@$(CC) -o $@ $+ $(DM_LDFLAGS)

$(BINPATH)packed$(EXEEXT): $(OBJPATH)packed.o $(DMLIB_A)
	@echo " LINK $+"
	@$(CC) -o $@ $+ $(DM_LDFLAGS)

$(BINPATH)mod2wav$(EXEEXT): $(OBJPATH)mod2wav.o $(DMLIB_A)
	@echo " LINK $+"
	@$(CC) -o $@ $+ $(DM_LDFLAGS)

$(BINPATH)xm2jss$(EXEEXT): $(OBJPATH)xm2jss.o $(DMLIB_A)
	@echo " LINK $+"
	@$(CC) -o $@ $+ $(DM_LDFLAGS)

$(BINPATH)viewmod$(EXEEXT): $(OBJPATH)viewmod.o $(DMLIB_A)
	@echo " LINK $+"
	@$(CC) -o $@ $+ $(DM_LDFLAGS)

$(BINPATH)testpl$(EXEEXT): $(OBJPATH)testpl.o $(DMLIB_A)
	@echo " LINK $+"
	@$(CC) -o $@ $+ $(DM_LDFLAGS)


###
### Special targets
###
clean:
	$(RM) $(TARGETS) $(OBJPATH)*.o