]> git.mxchange.org Git - quix0rs-blobwars.git/blob - Makefile
Prevent a segmentation fault when using the -map option without specifying a map.
[quix0rs-blobwars.git] / Makefile
1 PROG = blobwars
2 PAKNAME = blobwars.pak
3 DOCS = doc/*
4 ICONS = icons/
5 DATA = data gfx sound music
6
7 VERSION = 1.19
8 RELEASE ?= 0
9 USEPAK ?= 0
10
11 PREFIX ?= /usr
12 BINDIR ?= $(PREFIX)/games/
13 DATADIR ?= $(PREFIX)/share/games/blobwars/
14 DOCDIR ?= $(PREFIX)/share/doc/$(PROG)/
15 ICONDIR ?= $(PREFIX)/share/icons/hicolor/
16 DESKTOPDIR ?= $(PREFIX)/share/applications/
17 LOCALEDIR ?= $(PREFIX)/share/locale/
18 MEDAL_SERVER_HOST = www.parallelrealities.co.uk
19 MEDAL_SERVER_PORT = 80
20
21 CXXFLAGS += -std=c++11
22 CXXFLAGS += `pkg-config --cflags sdl2 SDL2_mixer SDL2_image SDL2_ttf SDL2_net` -DVERSION=$(VERSION) -DRELEASE=$(RELEASE) -DUSEPAK=$(USEPAK)
23 CXXFLAGS += -DPAKNAME=\"$(PAKNAME)\" -DPAKLOCATION=\"$(DATADIR)\" -DUNIX -DGAMEPLAYMANUAL=\"$(DOCDIR)index.html\" -Wall
24 CXXFLAGS += -DLOCALEDIR=\"$(LOCALEDIR)\" -DMEDAL_SERVER_HOST=\"$(MEDAL_SERVER_HOST)\" -DMEDAL_SERVER_PORT=$(MEDAL_SERVER_PORT)
25 CXXFLAGS += $(CFLAGS) -Werror
26 LIBS = `pkg-config --libs sdl2 SDL2_mixer SDL2_image SDL2_ttf SDL2_net` -lz
27 PAKLIBS = -lz
28
29 OBJS += CAudio.o
30 OBJS += CBoss.o
31 OBJS += CCollision.o CCutscene.o  CConfig.o
32 OBJS += CData.o 
33 OBJS += CEffect.o CEngine.o CEntity.o 
34 OBJS += CFileData.o 
35 OBJS += CGame.o CGameData.o CGameObject.o CGraphics.o
36 OBJS += CHub.o 
37 OBJS += CKeyboard.o 
38 OBJS += CJoystick.o 
39 OBJS += CLineDef.o
40 OBJS += CList.o
41 OBJS += CMap.o CMath.o CMedalServer.o
42 OBJS += CObjective.o
43 OBJS += CPak.o CParticle.o CPersistant.o CPersistData.o
44 OBJS += CRadarBlip.o CReplayData.o
45 OBJS += CSpawnPoint.o CSprite.o CSwitch.o
46 OBJS += CTeleporter.o CTrain.o CTrap.o
47 OBJS += CWeapon.o CWidget.o
48
49 OBJS += aquaBoss.o
50 OBJS += bosses.o bullets.o 
51 OBJS += cutscene.o
52 OBJS += droidBoss.o 
53 OBJS += effects.o enemies.o entities.o explosions.o 
54 OBJS += finalBattle.o 
55 OBJS += galdov.o game.o graphics.o 
56 OBJS += hub.o 
57 OBJS += info.o init.o intro.o items.o 
58 OBJS += lineDefs.o loadSave.o
59 OBJS += map.o mapData.o mias.o mission.o
60 OBJS += objectives.o obstacles.o options.o
61 OBJS += particles.o player.o 
62 OBJS += resources.o 
63 OBJS += spawnPoints.o switches.o 
64 OBJS += tankBoss.o teleporters.o title.o trains.o traps.o triggers.o 
65 OBJS += weapons.o widgets.o
66
67 GAMEOBJS = $(OBJS) main.o
68 MAPOBJS = $(OBJS) mapEditor.o
69 PAKOBJS = CFileData.o pak.o
70
71 LOCALE_MO = $(patsubst %.po,%.mo,$(wildcard locale/*.po))
72
73 ALL = $(PROG) $(LOCALE_MO)
74 ifeq ($(USEPAK), 1)
75         ALL += $(PAKNAME)
76 endif
77
78 # top-level rule to create the program.
79 all: $(ALL)
80
81 # compiling other source files.
82 %.o: src/%.cpp src/%.h src/defs.h src/defines.h src/headers.h
83         $(CXX) $(CXXFLAGS) -c $<
84
85 # linking the program.
86 $(PROG): $(GAMEOBJS)
87         $(CXX) $(LDFLAGS) $(GAMEOBJS) -o $(PROG) $(LIBS)
88         
89 pak: $(PAKOBJS)
90         $(CXX) $(LDFLAGS) $(PAKOBJS) -o pak $(PAKLIBS)
91
92 %.mo: %.po
93         msgfmt -c -o $@ $<
94
95 mapeditor: $(MAPOBJS)
96         $(CXX) $(LDFLAGS) $(MAPOBJS) -o mapeditor $(LIBS)
97
98 # cleaning everything that can be automatically recreated with "make".
99 clean:
100         $(RM) $(GAMEOBJS) mapEditor.o pak.o $(PROG) $(PAKNAME) pak mapeditor $(LOCALE_MO)
101         
102 $(PAKNAME): pak
103         ./pak $(DATA) $(PAKNAME)
104
105 buildpak: $(PAKNAME)
106
107 # install
108 install: $(ALL)
109         mkdir -p $(DESTDIR)$(BINDIR)
110         mkdir -p $(DESTDIR)$(DATADIR)
111         mkdir -p $(DESTDIR)$(DOCDIR)
112         mkdir -p $(DESTDIR)$(ICONDIR)16x16/apps
113         mkdir -p $(DESTDIR)$(ICONDIR)32x32/apps
114         mkdir -p $(DESTDIR)$(ICONDIR)48x48/apps
115         mkdir -p $(DESTDIR)$(ICONDIR)64x64/apps
116         mkdir -p $(DESTDIR)$(DESKTOPDIR)
117
118         install -m 755 $(PROG) $(DESTDIR)$(BINDIR)$(PROG)
119 ifeq ($(USEPAK), 1)
120         install -m 644 $(PAKNAME) $(DESTDIR)$(DATADIR)$(PAKNAME)
121 else
122         cp -pr $(DATA) $(DESTDIR)$(DATADIR)
123 endif
124         cp -p $(DOCS) $(DESTDIR)$(DOCDIR)
125         cp -p $(ICONS)$(PROG)16x16.png $(DESTDIR)$(ICONDIR)16x16/apps/$(PROG).png
126         cp -p $(ICONS)$(PROG)32x32.png $(DESTDIR)$(ICONDIR)32x32/apps/$(PROG).png
127         cp -p $(ICONS)$(PROG)48x48.png $(DESTDIR)$(ICONDIR)48x48/apps/$(PROG).png
128         cp -p $(ICONS)$(PROG)64x64.png $(DESTDIR)$(ICONDIR)64x64/apps/$(PROG).png
129         cp -p $(ICONS)$(PROG).desktop $(DESTDIR)$(DESKTOPDIR)
130
131         @for f in $(LOCALE_MO); do \
132                 lang=`echo $$f | sed -e 's/^locale\///;s/\.mo$$//'`; \
133                 mkdir -p $(DESTDIR)$(LOCALEDIR)$$lang/LC_MESSAGES; \
134                 echo "cp $$f $(DESTDIR)$(LOCALEDIR)$$lang/LC_MESSAGES/$(PROG).mo"; \
135                 cp $$f $(DESTDIR)$(LOCALEDIR)$$lang/LC_MESSAGES/$(PROG).mo; \
136         done
137
138 uninstall:
139         $(RM) $(BINDIR)$(PROG)
140         $(RM) $(DATADIR)$(PAKNAME)
141         $(RM) -r $(DOCDIR)
142         $(RM) $(ICONDIR)$(ICONS)$(PROG).png
143         $(RM) $(ICONDIR)16x16/apps/$(PROG).png
144         $(RM) $(ICONDIR)32x32/apps/$(PROG).png
145         $(RM) $(ICONDIR)64x64/apps/$(PROG).png
146         $(RM) $(DESKTOPDIR)$(PROG).desktop
147
148         @for f in $(LOCALE_MO); do \
149                 lang=`echo $$f | sed -e 's/^locale\///;s/\.mo$$//'`; \
150                 echo "$(RM) $(LOCALEDIR)$$lang/LC_MESSAGES/$(PROG).mo"; \
151                 $(RM) $(LOCALEDIR)$$lang/LC_MESSAGES/$(PROG).mo; \
152         done
153
154 .PHONY: all install uninstall clean buildpak