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 DEBUG_LIB= #-lefence
48 SDL_LIB=$(SDL_MIXER) $(SDL_IMAGE) $(SDL_LDFLAGS) 
49 SDL_CFLAGS := $(shell sdl-config --cflags)
50 SDL_LDFLAGS := $(shell sdl-config --libs)
51 GL_LIB =  -L/usr/X11R6/lib -lGL
52 installbin = install -g $(USERNAME) -o $(USERNAME) -m 755 
53 installdat = install -g $(USERNAME) -o $(USERNAME) -m 644
54 CC = gcc
55
56 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 \
57         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 \
58         obj/screen.o obj/sound.o obj/high_scores.o obj/menu.o obj/leveleditor.o obj/globals.o obj/button.o obj/physic.o
59
60 # Make commands:
61
62 all:    $(TARGET)
63
64 install: $(TARGET)
65         mkdir -p $(PREFIX)/games/$(TARGET)
66         mkdir -p $(PREFIX)/share/games/$(TARGET)
67         mkdir -p $(PREFIX)/bin/
68         cp -r data $(PREFIX)/share/games/$(TARGET)/
69         chmod -R 0755 $(PREFIX)/share/games/$(TARGET)/data/
70         -$(installbin) $(TARGET) $(PREFIX)/games/$(TARGET)/$(TARGET)
71         ln -sf $(PREFIX)/games/$(TARGET)/$(TARGET) $(PREFIX)/bin/$(TARGET)
72
73 uninstall:
74         rm -r $(PREFIX)/games/$(TARGET)
75         rm -r $(PREFIX)/share/games/$(TARGET)
76         rm $(PREFIX)/bin/$(TARGET)
77
78 nosound:
79         make supertux SDL_MIXER= NOSOUNDFLAG=NOSOUND
80
81 noopengl:
82         make supertux GL_LIB= NOOPENGLFLAG=NOOPENGL
83         
84 nosoundopengl:
85         make supertux GL_LIB= SDL_MIXER= NOSOUNDFLAG=NOSOUND NOOPENGLFLAG=NOOPENGL
86         
87 win32:
88         make TARGET_DEF=WIN32 TARGET=supertux.exe \
89                 DATA_PREFIX=data/
90         cp /usr/local/cross-tools/i386-mingw32/lib/SDL*.dll .
91         chmod 644 SDL*.dll
92
93 clean:
94         -rm -f supertux supertux.exe
95         -rm -f obj/*.o
96         -rm -f SDL*.dll
97
98
99 # Main executable:
100
101 $(TARGET):      $(OBJECTS)
102         $(CC) $(CFLAGS) $(OBJECTS) -o $(TARGET) $(SDL_LIB)  $(GL_LIB) $(DEBUG_LIB)
103
104 # Objects:
105
106 obj/supertux.o: src/supertux.c
107         $(CC) $(CFLAGS) src/supertux.c -c -o obj/supertux.o
108
109 obj/setup.o:    src/setup.c
110         $(CC) $(CFLAGS) src/setup.c -c -o obj/setup.o
111
112 obj/intro.o:    src/intro.c
113         $(CC) $(CFLAGS) src/intro.c -c -o obj/intro.o
114
115 obj/title.o:    src/title.c
116         $(CC) $(CFLAGS) src/title.c -c -o obj/title.o
117
118 obj/level.o:    src/level.c
119         $(CC) $(CFLAGS) src/level.c -c -o obj/level.o
120
121 obj/scene.o:    src/scene.c
122         $(CC) $(CFLAGS) src/scene.c -c -o obj/scene.o
123         
124 obj/collision.o:        src/collision.c
125         $(CC) $(CFLAGS) src/collision.c -c -o obj/collision.o
126         
127 obj/bitmask.o:  src/bitmask.c
128         $(CC) $(CFLAGS) src/bitmask.c -c -o obj/bitmask.o
129                 
130 obj/type.o:     src/type.c
131         $(CC) $(CFLAGS) src/type.c -c -o obj/type.o
132         
133 obj/timer.o:    src/timer.c
134         $(CC) $(CFLAGS) src/timer.c -c -o obj/timer.o
135         
136 obj/texture.o:  src/texture.c
137         $(CC) $(CFLAGS) src/texture.c -c -o obj/texture.o
138
139 obj/text.o:     src/text.c
140         $(CC) $(CFLAGS) src/text.c -c -o obj/text.o
141         
142 obj/badguy.o:   src/badguy.c
143         $(CC) $(CFLAGS) src/badguy.c -c -o obj/badguy.o
144
145 obj/special.o:  src/special.c
146         $(CC) $(CFLAGS) src/special.c -c -o obj/special.o
147
148 obj/world.o:    src/world.c
149         $(CC) $(CFLAGS) src/world.c -c -o obj/world.o
150                 
151 obj/player.o:   src/player.c
152         $(CC) $(CFLAGS) src/player.c -c -o obj/player.o
153         
154 obj/gameloop.o: src/gameloop.c
155         $(CC) $(CFLAGS) src/gameloop.c -c -o obj/gameloop.o
156
157 obj/screen.o:   src/screen.c
158         $(CC) $(CFLAGS) src/screen.c -c -o obj/screen.o
159
160 obj/sound.o:    src/sound.c
161         $(CC) $(CFLAGS) src/sound.c -c -o obj/sound.o
162
163 obj/high_scores.o:   src/high_scores.c
164         $(CC) $(CFLAGS) src/high_scores.c -c -o obj/high_scores.o
165
166 obj/menu.o:     src/menu.c
167         $(CC) $(CFLAGS) src/menu.c -c -o obj/menu.o
168
169 obj/leveleditor.o:      src/leveleditor.c
170         $(CC) $(CFLAGS) src/leveleditor.c -c -o obj/leveleditor.o
171
172 obj/globals.o:  src/globals.c
173         $(CC) $(CFLAGS) src/globals.c -c -o obj/globals.o
174         
175 obj/button.o:   src/button.c
176         $(CC) $(CFLAGS) src/button.c -c -o obj/button.o
177
178 obj/physic.o:   src/physic.c
179         $(CC) $(CFLAGS) src/physic.c -c -o obj/physic.o