]> git.jsancho.org Git - lugaru.git/blob - makefile
Link against non-SSE2 libGLU.
[lugaru.git] / makefile
1
2 macosx := false
3 use_devil := false
4 use_fmod := false
5
6 BINDIR := bin
7 RUNDIR := run
8 SRCDIR := Source
9 SDLDIR := SDL12
10 LIBPNGDIR := libpng-1.2.8
11 JPEGLIBDIR := jpeg-6b
12 ZLIBDIR := zlib-1.2.3
13 OPENALDIR := OpenAL
14 LIBOGGDIR := libogg-1.0
15 LIBVORBISDIR := libvorbis-1.0.1
16
17 EXE := $(RUNDIR)/lugaru-bin
18
19 CXX := ccache g++
20 CC := ccache gcc
21 #CXX := g++
22 #CC := gcc
23 LD := g++
24
25 #OPT := -O0
26 OPT := -O3 -fno-strict-aliasing -falign-loops=16 -fno-math-errno
27 #OPT := -Os -fno-strict-aliasing
28
29 # always use this on the Mac, even in debug builds, since we aren't building
30 #  a dylib at this point.
31 ifeq ($(strip $(macosx)),true)
32   OPT += -mdynamic-no-pic
33 endif
34
35 DEFINES := \
36         -DPLATFORM_UNIX=1 \
37         -DPLATFORM_LINUX=1 \
38         -DUSE_SDL=1 \
39         -DTRUE=1 \
40         -DFALSE=0 \
41         -Dstricmp=strcasecmp \
42
43 INCLUDES := \
44                         -I$(SRCDIR) \
45                         -I$(SDLDIR)/include \
46                         -I./OpenGL/ \
47                         -I./OpenGL/GL \
48
49 ifeq ($(strip $(use_devil)),true)
50     DEFINES += -DUSE_DEVIL=1
51     INCLUDES += -I$(SRCDIR)/devil/include
52 else
53     DEFINES += -DZ_PREFIX=1
54     INCLUDES += -I$(ZLIBDIR) -I$(LIBPNGDIR) -I$(JPEGLIBDIR)
55 endif
56
57 ifeq ($(strip $(use_fmod)),false)
58     DEFINES += -DUSE_OPENAL=1
59     INCLUDES += -I$(OPENALDIR)/include -I$(LIBOGGDIR)/include -I$(LIBVORBISDIR)/include
60 endif
61
62
63 CFLAGS := -g -c $(OPT) $(INCLUDES) $(DEFINES) -fsigned-char -pipe
64 CFLAGS += -w
65
66 ifeq ($(strip $(macosx)),true)
67   CFLAGS += -fpascal-strings -faltivec -fasm -force_cpusubtype_ALL -Wno-long-double -mdynamic-no-pic
68   CFLAGS += -DPLATFORM_BIGENDIAN=1 -DMACOSX=1 -DPLATFORM_MACOSX=1
69   LDFLAGS := -framework Cocoa -framework OpenGL -framework IOKit -framework CoreFoundation -framework Carbon
70   APPLDFLAGS := $(SDLDIR)/lib/libSDL-1.2.0.dylib $(SDLDIR)/lib/libSDLmain-osx.a
71 else
72   CFLAGS += -DPLATFORM_LINUX=1
73   LDFLAGS := ./libSDL-1.2.so.0
74   POSTLDFLAGS := ./libGLU.a
75
76   ifeq ($(strip $(use_devil)),true)
77     LDFLAGS += ./libIL.so.1 ./libILU.so.1 ./libILUT.so.1
78   endif
79
80   ifeq ($(strip $(use_fmod)),true)
81     POSTLDFLAGS += -lpthread ./libfmod-linux-x86.a
82   else
83     LDFLAGS += ./openal.so
84   endif
85 endif
86
87 CXXFLAGS := $(CFLAGS)
88
89 SRCS := \
90         Frustum.cpp \
91         GameDraw.cpp \
92         GameInitDispose.cpp \
93         GameTick.cpp \
94         Globals.cpp \
95         Lights.cpp \
96         Models.cpp \
97         Objects.cpp \
98         pack.c \
99         pack_private.c \
100         Person.cpp \
101         private.c \
102         Quaternions.cpp \
103         Random.c \
104         Skeleton.cpp \
105         Skybox.cpp \
106         Sprites.cpp \
107         Terrain.cpp \
108         Text.cpp \
109         TGALoader.cpp \
110         unpack.c \
111         unpack_private.c \
112         Weapons.cpp \
113         MacCompatibility.cpp \
114         logger/logger.cpp \
115         WinInput.cpp \
116         OpenGL_Windows.cpp \
117         openal_wrapper.cpp \
118
119 SRCS := $(foreach f,$(SRCS),$(SRCDIR)/$(f))
120
121
122 UNUSED_SRCS := \
123         DRIVER.CC \
124         MD5.CC \
125
126
127 PNGSRCS := \
128     png.c \
129     pngerror.c \
130     pnggccrd.c \
131     pngget.c \
132     pngmem.c \
133     pngpread.c \
134     pngread.c \
135     pngrio.c \
136     pngrtran.c \
137     pngrutil.c \
138     pngset.c \
139     pngtrans.c \
140     pngvcrd.c \
141     pngwio.c \
142     pngwrite.c \
143     pngwtran.c \
144     pngwutil.c \
145
146 PNGSRCS := $(foreach f,$(PNGSRCS),$(LIBPNGDIR)/$(f))
147
148 JPEGSRCS := \
149         jdapistd.c \
150     jdmaster.c \
151     jdapimin.c \
152     jcapimin.c \
153     jdmerge.c \
154     jdatasrc.c \
155     jdatadst.c \
156     jdcoefct.c \
157     jdcolor.c \
158     jddctmgr.c \
159     jdhuff.c \
160     jdinput.c \
161     jdmainct.c \
162     jdmarker.c \
163     jdphuff.c \
164     jdpostct.c \
165     jdsample.c \
166     jdtrans.c \
167     jerror.c \
168     jidctflt.c \
169     jidctfst.c \
170     jidctint.c \
171     jidctred.c \
172     jmemmgr.c \
173     jutils.c \
174     jmemnobs.c \
175     jquant1.c \
176     jquant2.c \
177     jcomapi.c \
178     jcmarker.c \
179     jcapistd.c \
180     jcparam.c \
181     jcinit.c \
182     jcdctmgr.c \
183     jccoefct.c \
184     jcmainct.c \
185     jfdctflt.c \
186     jfdctint.c \
187     jfdctfst.c \
188     jchuff.c \
189     jcphuff.c \
190     jcsample.c \
191     jcmaster.c \
192     jccolor.c \
193     jcprepct.c \
194
195 JPEGSRCS := $(foreach f,$(JPEGSRCS),$(JPEGLIBDIR)/$(f))
196
197
198 ZLIBSRCS = \
199         adler32.c \
200         compress.c \
201         crc32.c \
202         deflate.c \
203         gzio.c \
204         infback.c \
205         inffast.c \
206         inflate.c \
207         inftrees.c \
208         trees.c \
209         uncompr.c \
210         zutil.c \
211
212 ZLIBSRCS := $(foreach f,$(ZLIBSRCS),$(ZLIBDIR)/$(f))
213
214 OGGSRCS := \
215         bitwise.o \
216         framing.o
217
218 OGGSRCS := $(foreach f,$(OGGSRCS),$(LIBOGGDIR)/src/$(f))
219
220 VORBISSRCS := \
221         analysis.o \
222     bitrate.o \
223     block.o \
224     codebook.o \
225     envelope.o \
226     floor0.o \
227     floor1.o \
228     info.o \
229     lpc.o \
230     lsp.o \
231     mapping0.o \
232     mdct.o \
233     psy.o \
234     registry.o \
235     res0.o \
236     sharedbook.o \
237     smallft.o \
238     synthesis.o \
239     vorbisfile.o \
240     window.o
241
242 VORBISSRCS := $(foreach f,$(VORBISSRCS),$(LIBVORBISDIR)/lib/$(f))
243
244
245 ifeq ($(strip $(use_devil)),false)
246     SRCS += $(PNGSRCS) $(JPEGSRCS) $(ZLIBSRCS)
247 endif
248
249 ifeq ($(strip $(use_fmod)),false)
250     SRCS += $(OGGSRCS) $(VORBISSRCS)
251 endif
252
253 OBJS := $(SRCS:.CC=.o)
254 OBJS := $(OBJS:.cc=.o)
255 OBJS := $(OBJS:.cpp=.o)
256 OBJS := $(OBJS:.c=.o)
257 OBJS := $(OBJS:.m=.o)
258 OBJS := $(foreach f,$(OBJS),$(BINDIR)/$(f))
259
260
261 .PHONY: clean all
262
263 all : $(EXE)
264
265 $(BINDIR)/%.o : %.cpp
266         $(CXX) -o $@ $(CXXFLAGS) $<
267
268 $(BINDIR)/%.o : %.CC
269         $(CXX) -x c++ -o $@ $(CXXFLAGS) $<
270
271 $(BINDIR)/%.o : %.cc
272         $(CXX) -o $@ $(CXXFLAGS) $<
273
274 $(BINDIR)/%.o : %.m
275         $(CC) -o $@ $(CFLAGS) $<
276
277 $(BINDIR)/%.o : %.c
278         $(CC) -o $@ $(CFLAGS) $<
279
280 $(EXE) : $(OBJS) $(APPOBJS)
281 ifeq ($(strip $(macosx)),true)
282         ranlib $(SDLDIR)/lib/libSDLmain-osx.a
283         ranlib $(FREETYPEDIR)/lib/libfreetype-osx.a
284 endif
285         $(LD) -o $@ $(APPLDFLAGS) $(LDFLAGS) $(OBJS) $(APPOBJS) $(POSTLDFLAGS)
286
287 clean:
288         rm -f $(BINDIR)/*.o
289         rm -f $(BINDIR)/$(SRCDIR)/*.o
290         rm -f $(BINDIR)/$(SRCDIR)/logger/*.o
291         rm -f $(BINDIR)/$(LIBPNGDIR)/*.o
292         rm -f $(BINDIR)/$(JPEGLIBDIR)/*.o
293         rm -f $(BINDIR)/$(ZLIBDIR)/*.o
294         rm -f $(BINDIR)/$(LIBOGGDIR)/src/*.o
295         rm -f $(BINDIR)/$(LIBVORBISDIR)/lib/*.o
296         rm -f $(EXE)
297
298 # end of makefile ...
299