Support building against VC17 on AMD64 (#9)
authorAdrian Grucza <46910040+apgrucza@users.noreply.github.com>
Tue, 28 May 2024 23:12:56 +0000 (09:12 +1000)
committerGitHub <noreply@github.com>
Tue, 28 May 2024 23:12:56 +0000 (19:12 -0400)
winbuild/MSProgram-Get.psm1

index 2ea0610d2d6dd7f7dda65ca1979b8e1ec0139420..b8dfacd815dd62761127d5768931d42debd4bab0 100644 (file)
@@ -116,7 +116,7 @@ function Find-MSBuild
    } catch {}
    if ("$msbuildexe" -eq "") {
        Write-Debug "tools version $toolsnum"
-       if ($toolsnum -gt 14) { # VC15 ~ VC16
+       if ($toolsnum -gt 14) { # VC15 ~ VC??
            $msbuildexe = msbfind_15_xx $toolsnum
        } else {            # VC10 ~ VC14
            $msbuildexe = msbfind_10_14 "${toolsnum}.0"
@@ -203,7 +203,7 @@ function msbfind_10_14
    return "${msbindir}msbuild"
 }
 
-#  find msbuild.exe for VC15 ~ VC16
+#  find msbuild.exe for VC15 ~ VC??
 function msbfind_15_xx
 {
     [CmdletBinding()]
@@ -243,7 +243,7 @@ function Find-Dumpbin
 #      $dumpbinexe="$env:DUMPBINEXE"
        if ($dumpbinexe -eq "") {
            $searching = $true
-           for ($i = $CurMaxVc; $searching -and ($i -ge 14); $i--) # VC15 ~ VC16
+           for ($i = $CurMaxVc; $searching -and ($i -ge 14); $i--) # VC15 ~ VC??
            {
                $vsdir = Find-VSDir $i
                if ("$vsdir" -ne "") {
@@ -364,7 +364,7 @@ function Find-VSDir
    if ((env_vcversion_no) -eq $vcversion_no) {
        return $env:VSINSTALLDIR
    }
-   if ($vcversion_no -gt 14) { # VC15 ~ VC16
+   if ($vcversion_no -gt 14) { # VC15 ~ VC??
        return find_vsdir_15_xx ${vcversion_no}
    } else {    # VC10 ~ VC14
        $comntools = [environment]::getenvironmentvariable("VS${vcversion_no}0COMNTOOLS")
@@ -377,7 +377,7 @@ function Find-VSDir
 
 [bool]$vssetup_available = $true
 $vssetup = $null
-#  find vs installation path for VC15 ~ VC16
+#  find vs installation path for VC15 ~ VC??
 function find_vs_installation
 {
     [CmdletBinding()]
@@ -405,7 +405,7 @@ function find_vs_installation
 }
 
 $vsarray = @{VC15 = "2017"; VC16 = "2019"; VC17 = "2022"}
-#  find VS dir for VC15 ~ VC16
+#  find VS dir for VC15 ~ VC??
 function find_default_msbuild_path
 {
     [CmdletBinding()]
@@ -417,7 +417,8 @@ function find_default_msbuild_path
    if ($vsdir -eq "")
    {
        $toolsnum = [int]$toolsver
-       if ($env:PROCESSOR_ARCHITECTURE -eq "x86" -or $env:PROCESSOR_ARCHITECTURE -eq "ARM64") {
+       # As of Visual Studio 2022 (VC17), MSBuild is 64-bit and so is always in ProgramFiles
+       if ($env:PROCESSOR_ARCHITECTURE -eq "x86" -or $toolsver -ge 17) {
            $pgmfs = "$env:ProgramFiles"
        } else {
            $pgmfs = "${env:ProgramFiles(x86)}"
@@ -435,7 +436,7 @@ function find_default_msbuild_path
    return ""
 }
 
-#  find VS dir for VC15 ~ VC16
+#  find VS dir for VC15 ~ VC??
 function find_vsdir_15_xx
 {
     [CmdletBinding()]