Mercurial > gub
changeset 4454:e136420ca82b
OpenOffice update: compile up to cppunit.
author | Jan Nieuwenhuizen <janneke@gnu.org> |
---|---|
date | Wed, 22 Oct 2008 21:47:11 +0200 |
parents | 0d051a7fc96c |
children | 8c55e9064d87 |
files | gub/specs/openoffice.py patches/openoffice-config_office-cross.patch patches/openoffice-external-mingwheaders.patch patches/openoffice-sal-mingw-c.patch patches/openoffice-sal-mingw.patch patches/openoffice-solenv-cross.patch sourcefiles/excpt.h sourcefiles/sehandler.h |
diffstat | 8 files changed, 474 insertions(+), 29 deletions(-) [+] |
line wrap: on
line diff
--- a/gub/specs/openoffice.py Wed Oct 22 21:46:25 2008 +0200 +++ b/gub/specs/openoffice.py Wed Oct 22 21:47:11 2008 +0200 @@ -1,4 +1,6 @@ +import operator import os +import re # from gub import context from gub import misc @@ -12,16 +14,19 @@ 5069:Module 'external' delivered successfully. 3 files copied, 27 files unchanged 6288:Module 'libwpd' delivered successfully. 12 files copied, 0 files unchanged 6397:Module 'xml2cmp' delivered successfully. 3 files copied, 2 files unchanged + Module 'sal' delivered successfully. 109 files copied, 1 files unchanged +Module 'vos' delivered successfully. 30 files copied, 1 files unchanged ''' class Openoffice (targetbuild.TargetBuild): # source = 'svn://gsvn.gnome.org/svn/ooo-build&branch=trunk&revision=14327' source = 'svn://svn.gnome.org/svn/ooo-build&branch=trunk' patches = ['openoffice-srcdir-build.patch'] - upstream_patches = ['openoffice-config_office-cross.patch', 'openoffice-config_office-gnu-make.patch', 'openoffice-config_office-mingw.patch', 'openoffice-solenv-cross.patch', 'openoffice-solenv.patch', 'openoffice-sal-cross.patch', 'openoffice-soltools-cross.patch', 'openoffice-soltools-mingw.patch'] -# upstream_patches = ['openoffice-config_office-cross.patch', 'openoffice-config_office-mingw.patch'] +# upstream_patches = ['openoffice-config_office-cross.patch', 'openoffice-config_office-gnu-make.patch', 'openoffice-config_office-mingw.patch', 'openoffice-solenv-cross.patch', 'openoffice-solenv.patch', 'openoffice-sal-cross.patch', 'openoffice-soltools-cross.patch', 'openoffice-soltools-mingw.patch', 'openoffice-sal-mingw.patch', 'openoffice-external-mingwheaders.patch'] + upstream_patches = ['openoffice-config_office-cross.patch', 'openoffice-config_office-gnu-make.patch', 'openoffice-solenv-cross.patch', 'openoffice-solenv.patch', 'openoffice-sal-cross.patch', 'openoffice-soltools-cross.patch'] def get_build_dependencies (self): - return ['boost-devel', 'curl', 'db-devel', 'expat', 'fontconfig-devel', 'libjpeg-devel', 'libpng-devel', 'python', 'saxon-java', 'xerces-c', 'zlib-devel'] + # redland-devel + return ['boost-devel', 'curl', 'cppunit-devel', 'db-devel', 'expat-devel', 'fontconfig-devel', 'libjpeg-devel', 'libpng-devel', 'python', 'saxon-java', 'xerces-c', 'zlib-devel'] def stages (self): return misc.list_insert_before (targetbuild.TargetBuild.stages (self), 'compile', @@ -103,6 +108,7 @@ --disable-vba --disable-vba --disable-xrender-link +--disable-atl --enable-fontconfig --enable-verbose @@ -153,24 +159,22 @@ self.system (''' cd %(builddir)s/build/%(cvs_tag)s && patch -p%(patch_strip_component)s < %(patchdir)s/%(name)s ''', locals ()) - def patch_upstream (self): - base = '%(builddir)s/build/%(cvs_tag)s' + def upstream_patched_files (self): + def files_in_patch (patch): + string = file (self.expand ('%(patchdir)s/%(patch)s', locals ())).read () + def file_name (chunk): + if chunk.find ('\n+++ ') >= 0: + return re.search ('\n[+]{3}\s+([.]/)?([^\s]+)', chunk).group (2) + return '' + return map (file_name, ('\n' + string).split ('\n---')[1:]) + files_with_patches = map (files_in_patch, self.upstream_patches) + return reduce (operator.__add__, files_with_patches) + def upstream_patch_reset (self): upstream_dir = self.upstream_dir () - for file in ( - 'config_office/acinclude.m4', - 'config_office/configure.in', - 'config_office/bootstrap.1', - 'config_office/set_soenv.in', - 'solenv/inc/startup/startup.mk', - 'solenv/inc/wntgcci6.mk', - 'solenv/inc/unitools.mk', - 'solenv/bin/build.pl', - 'solenv/bin/deliver.pl', - 'soltools/util/makefile.pmk', - 'soltools/mkdepend/collectdircontent.cxx', - 'sal/rtl/source/makefile.mk', - ): - self.system ('cp -p %(upstream_dir)s/%(file)s.pristine %(upstream_dir)s/%(file)s || cp -p %(upstream_dir)s/%(file)s %(upstream_dir)s/%(file)s.pristine' % locals ()) + for f in self.upstream_patched_files (): + self.system ('cp -p %(upstream_dir)s/%(f)s.pristine %(upstream_dir)s/%(f)s || cp -p %(upstream_dir)s/%(f)s %(upstream_dir)s/%(f)s.pristine' % locals ()) + def patch_upstream (self): + self.upstream_patch_reset () map (self.apply_upstream_patch, self.__class__.upstream_patches) # FIXME: neutralize silly GNU make check @@ -184,9 +188,6 @@ # http://www.mail-archive.com/autoconf@gnu.org/msg02857.html self.system ('sed -i -e "s@AC_CHECK_FILE(@AC_CHECK_FILE_CROSS(@" %(upstream_dir)s/config_office/configure.in') - # avoid juggling of names for windows-nt - self.system ('sed -i -e "s@WINNT@WNT@" %(upstream_dir)s/config_office/configure.in') - # TODO: ASM is handled in individual solenv/inc/*mk self.system (misc.join_lines ('''sed -i.guborig -e 's@\<ar\>@$(AR)@g' @@ -194,9 +195,20 @@ -e 's@\<ld\>\([^-]\|$\)@$(LD)\\1@g' -e 's@\<nm\>@$(NM)@g' -e 's@\<ranlib\>@$(RANLIB)@g' +-e 's@\<windres\>@$(WINDRES)@g' %(upstream_dir)s/solenv/inc/*mk''')) self.system ('chmod +x %(upstream_dir)s/solenv/bin/build.pl %(upstream_dir)s/solenv/bin/deliver.pl') + + self.system ('sed -i -e "s@[ \t]all@ i@g" %(upstream_dir)s/redland/prj/build.lst') + + # java go away + self.system ('sed -i -e "s@[ \t]all@ i@g" %(upstream_dir)s/sandbox/prj/build.lst') + + + # OO.o's included cppunit has build problems, but there's no --with-system-cppunit + # self.system ('sed -i -e "s@[ \t]\(all\|n\)[ \t]@ i @g" %(upstream_dir)s/cppunit/prj/build.lst') + def makeflags (self): return misc.join_lines (''' CC_FOR_BUILD=cc @@ -205,13 +217,49 @@ C_INCLUDE_PATH= LIBRARY_PATH= EXECPOST= +SOLAR_JAVA=TRUE ''') ##main configure barfs ##CPPFLAGS= class Openoffice__mingw (Openoffice): + Openoffice.upstream_patches += ['openoffice-config_office-mingw.patch', 'openoffice-soltools-mingw.patch', 'openoffice-sal-mingw.patch', 'openoffice-external-mingwheaders.patch'] + # external/mingwheaders seems a badly misguided effort. It + # patches header files and is thus strictly tied to a gcc version; + # that can never build. How can patching header files ever work, + # when not patching the corresponding libraries? Some patches + # remove #ifdef checks that can be enabled by setting a #define. + # Other patches only affect OO.o client code already inside + # __MINGW32__ defines. Why not fix OO.o makefiles and client + # code? + Openoffice.upstream_patches += ['openoffice-sal-mingw-c.patch'] + def get_build_dependencies (self): + return Openoffice.get_build_dependencies (self) + ['libunicows-devel'] def configure_command (self): return (Openoffice.configure_command (self) .replace ('--with-system-xrender-headers', '') + ' --disable-xrender-link' + ' --with-distro=Win32') + def patch_upstream (self): + Openoffice.patch_upstream (self) + # avoid juggling of names for windows-nt + self.system ('sed -i -e "s@WINNT@WNT@" %(upstream_dir)s/config_office/configure.in') + + self.system ('chmod +x %(upstream_dir)s/solenv/bin/addsym-mingw.sh') + + self.system ('cp -f %(upstream_dir)s/sal/osl/w32/MAKEFILE.MK %(upstream_dir)s/sal/osl/w32/makefile.mk') + + self.dump ('''\ +#! /bin/sh +set -e +in=$(eval echo '$'$#) +dir=$(dirname $in) +/usr/bin/wrc "$@" +if test "$dir" != "."; then + mv $(basename $in .rc).res $dir +fi +''', + '%(upstream_dir)s/solenv/bin/wrc', + permissions=0755) + + self.system ('cp -pv %(sourcefiledir)s/sehandler.h %(upstream_dir)s/solver/300/wntgcci.pro/inc')
--- a/patches/openoffice-config_office-cross.patch Wed Oct 22 21:46:25 2008 +0200 +++ b/patches/openoffice-config_office-cross.patch Wed Oct 22 21:47:11 2008 +0200 @@ -34,7 +34,7 @@ dnl =================================================================== dnl Set the ENABLE_CRASHDUMP variable. dnl =================================================================== -@@ -1649,6 +1651,26 @@ if test "$_os" = "OSF1"; then +@@ -1649,6 +1651,27 @@ if test "$_os" = "OSF1"; then fi fi @@ -44,6 +44,7 @@ +AC_CHECK_TOOL([LD], [ld], [:]) +AC_CHECK_TOOL([NM], [nm], [:]) +AC_CHECK_TOOL([RANLIB], [ranlib], [:]) ++AC_CHECK_TOOL([WINDRES], [windres], [:]) + +BUILD_OS=$_os +TARGET_OS=$t_os @@ -192,7 +193,7 @@ $ps.'$SOLARENV'.$BIN; if ($platform =~ m/solaris/) { -@@ -1847,6 +1847,19 @@ ToFile( "SOLAR_JAVA", $SOLAR_JAVA +@@ -1847,6 +1847,20 @@ ToFile( "SOLAR_JAVA", $SOLAR_JAVA ToFile( "BIG_SVX", $BIG_SVX, "e" ); ToFile( "COM", $COM, "e" ); ToFile( "COMPATH", $COMPATH, "e" ); @@ -206,8 +207,9 @@ +ToFile( "AS", "@AS@", "e" ); +ToFile( "DLLTOOL", "@DLLTOOL@", "e" ); +ToFile( "LD", "@LD@", "e" ); ++ToFile( "NM", "@NM@", "e" ); +ToFile( "RANLIB", "@RANLIB@", "e" ); -+ToFile( "NM", "@NM@", "e" ); ++ToFile( "WINDRES", "@WINDRES@", "e" ); +ToFile( "TOOLS_DIR", "@TOOLS_DIR@", "e" ); ToFile( "CPU", $CPU, "e" ); ToFile( "CPUNAME", $CPUNAME, "e" );
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openoffice-external-mingwheaders.patch Wed Oct 22 21:47:11 2008 +0200 @@ -0,0 +1,71 @@ +--- external/mingwheaders/makefile.mk.pristine 2008-06-06 18:46:47.000000000 +0200 ++++ external/mingwheaders/makefile.mk 2008-10-22 09:10:58.000000000 +0200 +@@ -35,17 +35,26 @@ + + .INCLUDE : settings.mk + +-.IF "$(OS)$(COM)" == "WNTGCC" ++.IF "$(OS)$(COM)" == "WNTGCC" && "$(CROSS_COMPILING)" != "yes" ++# patches fail with i686-mingw-gcc built from 4.1.1 ++# How this is supposed to work, patching mingw header files ++# without patching the mingw libraries? Why not fix OO.o ++# client code to work with latest mingw? + + # Cygwin and MinGW use different directories for the W32API headers + .IF "$(USE_MINGW)" == "cygwin" + MINGW_INCLUDE_DIR=$/usr$/include/mingw/include/ + MINGW_W32API_INCLUDE_DIR=$/usr$/include/w32api/ + MINGW_W32API_LIB_DIR=$/usr$/include/w32api/ +-.ELSE ++.ELIF "$(CROSS_COMPILING)" == "no" + MINGW_INCLUDE_DIR=$(COMPATH)$/include/ + MINGW_W32API_INCLUDE_DIR=$(COMPATH)$/include/ + MINGW_W32API_LIB_DIR=$(COMPATH)$/lib/ ++.ELSE # "$(CROSS_COMPILING)" == "yes" ++MINGW_INCLUDE_DIR=$(COMPATH)/../../include/ ++MINGW_W32API_INCLUDE_DIR=$(COMPATH)/../../include/ ++MINGW_W32API_LIB_DIR=$(COMPATH)/../../lib/ ++PSDK_HOME=$(COMPATH)/../.. + .ENDIF + + SYS_INCLUDE_DIR=$(MINGW_INCLUDE_DIR)$/sys/ +@@ -184,29 +189,33 @@ + $(COPY) $(FILES_TO_COPY_FROM_MINGW:^$(MINGW_INCLUDE_DIR)) $(MISC)$/mingw$/include + $(COPY) $(FILES_TO_COPY_FROM_W32API:^$(MINGW_W32API_INCLUDE_DIR)) $(MISC)$/mingw$/include + $(COPY) $(FILES_TO_COPY_FROM_SYS:^$(SYS_INCLUDE_DIR)) $(MISC)$/mingw$/include$/sys +- $(COPY) $(FILES_TO_COPY_FROM_PSDK:^$(PSDK_INCLUDE_DIR)) $(MISC)$/mingw$/include ++ $(COPY) $(FILES_TO_COPY_FROM_PSDK:^$(PSDK_INCLUDE_DIR)) $(MISC)$/mingw$/include || : ++.IF "$(DIRECTXSDK_HOME)" != "" + $(COPY) $(FILES_TO_COPY_FROM_DIRECTXSDK:^$(DIRECTXSDK_INCLUDE_DIR)) $(MISC)$/mingw$/include ++.ENDIF # "$(DIRECTXSDK_HOME)" != "" + $(TOUCH) $(MISC)$/mingwheader_copy + + .IF "$(DISABLE_ATL)"=="" + $(MINGWHEADER_ATL_COPY_TARGET): + $(MKDIRHIER) $(MISC)$/mingw$/include/atl + $(COPY) $(FILES_TO_COPY_FROM_ATL:^$(ATL_INCLUDE_DIR)) $(MISC)$/mingw$/include$/atl +- $(TOUCH) $(MINGWHEADER_ATL_COPY_TARGET) ++ $(TOUCH) $(MINGWHEADER_ATL_COPY_TARGET) + .ENDIF + + $(LB)$/libmsvcrt.a: + .IF "$(USE_MINGW)" == "cygwin" +- $(WRAPCMD) nm -g --defined-only $(COMPATH)$/lib/mingw/libmsvcrt.a > $(MISC)$/msvcrt.nm ++ $(WRAPCMD) $(NM) -g --defined-only $(COMPATH)$/lib/mingw/libmsvcrt.a > $(MISC)$/msvcrt.nm ++.ELIF "$(CROSS_COMPILING)" == "no" ++ $(WRAPCMD) $(NM) -g --defined-only $(COMPATH)$/lib/libmsvcrt.a > $(MISC)$/msvcrt.nm + .ELSE +- $(WRAPCMD) nm -g --defined-only $(COMPATH)$/lib/libmsvcrt.a > $(MISC)$/msvcrt.nm +-.ENDIF ++ $(WRAPCMD) $(NM) -g --defined-only $(COMPATH)/../../lib/libmsvcrt.a > $(MISC)$/msvcrt.nm ++.ENDIF # "$(CROSS_COMPILING)" == "yes" + echo EXPORTS > $(MISC)$/msvcrt.def + sed -ne 's/.* T _//p' $(MISC)$/msvcrt.nm | sort >> $(MISC)$/msvcrt.def + -sed -ne 's/.* I __imp__//p' $(MISC)$/msvcrt.nm | sort | diff - $(MISC)$/msvcrt.def | \ + sed -ne 's/^< \(.*\)$/\1 DATA/p' > $(MISC)$/msvcrtdata.def + cat $(MISC)$/msvcrtdata.def >> $(MISC)$/msvcrt.def +- dlltool --dllname msvcrt.dll --input-def=$(MISC)$/msvcrt.def --kill-at --output-lib=$(LB)$/libmsvcrt.a ++ $(DLLTOOL) --dllname msvcrt.dll --input-def=$(MISC)$/msvcrt.def --kill-at --output-lib=$(LB)$/libmsvcrt.a + + clean: + -$(RM) $(MISC)$/mingw$/include$/*.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openoffice-sal-mingw-c.patch Wed Oct 22 21:47:11 2008 +0200 @@ -0,0 +1,64 @@ +--- sal/osl/w32/conditn.c.~1.7.46.1.~ 2008-08-21 17:30:55.000000000 +0200 ++++ sal/osl/w32/conditn.c 2008-10-21 20:51:52.000000000 +0200 +@@ -108,7 +108,11 @@ + { + /* Only wake up if a SendMessage call to the threads message loop is detected */ + ++#ifndef __MINGW32__ + switch( MsgWaitForMultipleObjects( 1, &(HANDLE)Condition, FALSE, timeout, QS_SENDMESSAGE ) ) ++#else /* __MINGW32__ */ ++ switch( MsgWaitForMultipleObjects( 1, (HANDLE)Condition, FALSE, timeout, QS_SENDMESSAGE ) ) ++#endif /* __MINGW32__ */ + { + case WAIT_OBJECT_0 + 1: + { +--- sal/osl/w32/dllentry.c.~1.34.~ 2008-04-10 13:17:16.000000000 +0200 ++++ sal/osl/w32/dllentry.c 2008-10-21 20:56:07.000000000 +0200 +@@ -216,7 +216,9 @@ + + //We disable floating point exceptions. This is the usual state at program startup + //but on Windows 98 and ME this is not always the case. ++#ifndef __MINGW32__ + _control87(_MCW_EM, _MCW_EM); ++#endif + #ifdef __MINGW32__ + atexit(do_cleanup); + } +--- sal/systools/win32/uwinapi/ResolveUnicows.cpp.~1.4.~ 2008-06-06 19:02:43.000000000 +0200 ++++ sal/systools/win32/uwinapi/ResolveUnicows.cpp 2008-10-21 21:53:19.000000000 +0200 +@@ -227,8 +226,8 @@ + DEFINE_UNICOWS_THUNK( kernel32, BOOL, WINAPI, GetFileAttributesExW, (LPCWSTR,GET_FILEEX_INFO_LEVELS,PVOID) ) + DEFINE_UNICOWS_THUNK( kernel32, DWORD, WINAPI, GetFileAttributesW, (LPCWSTR) ) + DEFINE_UNICOWS_THUNK( comdlg32, short, WINAPI, GetFileTitleW, (LPCWSTR,LPWSTR,WORD) ) +-DEFINE_UNICOWS_THUNK( version, DWORD, WINAPI, GetFileVersionInfoSizeW, (LPWSTR,PDWORD) ) +-DEFINE_UNICOWS_THUNK( version, BOOL, WINAPI, GetFileVersionInfoW, (LPWSTR,DWORD,DWORD,PVOID) ) ++DEFINE_UNICOWS_THUNK( version, DWORD, WINAPI, GetFileVersionInfoSizeW, (const WCHAR*,DWORD*) ) ++DEFINE_UNICOWS_THUNK( version, BOOL, WINAPI, GetFileVersionInfoW, (const WCHAR*,DWORD,DWORD,PVOID) ) + DEFINE_UNICOWS_THUNK( kernel32, DWORD, WINAPI, GetFullPathNameW, (LPCWSTR,DWORD,LPWSTR,LPWSTR*) ) + DEFINE_UNICOWS_THUNK( gdi32, DWORD, WINAPI, GetGlyphOutlineW, (HDC,UINT,UINT,LPGLYPHMETRICS,DWORD,PVOID,const MAT2*) ) + DEFINE_UNICOWS_THUNK( gdi32, BOOL, WINAPI, GetICMProfileW, (HDC,LPDWORD,LPWSTR) ) +@@ -456,7 +455,7 @@ + DEFINE_UNICOWS_THUNK( gdi32, BOOL, WINAPI, TextOutW, (HDC,int,int,LPCWSTR,int) ) + DEFINE_UNICOWS_THUNK( user32, int, WINAPI, TranslateAcceleratorW, (HWND,HACCEL,LPMSG) ) + DEFINE_UNICOWS_THUNK( user32, BOOL, WINAPI, UnregisterClassW, (LPCWSTR,HINSTANCE) ) +-DEFINE_UNICOWS_THUNK( gdi32, BOOL, WINAPI, UpdateICMRegKeyW, (DWORD,LPWSTR,LPWSTR,UINT) ) ++DEFINE_UNICOWS_THUNK( gdi32, BOOL, WINAPI, UpdateICMRegKeyW, (DWORD,DWORD,LPWSTR,UINT) ) + DEFINE_UNICOWS_THUNK( kernel32, BOOL, WINAPI, UpdateResourceW, (HANDLE,LPCWSTR,LPCWSTR,WORD,PVOID,DWORD) ) + DEFINE_UNICOWS_THUNK( version, DWORD, WINAPI, VerFindFileW, (DWORD,LPWSTR,LPWSTR,LPWSTR,LPWSTR,PUINT,LPWSTR,PUINT) ) + DEFINE_UNICOWS_THUNK( version, DWORD, WINAPI, VerInstallFileW, (DWORD,LPWSTR,LPWSTR,LPWSTR,LPWSTR,LPWSTR,LPWSTR,PUINT) ) +--- onlinecheck.cxx 10 apr 2008 14:11:15 +0200 1.8 ++++ sal/systools/win32/onlineupdate/onlinecheck.cxx 22 okt 2008 10:56:53 +0200 +@@ -45,8 +45,11 @@ + #endif + #include <tchar.h> + #ifdef __MINGW32__ +-#include <excpt.h> +-#endif ++#include <sehandler.h> ++// not implemented in mingw, only in wine... ++//BOOL WINAPI InternetGetConnectedStateEx(LPDWORD,LPTSTR,DWORD,DWORD); ++#define InternetGetConnectedStateEx(a,b,c,d) InternetGetConnectedState(a,c) ++#endif /* __MINGW32__ */ + + #define elementsof(a) (sizeof(a)/sizeof((a)[0])) +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openoffice-sal-mingw.patch Wed Oct 22 21:47:11 2008 +0200 @@ -0,0 +1,67 @@ +--- sal/osl/w32/signal.c.~1.12.~ 2008-04-10 13:22:35.000000000 +0200 ++++ sal/osl/w32/signal.c 2008-10-21 20:53:05.000000000 +0200 +@@ -37,8 +37,8 @@ + #include <osl/signal.h> + #ifndef __MINGW32__ + #include <DbgHelp.h> +-#endif + #include <ErrorRep.h> ++#endif /* __MINGW32__ */ + #include <systools/win32/uwinapi.h> + + typedef struct _oslSignalHandlerImpl +--- sal/systools/win32/uwinapi/GetLongPathNameW.cpp.~1.5.~ 2008-04-10 14:18:12.000000000 +0200 ++++ sal/systools/win32/uwinapi/GetLongPathNameW.cpp 2008-10-21 21:30:26.000000000 +0200 +@@ -29,6 +29,13 @@ + ************************************************************************/ + + #define UNICODE ++ ++#ifdef __MINGW32__ ++#undef _WIN32_WINNT ++#define _WIN32_WINNT 0x0500 ++#include <windows.h> ++#endif /* __MINGW32__ */ ++ + #include "macros.h" + + EXTERN_C DWORD WINAPI GetLongPathNameW_NT( LPCWSTR lpShortPath, LPWSTR lpLongPath, DWORD cchBuffer ) +--- sal/systools/win32/uwinapi/GetLongPathNameA.cpp.~1.5.~ 2008-04-10 14:17:56.000000000 +0200 ++++ sal/systools/win32/uwinapi/GetLongPathNameA.cpp 2008-10-21 21:29:56.000000000 +0200 +@@ -28,7 +28,13 @@ + * + ************************************************************************/ + ++#ifdef __MINGW32__ ++#undef _WIN32_WINNT ++#define _WIN32_WINNT 0x0500 ++#include <windows.h> ++#endif /* __MINGW32__ */ ++ + #include "macros.h" + + IMPLEMENT_THUNK( kernel32, WINDOWS, DWORD, WINAPI, GetLongPathNameA, ( LPCTSTR lpShortPath, LPTSTR lpLongPath, DWORD cchBuffer ) ) +-#include "GetLongPathName.cpp" +\ Geen regeleindeteken (LF) aan einde van bestand ++#include "GetLongPathName.cpp" +--- sal/systools/win32/uwinapi/ResolveUnicows.cpp.~1.4.~ 2008-06-06 19:02:43.000000000 +0200 ++++ sal/systools/win32/uwinapi/ResolveUnicows.cpp 2008-10-21 21:53:19.000000000 +0200 +@@ -1,7 +1,6 @@ + #ifdef __MINGW32__ + #define _GDI32_ + #include "macros.h" +-#include <multimon.h> + extern "C" { + extern HMODULE hModuleUnicowsDLL; + } +--- sal/systools/win32/uwinapi/makefile.mk.~1.17.~ 2008-04-10 14:26:19.000000000 +0200 ++++ sal/systools/win32/uwinapi/makefile.mk 2008-10-21 23:43:31.000000000 +0200 +@@ -160,7 +160,7 @@ + ALL: ALLTAR $(LB)$/libuwinapi.a + + $(LB)$/libuwinapi.a: $(MISC)$/uwinapi.def +- dlltool --dllname uwinapi.dll --input-def=$(MISC)$/uwinapi.def --kill-at --output-lib=$(LB)$/libuwinapi.a ++ $(DLLTOOL) --dllname uwinapi.dll --input-def=$(MISC)$/uwinapi.def --kill-at --output-lib=$(LB)$/libuwinapi.a + .ENDIF + + .INCLUDE : target.mk
--- a/patches/openoffice-solenv-cross.patch Wed Oct 22 21:46:25 2008 +0200 +++ b/patches/openoffice-solenv-cross.patch Wed Oct 22 21:47:11 2008 +0200 @@ -67,7 +67,7 @@ return 1 if (($ENV{GUI} eq 'UNX') && ($Platform eq 'u')); return 1 if (($ENV{GUI} eq 'OS2') && ($Platform eq 'p')); - return 1 if (($ENV{GUI} eq 'WNT') && -+ return 1 if (($ENV{BUILD_OS} eq 'WNT') && ++ return 1 if ((($ENV{TARGET_OS} eq 'WNT') || ($ENV{TARGET_OS} eq 'MinGW')) && (($Platform eq 'w') || ($Platform eq 'n'))); return 0; }; @@ -186,7 +186,7 @@ ### CFLAGSCC=-pipe $(ARCH_FLAGS) CFLAGSCXX=-pipe $(ARCH_FLAGS) -@@ -108,17 +111,35 @@ STATIC= -static +@@ -108,17 +111,37 @@ STATIC= -static DYNAMIC= -dynamic LINK*=$(CC) @@ -204,7 +204,9 @@ +.ENDIF #"$(CYGLIB)" != "" +.IF "$(CROSS_COMPILING)" == "no" +LINKFLAGS += -nostdlib -+.ENDIF # "$(CROSS_COMPILING)" == "no" ++.ELSE # "$(CROSS_COMPILING)" == "yes" ++LINKFLAGS += -L$(SOLARBINDIR) ++.ENDIF # "$(CROSS_COMPILING)" == "yes" .IF "$(USE_MINGW)"=="cygwin" MINGWLIBDIR=$(COMPATH)$/lib$/mingw .ELSE @@ -228,6 +230,64 @@ LINKFLAGSTACK= LINKFLAGSPROF= LINKFLAGSDEBUG=-g +@@ -150,7 +171,11 @@ STDSHLCUIMT+=-lmingw32 -lmoldname -lming + MAPSYM=tmapsym + MAPSYMFLAGS= + ++.IF "$(CROSS_COMPILING)" == "no" + RC=rc ++.ELSE # "$(CROSS_COMPILING)" == "yes" ++RC=wrc --nostdinc -I $(COMPATH)/../../include -DCROSS_COMPILING=1 ++.ENDIF # "$(CROSS_COMPILING)" == "yes" + RCFLAGS=-D__MINGW32__ -DWIN32 -D_WIN32_IE=0x400 -fo$@ $(RCFILES) + RCLINK= + RCLINKFLAGS= +@@ -168,12 +193,20 @@ RCSETVERSION= + DLLPOSTFIX=gi + PCHPOST=.gch + ++.IF "$(CROSS_COMPILING)" == "no" ++LINK_PSDK_LIB=$(PSDK_HOME)/lib/ ++PSDK_DOT_LIB=.lib ++.ELSE # "$(CROSS_COMPILING)" == "yes" ++LINK_PSDK_LIB=-l ++PSDK_DOT_LIB= ++.ENDIF # "$(CROSS_COMPILING)" == "yes" ++ + ADVAPI32LIB=-ladvapi32 + SHELL32LIB=-lshell32 + GDI32LIB=-lgdi32 + OLE32LIB=-lole32 + OLEAUT32LIB=-loleaut32 +-UUIDLIB=$(PSDK_HOME)$/lib$/uuid.lib ++UUIDLIB=$(LINK_PSDK_LIB)uuid$(PSDK_DOT_LIB) + WINSPOOLLIB=-lwinspool + IMM32LIB=-limm32 + PSPLIB=-lpsp +@@ -187,14 +220,14 @@ USER32LIB=-luser32 + LIBCMT=-lmsvcrt + COMDLG32LIB=-lcomdlg32 + COMCTL32LIB=-lcomctl32 +-CRYPT32LIB=$(PSDK_HOME)$/lib$/crypt32.lib +-GDIPLUSLIB=$(PSDK_HOME)$/lib$/gdiplus.lib +-DBGHELPLIB=$(PSDK_HOME)$/lib$/dbghelp.lib +-MSILIB=$(PSDK_HOME)$/lib$/msi.lib +-DDRAWLIB=$(DIRECTXSDK_LIB)/ddraw.lib +-SHLWAPILIB=$(PSDK_HOME)$/lib$/shlwapi.lib +-URLMONLIB=$(PSDK_HOME)$/lib$/urlmon.lib +-UNICOWSLIB=$(PSDK_HOME)$/lib$/unicows.lib ++CRYPT32LIB=$(LINK_PSDK_LIB)crypt32$(PSDK_DOT_LIB) ++GDIPLUSLIB=$(LINK_PSDK_LIB)gdiplus$(PSDK_DOT_LIB) ++DBGHELPLIB=$(LINK_PSDK_LIB)dbghelp$(PSDK_DOT_LIB) ++MSILIB=$(LINK_PSDK_LIB)msi$(PSDK_DOT_LIB) ++DDRAWLIB=$(DIRECTXSDK_LIB)/ddraw$(PSDK_DOT_LIB) ++SHLWAPILIB=$(LINK_PSDK_LIB)shlwapi$(PSDK_DOT_LIB) ++URLMONLIB=$(LINK_PSDK_LIB)urlmon$(PSDK_DOT_LIB) ++UNICOWSLIB=$(LINK_PSDK_LIB)unicows$(PSDK_DOT_LIB) + WININETLIB=-lwininet + OLDNAMESLIB=-lmoldname +-MSIMG32LIB=$(PSDK_HOME)$/lib$/msimg32.lib ++MSIMG32LIB=$(LINK_PSDK_LIB)msimg32$(PSDK_DOT_LIB) --- solenv/inc/unitools.mk.pristine 2008-10-21 11:31:04.000000000 +0200 +++ solenv/inc/unitools.mk 2008-10-21 13:54:42.000000000 +0200 @@ -39,7 +39,7 @@ XSLTPROC*=xsltproc
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sourcefiles/excpt.h Wed Oct 22 21:47:11 2008 +0200 @@ -0,0 +1,8 @@ +#ifndef EXCPT_H +#define EXCPT_H + +/* FIXME: external/mingwheaders effort compatibility */ +#include <mingw-excpt.h> +#include <sehandler.h> + +#endif /* EXCPT_H */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sourcefiles/sehandler.h Wed Oct 22 21:47:11 2008 +0200 @@ -0,0 +1,125 @@ +#ifndef SE_HANDLER_H +#define SE_HANDLER_H + +#include <excpt.h> +#include <setjmp.h> + +WINBASEAPI +VOID +WINAPI +RtlUnwind ( + IN PVOID TargetFrame OPTIONAL, + IN PVOID TargetIp OPTIONAL, + IN PEXCEPTION_RECORD ExceptionRecord OPTIONAL, + IN PVOID ReturnValue + ); + +// What library is this supposed to be defined in? +#define RtlUnwind(a,b,c,d) + +class __SEHandler +{ + public: + __SEHandler() {} + ~__SEHandler() {} + typedef int (*PF)(void *, LPEXCEPTION_POINTERS); + typedef void (*PH)(void *, LPEXCEPTION_POINTERS); + typedef void (*PN)(void *); + void Set(jmp_buf jb, void *pdata=NULL, PF pfilter=NULL, PH phandlerbody=NULL, PN pfinal=NULL) + { + __builtin_memcpy(m_jmpbuf, jb, sizeof(jmp_buf)); + m_pData=pdata; + switch (reinterpret_cast<int>(pfilter)) + { + default: + m_filter=pfilter; + break; + case EXCEPTION_CONTINUE_EXECUTION: + m_filter=DefaultFilterContinueExecution; + break; + case EXCEPTION_EXECUTE_HANDLER: + m_filter=DefaultFilterExecuteHandler; + break; + case EXCEPTION_CONTINUE_SEARCH: + m_filter=DefaultFilterContinueSearch; + break; + } + if (phandlerbody) + m_handlerbody=phandlerbody; + else + m_handlerbody=DefaultHandler; + if (pfinal) + m_final=pfinal; + else + m_final=DefaultFinal; + m_ER.pHandlerClass = this; + m_ER.hp = handler; + asm("movl %%fs:0, %%eax\n\t" + "movl %%eax, %0": : "m" (m_ER.prev): "%eax" ); + asm("movl %0, %%eax\n\t" + "movl %%eax, %%fs:0": : "r" (&m_ER): "%eax" ); + } + void Reset() + { + m_final(m_pData); + asm("movl %0, %%eax \n\t" + "movl %%eax, %%fs:0" + : : "m" (m_ER.prev): "%eax"); + } + private: + __SEHandler(const __SEHandler&); + __SEHandler& operator=(const __SEHandler&); + struct _ER { + _ER* prev; + PEXCEPTION_HANDLER hp; + __SEHandler *pHandlerClass; + }; + static EXCEPTION_DISPOSITION handler( + struct _EXCEPTION_RECORD *pExceptionRecord, + void * EstablisherFrame, + struct _CONTEXT *ContextRecord, + void * /*DispatcherContext*/) + { + __SEHandler* pThis = reinterpret_cast< _ER * >(EstablisherFrame)->pHandlerClass; + if ( pExceptionRecord->ExceptionFlags & EH_UNWINDING ) + { + pThis->m_final(pThis->m_pData); + return ExceptionContinueSearch; + } + EXCEPTION_POINTERS ep={pExceptionRecord, ContextRecord}; + switch ( pThis->m_filter(pThis->m_pData, &ep) ) + { + case EXCEPTION_EXECUTE_HANDLER: + RtlUnwind(EstablisherFrame, &&__set_label, pExceptionRecord, 0); +__set_label: + pThis->m_handlerbody(pThis->m_pData, &ep); + ContextRecord->Ebp = pThis->m_jmpbuf[0]; + ContextRecord->Eip = pThis->m_jmpbuf[1]; + ContextRecord->Esp = pThis->m_jmpbuf[2]; + return ExceptionContinueExecution; + case EXCEPTION_CONTINUE_SEARCH: + return ExceptionContinueSearch; + case EXCEPTION_CONTINUE_EXECUTION: + return ExceptionContinueExecution; + } + return ExceptionContinueExecution; + } + static int DefaultFilterContinueSearch(void *, LPEXCEPTION_POINTERS) { return EXCEPTION_CONTINUE_SEARCH; } + static int DefaultFilterContinueExecution(void *, LPEXCEPTION_POINTERS) { return EXCEPTION_CONTINUE_EXECUTION; } + static int DefaultFilterExecuteHandler(void *, LPEXCEPTION_POINTERS) { return EXCEPTION_EXECUTE_HANDLER; } + static void DefaultHandler(void *, LPEXCEPTION_POINTERS) {} + static void DefaultFinal(void *) {} + typedef int (*handler_p)( + struct _EXCEPTION_RECORD *ExceptionRecord, + void * EstablisherFrame, + struct _CONTEXT *ContextRecord, + void * DispatcherContext); + _ER m_ER; + void *m_pData; + PN m_final; + PH m_handlerbody; + PF m_filter; + jmp_buf m_jmpbuf; +}; + +#endif /* SE_HANDLER_H */