#!/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