mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2024-11-22 04:05:39 +00:00
168 lines
4.1 KiB
Groovy
168 lines
4.1 KiB
Groovy
/*****************************************************************************************
|
|
This file is a "mix-in" gradle script that individual gradle projects should include if they
|
|
have java code.
|
|
|
|
A gradle project can add java support by including the following to its build.gradle file:
|
|
|
|
apply from: "$rootProject.projectDir/gradle/support/distributableGhidraModule.gradle"
|
|
*****************************************************************************************/
|
|
|
|
import org.gradle.plugins.ide.eclipse.model.Container;
|
|
import org.gradle.plugins.ide.eclipse.model.Library;
|
|
|
|
|
|
/*********************************************************************************
|
|
* Subproject configuration
|
|
* - all subs will have access to these properties.
|
|
*********************************************************************************/
|
|
|
|
apply plugin: 'java'
|
|
|
|
compileJava {
|
|
options.compilerArgs << '-Xlint:none'
|
|
options.compilerArgs << '-XDignore.symbol.file'
|
|
options.fork = true
|
|
options.warnings = false
|
|
}
|
|
|
|
compileTestJava {
|
|
options.compilerArgs << '-Xlint:none'
|
|
options.compilerArgs << '-XDignore.symbol.file'
|
|
options.fork = true
|
|
options.warnings = false
|
|
}
|
|
|
|
plugins.withId('java') {
|
|
sourceCompatibility = "${rootProject.JAVA_COMPILER}"
|
|
targetCompatibility = "${rootProject.JAVA_COMPILER}"
|
|
}
|
|
|
|
|
|
jar {
|
|
manifest {
|
|
attributes (
|
|
"Specification-Title": "${project.name}",
|
|
"Specification-Version": "${rootProject.RELEASE_VERSION}",
|
|
"Specification-Vendor": "Ghidra"
|
|
)
|
|
}
|
|
}
|
|
|
|
|
|
sourceSets {
|
|
main {
|
|
java {
|
|
srcDir 'src/main/java'
|
|
}
|
|
resources {
|
|
srcDir 'src/main/resources'
|
|
}
|
|
}
|
|
test {
|
|
java {
|
|
srcDir 'src/test/java'
|
|
}
|
|
resources {
|
|
srcDir 'src/test/resources'
|
|
}
|
|
}
|
|
integrationTest {
|
|
java {
|
|
srcDirs = ['src/test.slow/java'] // overwrite srcDir with new path
|
|
compileClasspath += main.output + test.output
|
|
runtimeClasspath += main.output + test.output
|
|
}
|
|
resources {
|
|
srcDirs = ['src/test.slow/resources']
|
|
}
|
|
}
|
|
screenShots {
|
|
java {
|
|
srcDir 'src/screen/java'
|
|
compileClasspath += main.output
|
|
runtimeClasspath += main.output
|
|
}
|
|
}
|
|
cunitTest {
|
|
java {
|
|
srcDir 'src/test.processors/java'
|
|
compileClasspath += main.output
|
|
runtimeClasspath += main.output
|
|
}
|
|
resources {
|
|
srcDir 'src/test.processors/resources'
|
|
}
|
|
}
|
|
scripts {
|
|
java {
|
|
srcDir 'developer_scripts'
|
|
srcDir 'ghidra_scripts'
|
|
}
|
|
}
|
|
}
|
|
|
|
configurations {
|
|
integrationTestCompile.extendsFrom testCompile
|
|
integrationTestRuntime.extendsFrom testRuntime, integrationTestCompile
|
|
cunitTestCompile.extendsFrom compile
|
|
testArtifacts.extendsFrom testRuntime
|
|
integrationTestArtifacts.extendsFrom integrationTestRuntime
|
|
}
|
|
|
|
task testJar(type: Jar) {
|
|
classifier "test"
|
|
from sourceSets.test.output
|
|
}
|
|
|
|
task integrationTestJar(type: Jar) {
|
|
classifier "test"
|
|
from sourceSets.integrationTest.output
|
|
}
|
|
artifacts {
|
|
testArtifacts testJar
|
|
integrationTestArtifacts integrationTestJar
|
|
|
|
}
|
|
|
|
/*
|
|
Provide test dependencies here so each build file does not have to.
|
|
*/
|
|
dependencies {
|
|
integrationTestCompile "org.hamcrest:hamcrest-all:1.3"
|
|
integrationTestCompile "org.jmockit:jmockit:1.44"
|
|
|
|
testCompile "org.hamcrest:hamcrest-all:1.3"
|
|
testCompile "org.jmockit:jmockit:1.44"
|
|
|
|
testCompile "junit:junit:4.12"
|
|
}
|
|
|
|
// For Java 9, we must explicitly export references to the internal classes we are using.
|
|
// We export them to all "unnamed" modules, which are modules that don't define themselves
|
|
// as a new Java 9 style module. Ghidra is currently using unnamed modules everywhere.
|
|
ext.addExports = { List<String> exports ->
|
|
tasks.withType(JavaCompile) {
|
|
exports.each {
|
|
options.compilerArgs.addAll(['--add-exports', it])
|
|
}
|
|
}
|
|
|
|
eclipse.classpath.file.whenMerged { classpath ->
|
|
classpath.entries.each { ent ->
|
|
if (ent instanceof Container && ent.path.contains('JRE_CONTAINER')) {
|
|
ent.entryAttributes.put('module', true);
|
|
ent.entryAttributes.put('add-exports', exports.join(':'));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
afterEvaluate {
|
|
eclipse.classpath.file.whenMerged { classpath ->
|
|
classpath.entries.removeAll { ent ->
|
|
ent instanceof Library && !ent.path.endsWith('.jar')
|
|
}
|
|
classpath.entries.findAll { entry -> entry.kind == 'lib' }*.exported = true
|
|
}
|
|
}
|