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