makefile: tweak paths for a single-directory installation
[blobwars-mingw.git] / makefile
blob5613e4e9719014c2c02a2212ec1ee6223a2f9312
2 # Default platform hint
3 PLATFORM = UNIX
5 # Executable suffix
6 X =
8 ifeq ($(MINGW),1)
9 PLATFORM = MINGW
10 X = .exe
11 endif
13 PROG = blobwars
14 PAKNAME = blobwars.pak
15 DOCS = doc/*
16 ICONS = icons/
18 GAME_PROG = blobwars$(X)
19 PAK_PROG = pak$(X)
20 MAP_PROG = mapeditor$(X)
22 # Ensure pak can be run during cross-compilation
23 PAK = $(WINE) ./$(PAK_PROG)
25 VERSION = 1.09
26 RELEASE = 1
27 USEPAK = 1
29 PREFIX=$(DESTDIR)/usr
30 BINDIR = $(PREFIX)/games/
31 DATADIR = $(PREFIX)/share/games/blobwars/
32 DOCDIR = $(PREFIX)/share/doc/$(PROG)/
33 ICONDIR = $(PREFIX)/share/icons/hicolor/
34 DESKTOPDIR = $(PREFIX)/share/applications/
35 LOCALEDIR = $(PREFIX)/share/locale/
37 ifeq ($(PLATFORM),MINGW)
38 PREFIX = .
39 BINDIR = $(PREFIX)/
40 DATADIR = $(PREFIX)/data/
41 DOCDIR = $(PREFIX)/doc/
42 ICONDIR = $(PREFIX)/icons/
43 DESKTOPDIR = $(PREFIX)/misc/
44 LOCALEDIR = $(PREFIX)/locale/
45 endif
47 CXXFLAGS += `sdl-config --cflags` -DVERSION=$(VERSION) -DRELEASE=$(RELEASE) -DUSEPAK=$(USEPAK)
48 CXXFLAGS += -DPAKNAME=\"$(PAKNAME)\" -DPAKLOCATION=\"$(DATADIR)\" -D$(PLATFORM) -DGAMEPLAYMANUAL=\"$(DOCDIR)index.html\" -Wall
49 CXXFLAGS += -DLOCALEDIR=\"$(LOCALEDIR)\"
50 CXXFLAGS += $(CFLAGS) # -pg -Werror
52 ifeq ($(PLATFORM),MINGW)
53 INTL_LIBS = -lintl
54 else
55 INTL_LIBS =
56 endif
58 LIBS = $(LDFLAGS) `sdl-config --libs` -lSDL_mixer -lSDL_image -lSDL_ttf -lz $(INTL_LIBS)
60 OBJS += CAudio.o
61 OBJS += CBoss.o
62 OBJS += CCollision.o CCutscene.o CConfig.o
63 OBJS += CData.o
64 OBJS += CEffect.o CEngine.o CEntity.o
65 OBJS += CFileData.o
66 OBJS += CGame.o CGameData.o CGameObject.o CGraphics.o
67 OBJS += CHub.o
68 OBJS += CKeyboard.o
69 OBJS += CJoystick.o
70 OBJS += CLineDef.o
71 OBJS += CList.o
72 OBJS += CMap.o CMath.o
73 OBJS += CObjective.o
74 OBJS += CPak.o CParticle.o CPersistant.o CPersistData.o
75 OBJS += CRadarBlip.o CReplayData.o
76 OBJS += CSpawnPoint.o CSprite.o CSwitch.o
77 OBJS += CTeleporter.o CTrain.o CTrap.o
78 OBJS += CWeapon.o CWidget.o
80 OBJS += aquaBoss.o
81 OBJS += bosses.o bullets.o
82 OBJS += cutscene.o
83 OBJS += droidBoss.o
84 OBJS += effects.o enemies.o entities.o explosions.o
85 OBJS += finalBattle.o
86 OBJS += galdov.o game.o graphics.o
87 OBJS += hub.o
88 OBJS += info.o init.o intro.o items.o
89 OBJS += lineDefs.o loadSave.o
90 OBJS += map.o mapData.o mias.o mission.o
91 OBJS += objectives.o obstacles.o options.o
92 OBJS += particles.o player.o
93 OBJS += resources.o
94 OBJS += spawnPoints.o switches.o
95 OBJS += tankBoss.o teleporters.o title.o trains.o traps.o triggers.o
96 OBJS += weapons.o widgets.o
98 GAMEOBJS = $(OBJS) main.o
99 MAPOBJS = $(OBJS) mapEditor.o
100 PAKOBJS = CFileData.o pak.o
102 LOCALE_MO = $(patsubst %.po,%.mo,$(wildcard locale/*.po))
104 # top-level rule to create the program.
105 all: $(GAME_PROG) $(PAK_PROG) $(LOCALE_MO)
107 # compiling other source files.
108 %.o: src/%.cpp src/%.h src/defs.h src/defines.h src/headers.h
109 $(CXX) $(CXXFLAGS) -c $<
111 # linking the program.
112 $(GAME_PROG): $(GAMEOBJS)
113 $(CXX) -o $@ $(GAMEOBJS) $(LIBS)
115 $(PAK_PROG): $(PAKOBJS)
116 $(CXX) -o $@ $(PAKOBJS) $(LIBS)
118 %.mo: %.po
119 msgfmt -c -o $@ $<
121 $(MAP_PROG): $(MAPOBJS)
122 $(CXX) -o $@ $(MAPOBJS) $(LIBS)
124 # cleaning everything that can be automatically recreated with "make".
125 clean:
126 $(RM) $(GAMEOBJS) mapEditor.o pak.o $(GAME_PROG) $(PAKNAME) \
127 $(PAK_PROG) $(MAP_PROG) $(LOCALE_MO)
129 buildpak:
130 $(PAK) data gfx music sound $(PAKNAME)
132 # install
133 install:
135 $(PAK) data gfx music sound $(PAKNAME)
137 mkdir -p $(BINDIR)
138 mkdir -p $(DATADIR)
139 mkdir -p $(DOCDIR)
140 mkdir -p $(ICONDIR)16x16/apps
141 mkdir -p $(ICONDIR)32x32/apps
142 mkdir -p $(ICONDIR)64x64/apps
143 mkdir -p $(DESKTOPDIR)
145 install -m 755 $(GAME_PROG) $(BINDIR)$(GAME_PROG)
146 install -m 644 $(PAKNAME) $(DATADIR)$(PAKNAME)
147 install -m 644 $(DOCS) $(DOCDIR)
148 cp $(ICONS)$(PROG).png $(ICONDIR)32x32/apps/
149 cp $(ICONS)$(PROG)-mini.png $(ICONDIR)16x16/apps/$(PROG).png
150 cp $(ICONS)$(PROG)-large.png $(ICONDIR)64x64/apps/$(PROG).png
151 cp $(ICONS)$(PROG).desktop $(DESKTOPDIR)
153 @for f in $(LOCALE_MO); do \
154 lang=`echo $$f | sed -e 's/^locale\///;s/\.mo$$//'`; \
155 mkdir -p $(LOCALEDIR)$$lang/LC_MESSAGES; \
156 echo "cp $$f $(LOCALEDIR)$$lang/LC_MESSAGES/$(PROG).mo"; \
157 cp $$f $(LOCALEDIR)$$lang/LC_MESSAGES/$(PROG).mo; \
158 done
160 uninstall:
161 $(RM) $(BINDIR)$(GAME_PROG)
162 $(RM) $(DATADIR)$(PAKNAME)
163 $(RM) -r $(DOCDIR)
164 $(RM) $(ICONDIR)$(ICONS)$(PROG).png
165 $(RM) $(ICONDIR)16x16/apps/$(PROG).png
166 $(RM) $(ICONDIR)32x32/apps/$(PROG).png
167 $(RM) $(ICONDIR)64x64/apps/$(PROG).png
168 $(RM) $(DESKTOPDIR)$(PROG).desktop
170 @for f in $(LOCALE_MO); do \
171 lang=`echo $$f | sed -e 's/^locale\///;s/\.mo$$//'`; \
172 echo "$(RM) $(LOCALEDIR)$$lang/LC_MESSAGES/$(PROG).mo"; \
173 $(RM) $(LOCALEDIR)$$lang/LC_MESSAGES/$(PROG).mo; \
174 done