update
[supertux.git] / Makefile
1 # Makefile for supertux
2
3 # by Bill Kendrick & Tobias Glaesser
4 # bill@newbreedsoftware.com
5 # tobi.web@gmx.de
6 # http://www.newbreedsoftware.com/
7
8 # Version 0.0.6 (in development)
9
10 # April 11, 2000 - December 29, 2000
11
12
13 # User-definable stuff:
14
15 ifeq ($(PREFIX),)
16 ifeq ($(USERNAME),root)
17 PREFIX=/usr/local
18 else
19 PREFIX=$(PWD)
20 endif
21 DATA_PREFIX=$(PWD)/data/
22 else
23 DATA_PREFIX=$(PREFIX)/share/games/supertux/data/
24 endif
25 JOY=YES
26
27
28 #undefine this for non debugging compilation
29
30 DEBUG_FLAG=-DDEBUG -pg
31
32 # Defaults for Linux:
33
34 TARGET=supertux
35 TARGET_DEF=LINUX
36
37 CFLAGS=-Wall -O2 $(SDL_CFLAGS) -DDATA_PREFIX=\"$(DATA_PREFIX)\" \
38         -D$(NOSOUNDFLAG) -D$(NOOPENGLFLAG) -D$(TARGET_DEF) -DJOY_$(JOY) $(DEBUG_FLAG)
39
40
41 # Other definitions:
42
43 SDL_MIXER=-lSDL_mixer
44 SDL_IMAGE=-lSDL_image
45 NOSOUNDFLAG=__SOUND
46 NOOPENGLFLAG=__OPENGL
47 SDL_LIB=$(SDL_MIXER) $(SDL_IMAGE) $(SDL_LDFLAGS) 
48 SDL_CFLAGS := $(shell sdl-config --cflags)
49 SDL_LDFLAGS := $(shell sdl-config --libs)
50 GL_LIB =  -L/usr/X11R6/lib -lGL
51 installbin = install -g $(USERNAME) -o $(USERNAME) -m 755 
52 installdat = install -g $(USERNAME) -o $(USERNAME) -m 644
53
54
55 OBJECTS=obj/supertux.o obj/setup.o obj/intro.o obj/title.o obj/scene.o obj/collision.o obj/bitmask.o obj/type.o \
56         obj/timer.o obj/text.o obj/texture.o obj/badguy.o obj/special.o  obj/world.o obj/player.o obj/level.o obj/gameloop.o \
57         obj/screen.o obj/sound.o obj/high_scores.o obj/menu.o obj/leveleditor.o
58
59 # Make commands:
60
61 all:    $(TARGET)
62
63 install: $(TARGET)
64         mkdir -p $(PREFIX)/games/$(TARGET)
65         mkdir -p $(PREFIX)/share/games/$(TARGET)
66         mkdir -p $(PREFIX)/bin/
67         cp -r data $(PREFIX)/share/games/$(TARGET)/
68         chmod -R 0755 $(PREFIX)/share/games/$(TARGET)/data/
69         -$(installbin) $(TARGET) $(PREFIX)/games/$(TARGET)/$(TARGET)
70         ln -sf $(PREFIX)/games/$(TARGET)/$(TARGET) $(PREFIX)/bin/$(TARGET)
71
72 uninstall:
73         rm -r $(PREFIX)/games/$(TARGET)
74         rm -r $(PREFIX)/share/games/$(TARGET)
75         rm $(PREFIX)/bin/$(TARGET)
76
77 nosound:
78         make supertux SDL_MIXER= NOSOUNDFLAG=NOSOUND
79
80 noopengl:
81         make supertux GL_LIB= NOOPENGLFLAG=NOOPENGL
82         
83 nosoundopengl:
84         make supertux GL_LIB= SDL_MIXER= NOSOUNDFLAG=NOSOUND NOOPENGLFLAG=NOOPENGL
85         
86 win32:
87         make TARGET_DEF=WIN32 TARGET=supertux.exe \
88                 DATA_PREFIX=data/
89         cp /usr/local/cross-tools/i386-mingw32/lib/SDL*.dll .
90         chmod 644 SDL*.dll
91
92 clean:
93         -rm -f supertux supertux.exe
94         -rm -f obj/*.o
95         -rm -f SDL*.dll
96
97
98 # Main executable:
99
100 $(TARGET):      $(OBJECTS)
101         $(CC) $(CFLAGS) $(OBJECTS) -o $(TARGET) $(SDL_LIB)  $(GL_LIB)
102
103 # Objects:
104
105 obj/supertux.o: src/supertux.c src/supertux.h src/defines.h src/globals.h \
106                 obj/setup.o obj/intro.o obj/title.o obj/gameloop.o \
107                 obj/screen.o obj/sound.o obj/leveleditor.o
108         $(CC) $(CFLAGS) src/supertux.c -c -o obj/supertux.o
109
110 obj/setup.o:    src/setup.c src/setup.h obj/sound.o \
111                 src/defines.h src/globals.h obj/screen.o
112         $(CC) $(CFLAGS) src/setup.c -c -o obj/setup.o
113
114 obj/intro.o:    src/intro.c src/intro.h \
115                 src/defines.h src/globals.h src/screen.h
116         $(CC) $(CFLAGS) src/intro.c -c -o obj/intro.o
117
118 obj/title.o:    src/title.c src/title.h \
119                 src/defines.h src/globals.h src/screen.h
120         $(CC) $(CFLAGS) src/title.c -c -o obj/title.o
121
122 obj/level.o:    src/level.c src/defines.h src/globals.h \
123                         src/level.h src/gameloop.h src/screen.h src/badguy.h
124         $(CC) $(CFLAGS) src/level.c -c -o obj/level.o
125
126 obj/scene.o:    src/scene.c src/scene.h \
127                 src/defines.h src/globals.h src/screen.h src/scene.h src/gameloop.h obj/sound.o \
128                 src/setup.h obj/level.o
129         $(CC) $(CFLAGS) src/scene.c -c -o obj/scene.o
130         
131 obj/collision.o:        src/collision.c src/collision.h \
132                 src/defines.h src/globals.h src/screen.h src/scene.h src/gameloop.h obj/sound.o \
133                 src/setup.h obj/level.o
134         $(CC) $(CFLAGS) src/collision.c -c -o obj/collision.o
135         
136 obj/bitmask.o:  src/bitmask.c src/bitmask.h \
137                 src/defines.h src/globals.h src/screen.h src/scene.h src/gameloop.h obj/sound.o \
138                 src/setup.h obj/level.o
139         $(CC) $(CFLAGS) src/bitmask.c -c -o obj/bitmask.o
140                 
141 obj/type.o:     src/type.c src/type.h \
142                 src/defines.h src/globals.h src/screen.h src/scene.h src/gameloop.h obj/sound.o \
143                 src/setup.h obj/level.o
144         $(CC) $(CFLAGS) src/type.c -c -o obj/type.o
145         
146 obj/timer.o:    src/timer.c src/timer.h \
147                 src/defines.h src/globals.h src/screen.h src/scene.h src/gameloop.h obj/sound.o \
148                 src/setup.h obj/level.o
149         $(CC) $(CFLAGS) src/timer.c -c -o obj/timer.o
150         
151 obj/texture.o:  src/texture.c src/texture.h \
152                 src/defines.h src/globals.h src/screen.h src/scene.h src/gameloop.h obj/sound.o \
153                 src/setup.h obj/level.o
154         $(CC) $(CFLAGS) src/texture.c -c -o obj/texture.o
155
156 obj/text.o:     src/text.c src/text.h \
157                 src/defines.h src/globals.h src/screen.h src/scene.h src/gameloop.h obj/sound.o \
158                 src/setup.h obj/level.o
159         $(CC) $(CFLAGS) src/text.c -c -o obj/text.o
160         
161 obj/badguy.o:   src/badguy.c src/badguy.h \
162                 src/defines.h src/globals.h src/screen.h src/gameloop.h obj/sound.o \
163                 src/setup.h obj/level.o
164         $(CC) $(CFLAGS) src/badguy.c -c -o obj/badguy.o
165
166 obj/special.o:  src/special.c src/special.h \
167                 src/defines.h src/globals.h src/screen.h src/gameloop.h obj/sound.o \
168                 src/setup.h obj/level.o
169         $(CC) $(CFLAGS) src/special.c -c -o obj/special.o
170
171 obj/world.o:    src/world.c src/world.h \
172                 src/defines.h src/globals.h src/screen.h src/gameloop.h obj/sound.o \
173                 src/setup.h obj/level.o
174         $(CC) $(CFLAGS) src/world.c -c -o obj/world.o
175                 
176 obj/player.o:   src/player.c src/player.h \
177                 src/defines.h src/globals.h src/screen.h src/gameloop.h obj/sound.o \
178                 src/setup.h obj/level.o
179         $(CC) $(CFLAGS) src/player.c -c -o obj/player.o
180         
181 obj/gameloop.o: src/gameloop.c src/gameloop.h \
182                 src/defines.h src/globals.h src/screen.h obj/sound.o \
183                 src/setup.h obj/level.o obj/player.o
184         $(CC) $(CFLAGS) src/gameloop.c -c -o obj/gameloop.o
185
186 obj/screen.o:   src/screen.c src/defines.h src/globals.h src/screen.h
187         $(CC) $(CFLAGS) src/screen.c -c -o obj/screen.o
188
189 obj/sound.o:    src/sound.c src/defines.h src/globals.h src/sound.h
190         $(CC) $(CFLAGS) src/sound.c -c -o obj/sound.o
191
192 obj/high_scores.o:      src/high_scores.c src/defines.h src/globals.h \
193                                 obj/sound.o
194         $(CC) $(CFLAGS) src/high_scores.c -c -o obj/high_scores.o
195
196 obj/menu.o:     src/menu.c src/defines.h src/globals.h \
197                         obj/sound.o src/menu.h src/leveleditor.h
198         $(CC) $(CFLAGS) src/menu.c -c -o obj/menu.o
199
200 obj/leveleditor.o:      src/leveleditor.c src/defines.h src/globals.h \
201                         src/leveleditor.h src/gameloop.h src/screen.h src/badguy.h
202         $(CC) $(CFLAGS) src/leveleditor.c -c -o obj/leveleditor.o