From ecfabb66f421ef07f52a655117f047aa75d54a01 Mon Sep 17 00:00:00 2001 From: Peter Foley Date: Wed, 22 Aug 2012 16:00:11 -0400 Subject: [PATCH] add support for Windows 8 SDK Change-Id: I941ce196917cad307d9de03030c4b23ff4e1b249 Reviewed-on: https://gerrit.libreoffice.org/785 Reviewed-by: Norbert Thiebaud Tested-by: Norbert Thiebaud --- configure.in | 32 +++++++++++++++++++++++++++----- oowintool | 8 ++++++-- 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/configure.in b/configure.in index 5dfc06f6ec3e..e3c73beaa44c 100644 --- a/configure.in +++ b/configure.in @@ -2848,8 +2848,10 @@ if test "$_os" = "WINNT" -a "$WITH_MINGW" != yes; then AC_MSG_CHECKING([whether to build a 64-bit LibreOffice]) if test "$enable_64_bit" = "" -o "$enable_64_bit" = "no"; then AC_MSG_RESULT([no]) + SDK_ARCH="x86" else AC_MSG_RESULT([yes]) + SDK_ARCH="x64" BITNESS_OVERRIDE=64 fi @@ -4664,7 +4666,9 @@ if test "$build_os" = "cygwin"; then winsdktest=`./oowintool --windows-sdk-home` if test -x "$winsdktest/Bin/midl.exe"; then MIDL_PATH="$winsdktest/Bin" - fi + elif test -x "$winsdktest/Bin/$SDK_ARCH/midl.exe"; then + MIDL_PATH="$winsdktest/Bin/$SDK_ARCH" + fi fi if test ! -x "$MIDL_PATH/midl.exe"; then AC_MSG_ERROR([midl.exe not found. Make sure it's in PATH or use --with-midl-path]) @@ -4701,7 +4705,7 @@ if test "$build_os" = "cygwin"; then if test -n "$with_dotnet_framework_home"; then with_dotnet_framework_home=`cygpath -u "$with_dotnet_framework_home"` fi - if test -f "$with_dotnet_framework_home/lib/mscoree.lib"; then + if test -f "$with_dotnet_framework_home/lib/mscoree.lib"; then DOTNET_FRAMEWORK_HOME="$with_dotnet_framework_home" fi if test -z "$DOTNET_FRAMEWORK_HOME"; then @@ -4710,12 +4714,12 @@ if test "$build_os" = "cygwin"; then DOTNET_FRAMEWORK_HOME="$frametest" else frametest=`./oowintool --windows-sdk-home` - if test -f "$frametest/lib/mscoree.lib"; then + if test -f "$frametest/lib/mscoree.lib" -o -f "$frametest/lib/win8/um/$SDK_ARCH/mscoree.lib"; then DOTNET_FRAMEWORK_HOME="$frametest" fi fi fi - if test ! -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then + if test ! -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib" -a ! -f "$DOTNET_FRAMEWORK_HOME/lib/win8/um/$SDK_ARCH/mscoree.lib"; then AC_MSG_ERROR([mscoree.lib (.NET Framework) not found. Make sure you use --with-dotnet-framework-home]) fi AC_MSG_RESULT(found) @@ -9017,10 +9021,16 @@ problem can be found in issue 49856.]) -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \ -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then HAVE_PSDK_H="yes" + elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \ + -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \ + -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then + HAVE_PSDK_H="yes" else HAVE_PSDK_H="no" fi if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then + HAVE_PSDK_LIB="yes" + elif test -f "$WINDOWS_SDK_HOME/lib/win8/um/$SDK_ARCH/user32.lib"; then HAVE_PSDK_LIB="yes" else HAVE_PSDK_LIB="no" @@ -9034,7 +9044,12 @@ the Windows SDK are installed.]) if test ! -x "$WINDOWS_SDK_HOME/bin/msiinfo.exe" \ -o ! -x "$WINDOWS_SDK_HOME/bin/msidb.exe" \ -o ! -x "$WINDOWS_SDK_HOME/bin/uuidgen.exe" \ - -o ! -x "$WINDOWS_SDK_HOME/bin/msitran.exe"; then + -o ! -x "$WINDOWS_SDK_HOME/bin/msitran.exe"; then : + elif test ! -x "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \ + -o ! -x "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \ + -o ! -x "$WINDOWS_SDK_HOME/bin/x86/uuidgen.exe" \ + -o ! -x "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then : + else AC_MSG_ERROR([Some (all) files of the Windows Installer SDK are missing, please install.]) fi fi @@ -9047,6 +9062,8 @@ the Windows SDK are installed.]) AC_MSG_RESULT([found Windows SDK 6.0 ($WINDOWS_SDK_HOME)]) elif echo $WINDOWS_SDK_HOME | grep "v7" >/dev/null 2>/dev/null; then AC_MSG_RESULT([found Windows SDK 7 ($WINDOWS_SDK_HOME)]) + elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then + AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)]) else AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)]) fi @@ -9054,6 +9071,9 @@ the Windows SDK are installed.]) WINDOWS_SDK_HOME="$formatted_path" if test "$build_os" = "cygwin"; then SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/include" + if test -d "$WINDOWS_SDK_HOME/include/um"; then + SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared" + fi fi fi AC_SUBST(WINDOWS_SDK_HOME) @@ -12463,9 +12483,11 @@ if test "$build_os" = "cygwin"; then if test "$BITNESS_OVERRIDE" = 64; then ILIB="$ILIB;$COMPATH/lib/amd64" ILIB="$ILIB;$WINDOWS_SDK_HOME/lib64" + ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/win8/um/x64" else ILIB="$ILIB;$COMPATH/lib" ILIB="$ILIB;$WINDOWS_SDK_HOME/lib" + ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/win8/um/x86" fi ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib" diff --git a/oowintool b/oowintool index e418ae410037..9c6bdc664e29 100755 --- a/oowintool +++ b/oowintool @@ -99,11 +99,15 @@ sub print_windows_sdk_home() { my ($value, $key); - $value = reg_get_value ('HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/CurrentInstallFolder'); - + $value = reg_get_value ('HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot'); + + if (!defined $value) { + $value = reg_get_value ('HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/CurrentInstallFolder'); + } if (!defined $value) { $value = reg_get_value ('HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MicrosoftSDK/Directories/Install Dir'); } + if (!defined $value) { $key = reg_find_key ('HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MicrosoftSDK/InstalledSDKs/*/Install Dir');