diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2017-04-12 16:33:34 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2017-04-12 18:42:18 +0200 |
commit | e8ffe54dec568332c301f8510f3186c04421b911 (patch) | |
tree | 7537d1b361ae268e8d709ce16dbfc7b586606e7b /configure.ac | |
parent | bef7ba7ced13908340ff03aacb64dc22217040b4 (diff) |
Lets see if basing WINDOWS_SDK_BINDIR_NO_ARCH on WINDOWS_SDK_HOME works better
...than basing it on naked winsdktest, even though both should be effectively
equivalent modulo Windows pathname normalization voodoo. But at least the
Win-x86@62-TDF bot complained after a4d1ed6ba2a81b4284cd360f44b6723bc9bfaf85
"Adapt to Windows SDK 10.0.15063" with
> configure: setting up the build environment variables...
> cygpath: cannot create short name of C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\x86
> configure: error: path conversion failed for "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\/Bin/x86".
presumably because that path does not exist, so pathmunge() -> PathFormat() ->
cygpath can't generate a short 8.1 DOS form for it (and maybe with the already
voodoo'ed WINDOWS_SDK_HOME that happened to work nevertheless, because voodoo?).
Unfortunately, this requires to move the whole "Check for the Windows SDK" block
further up---but the block itself left unchanged except for splitting the part
out that uses WINDOWS_SDK_BINDIR_NO_ARCH.
Change-Id: I13a369ba34b63392ec42333dbc1e538b49a24ca1
Reviewed-on: https://gerrit.libreoffice.org/36481
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 262 |
1 files changed, 131 insertions, 131 deletions
diff --git a/configure.ac b/configure.ac index 16b3517d1bf5..505c15d6dd05 100644 --- a/configure.ac +++ b/configure.ac @@ -5316,6 +5316,119 @@ find_msvc_x64_dlls() done } +dnl ========================================= +dnl Check for the Windows SDK. +dnl ========================================= +if test "$_os" = "WINNT"; then + AC_MSG_CHECKING([for Windows SDK]) + if test "$build_os" = "cygwin"; then + find_winsdk + WINDOWS_SDK_HOME=$winsdktest + + # normalize if found + if test -n "$WINDOWS_SDK_HOME"; then + WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"` + WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"` + fi + + WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir + fi + + if test -n "$WINDOWS_SDK_HOME"; then + # Remove a possible trailing backslash + WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'` + + if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \ + -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \ + -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then + have_windows_sdk_headers=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_windows_sdk_headers=yes + elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \ + -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \ + -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then + have_windows_sdk_headers=yes + else + have_windows_sdk_headers=no + fi + + if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then + have_windows_sdk_libs=yes + elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WINDOWS_SDK_ARCH/user32.lib"; then + have_windows_sdk_libs=yes + else + have_windows_sdk_libs=no + fi + + if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then + AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of +the Windows SDK are installed.]) + fi + fi + + if test -z "$WINDOWS_SDK_HOME"; then + AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?]) + elif echo $WINDOWS_SDK_HOME | grep "v7.1" >/dev/null 2>/dev/null; then + WINDOWS_SDK_VERSION=70 + AC_MSG_RESULT([found Windows SDK 7 ($WINDOWS_SDK_HOME)]) + elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then + WINDOWS_SDK_VERSION=80 + AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)]) + dnl compatibility warning if not explicitly choosing the 80 SDK: + if test -z "$with_windows_sdk"; then + AC_MSG_WARN([If a build should run on Windows XP,]) + AC_MSG_WARN([use --with-windows-sdk=7.1A]) + add_warning "If a build should run on Windows XP," + add_warning "use --with-windows-sdk=7.1A" + fi + elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then + WINDOWS_SDK_VERSION=81 + AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)]) + elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then + WINDOWS_SDK_VERSION=10 + AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)]) + else + AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)]) + fi + PathFormat "$WINDOWS_SDK_HOME" + 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" + elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then + SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared" + fi + fi + + dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a + dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1 + dnl but not in v8.0), so allow this to be overridden with a + dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid + dnl and configuration error if no WiLangId.vbs is found would arguably be + dnl better, but I do not know under which conditions exactly it is needed by + dnl msiglobal.pm: + if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then + WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs + if ! test -e "$WINDOWS_SDK_WILANGID" ; then + WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WINDOWS_SDK_ARCH/WiLangId.vbs + fi + if ! test -e "$WINDOWS_SDK_WILANGID" ; then + WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WINDOWS_SDK_ARCH/WiLangId.vbs") + fi + if ! test -e "$WINDOWS_SDK_WILANGID" ; then + AC_MSG_WARN([WiLangId.vbs not found - building translated packages will fail]) + add_warning "WiLangId.vbs not found - building translated packages will fail" + fi + fi +fi +AC_SUBST(WINDOWS_SDK_HOME) +AC_SUBST(WINDOWS_SDK_LIB_SUBDIR) +AC_SUBST(WINDOWS_SDK_VERSION) +AC_SUBST(WINDOWS_SDK_WILANGID) + if test "$build_os" = "cygwin"; then dnl Check midl.exe; this being the first check for a tool in the SDK bin dnl dir, it also determines that dir's path w/o an arch segment if any, @@ -5326,14 +5439,14 @@ if test "$build_os" = "cygwin"; then if test -n "$winsdkbinsubdir" \ -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WINDOWS_SDK_ARCH/midl.exe" then - WINDOWS_SDK_BINDIR_NO_ARCH=$winsdktest/Bin/$winsdkbinsubdir - MIDL_PATH=$WINDOWS_SDK_BINDIR_NO_ARCH/$WINDOWS_SDK_ARCH + MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WINDOWS_SDK_ARCH + WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir elif test -f "$winsdktest/Bin/$WINDOWS_SDK_ARCH/midl.exe"; then - WINDOWS_SDK_BINDIR_NO_ARCH=$winsdktest/Bin - MIDL_PATH=$WINDOWS_SDK_BINDIR_NO_ARCH/$WINDOWS_SDK_ARCH + MIDL_PATH=$winsdktest/Bin/$WINDOWS_SDK_ARCH + WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin elif test -f "$winsdktest/Bin/midl.exe"; then - WINDOWS_SDK_BINDIR_NO_ARCH=$winsdktest/Bin - MIDL_PATH=$WINDOWS_SDK_BINDIR_NO_ARCH + MIDL_PATH=$winsdktest/Bin + WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin fi if test ! -f "$MIDL_PATH/midl.exe"; then AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WINDOWS_SDK_ARCH, Windows SDK installation broken?]) @@ -5344,6 +5457,18 @@ if test "$build_os" = "cygwin"; then # Convert to posix path with 8.3 filename restrictions ( No spaces ) MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"` + if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \ + -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \ + -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \ + -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then : + elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \ + -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \ + -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \ + -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then : + else + AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.]) + fi + dnl Check csc.exe AC_MSG_CHECKING([for csc.exe]) find_csc @@ -9565,131 +9690,6 @@ if test "$_os" = "Linux"; then fi dnl ========================================= -dnl Check for the Windows SDK. -dnl ========================================= -if test "$_os" = "WINNT"; then - AC_MSG_CHECKING([for Windows SDK]) - if test "$build_os" = "cygwin"; then - find_winsdk - WINDOWS_SDK_HOME=$winsdktest - - # normalize if found - if test -n "$WINDOWS_SDK_HOME"; then - WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"` - WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"` - fi - - WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir - fi - - if test -n "$WINDOWS_SDK_HOME"; then - # Remove a possible trailing backslash - WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'` - - if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \ - -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \ - -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then - have_windows_sdk_headers=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_windows_sdk_headers=yes - elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \ - -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \ - -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then - have_windows_sdk_headers=yes - else - have_windows_sdk_headers=no - fi - - if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then - have_windows_sdk_libs=yes - elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WINDOWS_SDK_ARCH/user32.lib"; then - have_windows_sdk_libs=yes - else - have_windows_sdk_libs=no - fi - - if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then - AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of -the Windows SDK are installed.]) - fi - - if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \ - -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \ - -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \ - -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then : - elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \ - -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \ - -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \ - -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then : - else - AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.]) - fi - fi - - if test -z "$WINDOWS_SDK_HOME"; then - AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?]) - elif echo $WINDOWS_SDK_HOME | grep "v7.1" >/dev/null 2>/dev/null; then - WINDOWS_SDK_VERSION=70 - AC_MSG_RESULT([found Windows SDK 7 ($WINDOWS_SDK_HOME)]) - elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then - WINDOWS_SDK_VERSION=80 - AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)]) - dnl compatibility warning if not explicitly choosing the 80 SDK: - if test -z "$with_windows_sdk"; then - AC_MSG_WARN([If a build should run on Windows XP,]) - AC_MSG_WARN([use --with-windows-sdk=7.1A]) - add_warning "If a build should run on Windows XP," - add_warning "use --with-windows-sdk=7.1A" - fi - elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then - WINDOWS_SDK_VERSION=81 - AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)]) - elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then - WINDOWS_SDK_VERSION=10 - AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)]) - else - AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)]) - fi - PathFormat "$WINDOWS_SDK_HOME" - 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" - elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then - SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared" - fi - fi - - dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a - dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1 - dnl but not in v8.0), so allow this to be overridden with a - dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid - dnl and configuration error if no WiLangId.vbs is found would arguably be - dnl better, but I do not know under which conditions exactly it is needed by - dnl msiglobal.pm: - if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then - WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs - if ! test -e "$WINDOWS_SDK_WILANGID" ; then - WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WINDOWS_SDK_ARCH/WiLangId.vbs - fi - if ! test -e "$WINDOWS_SDK_WILANGID" ; then - WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WINDOWS_SDK_ARCH/WiLangId.vbs") - fi - if ! test -e "$WINDOWS_SDK_WILANGID" ; then - AC_MSG_WARN([WiLangId.vbs not found - building translated packages will fail]) - add_warning "WiLangId.vbs not found - building translated packages will fail" - fi - fi -fi -AC_SUBST(WINDOWS_SDK_HOME) -AC_SUBST(WINDOWS_SDK_LIB_SUBDIR) -AC_SUBST(WINDOWS_SDK_VERSION) -AC_SUBST(WINDOWS_SDK_WILANGID) - -dnl ========================================= dnl Check for uuidgen dnl ========================================= if test "$_os" = "WINNT" -a "$cross_compiling" != "yes"; then |