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