configure.in | 52 +++++++++++++++++++++++++++++++++++++++++++---- set_soenv.in | 11 +++++++++ solenv/inc/set_wntx64.mk | 4 +-- 3 files changed, 61 insertions(+), 6 deletions(-)
New commits: commit a11c44b86e4459b6366b347e0406a860c80e0379 Author: Tor Lillqvist <[email protected]> Date: Tue Oct 25 11:20:32 2011 +0200 Fix building of the 64-bit Windows Explorer extension (fdo#36950) Don't confuse the 64-bit Explorer extension with a 64-bit LibreOffice, which is unfinished and highly experimental work. OOo has been building and distributing a 64-bit Explorer extension since long, and we should too. They used some secret Hamburg sauce when building it, though, but hopefully now it works here, too. Signed-off-by: Petr Mladek <[email protected]> diff --git a/configure.in b/configure.in index 3402424..1c88874 100755 --- a/configure.in +++ b/configure.in @@ -459,7 +459,7 @@ AC_ARG_ENABLE(zenity, AC_ARG_ENABLE(cl-x64, AS_HELP_STRING([--enable-cl-x64], - [Use the Microsoft C/C++ x64 compiler instead of the default x86 one.]), + [Build a 64-bit LibreOffice using the Microsoft C/C++ x64 compiler.]), ,) AC_ARG_ENABLE(extra-gallery, @@ -1595,8 +1595,8 @@ if test "$_os" = "WINNT"; then dnl Include twain scanners BUILD_TYPE="$BUILD_TYPE TWAIN" - dnl Set the CL_X64 variable. - AC_MSG_CHECKING([whether to use the Microsoft C/C++ x64 compiler]) + dnl Set the CL_X64 variable if we are building a 64-bit LibreOffice. + AC_MSG_CHECKING([whether to build a 64-bit LibreOffice]) if test "z$enable_cl_x64" = "z" -o "$enable_cl_x64" = "no"; then CL_X64="" AC_MSG_RESULT([no]) @@ -2236,7 +2236,7 @@ if test "$_os" = "WINNT"; then export INCLUDE=`cygpath -d "$COMPATH/Include"` dnl Check which Microsoft C/C++ compiler is found AC_MSG_CHECKING([the Version of Microsoft C/C++ Compiler]) -dnl The following find microsoft, matches nn.nn.nnnn then pulls numbers out. ++ # The following finds Microsoft, matches nn.nn.nnnn then pulls numbers out. CCNUMVER=`$CC 2>&1 | $AWK "/Microsoft/ && /..\\...\\...../ { x = match( \\\$0, /..\\...\\...../ ) CCversion = substr( \\\$0, RSTART, RLENGTH) @@ -2271,6 +2271,50 @@ dnl The following find microsoft, matches nn.nn.nnnn then pulls numbers out else AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"]) fi + + # Check for 64-bit (cross-)compiler to use to build the 64-bit + # version of the Explorer extension (and maybe other small + # bits, too) needed when installing a 32-bit LibreOffice on a + # 64-bit OS. The 64-bit Explorer extension is a feature that + # has been present since long in OOo. Don't confuse it with + # building LibreOffice itself as 64-bit code, which is + # unfished work and highly experimental. + + AC_MSG_CHECKING([for a x64 compiler]) + BUILD_X64= + CC_X64_BINARY= + LINK_X64_BINARY= + LIBMGR_X64_BINARY= + + # Prefer native x64 compiler to cross-compiler, in case we are running + # the build on a 64-bit OS. + if "$with_cl_home/bin/amd64/cl.exe" -? </dev/null >/dev/null 2>&1; then + BUILD_X64=TRUE + CC_X64_BINARY="$with_cl_home/bin/amd64/cl.exe" + CXX_X64_BINARY="$with_cl_home/bin/amd64/cl.exe" + LINK_X64_BINARY="$with_cl_home/bin/amd64/link.exe" + LIBMGR_X64_BINARY="$with_cl_home/bin/amd64/lib.exe" + elif "$with_cl_home/bin/x86_amd64/cl.exe" -? </dev/null >/dev/null 2>&1; then + BUILD_X64=TRUE + CC_X64_BINARY="$with_cl_home/bin/x86_amd64/cl.exe" + CXX_X64_BINARY="$with_cl_home/bin/x86_amd64/cl.exe" + LINK_X64_BINARY="$with_cl_home/bin/x86_amd64/link.exe" + LIBMGR_X64_BINARY="$with_cl_home/bin/x86_amd64/lib.exe" + fi + if test "$BUILD_X64" = TRUE; then + AC_MSG_RESULT([found]) + else + AC_MSG_RESULT([not found]) + AC_MSG_WARN([Installation set will not contain the 64-bit Explorer extension]) + fi + AC_SUBST(BUILD_X64) + + # These are passed to the environment through set_soenv.in as usual, and then + # used in set_wntx64.mk + AC_SUBST(CC_X64_BINARY) + AC_SUBST(CXX_X64_BINARY) + AC_SUBST(LINK_X64_BINARY) + AC_SUBST(LIBMGR_X64_BINARY) else AC_MSG_CHECKING([the MinGW C++ Compiler]) if test `$CC -dumpmachine | $SED -e 's/^.*-//'` = "mingw32"; then diff --git a/set_soenv.in b/set_soenv.in index e1ac522..7e0542f 100755 --- a/set_soenv.in +++ b/set_soenv.in @@ -1770,6 +1770,17 @@ if ( $platform =~ m/cygwin/ ) ToFile( "DISABLE_ACTIVEX", "@DISABLE_ACTIVEX@","e" ); ToFile( "DISABLE_ATL", "@DISABLE_ATL@","e" ); ToFile( "USE_NEW_SDK", $USE_NEW_SDK, "e" ); + # Variables used when building the parts that needs to be available + # also as 64-bit versions in a 32-bit LibreOffice build, like + # the Explorer extension. If the configure script hasn't + # found the 64-bit (cross-)compiler, then @BUILD_X64@ will be empty. + ToFile( "BUILD_X64", "@BUILD_X64@", "e" ); + if ( "@BUILD_X64@" eq "TRUE" ) { + ToFile( "CC_X64_BINARY", "@CC_X64_BINARY@", "e" ); + ToFile( "CXX_X64_BINARY","@CXX_X64_BINARY@", "e" ); + ToFile( "LINK_X64_BINARY","@LINK_X64_BINARY@","e" ); + ToFile( "LIBMGR_X64_BINARY","@LIBMGR_X64_BINARY@","e" ); + } # Hack around dmake's mktmp not generating DOS paths. my $tmpdir = qx{cygpath -m "/tmp"}; diff --git a/solenv/inc/set_wntx64.mk b/solenv/inc/set_wntx64.mk index e14c94d..3aececd 100755 --- a/solenv/inc/set_wntx64.mk +++ b/solenv/inc/set_wntx64.mk @@ -46,7 +46,7 @@ USE_CFLAGS_X64=-c -nologo -Gs $(NOLOGO) -Zm500 -Zc:forScope,wchar_t- -GR # Stack buffer overrun detection. CFLAGS+=-GS -USE_CDEFS_X64+= -DWIN32 -D_AMD64_=1 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NON_CONFORMING_SWPRINTFS +USE_CDEFS_X64+= -D$(OS) -D$(GUI) -D$(GVER) -D$(COM) -DX86_64 -DWIN32 -D_AMD64_=1 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NON_CONFORMING_SWPRINTFS .IF "$(debug)"!="" USE_CFLAGS_X64+=-Zi -Fd$(MISC_X64)/$(@:b).pdb USE_CDEFS_X64+=-DDEBUG @@ -114,7 +114,7 @@ STDSLOCUI_X64= IMPLIBFLAGS_X64=-machine:X64 -LIBPATH_X64=$(PSDK)/lib/x64 +LIBPATH_X64=$(PSDK_HOME)/lib/x64 LIBPATH_VC_X64=$(COMPATH)/lib/amd64 ADVAPI32LIB_X64=$(LIBPATH_X64)/advapi32.lib _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
