ghidra/GPL/vsconfig.gradle
Shawn Hoffman 37e74c253b win pdb: don't override PlatformToolset
The msvc toolset version recently bumped to 14.40.x.
See https://devblogs.microsoft.com/cppblog/msvc-toolset-minor-version-number-14-40-in-vs-2022-v17-10/
Ghidra was assuming the msvc toolset version would match the PlatformToolset version (which indicates binary compatibility), which is not correct.
PlatformToolset specified on msbuild commandline was overriding the value in the vcxproj, and not acting as a "default" value.
Just remove the explicit passing, it's handled by the vcxproj already.
2024-05-30 12:38:59 -07:00

80 lines
3.7 KiB
Groovy

/* ###
* IP: Public Domain
*/
/****************************************************************************
* Establish Visual Studio configuration environment for Windows native builds
*
* NOTE: We do not rely on the VisualCpp plugin to identify paths since it has
* proven in the past to be unreliable when multiple versions of Visual Studio
* and SDKs are installed.
****************************************************************************/
if (!hasProperty("VISUAL_STUDIO_INSTALL_DIR")) {
configureVisualStudio()
}
def configureVisualStudio() {
if (isCurrentWindows()) {
// Initialize variables
rootProject.ext.VISUAL_STUDIO_INSTALL_DIR = ""
rootProject.ext.VISUAL_STUDIO_TOOLS_VERSION_DEFAULT = ""
rootProject.ext.VISUAL_STUDIO_SDK_DIR_DEFAULT = ""
rootProject.ext.VISUAL_STUDIO_SDK_VERSION_DEFAULT = ""
rootProject.ext.VISUAL_STUDIO_SDK_VERSION_OVERRIDE = ""
rootProject.ext.VISUAL_STUDIO_VCVARS_CMD = ""
// Use vswhere.exe to search for latest Visual Studio installation
println "Searching for latest Visual Studio and required components..."
def programFiles = System.getenv()["ProgramFiles(x86)"] ?: "C:\\Program Files (x86)"
def vswherePath = findProperty("vswherePath") ?: "${programFiles}\\Microsoft Visual Studio\\Installer\\vswhere.exe"
if (!file(vswherePath).exists()) {
println " -> Visual Studio vswhere.exe not found at \"${vswherePath}\""
println " -> To manually specify the location of vswhere.exe, add \"-PvswherePath=<vswhere path>\" to the Gradle command line arguments"
return
}
def vswhereProcess = "\"${vswherePath}\" -products * -latest -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -format json -utf8".execute()
def vswhereOutput = vswhereProcess.text.trim()
def vswhereExit = vswhereProcess.exitValue()
if (vswhereExit != 0) {
if (vswhereExit == 87) { // ERROR_INVALID_PARAMATER
println " -> Visual Studio vswhere.exe was passed an unsupported argument!"
}
else {
println " -> Visual Studio vswhere.exe returned an error code (${vswhereExit})!"
}
println " -> Please confirm ${vswherePath} is version 2.5 or later."
println " -> Please check README.md or InstallationGuide.html to verify you are using a supported version of Visual Studio."
return
}
def vswhereJson = new groovy.json.JsonSlurper().parseText(vswhereOutput);
if (vswhereJson.isEmpty()) {
println " -> Visual Studio not found!"
return
}
def vsInstallDir = vswhereJson[0].installationPath
println " -> Installation Directory: ${vsInstallDir}"
// Use vcvarsall.bat to determine the latest Visual Studio's default SDK and tool versions
def vcvarsPath = "${vsInstallDir}\\VC\\Auxiliary\\Build\\vcvarsall.bat"
def vcvarsCmd = "\"${vcvarsPath}\" x86_amd64"
def vcvarsEnvCmd = "cmd /v:ON /c ${vcvarsCmd} > nul && cmd /c echo"
def sdkDir = "${vcvarsEnvCmd} !WindowsSdkDir!".execute().text.trim()
println " -> SDK Directory (default): ${sdkDir}"
def sdkVersion = "${vcvarsEnvCmd} !WindowsSDKVersion!".execute().text.trim().replace('\\', '')
println " -> SDK Version (default): ${sdkVersion}"
// Check Gradle properties for override values
def windowsTargetPlatformVersion = findProperty("WindowsTargetPlatformVersion")
println " -> SDK Version (override): " + (windowsTargetPlatformVersion ?: "N/A")
// Save Visual Studio information so other projects can access it
rootProject.ext.VISUAL_STUDIO_INSTALL_DIR = vsInstallDir
rootProject.ext.VISUAL_STUDIO_SDK_DIR_DEFAULT = sdkDir
rootProject.ext.VISUAL_STUDIO_SDK_VERSION_DEFAULT = sdkVersion
rootProject.ext.VISUAL_STUDIO_SDK_VERSION_OVERRIDE = windowsTargetPlatformVersion
rootProject.ext.VISUAL_STUDIO_VCVARS_CMD = vcvarsCmd
}
}