Applied my "bidirectional dt scaling" patch. Accordingly, the game can
[neverball] / Makefile
1
2 #-------------------------------------------------------------------------------
3
4 #VERSION=1.5.0
5 VERSION= $(shell sh scripts/version.sh)
6
7 ifeq ($(VERSION),)
8     $(error Failed to obtain version for this build)
9 endif
10
11 #------------------------------------------------------------------------------
12
13 # Maybe you need one of these.  Maybe you don't.
14
15 #X11_PATH= -L/usr/X11/lib
16 #X11_PATH= -L/usr/X11R6/lib
17
18 OGL_LIBS= -lGL -lm
19 #OGL_LIBS= -lm                                                # Think Different
20
21 CFLAGS += -Wall -g -O3 -ansi -pedantic
22 #CFLAGS += -Wall -g -O1 -ansi -pedantic
23 #CFLAGS += -Wall -pg -ansi
24
25 CPPFLAGS += $(shell sdl-config --cflags) -DVERSION=\"$(VERSION)\" -Ishare
26
27 SDL_LIBS= $(shell sdl-config --libs)
28 PNG_LIBS= $(shell libpng-config --libs)
29
30 MAPC_TARG= mapc$(EXT)
31 BALL_TARG= neverball$(EXT)
32 PUTT_TARG= neverputt$(EXT)
33
34 LOCALEDIR= locale
35 LOCALEDOM= neverball
36
37 POTFILE= po/neverball.pot
38
39 #-------------------------------------------------------------------------------
40
41 MAPC_OBJS= \
42         share/vec3.o   \
43         share/base_image.o  \
44         share/solid.o  \
45         share/binary.o \
46         share/base_config.o \
47         share/mapc.o
48 BALL_OBJS= \
49         share/i18n.o    \
50         share/st_resol.o \
51         share/vec3.o    \
52         share/base_image.o   \
53         share/image.o   \
54         share/solid.o   \
55         share/solid_gl.o\
56         share/part.o    \
57         share/back.o    \
58         share/geom.o    \
59         share/gui.o     \
60         share/base_config.o  \
61         share/config.o  \
62         share/binary.o  \
63         share/state.o   \
64         share/audio.o   \
65         ball/hud.o      \
66         ball/game.o     \
67         ball/level.o    \
68         ball/levels.o   \
69         ball/set.o      \
70         ball/demo.o     \
71         ball/util.o     \
72         ball/st_conf.o  \
73         ball/st_demo.o  \
74         ball/st_save.o  \
75         ball/st_play_end.o  \
76         ball/st_done.o  \
77         ball/st_level.o \
78         ball/st_over.o  \
79         ball/st_play.o  \
80         ball/st_set.o   \
81         ball/st_start.o \
82         ball/st_title.o \
83         ball/st_help.o  \
84         ball/st_name.o  \
85         ball/st_shared.o  \
86         ball/st_pause.o \
87         ball/main.o
88 PUTT_OBJS= \
89         share/i18n.o    \
90         share/st_resol.o \
91         share/vec3.o   \
92         share/base_image.o  \
93         share/image.o  \
94         share/solid.o  \
95         share/solid_gl.o  \
96         share/part.o   \
97         share/geom.o   \
98         share/back.o   \
99         share/base_config.o  \
100         share/config.o \
101         share/binary.o \
102         share/audio.o  \
103         share/state.o  \
104         share/gui.o    \
105         putt/hud.o     \
106         putt/game.o    \
107         putt/hole.o    \
108         putt/course.o  \
109         putt/st_all.o  \
110         putt/st_conf.o \
111         putt/main.o
112
113 BALL_DEPS= $(BALL_OBJS:.o=.d)
114 PUTT_DEPS= $(PUTT_OBJS:.o=.d)
115 MAPC_DEPS= $(MAPC_OBJS:.o=.d)
116
117 BASE_LIBS= $(SDL_LIBS) -lSDL_image
118 LIBS= $(X11_PATH) $(BASE_LIBS) $(PNG_LIBS) -lSDL_ttf -lSDL_mixer $(OGL_LIBS)
119
120 MESSAGEPART= /LC_MESSAGES/$(LOCALEDOM).mo
121 MESSAGES= $(LINGUAS:%=$(LOCALEDIR)/%$(MESSAGEPART))
122
123 MAPS= $(shell find data/ -name '*.map')
124 SOLS= $(MAPS:%.map=%.sol)
125
126 POS= $(shell echo po/*.po)
127 LINGUAS= $(POS:po/%.po=%)
128
129 #------------------------------------------------------------------------------
130 # Implicit rules
131 #------------------------------------------------------------------------------
132
133 %.d : %.c
134         $(CC) $(CFLAGS) $(CPPFLAGS) -MM -MF $@ -MT '$*.o $@' $<
135
136 %.o : %.c
137         $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
138
139 %.sol : %.map $(MAPC_TARG)
140         $(WINE) ./$(MAPC_TARG) $< data
141
142 $(LOCALEDIR)/%$(MESSAGEPART) : po/%.po
143         mkdir -p `dirname $@`
144         msgfmt -c -v -o $@ $<
145
146 #------------------------------------------------------------------------------
147 # Main rules
148 #------------------------------------------------------------------------------
149
150 all : $(BALL_TARG) $(PUTT_TARG) $(MAPC_TARG) sols locales
151
152 $(BALL_TARG) : $(BALL_OBJS)
153         $(CC) $(CFLAGS) -o $(BALL_TARG) $(BALL_OBJS) $(LDFLAGS) $(LIBS)
154
155 $(PUTT_TARG) : $(PUTT_OBJS)
156         $(CC) $(CFLAGS) -o $(PUTT_TARG) $(PUTT_OBJS) $(LDFLAGS) $(LIBS)
157
158 $(MAPC_TARG) : $(MAPC_OBJS)
159         $(CC) $(CFLAGS) -o $(MAPC_TARG) $(MAPC_OBJS) $(LDFLAGS) $(BASE_LIBS)
160
161 sols : $(SOLS)
162
163 locales : $(MESSAGES)
164
165 clean-src :
166         rm -f $(BALL_TARG) $(BALL_OBJS) $(BALL_DEPS)
167         rm -f $(PUTT_TARG) $(PUTT_OBJS) $(PUTT_DEPS)
168         rm -f $(MAPC_TARG) $(MAPC_OBJS) $(MAPC_DEPS)
169
170 clean : clean-src
171         rm -f $(SOLS)
172         rm -rf $(LOCALEDIR)
173
174 test : all
175         ./neverball
176
177 mingw-%:
178         $(MAKE) -f Makefile.mingw $*
179
180 #------------------------------------------------------------------------------
181 # PO update rules
182 #------------------------------------------------------------------------------
183
184 po/%.po : $(POTFILE)
185         msgmerge -U $@ $<
186         touch $@
187         
188 po-update-extract :
189         sh scripts/extractpo.sh $(POTFILE) $(LOCALEDOM)
190
191 po-update-merge : $(POS)
192
193 po-update : po-update-extract po-update-merge
194
195 #------------------------------------------------------------------------------
196
197 .PHONY : all sols locales clean-src clean test \
198         po-update-extract po-update-merge po-update \
199         tools
200
201 -include $(BALL_DEPS) $(PUTT_DEPS) $(MAPC_DEPS)