⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 build-wxwebkit

📁 linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自WebKit
💻
字号:
#!/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 environmentscriptDir="$(cd $(dirname $0);pwd)"WK_ROOT=$scriptDir/../..WK_ROOTDIR="$WK_ROOT"cd $scriptDirif [ -z $WEBKITOUTPUTDIR ]; then    WEBKITOUTPUTDIR=`cd $WK_ROOT/WebKitTools/Scripts; perl -e "use webkitdirs; print productDir()"`fiWKWINLIBS=WebKitLibraries/winWINDEPS="         $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 $WEBKITOUTPUTDIRif [ $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."    fielse    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    fifi# after all that, make sure that BAKEFILE_PATHS was either set# previously, or by the code aboveif [ -z $BAKEFILE_PATHS ]; then    echo "Error, you must set BAKEFILE_PATHS to the directory containing wxpresets."    exit 1fi#----------------------------------------------------------------------# process command line argsbuild_type_set=0do_bake=0do_prep=0do_extras=0do_build=0do_clean=0do_install=0use_wxgc=0debug=1wxdebug=0wxpython=0make_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"'               ;;    esacdone#----------------------------------------------------------------------# 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=1fiif [ -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    fifunction 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 existsfunction 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=$PWDif [ $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 platform/wx/wx-encodings.txt        if [ $? != 0 ]; then            exit $?         fi    fifiif [ $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 ""    fifiif [ $do_clean == 1 ]; then    cd $WK_ROOT/WebKit/wx    bakefile_gen --cleanficd $olddir

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -