source: git/buildmacosx.sh @ 58e9ce0

RELEASE/1.2debug-cidebug-ci-sanitisersstereowalls-datawalls-data-hanging-as-warning
Last change on this file since 58e9ce0 was 58e9ce0, checked in by Olly Betts <olly@…>, 9 years ago

buildmacosx.sh: Remove unused files and copies of files.

  • Property mode set to 100755
File size: 7.8 KB
RevLine 
[6df03c1]1#!/bin/sh
2#
[0580c6a]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#
[36316cb]6# Currently (at least if built on 10.6) at least 10.6 is required to run.
[2032841]7#
[cc83ec9]8# You probably need to have Xcode installed - you can download this for free
9# from Apple: http://developer.apple.com/xcode/
10#
[d959ab2]11# Run from the unpacked survex-1.2.X directory like so:
[6df03c1]12#
[2032841]13#   ./buildmacosx.sh
[0580c6a]14#
[1324d6c]15# This will automatically download and temporarily install wxWidgets
[0580c6a]16# (this script is smart enough not to download or build it if it already
17# has).
18#
[1324d6c]19# If you already have wxWidgets installed permanently, use:
[0580c6a]20#
[2032841]21#   ./buildmacosx.sh --no-install-wx
[6df03c1]22#
[1324d6c]23# If wxWidgets is installed somewhere such that wx-config isn't on your
[6df03c1]24# PATH you need to indicate where wx-config is by running this script
25# something like this:
26#
[b7510ee]27#   env WX_CONFIG=/path/to/wx-config ./buildmacosx.sh
[b72f4b5]28#
[2032841]29# (If you set WX_CONFIG, there's no need to pass --no-install-wx).
30#
[1324d6c]31# If using a pre-installed wxWidgets, note that it must satisfy the
[b72f4b5]32# following requirements:
33#   - It must be built with OpenGL support (--with-opengl).
[9aa30e7]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.
[6df03c1]36
37set -e
[0580c6a]38
[fb880024]39WX_VERSION=3.0.2
[2f92df0]40WX_SHA256=346879dc554f3ab8d6da2704f651ecb504a22e9d31c17ef5449b129ed711585d
[b72f4b5]41
[fb880024]42PROJ_VERSION=4.8.0
43PROJ_SHA256=2db2dbf0fece8d9880679154e0d6d1ce7c694dd8e08b4d091028093d87a9d1b5
44
[cc83ec9]45# Sadly, you can only specify one arch via -arch at a time (a restriction of
46# the wxWidgets build system).
47#
[95f0fb2]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.
[cc83ec9]52#
[95f0fb2]53# To build for much older machines with a ppc CPU, you want arch_flags='-arch
54# ppc' instead.
55arch_flags='-arch x86_64'
[2032841]56if [ -z "${WX_CONFIG+set}" ] && [ "x$1" != "x--no-install-wx" ] ; then
[0580c6a]57  if test -x WXINSTALL/bin/wx-config ; then
58    :
59  else
[deb58b87]60    prefix=`pwd`/WXINSTALL
[fb880024]61    wxtarball=wxWidgets-$WX_VERSION.tar.bz2
[56980d4e]62    test -f "$wxtarball" || \
[4dcf45a]63      curl -L -O "http://downloads.sourceforge.net/project/wxwindows/$WX_VERSION/$wxtarball"
[d752afd]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
[56980d4e]70    echo "+++ Extracting $wxtarball"
[fb880024]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"
[1fce809]74    # Compliation of wx 3.0.2 fails on OS X 10.10.1 with webview enabled.
75    # A build with liblzma enabled doesn't work on OS X 10.6.8.
76    ../configure --disable-shared --prefix="$prefix" \
77        --with-opengl --enable-unicode \
78        --disable-webview --without-liblzma \
79        CC="gcc $arch_flags" CXX="g++ $arch_flags"
[0580c6a]80    make -s
81    make -s install
82    cd ../..
83  fi
[b7510ee]84  WX_CONFIG=`pwd`/WXINSTALL/bin/wx-config
[0580c6a]85fi
86
[fb880024]87CC=`$WX_CONFIG --cc`
88CXX=`$WX_CONFIG --cxx`
89
90if [ "x$1" != "x--no-install-proj" ] ; then
91  if test -f PROJINSTALL/include/proj_api.h ; then
92    :
93  else
94    prefix=`pwd`/PROJINSTALL
95    projtarball=proj-$PROJ_VERSION.tar.gz
96    test -f "$projtarball" || \
97      curl -O "http://download.osgeo.org/proj/$projtarball"
98    if echo "$PROJ_SHA256  $projtarball" | shasum -a256 -c ; then
99      : # OK
100    else
101      echo "Checksum of downloaded file '$projtarball' is incorrect, aborting."
102      exit 1
103    fi
104    echo "+++ Extracting $projtarball"
105    test -d "proj-$PROJ_VERSION" || tar jxf "$projtarball"
106    test -d "proj-$PROJ_VERSION/build" || mkdir "proj-$PROJ_VERSION/build"
107    cd "proj-$PROJ_VERSION/build"
108    ../configure --disable-shared --prefix="$prefix" CC="$CC" CXX="$CXX"
109    make -s
110    make -s install
111    cd ../..
112  fi
113fi
114
[b7510ee]115test -n "$WX_CONFIG" || WX_CONFIG=`which wx-config`
116if test -z "$WX_CONFIG" ; then
117  echo "WX_CONFIG not set and wx-config not on your PATH"
[6df03c1]118  exit 1
119fi
[1324d6c]120# Force static linking so the user doesn't need to install wxWidgets.
[b7510ee]121WX_CONFIG=$WX_CONFIG' --static'
[0580c6a]122rm -rf *.dmg Survex macosxtmp
[deb58b87]123D=`pwd`/Survex
124T=`pwd`/macosxtmp
[fb880024]125./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"
[6df03c1]126make
127make install
128#mv Survex/survex Survex/Survex
129
[b72f4b5]130# Construct the Aven application bundle.
[9e44985]131mkdir -p Survex/Aven.app/Contents/MacOS Survex/Aven.app/Contents/Resources
[2032841]132cp lib/Info.plist Survex/Aven.app/Contents
133printf APPLAVEN > Survex/Aven.app/Contents/PkgInfo
[56980d4e]134cp -r "$D"/share/survex/* Survex/Aven.app/Contents/Resources/
[58e9ce0]135rm Survex/Aven.app/Contents/Resources/bcra*.svx
136rm Survex/Aven.app/Contents/Resources/icons/3d.png
137rm Survex/Aven.app/Contents/Resources/icons/err.png
138rm Survex/Aven.app/Contents/Resources/icons/plt.png
139rm Survex/Aven.app/Contents/Resources/icons/pos.png
140rm Survex/Aven.app/Contents/Resources/icons/svx.png
[b72f4b5]141mv Survex/aven Survex/Aven.app/Contents/MacOS/
[87aa9ce]142ln Survex/cavern Survex/Aven.app/Contents/MacOS/
[58e9ce0]143mv Survex/share/doc/survex Survex/Docs
[1aa3fb7]144rm -f Survex/share/survex/unifont.pixelfont
[b72f4b5]145rm -rf Survex/share/survex/icons
[58e9ce0]146rm -rf Survex/share/applications Survex/share/mime-info Survex/share/pixmaps
[b72f4b5]147
[e157b8f]148# Create .icns files in the bundle's "Resources" directory.
[4cc264e]149for i in Aven svxedit 3d err plt pos svx ; do
[e157b8f]150  unzip -d Survex/Aven.app/Contents/Resources "lib/icons/$i.iconset.zip"
151  iconutil --convert icns "Survex/Aven.app/Contents/Resources/$i.iconset"
152  rm -rf "Survex/Aven.app/Contents/Resources/$i.iconset"
153done
154
[20dfc50]155# Construct the svxedit application bundle.
156mkdir -p Survex/svxedit.App/Contents/MacOS Survex/svxedit.App/Contents/Resources
157cp lib/svxedit_Info.plist Survex/svxedit.App/Contents/Info.plist
158printf APPLSVXE > Survex/svxedit.App/Contents/PkgInfo
[c1a9449]159mv Survex/svxedit Survex/svxedit_wrap Survex/svxedit.App/Contents/MacOS/
[20dfc50]160
161mv Survex/Aven.app/Contents/Resources/svxedit.icns \
162  Survex/svxedit.App/Contents/Resources
163ln Survex/Aven.app/Contents/Resources/svx.icns \
164  Survex/svxedit.App/Contents/Resources
165
[6df03c1]166size=`du -s Survex|sed 's/[^0-9].*//'`
167# Allow 1000 extra sectors for various overheads (500 wasn't enough).
[56980d4e]168sectors=`expr 1000 + "$size"`
[6df03c1]169# Partition needs to be at least 4M and sectors are 512 bytes.
[56980d4e]170if test "$sectors" -lt 8192 ; then
[6df03c1]171  sectors=8192
172fi
173echo "Creating new blank image survex-macosx.dmg of $sectors sectors"
[0580c6a]174# This creates the diskimage file and initialises it as an HFS+ volume.
[56980d4e]175hdiutil create -sectors "$sectors" survex-macosx -layout NONE -fs HFS+ -volname Survex
[6df03c1]176
[b72f4b5]177echo "Presenting image to the filesystems for mounting."
[6df03c1]178# This will mount the image onto the Desktop.
[ab66f3c]179# Get the name of the device it is mounted on and the mount point.
180
181# man hdiutil says:
182# "The output of [hdiutil] attach has been stable since OS X 10.0 (though it
183# was called hdid(8) then) and is intended to be program-readable.  It consists
184# of the /dev node, a tab, a content hint (if applicable), another tab, and a
185# mount point (if any filesystems were mounted)."
[f04ae51]186#
187# In reality, it seems there are also some spaces before each tab character.
[ab66f3c]188hdid_output=`hdid survex-macosx.dmg|tail -1`
189echo "Last line of hdid output was: $hdid_output"
[f04ae51]190dev=`echo "$hdid_output"|sed 's!/dev/\([^        ]*\).*!\1!'`
[fc4d068]191mount_point=`echo "$hdid_output"|sed 's!.*      !!'`
[ab66f3c]192
193echo "Device $dev mounted on $mount_point, copying files into image."
194ditto -rsrcFork Survex "$mount_point/Survex"
195ditto lib/INSTALL.OSX "$mount_point/INSTALL"
196
[0580c6a]197echo "Detaching image."
[56980d4e]198hdiutil detach "$dev"
[6df03c1]199
[d260645]200version=`sed 's/^VERSION *= *//p;d' Makefile`
[56980d4e]201file=survex-macosx-$version.dmg
[6df03c1]202echo "Compressing image file survex-macosx.dmg to $file"
[7303bda]203# UDBZ means the resultant disk image will only open on OS X 10.4 or above.
204# UDZO works on 10.1 and later, but is larger,  UDCO works on 10.0 as well.
205hdiutil convert survex-macosx.dmg -format UDBZ -o "$file"
[0580c6a]206rm survex-macosx.dmg
[6df03c1]207
208echo "$file created successfully."
Note: See TracBrowser for help on using the repository browser.