source: git/buildmacosx.sh @ 4dcf45a

RELEASE/1.2debug-cidebug-ci-sanitisersstereowalls-data
Last change on this file since 4dcf45a was 4dcf45a, checked in by Olly Betts <olly@…>, 9 years ago

buildmacosx.sh: Download wx from SF via redirecting link. Thanks to
David A. Riggs.

  • Property mode set to 100755
File size: 6.5 KB
Line 
1#!/bin/sh
2#
3# Note: this script requires MacOS X 10.2 or greater, and builds diskimages
4# which require MacOS X 10.1 or greater to install.
5#
6# Currently (at least if built on 10.6) at least 10.6 is required to run.
7#
8# You probably need to have Xcode installed - you can download this for free
9# from Apple: http://developer.apple.com/xcode/
10#
11# Run from the unpacked survex-1.2.X directory like so:
12#
13#   ./buildmacosx.sh
14#
15# This will automatically download and temporarily install wxWidgets
16# (this script is smart enough not to download or build it if it already
17# has).
18#
19# If you already have wxWidgets installed permanently, use:
20#
21#   ./buildmacosx.sh --no-install-wx
22#
23# If wxWidgets is installed somewhere such that wx-config isn't on your
24# PATH you need to indicate where wx-config is by running this script
25# something like this:
26#
27#   env WX_CONFIG=/path/to/wx-config ./buildmacosx.sh
28#
29# (If you set WX_CONFIG, there's no need to pass --no-install-wx).
30#
31# If using a pre-installed wxWidgets, note that it must satisfy the
32# following requirements:
33#   - It must be built with OpenGL support (--with-opengl).
34#   - If you build with wx < 3, it probably should be a "Unicode" build
35#     (--enable-unicode); wx >= 3 dropped support for non-Unicode builds.
36
37set -e
38
39WX_VERSION=3.0.2
40WX_SHA256=346879dc554f3ab8d6da2704f651ecb504a22e9d31c17ef5449b129ed711585d
41
42PROJ_VERSION=4.8.0
43PROJ_SHA256=2db2dbf0fece8d9880679154e0d6d1ce7c694dd8e08b4d091028093d87a9d1b5
44
45# Sadly, you can only specify one arch via -arch at a time (a restriction of
46# the wxWidgets build system).
47#
48# Using -arch x86_64 produces a build which will only work on 64-bit Intel
49# Macs, but that's probably all machines modern enough to worry about.
50# If you want a build which also works on 32 bit Intel Macs, then use
51# arch_flags='-arch i386' instead.
52#
53# To build for much older machines with a ppc CPU, you want arch_flags='-arch
54# ppc' instead.
55arch_flags='-arch x86_64'
56if [ -z "${WX_CONFIG+set}" ] && [ "x$1" != "x--no-install-wx" ] ; then
57  if test -x WXINSTALL/bin/wx-config ; then
58    :
59  else
60    prefix=`pwd`/WXINSTALL
61    wxtarball=wxWidgets-$WX_VERSION.tar.bz2
62    test -f "$wxtarball" || \
63      curl -L -O "http://downloads.sourceforge.net/project/wxwindows/$WX_VERSION/$wxtarball"
64    if echo "$WX_SHA256  $wxtarball" | shasum -a256 -c ; then
65      : # OK
66    else
67      echo "Checksum of downloaded file '$wxtarball' is incorrect, aborting."
68      exit 1
69    fi
70    echo "+++ Extracting $wxtarball"
71    test -d "wxWidgets-$WX_VERSION" || tar jxf "$wxtarball"
72    test -d "wxWidgets-$WX_VERSION/build" || mkdir "wxWidgets-$WX_VERSION/build"
73    cd "wxWidgets-$WX_VERSION/build"
74    ../configure --disable-shared --prefix="$prefix" --with-opengl --enable-unicode --disable-webview CC="gcc $arch_flags" CXX="g++ $arch_flags"
75    make -s
76    make -s install
77    cd ../..
78  fi
79  WX_CONFIG=`pwd`/WXINSTALL/bin/wx-config
80fi
81
82CC=`$WX_CONFIG --cc`
83CXX=`$WX_CONFIG --cxx`
84
85if [ "x$1" != "x--no-install-proj" ] ; then
86  if test -f PROJINSTALL/include/proj_api.h ; then
87    :
88  else
89    prefix=`pwd`/PROJINSTALL
90    projtarball=proj-$PROJ_VERSION.tar.gz
91    test -f "$projtarball" || \
92      curl -O "http://download.osgeo.org/proj/$projtarball"
93    if echo "$PROJ_SHA256  $projtarball" | shasum -a256 -c ; then
94      : # OK
95    else
96      echo "Checksum of downloaded file '$projtarball' is incorrect, aborting."
97      exit 1
98    fi
99    echo "+++ Extracting $projtarball"
100    test -d "proj-$PROJ_VERSION" || tar jxf "$projtarball"
101    test -d "proj-$PROJ_VERSION/build" || mkdir "proj-$PROJ_VERSION/build"
102    cd "proj-$PROJ_VERSION/build"
103    ../configure --disable-shared --prefix="$prefix" CC="$CC" CXX="$CXX"
104    make -s
105    make -s install
106    cd ../..
107  fi
108fi
109
110test -n "$WX_CONFIG" || WX_CONFIG=`which wx-config`
111if test -z "$WX_CONFIG" ; then
112  echo "WX_CONFIG not set and wx-config not on your PATH"
113  exit 1
114fi
115# Force static linking so the user doesn't need to install wxWidgets.
116WX_CONFIG=$WX_CONFIG' --static'
117rm -rf *.dmg Survex macosxtmp
118D=`pwd`/Survex
119T=`pwd`/macosxtmp
120./configure --prefix="$D" --bindir="$D" --mandir="$T" WX_CONFIG="$WX_CONFIG" CC="$CC" CXX="$CXX" CPPFLAGS=-I"`pwd`/PROJINSTALL/include" LDFLAGS=-L"`pwd`/PROJINSTALL/lib"
121make
122make install
123#mv Survex/survex Survex/Survex
124
125# Construct the Aven application bundle.
126mkdir Survex/Aven.app
127mkdir Survex/Aven.app/Contents
128mkdir Survex/Aven.app/Contents/MacOS
129mkdir Survex/Aven.app/Contents/Resources
130cp lib/Info.plist Survex/Aven.app/Contents
131printf APPLAVEN > Survex/Aven.app/Contents/PkgInfo
132cp -r "$D"/share/survex/* Survex/Aven.app/Contents/Resources/
133# FIXME: Generate Survex/Aven.app/Resources/Aven.icns
134mv Survex/aven Survex/Aven.app/Contents/MacOS/
135ln Survex/cavern Survex/Aven.app/Contents/MacOS/
136rm -f Survex/share/survex/unifont.pixelfont
137rm -rf Survex/share/survex/icons
138
139size=`du -s Survex|sed 's/[^0-9].*//'`
140# Allow 1000 extra sectors for various overheads (500 wasn't enough).
141sectors=`expr 1000 + "$size"`
142# Partition needs to be at least 4M and sectors are 512 bytes.
143if test "$sectors" -lt 8192 ; then
144  sectors=8192
145fi
146echo "Creating new blank image survex-macosx.dmg of $sectors sectors"
147# This creates the diskimage file and initialises it as an HFS+ volume.
148hdiutil create -sectors "$sectors" survex-macosx -layout NONE -fs HFS+ -volname Survex
149
150echo "Presenting image to the filesystems for mounting."
151# This will mount the image onto the Desktop.
152# Get the name of the device it is mounted on and the mount point.
153
154# man hdiutil says:
155# "The output of [hdiutil] attach has been stable since OS X 10.0 (though it
156# was called hdid(8) then) and is intended to be program-readable.  It consists
157# of the /dev node, a tab, a content hint (if applicable), another tab, and a
158# mount point (if any filesystems were mounted)."
159#
160# In reality, it seems there are also some spaces before each tab character.
161hdid_output=`hdid survex-macosx.dmg|tail -1`
162echo "Last line of hdid output was: $hdid_output"
163dev=`echo "$hdid_output"|sed 's!/dev/\([^        ]*\).*!\1!'`
164mount_point=`echo "$hdid_output"|sed 's!.*      !!'`
165
166echo "Device $dev mounted on $mount_point, copying files into image."
167ditto -rsrcFork Survex "$mount_point/Survex"
168ditto lib/INSTALL.OSX "$mount_point/INSTALL"
169
170echo "Detaching image."
171hdiutil detach "$dev"
172
173version=`sed 's/^VERSION *= *//p;d' Makefile`
174file=survex-macosx-$version.dmg
175echo "Compressing image file survex-macosx.dmg to $file"
176# This needs MacOS X 10.1 or above for unpacking - change UDZO to UDCO to allow
177# the dmg to be unpacked on 10.0 as well:
178hdiutil convert survex-macosx.dmg -format UDZO -o "$file"
179rm survex-macosx.dmg
180
181echo "$file created successfully."
Note: See TracBrowser for help on using the repository browser.