configure.ac | 109 ++++++++-------------- external/breakpad/ExternalProject_breakpad.mk | 1 external/coinmp/ExternalProject_coinmp.mk | 1 external/cppunit/ExternalProject_cppunit.mk | 1 external/lcms2/ExternalProject_lcms2.mk | 1 external/postgresql/ExternalProject_postgresql.mk | 1 external/python3/ExternalProject_python3.mk | 1 7 files changed, 47 insertions(+), 68 deletions(-)
New commits: commit c156a8c708f74dd31e1ef024edc578c3915619cb Author: Hossein <hoss...@libreoffice.org> AuthorDate: Wed Sep 15 10:08:43 2021 +0200 Commit: Mike Kaganski <mike.kagan...@collabora.com> CommitDate: Thu Sep 16 19:50:56 2021 +0200 Add preliminary VS 2022 support This patch changes the configure.ac, so that LibreOffice compiles with the latest VS 2022 preview. The option --with-visual-studio=2022 should be added to the autogen.input, in order to use VS 2022 preview. Change-Id: Ia1d9bbeabbbd44ffe82af3624151b69d36c0a45c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122133 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> diff --git a/configure.ac b/configure.ac index 4af48fc034d7..0a2d098b252c 100644 --- a/configure.ac +++ b/configure.ac @@ -3840,6 +3840,8 @@ map_vs_year_to_version() case $1 in 2019) vsversion=16;; + 2022) + vsversion=17;; *) AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);; esac @@ -3931,7 +3933,7 @@ find_msvc() PathFormat "$vswhere" vswhere=$formatted_path_unix for ver in $vsversions; do - vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1` + vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1` # Fall back to all MS products (this includes VC++ Build Tools) if ! test -n "$vswhereoutput"; then AC_MSG_CHECKING([VC++ Build Tools and similar]) @@ -3951,6 +3953,10 @@ find_msvc() vcyear=2019 vcnum=160 ;; + 17.0) + vcyear=2022 + vcnum=170 + ;; esac vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1` @@ -4064,25 +4070,18 @@ if test "$_os" = "WINNT"; then AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot]) # Find the proper version of MSBuild.exe to use based on the VS version reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath - if test -n "$regvalue" ; then - AC_MSG_RESULT([found: $regvalue]) - MSBUILD_PATH=`win_short_path_for_make "$regvalue"` - else - if test "$vcnumwithdot" = "16.0"; then - if test "$WIN_BUILD_ARCH" != "x64"; then - regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin" - else - regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64" - fi + if test -z "$regvalue" ; then + if test "$WIN_BUILD_ARCH" != "x64"; then + regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin" else - if test "$WIN_BUILD_ARCH" != "x64"; then - regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin" - else - regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin/amd64" - fi + regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64" fi + fi + if test -d "$regvalue" ; then MSBUILD_PATH=`win_short_path_for_make "$regvalue"` AC_MSG_RESULT([$regvalue]) + else + AC_MSG_ERROR([MSBuild.exe location not found]) fi # Find the version of devenv.exe @@ -4125,7 +4124,7 @@ if test "$_os" = "WINNT"; then # are always "better", we list them in reverse chronological order. case "$vcnum" in - 160) + 160 | 170) WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0" ;; esac @@ -6410,11 +6409,15 @@ find_msms() # Return value: $msmdir AC_MSG_CHECKING([for MSVC merge modules directory]) - local my_msm_files=Microsoft_VC${VCVER}_CRT_x86.msm + local my_msm_files local my_msm_dir + dnl Order my_msm_files in increasing order. Then check the directories returned + dnl by ls in an inner loop; assuming they are also ordered in increasing order, + dnl the result will be the highest MSM version found in the highest directory. + case "$VCVER" in - 160) + 160 | 170) my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}" ;; esac @@ -6423,45 +6426,14 @@ find_msms() done msmdir= - for ver in 14.0 15.0; do - reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/VisualStudio/$ver/Setup/VS/MSMDir - if test -n "$regvalue"; then - for f in ${my_msm_files}; do - if test -e "$regvalue/${f}"; then - msmdir=$regvalue - break - fi - done - fi - done - dnl Is the following fallback really necessary, or was it added in response - dnl to never having started Visual Studio on a given machine, so the - dnl registry keys checked above had presumably not yet been created? - dnl Anyway, if it really is necessary, it might be worthwhile to extend it - dnl to also check %CommonProgramFiles(X86)% (typically expanding to - dnl "C:\Program Files (X86)\Common Files" compared to %CommonProgramFiles% - dnl expanding to "C:\Program Files\Common Files"), which would need - dnl something like $(perl -e 'print $ENV{"CommonProgramFiles(x86)"}') to - dnl obtain its value from cygwin: - if test -z "$msmdir"; then - my_msm_dir="${COMMONPROGRAMFILES}/Merge Modules/" - for f in ${my_msm_files}; do - if test -e "$my_msm_dir/${f}"; then - msmdir=$my_msm_dir - fi - done - fi - - dnl Starting from MSVC 15.0, merge modules are located in different directory case "$VCVER" in - 160) - for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do - echo "$as_me:$LINENO: looking in $VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules])" >&5 - my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/" - for f in ${my_msm_files}; do - if test -e "$my_msm_dir/${f}"; then + 160 | 170) + for f in ${my_msm_files}; do + for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do + my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/" + echo "$as_me:$LINENO: looking for $my_msm_dir${f}])" >&5 + if test -e "$my_msm_dir${f}"; then msmdir=$my_msm_dir - break fi done done @@ -6486,20 +6458,21 @@ find_msvc_x64_dlls() # Return value: $msvcdllpath, $msvcdlls AC_MSG_CHECKING([for MSVC x64 DLL path]) + + dnl Order crtver in increasing order. Then check the directories returned by + dnl ls in an inner loop; assuming they are also ordered in increasing order, + dnl the result will be the highest CRT version found in the highest directory. + msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT" case "$VCVER" in - 160) - for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do - echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT" >&5 - if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"; then - msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT" - break - fi - echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT" >&5 - if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"; then - msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT" - break - fi + 160 | 170) + for crtver in 141 142; do + for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do + echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5 + if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then + msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" + fi + done done ;; esac diff --git a/external/breakpad/ExternalProject_breakpad.mk b/external/breakpad/ExternalProject_breakpad.mk index db1d1c9df83a..3b1f126c3d1e 100644 --- a/external/breakpad/ExternalProject_breakpad.mk +++ b/external/breakpad/ExternalProject_breakpad.mk @@ -20,6 +20,7 @@ $(call gb_ExternalProject_get_state_target,breakpad,build) : $(call gb_Trace_StartRange,breakpad,EXTERNAL) $(call gb_ExternalProject_run,build,\ MSBuild.exe src/tools/windows/dump_syms/dump_syms.sln -p:Configuration=Release \ + $(if $(filter 170,$(VCVER)),/p:PlatformToolset=v143 /p:VisualStudioVersion=17.0 /ToolsVersion:Current) \ ) $(call gb_Trace_EndRange,breakpad,EXTERNAL) diff --git a/external/coinmp/ExternalProject_coinmp.mk b/external/coinmp/ExternalProject_coinmp.mk index 9bd5a4cd2685..a59e4045d169 100644 --- a/external/coinmp/ExternalProject_coinmp.mk +++ b/external/coinmp/ExternalProject_coinmp.mk @@ -21,6 +21,7 @@ $(call gb_ExternalProject_get_state_target,coinmp,build) : /p:Configuration=$(if $(MSVC_USE_DEBUG_RUNTIME),Debug,Release) \ /p:Platform=$(if $(filter INTEL,$(CPUNAME)),Win32,x64) \ $(if $(filter 160,$(VCVER)),/p:PlatformToolset=v142 /p:VisualStudioVersion=16.0 /ToolsVersion:Current) \ + $(if $(filter 170,$(VCVER)),/p:PlatformToolset=v143 /p:VisualStudioVersion=17.0 /ToolsVersion:Current) \ $(if $(filter 10,$(WINDOWS_SDK_VERSION)),/p:WindowsTargetPlatformVersion=$(UCRTVERSION)) \ ,CoinMP/MSVisualStudio/v9) $(call gb_Trace_EndRange,coinmp,EXTERNAL) diff --git a/external/cppunit/ExternalProject_cppunit.mk b/external/cppunit/ExternalProject_cppunit.mk index 92db8a1953f3..996bf41761ae 100644 --- a/external/cppunit/ExternalProject_cppunit.mk +++ b/external/cppunit/ExternalProject_cppunit.mk @@ -20,6 +20,7 @@ $(call gb_ExternalProject_get_state_target,cppunit,build) : PROFILEFLAGS="$(gb_MSBUILD_CONFIG) \ /p:Platform=$(gb_MSBUILD_PLATFORM) \ $(if $(filter 160,$(VCVER)),/p:PlatformToolset=v142 /p:VisualStudioVersion=16.0 /ToolsVersion:Current) \ + $(if $(filter 170,$(VCVER)),/p:PlatformToolset=v143 /p:VisualStudioVersion=17.0 /ToolsVersion:Current) \ $(if $(filter 10,$(WINDOWS_SDK_VERSION)),/p:WindowsTargetPlatformVersion=$(UCRTVERSION))" \ && msbuild.exe cppunit_dll.vcxproj /p:Configuration=$${PROFILEFLAGS} \ && cd ../DllPlugInTester \ diff --git a/external/lcms2/ExternalProject_lcms2.mk b/external/lcms2/ExternalProject_lcms2.mk index 35dce1bcc03e..4f1ef72e5920 100644 --- a/external/lcms2/ExternalProject_lcms2.mk +++ b/external/lcms2/ExternalProject_lcms2.mk @@ -20,6 +20,7 @@ $(call gb_ExternalProject_get_state_target,lcms2,build): MSBuild.exe lcms2_DLL.vcxproj \ $(gb_MSBUILD_CONFIG_AND_PLATFORM) /p:TargetName=lcms2 \ $(if $(filter 160,$(VCVER)),/p:PlatformToolset=v142 /p:VisualStudioVersion=16.0 /ToolsVersion:Current) \ + $(if $(filter 170,$(VCVER)),/p:PlatformToolset=v143 /p:VisualStudioVersion=17.0 /ToolsVersion:Current) \ $(if $(filter 10,$(WINDOWS_SDK_VERSION)),/p:WindowsTargetPlatformVersion=$(UCRTVERSION)) \ ,Projects/VC2019/lcms2_DLL) $(call gb_Trace_EndRange,lcms2,EXTERNAL) diff --git a/external/postgresql/ExternalProject_postgresql.mk b/external/postgresql/ExternalProject_postgresql.mk index b491301c73b4..eaca2ab23512 100644 --- a/external/postgresql/ExternalProject_postgresql.mk +++ b/external/postgresql/ExternalProject_postgresql.mk @@ -27,6 +27,7 @@ $(call gb_ExternalProject_get_state_target,postgresql,build) : $(call gb_ExternalProject_run,build,\ MSBFLAGS="/p:Platform=$(gb_MSBUILD_PLATFORM) \ $(if $(filter 160,$(VCVER)),/p:PlatformToolset=v142 /p:VisualStudioVersion=16.0 /ToolsVersion:Current) \ + $(if $(filter 170,$(VCVER)),/p:PlatformToolset=v143 /p:VisualStudioVersion=17.0 /ToolsVersion:Current) \ $(if $(filter 10,$(WINDOWS_SDK_VERSION)),/p:WindowsTargetPlatformVersion=$(UCRTVERSION))" \ $(PERL) build.pl $(gb_MSBUILD_CONFIG) libpq \ ,src/tools/msvc) diff --git a/external/python3/ExternalProject_python3.mk b/external/python3/ExternalProject_python3.mk index dc268e8bb619..46fbdad5ab14 100644 --- a/external/python3/ExternalProject_python3.mk +++ b/external/python3/ExternalProject_python3.mk @@ -43,6 +43,7 @@ $(call gb_ExternalProject_get_state_target,python3,build) : /p:libffiIncludeDir=$(call gb_UnpackedTarball_get_dir,libffi)/$(HOST_PLATFORM)/include \ /maxcpucount \ $(if $(filter 160,$(VCVER)),/p:PlatformToolset=v142 /p:VisualStudioVersion=16.0 /ToolsVersion:Current) \ + $(if $(filter 170,$(VCVER)),/p:PlatformToolset=v143 /p:VisualStudioVersion=17.0 /ToolsVersion:Current) \ $(if $(filter 10,$(WINDOWS_SDK_VERSION)),/p:WindowsTargetPlatformVersion=$(UCRTVERSION)) \ ,PCBuild) $(call gb_Trace_EndRange,python3,EXTERNAL)