]> git.saurik.com Git - wxWidgets.git/blame - wxPython/distrib/mac/wxPythonOSX/build
added visual c++ makefiles
[wxWidgets.git] / wxPython / distrib / mac / wxPythonOSX / build
CommitLineData
1e4a197e
RD
1#!/bin/sh -e
2#----------------------------------------------------------------------
3# Build wxMac and wxPythonOSX from the tarball and then make an
4# Installer package out of it.
5
6spectemplate=distrib/wxPythonFull.spec.in
7
8if [ ! -d wxPython -o ! -e ${spectemplate} ]; then
9 echo "Please run this script from the root wxPython directory."
10 exit 1
11fi
12
13#----------------------------------------------------------------------
14# Check Parameters
15
16function usage {
17 echo ""
18 echo "Usage: $0 wx_version py_version [command flags...]"
19 echo " wx_version String to use for version in filenames, etc."
20 echo " py_version String to append to python (which python version to use.)"
21 echo ""
22 echo "command flags:"
23 echo " skiptar Don't unpack the tarball"
24 echo " use_cvs Use the CVS workspace instead of a tarfile"
25 echo " skipconfig Don't run configure"
26 echo " skipbuild Don't build wxWindows or wxPython"
27 echo " skipinstall Don't do the installation step"
28 echo " skipdmg Don't make the package or diskimage"
29 echo " skipclean Don't do the cleanup at the end"
30}
31
32
33if [ $# -lt 2 ]; then
34 usage
35 exit 1
36fi
37
38VERSION=$1
39PYVER=$2
40shift;shift
41
42
43for flag in $*; do
44 case ${flag} in
45 skiptar) skiptar=1 ;;
46 use_cvs) skiptar=1; use_cvs=1 ;;
47 skipconfig) skipconfig=1; skiptar=1 ;;
48 skipbuild) skipbuild=1; skipconfig=1; skiptar=1 ;;
49 skipinstall) skipinstall=1 ;;
50 skipdmg) skipdmg=1 ;;
51 skipclean) skipclean=1 ;;
52
53 *) echo "Unknown flag \"${flag}\""
54 usage
55 exit 1
56 esac
57done
58
59
60SRCDIR=/Volumes/Gate.Stuff/Development/wxPython/dist/$VERSION
61TARBALL=$SRCDIR/wxPythonSrc-$VERSION.tar.gz
62SITEPACKAGES=/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER/site-packages
63
64# TODO: Should I change the prefix to /usr?
65PREFIX=/usr/local
66
67PROGDIR="`dirname \"$0\"`"
68TMPDIR=$PWD/_build_dmg
69
70BUILDROOT=$TMPDIR/build
71INSTALLROOT=$TMPDIR/install
72INSTALLDEVEL=$TMPDIR/install-devel
73DMGDIR=$TMPDIR/dmg
74RESOURCEDIR=$PROGDIR/resources
75DESTDIR=$PWD/dist
76
77
78
79#----------------------------------------------------------------------
80# Setup builddirs
81
82mkdir -p $BUILDROOT
83mkdir -p $INSTALLROOT
84mkdir -p $INSTALLDEVEL
85rm -rf $DMGDIR
86mkdir -p $DMGDIR/root
87
88pushd $BUILDROOT
89
90
91#----------------------------------------------------------------------
92# Unpack the tarball
93
94if [ -z "$skiptar" ]; then
95 tar xzvf $TARBALL
96fi
97
98if [ "$use_cvs" = 1 ]; then
99 # copy the cvs workspace, except for build dirs
100
101 mkdir -p wxPythonSrc-$VERSION
102
103 echo Finding updated files...
104 if [ -e .last_copy ]; then
105 FEXPR="-cnewer .last_copy"
106 fi
107 find /projects/wx $FEXPR -print \
108 | grep -v wx/build \
109 | grep -v wxPython/build \
110 | grep -v wxPython/_build \
111 | grep -v CVS \
112 | cut -b 14- > filelist
113
114 for x in `cat filelist`; do
115 if [ -d "/projects/wx/$x" ]; then
116 mkdir -p "wxPythonSrc-$VERSION/$x"
117 else
118 echo $x
119 cp -p "/projects/wx/$x" "wxPythonSrc-$VERSION/$x"
120 fi
121 done
122
123 touch .last_copy
124fi
125
126
127cd wxPythonSrc-$VERSION
128WXDIR=`pwd`
129mkdir -p $WXDIR/build
130cd $WXDIR/build
131
132#----------------------------------------------------------------------
133
134
135# Configure wxWindows
136if [ -z "$skipconfig" ]; then
137 ../configure --with-mac --prefix=$PREFIX \
138 --with-opengl \
139 --enable-precomp=no \
140 --enable-geometry \
141 --enable-optimise \
142 --enable-debug_flag \
143 --with-libjpeg=builtin \
144 --with-libpng=builtin \
145 --with-libtiff=builtin \
146 --with-zlib=builtin
147
148fi
149
150# Build wxWindows and wxPython
151if [ -z "$skipbuild" ]; then
152 make
153
154 cd $WXDIR/wxPython
155 python$PYVER setup.py \
156 IN_CVS_TREE=1 \
157 WX_CONFIG="$WXDIR/build/wx-config --prefix=$WXDIR --exec-prefix=$WXDIR/build" \
158 build
159
160
161 # Build wxrc (XRC resource tool) but don't use the makefiles since they expect
162 # a shared version of the xrc lib to have been built...
163 cd $WXDIR/contrib/utils/wxrc
164 WX_CONFIG="$WXDIR/build/wx-config --prefix=$WXDIR --exec-prefix=$WXDIR/build"
165 wCC=`$WX_CONFIG --cc`
166 wCXX=`$WX_CONFIG --cxx`
167
168 for f in wxrc.cpp ../../src/xrc/*.cpp; do
169 echo $f
170 $wCXX `$WX_CONFIG --cxxflags` -I ../../include -I ../../src/xrc/expat/xmlparse -I ../../src/xrc/expat/xmltok -c $f
171 done
172 for f in ../../src/xrc/expat/xmlparse/xmlparse.c ../../src/xrc/expat/xmltok/xmlrole.c ../../src/xrc/expat/xmltok/xmltok.c; do
173 echo $f
174 $wCC `$WX_CONFIG --cxxflags` -I ../../include -I ../../src/xrc/expat/xmlparse -I ../../src/xrc/expat/xmltok -c $f
175 done
176
177 # the handlers are not needed
178 rm xh_*.o xmlrsall.o
179
180 $wCXX `$WX_CONFIG --libs` *.o -o wxrc
181 strip wxrc
182
183fi
184
185#----------------------------------------------------------------------
186# Install wxWindows
187
188if [ -z "$skipinstall" ]; then
189 cd $WXDIR/build
190 make prefix=$INSTALLROOT/$PREFIX install
191
192
193 # and wxPython
194 cd $WXDIR/wxPython
195 python$PYVER setup.py \
196 IN_CVS_TREE=1 \
197 WX_CONFIG="$WXDIR/build/wx-config --prefix=$WXDIR --exec-prefix=$WXDIR/build" \
198 install \
199 --root=$INSTALLROOT
200
201 # install wxPython's tool scripts
202 cd $WXDIR/wxPython/scripts
203 python$PYVER CreateMacScripts.py $INSTALLROOT $PREFIX/bin
204
205 # Install wxrc
206 cp $WXDIR/contrib/utils/wxrc/wxrc $INSTALLROOT$PREFIX/bin
207
208
209 # Move wxWindows devel files and save for a separate installer package
210 mkdir -p $INSTALLDEVEL$PREFIX
211 mkdir -p $INSTALLDEVEL$PREFIX/bin
212 mkdir -p $INSTALLDEVEL$PREFIX/lib
213 mv -f $INSTALLROOT$PREFIX/include $INSTALLDEVEL$PREFIX
214 mv -f $INSTALLROOT$PREFIX/lib/wx $INSTALLDEVEL$PREFIX/lib
215 mv -f $INSTALLROOT$PREFIX/bin/wx* $INSTALLDEVEL$PREFIX/bin
216
217fi
218
219popd
220
221#----------------------------------------------------------------------
222
223# Make the Installer packages and disk image
224if [ -z "$skipdmg" ]; then
225
226 # Remove the .pyc/.pyo files they just take up space and can be recreated
227 # during the install.
228 python $PROGDIR/../zappycfiles.py $INSTALLROOT/Library/Frameworks/Python.framework
229
230 # Copy the demo, samples, and such to the Applications dir
231 APPDIR=$INSTALLROOT/Applications/wxPythonOSX-$VERSION
232 mkdir -p $APPDIR
233 cp -pR $WXDIR/wxPython/demo $APPDIR
234 cp -pR $WXDIR/wxPython/samples $APPDIR
235
236 # Move sample launchers to .pyw files.
237 # TODO: A better, more automated way to do this!!!
238 pushd $APPDIR/samples
239 for x in StyleEditor/STCStyleEditor \
240 doodle/superdoodle \
241 frogedit/FrogEdit \
242 pySketch/pySketch \
243 wxProject/wxProject; do
244 mv $x.py $x.pyw
245 done
246 popd
247
248 # Make an app to launch the demo
249 cat > $APPDIR/demo/RunDemo.pyw <<EOF
250import sys, os
251sys.path.insert(0, "/Applications/wxPythonOSX-$VERSION/demo")
252os.chdir("/Applications/wxPythonOSX-$VERSION/demo")
253import Main
254Main.main()
255EOF
256 pythonw $PROGDIR/../buildapp.py \
257 --builddir=$APPDIR \
258 --name=RunDemo \
259 --mainprogram=$APPDIR/demo/RunDemo.pyw \
260 --iconfile=$PROGDIR/RunDemo.icns \
261 build
262
263 # Make an app to launch PyShell
264 pythonw $PROGDIR/../buildapp.py \
265 --builddir=$APPDIR \
266 --name=PyShell \
267 --mainprogram=$INSTALLROOT$PREFIX/bin/pyshell.py \
268 --iconfile=$PROGDIR/PieShell.icns \
269 build
270
271 # Make an app to launch XRCed
272 pythonw $PROGDIR/../buildapp.py \
273 --builddir=$APPDIR \
274 --name=XRCed \
275 --mainprogram=$INSTALLROOT$PREFIX/bin/xrced.py \
276 --iconfile=$PROGDIR/XRCed.icns \
277 build
278
279
280 # Make the welcome message
281 cat > $RESOURCEDIR/Welcome.txt <<EOF
282Welcome!
283
284This program will install wxPython $VERSION for MacPython-OSX $PYVER.
285
286Build date: `date`
287EOF
288
289 # make the preflight script
290 cat > $RESOURCEDIR/preflight <<EOF
291#!/bin/sh
292# Cleanup any old install of the wxPython package
293rm -rf \$2$SITEPACKAGES/wxPython
294exit 0
295EOF
296 chmod +x $RESOURCEDIR/preflight
297
298 # make the postflight script
299 cat > $RESOURCEDIR/postflight <<EOF
300#!/bin/sh -e
301# Compile the .py files in the wxPython pacakge
302/usr/local/bin/python \$2$SITEPACKAGES/../compileall.py \$2$SITEPACKAGES/wxPython
303/usr/local/bin/python -O \$2$SITEPACKAGES/../compileall.py \$2$SITEPACKAGES/wxPython
304
305# and in the demo
306/usr/local/bin/python \$2$SITEPACKAGES/../compileall.py /Applications/wxPythonOSX-$VERSION/demo
307
308# Make the demo/data dir writable
309chmod a+w /Applications/wxPythonOSX-$VERSION/demo/data
310
311# and the wxPython pacakge should be group writable
312chgrp -R admin \$2$SITEPACKAGES/wxPython
313chgrp -R admin /Applications/wxPythonOSX-$VERSION
314chmod -R g+w \$2$SITEPACKAGES/wxPython
315chmod -R g+w /Applications/wxPythonOSX-$VERSION
316
317exit 0
318EOF
319 chmod +x $RESOURCEDIR/postflight
320
321
322
323 # Finally, build the main package...
324 rm -rf wxPythonOSX.pkg
325 python $PROGDIR/../buildpkg.py \
326 --Title=wxPythonOSX \
327 --Version=$VERSION \
328 --Description="wxPython $VERSION for MacPython-OSX $PYVER" \
329 --NeedsAuthorization="YES" \
330 --Relocatable="NO" \
331 --InstallOnly="YES" \
332 $INSTALLROOT \
333 $RESOURCEDIR
334
335 mv wxPythonOSX.pkg $DMGDIR/root
336
337
338 # and the devel package
339 rm -rf wxPythonOSX-devel.pkg
340 python $PROGDIR/../buildpkg.py \
341 --Title=wxPythonOSX-devel \
342 --Version=$VERSION \
343 --Description="Headers and such that allow you to link with the same wxMac that wxPython does" \
344 --NeedsAuthorization="YES" \
345 --Relocatable="NO" \
346 --InstallOnly="YES" \
347 $INSTALLROOT
348
349 mv wxPythonOSX-devel.pkg $DMGDIR/root
350
351
352 # Make a README.txt to go on the disk image
353 cat > $DMGDIR/root/README.txt <<EOF
354The files on this disk image are Installer packages for wxPythonOSX
355$VERSION for MacPython-OSX $PVER. You must already have MacPython-OSX
356installed.
357
358The wxPython extension modules, library, demo and samples are
359contained in the wxPythonOSX package. You should install at least this
360package to use wxPython.
361
362If you have any need to create applicaitons or extension modules that
363link with the same wxMac that wxPython does, then you can also install
364the wxPythonOSX-devel package to get the necessary header files and
365such. Otherwise you don't need it.
366
367Happy Hacking!
368EOF
369
370
371 # license files, etc.
372 cp -pR $WXDIR/wxPython/licence $DMGDIR/root
373 cp $WXDIR/wxPython/CHANGES.txt $DMGDIR/root
374
375 # and then finally make a disk image containing the packages and etc.
376 $PROGDIR/../makedmg $DMGDIR/root $DMGDIR wxPythonOSX-$VERSION-py$PYVER
377
378 echo Moving $DMGDIR/wxPythonOSX-$VERSION-py$PYVER.dmg to $DESTDIR
379 mv $DMGDIR/wxPythonOSX-$VERSION-py$PYVER.dmg $DESTDIR
380fi
381
382
383# Cleanup build/install dirs
384if [ -z "$skipclean" ]; then
385 echo "Cleaning up..."
386 rm -rf $TMPDIR
387else
388 echo "Cleanup is disabled. You should remove $TMPDIR when finished"
389fi
390