CMake: Think this is the reason linking python statically causes problems on some...
[blender.git] / release / 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 include nan_definitions.mk
33
34 export VERSION := $(shell cat VERSION)
35
36 BLENDNAME=blender-$(VERSION)-$(CONFIG_GUESS)$(TYPE)
37 export DISTDIR=$(NAN_OBJDIR)/$(BLENDNAME)
38 export CONFDIR=$(DISTDIR)/.blender
39
40
41 release: all
42
43 all:
44     ifeq ($(OS),beos)
45         @$(MAKE) pkg TYPE="" TAR="zip -ry9" EXT1=".zip" NOPLUGINS="true"
46     endif
47     ifeq ($(OS),freebsd)
48         @$(MAKE) pkg TYPE="" TAR="tar cf" EXT1=".tar" \
49             COMPRESS="bzip2 -f" EXT2=".bz2"
50     endif
51     ifeq ($(OS),irix)
52         @$(MAKE) pkg TYPE="" TAR="tar cf" EXT1=".tar" \
53             COMPRESS="bzip2 -f" EXT2=".bz2"
54     endif
55     ifeq ($(OS),linux)
56       ifeq ($(CPU),alpha)
57         @$(MAKE) pkg TYPE="" TAR="tar cf" EXT1=".tar" \
58             COMPRESS="bzip2 -f" EXT2=".bz2"
59       else
60         @$(MAKE) pkg TYPE="" TAR="tar cf" EXT1=".tar" \
61             COMPRESS="bzip2 -f" EXT2=".bz2"
62         @$(MAKE) pkg TYPE="-static" TAR="tar cf" EXT1=".tar" \
63             COMPRESS="bzip2 -f" EXT2=".bz2"
64       endif
65     endif
66     ifeq ($(OS),openbsd)
67         @$(MAKE) pkg TYPE="-static" TAR="tar cf" EXT1=".tar" \
68             COMPRESS="bzip2 -f" EXT2=".bz2"
69     endif
70     ifeq ($(OS),solaris)
71         @$(MAKE) pkg TYPE="" TAR="tar cf" EXT1=".tar" \
72             COMPRESS="bzip2 -f" EXT2=".bz2"
73     endif
74     ifeq ($(OS),windows)
75         @$(MAKE) pkg TYPE="" TAR="zip -r9" EXT0=".exe" EXT1=".zip" \
76             NOPLUGINS="true" NOSTRIP="true"
77     endif
78     ifeq ($(OS),darwin)
79         @$(MAKE) pkg TYPE="" TAR="tar cf" EXT0"=.app" EXT1=".tar" \
80             COMPRESS="bzip2 -f" EXT2=".bz2"
81     endif
82
83 # OS independent targets below:
84
85 dist: all
86
87 package: version makedirs
88
89 install: package
90         @#echo "****> Install text"
91         @cp text/blender.html $(DISTDIR)
92         @cp text/*.txt $(DISTDIR)
93         @cp text/*.pdf $(DISTDIR)
94     ifeq ($(FREEDESKTOP), true)
95         @#echo "****> Install freedesktop icons"
96         @mkdir $(DISTDIR)/icons
97         @mkdir $(DISTDIR)/icons/16x16
98         @cp freedesktop/icons/16x16/blender.png $(DISTDIR)/icons/16x16
99         @mkdir $(DISTDIR)/icons/22x22
100         @cp freedesktop/icons/22x22/blender.png $(DISTDIR)/icons/22x22
101         @mkdir $(DISTDIR)/icons/32x32
102         @cp freedesktop/icons/32x32/blender.png $(DISTDIR)/icons/32x32
103         @mkdir $(DISTDIR)/icons/scalable
104         @cp freedesktop/icons/scalable/blender.svg $(DISTDIR)/icons/scalable
105     endif
106         @echo "----> Make Config dir .blender"
107         @mkdir -p $(CONFDIR)
108         @# possible overruling .txt text documents
109         @[ ! -d $(CONFIG_GUESS)/text ] || \
110             cp -f $(CONFIG_GUESS)/text/*.txt $(DISTDIR)
111 #on OS X the contents of the .blender dir is already inside the bundle
112     ifneq ($(OS), darwin)
113         @[ ! -d $(OCGDIR)/bin/.blender ] || \
114                 cp -r $(OCGDIR)/bin/.blender $(DISTDIR)
115         cp $(NANBLENDERHOME)/bin/.blender/.Blanguages $(CONFDIR)
116         cp $(NANBLENDERHOME)/bin/.blender/.bfont.ttf $(CONFDIR)
117     endif
118         @echo "----> Copy blender$(EXT0) executable"
119     ifeq ($(TYPE),-static)
120         @cp $(OCGDIR)/bin/blenderstatic$(EXT0) $(DISTDIR)/blender$(EXT0)
121     else
122     ifeq ($(OS),darwin)
123         @cp -r $(OCGDIR)/bin/blender$(EXT0) $(DISTDIR)/Blender$(EXT0)
124     else
125         @cp $(OCGDIR)/bin/blender$(EXT0) $(DISTDIR)/blender$(EXT0)
126     endif
127         @if [ -f $(OCGDIR)/bin/blenderplayer$(EXTO) ]; then \
128                 cp $(OCGDIR)/bin/blenderplayer$(EXTO) \
129                         $(DISTDIR)/blenderplayer$(EXTO) ; \
130         fi
131     endif
132
133 ifneq ($(NOPLUGINS),true)
134         @echo "----> Copy and compile plugins"
135         @cp -r plugins $(DISTDIR)/plugins
136         @mkdir -p $(DISTDIR)/plugins/include
137         @cp ../source/blender/blenpluginapi/*.h $(DISTDIR)/plugins/include/
138         @chmod 755 $(DISTDIR)/plugins/bmake
139         @$(MAKE) -C $(DISTDIR)/plugins all  > /dev/null || exit 1;
140         @rm -fr $(DISTDIR)/plugins/CVS $(DISTDIR)/plugins/*/CVS \
141              $(DISTDIR)/plugins/*/*.o
142
143 #on OS X the plugins move to the installation directory
144     ifneq ($(OS),darwin)
145         @mkdir -p $(CONFDIR)/plugins/sequence
146         @mkdir -p $(CONFDIR)/plugins/texture
147         @mv $(DISTDIR)/plugins/sequence/*.so $(CONFDIR)/plugins/sequence
148         @mv $(DISTDIR)/plugins/texture/*.so $(CONFDIR)/plugins/texture
149     endif
150 endif
151
152         @echo "----> Copy python infrastructure"
153         @[ ! -d scripts ] || cp -r scripts $(CONFDIR)/scripts
154         @[ ! -d $(CONFDIR)/scripts ] || rm -fr $(CONFDIR)/scripts/CVS
155
156     ifeq ($(OS),darwin)
157         @echo "----> Move .blender to .app/Contents/MacOS/"
158         @rm -fr $(DISTDIR)/blender$(EXT0)/Contents/MacOS/.blender
159         @mv $(DISTDIR)/.blender $(DISTDIR)/blender$(EXT0)/Contents/MacOS/
160     endif
161
162     ifneq ($(NOSTRIP),true)
163         @echo "----> Strip blender executable"
164       ifeq ($(OS),darwin)
165         @strip -x $(DISTDIR)/blender$(EXT0)/Contents/MacOS/blender
166       else
167         @strip -x $(DISTDIR)/blender$(EXT0)
168       endif
169     endif
170         @[ ! -x $(CONFIG_GUESS)/specific.sh ] || (\
171             echo "**--> Execute specific.sh in $(CONFIG_GUESS)/" && \
172             cd $(CONFIG_GUESS) && ./specific.sh )
173
174 pkg: install
175         @echo "----> Create distribution file $(BLENDNAME)$(EXT1)"
176         @#enable the next sleep if you get 'tar file changed while reading'
177         @#sleep 10
178         @cd $(NAN_OBJDIR) && \
179         rm -f  $(VERSION)/$(BLENDNAME)$(EXT1)* && \
180         $(TAR) $(VERSION)/$(BLENDNAME)$(EXT1) $(BLENDNAME)
181     ifdef COMPRESS
182         @echo "----> Compressing distribution to $(BLENDNAME)$(EXT1)$(EXT2)"
183         @$(COMPRESS) $(NAN_OBJDIR)/$(VERSION)/$(BLENDNAME)$(EXT1)
184     endif
185         @#echo "****> Clean up temporary distribution directory"
186         @rm -fr $(DISTDIR)
187         @echo "****> $(NAN_OBJDIR)/$(VERSION)/$(BLENDNAME)$(EXT1)$(EXT2) is ready"
188
189 version: FORCE
190         @echo "*---> Create $(BLENDNAME) package"
191
192 makedirs: FORCE
193         @#echo "****> Create package directory $(VERSION) if necessary"
194         @[ -d $(NAN_OBJDIR)/$(VERSION) ] || mkdir $(NAN_OBJDIR)/$(VERSION)
195         @#echo "****> Prepare temporary distribution directory"
196         @rm -fr $(DISTDIR)
197         @mkdir $(DISTDIR)
198
199 FORCE: