From 7a006b4818811057f537006113039265cff9e95e Mon Sep 17 00:00:00 2001 From: Christian Stimming Date: Sun, 13 Mar 2011 00:02:27 +0000 Subject: [PATCH] Win32: Tweak cross compiling script for webkit so that is seems to almost compile. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@20406 57a11ea4-9604-0410-9ed3-97b8803252fd --- packaging/win32/crossbuild_webkit.sh | 74 +++++++++++++++----- packaging/win32/defaults.sh | 13 ++-- packaging/win32/webkit-1.2.7-time.patch | 22 ++++++ packaging/win32/webkit-1.2.7-vasprintf.patch | 22 ++++++ 4 files changed, 109 insertions(+), 22 deletions(-) create mode 100644 packaging/win32/webkit-1.2.7-time.patch create mode 100644 packaging/win32/webkit-1.2.7-vasprintf.patch diff --git a/packaging/win32/crossbuild_webkit.sh b/packaging/win32/crossbuild_webkit.sh index 10c9cbef26..d9cfe4c2d5 100755 --- a/packaging/win32/crossbuild_webkit.sh +++ b/packaging/win32/crossbuild_webkit.sh @@ -82,11 +82,10 @@ function inst_crossmingw() { _MINGW_UDIR=`unix_path $MINGW_DIR` mkdir -p `unix_path $MINGW_DIR\\\\mingw32` if [ -d $_MINGW_UDIR ] && - quiet $_MINGW_UDIR/bin/mingw32-gcc -v && - quiet mingw32-gcc -v + quiet $CC -v then echo "Cross mingw installed." - if [ ` mingw32-gcc -dumpversion | cut -d. -f1` -le 3 ] ;then + if [ ` $CC -dumpversion | cut -d. -f1` -le 3 ] ;then die "GCC 4.4 or higher needed" fi else @@ -105,7 +104,7 @@ function inst_crossmingw() { function inst_crossbinutils() { _MINGW_UDIR=`unix_path $MINGW_DIR` - if quiet $_MINGW_UDIR/bin/mingw32-ld -v + if quiet $LD -v then echo "Cross binutils already installed." else @@ -131,7 +130,7 @@ function inst_crossbinutils() { function inst_crossgcc(){ _MINGW_UDIR=`unix_path $MINGW_DIR` - if quiet $_MINGW_UDIR/bin/mingw32-gcc + if quiet $CC then echo "Cross gcc alreadyinstalled." else @@ -160,7 +159,7 @@ EOF qpopd qpushd $TMP_UDIR/build-gcc $TMP_UDIR/gcc-*/configure \ - --prefix=$_MINGW_UDIR --target=mingw32 \ + --prefix=$_MINGW_UDIR --target=$TARGET \ --with-headers=$_MINGW_UDIR/mingw32/include \ --enable-languages=c,c++ \ --with-gcc --with-gnu-ld --with-gnu-as \ @@ -171,7 +170,7 @@ EOF make make install qpopd - if quiet $_MINGW_UDIR/bin/mingw32-gcc -v + if quiet $CC -v then rm -rf $TMP_UDIR/build-gcc $TMP_UDIR/gcc-* $TMP_UDIR/mydir echo "Cross gcc installed successfully." @@ -188,7 +187,7 @@ function inst_libxslt_gnome() { add_to_env -L$_GNOME_UDIR/lib GNOME_LDFLAGS add_to_env $_GNOME_UDIR/lib/pkgconfig PKG_CONFIG_PATH if [ "$CROSS_COMPILE" != "yes" ]; then - add_to_env $_GNOME_UDIR//pkg-config-msys.shPKG_CONFIG + add_to_env $_GNOME_UDIR//pkg-config-msys.sh PKG_CONFIG else add_to_env pkg-config PKG_CONFIG fi @@ -214,12 +213,24 @@ EOF assert_one_dir $TMP_UDIR/libxslt-* qpushd $TMP_UDIR/libxslt-* ./configure ${HOST_XCOMPILE} \ + --with-libxml-prefix=$_GNOME_UDIR \ + --with-libxml-include-prefix=$_GNOME_UDIR/include/libxml2 \ + --with-libxml-libs-prefix=$_GNOME_UDIR/lib \ + PKG_CONFIG_PATH="$_GNOME_UDIR/lib/pkgconfig" \ --prefix=${_GNOME_UDIR} \ + --enable-static=no \ + --with-plugins=no \ + --with-python=no \ CPPFLAGS="$GNOME_CPPFLAGS $GNUTLS_CPPFLAGS" \ LDFLAGS="$GNOME_LDFLAGS $GNUTLS_LDFLAGS" + make . + cd libxslt + make EXTRA_LIBS="-L$_GNOME_UDIR/bin -lxml2-2" + cd .. make make install qpopd + rm -r $TMP_UDIR/libxslt-* fi } @@ -318,6 +329,7 @@ function inst_libsoup () { make make install qpopd + rm -r $TMP_UDIR/libsoup-* fi } @@ -325,6 +337,7 @@ function inst_webkit() { setup WebKitGTK+ _MINGW_UDIR=`unix_path $MINGW_DIR` _GNOME_UDIR=`unix_path $GNOME_DIR` + _WEBKIT_DIR=`unix_path $WEBKIT_DIR` add_to_env -I$_GNOME_UDIR/include GNOME_CPPFLAGS add_to_env -L$_GNOME_UDIR/lib GNOME_LDFLAGS add_to_env $_GNOME_UDIR/lib/pkgconfig PKG_CONFIG_PATH @@ -355,18 +368,39 @@ function inst_webkit() { wget_unpacked $WEBKIT_SRC_URL $DOWNLOAD_DIR $TMP_DIR assert_one_dir $TMP_UDIR/webkit-* qpushd $TMP_UDIR/webkit-* - patch -p1 < $WEBKIT_PATCH - patch -p1 < $WEBKIT_PATCH2 - perl -pi.bak -e"s!/usr/bin/gcc!$_MINGW_UDIR/bin/mingw32-gcc!" \ + if [ -n "$WEBKIT_PATCH" -a -f "$WEBKIT_PATCH" ] ; then + patch -p1 < $WEBKIT_PATCH + fi + if [ -n "$WEBKIT_PATCH2" -a -f "$WEBKIT_PATCH2" ] ; then + patch -p1 < $WEBKIT_PATCH2 + fi + perl -pi.bak -e"s!/usr/bin/gcc!$CC!" \ WebCore/dom/make_names.pl \ WebCore/css/make-css-file-arrays.pl \ WebCore/bindings/scripts/IDLParser.pm ./configure ${HOST_XCOMPILE} \ - --prefix=${_GNOME_UDIR} \ - --disable-silent-rules \ - --disable-video \ - --with-target=win32 \ CPPFLAGS="$GNOME_CPPFLAGS" \ + --prefix=${_WEBKIT_DIR} \ + --enable-silent-rules \ + --disable-datalist \ + --disable-dom-storage \ + --disable-eventsource \ + --disable-filters \ + --disable-gtk-doc-html \ + --disable-offline-web-applications \ + --disable-ruby \ + --disable-shared-workers \ + --disable-silent-rules \ + --disable-svg-animation \ + --disable-svg-as-image \ + --disable-svg-fonts \ + --disable-svg-foreign-object \ + --disable-svg-use \ + --disable-video \ + --disable-workers \ + --disable-xpath \ + --with-target=win32 \ + --with-unicode-backend=icu \ CFLAGS="-g -O2 -std=gnu99" \ CXXFLAGS="-g -O2 -std=gnu++98" \ LDFLAGS="$GNOME_LDFLAGS" @@ -445,12 +479,20 @@ function build_icu4c_native() { function inst_icu4c_mingw32() { setup icu4c-mingw32 _ICU4C_UDIR=`unix_path $ICU4C_DIR` + rm -rf $TMP_UDIR/icu-cross mkdir -p $TMP_UDIR/icu-cross + + # Note: If you have TARGET=i586-mingw32mingw, for this library you + # need to set a different --host argument here due to some known + # bug in the ICU source package + #HOST_XCOMPILE="--host=i586-mingw32" + qpushd $TMP_UDIR/icu-cross $TMP_UDIR/icu/source/configure ${HOST_XCOMPILE} \ --prefix=$_ICU4C_UDIR \ --with-cross-build=$TMP_UDIR/icu-native \ - --with-data-packaging=library + --with-data-packaging=library \ + CC=$CC CPP="$CC -E" RANLIB=$RANLIB CXX=$TARGET-g++ make \ CFLAGS="-g -O2 -std=gnu99" \ CXXFLAGS="-g -O2 -std=gnu++98" diff --git a/packaging/win32/defaults.sh b/packaging/win32/defaults.sh index 0893bc8b9c..902d0f7694 100644 --- a/packaging/win32/defaults.sh +++ b/packaging/win32/defaults.sh @@ -201,7 +201,7 @@ set_default LIBXSLT_LIBXML2_URL "${XMLSOFT_URL}/libxml2-2.7.6.win32.zip" set_default LIBXSLT_ICONV_URL "${XMLSOFT_URL}/iconv-1.9.2.win32.zip" set_default LIBXSLT_ZLIB_URL "${XMLSOFT_URL}/zlib-1.2.3.win32.zip" set_default LIBXSLT_DIR $GLOBAL_DIR\\libxslt -#set_default LIBXSLT_SRC_URL "http://xmlsoft.org/sources/libxslt-1.1.26.tar.gz" # unused +set_default LIBXSLT_SRC_URL "http://xmlsoft.org/sources/libxslt-1.1.26.tar.gz" # needed for webkit build set_default LIBXML2_URL "$GNOME_WIN32_DEPS_URL/libxml2_2.7.4-1_win32.zip" set_default LIBXML2_DEV_URL "$GNOME_WIN32_DEPS_URL/libxml2-dev_2.7.4-1_win32.zip" @@ -298,11 +298,12 @@ set_default INNO_DIR $GLOBAL_DIR\\inno set_default HH_URL "http://download.microsoft.com/download/0/a/9/0a939ef6-e31c-430f-a3df-dfae7960d564/htmlhelp.exe" set_default HH_DIR $GLOBAL_DIR\\hh -set_default WEBKIT_URL "$SF_MIRROR/gnucash/webkit-1.1.90-win32.zip" -set_default WEBKIT_DIR $GLOBAL_DIR\\webkit-1.1.90 -set_default WEBKIT_SRC_URL "http://www.webkitgtk.org/webkit-1.1.90.tar.gz" -set_default WEBKIT_PATCH `pwd`/webkit-1.2.0-time.diff -set_default WEBKIT_PATCH2 `pwd`/webkit-1.2.0-vsaprintf.diff +set_default WEBKIT_VERSION "1.1.90" +set_default WEBKIT_URL "$SF_MIRROR/gnucash/webkit-${WEBKIT_VERSION}-win32.zip" +set_default WEBKIT_DIR $GLOBAL_DIR\\webkit-${WEBKIT_VERSION} +set_default WEBKIT_SRC_URL "http://www.webkitgtk.org/webkit-1.2.7.tar.gz" +set_default WEBKIT_PATCH `pwd`/webkit-1.2.7-time.patch +set_default WEBKIT_PATCH2 `pwd`/webkit-1.2.7-vasprintf.patch set_default ENCHANT_URL "$GNOME_WIN32_URL/dependencies/enchant_1.5.0-2_win32.zip" set_default ENCHANT_DEV_URL "$GNOME_WIN32_URL/dependencies/enchant-dev_1.5.0-2_win32.zip" #set_default LIBSOUP_URL "$GNOME_WIN32_URL/libsoup/2.4/libsoup-2.4.0.zip" diff --git a/packaging/win32/webkit-1.2.7-time.patch b/packaging/win32/webkit-1.2.7-time.patch new file mode 100644 index 0000000000..68c6b44001 --- /dev/null +++ b/packaging/win32/webkit-1.2.7-time.patch @@ -0,0 +1,22 @@ +diff -ur -x '*.lo' -x '*.o' webkit-1.1.90-orig/WebCore/platform/network/ResourceResponseBase.h webkit-1.1.90/WebCore/platform/network/ResourceResponseBase.h +--- webkit-1.1.90-orig/WebCore/platform/network/ResourceResponseBase.h 2010-02-22 17:36:04.000000000 +0100 ++++ webkit-1.1.90/WebCore/platform/network/ResourceResponseBase.h 2011-03-12 22:11:06.720211214 +0100 +@@ -31,6 +31,7 @@ + #include "KURL.h" + + #include ++#include + + namespace WebCore { + +diff -ur webkit-1.2.7-orig/WebCore/page/Page.h webkit-1.2.7/WebCore/page/Page.h +--- webkit-1.2.7-orig/WebCore/page/Page.h 2010-09-10 15:20:33.000000000 +0200 ++++ webkit-1.2.7/WebCore/page/Page.h 2011-03-12 23:25:35.670211006 +0100 +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + + #if PLATFORM(MAC) + #include "SchedulePair.h" diff --git a/packaging/win32/webkit-1.2.7-vasprintf.patch b/packaging/win32/webkit-1.2.7-vasprintf.patch new file mode 100644 index 0000000000..f7396589d1 --- /dev/null +++ b/packaging/win32/webkit-1.2.7-vasprintf.patch @@ -0,0 +1,22 @@ +diff -ur webkit-1.2.7-orig/WebCore/dom/XMLTokenizerLibxml2.cpp webkit-1.2.7/WebCore/dom/XMLTokenizerLibxml2.cpp +--- webkit-1.2.7-orig/WebCore/dom/XMLTokenizerLibxml2.cpp 2010-09-10 15:20:33.000000000 +0200 ++++ webkit-1.2.7/WebCore/dom/XMLTokenizerLibxml2.cpp 2011-03-12 23:13:39.521370554 +0100 +@@ -23,6 +23,9 @@ + * Boston, MA 02110-1301, USA. + */ + ++#define _GNU_SOURCE ++#include ++ + #include "config.h" + #include "XMLTokenizer.h" + +@@ -908,7 +911,7 @@ + if (m_parserStopped) + return; + +-#if COMPILER(MSVC) || COMPILER(RVCT) ++#if 1 + char m[1024]; + vsnprintf(m, sizeof(m) - 1, message, args); + #else