PROG = blobAndConquer PAKNAME = blobAndConquer.pak DOCS = doc/* ICONS = icons/ PAKDIRS = data gfx music sound textures VERSION = 0.91 RELEASE = 1 USEPAK = 0 DEV = 0 PREFIX = $(DESTDIR)/usr BINDIR = $(PREFIX)/games DATADIR := $(DATADIR)/ DOCDIR = $(DOCSDIR)/ ICONDIR = $(PREFIX)/share/icons MENUDIR = $(PREFIX)/share/applications LOCALEDIR = $(PREFIX)/share/locale/ CXXFLAGS += -Wformat=2 -Wformat-security -Wstrict-aliasing=2 CXXFLAGS += -Wmissing-format-attribute -Wmissing-noreturn CXXFLAGS += -Wdisabled-optimization CXXFLAGS += -I$(X11BASE)/include `$(SDL_CONFIG) --cflags` -DVERSION=$(VERSION) -DRELEASE=$(RELEASE) -DUSEPAK=$(USEPAK) -DDEV=$(DEV) CXXFLAGS += -DPAKNAME=\"$(PAKNAME)\" -DPAKLOCATION=\"$(DATADIR)\" -DGAMEPLAYMANUAL=\"$(DOCDIR)/index.html\" -Wall -pedantic CXXFLAGS += -DLOCALEDIR=\"$(LOCALEDIR)\" LIBPATH = -L$(X11BASE)/lib LIBS = -lGL -lGLU `$(SDL_CONFIG) --libs` -lSDL_mixer -lSDL_image -lSDL_ttf -lz -lintl # Yes, it means compiling is a little slower... but it's less hassle SEARCHPATH += src/ src/3d/ src/bosses/ src/combat src/common/ src/effects/ src/entities/ src/game/ src/gui/ SEARCHPATH += src/hud/ src/io/ src/missions/ src/puzzles/ src/system/ src/util/ src/world/ vpath %.cpp $(SEARCHPATH) vpath %.h $(SEARCHPATH) OBJS += CAudio.o OBJS += CBaseWidget.o CBlobDef.o CBoundingBox.o CBoundingBoxManager.o CBoss.o CBossDef.o CBSP.o CBullet.o CButton.o OBJS += CCamera.o CCheckBox.o CCollision.o CComboBox.o CCutsceneCamera.o CCutsceneCommand.o OBJS += CData.o CDecal.o CDecoration.o CDoor.o OBJS += CEmitter.o CEnemyDef.o CEntity.o CEntityDef.o CEntityManager.o CEngine.o OBJS += CFace.o CFeature.o CFileData.o CFrustum.o OBJS += CGame.o CGeometry.o CGLColor.o CGraphics.o CGrid.o OBJS += CHashtable.o OBJS += CInputWidget.o CItem.o CItemDef.o OBJS += CLabel.o CLinkable.o CList.o CListView.o CListViewItem.o OBJS += CMap.o CMath.o CMD2.o CMDLModel.o CMission.o CModelManager.o CMouse.o OBJS += CObjective.o OBJS += CPak.o CPanel.o CParticle.o CParticleManager.o CPlane.o CPoint.o CProperties.o OBJS += CQ3Target.o OBJS += CRandomNameGen.o CReference.o OBJS += CSaveGameHeader.o CSimpleModel.o CSlider.o CSprite.o CString.o CStructure.o CSwitch.o OBJS += CTexture.o CTextureManager.o CTextureSpec.o CTextureSpecManager.o CTrace.o CTrap.o CTriangle.o CTrigger.o OBJS += CUIManager.o CUnit.o OBJS += CVector.o CVectori.o OBJS += CWeapon.o CWeaponDef.o OBJS += ambush.o OBJS += battle.o bioMechBlobs.o bioTanks.o blobs.o bosses.o bsp.o bullets.o OBJS += combat.o controlPanel.o cryptBoss.o cutscene.o OBJS += darkBioMechs.o decals.o decoration.o dialogs.o doors.o OBJS += emitters.o enemy.o eyeDroids.o eyeDroidCommander.o explosions.o OBJS += features.o finalBoss.o OBJS += game.o OBJS += init.o items.o OBJS += laserGrid.o lift.o load.o OBJS += mastermind.o md2.o misc.o mission.o modelLoader.o OBJS += opengl.o options.o OBJS += particles.o player.o propertiesLoader.o OBJS += resources.o OBJS += save.o sentryGuns.o shadows.o specialist.o spiderBlobs.o spiderBlobCommander.o status.o structures.o switches.o OBJS += title.o traps.o triggers.o OBJS += units.o OBJS += weapons.o weather.o widgets.o world.o LOCALE_MO = $(patsubst %.po,%.mo,$(wildcard locale/*.po)) # top-level rule to create the program. all: $(PROG) %.o: %.cpp %.h data/gameDefs/defines.h defs.h headers.h $(CXX) $(CXXFLAGS) -c $< # linking the program. $(PROG): $(OBJS) main.o $(CXX) $(LIBPATH) $(OBJS) main.o -o $(PROG) $(LIBS) %.mo: %.po msgfmt -c -o $@ $< install: mkdir -p $(BINDIR) mkdir -p $(DATADIR) mkdir -p $(DOCDIR) mkdir -p $(ICONDIR) mkdir -p $(MENUDIR) cp --preserve=timestamps $(PROG) $(BINDIR)/$(PROG) cp -R --preserve=timestamps data $(DATADIR) cp -R --preserve=timestamps gfx $(DATADIR) cp -R --preserve=timestamps music $(DATADIR) cp -R --preserve=timestamps sound $(DATADIR) cp -R --preserve=timestamps textures $(DATADIR) cp -R --preserve=timestamps doc/* $(DOCDIR) cp --preserve=timestamps icons/blobAndConquer.png $(ICONDIR) cp --preserve=timestamps icons/blobAndConquer.desktop $(MENUDIR) @for f in $(LOCALE_MO); do \ lang=`echo $$f | sed -e 's/^locale\///;s/\.mo$$//'`; \ mkdir -p $(LOCALEDIR)$$lang/LC_MESSAGES; \ echo "cp $$f $(LOCALEDIR)$$lang/LC_MESSAGES/$(PROG).mo"; \ cp $$f $(LOCALEDIR)$$lang/LC_MESSAGES/$(PROG).mo; \ done uninstall: rm -f $(BINDIR)/$(PROG) rm -rf $(DATADIR) rm -rf $(DOCDIR) rm -f $(ICONDIR)/blobAndConquer.png rm -f $(MENUDIR)/blobAndConquer.desktop @for f in $(LOCALE_MO); do \ lang=`echo $$f | sed -e 's/^locale\///;s/\.mo$$//'`; \ echo "$(RM) $(LOCALEDIR)$$lang/LC_MESSAGES/$(PROG).mo"; \ $(RM) $(LOCALEDIR)$$lang/LC_MESSAGES/$(PROG).mo; \ done # cleaning everything that can be automatically recreated with "make". clean: $(RM) $(OBJS) $(PAK).o main.o $(PROG)