blob: 1f1429417bbc9f996d0f901cde887fd457413044 [file] [log] [blame]
#!/bin/sh
# Copyright (C) 2005, 2006 Apple Computer, Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
# its contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# A script to download the extra libraries needed to build WebKit on UNIX-based OSes.
# libxml/libxslt need to be added, but so far I've had them on all the (UNIX) machines
# I've tested on, so I don't have a machine to test the code on.
DL_CMD="curl -L"
scriptDir="$(cd $(dirname $0);pwd)"
WK_ROOT=$scriptDir/../..
WK_ROOTDIR=$WK_ROOT
DL_DIR=/tmp/webkit-deps
# NOTE: If you change this, make sure the dir is on the path.
DEPS_PREFIX=$WK_ROOT/WebKitLibraries/unix
DLLEXT=so
if [ "${OSTYPE:0:6}" == "darwin" ]; then
DLLEXT=dylib
fi
mkdir -p $DL_DIR
mkdir -p $DEPS_PREFIX
ICU_VERSION="3.4.1"
ICU_TARBALL="icu-$ICU_VERSION.tgz"
ICU_URL="ftp://ftp.software.ibm.com/software/globalization/icu/$ICU_VERSION/$ICU_TARBALL"
# dependent app, not lib, what should we do for these?
GPERF_VERSION="3.0.1"
GPERF_TARBALL="gperf-$GPERF_VERSION.tar.gz"
GPERF_URL="ftp://mirrors.kernel.org/gnu/gperf/$GPERF_TARBALL"
PKG_CONFIG_VERSION="0.20"
PKG_CONFIG_TARBALL="pkg-config-$PKG_CONFIG_VERSION.tar.gz"
PKG_CONFIG_URL="http://pkgconfig.freedesktop.org/releases/$PKG_CONFIG_TARBALL"
ICONV_VERSION="1.9.2"
ICONV_TARBALL="libiconv-$ICONV_VERSION.tar.gz"
ICONV_URL="http://ftp.gnu.org/pub/gnu/libiconv/$ICONV_TARBALL"
LIBJPEG_VERSION="6b"
LIBJPEG_TARBALL="jpegsrc.v$LIBJPEG_VERSION.tar.gz"
LIBJPEG_URL="http://wxwebkit.wxcommunity.com/downloads/deps/$LIBJPEG_TARBALL"
LIBPNG_VERSION="1.2.33"
LIBPNG_TARBALL="libpng-$LIBPNG_VERSION.tar.gz"
LIBPNG_URL="http://wxwebkit.wxcommunity.com/downloads/deps/$LIBPNG_TARBALL"
LIBCURL_VERSION="7.19.6"
LIBCURL_TARBALL="curl-$LIBCURL_VERSION.tar.gz"
LIBCURL_URL="http://curl.haxx.se/download/$LIBCURL_TARBALL"
export MAC_OS_X_DEPLOYMENT_TARGET=10.4
ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
SDK="/Developer/SDKs/MacOSX10.4u.sdk"
if [ ! -d $SDK ]; then
SDK="/Developer/SDKs/MacOSX10.5.sdk"
fi
if [ "${OSTYPE:0:6}" == "darwin" ]; then
export CC="gcc-4.0"
export CXX="g++-4.0"
fi
cd $DL_DIR
# build ICU
if [ `which icu-config >/dev/null 2>&1` ]; then
$DL_CMD -o $DL_DIR/$ICU_TARBALL $ICU_URL
tar xzvf $DL_DIR/$ICU_TARBALL
cd $DL_DIR/icu/source
chmod +x configure install-sh
if [ "${OSTYPE:0:6}" == "darwin" ]; then
./configure --prefix=$DEPS_PREFIX --disable-dependency-tracking
make CFLAGS="-O -g -isysroot $SDK $ARCH_FLAGS" \
LDFLAGS=$ARCH_FLAGS
make install
else
./configure --prefix=$DEPS_PREFIX
make
#make check
make install
fi
cd $DL_DIR
rm -rf icu
fi
# TODO: What would be a good way to test for this?
if [ ! -f $DEPS_PREFIX/lib/libiconv.$DLLEXT ]; then
$DL_CMD -o $DL_DIR/$ICONV_TARBALL $ICONV_URL
tar xzvf $DL_DIR/$ICONV_TARBALL
cd $DL_DIR/libiconv-$ICONV_VERSION
if [ "${OSTYPE:0:6}" == "darwin" ]; then
./configure --prefix=$DEPS_PREFIX --disable-dependency-tracking
make CFLAGS="-O -g -isysroot $SDK $ARCH_FLAGS" \
LDFLAGS="$ARCH_FLAGS"
make install
else
./configure --prefix=$DEPS_PREFIX
make
make install
fi
cd $DL_DIR
rm -rf $DL_DIR/libiconv-$ICONV_VERSION
fi
if [ ! -f $DEPS_PREFIX/lib/libjpeg.a ]; then
$DL_CMD -o $DL_DIR/$LIBJPEG_TARBALL $LIBJPEG_URL
tar xzvf $DL_DIR/$LIBJPEG_TARBALL
cd $DL_DIR/jpeg-$LIBJPEG_VERSION
# jpeg install command expects this to exist.
mkdir -p $DEPS_PREFIX/man/man1
if [ "${OSTYPE:0:6}" == "darwin" ]; then
./configure --prefix=$DEPS_PREFIX --disable-dependency-tracking
make CFLAGS="-O -g -isysroot $SDK $ARCH_FLAGS" \
LDFLAGS="$ARCH_FLAGS"
make install
else
./configure --prefix=$DEPS_PREFIX
make
fi
cp libjpeg.a $DEPS_PREFIX/lib
cp *.h $DEPS_PREFIX/include
cd $DL_DIR
rm -rf $DL_DIR/jpeg-$LIBJPEG_VERSION
fi
if [ ! -f $DEPS_PREFIX/lib/libpng.a ]; then
$DL_CMD -o $DL_DIR/$LIBPNG_TARBALL $LIBPNG_URL
tar xzvf $DL_DIR/$LIBPNG_TARBALL
cd $DL_DIR/libpng-$LIBPNG_VERSION
if [ "${OSTYPE:0:6}" == "darwin" ]; then
./configure --prefix=$DEPS_PREFIX --disable-dependency-tracking
make CFLAGS="-O -g -isysroot $SDK $ARCH_FLAGS" \
LDFLAGS="$ARCH_FLAGS"
make install
else
./configure --prefix=$DEPS_PREFIX
make
make install
fi
cd $DL_DIR
rm -rf $DL_DIR/libpng-$LIBPNG_VERSION
fi
if [ ! -f $DEPS_PREFIX/lib/libcurl.$DLLEXT ]; then
$DL_CMD -o $DL_DIR/$LIBCURL_TARBALL $LIBCURL_URL
tar xzvf $DL_DIR/$LIBCURL_TARBALL
cd $DL_DIR/curl-$LIBCURL_VERSION
if [ "${OSTYPE:0:6}" == "darwin" ]; then
# CURL creates different build headers for 32 and 64 bit, so to get a universal build,
# we must first create a 32 bit version of the header, then a 64 bit version, and
# have the original header simply decide which to use.
export CFLAGS="-O -g -isysroot $SDK -mmacosx-version-min=10.4 -arch i386 -arch ppc"
./configure --prefix=$DEPS_PREFIX --disable-dependency-tracking
mkdir -p $DEPS_PREFIX/include/curl
cp include/curl/curlbuild.h include/curl/curlbuild32.h
cp include/curl/curlbuild.h $DEPS_PREFIX/include/curl/curlbuild32.h
make distclean
export CFLAGS="-O -g -isysroot $SDK -mmacosx-version-min=10.4 -arch x86_64 -arch ppc64"
./configure --prefix=$DEPS_PREFIX --disable-dependency-tracking
cp include/curl/curlbuild.h include/curl/curlbuild64.h
cp include/curl/curlbuild.h $DEPS_PREFIX/include/curl/curlbuild64.h
make distclean
export CFLAGS="-O -g -isysroot $SDK -mmacosx-version-min=10.4 $ARCH_FLAGS"
./configure --prefix=$DEPS_PREFIX --disable-dependency-tracking
cat > include/curl/curlbuild.h <<EOF
#ifdef __LP64__
#include "curlbuild64.h"
#else
#include "curlbuild32.h"
#endif
EOF
make CFLAGS="-O -g -isysroot $SDK $ARCH_FLAGS" \
LDFLAGS="$ARCH_FLAGS"
make install
else
./configure --prefix=$DEPS_PREFIX
make
make install
fi
cd $DL_DIR
rm -rf $DL_DIR/curl-$LIBCURL_VERSION
fi