summaryrefslogtreecommitdiffstats
path: root/WebKitTools/wx/build-wxwebkit
diff options
context:
space:
mode:
Diffstat (limited to 'WebKitTools/wx/build-wxwebkit')
-rwxr-xr-xWebKitTools/wx/build-wxwebkit407
1 files changed, 407 insertions, 0 deletions
diff --git a/WebKitTools/wx/build-wxwebkit b/WebKitTools/wx/build-wxwebkit
new file mode 100755
index 0000000..a4db5f2
--- /dev/null
+++ b/WebKitTools/wx/build-wxwebkit
@@ -0,0 +1,407 @@
+#!/bin/bash
+
+# Copyright (C) 2007 Robin Dunn, Kevin Ollivier 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.
+#
+# THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``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 COMPUTER, INC. OR
+# 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.
+#
+# Driver for the wxWebKit build process.
+
+set -o errexit
+#set -o xtrace
+
+#----------------------------------------------------------------------
+# Set up the environment
+
+scriptDir="$(cd $(dirname $0);pwd)"
+WK_ROOT=$scriptDir/../..
+WK_ROOTDIR="$WK_ROOT"
+
+cd $scriptDir
+
+if [ -z $WEBKITOUTPUTDIR ]; then
+ WEBKITOUTPUTDIR=`cd $WK_ROOT/WebKitTools/Scripts; perl -e "use webkitdirs; print productDir()"`
+fi
+
+WKWINLIBS=WebKitLibraries/win
+WINDEPS=" $WKWINLIBS/lib/pthreadVC2.dll"
+WINDEPS="$WINDEPS $WKWINLIBS/bin/icuuc34.dll $WKWINLIBS/bin/icudt34.dll $WKWINLIBS/bin/icuin34.dll"
+WINDEPS="$WINDEPS $WKWINLIBS/bin/libcurl.dll $WKWINLIBS/bin/libeay32.dll $WKWINLIBS/bin/ssleay32.dll $WKWINLIBS/bin/zlib1.dll"
+WINDEPS="$WINDEPS $WKWINLIBS/lib/sqlite3.dll"
+WINDEPS="$WINDEPS $WKWINLIBS/bin/libxml2.dll $WKWINLIBS/bin/libxslt.dll"
+WINDEPS="$WINDEPS $WKWINLIBS/bin/iconv.dll"
+
+# TODO: check that we are running from the root of the source tree...
+
+# cygpath will bork if the dir doesn't exist...
+mkdir -p $WEBKITOUTPUTDIR
+
+if [ $OSTYPE == cygwin ]; then
+ EXE=.exe
+ WK_ROOTDIR=`cygpath -d $WK_ROOT`
+ WEBKITOUTPUTDIR=`cygpath -d $WEBKITOUTPUTDIR`
+ export WEBKITOUTPUTDIR
+ if [ -z $WXWIN ]; then
+ echo "Error, you must set WXWIN to your wxWidgets root directory."
+ exit 1
+ fi
+ if [ -z $WX_PREFIX ]; then
+ WX_PREFIX=$WXWIN
+ fi
+ if [ -z $BAKEFILE_PATHS ]; then
+ export BAKEFILE_PATHS=$WXWIN/build/bakefiles/wxpresets
+ fi
+ LINKER=`which link`
+ if [ "$LINKER" = "/usr/bin/link" ]; then
+ echo "WARNING: wxWebKit builds using MSVC on Windows, but it looks like"
+ echo "you have the GCC linker on your path. If /usr/bin/link does NOT point"
+ echo "to the MSVC linker, you need to move it or change your path to pick up"
+ echo "Microsoft's link.exe program first."
+ fi
+
+else
+ export WEBKITOUTPUTDIR
+ WX_PREFIX=`wx-config --prefix`
+ if [ ! -d "$WX_PREFIX" ]; then
+ echo "ERROR: Cannot find your wxWidgets installation."
+ echo "Make sure wx-config is on your PATH and points to a valid wxWidgets installation."
+ exit 1
+ fi
+
+ CONFIG=`wx-config --selected-config`
+ if [ "${CONFIG:0:4}" != "gtk2" -a "${CONFIG:0:3}" != "mac" ]; then
+ echo "WARNING: This configuration '$CONFIG' is not currently supported by wxWebKit. Please use the win, mac, or gtk2 port depending on your platform."
+ fi
+
+ if [ ! -d "$WX_PREFIX/share/bakefile" ]; then
+ echo "ERROR: wxWidgets installation does not have wxpresets."
+ echo "wx-config is pointing to an installation that does not have Bakefile presets installed. Run `wx-config --version` to ensure your wxWidgets is of version 2.8+."
+ exit 1
+ fi
+
+ if [ -z $BAKEFILE_PATHS ]; then
+ export BAKEFILE_PATHS=$WX_PREFIX/share/bakefile
+ fi
+fi
+
+# after all that, make sure that BAKEFILE_PATHS was either set
+# previously, or by the code above
+if [ -z $BAKEFILE_PATHS ]; then
+ echo "Error, you must set BAKEFILE_PATHS to the directory containing wxpresets."
+ exit 1
+fi
+
+#----------------------------------------------------------------------
+# process command line args
+build_type_set=0
+
+do_bake=0
+do_prep=0
+do_extras=0
+do_build=0
+do_clean=0
+do_install=0
+use_wxgc=0
+debug=1
+wxdebug=0
+wxpython=0
+make_args=''
+other_args=''
+
+for flag in $*; do
+ case $flag in
+ bake) do_bake=1 ;;
+ prep) do_prep=1 ;;
+ build) do_build=1 ;;
+ all) do_extras=1; do_bake=1; do_prep=1; do_build=1 ;;
+ clean) other_args=clean; do_clean=1 ;;
+ wxgc) use_wxgc=1 ;;
+ wxdebug) wxdebug=1 ;;
+ wxpython) wxpython=1 ;;
+ wxpython-install) wxpython_install=1 ;;
+ *) export $flag ;; #other_args='$other_args "$flag"' ;;
+ esac
+done
+
+
+#----------------------------------------------------------------------
+
+# if no arguments were passed, do a full build.
+if [ $do_bake == 0 -a $do_prep == 0 -a $do_build == 0 -a $do_clean == 0 ]; then
+ do_bake=1; do_prep=1; do_build=1
+fi
+
+if [ -f $WK_ROOT/WebKitBuild/Configuration ]; then
+ BUILD_TYPE=`cat $WK_ROOT/WebKitBuild/Configuration`
+ echo "Configuration is: $BUILD_TYPE"
+
+ if [ $BUILD_TYPE == "Release" ]; then
+ debug=0
+ fi
+ if [ $BUILD_TYPE == "Debug" ]; then
+ debug=1
+ fi
+
+fi
+
+function do_make {
+ dir=$1
+ cxxflags=$2
+ olddir=$PWD
+ shift
+ shift
+ # NOTE: If we try to do make clean after the Bakefiles were cleaned out, or before they were
+ # first generated, we will get errors about missing files, so we need to check that the
+ # makefile exists before running it.
+ if [ $OSTYPE == cygwin ]; then
+ cd $dir
+ if [ -f makefile.vc ]; then
+ nmake -f makefile.vc CXXFLAGS="$cxxflags" $@
+ fi
+ cd $olddir
+ else
+ if [ -f $dir/GNUmakefile ]; then
+ make -C $dir -f GNUmakefile $MAKE_ARGS CXXFLAGS="$cxxflags" $@
+ fi
+ fi
+ if [ $? != 0 ]; then
+ exit $?
+ fi
+}
+
+# output the first parameter that is a dir and exists
+function find_existing_dir {
+ for arg in $*; do
+ tester=$arg
+ if [ $OSTYPE == cygwin ]; then
+ tester=`cygpath -u $arg`
+ fi
+ if [ -d $tester ]; then
+ echo $arg
+ return
+ fi
+ done
+}
+
+
+olddir=$PWD
+
+if [ $do_clean != 1 ]; then
+
+ mkdir -p $WEBKITOUTPUTDIR/build
+
+ if [ $do_bake == 1 ]; then
+ # bakefile stuff
+ cd $WK_ROOT/WebKit/wx
+ bakefile_gen
+
+ # we need to do this because Bakefile doesn't know which
+ # platform it's running on with GNU format, and so it defaults
+ # to the standard Unix file endings and linker args.
+ if [ "${OSTYPE:0:6}" = "darwin" ]; then
+ sed "s/libwebcore-wx.so/libwebcore-wx.dylib/" < $WK_ROOT/WebCore/GNUmakefile > temp
+ mv temp $WK_ROOT/WebCore/GNUmakefile
+
+ sed "s/\-shared/\-dynamiclib/" < $WK_ROOT/WebCore/GNUmakefile > temp
+ mv temp $WK_ROOT/WebCore/GNUmakefile
+
+ sed "s/libwxwebkit.so/libwxwebkit.dylib/" < $WK_ROOT/WebKit/wx/GNUmakefile > temp
+ mv temp $WK_ROOT/WebKit/wx/GNUmakefile
+
+ sed "s/\-shared/\-dynamiclib/" < $WK_ROOT/WebKit/wx/GNUmakefile > temp
+ mv temp $WK_ROOT/WebKit/wx/GNUmakefile
+ fi
+ fi
+
+ if [ $do_prep == 1 ]; then
+ # Other preparation steps
+
+ # since the buildbot will wipe the build tree clean sometimes, we need to reinstall
+ # the dependencies if they aren't installed.
+ if [ "${OSTYPE:0:6}" == "darwin" ]; then
+ $WK_ROOT/WebKitTools/wx/install-unix-extras
+ fi
+
+ cd $WK_ROOT/JavaScriptCore
+ ./make-generated-sources.sh
+ if [ $? != 0 ]; then
+ exit $?
+ fi
+
+ cd $WK_ROOT/WebCore
+ ./make-generated-sources.sh FEATURE_DEFINES="ENABLE_DATABASE"
+ if [ $? != 0 ]; then
+ exit $?
+ fi
+ fi
+fi
+
+
+if [ $do_build == 1 -o $do_clean == 1 ]; then
+ # Build steps
+ WXGC_DEFINE=""
+ if [ $use_wxgc == 1 ]; then
+ WXGC_DEFINE="-DWTF_USE_WXGC=1"
+ fi
+ WX_EXT=
+ if [ "${OSTYPE:0:6}" == "cygwin" -a $wxdebug == 1 ]; then
+ WX_EXT=d
+ fi
+ if [ "${OSTYPE:0:6}" == "cygwin" -a $wxpython == 1 ]; then
+ other_args=WX_PYTHON=1
+ WX_EXT=h
+ wxdebug=1
+ fi
+
+ if [ "${OSTYPE:0:6}" == "cygwin" ]; then
+ PLATFORM_OS="win"
+ elif [ "${OSTYPE:0:6}" == "darwin" ]; then
+ PLATFORM_OS="mac"
+ else
+ PLATFORM_OS="linux"
+ use_wxgc=1 # Linux requires us to use wxgc to get proper drawing.
+ fi
+
+ WINDEPS="$WINDEPS $WXWIN/lib/vc_dll/wxmsw28u${WX_EXT}_core_vc.dll $WXWIN/lib/vc_dll/wxbase28u${WX_EXT}_vc.dll"
+
+ do_make $WK_ROOT/JavaScriptCore "-DBUILDING_WX__=1 $WXGC_DEFINE" WX_DEBUG=$wxdebug DEBUG=$debug WEBKIT_ROOT=$WK_ROOTDIR PLATFORM_OS=$PLATFORM_OS $other_args
+
+ mkdir -p $WEBKITOUTPUTDIR/JavaScriptCore
+ cp -p $WK_ROOT/JavaScriptCore/API/*.h $WEBKITOUTPUTDIR/JavaScriptCore/
+
+ do_make $WK_ROOT/WebCore "-DBUILDING_WX__=1 $WXGC_DEFINE" WX_DEBUG=$wxdebug WEBKIT_ROOT=$WK_ROOTDIR DEBUG=$debug PLATFORM_OS=$PLATFORM_OS $other_args
+ do_make $WK_ROOT/WebKit/wx "-DBUILDING_WX__=1 -DWXMAKINGDLL_WEBKIT=1 $WXGC_DEFINE" WX_DEBUG=$wxdebug DEBUG=$debug WEBKIT_ROOT=$WK_ROOTDIR PLATFORM_OS=$PLATFORM_OS $other_args
+ do_make $WK_ROOT/WebKitTools/wx/browser "-DBUILDING_WX__=1 -DWXUSINGDLL_WEBKIT=1 $WXGC_DEFINE" WX_DEBUG=$wxdebug DEBUG=$debug WEBKIT_ROOT=$WK_ROOTDIR PLATFORM_OS=$PLATFORM_OS $other_args
+
+ if [ $do_clean == 1 ]; then
+ rm -rf $WK_ROOT/JavaScriptCore/DerivedSources
+ rm -rf $WK_ROOT/WebCore/DerivedSources
+ rm -rf $WK_ROOT/WebCore/include/JavaScriptCore
+ fi
+
+ if [ $do_build == 1 ]; then
+ if [ "${OSTYPE:0:6}" = "darwin" ]; then
+ cd $WEBKITOUTPUTDIR
+ mkdir -p wxBrowser.app/Contents/MacOS
+ mkdir -p wxBrowser.app/Contents/Frameworks
+ cp wxBrowser wxBrowser.app/Contents/MacOS
+ install_name_tool -change libwxwebkit.dylib @executable_path/../Frameworks/libwxwebkit.dylib wxBrowser.app/Contents/MacOS/wxBrowser
+ if [ ! -f "$WEBKITOUTPUTDIR/libwxwebkit.dylib" ]; then
+ ln -s $WEBKITOUTPUTDIR/libwxwebkit.dylib wxBrowser.app/Contents/Frameworks
+ fi
+ fi
+
+ if [ $wxpython == 1 ]; then
+ if [ -z $SWIG ]; then
+ SWIG=`which swig`
+ fi
+
+ if [ ! -f "$SWIG" ]; then
+ echo "ERROR: Cannot find SWIG. Make sure that SWIG 1.3.29 is located on your path.";
+ exit 1;
+ fi
+
+ cd $WK_ROOT/WebKit/wx/bindings/python
+
+ SWIG_FLAGS=`python -c "import wx.build.config; import string; print string.join(wx.build.config.swig_args, ' ')"`
+ WEBKIT_INCLUDE="-I$WK_ROOT/WebKit/wx"
+ if [ "${OSTYPE:0:6}" == "cygwin" ]; then
+ WEBKIT_INCLUDE="-I`cygpath -d $WK_ROOT/WebKit/wx`"
+ fi
+
+ # Determine which include path to use for wxPython's *.i files
+ # Options are:
+ # wxPython installed on a posix system
+ # the wxPython win32 devel tarball
+ # a wx source tree from a tarball where wxPython is in the wx dir
+ # a wx source tree from SVN where wxPython is a sibling of the wx dir
+ WXPY_INCLUDE=`find_existing_dir \
+ $WX_PREFIX/include/wx-2.9/wx/wxPython/i_files \
+ $WX_PREFIX/include/wx-2.8/wx/wxPython/i_files \
+ $WX_PREFIX/include/wx/wxPython/i_files \
+ $WX_PREFIX/wxPython/src \
+ $WX_PREFIX/../wxPython/src`
+ if [ -z $WXPY_INCLUDE ]; then
+ echo "ERROR: Unable to find wxPython's *.i files"
+ exit 1
+ fi
+
+ # Run SWIG
+ $SWIG $SWIG_FLAGS -I$WXPY_INCLUDE $WEBKIT_INCLUDE -o webview.cpp webview.i
+ cp webview.py $WEBKITOUTPUTDIR/webview.py
+
+ PY_INCLUDE=`python -c "import sys,distutils.sysconfig; sys.stdout.write(distutils.sysconfig.get_python_inc())"`
+ PY_VERSION=`python -c "import sys; sys.stdout.write(str(sys.version_info[0]) + str(sys.version_info[1]))"`
+ PY_LIBDIR=`python -c "import distutils.sysconfig; import sys; sys.stdout.write(distutils.sysconfig.PREFIX)"`
+
+ if [ "${OSTYPE:0:6}" == "cygwin" ]; then
+ PY_LIBDIR="$PY_LIBDIR\\Libs"
+ else
+ PY_LIBDIR="$PY_LIBDIR/lib"
+ fi
+
+ do_make $WK_ROOT/WebKit/wx/bindings/python "-DBUILDING_WX__=1 -DWXUSINGDLL=1 -DWXUSINGDLL_WEBKIT=1 -I$PY_INCLUDE -I$WX_PREFIX/wxPython/include -I$WX_PREFIX/../wxPython/include $WXGC_DEFINE" \
+ WX_DEBUG=$wxdebug DEBUG=$debug WEBKIT_ROOT=$WK_ROOTDIR PLATFORM_OS=$PLATFORM_OS PYTHON_VERSION=$PY_VERSION PYTHON_LIBDIR=$PY_LIBDIR $other_args
+ if [ "${OSTYPE:0:6}" == "cygwin" ]; then
+ if [ -f $WEBKITOUTPUTDIR/_webview.pyd -a -f $WEBKITOUTPUTDIR/_webview.dll ]; then
+ rm $WEBKITOUTPUTDIR/_webview.pyd
+ mv $WEBKITOUTPUTDIR/_webview.dll $WEBKITOUTPUTDIR/_webview.pyd
+ fi
+ fi
+ fi
+
+
+ if [ "$OSTYPE" == "cygwin" ]; then
+ echo "Copying necessary DLLs to run test and sample applications..."
+ cd $WK_ROOT
+ cp $WINDEPS `cygpath -u $WEBKITOUTPUTDIR`
+ chmod +x `cygpath -u $WEBKITOUTPUTDIR/`*.dll
+ if [ -e `cygpath -u $WEBKITOUTPUTDIR/_webview.dll` ]; then
+ mv `cygpath -u $WEBKITOUTPUTDIR/_webview.dll` `cygpath -u $WEBKITOUTPUTDIR/_webview.pyd`
+ fi
+ fi
+
+ BROWSERAPP="wxBrowser"
+
+ if [ "${OSTYPE:0:6}" == "darwin" ]; then
+ BROWSERAPP="wxBrowser.app/Contents/MacOS/wxBrowser"
+ fi
+
+ echo ""
+ echo ""
+ echo "--- BUILD COMPLETE ---"
+ echo ""
+ echo "Next steps:"
+ echo ""
+ echo "-- Run '$WK_ROOT/WebKitTools/Scripts/run-javascriptcore-tests --wx' to ensure JSCore tests pass."
+ echo ""
+ echo "-- Run $WEBKITOUTPUTDIR/$BROWSERAPP to test your wxWebKit build."
+ echo ""
+ echo ""
+ fi
+fi
+
+if [ $do_clean == 1 ]; then
+ cd $WK_ROOT/WebKit/wx
+ bakefile_gen --clean
+fi
+
+cd $olddir