Slight improvements in release creation.
[blender.git] / release / Makefile
1 # -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*-
2 # vim: tabstop=8
3 # $Id$
4 #
5 # ***** BEGIN GPL LICENSE BLOCK *****
6 #
7 # This program is free software; you can redistribute it and/or
8 # modify it under the terms of the GNU General Public License
9 # as published by the Free Software Foundation; either version 2
10 # of the License, or (at your option) any later version.
11 #
12 # This program is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 # GNU General Public License for more details.
16 #
17 # You should have received a copy of the GNU General Public License
18 # along with this program; if not, write to the Free Software Foundation,
19 # Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
20 #
21 # The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
22 # All rights reserved.
23 #
24 # The Original Code is: all of this file.
25 #
26 # Contributor(s): none yet.
27 #
28 # ***** END GPL LICENSE BLOCK *****
29
30 include nan_definitions.mk
31
32 export VERSION := $(shell ./getversion.py)
33
34 BLENDNAME=blender-$(VERSION)-$(CONFIG_GUESS)-py$(NAN_PYTHON_VERSION)$(TYPE)
35 export DISTDIR=$(NAN_OBJDIR)/$(BLENDNAME)
36 export CONFDIR=$(DISTDIR)/.blender
37
38 ifeq ($(OS),beos)
39    TAR="zip"
40    TARFLAGS="-ry9"
41    EXT0=""
42    EXT1=".zip"
43    COMPRESS=""
44    EXT2=""
45    NOPLUGINS?=true
46 endif
47
48 ifeq ($(OS),$(findstring $(OS), "freebsd irix linux openbsd solaris"))
49    TAR="tar"
50    TARFLAGS="cf"
51    EXT0=""
52    EXT1=".tar"
53    COMPRESS="bzip2"
54    COMPRESSFLAGS="-f"
55    EXT2=".bz2"
56    ifeq ($(OS), solaris)
57      ifeq ($(CPU), i386)
58        NOPLUGINS?=true
59      endif
60    endif
61    # don"t build plugins on irix if using gcc
62    ifeq ($(OS), irix)
63      ifeq ($(IRIX_USE_GCC), true)
64        NOPLUGINS?=true
65      endif
66    endif
67 endif
68
69 ifeq ($(OS),windows)
70    TAR="zip"
71    TARFLAGS="-r9"
72    EXT0=".exe"
73    EXT1=".zip"
74    NOPLUGINS?=true
75    NOSTRIP?=true
76 endif
77
78 ifeq ($(OS),darwin)
79    TAR="tar"
80    TARFLAGS="cf"
81    EXT0=".app"
82    EXT1=".tar"
83    COMPRESS="bzip2"
84    COMPRESSFLAGS="-f"
85    EXT2=".bz2"
86 endif
87
88 release: all
89
90 all:
91         @$(MAKE) pkg TYPE=""
92 ifeq ($(WITH_BF_STATICOPENGL), true)
93         @$(MAKE) pkg TYPE="-static" 
94 endif
95
96 # OS independent targets below:
97
98 dist: all
99
100 package: version makedirs
101
102 install: package
103         @#echo "****> Install text"
104         @cp text/blender.html $(DISTDIR)
105         @cp text/*.txt $(DISTDIR)
106         @cp text/*.pdf $(DISTDIR)
107     ifeq ($(FREEDESKTOP), true)
108         @#echo "****> Install freedesktop icons"
109         @mkdir $(DISTDIR)/icons
110         @mkdir $(DISTDIR)/icons/16x16
111         @cp freedesktop/icons/16x16/blender.png $(DISTDIR)/icons/16x16
112         @mkdir $(DISTDIR)/icons/22x22
113         @cp freedesktop/icons/22x22/blender.png $(DISTDIR)/icons/22x22
114         @mkdir $(DISTDIR)/icons/32x32
115         @cp freedesktop/icons/32x32/blender.png $(DISTDIR)/icons/32x32
116         @mkdir $(DISTDIR)/icons/scalable
117         @cp freedesktop/icons/scalable/blender.svg $(DISTDIR)/icons/scalable
118     endif
119         @echo "----> Make Config dir .blender"
120         @mkdir -p $(CONFDIR)
121         @# possible overruling .txt text documents
122         @[ ! -d $(CONFIG_GUESS)/text ] || \
123             cp -f $(CONFIG_GUESS)/text/*.txt $(DISTDIR)
124 #on OS X the contents of the .blender dir is already inside the bundle
125     ifneq ($(OS), darwin)
126         @[ ! -d $(OCGDIR)/bin/.blender ] || \
127                 cp -r $(OCGDIR)/bin/.blender $(DISTDIR)
128         @cp $(NANBLENDERHOME)/bin/.blender/.Blanguages $(CONFDIR)
129         @cp $(NANBLENDERHOME)/bin/.blender/.bfont.ttf $(CONFDIR)
130     endif
131         @echo "----> Copy blender$(EXT0) executable"
132     ifeq ($(TYPE),-static)
133         @cp $(OCGDIR)/bin/blenderstatic$(EXT0) $(DISTDIR)/blender$(EXT0)
134     else
135     ifeq ($(OS),darwin)
136         @cp -r $(OCGDIR)/bin/blender$(EXT0) $(DISTDIR)/Blender$(EXT0)
137     else
138         @cp $(OCGDIR)/bin/blender$(EXT0) $(DISTDIR)/blender$(EXT0)
139     endif
140         @if [ -f $(OCGDIR)/bin/blenderplayer$(EXTO) ]; then \
141                 cp $(OCGDIR)/bin/blenderplayer$(EXTO) \
142                         $(DISTDIR)/blenderplayer$(EXTO) ; \
143         fi
144     endif
145
146 ifneq ($(NOPLUGINS),true)
147         @echo "----> Copy and compile plugins"
148         @cp -r plugins $(DISTDIR)/plugins
149         @mkdir -p $(DISTDIR)/plugins/include
150         @cp ../source/blender/blenpluginapi/*.h $(DISTDIR)/plugins/include/
151         @chmod 755 $(DISTDIR)/plugins/bmake
152         @$(MAKE) -C $(DISTDIR)/plugins all  > /dev/null || exit 1;
153         @rm -f $(DISTDIR)/plugins/*/*.o
154
155 #on OS X the plugins move to the installation directory
156     ifneq ($(OS),darwin)
157         @mkdir -p $(CONFDIR)/plugins/sequence
158         @mkdir -p $(CONFDIR)/plugins/texture
159         @mv $(DISTDIR)/plugins/sequence/*.so $(CONFDIR)/plugins/sequence
160         @mv $(DISTDIR)/plugins/texture/*.so $(CONFDIR)/plugins/texture
161     endif
162 endif
163
164         @echo "----> Copy python infrastructure"
165         @[ ! -d scripts ] || cp -r scripts $(CONFDIR)/scripts
166
167         @echo "----> Copy python UI files"
168         @[ ! -d ui ] || cp -r ui $(CONFDIR)/ui
169
170     ifeq ($(OS),darwin)
171         @echo "----> Move .blender to .app/Contents/MacOS/"
172         @rm -fr $(DISTDIR)/blender$(EXT0)/Contents/MacOS/.blender
173         @mv $(DISTDIR)/.blender $(DISTDIR)/blender$(EXT0)/Contents/MacOS/
174     endif
175
176     ifneq ($(NOSTRIP),true)
177         @echo "----> Strip blender executable"
178       ifeq ($(OS),darwin)
179         @strip -x $(DISTDIR)/blender$(EXT0)/Contents/MacOS/blender
180       else
181         @strip -x $(DISTDIR)/blender$(EXT0)
182         @if [ -f $(DISTDIR)/blenderplayer$(EXTO) ]; then \
183            strip -x $(DISTDIR)/blender$(EXT0) ; \
184         fi
185       endif
186     endif
187         @[ ! -x $(CONFIG_GUESS)/specific.sh ] || (\
188             echo "**--> Execute specific.sh in $(CONFIG_GUESS)/" && \
189             cd $(CONFIG_GUESS) && ./specific.sh )
190         @echo "----> Cleaning .svn metadata directories"
191         @find $(DISTDIR) -type d -name ".svn" | xargs rm -fr
192
193 pkg: install
194         @echo "----> Create distribution file $(BLENDNAME)$(EXT1)"
195         @#enable the next sleep if you get 'tar file changed while reading'
196         @#sleep 10
197         rm -f  $(NAN_OBJDIR)/$(VERSION)/$(BLENDNAME)$(EXT1)*
198         @cd $(NAN_OBJDIR) && $(TAR) $(TARFLAGS) $(VERSION)/$(BLENDNAME)$(EXT1) $(BLENDNAME)
199     ifdef COMPRESS
200         @echo "----> Compressing distribution to $(BLENDNAME)$(EXT1)$(EXT2)"
201         @$(COMPRESS) $(COMPRESSFLAGS) $(NAN_OBJDIR)/$(VERSION)/$(BLENDNAME)$(EXT1)
202     endif
203         @#echo "****> Clean up temporary distribution directory"
204         @#rm -fr $(DISTDIR)
205         @echo "****> $(NAN_OBJDIR)/$(VERSION)/$(BLENDNAME)$(EXT1)$(EXT2) is ready"
206
207 version: FORCE
208         @echo "*---> Create $(BLENDNAME) package"
209
210 makedirs: FORCE
211         @echo "****> Create package directory $(VERSION) if necessary"
212         @[ -d $(NAN_OBJDIR)/$(VERSION) ] || mkdir $(NAN_OBJDIR)/$(VERSION)
213         @echo "****> Remove and recreate temporary distribution directory"
214         @rm -fr $(DISTDIR)
215         @mkdir $(DISTDIR)
216
217 FORCE: