# $Id$ # This file is used by Makefile and declares common build rules, # a list of common object files etc. ###################################################################### # The defaul build target: just build the scummvm executable ###################################################################### all: $(EXECUTABLE) plugins ###################################################################### # Various minor settings ###################################################################### # Files that are to be included in the archive built by "make dist" DISTFILES := \ Makefile Makefile.common \ AUTHORS NEWS README COPYING scummvm.6 Info.plist \ scumm.dsp scummvm.dsp scummvm.dsw scummvm.icns scummvm.ico \ scummvm.proj scummvm.rc scummvm.spec scummvm.xpm simon.dsp sky.dsp \ scummvm.vcproj scumm.vcproj simon.vcproj sky.vcproj scummvm.sln # The dist file name ZIPFILE := scummvm-`date '+%Y-%m-%d'`.zip # The name for the directory used for depenency tracking DEPDIR := .deps ###################################################################### # Module settings ###################################################################### MODULES := tools base $(MODULES) ifdef DISABLE_SCUMM DEFINES += -DDISABLE_SCUMM else MODULES += engines/scumm ifdef DISABLE_SCUMM_7_8 DEFINES += -DDISABLE_SCUMM_7_8 endif ifdef DISABLE_HE DEFINES += -DDISABLE_HE endif endif ifdef DISABLE_SIMON DEFINES += -DDISABLE_SIMON else MODULES += engines/simon endif ifdef DISABLE_SKY DEFINES += -DDISABLE_SKY else MODULES += engines/sky endif ifdef DISABLE_SWORD1 DEFINES += -DDISABLE_SWORD1 else MODULES += engines/sword1 endif ifdef DISABLE_SWORD2 DEFINES += -DDISABLE_SWORD2 else MODULES += engines/sword2 endif ifdef DISABLE_QUEEN DEFINES += -DDISABLE_QUEEN else MODULES += engines/queen endif ifdef DISABLE_SAGA DEFINES += -DDISABLE_SAGA else MODULES += engines/saga endif ifdef DISABLE_KYRA DEFINES += -DDISABLE_KYRA else MODULES += engines/kyra endif ifdef DISABLE_GOB DEFINES += -DDISABLE_GOB else MODULES += engines/gob endif ifdef DISABLE_LURE DEFINES += -DDISABLE_LURE else MODULES += engines/lure endif # After the game specific modules follow the shared modules MODULES += \ gui \ graphics \ sound \ backends \ common ifdef USE_MT32EMU MODULES += sound/softsynth/mt32 endif ifdef DISABLE_SCALERS DEFINES += -DDISABLE_SCALERS endif ifdef DISABLE_HQ_SCALERS DEFINES += -DDISABLE_HQ_SCALERS endif ###################################################################### # The build rules follow - normally you should have no need to # touch whatever comes after here. ###################################################################### # Concat DEFINES and INCLUDES to form the CPPFLAGS CPPFLAGS:= $(DEFINES) $(INCLUDES) # Include the build instructions for all modules -include $(addprefix $(srcdir)/, $(addsuffix /module.mk,$(MODULES))) # Depdir information DEPDIRS = $(addsuffix /$(DEPDIR),$(MODULE_DIRS)) DEPFILES = # Make main.o depend on all other object files. This way if anything is # changed, it causes main.cpp to be recompiled. This in turn ensures that # the build date in gScummVMBuildDate is correct. base/main.o: $(filter-out base/libbase.a,$(OBJS)) # The build rule for the ScummVM executable $(EXECUTABLE): $(OBJS) $(CXX) $(LDFLAGS) $(PRE_OBJS_FLAGS) $+ $(POST_OBJS_FLAGS) $(LIBS) -o $@ distclean: clean $(RM_REC) $(DEPDIRS) $(RM) build.rules config.h config.mak config.log clean: $(RM) $(OBJS) $(EXECUTABLE) .PHONY: all clean dist distclean plugins # Old (dumb) compile & dependcy rules #INCS = scumm/scumm.h common/scummsys.h common/stdafx.h #.cpp.o: # $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o #$(OBJS): $(INCS) ifndef HAVE_GCC3 # If you use GCC, disable the above and enable this for intelligent # dependency tracking. .cpp.o: $(MKDIR) $(*D)/$(DEPDIR) $(CXX) -Wp,-MMD,"$(*D)/$(DEPDIR)/$(*F).d2" $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o $(ECHO) "$(*D)/" > $(*D)/$(DEPDIR)/$(*F).d $(CAT) "$(*D)/$(DEPDIR)/$(*F).d2" >> "$(*D)/$(DEPDIR)/$(*F).d" $(RM) "$(*D)/$(DEPDIR)/$(*F).d2" else # If you even have GCC 3.x, you can use this build rule, which is safer; the above # rule can get you into a bad state if you Ctrl-C at the wrong moment. # Also, with this GCC inserts additional dummy rules for the involved headers, # which ensures a smooth compilation even if said headers become obsolete. .cpp.o: $(MKDIR) $(*D)/$(DEPDIR) $(CXX) -Wp,-MMD,"$(*D)/$(DEPDIR)/$(*F).d",-MQ,"$@",-MP $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o endif ifdef HAVE_NASM .SUFFIXES: .asm .asm.o: $(NASM) -O1 $(NASMFLAGS) -g -o $*.o $(<) endif # Include the dependency tracking files. We add /dev/null at the end # of the list to avoid a warning/error if no .d file exist -include $(wildcard $(addsuffix /*.d,$(DEPDIRS))) /dev/null