mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2024-11-21 19:42:14 +00:00
GP-1040: Fixing GnuDisassembler build
This commit is contained in:
parent
cde02a91eb
commit
8473259d06
1
GPL/GnuDisassembler/.gitignore
vendored
Normal file
1
GPL/GnuDisassembler/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
binutils-*
|
@ -14,6 +14,12 @@ To build this extension for Linux or Mac OS X:
|
|||||||
If a different binutils distribution is used the build.gradle and/or buildGdis.gradle
|
If a different binutils distribution is used the build.gradle and/or buildGdis.gradle
|
||||||
may require modification.
|
may require modification.
|
||||||
|
|
||||||
|
The build requires the following packages to be installed:
|
||||||
|
* flex
|
||||||
|
* bison
|
||||||
|
* texinfo
|
||||||
|
* zlib1g-dev
|
||||||
|
|
||||||
2. Run gradle from the module's root directory (see top of build.gradle file for
|
2. Run gradle from the module's root directory (see top of build.gradle file for
|
||||||
specific instructions).
|
specific instructions).
|
||||||
|
|
||||||
|
@ -28,55 +28,56 @@
|
|||||||
// directory once the extension has been installed/unpacked by Ghidra. The binutils referenced
|
// directory once the extension has been installed/unpacked by Ghidra. The binutils referenced
|
||||||
// by the script below may be downloaded from the following URL:
|
// by the script below may be downloaded from the following URL:
|
||||||
//
|
//
|
||||||
// https://ftp.gnu.org/pub/gnu/binutils/binutils-2.34.tar.bz2
|
// https://ftp.gnu.org/pub/gnu/binutils/binutils-2.36.tar.bz2
|
||||||
//
|
//
|
||||||
|
|
||||||
ext.binutils = "binutils-2.34"
|
ext.binutils = "binutils-2.36"
|
||||||
ext.binutilsDistro = "${binutils}.tar.bz2"
|
ext.binutilsDistro = "${binutils}.tar.bz2"
|
||||||
|
|
||||||
ext.ghidraInstallDir = null;
|
// Find the GPL dir
|
||||||
|
def gplDir = null;
|
||||||
if (file("../gpl.gradle").exists()) {
|
if (file("../gpl.gradle").exists()) {
|
||||||
// Module is located within the Ghidra GPL directory
|
gplDir = file("..").getCanonicalPath()
|
||||||
ext.ghidraInstallDir = file("../..").getCanonicalPath()
|
|
||||||
ext.binutilsLocation = file("${ghidraInstallDir}/../ghidra.bin/GPL/${name}").getCanonicalPath()
|
|
||||||
apply from: file("../gpl.gradle").getCanonicalPath()
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// various module placements for Ghidra installations
|
// Module lives disconnected from the GPL directory, which it will need to build.
|
||||||
ext.binutilsLocation = projectDir
|
// Find a Ghidra installation directory and use its GPL directory.
|
||||||
if (file("../../../GPL/gpl.gradle").exists()) {
|
if (file("../../Extensions").exists() && file("../../../GPL/gpl.gradle").exists()) {
|
||||||
// Handle GPL extension install within Ghidra Extensions directory
|
// Module is installed within a Ghidra installation (i.e, ghidra/Ghidra/Extensions)
|
||||||
ext.ghidraInstallDir = file("../../..").getCanonicalPath()
|
gplDir = file("../../../GPL").getCanonicalPath()
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Handle extension install outside of Ghidra installation - must specify Ghidra install path
|
// Module is in an unknown location (likely outside of Ghidra).
|
||||||
|
// Rely on the GHIDRA_INSTALL_DIR property being set.
|
||||||
|
def ghidraInstallDir = null;
|
||||||
if (System.env.GHIDRA_INSTALL_DIR) {
|
if (System.env.GHIDRA_INSTALL_DIR) {
|
||||||
ext.ghidraInstallDir = System.env.GHIDRA_INSTALL_DIR
|
ghidraInstallDir = System.env.GHIDRA_INSTALL_DIR
|
||||||
}
|
}
|
||||||
else if (project.hasProperty("GHIDRA_INSTALL_DIR")) {
|
else if (project.hasProperty("GHIDRA_INSTALL_DIR")) {
|
||||||
ext.ghidraInstallDir = project.getProperty("GHIDRA_INSTALL_DIR")
|
ghidraInstallDir = project.getProperty("GHIDRA_INSTALL_DIR")
|
||||||
}
|
}
|
||||||
}
|
else {
|
||||||
if (ghidraInstallDir) {
|
throw new GradleException("GHIDRA_INSTALL_DIR is not defined!")
|
||||||
|
}
|
||||||
|
|
||||||
if (ghidraInstallDir.replace("\\","/").endsWith("/")) {
|
if (ghidraInstallDir.replace("\\","/").endsWith("/")) {
|
||||||
ext.ghidraInstallDir = ghidraInstallDir.substring(0, ghidraInstallDir.length()-1)
|
ghidraInstallDir = ghidraInstallDir.substring(0, ghidraInstallDir.length()-1)
|
||||||
}
|
}
|
||||||
|
gplDir = file("${ghidraInstallDir}/GPL")
|
||||||
println "Building with Ghidra installation at $ghidraInstallDir"
|
println "Building with Ghidra installation at $ghidraInstallDir"
|
||||||
apply from: new File(ghidraInstallDir).getCanonicalPath() + "/GPL/gpl.gradle"
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
throw new GradleException("GHIDRA_INSTALL_DIR is not defined!")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If we see other projects, we are packaging this extension for distribution
|
||||||
if (findProject(':Generic') != null) {
|
if (findProject(':Generic') != null) {
|
||||||
// Handle integrated Ghidra build - do not build gdis native
|
// Package extension
|
||||||
apply from: "$rootProject.projectDir/gradle/distributableGPLExtension.gradle"
|
apply from: "$rootProject.projectDir/gradle/distributableGPLExtension.gradle"
|
||||||
delete file("build/os"); // remove any prior build of gdis
|
delete file("build/os"); // remove any prior build of gdis
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
apply from: "${ghidraInstallDir}/GPL/nativeBuildProperties.gradle"
|
// Build GPL extension (gdis)
|
||||||
|
apply from: "${gplDir}/gpl.gradle"
|
||||||
|
apply from: "${gplDir}/nativeBuildProperties.gradle"
|
||||||
apply from: "buildGdis.gradle"
|
apply from: "buildGdis.gradle"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,17 +1,12 @@
|
|||||||
/* ###
|
/* ###
|
||||||
* IP: Public Domain
|
* IP: Public Domain
|
||||||
*/
|
*/
|
||||||
/*******************************************************************************************
|
|
||||||
* build.gradle file that applies this script must define two properties
|
|
||||||
* 1) binutilsLocation - the folder where the original binutils.zip lives
|
|
||||||
* 2) binutilsPrebuiltPath - the folder where the custom prebuilt binutils lives or will be built to
|
|
||||||
*******************************************************************************************/
|
|
||||||
|
|
||||||
defaultTasks 'assemble'
|
defaultTasks 'assemble'
|
||||||
|
|
||||||
ext.supportedPlatforms = ['osx64', 'linux64']
|
ext.supportedPlatforms = ['osx64', 'linux64']
|
||||||
|
|
||||||
ext.binutilsResource = new File("${binutilsLocation}/${binutils}.tar.bz2")
|
ext.binutilsResource = new File("${projectDir}/${binutils}.tar.bz2")
|
||||||
|
|
||||||
def binutilsUnpackDir = file("${project.buildDir}/${binutils}/")
|
def binutilsUnpackDir = file("${project.buildDir}/${binutils}/")
|
||||||
|
|
||||||
@ -19,8 +14,6 @@ def binutilsUnpackDir = file("${project.buildDir}/${binutils}/")
|
|||||||
*
|
*
|
||||||
* For each supported platform build the following tasks:
|
* For each supported platform build the following tasks:
|
||||||
* buildBinutils_<platform> builds binutils for the platform
|
* buildBinutils_<platform> builds binutils for the platform
|
||||||
* packageBinutilsDev_<platform> creates the built bundle of stuf we need to build gdis
|
|
||||||
* unpackBinutilsPrebuilt_<platform> unpacks the built bundle to be used to build gdis
|
|
||||||
*
|
*
|
||||||
******************************************************************************************/
|
******************************************************************************************/
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
##VERSION: 2.0
|
##VERSION: 2.0
|
||||||
##MODULE IP: GPL 2
|
##MODULE IP: GPL 2
|
||||||
##MODULE IP: Public Domain
|
##MODULE IP: Public Domain
|
||||||
|
.gitignore||Public Domain||||END|
|
||||||
Module.manifest||Public Domain||||END|
|
Module.manifest||Public Domain||||END|
|
||||||
README.txt||Public Domain||||END|
|
README.txt||Public Domain||||END|
|
||||||
data/arm_test1.s||Public Domain||||END|
|
data/arm_test1.s||Public Domain||||END|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
name=GnuDisassembler
|
name=GnuDisassembler
|
||||||
description=GNU Disassembler. Extension is delivered unbuilt. See module README.txt for build instructions.
|
description=GNU Disassembler. Extension is delivered unbuilt. See module README.txt for build instructions. Depends on SleighDevTools.
|
||||||
author=Ghidra Team
|
author=Ghidra Team
|
||||||
createdOn=6/18/2019
|
createdOn=6/18/2019
|
||||||
version=@extversion@
|
version=@extversion@
|
||||||
|
@ -14,7 +14,7 @@ project.ext.set("OS_NAMES", ["osx64", "win32", "win64", "linux64"])
|
|||||||
* Establish Visual Studio configuration environment for Windows native builds
|
* Establish Visual Studio configuration environment for Windows native builds
|
||||||
* NOTE: vsconfig.gradle path is relative to each GPL project module
|
* NOTE: vsconfig.gradle path is relative to each GPL project module
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
apply from: "../vsconfig.gradle"
|
apply from: buildscript.sourceFile.getParent() + "/vsconfig.gradle"
|
||||||
|
|
||||||
/*********************************************************************************
|
/*********************************************************************************
|
||||||
* Returns the local platform name.
|
* Returns the local platform name.
|
||||||
|
Loading…
Reference in New Issue
Block a user