ardour/tools/build-gtk-stack
Paul Davis b475d68a36 bump libz, libpng versions, and force libreadline to build with linkage to nurses to avoid undefined symbol errors
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@13204 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-10-04 20:11:57 +00:00

451 lines
21 KiB
Bash
Executable file

#!/bin/bash
which python >/dev/null 2>&1
if [ $? -ne 0 ] ; then
echo "You do not have Python installed"
exit 1
fi
function die () {
echo $*
exit 1
}
function fetch_as_is() {
if uname -a | grep --silent arwin ; then
curl -LO $1
else
wget --no-check-certificate $1
fi
}
function fetch_as () {
if uname -a | grep --silent arwin ; then
curl -L -o $1 $2
else
wget --no-check-certificate -O $1 $2
fi
}
clean=
makespace=
parallel=2
patch_gtk_osx=
PREFIX=$HOME/gtk/inst
unpatch=
this_script_dir="`/usr/bin/dirname \"$0\"`"
while [ $# -gt 0 ] ; do
case $1 in
--clean*) clean=1 ; shift ;;
--space*) makespace=1 ; shift ;;
--prefix*) PREFIX=`echo $1 | sed 's/--prefix=//'` ; shift ;;
--patch*) patch_gtk_osx=1 ; shift ;;
--unpatch*) patch_gtk_osx=1 ; unpatch=-R; shift ;;
-j*) parallel=`echo $1 | sed 's/-j//'` ; shift ;;
*) echo "Unknown argument $1" ; exit 1 ;;
esac
done
if [ x$clean != x -o x$makespace != x ] ; then
if [ ! -d gtk+ ] ; then
echo "This doesn't appear to be your source directory. Don't run --clean or --space here."
exit 1
fi
rm -rf `find . -maxdepth 1 -type d | grep -v -e "gtk+" -e "^.$"`
# sudo required because of its use during the libxml2 install step
if [ $clean ] ; then
sudo rm -rf $PREFIX
fi
exit 0
fi
mkdir -p $PREFIX
export MAKEFLAGS=-j$parallel
PATH=$PREFIX/bin:$PATH
OSX=
if uname -a | grep --silent arwin ; then
# its OS X! run for the hills !!
OSX=1
export DYLD_FALLBACK_LIBRARY_PATH=$PREFIX/lib${DYLD_FALLBACK_LIBRARY_PATH:+:$DYLD_FALLBACK_LIBRARY_PATH}
# force compilation to use 10.4 APIs only. could be overkill, but better safe than sorry
GLOBAL_CFLAGS="-DMAC_OSX_VERSION_MAX_ALLOWED=1040 -mmacosx-version-min=10.4 -O3"
# for 10.5 and above, add to CFLAGS
# -sysroot=/Developer/SDKs/MacOSX10.4u.sdk"
GLOBAL_LDFLAGS="-headerpad_max_install_names"
# for 10.5 and above, add to LDFLAGS
# "-syslibroot /Developer/SDKs/MacOSX10.4u.sdk"
export MACOSX_DEPLOYMENT_TARGET=10.4
# If the default python is not new enough, set PYTHON to point to a
# suitably new (2.7 or later) version of Python's framework
#
# this is very crude versioning test
if python --version | grep --silent '2\.7' ; then
:
else
PYTHON=/Library/Frameworks/Python.framework/Versions/2.7
fi
CAIRO_CONF="--enable-xlib=no --enable-quartz=yes --enable-xcb=no"
PANGO_CONF="--without-x"
GTK_BACKEND=quartz
AVOID_ICONV=
need_iconv=yes
else
export LD_LIBRARY_PATH=$PREFIX/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
GLOBAL_CFLAGS=
GLOBAL_LDFLAGS=
CAIRO_CONF=
PANGO_CONF=
GTK_BACKEND=x11
AVOID_ICONV="--with-libiconv=no"
# normal linux platforms won't need this
need_iconv=
# this is very crude versioning test
python --version >/dev/null 2>&1
if [ $? -ne 0 ] ; then
echo "There's a problem with your Python installation"x
exit 1
fi
if python --version | grep --silent '2\.7' ; then
echo "You do not have a new enough version of Python"
exit 1
fi
pythondir=`dirname $(which python)`
if [ $pythondir != "/usr/bin" ] ; then
PYTHON=`dirname $pythondir`
fi
fi
set -e
export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig
GLOBAL_CONF="--prefix=$PREFIX"
if [ ! -f xz-5.0.3.tar.bz2 ] ; then
echo xz
fetch_as_is http://tukaani.org/xz/xz-5.0.3.tar.bz2
fi
if [ ! -f tar-1.26.tar.bz2 ] ; then
echo tar
fetch_as_is http://ftp.gnu.org/gnu/tar/tar-1.26.tar.bz2
fi
if [ ! -f m4-1.4.16.tar.bz2 ] ; then
echo m4
fetch_as_is http://ftp.gnu.org/gnu/m4/m4-1.4.16.tar.bz2
fi
if [ ! -f automake-1.11.3.tar.gz ] ; then
echo automake
fetch_as_is http://ftp.gnu.org/gnu/automake/automake-1.11.3.tar.gz
fi
if [ ! -f autoconf-2.68.tar.bz2 ] ; then
echo autoconf
fetch_as_is http://ftp.gnu.org/gnu/autoconf/autoconf-2.68.tar.bz2
fi
if [ ! -f libtool-2.4.2.tar.gz ] ; then
echo libtool
fetch_as_is http://ftp.gnu.org/gnu/libtool/libtool-2.4.2.tar.gz
fi
if [ ! -f make-3.82.tar.bz2 ] ; then
echo make
fetch_as_is http://ftp.gnu.org/gnu/make/make-3.82.tar.bz2
fi
if [ ! -f flex-2.5.35.tar.gz ] ; then
echo flex
fetch_as_is http://prdownloads.sourceforge.net/flex/flex-2.5.35.tar.gz
fi
if [ ! -f bison-2.5.tar.bz2 ] ; then
echo bison
fetch_as_is ftp://ftp.gnu.org/gnu/bison/bison-2.5.tar.bz2
fi
if [ ! -f glib-2.32.2.tar.xz ] ; then
echo glib
fetch_as_is http://ftp.gnome.org/pub/gnome/sources/glib/2.32/glib-2.32.2.tar.xz
fi
if [ ! -f pkg-config-0.26.tar.gz ] ; then
echo pkg-config
fetch_as_is http://pkgconfig.freedesktop.org/releases/pkg-config-0.26.tar.gz
fi
if [ ! -f readline-6.2.tar.gz ] ; then
echo readline
fetch_as_is ftp://ftp.cwru.edu/pub/bash/readline-6.2.tar.gz
fi
if [ ! -f zlib-1.2.7.tar.bz2 ] ; then
echo zlib
fetch_as_is http://zlib.net/zlib-1.2.7.tar.bz2
fi
if [ ! -f libiconv-1.14.tar.gz ] ; then
echo libiconv
fetch_as_is ftp://ftp.gnu.org/gnu/libiconv/libiconv-1.14.tar.gz
fi
if [ ! -f gettext-0.18.1.1.tar.gz ] ; then
echo gettext
fetch_as_is http://ftp.gnu.org/pub/gnu/gettext/gettext-0.18.1.1.tar.gz
fi
if [ ! -f expat-2.1.0.tar.gz ] ; then
echo expat
fetch_as_is http://prdownloads.sourceforge.net/expat/expat-2.1.0.tar.gz
fi
if [ ! -f libxml2-2.7.8.tar.gz ] ; then
echo libxml2
fetch_as_is ftp://xmlsoft.org/libxslt/libxml2-2.7.8.tar.gz
fi
if [ ! -f libxslt-1.1.26.tar.gz ] ; then
echo libxslt
fetch_as_is ftp://xmlsoft.org/libxslt/libxslt-1.1.26.tar.gz
fi
if [ ! -f tiff-4.0.1.tar.gz ] ; then
echo tiff
fetch_as_is ftp://ftp.remotesensing.org/pub/libtiff/tiff-4.0.1.tar.gz
fi
if [ ! -f libpng-1.5.13.tar.xz ] ; then
echo png
fetch_as_is ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng-1.5.13.tar.xz
fi
if [ ! -f jpegsrc.v8d.tar.gz ] ; then
echo jpeg
fetch_as_is http://www.ijg.org/files/jpegsrc.v8d.tar.gz
fi
if [ ! -f XML-Parser-2.41.tar.gz ] ; then
echo perl xml parser
fetch_as XML-Parser-2.41.tar.gz http://search.cpan.org/CPAN/authors/id/T/TO/TODDR/XML-Parser-2.41.tar.gz
fi
if [ ! -f XML-Simple-2.18.tar.gz ] ; then
echo perl xml
fetch_as XML-Simple-2.18.tar.gz http://search.cpan.org/CPAN/authors/id/G/GR/GRANTM/XML-Simple-2.18.tar.gz
fi
if [ ! -f atk-2.2.0.tar.bz2 ] ; then
echo atk
fetch_as_is http://ftp.gnome.org/pub/GNOME/sources/atk/2.2/atk-2.2.0.tar.bz2
fi
if [ ! -f gnome-common-2.34.0.tar.bz2 ] ; then
echo gnome-common
fetch_as_is http://ftp.acc.umu.se/pub/gnome/sources/gnome-common/2.34/gnome-common-2.34.0.tar.bz2
fi
if [ ! -f gtk-doc-1.18.tar.bz2 ] ; then
echo gtk-doc
fetch_as_is http://ftp.gnome.org/pub/GNOME/sources/gtk-doc/1.18/gtk-doc-1.18.tar.bz2
fi
if [ ! -f gnome-doc-utils-0.20.6.tar.bz2 ] ; then
echo gnome-doc
fetch_as_is http://ftp.acc.umu.se/pub/gnome/sources/gnome-doc-utils/0.20/gnome-doc-utils-0.20.6.tar.bz2
fi
if [ ! -f pixman-0.24.4.tar.gz ] ; then
echo pixman
fetch_as_is http://cgit.freedesktop.org/pixman/snapshot/pixman-0.24.4.tar.gz
fi
if [ ! -f libffi-3.0.10.tar.gz ] ; then
echo ffi
fetch_as_is ftp://sourceware.org/pub/libffi/libffi-3.0.10.tar.gz
fi
if [ ! -f freetype-2.4.8.tar.bz2 ] ; then
echo freetype
fetch_as freetype-2.4.8.tar.bz2 http://sourceforge.net/projects/freetype/files/freetype2/2.4.8/freetype-2.4.8.tar.bz2/download
fi
if [ ! -f fontconfig-2.8.0.tar.gz ] ; then
echo fontconfig
fetch_as_is http://www.freedesktop.org/software/fontconfig/release/fontconfig-2.8.0.tar.gz
fi
if [ ! -f cairo-1.10.2.tar.gz ] ; then
echo cairo
fetch_as_is http://cairographics.org/releases/cairo-1.10.2.tar.gz
fi
if [ ! -f pango-1.29.5.tar.bz2 ] ; then
echo pango
fetch_as_is http://ftp.gnome.org/pub/GNOME/sources/pango/1.29/pango-1.29.5.tar.bz2
fi
if [ ! -f gdk-pixbuf-2.25.0.tar.xz ] ; then
echo gdk-pixbuf
fetch_as_is http://ftp.gnome.org/pub/GNOME/sources/gdk-pixbuf/2.25/gdk-pixbuf-2.25.0.tar.xz
fi
if [ ! -f intltool-0.50.2.tar.gz ] ; then
echo intltool
fetch_as_is http://launchpad.net/intltool/trunk/0.50.2/+download/intltool-0.50.2.tar.gz
fi
if [ ! -f gtk-osx-docbook-1.0.tar.gz ] ; then
echo gtk-osx-docbook
fetch_as gtk-osx-docbook-1.0.tar.gz http://sourceforge.net/projects/gtk-osx/files/GTK-OSX%20Build/gtk-osx-docbook-1.0.tar.gz/download
fi
if [ ! -f gobject-introspection-1.31.10.tar.xz ] ; then
echo gobject-introspection
fetch_as_is http://ftp.gnome.org/pub/GNOME/sources/gobject-introspection/1.31/gobject-introspection-1.31.10.tar.xz
fi
if [ ! -d gtk-engines ] ; then
echo "gtk-engines (2.22 branch)"
git clone git://git.gnome.org/gtk-engines
(cd gtk-engines && git checkout --track -b gtk-engines-2-22 origin/gtk-engines-2-22)
fi
if [ ! -d gtk+ ] ; then
echo "GTK+ (2.24 branch)"
git clone git://git.gnome.org/gtk+
(cd gtk+ && git checkout --track -b gtk-2-24 origin/gtk-2-24)
fi
if [ x$patch_gtk_osx != x ] ; then
cd gtk+
echo "Testing ($unpatch) patches ... "
patches=`ls $this_script_dir/current-gtk-patches/*.patch`
for patch in $patches ; do
if patch $unpatch --dry-run -p1 < $patch ; then
:
else
echo "$? : Patch $patch no longer applies ($unpatch) cleanly."
exit 1
fi
done
echo "Applying ($unpatch) patches ..."
for patch in $patches ; do
patch $unpatch -p1 < $patch
done
exit 0
fi
export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig
tar jxf xz-5.0.3.tar.bz2 && (cd xz-5.0.3 && LDFLAGS="-L$PREFIX/lib" CFLAGS="-I$PREFIX/include" ./configure $GLOBAL_CONF && make && make install) || die "xz build failed"
tar jxf tar-1.26.tar.bz2 && (cd tar-1.26 && LDFLAGS="-L$PREFIX/lib" CFLAGS="-I$PREFIX/include" ./configure $GLOBAL_CONF && make && make install) || die "tar build failed"
#
# now we have a working, modern tar we can drop the compression-type flag
#
hash tar
#
# well, we do now ..
#
tar xf m4-1.4.16.tar.bz2 && (cd m4-1.4.16 && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure $GLOBAL_CONF && make && make install) || die "m4 build failed"
tar xf make-3.82.tar.bz2 && (cd make-3.82 && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure $GLOBAL_CONF && make && make install) || die "make build failed"
tar xf zlib-1.2.7.tar.bz2 && (cd zlib-1.2.7 && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure $GLOBAL_CONF && PATH=/usr/bin:$PATH make && make install) || die "zlib build failed"
tar xf autoconf-2.68.tar.bz2 && (cd autoconf-2.68 && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure $GLOBAL_CONF && make && make install) || die "autoconf build failed"
tar xf automake-1.11.3.tar.gz && (cd automake-1.11.3 && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure $GLOBAL_CONF && make && make install) || die "automake build failed"
tar xf libtool-2.4.2.tar.gz && (cd libtool-2.4.2 && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure $GLOBAL_CONF && make && make install) || die "libtool build failed"
tar xf make-3.82.tar.bz2 && (cd make-3.82 && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure $GLOBAL_CONF && make && make install) || die "make build failed"
tar xf flex-2.5.35.tar.gz && (cd flex-2.5.35 && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure $GLOBAL_CONF && make && make install) || die "flex build failed"
tar xf bison-2.5.tar.bz2 && (cd bison-2.5 && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure $GLOBAL_CONF && make && make install) || die "bison build failed"
tar xf expat-2.1.0.tar.gz && (cd expat-2.1.0 && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure $GLOBAL_CONF && make && make install) || die "expat build failed"
#
# libxml2 tries to install python modules in the system python folders and thus needs sudo for the install step.
# clean up afterwards to reset ownership on dirs and files created under $PREFIX as root
#
tar xf libxml2-2.7.8.tar.gz && (cd libxml2-2.7.8 && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure $GLOBAL_CONF --with-zlib=$PREFIX ${PYTHON:+--with-python=$PYTHON} && make && sudo make install && sudo chown -R `whoami` $PREFIX) || die "libxml2 build failed"
tar xf libxslt-1.1.26.tar.gz && (cd libxslt-1.1.26 && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure $GLOBAL_CONF && make && make install) || die "libxslt build failed"
tar xf readline-6.2.tar.gz && (cd readline-6.2 && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS -lncurses" ./configure $GLOBAL_CONF && make && make install) || die "readline build failed"
#
# Don't build and install libiconv on systems where it is part of glibc
#
if [ x$need_iconv != x ] ; then
tar xf libiconv-1.14.tar.gz && (cd libiconv-1.14 && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure $GLOBAL_CONF && make && make install) || die "libiconv build failed"
fi
tar xf intltool-0.50.2.tar.gz && (cd intltool-0.50.2 && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure $GLOBAL_CONF && make && make install) || die "intltool build failed"
if [ x$need_iconv != x ] ; then
tar xf gettext-0.18.1.1.tar.gz && (cd gettext-0.18.1.1 && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure --with-included-gettext --with-libiconv-prefix=$PREFIX --enable-shared $GLOBAL_CONF && make && make install) || die "gettext build failed"
else
tar xf gettext-0.18.1.1.tar.gz && (cd gettext-0.18.1.1 && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure --with-included-gettext --enable-shared $GLOBAL_CONF && make && make install) || die "gettext build failed"
fi
tar xf tiff-4.0.1.tar.gz && (cd tiff-4.0.1 && CFLAGS="$GLOBAL_CFLAGS -DHAVE_APPLE_OPENGL_FRAMEWORK" LDFLAGS="$GLOBAL_LDFLAGS" ./configure $GLOBAL_CONF && make && make install) || die "tiff build failed"
tar xf libpng-1.5.13.tar.xz && (cd libpng-1.5.13 && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure $GLOBAL_CONF && make && make install) || die "libpng build failed"
tar xf jpegsrc.v8d.tar.gz && (cd jpeg-8d && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure $GLOBAL_CONF && make && make install) || die "jpegsrc build failed"
tar xf XML-Parser-2.41.tar.gz && (cd XML-Parser-2.41 && unset MACOSX_DEPLOYMENT_TARGET && perl Makefile.PL EXPATINCPATH=$PREFIX/include EXPATLIBPATH=$PREFIX/lib PREFIX=$PREFIX && make && make install) || die "XML-Parser build failed"
tar xf XML-Simple-2.18.tar.gz && (cd XML-Simple-2.18 && unset MACOSX_DEPLOYMENT_TARGET && perl Makefile.PL PREFIX=$PREFIX && make && make install) || die "XML-Simple build failed"
if uname -a | grep --silent arwin ; then
#
# libffi has a bug that is caused by it depending on the output format of GNU wc(1)
# it can be avoided by changing into the target build directory, re-running configure and then running make from there.
# the target dir gets built by the first invocation of configure, and is the newest dir, so we find its name with ls and awk.
#
tar xf libffi-3.0.10.tar.gz && (cd libffi-3.0.10 && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure $GLOBAL_CONF && cd `ls -ltd * | awk '/^d/ {print $9; exit}'` && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ../configure $GLOBAL_CONF && make && make install) || die "libffi build failed"
else
tar xf libffi-3.0.10.tar.gz && (cd libffi-3.0.10 && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure $GLOBAL_CONF && make && make install) || die "libffi build failed"
fi
# time to bootstrap the circular dependency between pkg-config and glib.
#
# step one: build glib with everything specified so that pkg-config is not used or required
#
tar xf glib-2.32.2.tar.xz && (cd glib-2.32.2 && LDFLAGS=-L$PREFIX/lib CFLAGS=-I$PREFIX/include ZLIB_CFLAGS=-I$PREFIX/include ZLIB_LIBS="-L$PREFIX/lib -lz" LIBFFI_CFLAGS=-I$PREFIX/lib/libffi-3.0.10/include LIBFFI_LIBS="-L$PREFIX/lib -lffi" ./configure $GLOBAL_CONF --with-pcre=internal $AVOID_ICONV --disable-silent-rules && make && make install) && rm -rf glib-2.32.2 || die "glib build1 failed"
#
# step two: build pkg-config with glib flags specified so that pkg-config is not used or required
#
tar xf pkg-config-0.26.tar.gz && (cd pkg-config-0.26 && GLIB_CFLAGS="-I$PREFIX/include/glib-2.0 -I$PREFIX/lib/glib-2.0/include" GLIB_LIBS="-L$PREFIX/lib -lglib-2.0 -lintl" ./configure --prefix=$HOME/gtk/inst && make && make install) && rm -rf pkg-config-0.26 || die "pkg-config build1 failed"
#
# step three: rebuild glib (still need CFLAGS in order to find libintl)
#
tar xf glib-2.32.2.tar.xz && (cd glib-2.32.2 && LDFLAGS="$GLOBAL_LDFLAGS -L$PREFIX/lib -lintl" CFLAGS="$GLOBAL_CFLAGS -I$PREFIX/include" ./configure --prefix=$HOME/gtk/inst && make && make install) || die "glib build failed"
#
# step four: rebuilding pkg-config now that glib is all set
#
tar xf pkg-config-0.26.tar.gz && (cd pkg-config-0.26 && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure $GLOBAL_CONF && make && make install) || die "pkg build failed"
#
# now we can start on the GTK stack itself
#
tar xf atk-2.2.0.tar.bz2 && (cd atk-2.2.0 && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure $GLOBAL_CONF && make && make install) || die "atk build failed"
tar xf gnome-common-2.34.0.tar.bz2 && (cd gnome-common-2.34.0 && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure $GLOBAL_CONF && export MAKEFLAGS= make && MAKEFLAGS= make install) || die "gnome build failed"
tar xf gtk-osx-docbook-1.0.tar.gz && (cd gtk-osx-docbook-1.0 && JHBUILD_PREFIX=$PREFIX make install) || die "gtk build failed"
# gnome-doc-utils is not parallel-build safe so turn off make -j2
tar xf gnome-doc-utils-0.20.6.tar.bz2 && (cd gnome-doc-utils-0.20.6 && PYTHONPATH=$PREFIX/lib/python2.7/site-packages CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure $GLOBAL_CONF --disable-scrollkeeper && PYTHONPATH=$PREFIX/lib/python2.7/site-packages MAKEFLAGS= make && PYTHONPATH=$PREFIX/lib/python2.7/site-packages MAKEFLAGS= make install) || die "gnome build failed"
tar xf gtk-doc-1.18.tar.bz2 && (cd gtk-doc-1.18 && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure --disable-scrollkeeper --with-xml-catalog=$PREFIX/etc/xml/catalog --prefix=$PREFIX && PYTHONPATH=$PREFIX/lib/python2.7/site-packages make && make install) || die "gtk build failed"
tar xf pixman-0.24.4.tar.gz && (cd pixman-0.24.4 && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" sh ./autogen.sh --prefix=$PREFIX && make && make install) || die "pixman build failed"
if [ x$OSX = x ] ; then
freetype_bytecode_patch=$this_script_dir/misc-patches/freetype-bytecode.patch
tar xf freetype-2.4.8.tar.bz2 && (cd freetype-2.4.8 && patch -p0 < $freetype_bytecode_patch && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure $GLOBAL_CONF && make && make install) || die "freetype build failed"
else
tar xf freetype-2.4.8.tar.bz2 && (cd freetype-2.4.8 && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure $GLOBAL_CONF && make && make install) || die "freetype build failed"
fi
tar xf fontconfig-2.8.0.tar.gz && (cd fontconfig-2.8.0 && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure $GLOBAL_CONF && make && make install) || die "fontconfig build failed"
if [ x$OSX = x ] ; then
#
# some linux nvidia drivers have buggy support for gradients. this patch
# lets the user set an environment variable that will force a Cairo workaround
# to the issue.
#
cairo_gradient_patch=$this_script_dir/misc-patches/cairo-gradients.patch
tar xf cairo-1.10.2.tar.gz && (cd cairo-1.10.2 && patch -p4 < $cairo_gradient_patch && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure $GLOBAL_CONF $CAIRO_CONF && make && make install) || die "cairo build failed"
else
tar xf cairo-1.10.2.tar.gz && (cd cairo-1.10.2 && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure $GLOBAL_CONF $CAIRO_CONF && make && make install) || die "cairo build failed"
fi
tar xf pango-1.29.5.tar.bz2 && (cd pango-1.29.5 && CFLAGS=$GLOBAL_CFLAGS LDFLAGS="$GLOBAL_LDFLAGS" ./configure $GLOBAL_CONF $PANGO_CONF && make && make install) || die "pango build failed"
tar xf gdk-pixbuf-2.25.0.tar.xz && (cd gdk-pixbuf-2.25.0 && LDFLAGS="$GLOBAL_LDFLAGS -L$PREFIX/lib" CFLAGS="-I$PREFIX/include $GLOBAL_CFLAGS" ./configure $GLOBAL_CONF && make && make install) || die "gdk build failed"
# gobject-introspection uses #include <libintl.h> and there's no way to force the "scanner" to look outside the system tree
remove_libintl_h=
if [ ! -f /usr/include/libintl.h ] ; then
sudo ln -s $PREFIX/include/libintl.h /usr/include
remove_libintl_h=yes
fi
tar xf gobject-introspection-1.31.10.tar.xz && (cd gobject-introspection-1.31.10 && LDFLAGS="$GLOBAL_LDFLAGS -L$PREFIX/lib -lintl" CFLAGS="-I$PREFIX/include $GLOBAL_CFLAGS" ./configure $GLOBAL_CONF && make && make install) || die "gobject build failed"
if [ x$remove_libintl_h != x ] ; then
sudo rm /usr/include/libintl.h
fi
#
# now gtk itself
#
#
(cd gtk+ && CFLAGS="$GLOBAL_CFLAGS" LDFLAGS="$GLOBAL_LDFLAGS" sh autogen.sh --enable-maintainer-mode --prefix=$PREFIX --libdir=$PREFIX/lib --disable-cups --disable-papi --disable-introspection --with-gdktarget=$GTK_BACKEND && make && make install) || die "GTK build failed"
#
# now gtk-engines
#
#
(cd gtk-engines && CFLAGS="$GLOBAL_CFLAGS" LDFLAGS="$GLOBAL_LDFLAGS" sh autogen.sh --enable-maintainer-mode --prefix=$PREFIX --libdir=$PREFIX/lib && make && make install) || die "GTK-engines build failed"