mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-03 09:49:23 +02:00
142 lines
4.1 KiB
Groovy
142 lines
4.1 KiB
Groovy
/* ###
|
|
* IP: GHIDRA
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
apply plugin: 'java-library'
|
|
|
|
java {
|
|
sourceCompatibility = "${rootProject.JAVA_COMPILER}"
|
|
targetCompatibility = "${rootProject.JAVA_COMPILER}"
|
|
}
|
|
|
|
//This project requires the eclpse PDE plugin. To create eclipse files for this project, run
|
|
// "gradle eclipse -PeclipsePDE"
|
|
if (hasProperty("eclipsePDE")) {
|
|
apply plugin: 'eclipse'
|
|
eclipse {
|
|
project {
|
|
name = 'Eclipse GhidraDevPlugin'
|
|
buildCommand 'org.eclipse.pde.ManifestBuilder'
|
|
buildCommand 'org.eclipse.pde.SchemaBuilder'
|
|
natures 'org.eclipse.pde.PluginNature'
|
|
classpath.file {
|
|
def requiredPlugins = 'org.eclipse.pde.core.requiredPlugins'
|
|
beforeMerged { classpath ->
|
|
classpath.entries.removeAll { entry ->
|
|
entry.path == requiredPlugins
|
|
}
|
|
}
|
|
whenMerged { classpath ->
|
|
withXml {
|
|
def node = it.asNode()
|
|
node.appendNode('classpathentry', [kind: 'con', path: requiredPlugins])
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
api project(':Utility')
|
|
api project(':LaunchSupport')
|
|
}
|
|
|
|
// We are currently building this with Eclipse, so prevent gradle from trying.
|
|
// See build_README.txt for instructions on how to build from Eclipse.
|
|
compileJava.enabled = false
|
|
jar.enabled = false
|
|
|
|
task utilityJar(type:Copy) {
|
|
destinationDir = file("build/data")
|
|
|
|
def utilityProject = project(':Utility')
|
|
|
|
from { utilityProject.jar } // using closure to delay until all projects evaluated
|
|
}
|
|
|
|
task launchSupportJar(type:Copy) {
|
|
destinationDir = file("build/data")
|
|
|
|
def launchSupportProject = project(':LaunchSupport')
|
|
|
|
from { launchSupportProject.jar } // using closure to delay until all projects evaluated
|
|
}
|
|
|
|
task pyDevUnpack(type:Copy) {
|
|
description = "Unpack PyDev plugin archive for development use"
|
|
group = "Development Preparation"
|
|
|
|
File pyDevDestDir = file("build/data/buildDependencies/pydev")
|
|
|
|
// Without this, the copyTask will unzip the file to check for "up to date"
|
|
onlyIf {
|
|
!pyDevDestDir.exists()
|
|
}
|
|
|
|
File depsFile = file("${DEPS_DIR}/GhidraDev/PyDev 9.3.0.zip")
|
|
File binRepoFile = file("${BIN_REPO}/GhidraBuild/EclipsePlugins/GhidraDev/buildDependencies/PyDev 9.3.0.zip")
|
|
|
|
// First check if the file is in the dependencies repo. If not, check in the bin repo.
|
|
def pyDevZipTree = depsFile.exists() ? zipTree(depsFile) : zipTree(binRepoFile)
|
|
|
|
from pyDevZipTree
|
|
exclude "**/.project", "**/.pydevproject"
|
|
|
|
destinationDir = pyDevDestDir
|
|
}
|
|
|
|
task cdtUnpack(type:Copy) {
|
|
description = "Unpack CDT plugin archive for development use"
|
|
group = "Development Preparation"
|
|
|
|
File cdtDestDir = file("build/data/buildDependencies/cdt")
|
|
|
|
// Without this, the copyTask will unzip the file to check for "up to date"
|
|
onlyIf {
|
|
!cdtDestDir.exists()
|
|
}
|
|
|
|
File depsFile = file("${DEPS_DIR}/GhidraDev/cdt-8.6.0.zip")
|
|
File binRepoFile = file("${BIN_REPO}/GhidraBuild/EclipsePlugins/GhidraDev/buildDependencies/cdt-8.6.0.zip")
|
|
|
|
// First check if the file is in the dependencies repo. If not, check in the bin repo.
|
|
def cdtZipTree = depsFile.exists() ? zipTree(depsFile) : zipTree(binRepoFile)
|
|
|
|
from cdtZipTree
|
|
|
|
destinationDir = cdtDestDir
|
|
}
|
|
|
|
task prepGhidraDev {
|
|
dependsOn("utilityJar")
|
|
dependsOn("launchSupportJar")
|
|
dependsOn("pyDevUnpack")
|
|
dependsOn("cdtUnpack")
|
|
}
|
|
|
|
// We do not currently build GhidraDev plugin at Ghidra build time so we must
|
|
// copy the prebuilt zip file from the BIN_REPO
|
|
rootProject.assembleDistribution {
|
|
from ("${BIN_REPO}/GhidraBuild/EclipsePlugins/GhidraDev") {
|
|
include 'GhidraDev*.zip'
|
|
into "Extensions/Eclipse/GhidraDev/"
|
|
}
|
|
}
|
|
|
|
rootProject.assembleMarkdownToHtml {
|
|
from ("${this.projectDir}/README.md") {
|
|
into "Extensions/Eclipse/GhidraDev/"
|
|
}
|
|
}
|