Add wxWebKit sample and build script, and integrate it with build-webkit. Also make...
authorkevino@webkit.org <kevino@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 18 Nov 2007 17:15:24 +0000 (17:15 +0000)
committerkevino@webkit.org <kevino@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 18 Nov 2007 17:15:24 +0000 (17:15 +0000)
Reviewed by Darin Adler.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@27889 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKitTools/ChangeLog
WebKitTools/Scripts/build-webkit
WebKitTools/Scripts/webkitdirs.pm
WebKitTools/wx/browser/browser.bkl [new file with mode: 0644]
WebKitTools/wx/browser/browser.cpp [new file with mode: 0644]
WebKitTools/wx/build-wxwebkit [new file with mode: 0755]

index c4c764e7af83ef8dacae698cde2bc9735d6a0f66..de72e3da43df59bf88e55d15e88ad9a38bf71c62 100644 (file)
@@ -1,3 +1,19 @@
+2007-11-18  Kevin Ollivier  <kevino@theolliviers.com>
+
+        Add wxWebKit sample and build script, and integrate it with 
+        build-webkit. Also make build-webkit --clean work for all
+        ports.
+
+        Reviewed by Darin Adler.
+
+        * Scripts/build-webkit:
+        * Scripts/webkitdirs.pm:
+        * wx: Added.
+        * wx/browser: Added.
+        * wx/browser/browser.bkl: Added.
+        * wx/browser/browser.cpp: Added.
+        * wx/build-wxwebkit: Added.
+
 2007-11-17  Adam Roben  <aroben@apple.com>
 
         Make it easy to run Safari in the debugger on Windows
index 229c9f78107ec7bdfaf20e6940a35a3f04b55d19..e1707a0b42a9b0ec92bff10a3113c5326fd223e8 100755 (executable)
@@ -46,6 +46,7 @@ my $xsltSupport = 1;
 my $coverageSupport = 0;
 my $videoSupport = isOSX(); # Enable by default on OSX
 my $showHelp = 0;
+my $clean = 0;
 
 my $programName = basename($0);
 my $usage = <<EOF;
@@ -65,7 +66,8 @@ GetOptions('svg!' => \$svgSupport,
            'xslt!' => \$xsltSupport,
            'video!' => \$videoSupport,
            'coverage!' => \$coverageSupport,
-           'help' => \$showHelp);
+           'help' => \$showHelp,
+           'clean' => \$clean);
 
 if ($showHelp) {
    print STDERR $usage;
@@ -78,10 +80,31 @@ checkRequiredSystemConfig();
 setConfiguration();
 chdirWebKit();
 
+# FIXME: Migrate build-wxwebkit commands into build-webkit.
+if (isWx()) {
+    my @opts = ();
+    foreach (@ARGV) {
+        if ($_ eq "wxgc" || $_ eq "wxpython") {
+            push(@opts, $_);
+        }
+    }
+    if ($clean) {
+        push(@opts, "clean");
+    }
+    system "WebKitTools/wx/build-wxwebkit @opts";
+    exit 0;
+}
+
+
 my $productDir = productDir();
 my @options = XcodeOptions();
 my @overrideFeatureDefinesOption = ();
 
+if ($clean) {
+    push(@options, "-alltargets");
+    push(@options, "clean");
+}
+
 push @overrideFeatureDefinesOption, "ENABLE_DATABASE";
 push @overrideFeatureDefinesOption, "ENABLE_ICONDATABASE";
 push @overrideFeatureDefinesOption, "ENABLE_SVG" if $svgSupport;
@@ -172,7 +195,7 @@ for my $dir (@projects) {
         $result = system "xcodebuild", "-project", "$dir.xcodeproj", @options, $overrideFeatureDefinesString, @coverageSupportOption, @ARGV;
     } elsif (isCygwin()) {
         if ($dir eq "WebKit") {
-            $result = buildVisualStudioProject("win/WebKit.vcproj/WebKit.sln");
+            $result = buildVisualStudioProject("win/WebKit.vcproj/WebKit.sln", $clean);
         }
     }
 
@@ -189,6 +212,9 @@ for my $dir (@projects) {
     chdir ".." or die;
 }
 
+# Don't report the "WebKit is now built" message after a clean operation.
+exit if $clean;
+
 # Write out congratulations message.
 
 my $launcherPath = launcherPath();
index cd35373af0831624a376bae224299b2733577fa2..4d5ffebec1b890110fb634015764e754d88b7cc6 100644 (file)
@@ -54,6 +54,7 @@ my $currentSVNRevision;
 my $osXVersion;
 my $isQt;
 my $isGtk;
+my $isWx;
 
 # Variables for Win32 support
 my $vcBuildPath;
@@ -472,6 +473,23 @@ sub determineIsGtk()
     }
 }
 
+sub isWx()
+{
+    determineIsWx();
+    return $isWx;
+}
+
+sub determineIsWx()
+{
+    return if defined($isWx);
+
+    if (checkArgv("--wx")) {
+        $isWx = 1;
+    } else {
+        $isWx = 0;
+    }
+}
+
 sub isCygwin()
 {
     return ($^O eq "cygwin");
@@ -484,7 +502,7 @@ sub isDarwin()
 
 sub isOSX()
 {
-    return isDarwin() unless (isQt() or isGtk());
+    return isDarwin() unless (isQt() or isGtk() or isWx());
     return 0;
 }
 
@@ -572,7 +590,7 @@ sub checkRequiredSystemConfig
             print "http://developer.apple.com/tools/xcode\n";
             print "*************************************************************\n";
         }
-    } elsif (isGtk() or isQt()) {
+    } elsif (isGtk() or isQt() or isWx()) {
         my @cmds = qw(flex bison gperf);
         my @missing = ();
         foreach my $cmd (@cmds) {
@@ -628,17 +646,22 @@ sub setupCygwinEnv()
     print "WEBKITLIBRARIESDIR is set to: ", $ENV{"WEBKITLIBRARIESDIR"}, "\n";
 }
 
-sub buildVisualStudioProject($)
+sub buildVisualStudioProject
 {
-    my ($project) = @_;
+    my ($project, $clean) = @_;
     setupCygwinEnv();
 
     my $config = configurationForVisualStudio();
 
     chomp(my $winProjectPath = `cygpath -w "$project"`);
+    
+    my $command = "/build";
+    if ($clean) {
+        $command = "/clean";
+    }
 
     print "$vcBuildPath $winProjectPath /build $config\n";
-    return system $vcBuildPath, $winProjectPath, "/build", $config;
+    return system $vcBuildPath, $winProjectPath, $command, $config;
 }
 
 sub qtMakeCommand($)
@@ -669,6 +692,7 @@ sub qtMakeCommand($)
 sub buildQMakeProject(@)
 {
     my @buildArgs = @_;
+    my $clean = 0;
 
     push @buildArgs, "-r";
 
@@ -679,6 +703,8 @@ sub buildQMakeProject(@)
             $qmakebin = $1;
         } elsif ($opt =~ /^--qmakearg=(.*)/i ) {
             push @buildArgs, $1;
+        } elsif ($opt eq "--clean") {
+            $clean = 1; 
         }
     }
 
@@ -715,13 +741,16 @@ sub buildQMakeProject(@)
        die "Failed to setup build environment using $qmakebin!\n";
     }
 
-    my $clean = $ENV{"WEBKIT_FULLBUILD"};
-
-    if (defined $clean) {
+    if ($clean) {
       system "$make clean";
     }
 
-    $result = system "$make";
+    # There is now a --clean option for build-webkit, but it doesn't build
+    # after cleaning, as WEBKIT_FULLBUILD does. For now, have WEBKIT_FULLBUILD
+    # continue to behave after before.
+    if (!$clean || defined($ENV{"WEBKIT_FULLBUILD"})) {
+        $result = system "$make";
+    }
     chdir ".." or die;
     return $result;
 }
diff --git a/WebKitTools/wx/browser/browser.bkl b/WebKitTools/wx/browser/browser.bkl
new file mode 100644 (file)
index 0000000..505d740
--- /dev/null
@@ -0,0 +1,64 @@
+<?xml version="1.0" ?>
+<!-- 
+Copyright (C) 2007 Kevin Ollivier <kevino@theolliviers.com>
+
+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.
+
+wxWebKit sample application build file
+-->
+
+<makefile>
+    <set var="WX_UNICODE">1</set>
+    <set var="WX_SHARED">1</set>
+
+    <include file="../../../WebKit/wx/wxwk-settings.bkl"/>
+    
+    <!-- the WX_PYTHON option was added to presets/wx.bkl in 2.8.5, so define 
+         it in case the presets/wx.bkl doesn't define it for us. -->
+    <if cond="not isdefined('WX_PYTHON')">
+        <set var="WX_PYTHON">0</set>
+    </if>
+    <template id="wxwebkit">
+        <lib-path>$(WKOUTPUTDIR)</lib-path>
+        <sys-lib>wxwebkit</sys-lib>    
+    </template>
+    <exe id="wxBrowser" template="wxwk,xml2,iconv,xslt,icu,jscore,webcore,wxwebkit,curl,pthreads">
+        <app-type>gui</app-type>
+        <runtime-libs>dynamic</runtime-libs>
+        <set var="BUILDDIR">$(WKOUTPUTDIR)/build/wxbrowser-$(FORMAT)</set>
+        
+        <include>$(WK_ROOT)/WebCore/platform/wx</include>
+        <include>$(WK_ROOT)/WebCore/bridge/wx</include>
+        <include>$(WK_ROOT)/WebCore/page/wx</include>
+        <include>$(WK_ROOT)/WebKit/wx</include>
+        <include>$(WK_ROOT)/WebKit/wx/WebKitSupport</include>
+        
+        <sources>        
+            browser.cpp
+        </sources>
+        
+    </exe>
+
+</makefile>
diff --git a/WebKitTools/wx/browser/browser.cpp b/WebKitTools/wx/browser/browser.cpp
new file mode 100644 (file)
index 0000000..5993432
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2007 Kevin Ollivier <kevino@theolliviers.com>
+ *
+ * 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.
+ */
+// webkit includes
+#include "WebView.h"
+#include "WebFrame.h"
+
+#include "wx/wxprec.h"
+#ifndef WX_PRECOMP
+    #include "wx/wx.h"
+#endif
+
+class MyApp : public wxApp
+{
+public:
+
+    virtual bool OnInit();
+};
+
+
+IMPLEMENT_APP(MyApp)
+
+bool MyApp::OnInit()
+{
+    wxInitAllImageHandlers();
+        
+    // create the main application window
+    // see WebKit/wx/WebFrame.cpp for how to write a shell around wxWebView.
+    wxWebFrame *frame = new wxWebFrame(_T("wxWebKit Test App"));
+
+#ifndef NDEBUG
+    frame->ShowDebugMenu(true);
+#endif
+    frame->CentreOnScreen();
+    frame->Show(true);
+
+    return true;
+}
diff --git a/WebKitTools/wx/build-wxwebkit b/WebKitTools/wx/build-wxwebkit
new file mode 100755 (executable)
index 0000000..5f6d731
--- /dev/null
@@ -0,0 +1,325 @@
+#!/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
+
+export WXWEBKIT=1
+if [ -z $WEBKITOUTPUTDIR ]; then
+    WEBKITOUTPUTDIR=`cd $WK_ROOT/WebKitTools/Scripts; perl -e "use webkitdirs; print baseProductDir()"`
+fi
+
+WINDEPS="pthreads/lib/pthreadVC2.dll icu/bin/icuuc34.dll icu/bin/icudt34.dll libcurl/*.dll sqlite3/sqlite3.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 $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
+    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
+
+do_bake=0
+do_prep=0
+do_extras=0
+do_build=0
+do_clean=0
+do_install=0
+use_wxgc=0
+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
+
+function do_make {
+    dir=$1
+    cxxflags=$2
+    olddir=$PWD
+    shift
+    shift
+    if [ $OSTYPE == cygwin ]; then
+        cd $dir
+        nmake -f makefile.vc CXXFLAGS="$cxxflags" $@
+        cd $olddir
+    else
+        make -C $dir -f GNUmakefile $MAKE_ARGS CXXFLAGS="$cxxflags" $@
+    fi
+}
+
+olddir=$PWD
+
+if [ $do_clean == 1 ]; then
+    rm -rf $WK_ROOT/JavaScriptCore/DerivedSources
+    rm -rf $WK_ROOT/WebCore/DerivedSources
+    rm -rf $WK_ROOT/WebCore/include/JavaScriptCore
+else
+
+    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
+        cd $WK_ROOT/JavaScriptCore
+        # FIXME: The below is needed because Bakefile doesn't yet properly set dependencies on 
+        # creating the build dir. Everything works when you do make all, but not when you
+        # try to make a specific target. For more info, see: http://www.bakefile.org/ticket/167
+        mkdir -p obj-gnu
+        mkdir -p obj-msvc
+        do_make . "" dftables$EXE
+        ./make-generated-sources.sh
+        if [ $? != 0 ]; then
+            exit $? 
+        fi
+    
+        cd $WK_ROOT/WebCore
+        ./move-js-headers.sh
+        if [ $? != 0 ]; then
+            exit $? 
+        fi
+        ./make-generated-sources.sh platform/wx/wx-encodings.txt
+        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" == "cygwin" -a $wxdebug == 1 ]; then
+        WX_EXT=d
+    fi
+    if [ "$OSTYPE" == "cygwin" -a $wxpython == 1 ]; then
+        other_args=WX_PYTHON=1
+        WX_EXT=h
+        wxdebug=1
+    fi
+    
+    PLATFORM_OS="win"
+    if [ "${OSTYPE:0:6}" == "darwin" ]; then
+        PLATFORM_OS="mac"
+    else
+        PLATFORM_OS="linux"
+    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 WEBKIT_ROOT=$WK_ROOTDIR PLATFORM_OS=$PLATFORM_OS $other_args 
+    do_make $WK_ROOT/WebCore "-DBUILDING_WX__=1 $WXGC_DEFINE" WX_DEBUG=$wxdebug WEBKIT_ROOT=$WK_ROOTDIR PLATFORM_OS=$PLATFORM_OS $other_args
+    do_make $WK_ROOT/WebKit/wx "-DBUILDING_WX__=1 -DWXMAKINGDLL_WEBKIT=1 $WXGC_DEFINE" WX_DEBUG=$wxdebug 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 WEBKIT_ROOT=$WK_ROOTDIR PLATFORM_OS=$PLATFORM_OS $other_args 
+    
+    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
+            SWIG=`which swig`
+
+            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
+            $SWIG $SWIG_FLAGS -I$WX_PREFIX/include/wx-2.8/wx/wxPython/i_files $WEBKIT_INCLUDE -o webview.cpp webview.i
+            #$SWIG -I$WX_PREFIX/include/wx-2.8/wx/wxPython/i_files $WEBKIT_INCLUDE -xml -o webview.xml webview.i
+                        
+            
+            PY_INCLUDE=`python -c "import distutils.sysconfig; print distutils.sysconfig.get_python_inc()"`
+            PY_VERSION=`python -c "import sys;  print 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 $WXGC_DEFINE" \
+                    WX_DEBUG=$wxdebug 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 $WEBKITOUTPUTDIR
+        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 "-- Add WXWEBKIT=1 to your environment variables. This will let WebKit scripts know you're using the wx build."
+        echo ""
+        if [ "${OSTYPE:0:5}" = "linux" ]; then
+            echo "-- Add /usr/local/lib and $WEBKITOUTPUTDIR to your LD_LIBRARY_PATH environment variable."
+            echo ""
+        fi
+        echo "-- Run the 'run-javascriptcore-tests' script to ensure JSCore tests pass."
+        echo ""
+        echo "-- Run $WEBKITOUTPUTDIR/$BROWSERAPP to test your wxWebKit build."
+        echo ""
+        echo ""
+    fi
+fi
+
+cd $olddir