Remove references to obsolete misc lib
[blender.git] / source / Makefile
1 #
2 # $Id$
3 #
4 # ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
5 #
6 # This program is free software; you can redistribute it and/or
7 # modify it under the terms of the GNU General Public License
8 # as published by the Free Software Foundation; either version 2
9 # of the License, or (at your option) any later version. The Blender
10 # Foundation also sells licenses for use in proprietary software under
11 # the Blender License.  See http://www.blender.org/BL/ for information
12 # about this.
13 #
14 # This program is distributed in the hope that it will be useful,
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 # GNU General Public License for more details.
18 #
19 # You should have received a copy of the GNU General Public License
20 # along with this program; if not, write to the Free Software Foundation,
21 # Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22 #
23 # The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
24 # All rights reserved.
25 #
26 # The Original Code is: all of this file.
27 #
28 # Contributor(s): none yet.
29 #
30 # ***** END GPL/BL DUAL LICENSE BLOCK *****
31 #
32 # Top level makefile. Start looping through subdirs and link....
33 #
34
35 ifndef NANENV
36     export NANENV := $(shell env | grep NAN_)
37 endif
38
39 include nan_definitions.mk
40
41 DIRS = creator blender kernel gameengine
42
43 ifeq ($(OS),windows)
44     DIRS += icons
45 endif
46
47 ########## buildinfo kludge ###################
48 CPPFLAGS += -I../Physics/common
49 CPPFLAGS += -I../Physics/Dummy
50 ifdef NAN_BUILDINFO
51     BUILDINFO_O = $(DIR)/$(DEBUG_DIR)buildinfo.o
52     BUILDINFO_C = $(SRCHOME)/creator/buildinfo.c
53     BUILD_DATE := $(shell date "+%Y-%m-%d")
54     BUILD_TIME := $(shell date "+%H:%M:%S")
55 endif
56
57 ############# set pyplayerlib ##################
58
59 PYPLAYERLIB ?= $(PYLIB)
60
61 ############# libraries ##################
62 # COMLIB COMmon LIBraries for all targets
63 # BPLIB Browser Plugin LIBraries
64 # SPLIB1 Standalone Player LIBraries (pre COMLIB)
65 # SPLIB Standalone Player LIBraries (post COMLIB)
66 # PULIB PUblisher LIBraries
67 # GRPLIB Gui and Render LIBraries for Publisher
68 # LLIBS dynamic system libraries
69 # SADD Static OpenGL libraries
70 # DADD Dynamic OpenGL libraries
71 # NSPLUGLIB PLUGin LIBraries for ns-style api
72 # PLUGAPPLIB libs that form the application to be plugged in
73 # Note: the order is important here
74
75     GRPLIB = $(OCGDIR)/creator/$(DEBUG_DIR)libcreator.a
76     GRPLIB += $(OCGDIR)/blender/src/$(DEBUG_DIR)libsrcpublisher.a
77     GRPLIB += $(OCGDIR)/blender/radiosity/$(DEBUG_DIR)libradiosity.a
78     GRPLIB += $(NAN_DECIMATION)/lib/libdecimation.a
79     GRPLIB += $(NAN_BSP)/lib/$(DEBUG_DIR)libbsp.a
80     GRPLIB += $(NAN_GHOST)/lib/$(DEBUG_DIR)libghost.a
81     GRPLIB += $(NAN_STRING)/lib/$(DEBUG_DIR)libstring.a
82     GRPLIB += $(OCGDIR)/blender/img/$(DEBUG_DIR)libimg.a
83     GRPLIB += $(OCGDIR)/blender/renderconverter/$(DEBUG_DIR)librenderconverter.a
84     GRPLIB += $(OCGDIR)/blender/render/$(DEBUG_DIR)librender.a
85     GRPLIB += $(OCGDIR)/blender/bpython/$(DEBUG_DIR)libbpython.a
86     GRPLIB +=  $(OCGDIR)/blender/bpython/libfrozen.a
87
88 # nlin: the reason that some libraries appear more than once below is
89 # to handle circular dependencies in linking among libraries... some
90 # linkers (e.g. under Linux) need libs to be specified multiple times
91 # to properly resolve circular dependencies. ugly, but it works...
92 # the repeat entries could probably be trimmed down.
93     COMLIB = $(OCGDIR)/blender/blenkernel/$(DEBUG_DIR)libblenkernel.a
94     COMLIB += $(OCGDIR)/blender/blenloader/$(DEBUG_DIR)libblenloader.a
95     COMLIB += $(OCGDIR)/blender/blenpluginapi/$(DEBUG_DIR)libblenpluginapi.a
96     COMLIB += $(OCGDIR)/blender/imbuf/$(DEBUG_DIR)libimbuf.a
97     COMLIB += $(OCGDIR)/blender/blenlib/$(DEBUG_DIR)libblenlib.a
98     COMLIB += $(OCGDIR)/blender/avi/$(DEBUG_DIR)libavi.a
99     COMLIB += $(NAN_JPEG)/lib/libjpeg.a
100     COMLIB += $(OCGDIR)/gameengine/bloutines/$(DEBUG_DIR)libbloutines.a
101     COMLIB += $(OCGDIR)/gameengine/blconverter/$(DEBUG_DIR)libblconverter.a
102     COMLIB += $(OCGDIR)/gameengine/blphys/common/$(DEBUG_DIR)libcommon.a
103 ifneq ($(OS),$(findstring $(OS), "irix"))
104     COMLIB += $(OCGDIR)/gameengine/blphys/blode/$(DEBUG_DIR)libblode.a
105     COMLIB += $(NAN_ODE)/lib/libode.a
106 endif
107 #    COMLIB += $(OCGDIR)/gameengine/blphys/sumo/$(DEBUG_DIR)libsumo.a
108     COMLIB += $(OCGDIR)/gameengine/blphys/dummy/$(DEBUG_DIR)libdummy.a
109     COMLIB += $(OCGDIR)/gameengine/blphys/common/$(DEBUG_DIR)libcommon.a
110 #    COMLIB += $(OCGDIR)/gameengine/blphys/sumo/$(DEBUG_DIR)libsumo.a
111     COMLIB += $(OCGDIR)/gameengine/blphys/dummy/$(DEBUG_DIR)libdummy.a
112     COMLIB += $(OCGDIR)/gameengine/ketsji/$(DEBUG_DIR)libketsji.a
113     COMLIB += $(OCGDIR)/gameengine/blphys/common/$(DEBUG_DIR)libcommon.a
114 ifneq ($(OS),$(findstring $(OS), "irix"))
115     COMLIB += $(OCGDIR)/gameengine/blphys/blode/$(DEBUG_DIR)libblode.a
116 endif
117 #    COMLIB += $(OCGDIR)/gameengine/blphys/sumo/$(DEBUG_DIR)libsumo.a
118     COMLIB += $(OCGDIR)/gameengine/blphys/dummy/$(DEBUG_DIR)libdummy.a
119     COMLIB += $(OCGDIR)/gameengine/blphys/common/$(DEBUG_DIR)libcommon.a
120 #    COMLIB += $(OCGDIR)/gameengine/blphys/sumo/$(DEBUG_DIR)libsumo.a
121     COMLIB += $(OCGDIR)/gameengine/blphys/dummy/$(DEBUG_DIR)libdummy.a
122     COMLIB += $(OCGDIR)/gameengine/ketsji/$(DEBUG_DIR)libketsji.a
123     COMLIB += $(OCGDIR)/gameengine/logic/$(DEBUG_DIR)liblogic.a
124     COMLIB += $(OCGDIR)/gameengine/rasterizer/$(DEBUG_DIR)librasterizer.a
125     COMLIB += $(OCGDIR)/gameengine/OpenGLrasterizer/$(DEBUG_DIR)libOpenGLrasterizer.a
126     COMLIB += $(OCGDIR)/gameengine/expression/$(DEBUG_DIR)libexpression.a
127     COMLIB += $(OCGDIR)/gameengine/scenegraph/$(DEBUG_DIR)libscenegraph.a
128 #    COMLIB += $(OCGDIR)/sumo/$(DEBUG_DIR)libfuzzics.a
129 #    COMLIB += $(OCGDIR)/sumo/$(DEBUG_DIR)libsolid.a
130     COMLIB += $(NAN_MOTO)/lib/libmoto.a
131     COMLIB += $(NAN_SND_LIBS)
132     COMLIB += $(OCGDIR)/kernel/gen_system/$(DEBUG_DIR)libgen_system.a
133     COMLIB += $(OCGDIR)/kernel/gen_messaging/$(DEBUG_DIR)libgen_messaging.a
134     COMLIB += $(OCGDIR)/gameengine/ketsji/KXNetwork/$(DEBUG_DIR)libKXNetwork.a
135     COMLIB += $(OCGDIR)/gameengine/Network/$(DEBUG_DIR)libNetwork.a
136     COMLIB += $(OCGDIR)/gameengine/Network/LoopBackNetwork/$(DEBUG_DIR)libLoopBackNetwork.a
137     COMLIB += $(NAN_GUARDEDALLOC)/lib/libguardedalloc.a
138     COMLIB += $(NAN_BMFONT)/lib/$(DEBUG_DIR)libbmfont.a
139     COMLIB += $(NAN_PNG)/lib/libpng.a
140
141     PULIB = $(NAN_IKSOLVER)/lib/libiksolver.a
142     PULIB += $(NAN_MOTO)/lib/libmoto.a
143     PULIB += $(OCGDIR)/blender/readblenfile/$(DEBUG_DIR)libreadblenfile.a
144     PULIB += $(OCGDIR)/blender/readstreamglue/$(DEBUG_DIR)libreadstreamglue.a
145     PULIB += $(OCGDIR)/blender/writestreamglue/$(DEBUG_DIR)libwritestreamglue.a
146     # toggle 2 writestreamglue libs for the Uber-Publisher :)
147     #PULIB += $(OCGDIR)/blender/writestreamglueSTUB/$(DEBUG_DIR)libwritestreamglueSTUB.a
148     PULIB += $(OCGDIR)/blender/inflate/$(DEBUG_DIR)libinflate.a
149     PULIB += $(OCGDIR)/blender/deflate/$(DEBUG_DIR)libdeflate.a
150     PULIB += $(OCGDIR)/blender/encrypt/$(DEBUG_DIR)libencrypt.a
151     PULIB += $(OCGDIR)/blender/decrypt/$(DEBUG_DIR)libdecrypt.a
152     PULIB += $(OCGDIR)/blender/sign/$(DEBUG_DIR)libsign.a
153     PULIB += $(OCGDIR)/blender/verify/$(DEBUG_DIR)libverify.a
154     PULIB += $(OCGDIR)/blender/writeblenfile/$(DEBUG_DIR)libwriteblenfile.a
155     PULIB += $(OCGDIR)/blender/writestreamglue/$(DEBUG_DIR)libwritestreamglue.a
156     # toggle 2 writestreamglue libs for the Uber-Publisher :)
157     #PULIB += $(OCGDIR)/blender/writestreamglueSTUB/$(DEBUG_DIR)libwritestreamglueSTUB.a
158     PULIB += $(OCGDIR)/blender/readstreamglue/$(DEBUG_DIR)libreadstreamglue.a # KEY_dependkludge fix.. Remove me
159     PULIB += $(OCGDIR)/blender/src/$(DEBUG_DIR)libsrcpublisher.a
160
161     SPLIB1 = $(OCGDIR)/gameengine/GamePlayer/ghost/$(DEBUG_DIR)libghost.a
162     SPLIB1 += $(OCGDIR)/gameengine/GamePlayer/common/$(DEBUG_DIR)libcommon.a
163     SPLIB1 += $(NAN_STRING)/lib/$(DEBUG_DIR)libstring.a
164     SPLIB1 += $(NAN_GHOST)/lib/$(DEBUG_DIR)libghost.a
165
166     SPLIB = $(OCGDIR)/blender/makesdna/$(DEBUG_DIR)DNA.o
167     SPLIB += $(OCGDIR)/blender/readblenfile/$(DEBUG_DIR)libreadblenfile.a
168     SPLIB += $(OCGDIR)/blender/readstreamglue/$(DEBUG_DIR)libreadstreamglue.a
169     # this is used for the plugin. It uses some things from libz.a, 
170     # but somehow it consistently fails to resolve these symbols... or 
171     # can I just not check them? nm claims they aren't...
172     SPLIB += $(OCGDIR)/blender/inflate/$(DEBUG_DIR)libinflate.a
173     SPLIB += $(OCGDIR)/blender/decrypt/$(DEBUG_DIR)libdecrypt.a
174     SPLIB += $(OCGDIR)/blender/writestreamglueSTUB/$(DEBUG_DIR)libwritestreamglueSTUB.a
175     SPLIB += $(OCGDIR)/blender/verify/$(DEBUG_DIR)libverify.a
176     SPLIB += $(OCGDIR)/blender/blenkernel/blenkernel_blc/$(DEBUG_DIR)libblenkernel_blc.a
177
178     PULIB += $(NAN_BLENKEY)/lib/libblenkey.a
179     SPLIB += $(NAN_BLENKEY)/lib/libblenkey.a
180   ifeq ($(OS),windows)
181     PULIB += $(NAN_OPENSSL)/lib/libeay32.lib
182     SPLIB += $(NAN_OPENSSL)/lib/libeay32.lib
183   else
184     PULIB += $(NAN_OPENSSL)/lib/libcrypto.a
185     SPLIB += $(NAN_OPENSSL)/lib/libcrypto.a
186   endif
187
188     # These three need to be explicitly mentioned on the cl, because 
189     # if they are offered as a lib, they are optimized away. (nzc)
190     NSPLUGLIB = $(OCGDIR)/gameengine/GamePlayer/netscape/src/$(DEBUG_DIR)UnixShell.o
191     NSPLUGLIB += $(OCGDIR)/gameengine/GamePlayer/netscape/src/$(DEBUG_DIR)stubs.o
192     NSPLUGLIB += $(OCGDIR)/gameengine/GamePlayer/netscape/src/$(DEBUG_DIR)winstubs.o
193     NSPLUGLIB += $(OCGDIR)/gameengine/GamePlayer/netscape/src/$(DEBUG_DIR)Blender3DPlugin_native_implementation.o
194
195     # Here you can configure what sort of test to make for the plugin.
196 #    PLUGTESTLIB = $(OCGDIR)/gameengine/GamePlayer/netscape/test/$(DEBUG_DIR)libns_api_test_stub.a
197 #    PLUGTESTLIB = $(OCGDIR)/gameengine/GamePlayer/netscape/test/$(DEBUG_DIR)libns_api_test_colorcycle.a
198 #    PLUGTESTLIB = $(OCGDIR)/gameengine/GamePlayer/netscape/test/$(DEBUG_DIR)libns_api_test_gears.a
199     PLUGTESTLIB = $(OCGDIR)/gameengine/GamePlayer/netscape/test/$(DEBUG_DIR)libns_api_test_threaded_gears.a
200
201 # XPCOM is done only for Linux for now
202 ifeq ($(OS),$(findstring $(OS), "linux"))
203   ifeq ($(CPU),i386)
204     NSPLUGLIB += $(OCGDIR)/gameengine/GamePlayer/netscape/src/$(DEBUG_DIR)XPH_xpcom_hooks.o
205   endif
206 endif
207
208     PLUGAPPLIB = $(OCGDIR)/gameengine/GamePlayer/netscape/src/$(DEBUG_DIR)libplugin_ketsji_hooks.a
209
210 ifeq ($(OS),$(findstring $(OS), "freebsd linux irix solaris"))
211     NSPLUGLIB += $(OCGDIR)/gameengine/GamePlayer/netscape/src/$(DEBUG_DIR)PLG_X11_windowing.o
212     PLUGAPPLIB += $(OCGDIR)/gameengine/GamePlayer/common/unix/$(DEBUG_DIR)libunix.a
213 endif
214 ifeq ($(OS),$(findstring $(OS), "windows"))
215     NSPLUGLIB += $(OCGDIR)/gameengine/GamePlayer/netscape/src/$(DEBUG_DIR)PLG_MSWindows_windowing.o
216     NSPLUGLIB += $(OCGDIR)/gameengine/GamePlayer/netscape/src/$(DEBUG_DIR)npB3DPlg.res
217     PLUGAPPLIB += $(OCGDIR)/gameengine/GamePlayer/common/windows/$(DEBUG_DIR)libwindows.a
218 endif
219     PLUGAPPLIB += $(OCGDIR)/gameengine/GamePlayer/common/$(DEBUG_DIR)libcommon.a
220
221
222 ifeq ($(OS),$(findstring $(OS), "linux"))
223   ifeq ($(CPU),i386)
224     PLUGAPPLIB_XPLINK = $(OCGDIR)/gameengine/GamePlayer/netscape/src/$(DEBUG_DIR)_Blender3DPlugin_implementation_.o 
225   endif
226 endif
227
228     # A bit silly... but needed to resolve symbols.
229     PLUGREMLIB = $(NAN_STRING)/lib/$(DEBUG_DIR)libstring.a
230 ifeq ($(OS),windows)
231     PLUGREMLIB += $(NAN_OPENSSL)/lib/libeay32.lib
232 else
233     PLUGREMLIB += $(NAN_OPENSSL)/lib/libcrypto.a
234 endif
235
236 ######################## OS dependencies (alphabetic!) ################
237
238 include nan_link.mk
239
240 ifeq ($(OS),beos)
241     BINTARGETS = blenderdynamic
242 endif
243
244 ifeq ($(OS),darwin)
245     BINTARGETS = blenderdynamic.app
246     BINTARGETS += blenderplayer.app
247     PYLIB = $(NAN_PYTHON)/lib/python$(NAN_PYTHON_VERSION)/config/libpython$(NAN_PYTHON_VERSION).a
248     # Next line would enable MxTextTools (for VRML2 import) 
249     # but results in a link error
250     # PYLIB += $(NAN_MXTEXTTOOLS) 
251 endif
252
253 ifeq ($(OS),freebsd)
254   ifeq ($(OS_VERSION),$(findstring $(OS_VERSION), "3.4 4.0"))
255     BINTARGETS = blenderdynamic
256     BINTARGETS += blenderstatic
257   else
258     BINTARGETS = blenderdynamic
259     BINTARGETS += blenderplayer
260     BINTARGETS += plugin
261   endif
262     PYLIB = /usr/local/lib/python$(NAN_PYTHON_VERSION)/config/libpython$(NAN_PYTHON_VERSION).a
263     PYLIB += $(NAN_MXTEXTTOOLS) 
264 endif
265
266 ifeq ($(OS),irix)
267     BINTARGETS = blenderdynamic
268     BINTARGETS += blenderplayer
269     BINTARGETS += plugin
270     PYLIB = $(NAN_PYTHON)/lib/python$(NAN_PYTHON_VERSION)/config/libpython$(NAN_PYTHON_VERSION).a
271     PYLIB += $(NAN_MXTEXTTOOLS)
272 endif
273
274 ifeq ($(OS),linux)
275   ifeq ($(CPU),alpha)
276     BINTARGETS = blenderdynamic
277     BINTARGETS += blenderplayer
278   endif
279   ifeq ($(CPU),i386)
280     BINTARGETS = plugin
281     # BINTARGETS += ptest
282     BINTARGETS += xplink
283     BINTARGETS += blenderdynamic
284     BINTARGETS += blenderplayer
285     BINTARGETS += blenderstatic
286   endif
287   ifeq ($(CPU),powerpc)
288     BINTARGETS = blenderdynamic
289     BINTARGETS += blenderstatic
290   endif
291     PYLIB = $(NAN_PYTHON)/lib/python$(NAN_PYTHON_VERSION)/config/libpython$(NAN_PYTHON_VERSION).a
292     PYLIB += $(NAN_MXTEXTTOOLS)
293 endif
294
295 ifeq ($(OS),openbsd)
296     BINTARGETS = blenderstatic
297     PYLIB = $(NAN_PYTHON)/lib/python$(NAN_PYTHON_VERSION)/config/libpython$(NAN_PYTHON_VERSION).a
298 endif
299
300 ifeq ($(OS),solaris)
301     BINTARGETS = blenderdynamic
302     BINTARGETS += blenderplayer
303   ifeq ($(CPU),sparc)
304     BINTARGETS += plugin
305   endif
306     PYLIB = $(NAN_PYTHON)/lib/python$(NAN_PYTHON_VERSION)/config/libpython$(NAN_PYTHON_VERSION).a
307     PYLIB += $(NAN_MXTEXTTOOLS)
308     PYLIB += $(NAN_ZLIB)/lib/libz.a
309
310     PULIB += $(NAN_ZLIB)/lib/libz.a
311     SPLIB += $(NAN_ZLIB)/lib/libz.a
312 endif
313
314
315 # OpenAL libs are already compiled as shared code! Check FMod if we switch to that. (nzc)
316 ifeq ($(OS),$(findstring $(OS), "freebsd linux windows"))
317   ifeq ($(CPU),i386)
318     ifeq ($(OS),freebsd)
319       NAN_SND_LIBS = $(OCGDIR)/gameengine/SoundSystem/$(DEBUG_DIR)libSoundSystem.a
320       NAN_SND_LIBS += $(OCGDIR)/gameengine/DummySoundSystem/$(DEBUG_DIR)libDummySoundSystem.a
321       NAN_SND_LIBS += $(OCGDIR)/gameengine/OpenALSoundSystem/$(DEBUG_DIR)libOpenALSoundSystem.a
322       NAN_SND_LIBS += $(NAN_OPENAL)/lib/libopenal.a
323       NAN_SND_LIBS += $(OCGDIR)/gameengine/SoundSystem/$(DEBUG_DIR)libSoundSystem.a
324     else
325      NAN_SND_LIBS = $(OCGDIR)/gameengine/SoundSystem/$(DEBUG_DIR)libSoundSystem.a
326      NAN_SND_LIBS += $(OCGDIR)/gameengine/DummySoundSystem/$(DEBUG_DIR)libDummySoundSystem.a
327      NAN_SND_LIBS += $(OCGDIR)/gameengine/OpenALSoundSystem/$(DEBUG_DIR)libOpenALSoundSystem.a
328      NAN_SND_LIBS += $(NAN_OPENAL)/lib/libopenal.a
329 #     NAN_SND_LIBS += $(OCGDIR)/gameengine/FmodSoundSystem/$(DEBUG_DIR)libFmodSoundSystem.a
330 #     NAN_SND_LIBS += $(NAN_FMOD)/lib/libfmod.a
331 #     NAN_SND_LIBS += $(OCGDIR)/gameengine/FmodSoundSystem/$(DEBUG_DIR)libFmodSoundSystem.a
332      NAN_SND_LIBS += $(OCGDIR)/gameengine/SoundSystem/$(DEBUG_DIR)libSoundSystem.a
333     endif
334   else
335     ifeq ($(OS),windows)
336       NAN_SND_LIBS = $(OCGDIR)/gameengine/SoundSystem/$(DEBUG_DIR)libSoundSystem.a
337       NAN_SND_LIBS += $(OCGDIR)/gameengine/DummySoundSystem/$(DEBUG_DIR)libDummySoundSystem.a
338       NAN_SND_LIBS += $(OCGDIR)/gameengine/OpenALSoundSystem/$(DEBUG_DIR)libOpenALSoundSystem.a
339       NAN_SND_LIBS += $(NAN_OPENAL)/lib/openal_static.lib
340 #      NAN_SND_LIBS += $(OCGDIR)/gameengine/FmodSoundSystem/$(DEBUG_DIR)libFmodSoundSystem.a
341 #      NAN_SND_LIBS += $(NAN_FMOD)/lib/fmodvc.lib
342       NAN_SND_LIBS += $(OCGDIR)/gameengine/SoundSystem/$(DEBUG_DIR)libSoundSystem.a
343     else
344       NAN_SND_LIBS = $(OCGDIR)/gameengine/SoundSystem/$(DEBUG_DIR)libSoundSystem.a
345       NAN_SND_LIBS += $(OCGDIR)/gameengine/DummySoundSystem/$(DEBUG_DIR)libDummySoundSystem.a
346       NAN_SND_LIBS += $(OCGDIR)/gameengine/SoundSystem/$(DEBUG_DIR)libSoundSystem.a
347     endif
348   endif
349 else
350   ifeq ($(OS),darwin)
351     NAN_SND_LIBS = $(OCGDIR)/gameengine/SoundSystem/$(DEBUG_DIR)libSoundSystem.a
352     NAN_SND_LIBS += $(OCGDIR)/gameengine/DummySoundSystem/$(DEBUG_DIR)libDummySoundSystem.a
353 #    NAN_SND_LIBS += $(OCGDIR)/gameengine/FmodSoundSystem/$(DEBUG_DIR)libFmodSoundSystem.a
354 #    NAN_SND_LIBS += $(NAN_FMOD)/lib/libfmod.a
355     NAN_SND_LIBS += $(OCGDIR)/gameengine/SoundSystem/$(DEBUG_DIR)libSoundSystem.a
356   else
357     NAN_SND_LIBS = $(OCGDIR)/gameengine/SoundSystem/$(DEBUG_DIR)libSoundSystem.a
358     NAN_SND_LIBS += $(OCGDIR)/gameengine/DummySoundSystem/$(DEBUG_DIR)libDummySoundSystem.a
359     NAN_SND_LIBS += $(OCGDIR)/gameengine/SoundSystem/$(DEBUG_DIR)libSoundSystem.a
360   endif
361 endif
362
363 ifeq ($(OS),windows)
364     PYLIB = $(NAN_PYTHON)/lib/python22.lib
365     PYPLAYERLIB = $(NAN_PYTHON)/static/*.obj
366     PYPLAYERLIB = $(PYLIB)
367
368     # Might need to change this to $(NAN_MOZILLA_LIB)/nspr4.lib
369     NSPLUGLIB += $(NAN_NSPR)/lib/nspr4.lib
370
371     BINTARGETS = blenderdynamic
372     BINTARGETS += blenderplayer
373     BINTARGETS += blenderdynplayer
374     BINTARGETS += plugin
375
376     PULIB += $(OCGDIR)/blender/icons/$(DEBUG_DIR)winpublisher.res
377     PULIB += $(NAN_ZLIB)/lib/libz.a
378     SPLIB += $(OCGDIR)/blender/icons/$(DEBUG_DIR)winplayer.res
379     SPLIB += $(NAN_ZLIB)/lib/libz.a
380
381   ifdef NAN_PLAYERSTATIC
382     PYPLAYERLIB = $(NAN_PYTHON)/static/python20.lib
383     BINTARGETS = blenderplayer
384
385     NAN_SND_LIBS = $(OCGDIR)/gameengine/SoundSystem/$(DEBUG_DIR)libSoundSystem.a
386     NAN_SND_LIBS += $(OCGDIR)/gameengine/DummySoundSystem/$(DEBUG_DIR)libDummySoundSystem.a
387     NAN_SND_LIBS += $(OCGDIR)/gameengine/OpenALSoundSystem/$(DEBUG_DIR)libOpenALSoundSystem.a
388     NAN_SND_LIBS += $(NAN_OPENAL)/lib/openal_static.lib
389     NAN_SND_LIBS += $(OCGDIR)/gameengine/SoundSystem/$(DEBUG_DIR)libSoundSystem.a
390
391     PYINCLUDEOK := $(shell diff -qbB gameengine/Ketsji/KX_Python.h gameengine/Ketsji/KX_Python_static.h)
392     ifneq (x$(PYINCLUDEOK),x)
393       DUMMY := $(shell cat gameengine/Ketsji/KX_Python_static.h > gameengine/Ketsji/KX_Python.h)
394     endif
395   else
396     PYINCLUDEOK := $(shell diff -qbB gameengine/Ketsji/KX_Python.h gameengine/Ketsji/KX_Python_dynamic.h)
397     ifneq (x$(PYINCLUDEOK),x)
398       DUMMY := $(shell cat gameengine/Ketsji/KX_Python_dynamic.h > gameengine/Ketsji/KX_Python.h)
399     endif
400   endif
401 endif
402
403 # prepare for NAN_BUILDINFO compile at the *sigh* link rules below
404
405 ifdef NAN_BUILDINFO
406     CSRCS =
407     ALLTARGETS =
408     include nan_compile.mk
409 endif
410
411 ################## target rules ########################
412
413 all debug ::
414         @echo "****> Make $@ by $(ID)@$(HOST) at $(MAKE_START) on $(CONFIG_GUESS)"
415     ifdef NANENV
416         @for n in $(NANENV); do \
417             echo "      $$n"; \
418         done
419     endif
420
421 DIR = $(OCGDIR)
422 SOURCEDIR = source
423
424 include nan_subdirs.mk
425
426 ################## target rules ########################
427
428 all:: link
429
430 debug debuglink::
431         @$(MAKE) link DEBUG_DIR="debug/" NANENV=$(NANENV)
432
433 clean:: linkclean debuglinkclean
434
435 link: $(BINTARGETS)
436         @echo "****> Build $(MAKE_START) - `date '+%H:%M:%S %d-%b-%Y'`"
437     ifdef NANENV
438         @for n in $(NANENV); do \
439             echo "      $$n"; \
440         done
441     endif
442
443 linkclean:
444         @$(RM) $(DIR)/blenderstatic* \
445                 $(DIR)/blenderplayer* \
446                 $(DIR)/bin/*
447
448 debuglinkclean:
449         @$(RM) $(DIR)/debug/blenderstatic* \
450                 $(DIR)/debug/blenderplayer* \
451                 $(DIR)/debug/bin/*
452
453 # Shortcut for Tinderbox release builds. Mortals don't use this.
454 release:
455         @$(MAKE) -C ../release/ all || exit 1;
456
457 ############### Linker rules ###############
458
459 blenderstatic: $(DIR)/$(DEBUG_DIR)blenderstatic
460 blenderdynamic: $(DIR)/$(DEBUG_DIR)blenderdynamic$(EXT)
461 blenderplayer: $(DIR)/$(DEBUG_DIR)blenderplayer$(EXT)
462 blenderdynplayer: $(DIR)/$(DEBUG_DIR)blenderdynplayer$(EXT)
463
464 blenderplayer.app: blenderplayer
465         @$(MAKE) -C darwin/ APPLICATION=blenderplayer
466
467 blenderdynamic.app: blenderdynamic
468         @$(MAKE) -C darwin/ APPLICATION=blender
469
470 # XPCOM connector only for linux so far...
471 ifeq ($(OS),linux)
472     xplink: $(DIR)/$(DEBUG_DIR)Blender3DPlugin$(SOEXT)
473 endif
474
475 # Moz/NS plugin:
476 ifeq ($(OS),$(findstring $(OS), "freebsd linux irix solaris"))
477     plugin: $(DIR)/$(DEBUG_DIR)npBlender3DPlugin$(SOEXT)
478     ptest: $(DIR)/$(DEBUG_DIR)npTestPlugin$(SOEXT)
479 endif
480 # Windows needs a 8.3 name... Why? Dunno...
481 ifeq ($(OS),windows)
482     plugin: $(DIR)/$(DEBUG_DIR)npB3DPlg$(SOEXT)
483 endif
484
485 $(DIR)/$(DEBUG_DIR)blenderstatic: $(OBJS) $(GRPLIB) $(COMLIB) $(PULIB)
486         @echo "****> Link $@"
487     ifdef NAN_BUILDINFO
488         $(CCC) $(REL_CFLAGS) -DBUILD_DATE='"$(BUILD_DATE)"' -DBUILD_TIME='"$(BUILD_TIME)"' -DBUILD_PLATFORM='"$(CONFIG_GUESS)"' -DBUILD_TYPE='"static"' $(BUILDINFO_C) -c -o $(BUILDINFO_O) -DNAN_BUILDINFO
489     endif
490         mkdir -p $(DIR)/$(DEBUG_DIR)bin
491         $(CCC) $(LDFLAGS) -o $(DIR)/$(DEBUG_DIR)bin/blenderstatic $(BUILDINFO_O) $(OBJS) $(GRPLIB) $(COMLIB) $(PULIB) $(PYLIB) $(LLIBS) $(SADD) $(LOPTS)
492     ifdef NAN_BUILDINFO
493         /bin/rm $(BUILDINFO_O)
494     endif
495
496 $(DIR)/$(DEBUG_DIR)blenderdynamic$(EXT): $(OBJS) $(GRPLIB) $(COMLIB) $(PULIB)
497         @echo "****> Link $@"
498     ifdef NAN_BUILDINFO
499         $(CCC) $(REL_CFLAGS) -DBUILD_DATE='"$(BUILD_DATE)"' -DBUILD_TIME='"$(BUILD_TIME)"' -DBUILD_PLATFORM='"$(CONFIG_GUESS)"' -DBUILD_TYPE='"dynamic"' $(BUILDINFO_C) -c -o $(BUILDINFO_O) -DNAN_BUILDINFO
500     endif
501         mkdir -p $(DIR)/$(DEBUG_DIR)bin
502         $(CCC) $(LDFLAGS) -o $(DIR)/$(DEBUG_DIR)bin/blender$(EXT) $(BUILDINFO_O) $(OBJS) $(GRPLIB) $(COMLIB) $(PULIB) $(PYLIB) $(LLIBS) $(DADD) $(LOPTS)
503     ifdef NAN_BUILDINFO
504         /bin/rm $(BUILDINFO_O)
505     endif
506
507 $(DIR)/$(DEBUG_DIR)blenderplayer$(EXT): $(OBJS) $(SPLIB1) $(COMLIB) $(SPLIB)
508         @echo "****> Link $@"
509     ifdef NAN_BUILDINFO
510         $(CCC) $(REL_CFLAGS) -DBUILD_DATE='"$(BUILD_DATE)"' -DBUILD_TIME='"$(BUILD_TIME)"' -DBUILD_PLATFORM='"$(CONFIG_GUESS)"' -DBUILD_TYPE='"dynamic"' $(BUILDINFO_C) -c -o $(BUILDINFO_O) -DNAN_BUILDINFO
511     endif
512         mkdir -p $(DIR)/$(DEBUG_DIR)bin
513         $(CCC) $(LDFLAGS) -o $(DIR)/$(DEBUG_DIR)bin/blenderplayer$(EXT) $(BUILDINFO_O) $(OBJS) $(SPLIB1) $(COMLIB) $(SPLIB) $(PYPLAYERLIB) $(LLIBS) $(DADD) $(LOPTS)
514     ifdef NAN_BUILDINFO
515         /bin/rm $(BUILDINFO_O)
516     endif
517
518 $(DIR)/$(DEBUG_DIR)blenderdynplayer$(EXT): $(OBJS) $(COMLIB) $(SPLIB)
519         @echo "****> Link $@"
520     ifdef NAN_BUILDINFO
521         $(CCC) $(REL_CFLAGS) -DBUILD_DATE='"$(BUILD_DATE)"' -DBUILD_TIME='"$(BUILD_TIME)"' -DBUILD_PLATFORM='"$(CONFIG_GUESS)"' -DBUILD_TYPE='"dynamic"' $(BUILDINFO_C) -c -o $(BUILDINFO_O) -DNAN_BUILDINFO
522     endif
523         mkdir -p $(DIR)/$(DEBUG_DIR)bin
524         $(CCC) $(LDFLAGS) -o $(DIR)/$(DEBUG_DIR)bin/blenderdynplayer$(EXT) $(BUILDINFO_O) $(OBJS) $(SPLIB1) $(COMLIB) $(SPLIB) $(PYLIB) $(LLIBS) $(DADD) $(LOPTS)
525     ifdef NAN_BUILDINFO
526         /bin/rm $(BUILDINFO_O)
527     endif
528
529 ifeq ($(OS),linux)
530 $(DIR)/$(DEBUG_DIR)Blender3DPlugin$(SOEXT): $(PLUGAPPLIB_XPLINK)
531         @echo "****> Link $(DIR)/$(DEBUG_DIR)Blender3DPlugin.so"
532     ifdef NAN_BUILDINFO
533         $(CCC) $(REL_CFLAGS) -DBUILD_DATE='"$(BUILD_DATE)"' -DBUILD_TIME='"$(BUILD_TIME)"' -DBUILD_PLATFORM='"$(CONFIG_GUESS)"' -DBUILD_TYPE='"dynamic"' $(BUILDINFO_C) -c -o $(BUILDINFO_O) -DNAN_BUILDINFO
534     endif
535         $(CCC) $(DYNLDFLAGS) -o $@ $(PLUGAPPLIB_XPLINK) $(LOPTS)
536     ifdef NAN_BUILDINFO
537         /bin/rm $(BUILDINFO_O)
538     endif
539 endif
540
541 # Windows build needs a def file? Why? For exposing functions from the
542 # dll to the outside world. However, this is alsi done internally..
543 DEFFILE = ./gameengine/GamePlayer/netscape/src/npB3DPlg.def
544
545 # Windows needs a specific name format for dll.s so we give it one.
546 ifeq ($(OS),windows)
547 $(DIR)/$(DEBUG_DIR)npB3DPlg$(SOEXT): $(NSPLUGLIB) $(PLUGAPPLIB) $(COMLIB) $(SPLIB)
548         @echo "****> Link $(DIR)/$(DEBUG_DIR)npBl3DPlg.$(SOEXT)"
549     ifdef NAN_BUILDINFO
550         $(CCC) $(REL_CFLAGS) -DBUILD_DATE='"$(BUILD_DATE)"' -DBUILD_TIME='"$(BUILD_TIME)"' -DBUILD_PLATFORM='"$(CONFIG_GUESS)"' -DBUILD_TYPE='"dynamic"' $(BUILDINFO_C) -c -o $(BUILDINFO_O) -DNAN_BUILDINFO
551     endif
552 #       $(CCC) $(DYNLDFLAGS) -o $@ $(NSPLUGLIB) $(PLUGAPPLIB) $(COMLIB) $(SPLIB) $(PYLIB) $(PLUGREMLIB) $(LLIBS) $(DADD) $(LOPTS) 
553         $(CCC) $(DYNLDFLAGS) -o $@ $(NSPLUGLIB) $(PLUGAPPLIB) $(COMLIB) $(SPLIB) $(PYLIB) $(PLUGREMLIB) $(LLIBS) $(DADD) $(LOPTS) /def:$(DEFFILE)
554     ifdef NAN_BUILDINFO
555         /bin/rm $(BUILDINFO_O)
556     endif
557 endif
558
559 ifeq ($(OS),$(findstring $(OS), "linux freebsd irix solaris"))
560 $(DIR)/$(DEBUG_DIR)npBlender3DPlugin$(SOEXT): $(NSPLUGLIB) $(PLUGAPPLIB) $(COMLIB) $(SPLIB)
561         @echo "****> Link $(DIR)/$(DEBUG_DIR)Blender3DPlugin.so"
562     ifdef NAN_BUILDINFO
563         $(CCC) $(REL_CFLAGS) -DBUILD_DATE='"$(BUILD_DATE)"' -DBUILD_TIME='"$(BUILD_TIME)"' -DBUILD_PLATFORM='"$(CONFIG_GUESS)"' -DBUILD_TYPE='"dynamic"' $(BUILDINFO_C) -c -o $(BUILDINFO_O) -DNAN_BUILDINFO
564     endif
565         $(CCC) $(DYNLDFLAGS) -o $@ $(NSPLUGLIB) $(PLUGAPPLIB) $(COMLIB) $(SPLIB) $(PYLIB) $(PLUGREMLIB) $(LLIBS) $(DADD) $(LOPTS)
566     ifdef NAN_BUILDINFO
567         /bin/rm $(BUILDINFO_O)
568     endif
569
570 $(DIR)/$(DEBUG_DIR)npTestPlugin$(SOEXT): $(NSPLUGLIB)
571         @echo "****> Link $@"
572     ifdef NAN_BUILDINFO
573         $(CCC) $(REL_CFLAGS) -DBUILD_DATE='"$(BUILD_DATE)"' -DBUILD_TIME='"$(BUILD_TIME)"' -DBUILD_PLATFORM='"$(CONFIG_GUESS)"' -DBUILD_TYPE='"dynamic"' $(BUILDINFO_C) -c -o $(BUILDINFO_O) -DNAN_BUILDINFO
574     endif
575         $(CCC) $(DYNLDFLAGS) -o $@ $(NSPLUGLIB) $(PLUGTESTLIB) $(LLIBS) $(DADD) $(LOPTS)
576     ifdef NAN_BUILDINFO
577         /bin/rm $(BUILDINFO_O)
578     endif
579 endif