source: git/buildmacosx.sh @ 90dd91b

RELEASE/1.0
Last change on this file since 90dd91b was 90dd91b, checked in by Olly Betts <olly@…>, 13 years ago

Backport changes from 1.2.0:
buildmacosx.sh: Sync useful changes from 1.2.0.

git-svn-id: file:///home/survex-svn/survex/branches/1.0@3672 4b37db11-9a0c-4f06-9ece-9ab7cdaee568

  • Property mode set to 100755
File size: 5.3 KB
RevLine 
[1ecbe29]1#!/bin/sh
2#
[d9b7e9b]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#
[90dd91b]6# Currently (at least if built on 10.6) at least 10.6 is required to run.
[1ecbe29]7#
[90dd91b]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.1.X directory like so:
12#
13#   ./buildmacosx.sh
[f059ae5]14#
[e53ec10]15# This will automatically download and temporarily install wxWidgets
[f059ae5]16# (this script is smart enough not to download or build it if it already
17# has).
18#
[e53ec10]19# If you already have wxWidgets installed permanently, use:
[f059ae5]20#
[90dd91b]21#   ./buildmacosx.sh --no-install-wx
[1ecbe29]22#
[e53ec10]23# If wxWidgets is installed somewhere such that wx-config isn't on your
[1ecbe29]24# PATH you need to indicate where wx-config is by running this script
25# something like this:
26#
[90dd91b]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#   - It must be the Carbon version.
35#   - It probably should be a "Unicode" build (--enable-unicode).
[1ecbe29]36
37set -e
[f059ae5]38
[90dd91b]39# 2.8.12 doesn't work:
40# /bin/sh: line 0: cd: ../build/bakefiles/wxpresets/presets: No such file or directory
41# cp: wx.bkl: No such file or directory
42# [...]
43WXVERSION=2.8.11
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 i386 produces a build which will also work on 64-bit Intel Macs.
49# If you want a build which *only* works on 64 bit Intel Macs, then use
50# arch_flags='-arch x86_64' instead.
51#
52# To build for older machines with a ppc CPU, you want arch_flags='-arch ppc'
53# instead.
54arch_flags='-arch i386'
55if [ -z "${WX_CONFIG+set}" ] && [ "x$1" != "x--no-install-wx" ] ; then
[f059ae5]56  if test -x WXINSTALL/bin/wx-config ; then
57    :
58  else
[de10f8d]59    prefix=`pwd`/WXINSTALL
[90dd91b]60    wxtarball=wxWidgets-$WXVERSION.tar.bz2
61    test -f "$wxtarball" || \
62      curl -O "ftp://ftp.wxwidgets.org/pub/$WXVERSION/$wxtarball"
63    echo "+++ Extracting $wxtarball"
64    test -d "wxWidgets-$WXVERSION" || tar jxf "$wxtarball"
65    test -d "wxWidgets-$WXVERSION/build" || "mkdir wxWidgets-$WXVERSION/build"
66    cd "wxWidgets-$WXVERSION/build"
67    ../configure --disable-shared --prefix="$prefix" --with-opengl --disable-unicode CC="gcc $arch_flags" CXX="g++ $arch_flags"
[f059ae5]68    make -s
69    make -s install
70    cd ../..
71  fi
[90dd91b]72  WX_CONFIG=`pwd`/WXINSTALL/bin/wx-config
[f059ae5]73fi
74
[90dd91b]75test -n "$WX_CONFIG" || WX_CONFIG=`which wx-config`
76if test -z "$WX_CONFIG" ; then
77  echo "WX_CONFIG not set and wx-config not on your PATH"
[1ecbe29]78  exit 1
79fi
[e53ec10]80# Force static linking so the user doesn't need to install wxWidgets.
[90dd91b]81WX_CONFIG=$WX_CONFIG' --static'
[1955c1c]82rm -rf *.dmg Survex macosxtmp
[de10f8d]83D=`pwd`/Survex
84T=`pwd`/macosxtmp
[90dd91b]85./configure --prefix="$D" --bindir="$D" --mandir="$T" CFLAGS=-DMACOSX_BUNDLE WX_CONFIG="$WX_CONFIG" CC="gcc $arch_flags" CXX="g++ $arch_flags"
[1ecbe29]86make
87make install
88#mv Survex/survex Survex/Survex
89
[90dd91b]90# Construct the Aven application bundle.
91mkdir Survex/Aven.app
92mkdir Survex/Aven.app/Contents
93mkdir Survex/Aven.app/Contents/MacOS
94mkdir Survex/Aven.app/Contents/Resources
95cp lib/Info.plist Survex/Aven.app/Contents
96printf APPLAVEN > Survex/Aven.app/Contents/PkgInfo
97cp -r "$D"/share/survex/* Survex/Aven.app/Contents/Resources/
98# FIXME: Generate Survex/Aven.app/Resources/Aven.icns
99mv Survex/aven Survex/Aven.app/Contents/MacOS/
100rm -rf Survex/share/survex/icons
101
[1ecbe29]102size=`du -s Survex|sed 's/[^0-9].*//'`
103# Allow 1000 extra sectors for various overheads (500 wasn't enough).
[90dd91b]104sectors=`expr 1000 + "$size"`
[1ecbe29]105# Partition needs to be at least 4M and sectors are 512 bytes.
[90dd91b]106if test "$sectors" -lt 8192 ; then
[1ecbe29]107  sectors=8192
108fi
109echo "Creating new blank image survex-macosx.dmg of $sectors sectors"
[728d23e]110# This creates the diskimage file and initialises it as an HFS+ volume.
[90dd91b]111hdiutil create -sectors "$sectors" survex-macosx -layout NONE -fs HFS+ -volname Survex
[1ecbe29]112
[90dd91b]113echo "Presenting image to the filesystems for mounting."
[1ecbe29]114# This will mount the image onto the Desktop.
[90dd91b]115# Get the name of the device it is mounted on and the mount point.
116
117# man hdiutil says:
118# "The output of [hdiutil] attach has been stable since OS X 10.0 (though it
119# was called hdid(8) then) and is intended to be program-readable.  It consists
120# of the /dev node, a tab, a content hint (if applicable), another tab, and a
121# mount point (if any filesystems were mounted)."
122#
123# In reality, it seems there are also some spaces before each tab character.
124hdid_output=`hdid survex-macosx.dmg|tail -1`
125echo "Last line of hdid output was: $hdid_output"
126dev=`echo "$hdid_output"|sed 's!/dev/\([^        ]*\).*!\1!'`
127mount_point=`echo "$hdid_output"|sed 's!.*[      ]!!'`
128
129echo "Device $dev mounted on $mount_point, copying files into image."
130ditto -rsrcFork Survex "$mount_point/Survex"
131ditto lib/INSTALL.OSX "$mount_point/INSTALL"
132
[1955c1c]133echo "Detaching image."
[90dd91b]134hdiutil detach "$dev"
[1ecbe29]135
[de10f8d]136version=`sed 's/.*AM_INIT_AUTOMAKE([^,]*, *\([0-9.]*\).*/\1/p;d' configure.in`
[90dd91b]137file=survex-macosx-$version.dmg
[1ecbe29]138echo "Compressing image file survex-macosx.dmg to $file"
[d9b7e9b]139# This needs MacOS X 10.1 or above for unpacking - change UDZO to UDCO to allow
140# the dmg to be unpacked on 10.0 as well:
141hdiutil convert survex-macosx.dmg -format UDZO -o "$file"
142rm survex-macosx.dmg
[1ecbe29]143
144echo "$file created successfully."
Note: See TracBrowser for help on using the repository browser.