Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/macosx/build-gtk.sh
diff options
context:
space:
mode:
authorYves Combe <ycombe@src.gnome.org>2007-03-20 07:42:13 (GMT)
committer Yves Combe <ycombe@src.gnome.org>2007-03-20 07:42:13 (GMT)
commitec478d917af7544f239da75169c33fe9fcdb2ad5 (patch)
tree5c54b9a94269cefc5a35af6277014499b07b49c5 /macosx/build-gtk.sh
parentab5c150898c44a3ad58cc70673d90c4696b1ebc0 (diff)
Import Gtk build script for macsox.
svn path=/trunk/; revision=2530
Diffstat (limited to 'macosx/build-gtk.sh')
-rwxr-xr-xmacosx/build-gtk.sh750
1 files changed, 750 insertions, 0 deletions
diff --git a/macosx/build-gtk.sh b/macosx/build-gtk.sh
new file mode 100755
index 0000000..7d5e14d
--- /dev/null
+++ b/macosx/build-gtk.sh
@@ -0,0 +1,750 @@
+#!/bin/sh
+#
+# Based on the Imendio 'build-gtk.sh' script.
+#
+# Inkscape build additions by Michael Wybrow <mjwybrow@users.sf.net>
+#
+# See the following page for build instructions:
+# http://developer.imendio.com/projects/gtk-macosx/build-instructions
+#
+# Usage:
+# export PREFIX=/your/install/prefix
+# ./build-gtk bootstrap
+# ./build-gtk build inkscape
+#
+
+# XXX: Check for xargs with -i
+#
+# In lib/pkgconfig/freetpe2.pc
+#
+# - Libs: -L${libdir} -lfreetype -lz
+# + Libs: -L${libdir} -lfreetype -lz -Wl,-framework,CoreServices,-framework,ApplicationServices
+#
+# bin/freetype-config
+#
+# - libs="-lfreetype -lz"
+# + libs="-lfreetype -lz -Wl,-framework,CoreServices,-framework,ApplicationServices"
+#
+# In lib/pkgconfig/fontconfig.pc
+# Add -lexpat
+#
+UNIVERSAL_BUILD=Yes
+STABLE_BUILD=No
+
+version=1.3.1-inkscape
+
+
+SCRIPTDIR=`dirname $0`
+
+export PREFIX=${PREFIX-~/opt/gtk-UB}
+export PATH=$PREFIX/bin:/usr/bin:$PATH
+#export PATH=$PREFIX/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:
+export LIBTOOLIZE=$PREFIX/bin/libtoolize
+
+# FIXME: We might need some more intelligent way to get the path here.
+export PYTHONPATH=$PREFIX/lib/python2.3/site-packages:$PREFIX/lib/python2.3/site-packages/gtk-2.0
+
+# Needed for glib etc to pick up gettext
+export LDFLAGS=-L$PREFIX/lib
+export CPPFLAGS=-I$PREFIX/include
+
+export XDG_DATA_DIRS=$PREFIX/share
+export PERL5LIB=$PREFIX/lib/perl5/site_perl
+
+COMMON_OPTIONS="--prefix=$PREFIX --disable-static --enable-shared \
+--disable-gtk-doc --disable-scrollkeeper"
+
+#export MAKEFLAGS=-j2
+
+if [ "x$PANTHER_BUILD" = "xYes" ]; then
+ # XXX: Check the machine is PPC
+ # or rework to have things like pkg-config built natively.
+
+ # Overwrite some build settings.
+ export SDK="/Developer/SDKs/MacOSX10.3.9.sdk"
+ export MACOSX_DEPLOYMENT_TARGET=10.3
+ export CFLAGS="-isysroot ${SDK} -arch ppc"
+ export CXXFLAGS="-isysroot ${SDK} -arch ppc"
+
+ export STABLE_BUILD=Yes
+fi
+
+if [ "x$UNIVERSAL_BUILD" = "xYes" ]; then
+ COMMON_OPTIONS="$COMMON_OPTIONS --disable-dependency-tracking"
+
+ export SDK="/Developer/SDKs/MacOSX10.4u.sdk"
+ export MACOSX_DEPLOYMENT_TARGET=10.4
+ #export MACOSX_DEPLOYMENT_TARGET_i386=10.4
+ #export MACOSX_DEPLOYMENT_TARGET_ppc=10.3
+ export CFLAGS="-isysroot ${SDK} -arch ppc -arch i386"
+ export CXXFLAGS="-isysroot ${SDK} -arch ppc -arch i386"
+
+ CONFIGURE_pkg_config="--with-pc-path=$PREFIX/lib/pkgconfig:/usr/lib/pkgconfig --enable-indirect-deps --disable-dependency-tracking"
+
+ CONFIGURE_libpng="--disable-dependency-tracking"
+ PRECONFIGURE_libpng="eval CPPFLAGS='$CPPFLAGS -DPNG_NO_ASSEMBLER_CODE'"
+
+ CONFIGURE_tiff="--disable-dependency-tracking"
+
+ POSTCONFIGURE_jpeg_6b="patch_libtool_dylib"
+
+ CONFIGURE_gc="--disable-dependency-tracking"
+ POSTCONFIGURE_gc="patch_libtool_dylib"
+ PRECONFIGURE_gc="eval CFLAGS='$CFLAGS -DUSE_GENERIC_PUSH_REGS'"
+
+ POSTCONFIGURE_freetype="eval cd builds/unix/ && pwd && patch_libtool_dylib && cd ../.."
+
+ CONFIGURE_fontconfig="--disable-dependency-tracking --disable-docs"
+ POSTCONFIGURE_fontconfig="eval cd fc-arch && make all && cd .. && perl -pi~ -e 's|#define FC_ARCHITECTURE \"x86\"|#ifdef __ppc__\n#define FC_ARCHITECTURE \"ppc\"\n#else\n#define FC_ARCHITECTURE \"x86\"\n#endif|g' fc-arch/fcarch.h"
+
+ PRECONFIGURE_cairo="export ax_cv_c_float_words_bigendian=no"
+ CONFIGURE_cairo="--disable-dependency-tracking --enable-shared --enable-quartz --disable-atsui --disable-glitz ax_cv_c_float_words_bigendian=no"
+ POSTCONFIGURE_cairo="eval patch_libtool_dylib && export ax_cv_c_float_words_bigendian='' && perl -pi~ -e 's|/\* #undef FLOAT_WORDS_BIGENDIAN \*/|#ifdef __ppc__\n#define FLOAT_WORDS_BIGENDIAN 1\n#endif|g;s|/\* #undef WORDS_BIGENDIAN \*/|#ifdef __ppc__\n#define WORDS_BIGENDIAN 1\n#endif|g' config.h && perl -pi~ -e 's|DIST_SUBDIRS = pixman src boilerplate test perf doc|DIST_SUBDIRS = pixman src test perf doc|g;s|am__append_1 = boilerplate test|am__append_1 = test|g' Makefile"
+
+ CONFIGURE_glitz="--disable-dependency-tracking"
+
+ CONFIGURE_lcms="--disable-dependency-tracking"
+
+ CONFIGURE_glib="$COMMON_OPTIONS"
+ POSTCONFIGURE_glib="eval make glibconfig.h config.h && cp $DIRNAME/{glib,}config.h ."
+ #POSTCONFIGURE_glib="eval make glibconfig.h && perl -pi~ -e 's|#define G_BYTE_ORDER G_LITTLE_ENDIAN|#include <machine/endian.h>\n#define G_BYTE_ORDER __DARWIN_BYTE_ORDER|g' glibconfig.h"
+
+ CONFIGURE_pango="$COMMON_OPTIONS"
+ POSTCONFIGURE_pango="eval perl -pi~ -e 's|SUBDIRS = pango modules examples docs tools tests|SUBDIRS = pango modules docs tools tests|g' Makefile && perl -pi~ -e 's|harfbuzz_dump_LDADD = |harfbuzz_dump_LDADD = -Xlinker -framework -Xlinker CoreServices -Xlinker -framework -Xlinker ApplicationServices|g' pango/opentype/Makefile"
+
+ CONFIGURE_gtk="$COMMON_OPTIONS --enable-explicit-deps=yes"
+ POSTCONFIGURE_gtk="patch_libtool_dylib"
+
+ CONFIGURE_atk="$COMMON_OPTIONS"
+
+ CONFIGURE_libxml2="$COMMON_OPTIONS"
+
+ CONFIGURE_libsigc="$COMMON_OPTIONS"
+ POSTCONFIGURE_libsigc="patch_libtool_dylib"
+
+ CONFIGURE_glibmm="$COMMON_OPTIONS"
+
+ CONFIGURE_cairomm="$COMMON_OPTIONS"
+
+ CONFIGURE_gtkmm="$COMMON_OPTIONS --disable-examples --disable-demos"
+ POSTCONFIGURE_gtkmm="patch_libtool_dylib"
+
+ CONFIGURE_libxslt="$COMMON_OPTIONS"
+
+ CONFIGURE_popt="$COMMON_OPTIONS"
+ POSTCONFIGURE_popt="patch_libtool_dylib"
+
+ POSTCONFIGURE_pygtk="eval perl -pi~ -e 's|SUBDIRS = (.*) docs|SUBDIRS = \$1|g' Makefile"
+
+ POSTCONFIGURE_gnuchess="eval perl -pi~ -e 's|static pthread_t input_thread;|pthread_t input_thread;|g' src/input.c"
+
+elif [ "x$STABLE_BUILD" = "xYes" ]; then
+ COMMON_OPTIONS="$COMMON_OPTIONS --disable-dependency-tracking"
+
+ CONFIGURE_pkg_config="--with-pc-path=$PREFIX/lib/pkgconfig:/usr/X11R6/lib/pkgconfig --enable-indirect-deps --disable-dependency-tracking"
+
+ CONFIGURE_libpng="--disable-dependency-tracking"
+
+ CONFIGURE_tiff="--disable-dependency-tracking"
+
+ CONFIGURE_gc="--disable-dependency-tracking"
+
+ CONFIGURE_fontconfig="--disable-dependency-tracking --disable-docs"
+
+ CONFIGURE_cairo="--disable-dependency-tracking --enable-shared --disable-quartz --disable-atsui --enable-glitz ax_cv_c_float_words_bigendian=no"
+
+ CONFIGURE_glitz="--disable-dependency-tracking"
+
+ CONFIGURE_lcms="--disable-dependency-tracking"
+
+ CONFIGURE_glib="$COMMON_OPTIONS"
+
+ CONFIGURE_pango="$COMMON_OPTIONS"
+ POSTCONFIGURE_pango="eval perl -pi~ -e 's|SUBDIRS = pango modules examples docs tools tests|SUBDIRS = pango modules docs tools tests|g' Makefile && perl -pi~ -e 's|harfbuzz_dump_LDADD = |harfbuzz_dump_LDADD = -Xlinker -framework -Xlinker CoreServices -Xlinker -framework -Xlinker ApplicationServices|g' pango/opentype/Makefile"
+
+ CONFIGURE_gtk="$COMMON_OPTIONS"
+
+ CONFIGURE_atk="$COMMON_OPTIONS"
+
+ CONFIGURE_libxml2="$COMMON_OPTIONS"
+
+ CONFIGURE_libsigc="$COMMON_OPTIONS"
+
+ CONFIGURE_glibmm="$COMMON_OPTIONS"
+
+ CONFIGURE_cairomm="$COMMON_OPTIONS"
+
+ CONFIGURE_gtkmm="$COMMON_OPTIONS --disable-examples --disable-demos"
+
+ CONFIGURE_libxslt="$COMMON_OPTIONS"
+
+ CONFIGURE_popt="$COMMON_OPTIONS"
+
+fi
+
+
+# Support install-check from jhbuild to speed up compilation
+if [ -x $PREFIX/bin/install-check ]; then
+ export INSTALL=$PREFIX/bin/install-check
+fi
+
+
+SOURCE=${SOURCE-$HOME/Source/gtk_UB}
+CAIROCVSROOT=${CAIROCVSROOT-:pserver:anoncvs@cvs.freedesktop.org:/cvs/cairo}
+INKSCAPESVNURL="https://svn.sourceforge.net/svnroot/inkscape"
+GNOMESVNURL=${GNOMESVNURL-https://svn.gnome.org/svn}
+
+if [ x$1 = xrun ]; then
+ cmd="$2"
+ shift 2
+ exec $cmd $*
+fi
+
+if [ $# -eq 0 -o "x`echo "$*" | grep shell`" = xshell ]; then
+ # Can be used in .bashrc to set a fancy prompt...
+ export INSIDE_GTK_BUILD=1
+ bash
+ exit 0
+fi
+
+CORE_MODULES="cairo gnome-common glib pango atk gtk+"
+EXTRA_MODULES="libxml2 libxslt loudmouth libglade gossip gtk-engines"
+PYGTK_MODULES=" pycairo pygobject pygtk"
+INKSCAPE_MODULES="$CORE_MODULES libxml2 libxslt gc lcms libsigc++ doxygen glibmm cairomm gtkmm popt inkscape"
+GCOMPRIS_DEPS_MODULES="libart_lgpl libglade libgnomecanvas pysqlite gnuchess gnucap"
+
+# Could add those (orbit requires popt though)
+MORE_MODULES="libIDL ORBit2 gconf"
+
+function print_usage
+{
+ echo
+ echo "GTK+ on Mac OS X build script version $version."
+ echo
+ echo "Usage:"
+ echo "`basename $0` [bootstrap|[shell]|run <cmd>|build [<modules>]], modules are:"
+ echo " Core: $CORE_MODULES"
+ echo " Extra: $EXTRA_MODULES"
+ echo " Python: $PYGTK_MODULES"
+ echo " Inkscape: $INKSCAPE_MODULES"
+ echo
+ echo "Setup: This script defaults to downloading source to ~/Source/gtk and"
+ echo "installing in /opt/gtk. Make sure your user has write access to the"
+ echo "latter directory. You can override those directories by setting the"
+ echo "SOURCE and PREFIX environment variables. Anoncvs is used by default"
+ echo "for access to GNOME SVN, if you wish to override, set the environment"
+ echo "variable GNOMESVNURL to your own account."
+ echo
+ echo "While in the shell that this script provides, the environment variable"
+ echo "INSIDE_GTK_BUILD is set, which makes it possible to put something like"
+ echo "the following in ~/.bashrc:"
+ echo
+ echo " if [ x\$INSIDE_GTK_BUILD != x ]; then"
+ echo " PS1=\"[GTK] \u@\h \W $ \""
+ echo " fi"
+ echo
+ echo "Start by bootstrapping. This will install the necessary build tools."
+ echo "Then build GTK+ & co by using the \"build\" command. If no modules are"
+ echo "specified, only the ones needed for GTK+ will be built. The special"
+ echo "modules \"core\" and \"all\" can be used to build just the core or all"
+ echo "modules."
+ echo
+ echo "If you want to build something manually or run something, use the "
+ echo "\"shell\" command (or no command) to get a shell with the environment"
+ echo "properly setup."
+ echo
+ echo "Tip: if you build and install \"install-check\" from jhbuild into your"
+ echo "PREFIX, recompiling when hacking on GTK+ & co will be a lot faster."
+ echo
+}
+
+function download
+{
+ BASENAME=`basename $1`
+
+ if [ -s $BASENAME ]; then
+ echo "Already downloaded"
+ return 0
+ fi
+
+ curl $1 > $BASENAME || return 1
+
+ return 0
+}
+
+function should_build
+{
+ if [ -f $1/BUILT ]; then
+ echo "Already built"
+ return 1
+ fi
+
+ return 0
+}
+
+function tarball_get_and_build
+{
+ BASENAME=`basename $1`
+ DIRNAME=`echo $BASENAME | sed -e s,.src.,., | sed -e s,.tar.*,,`
+ INSTCMD="make install"
+ PREFIXARG="--prefix=$PREFIX"
+ COMMONOPTS="$COMMON_OPTIONS"
+
+ SHORTNAME=`echo $DIRNAME | sed -e s,-*[0-9\.]*$,,`
+ if !(echo "$MODULES" | grep -w $SHORTNAME) >/dev/null; then
+ return 0
+ fi
+
+ echo
+ echo "Building $DIRNAME"
+ echo -ne "\033]0;Building $DIRNAME\007"
+
+ # Special case jpeg... :/
+ if [ x`echo $DIRNAME | grep jpeg` != x ]; then
+ INSTCMD="make install-lib"
+ fi
+
+ if [ x`echo $BASENAME | grep bz2` != x ]; then
+ COMP="j"
+ else
+ COMP="z"
+ fi
+
+ # Doxygen doesn't have a standard configure script.
+ if [ x`echo $BASENAME | grep doxygen` != x ]; then
+ PREFIXARG="--prefix $PREFIX"
+ COMMONOPTS="--shared"
+ fi
+
+ # Modify specific configure options
+ UNDERSCORENAME=`echo $SHORTNAME | sed -e s,-,_, | tr -d '+'`
+ CONFIGURE_EXTRA=`eval echo '\$'{CONFIGURE_$UNDERSCORENAME}`
+ if [ "x$CONFIGURE_EXTRA" != "x" ]; then
+ COMMONOPTS="$COMMONOPTS $CONFIGURE_EXTRA"
+ fi
+ PRECONFIGURE=`eval echo '\$'{PRECONFIGURE_$UNDERSCORENAME}`
+ if [ "x$PRECONFIGURE" == "x" ]; then
+ PRECONFIGURE="true"
+ fi
+ POSTCONFIGURE=`eval echo '\$'{POSTCONFIGURE_$UNDERSCORENAME}`
+ if [ "x$POSTCONFIGURE" == "x" ]; then
+ POSTCONFIGURE="true"
+ fi
+
+ cd $SOURCE || return 1
+ download $1 || return 1
+ should_build $DIRNAME || return 0
+ tar ${COMP}xf $BASENAME && \
+ cd $DIRNAME && \
+ $PRECONFIGURE && \
+ echo "./configure $PREFIXARG $COMMONOPTS $2" && \
+ ./configure $PREFIXARG $COMMONOPTS $2 && \
+ $POSTCONFIGURE && \
+ make && $INSTCMD && touch BUILT
+}
+
+function python_tarball_get_and_build
+{
+ BASENAME=`basename $1`
+ DIRNAME=`echo $BASENAME | sed -e s,.src.,., | sed -e s,.tar.*,,`
+ INSTCMD="make install"
+ PREFIXARG="--prefix=$PREFIX"
+ COMMONOPTS="$COMMON_OPTIONS"
+
+ SHORTNAME=`echo $DIRNAME | sed -e s,-*[0-9\.]*$,,`
+ if !(echo "$MODULES" | grep -w $SHORTNAME) >/dev/null; then
+ return 0
+ fi
+
+ echo
+ echo "Building $DIRNAME"
+ echo -ne "\033]0;Building $DIRNAME\007"
+
+ if [ x`echo $BASENAME | grep bz2` != x ]; then
+ COMP="j"
+ else
+ COMP="z"
+ fi
+
+ # Modify specific configure options
+ UNDERSCORENAME=`echo $SHORTNAME | sed -e s,-,_, | tr -d '+'`
+ CONFIGURE_EXTRA=`eval echo '\$'{CONFIGURE_$UNDERSCORENAME}`
+ if [ "x$CONFIGURE_EXTRA" != "x" ]; then
+ COMMONOPTS="$COMMONOPTS $CONFIGURE_EXTRA"
+ fi
+ PRECONFIGURE=`eval echo '\$'{PRECONFIGURE_$UNDERSCORENAME}`
+ if [ "x$PRECONFIGURE" == "x" ]; then
+ PRECONFIGURE="true"
+ fi
+ POSTCONFIGURE=`eval echo '\$'{POSTCONFIGURE_$UNDERSCORENAME}`
+ if [ "x$POSTCONFIGURE" == "x" ]; then
+ POSTCONFIGURE="true"
+ fi
+
+ cd $SOURCE || return 1
+ download $1 || return 1
+ should_build $DIRNAME || return 0
+ tar ${COMP}xf $BASENAME && \
+ cd $DIRNAME && \
+ $PRECONFIGURE && \
+ python setup.py build
+ $POSTCONFIGURE && \
+ python setup.py install --prefix=$PREFIX && touch BUILT
+}
+
+function cpan_get_and_build
+{
+ BASENAME=`basename $1`
+ DIRNAME=`echo $BASENAME | sed -e s,.tar.*,,`
+
+ SHORTNAME=`echo $DIRNAME | sed -e s,-*[0-9\.]*$,,`
+ if !(echo "$MODULES" | grep -w $SHORTNAME) >/dev/null; then
+ return 0
+ fi
+
+ echo
+ echo "Building $DIRNAME"
+ echo -ne "\033]0;Building $DIRNAME\007"
+
+ if [ x`echo $BASENAME | grep bz2` != x ]; then
+ COMP="j"
+ else
+ COMP="z"
+ fi
+
+ cd $SOURCE || return 1
+ download $1 || return 1
+ should_build $DIRNAME || return 0
+ tar ${COMP}xf $BASENAME && \
+ cd $DIRNAME && \
+ perl Makefile.PL $2 && \
+ make && \
+ (echo "Enter your password to istall $BASENAME"; make install) && \
+ touch BUILT
+}
+
+function git_get_and_build
+{
+ if !(echo "$MODULES" | grep -w $2) >/dev/null; then
+ return 0
+ fi
+
+ echo
+ echo "Building $2"
+ echo -ne "\033]0;Building $2\007"
+
+ cd $SOURCE
+ if [ -d $2 ]; then
+ cd $2
+ cg-update || return
+ else
+ cg-clone $1/$2 || return
+ cd $2
+ fi
+
+ echo "./autogen.sh $COMMON_OPTIONS $3"
+ (./autogen.sh $COMMON_OPTIONS $3 && make && make install)
+}
+
+function cvs_get_and_build
+{
+ if !(echo "$MODULES" | grep -w $2) >/dev/null; then
+ return 0
+ fi
+
+ echo
+ echo "Building $2"
+ echo -ne "\033]0;Building $2\007"
+
+ cd $SOURCE
+ if [ -d $2 ]; then
+ cd $2
+ cvs up -dP || return
+ else
+ cvs -d $1 co -P $2 || return
+ cd $2
+ fi
+
+ echo "./autogen.sh $COMMON_OPTIONS $3"
+ (./autogen.sh $COMMON_OPTIONS $3 && make && make install)
+}
+
+function svn_get_and_build
+{
+ BASENAME=`basename $2`
+ DIRNAME=`echo $BASENAME | sed -e s,.src.,., | sed -e s,.tar.*,,`
+ INSTCMD="make install"
+ PREFIXARG="--prefix=$PREFIX"
+ COMMONOPTS="$COMMON_OPTIONS"
+
+ SHORTNAME=`echo $DIRNAME | sed -e s,-*[0-9\.]*$,,`
+ if !(echo "$MODULES" | grep -w $2) >/dev/null; then
+ return 0
+ fi
+
+ echo
+ echo "Building $2"
+ echo -ne "\033]0;Building $2\007"
+
+ cd $SOURCE
+ if [ -d $2 ]; then
+ cd $2
+ svn up || return
+ else
+ svn co $1/$2/trunk $2 || return
+ cd $2
+ fi
+
+ # Modify specific configure options
+ UNDERSCORENAME=`echo $SHORTNAME | sed -e s,-,_, | tr -d '+'`
+ CONFIGURE_EXTRA=`eval echo '\$'{CONFIGURE_$UNDERSCORENAME}`
+ if [ "x$CONFIGURE_EXTRA" != "x" ]; then
+ COMMONOPTS="$COMMONOPTS $CONFIGURE_EXTRA"
+ fi
+ PRECONFIGURE=`eval echo '\$'{PRECONFIGURE_$UNDERSCORENAME}`
+ if [ "x$PRECONFIGURE" == "x" ]; then
+ PRECONFIGURE="true"
+ fi
+ POSTCONFIGURE=`eval echo '\$'{POSTCONFIGURE_$UNDERSCORENAME}`
+ if [ "x$POSTCONFIGURE" == "x" ]; then
+ POSTCONFIGURE="true"
+ fi
+
+ echo "./autogen.sh $COMMON_OPTIONS $3"
+ echo "POSTCONF $POSTCONFIGURE $UNDERSCORENAME"
+ #(./autogen.sh $COMMON_OPTIONS $3 && ./configure --prefix=$PREFIX $COMMON_OPTIONS $3 && make && make install)
+ (./autogen.sh $COMMON_OPTIONS $3 && $POSTCONFIGURE && make && make install)
+}
+
+function set_automake
+{
+ old_AUTOMAKE=$AUTOMAKE
+ old_ACLOCAL=$ACLOCAL
+
+ export AUTOMAKE=automake-$1
+ export ACLOCAL=aclocal-$1
+}
+
+function restore_automake
+{
+ if [ x$old_AUTOMAKE != x ]; then
+ export AUTOMAKE=$old_AUTOMAKE
+ else
+ unset AUTOMAKE
+ fi
+
+ if [ x$old_ACLOCAL != x ]; then
+ export ACLOCAL=$old_ACLOCAL
+ else
+ unset ACLOCAL
+ fi
+}
+
+function do_exit
+{
+ echo -ne "\033]0;\007"
+ exit
+}
+
+# Make sure to restore the title when done.
+trap do_exit EXIT SIGINT SIGTERM
+
+
+# configure doesn't pass CFLAGS through to generated libtool
+function patch_libtool_dylib()
+{
+ # Only do this for universal builds.
+ if [ "x$UNIVERSAL_BUILD" != "xYes" ]; then
+ return 0
+ fi
+
+ cp libtool libtool.old
+ perl -pi -e "s@-dynamiclib@$CFLAGS \$&@" libtool
+ if test "x$1" = "xwithbundle"; then
+ perl -pi -e "s@-bundle@$CFLAGS \$&@" libtool
+ fi
+}
+
+
+function process_modules()
+{
+ # Bootstrap packages.
+ PACKAGES=" \
+ http://pkgconfig.freedesktop.org/releases/pkg-config-0.21.tar.gz \
+ http://ftp.gnu.org/gnu/libtool/libtool-1.5.22.tar.gz \
+ http://ftp.gnu.org/gnu/autoconf/autoconf-2.61.tar.bz2 \
+ http://ftp.gnu.org/pub/gnu/automake/automake-1.7.9.tar.bz2 \
+ http://ftp.gnu.org/gnu/automake/automake-1.9.6.tar.bz2 \
+ http://heanet.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.15.tar.bz2 \
+ ftp://ftp.remotesensing.org/pub/libtiff/tiff-3.8.2.tar.gz \
+ http://people.imendio.com/richard/gtk-osx/files/jpeg-6b.tar.gz \
+ http://ftp.gnu.org/gnu/gettext/gettext-0.16.tar.gz \
+ http://heanet.dl.sourceforge.net/sourceforge/expat/expat-2.0.0.tar.gz \
+ http://heanet.dl.sourceforge.net/sourceforge/freetype/freetype-2.3.0.tar.bz2 \
+ http://fontconfig.org/release/fontconfig-2.4.2.tar.gz \
+ http://people.imendio.com/richard/gtk-osx/files/docbook-files-1.tar.gz \
+ http://www.cs.mu.oz.au/~mjwybrow/gtk-osx/gnome-doc-utils-fake-1.tar.gz \
+ "
+
+ #http://people.imendio.com/richard/gtk-osx/files/popt-1.7.tar.gz
+
+ for PACKAGE in $PACKAGES; do
+ tarball_get_and_build $PACKAGE || exit 1
+ done
+
+ PACKAGE=http://ftp.gnome.org/pub/GNOME/sources/gtk-doc/1.6/gtk-doc-1.6.tar.bz2
+ tarball_get_and_build $PACKAGE "--with-xml-catalog=$PREFIX/etc/xml/catalog" || exit 1
+
+ PACKAGE=ftp://ftp4.freebsd.org/pub/FreeBSD/ports/distfiles/XML-Parser-2.34.tar.gz
+ cpan_get_and_build $PACKAGE "PREFIX=$PREFIX EXPATLIBPATH=$PREFIX/lib EXPATINCPATH=$PREFIX/include" || exit 1
+
+ PACKAGES=" \
+ http://ftp.gnome.org/pub/GNOME/sources/intltool/0.35/intltool-0.35.0.tar.bz2 \
+ http://icon-theme.freedesktop.org/releases/hicolor-icon-theme-0.9.tar.gz \
+ http://ftp.gnome.org/pub/GNOME/sources/gnome-icon-theme/2.14/gnome-icon-theme-2.14.2.tar.bz2 \
+ "
+
+ for PACKAGE in $PACKAGES; do
+ tarball_get_and_build $PACKAGE || exit 1
+ done
+
+
+ # Other packages:
+ if [ "x$STABLE_BUILD" = "xYes" ];
+ then
+ tarball_get_and_build http://cairographics.org/snapshots/glitz-0.5.6.tar.gz || exit 1
+ tarball_get_and_build http://cairographics.org/releases/cairo-1.4.0.tar.gz || exit 1
+ tarball_get_and_build http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc6.8.tar.gz || exit 1
+ tarball_get_and_build http://www.littlecms.com/lcms-1.16.tar.gz || exit 1
+ tarball_get_and_build ftp://ftp.gnome.org/mirror/gnome.org/sources/glib/2.12/glib-2.12.11.tar.bz2 || exit 1
+ tarball_get_and_build ftp://ftp.gnome.org/mirror/gnome.org/sources/pango/1.14/pango-1.14.10.tar.bz2 || exit 1
+ tarball_get_and_build ftp://ftp.gnome.org/mirror/gnome.org/sources/atk/1.12/atk-1.12.4.tar.bz2 || exit 1
+ tarball_get_and_build ftp://ftp.gnome.org/mirror/gnome.org/sources/gtk+/2.10/gtk+-2.10.11.tar.bz2 || exit 1
+ tarball_get_and_build ftp://ftp.gnome.org/mirror/gnome.org/sources/libxml2/2.6/libxml2-2.6.27.tar.bz2 || exit 1
+ tarball_get_and_build ftp://ftp.gnome.org/mirror/gnome.org/sources/libsigc++/2.0/libsigc++-2.0.17.tar.bz2 || exit 1
+ tarball_get_and_build ftp://ftp.gnome.org/mirror/gnome.org/sources/glibmm/2.12/glibmm-2.12.7.tar.bz2 || exit 1
+ tarball_get_and_build http://cairographics.org/releases/cairomm-1.2.4.tar.gz || exit 1
+ tarball_get_and_build ftp://ftp.gnome.org/mirror/gnome.org/sources/gtkmm/2.10/gtkmm-2.10.8.tar.bz2 || exit 1
+ tarball_get_and_build ftp://ftp.gnome.org/mirror/gnome.org/sources/libxslt/1.1/libxslt-1.1.20.tar.bz2 || exit 1
+ tarball_get_and_build ftp://ftp.rpm.org/pub/rpm/dist/rpm-4.1.x/popt-1.7.tar.gz || exit 1
+
+ svn_get_and_build $INKSCAPESVNURL inkscape || exit 1
+
+ exit 0
+ else
+ git_get_and_build git://git.cairographics.org/git cairo "--enable-pdf --enable-atsui --enable-quartz --disable-xlib ax_cv_c_float_words_bigendian=no" || exit 1
+
+ tarball_get_and_build http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc6.7.tar.gz || exit 1
+ tarball_get_and_build ftp://ftp.gnome.org/mirror/gnome.org/sources/libsigc++/2.0/libsigc++-2.0.17.tar.gz || exit 1
+ tarball_get_and_build http://ftp.stack.nl/pub/users/dimitri/doxygen-1.5.1.src.tar.gz || exit 1
+ tarball_get_and_build ftp://ftp.rpm.org/pub/rpm/dist/rpm-4.1.x/popt-1.7.tar.gz || exit 1
+ fi
+
+ svn_get_and_build $GNOMESVNURL libxml2 || exit 1
+ svn_get_and_build $GNOMESVNURL libxslt || exit 1
+ svn_get_and_build $GNOMESVNURL gnome-common || exit 1
+ svn_get_and_build $GNOMESVNURL glib || exit 1
+ svn_get_and_build $GNOMESVNURL atk || exit 1
+ svn_get_and_build $GNOMESVNURL pango "--without-x" || exit 1
+ svn_get_and_build $GNOMESVNURL gtk+ "--with-gdktarget=quartz --enable-explicit-deps=yes" || exit 1
+ svn_get_and_build $GNOMESVNURL gtk-engines || exit 1
+ svn_get_and_build $GNOMESVNURL loudmouth "--with-ssl=openssl" || exit 1
+ svn_get_and_build $GNOMESVNURL libglade || exit 1
+ # gossip needs xml2po from gnome-doc-utils.
+ svn_get_and_build $GNOMESVNURL gossip "--with-backend=cocoa" || exit 1
+ cvs_get_and_build $CAIROCVSROOT pycairo || exit 1
+ svn_get_and_build $GNOMESVNURL pygobject "--disable-docs" || exit 1
+ svn_get_and_build $GNOMESVNURL pygtk "--disable-docs" || exit 1
+
+ svn_get_and_build $GNOMESVNURL glibmm "--disable-docs --disable-fulldocs" || exit 1
+ cvs_get_and_build $CAIROCVSROOT cairomm || exit 1
+ svn_get_and_build $GNOMESVNURL gtkmm "--disable-docs --disable-examples --disable-demos" || exit 1
+
+ svn_get_and_build $INKSCAPESVNURL inkscape || exit 1
+
+ svn_get_and_build $GNOMESVNURL libart_lgpl "--disable-docs" || exit 1
+ svn_get_and_build $GNOMESVNURL libglade "--disable-docs" || exit 1
+ svn_get_and_build $GNOMESVNURL libgnomecanvas "--disable-docs" || exit 1
+ tarball_get_and_build http://www.geda.seul.org/dist/gnucap-0.35.tar.gz || exit 1
+ tarball_get_and_build http://ftp.gnu.org/pub/gnu/chess/gnuchess-5.07.tar.gz || exit 1
+
+ python_tarball_get_and_build http://initd.org/pub/software/pysqlite/releases/2.3/2.3.3/pysqlite-2.3.3.tar.gz || exit 1
+
+ #svn_get_and_build $GNOMESVNURL gimp || exit 1
+ # For gimp:
+ # libart_lgpl, needs automake 1.4 and doesn't run libtoolize
+ # gtkhtml2 (optional)
+ # libpoppler (optional)
+ # ./autogen.sh --prefix=/opt/gimp --disable-gtk-doc
+}
+
+if (echo "$*" | grep bootstrap) >/dev/null; then
+ if [ "x`cg-version 2>/dev/null`" == "x" ]; then
+ echo "You need the cogito to get cairo from git. It's available e.g. in Darwin ports."
+ exit 1
+ fi
+ if [ "x`which svn 2>/dev/null`" == "x" ]; then
+ echo "You need the svn client to get inkscape."
+ exit 1
+ fi
+
+ mkdir -p $SOURCE 2>/dev/null || \
+ (echo "Error: Couldn't create source checkout dir $SOURCE"; exit 1)
+ mkdir -p $PREFIX/bin 2>/dev/null || \
+ (echo "Error: Couldn't create bin dir $PREFIX/bin"; exit 1)
+
+ echo "Building bootstrap packages."
+
+ MODULES="pkg-config libtool autoconf automake libpng tiff jpeg-6b gettext \
+ expat freetype fontconfig docbook-files XML-Parser intltool gtk-doc\
+ "
+ # freetype
+ # XML-Parser hicolor-icon-theme gnome-icon-theme"
+ # gnome-doc-utils-fake gtk-doc \
+ process_modules
+
+ # Setup glibtool* links since some stuff expects them to be named like
+ # that on OSX
+ if [ -z $PREFIX/bin/glibtoolize ]; then
+ ln -s $PREFIX/bin/libtoolize $PREFIX/bin/glibtoolize
+ ln -s $PREFIX/bin/libtool $PREFIX/bin/glibtool
+ fi
+
+ echo
+ echo "Done bootstrapping. Continue with \"build\" or \"shell\"."
+ exit 0
+fi
+
+if [ "x$1" != xbuild ]; then
+ print_usage
+ exit 1
+fi
+
+shift
+
+MODULES=$*
+if [ $# -eq 0 ]; then
+ echo "Building core modules."
+ MODULES="$CORE_MODULES"
+elif [ "x$1" = xcore ]; then
+ echo "Building core modules."
+ MODULES="$CORE_MODULES"
+elif [ "x$1" = xpython ]; then
+ echo "Building python modules."
+ MODULES="$PYGTK_MODULES"
+elif [ "x$1" = xall ]; then
+ echo "Building core+extra+python modules."
+ MODULES="$CORE_MODULES $EXTRA_MODULES $PYGTK_MODULES"
+elif [ "x$1" = xinkscape ]; then
+ echo "Building inkscape modules."
+ MODULES="$INKSCAPE_MODULES"
+elif [ "x$1" = "xgcompris-deps" ]; then
+ echo "Building GCompris dependencies modules."
+ MODULES="$GCOMPRIS_DEPS_MODULES"
+fi
+
+process_modules
+echo "Done."
+
+
+