osx-build.sh revision 3c581d41c74a28556a4f251a41a78d98c30fc494
#
# Inkscape compilation and packaging script for Mac OS X
#
# Please see
# for more complete information
#
# Author:
# Jean-Olivier Irisson <jo.irisson@gmail.com>
# with information from
# Kees Cook
# Michael Wybrow
#
# Copyright (C) 2006-2010
# Released under GNU GPL, read the file 'COPYING' for more information
#
############################################################
# User modifiable parameters
#----------------------------------------------------------
# Configure flags
CONFFLAGS="--enable-osxapp"
# Libraries prefix (Warning: NO trailing slash)
# User name on Modevia
MODEVIA_NAME=""
############################################################
# Help message
#----------------------------------------------------------
help()
{
echo -e "
Compilation script for Inkscape on Mac OS X.
\033[1mUSAGE\033[0m
$0 [options] action[s]
\033[1mACTIONS & OPTIONS\033[0m
\033[1mh,help\033[0m
display this help message
\033[1mu,up,update\033[0m
update an existing checkout from bzr (run bzr pull)
\033[1ma,auto,autogen\033[0m
prepare configure script (run autogen.sh). This is only necessary
for a fresh bzr checkout or after make distclean.
\033[1mc,conf,configure\033[0m
configure the build (run configure). Edit your configuration
options in $0
\033[1m-p,--prefix\033[0m specify install prefix (configure step only)
\033[1mb,build\033[0m
build Inkscape (run make)
\033[1mi,install\033[0m
install the build products locally, inside the source
directory (run make install)
\033[1mp,pack,package\033[0m
package Inkscape in a double clickable .app bundle
\033[1m-s,--strip\033[0m remove debugging information in Inkscape package
\033[1m-py,--with-python\033[0m specify python modules path for inclusion into the app bundle
\033[1md,dist,distrib\033[0m
store Inkscape.app in a disk image (dmg) for distribution
\033[1mf,fat,universal\033[0m
compile inkscape as a universal binary as both i386 and ppc architectures
\033[1mput,upload\033[0m
upload the dmg and the associate info file on Modevia server
\033[1mall\033[0m
do everything (update, configure, build, install, package, distribute)
\033[1mEXAMPLES\033[0m
\033[1m$0 conf build install\033[0m
configure, build and install a dowloaded version of Inkscape in the default
directory, keeping debugging information.
\033[1m$0 u a c b -p ~ i -s -py ~/site-packages/ p d\033[0m
update an bzr checkout, prepare configure script, configure,
build and install Inkscape in the user home directory (~).
Then package Inkscape without debugging information,
with python packages from ~/site-packages/ and prepare
a dmg for distribution."
}
# Parameters
#----------------------------------------------------------
# Paths
HERE=`pwd`
# Defaults
if [ "$INSTALLPREFIX" = "" ]
then
fi
BZRUPDATE="f"
AUTOGEN="f"
CONFIGURE="f"
BUILD="f"
INSTALL="f"
PACKAGE="f"
DISTRIB="f"
UPLOAD="f"
UNIVERSAL="f"
STRIP=""
# Parse command line options
#----------------------------------------------------------
while [ "$1" != "" ]
do
case $1 in
h|help)
exit 1 ;;
all)
BZRUPDATE="t"
CONFIGURE="t"
BUILD="t"
INSTALL="t"
PACKAGE="t"
DISTRIB="t" ;;
BZRUPDATE="t" ;;
AUTOGEN="t" ;;
CONFIGURE="t" ;;
-u|--universal)
UNIVERSAL="t" ;;
b|build)
BUILD="t" ;;
i|install)
INSTALL="t" ;;
PACKAGE="t" ;;
DISTRIB="t" ;;
UPLOAD="t" ;;
-p|--prefix)
shift 1 ;;
-s|--strip)
STRIP="-s" ;;
PYTHON_MODULES="$2"
shift 1 ;;
*)
echo "Invalid command line option: $1"
exit 2 ;;
esac
shift 1
done
# Set environment variables
# ----------------------------------------------------------
export LIBPREFIX
# Specific environment variables
# automake seach path
export CPATH="$LIBPREFIX/include"
# configure search path
export CPPFLAGS="-I$LIBPREFIX/include"
# export CPPFLAGS="-I$LIBPREFIX/include -I /System/Library/Frameworks/Carbon.framework/Versions/Current/Headers"
export LDFLAGS="-L$LIBPREFIX/lib"
# compiler arguments
export CFLAGS="-O3 -Wall"
if [[ "$UNIVERSAL" == "t" ]]
then
fi
# Actions
# ----------------------------------------------------------
if [[ "$BZRUPDATE" == "t" ]]
then
cd $SRCROOT
status=$?
echo -e "\nBZR update failed"
exit $status
fi
cd $HERE
fi
# Fetch some information
if [[ "$OSXMINORVER" == "10.3" ]]; then
TARGETNAME="PANTHER"
TARGETVERSION="10.3"
elif [[ "$OSXMINORVER" == "10.4" ]]; then
TARGETNAME="TIGER"
TARGETVERSION="10.4"
elif [[ "$OSXMINORVER" == "10.5" ]]; then
TARGETNAME="LEOPARD+"
TARGETVERSION="10.5+"
fi
if [[ "$UNIVERSAL" == "t" ]]; then
TARGETARCH="UNIVERSAL"
fi
NEWNAME="Inkscape-r$REVISION-$TARGETVERSION-$TARGETARCH"
if [[ "$UPLOAD" == "t" ]]
then
# If we are uploading, we are probably building nightlies and don't
# need to build a new one if the repository hasn't changed since the
# last. Hence, if a dmg for this version already exists, then just
# exit here.
if [[ -f "$DMGFILE" ]]; then
echo -e "\nRepository hasn't changed: $DMGFILE already exists."
exit 0
fi
fi
if [[ "$AUTOGEN" == "t" ]]
then
cd $SRCROOT
if [[ "$UNIVERSAL" == "t" ]]
then
# Universal builds have to be built with the option
# --disable-dependency-tracking. So they need to be
# started from scratch each time.
if [[ -f Makefile ]]; then
fi
fi
status=$?
echo -e "\nautogen failed"
exit $status
fi
cd $HERE
fi
if [[ "$CONFIGURE" == "t" ]]
then
cd $SRCROOT
if [ ! -f configure ]
then
echo "Configure script not found in $SRCROOT. Run '$0 autogen' first"
exit 1
fi
status=$?
echo -e "\nConfigure failed"
exit $status
fi
cd $HERE
fi
if [[ "$BUILD" == "t" ]]
then
cd $SRCROOT
status=$?
echo -e "\nBuild failed"
exit $status
fi
cd $HERE
fi
if [[ "$INSTALL" == "t" ]]
then
cd $SRCROOT
status=$?
echo -e "\nInstall failed"
exit $status
fi
cd $HERE
fi
if [[ "$PACKAGE" == "t" ]]
then
# Test the existence of required files
then
echo "The inkscape executable \"$INSTALLPREFIX/bin/inkscape\" cound not be found."
exit 1
fi
if [ ! -e $SRCROOT/Info.plist ]
then
echo "The file \"$SRCROOT/Info.plist\" could not be found, please re-run configure."
exit 1
fi
# Set python command line option (if PYTHON_MODULES location is not empty, then add the python call to the command line, otherwise, stay empty)
if [[ "$PYTHON_MODULES" != "" ]]; then
# TODO: fix this: it does not allow for spaces in the PATH under this form and cannot be quoted
fi
# Create app bundle
status=$?
echo -e "\nApplication bundle creation failed"
exit $status
fi
fi
function checkversion {
if [[ "$?" == "1" ]]; then
DEPVER="Not included"
fi
echo "$DEPVER"
}
if [[ "$DISTRIB" == "t" ]]
then
# Create dmg bundle
./osx-dmg.sh -p "Inkscape.app"
status=$?
echo -e "\nDisk image creation failed"
exit $status
fi
# Prepare information file
For OS X Ver $TARGETNAME ($TARGETVERSION)
Architecture $TARGETARCH
Build system information:
OS X Version $OSXVERSION
Architecture $ARCH
Included dependency versions:
GTK `checkversion gtk+-2.0`
GTKmm `checkversion gtkmm-2.4`
Cairo `checkversion cairo`
Cairomm `checkversion cairomm-1.0`
CairoPDF `checkversion cairo-pdf`
Fontconfig `checkversion fontconfig`
Pango `checkversion pango`
LibXML2 `checkversion libxml-2.0`
LibXSLT `checkversion libxslt`
LibSigC++ `checkversion sigc++-2.0`
LibPNG `checkversion libpng`
GSL `checkversion gsl`
ImageMagick `checkversion ImageMagick`
Poppler `checkversion poppler-cairo`
LittleCMS `checkversion lcms`
GnomeVFS `checkversion gnome-vfs-2.0`
LibWPG `checkversion libwpg-0.1`
Configure options:
if [[ "$STRIP" == "t" ]]; then
echo "Debug info
no" >> $INFOFILE
else
echo "Debug info
yes" >> $INFOFILE
fi
fi
if [[ "$UPLOAD" == "t" ]]
then
# Provide default for user name on modevia
if [[ "$MODEVIA_NAME" == "" ]]; then
fi
# Uploasd file
status=$?
echo -e "\nUpload failed"
exit $status
fi
fi
# open a Finder window here to admire what we just produced
open .
fi
exit 0