From 1bf953fc2a96b878ed5df96bced7a5b25a97b5de Mon Sep 17 00:00:00 2001
From: Ryan Kurtz
Date: Sat, 8 Oct 2022 02:33:04 -0700
Subject: [PATCH] GP-2786: Backporting Visual Studio Build Tools support to
patch
---
GPL/nativeBuildProperties.gradle | 7 +++++++
GPL/vsconfig.gradle | 6 +++---
GhidraDocs/InstallationGuide.html | 8 +++++++-
README.md | 7 ++++++-
4 files changed, 23 insertions(+), 5 deletions(-)
diff --git a/GPL/nativeBuildProperties.gradle b/GPL/nativeBuildProperties.gradle
index f83073e35b..4d887dba10 100644
--- a/GPL/nativeBuildProperties.gradle
+++ b/GPL/nativeBuildProperties.gradle
@@ -52,6 +52,13 @@ model {
}
}
}
+ if (isCurrentWindows() && VISUAL_STUDIO_INSTALL_DIR) {
+ // specify installDir because Gradle doesn't find VS Build Tools.
+ // See https://github.com/gradle/gradle-native/issues/617#issuecomment-575735288
+ visualCpp(VisualCpp) {
+ installDir VISUAL_STUDIO_INSTALL_DIR
+ }
+ }
}
}
diff --git a/GPL/vsconfig.gradle b/GPL/vsconfig.gradle
index 915b90ea90..4fe1edc223 100644
--- a/GPL/vsconfig.gradle
+++ b/GPL/vsconfig.gradle
@@ -29,13 +29,13 @@ def configureVisualStudio() {
println "Searching for latest Visual Studio and required components..."
def vswherePath = "C:\\Program Files (x86)\\Microsoft Visual Studio\\Installer\\vswhere.exe"
if (!file(vswherePath).exists()) {
- println "Visual Studio not found!"
+ println " -> Visual Studio vswhere.exe not found!"
return
}
- def vswhereOutput = "${vswherePath} -latest -format json".execute().text.trim()
+ def vswhereOutput = "${vswherePath} -products * -latest -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -format json".execute().text.trim()
def vswhereJson = new groovy.json.JsonSlurper().parseText(vswhereOutput);
if (vswhereJson.isEmpty()) {
- println "Visual Studio not found!"
+ println " -> Visual Studio not found!"
return
}
def vsInstallDir = vswhereJson[0].installationPath
diff --git a/GhidraDocs/InstallationGuide.html b/GhidraDocs/InstallationGuide.html
index 20aee4d5b7..06da43fbe2 100644
--- a/GhidraDocs/InstallationGuide.html
+++ b/GhidraDocs/InstallationGuide.html
@@ -326,7 +326,13 @@ system:
make, gcc, and g++ (Linux/macOS-only)
Microsoft Visual Studio
- 2017 or later (Windows-only)
+ 2017 or later, or
+ Microsoft C++ Build Tools with the following components installed (Windows-only):
+
+ - MSVC
+ - Windows SDK
+ - C++ ATL
+
To build the native binaries for your current platform, execute the following script:
diff --git a/README.md b/README.md
index 43fa6ef08a..f6ca04aa62 100644
--- a/README.md
+++ b/README.md
@@ -46,7 +46,11 @@ To create the latest development build for your platform from this source reposi
* [JDK 17 64-bit][jdk17]
* [Gradle 7.3+][gradle]
* make, gcc, and g++ (Linux/macOS-only)
-* [Microsoft Visual Studio][vs] (Windows-only)
+* [Microsoft Visual Studio][vs] or [Microsoft C++ Build Tools][vcbuildtools] with the following
+ components installed (Windows-only):
+ - MSVC
+ - Windows SDK
+ - C++ ATL
##### Download and extract the source:
[Download from GitHub][master]
@@ -116,6 +120,7 @@ source project.
[jdk17]: https://adoptium.net/temurin/releases
[gradle]: https://gradle.org/releases/
[vs]: https://visualstudio.microsoft.com/vs/community/
+[vcbuildtools]: https://visualstudio.microsoft.com/visual-cpp-build-tools/
[eclipse]: https://www.eclipse.org/downloads/packages/
[master]: https://github.com/NationalSecurityAgency/ghidra/archive/refs/heads/master.zip
[security]: https://github.com/NationalSecurityAgency/ghidra/security/advisories
\ No newline at end of file