GP-849: Gradle 7 support

This commit is contained in:
Ryan Kurtz 2021-04-12 11:07:06 -04:00
parent cb63f67a81
commit 3a0ae8ee39
84 changed files with 324 additions and 290 deletions

View File

@ -34,8 +34,8 @@ You may not need all of these, depending on which portions you are building or d
- https://adoptopenjdk.net/releases.html?variant=openjdk11&jvmVariant=hotspot
- Amazon Corretto
- https://docs.aws.amazon.com/corretto/latest/corretto-11-ug/downloads-list.html
* Gradle 5.x or 6.x - We use version 5.0, and have tested with up to 6.8.3.
- https://gradle.org/next-steps/?version=5.0&format=bin
* Gradle 6.0 or later - We use version 6.9, and tested with up to 7.0.1.
- https://gradle.org/releases/
* A C/C++ compiler - We use GCC on Linux, Xcode (Clang) on macOS, and Visual Studio (2017 or later) on Windows.
- https://gcc.gnu.org/
- https://developer.apple.com/xcode/

View File

@ -16,7 +16,7 @@ if (findProject(':Generic') != null) {
}
}
else {
apply plugin: 'java'
apply plugin: 'java-library'
}
apply plugin: 'eclipse'
@ -39,16 +39,14 @@ sourceSets {
}
}
eclipse.classpath.plusConfigurations += [configurations.dmgCompile]
repositories {
flatDir name: "flat", dirs:["data/lib"]
}
dependencies {
dmgCompile ':csframework@jar'
dmgCompile ':hfsx@jar'
dmgCompile ':hfsx_dmglib@jar'
dmgImplementation ':csframework@jar'
dmgImplementation ':hfsx@jar'
dmgImplementation ':hfsx_dmglib@jar'
}
/***************************************************************************************
@ -58,6 +56,6 @@ dependencies {
***************************************************************************************/
jar {
destinationDir = file("build/data/lib")
destinationDirectory = file("build/data/lib")
from sourceSets.dmg.output
}

View File

@ -60,8 +60,8 @@ task zipBuildableSource(type:Zip) {
group 'private'
description "Collects the source files needed to build this module."
baseName project.name + "-src-for-build"
extension 'zip'
archiveBaseName = project.name + "-src-for-build"
archiveExtension = 'zip'
//
// Version 2.33.1

View File

@ -22,7 +22,7 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Debug AnnotationValidator'
dependencies {
compile project(':ProposedUtils')
api project(':ProposedUtils')
}
// no-dep jar for experiments in loading annotation processor into Eclipse

View File

@ -23,14 +23,16 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Debug Debugger-agent-dbgeng'
dependencies {
compile project(":Framework-AsyncComm")
compile project(":Framework-Debugging")
compile project(":Debugger-gadp")
compile "net.java.dev.jna:jna:5.4.0"
compile "net.java.dev.jna:jna-platform:5.4.0"
api project(":Framework-AsyncComm")
api project(":Framework-Debugging")
api project(":Debugger-gadp")
api "net.java.dev.jna:jna:5.4.0"
api "net.java.dev.jna:jna-platform:5.4.0"
//testCompile project(":Base")
testCompile project(path: ":Debugger-gadp", configuration: 'testArtifacts')
//testImplementation project(":Base")
testImplementation project(path: ':Framework-AsyncComm', configuration: 'testArtifacts')
testImplementation project(path: ':Framework-Debugging', configuration: 'testArtifacts')
testImplementation project(path: ":Debugger-gadp", configuration: 'testArtifacts')
}
def boolean filterJar(File jarfile) {
@ -52,7 +54,7 @@ jar {
task configureNodepJar {
doLast {
configurations.runtime.files.forEach {
configurations.runtimeOnly.files.forEach {
if (filterJar(it)) {
nodepJar.from(zipTree(it))
}

View File

@ -22,7 +22,7 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Debug Debugger-agent-dbgmodel-traceloader'
dependencies {
compile project(":Debugger")
compile project(":Debugger-agent-dbgeng")
compile project(':Debugger-agent-dbgmodel')
api project(":Debugger")
api project(":Debugger-agent-dbgeng")
api project(':Debugger-agent-dbgmodel')
}

View File

@ -23,9 +23,12 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Debug Debugger-agent-dbgmodel'
dependencies {
compile project(":Debugger-agent-dbgeng")
api project(":Debugger-agent-dbgeng")
testCompile project(path: ":Debugger-agent-dbgeng", configuration: 'testArtifacts')
testImplementation project(path: ":Debugger-agent-dbgeng", configuration: 'testArtifacts')
testImplementation project(path: ':Framework-AsyncComm', configuration: 'testArtifacts')
testImplementation project(path: ':Framework-Debugging', configuration: 'testArtifacts')
testImplementation project(path: ":Debugger-gadp", configuration: 'testArtifacts')
}
def boolean filterJar(File jarfile) {
@ -47,7 +50,7 @@ jar {
task configureNodepJar {
doLast {
configurations.runtime.files.forEach {
configurations.runtimeOnly.files.forEach {
if (filterJar(it)) {
nodepJar.from(zipTree(it))
}

View File

@ -23,12 +23,14 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Debug Debugger-agent-gdb'
dependencies {
compile project(':Framework-AsyncComm')
compile project(':Framework-Debugging')
compile project(':Debugger-gadp')
compile 'org.python:jython-standalone:2.7.1'
api project(':Framework-AsyncComm')
api project(':Framework-Debugging')
api project(':Debugger-gadp')
api 'org.python:jython-standalone:2.7.1'
testCompile project(path: ':Debugger-gadp', configuration: 'testArtifacts')
testImplementation project(path: ':Framework-AsyncComm', configuration: 'testArtifacts')
testImplementation project(path: ':Framework-Debugging', configuration: 'testArtifacts')
testImplementation project(path: ':Debugger-gadp', configuration: 'testArtifacts')
}
def boolean filterJar(File jarfile) {
@ -50,7 +52,7 @@ jar {
task configureNodepJar {
doLast {
configurations.runtime.files.forEach {
configurations.runtimeOnly.files.forEach {
if (filterJar(it)) {
nodepJar.from(zipTree(it))
}

View File

@ -47,12 +47,13 @@ dependencies {
protocArtifact 'com.google.protobuf:protoc:3.11.1:osx-x86_64@exe'
}
compile 'com.google.protobuf:protobuf-java:3.11.1'
compile project(':Framework-AsyncComm')
compile project(':Framework-Debugging')
compile project(':ProposedUtils')
api 'com.google.protobuf:protobuf-java:3.11.1'
api project(':Framework-AsyncComm')
api project(':Framework-Debugging')
api project(':ProposedUtils')
testCompile project(path: ':Framework-Debugging', configuration: 'testArtifacts')
testImplementation project(path: ':Framework-AsyncComm', configuration: 'testArtifacts')
testImplementation project(path: ':Framework-Debugging', configuration: 'testArtifacts')
}
/*protobuf {

View File

@ -22,9 +22,10 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Debug Debugger-jpda'
dependencies {
compile project(':Framework-AsyncComm')
compile project(':Framework-Debugging')
compile project(':ProposedUtils')
api project(':Framework-AsyncComm')
api project(':Framework-Debugging')
api project(':ProposedUtils')
testCompile project(path: ':Framework-Debugging', configuration: 'testArtifacts')
testImplementation project(path: ':Framework-AsyncComm', configuration: 'testArtifacts')
testImplementation project(path: ':Framework-Debugging', configuration: 'testArtifacts')
}

View File

@ -23,15 +23,16 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Debug Debugger'
dependencies {
compile project(':Framework-AsyncComm')
compile project(':Framework-Debugging')
compile project(':Framework-TraceModeling')
compile project(':Base')
compile project(':ByteViewer')
compile project(':ProposedUtils')
api project(':Framework-AsyncComm')
api project(':Framework-Debugging')
api project(':Framework-TraceModeling')
api project(':Base')
api project(':ByteViewer')
api project(':ProposedUtils')
helpPath project(path: ':Base', configuration: 'helpPath')
testCompile project(path: ':Framework-Debugging', configuration: 'testArtifacts')
testCompile project(path: ':Framework-TraceModeling', configuration: 'testArtifacts')
testImplementation project(path: ':Framework-AsyncComm', configuration: 'testArtifacts')
testImplementation project(path: ':Framework-Debugging', configuration: 'testArtifacts')
testImplementation project(path: ':Framework-TraceModeling', configuration: 'testArtifacts')
}

View File

@ -22,9 +22,9 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Debug Framework-AsyncComm'
dependencies {
compile project(':Generic')
compile project(':Graph')
compile project(':ProposedUtils')
api project(':Generic')
api project(':Graph')
api project(':ProposedUtils')
}
task genTestPy(type: JavaExec) {

View File

@ -23,12 +23,12 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Debug Framework-Debugging'
dependencies {
compile project(':Framework-AsyncComm')
compile project(':Generic')
compile project(':SoftwareModeling')
compile project(':ProposedUtils')
api project(':Framework-AsyncComm')
api project(':Generic')
api project(':SoftwareModeling')
api project(':ProposedUtils')
testCompile project(path: ':Framework-AsyncComm', configuration: 'testArtifacts')
testImplementation project(path: ':Framework-AsyncComm', configuration: 'testArtifacts')
}
task testSpecimenWin64 {

View File

@ -22,11 +22,11 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Debug Framework-TraceModeling'
dependencies {
compile project(':Generic')
compile project(':SoftwareModeling')
compile project(':ProposedUtils')
api project(':Generic')
api project(':SoftwareModeling')
api project(':ProposedUtils')
annotationProcessor project(':AnnotationValidator')
testCompile project(':Base')
testRuntime project(':ARM') // For its emulator state modifier
testImplementation project(':Base')
testRuntimeOnly project(':ARM') // For its emulator state modifier
}

View File

@ -24,16 +24,16 @@ eclipse.project.name = 'Debug ProposedUtils'
// val autoServiceVersion = "1.0-rc5"
dependencies {
compile project(':DB')
compile project(':Project')
compile project(':SoftwareModeling')
compile project(':Utility')
api project(':DB')
api project(':Project')
api project(':SoftwareModeling')
api project(':Utility')
compile project(':Base') // Boo!: (Where to put DefaultEnumeratedColumnProgramTableModel?)
api project(':Base') // Boo!: (Where to put DefaultEnumeratedColumnProgramTableModel?)
// TODO: Evaluate these dependencies
// compile("com.google.auto.service:auto-service-annotations:$autoServiceVersion")
// api("com.google.auto.service:auto-service-annotations:$autoServiceVersion")
// annotationProcessor("com.google.auto.service:auto-service:$autoServiceVersion")
testCompile project(':Base')
testImplementation project(':Base')
}

View File

@ -23,5 +23,5 @@ eclipse.project.name = 'Xtra SampleTablePlugin'
dependencies {
compile project(':Base')
api project(':Base')
}

View File

@ -20,5 +20,5 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Xtra SleighDevTools'
dependencies {
compile project(':Base')
api project(':Base')
}

View File

@ -30,7 +30,7 @@ eclipse.project.name = 'Xtra Bundle Examples'
dependencies {
compile project(':Base')
api project(':Base')
}
@ -50,8 +50,8 @@ srcDirs.each {dirName ->
// create and return a jar task for the given source directory
def makeJarTask(dirName) {
return tasks.create("build${dirName}", Jar) {
baseName dirName
archiveName "${dirName}.jar"
archiveBaseName = dirName
archiveFileName = "${dirName}.jar"
ext.dirName=dirName
@ -91,8 +91,8 @@ eclipse {
// "$rootProject.projectDir/gradle/support/extensionCommon.gradle"
task zipExtensions(type: Zip, dependsOn:jarTasks) {
def p = this.project
archiveName "${rootProject.ext.ZIP_NAME_PREFIX}_${p.name}.zip"
destinationDir rootProject.ext.DISTRIBUTION_DIR
archiveFileName = "${rootProject.ext.ZIP_NAME_PREFIX}_${p.name}.zip"
destinationDirectory = rootProject.ext.DISTRIBUTION_DIR
duplicatesStrategy 'exclude'

View File

@ -22,5 +22,5 @@ eclipse.project.name = 'Xtra sample'
dependencies {
compile project(':Base')
api project(':Base')
}

View File

@ -33,28 +33,28 @@ configurations {
}
dependencies {
compile project(':Utility')
compile project(':Generic')
compile project(':Docking')
compile project(':Graph')
compile project(':SoftwareModeling')
compile project(':DB')
compile project(':Help')
api project(':Utility')
api project(':Generic')
api project(':Docking')
api project(':Graph')
api project(':SoftwareModeling')
api project(':DB')
api project(':Help')
compile 'org.apache.felix:org.apache.felix.framework:6.0.3'
compile 'com.github.rotty3000:phidias:0.3.7'
compile 'biz.aQute.bnd:biz.aQute.bndlib:5.1.2'
compile 'org.slf4j:slf4j-api:1.7.25'
api 'org.apache.felix:org.apache.felix.framework:6.0.3'
api 'com.github.rotty3000:phidias:0.3.7'
api 'biz.aQute.bnd:biz.aQute.bndlib:5.1.2'
api 'org.slf4j:slf4j-api:1.7.25'
runtime "org.slf4j:slf4j-nop:1.7.25"
runtimeOnly "org.slf4j:slf4j-nop:1.7.25"
compileOnly "junit:junit:4.12"
// These have abstract test classes and stubs needed by this module
testCompile project(path: ':Docking', configuration: 'testArtifacts')
testCompile project(path: ':Generic', configuration: 'testArtifacts')
testCompile project(path: ':Project', configuration: 'testArtifacts')
testCompile project(path: ':SoftwareModeling', configuration: 'testArtifacts')
testImplementation project(path: ':Docking', configuration: 'testArtifacts')
testImplementation project(path: ':Generic', configuration: 'testArtifacts')
testImplementation project(path: ':Project', configuration: 'testArtifacts')
testImplementation project(path: ':SoftwareModeling', configuration: 'testArtifacts')
javacc 'net.java.dev.javacc:javacc:5.0'
}

View File

@ -23,8 +23,8 @@ eclipse.project.name = 'Features BytePatterns'
dependencies {
compile project(':Base')
compile project(':Utility')
api project(':Base')
api project(':Utility')
helpPath project(path: ":Base", configuration: 'helpPath')

View File

@ -23,9 +23,9 @@ eclipse.project.name = 'Features ByteViewer'
dependencies {
compile project(':Base')
api project(':Base')
testCompile project(path: ':SoftwareModeling', configuration: 'testArtifacts')
testImplementation project(path: ':SoftwareModeling', configuration: 'testArtifacts')
helpPath project(path: ':Base', configuration: 'helpPath') // this module's help has links to Base help files
}

View File

@ -22,5 +22,5 @@ eclipse.project.name = 'Features DebugUtils'
dependencies {
compile project(':Base')
api project(':Base')
}

View File

@ -24,11 +24,11 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Features Decompiler'
dependencies {
compile project(':Base')
compile project(':SoftwareModeling')
api project(':Base')
api project(':SoftwareModeling')
// include Base src/test/resources when running decompiler integration tests (uses defaultTools)
integrationTestRuntime project(path: ':Base', configuration: 'testArtifacts')
testCompile "org.jmockit:jmockit:1.44"
integrationTestImplementation project(path: ':Base', configuration: 'testArtifacts')
testImplementation "org.jmockit:jmockit:1.44"
helpPath project(path: ":Base", configuration: 'helpPath')
}

View File

@ -23,8 +23,8 @@ eclipse.project.name = 'Features DecompilerDependent'
dependencies {
compile project(':Base')
compile project(':Decompiler')
api project(':Base')
api project(':Decompiler')
}

View File

@ -23,28 +23,28 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Features FileFormats'
dependencies {
compile project(':Base')
compile project(':Recognizers')
compile project(':Python')
api project(':Base')
api project(':Recognizers')
api project(':Python')
compile ':dex-ir:2.0'
compile ':dex-reader:2.0'
compile ':dex-reader-api:2.0'
compile ':dex-translator:2.0'
api ':dex-ir:2.0'
api ':dex-reader:2.0'
api ':dex-reader-api:2.0'
api ':dex-translator:2.0'
compile 'org.ow2.asm:asm-debug-all:4.1'
api 'org.ow2.asm:asm-debug-all:4.1'
compile 'org.smali:baksmali:1.4.0' // TODO: upgrade to 2.2.6
compile 'org.smali:dexlib:1.4.0'
compile 'org.smali:util:1.4.0'
api 'org.smali:baksmali:1.4.0' // TODO: upgrade to 2.2.6
api 'org.smali:dexlib:1.4.0'
api 'org.smali:util:1.4.0'
compile 'net.sf.sevenzipjbinding:sevenzipjbinding:16.02-2.01'
compile ':AXMLPrinter2'
api 'net.sf.sevenzipjbinding:sevenzipjbinding:16.02-2.01'
api ':AXMLPrinter2'
runtime 'net.sf.sevenzipjbinding:sevenzipjbinding-all-platforms:16.02-2.01'
runtimeOnly 'net.sf.sevenzipjbinding:sevenzipjbinding-all-platforms:16.02-2.01'
helpPath project(path: ":Base", configuration: 'helpPath')
// include code from src/test/slow in Base
testCompile project(path: ':Base', configuration: 'integrationTestArtifacts')
testImplementation project(path: ':Base', configuration: 'integrationTestArtifacts')
}

View File

@ -25,9 +25,9 @@ eclipse.project.name = 'Features Graph FunctionGraph'
dependencies {
compile project(":Base")
api project(":Base")
testCompile "org.jmockit:jmockit:1.44"
testImplementation "org.jmockit:jmockit:1.44"
helpPath project(path: ":Base", configuration: 'helpPath')
}

View File

@ -22,6 +22,6 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Features Graph FunctionGraphDecompilerExt'
dependencies {
compile project(":FunctionGraph")
compile project(":Decompiler")
api project(":FunctionGraph")
api project(":Decompiler")
}

View File

@ -24,9 +24,9 @@ eclipse.project.name = 'Features FunctionID'
dependencies {
compile project(":Base")
compile project(":DB")
compile project(":SoftwareModeling")
api project(":Base")
api project(":DB")
api project(":SoftwareModeling")
helpPath project(path: ":Base", configuration: 'helpPath')
}

View File

@ -28,9 +28,9 @@ configurations {
}
dependencies {
compile project(":FileSystem")
compile project(":DB")
compile project(":Generic")
api project(":FileSystem")
api project(":DB")
api project(":Generic")
runGhidraServer project
}

View File

@ -23,5 +23,5 @@ eclipse.project.name = 'Features GnuDemangler'
dependencies {
compile project(":Base")
api project(":Base")
}

View File

@ -25,7 +25,7 @@ eclipse.project.name = 'Features Graph FunctionCalls'
// Note: this module's name is 'GraphFunctionCalls'
dependencies {
compile project(":Base")
api project(":Base")
helpPath project(path: ":Base", configuration: 'helpPath')
@ -35,7 +35,7 @@ dependencies {
helpPath project(path: ":FunctionGraph", configuration: 'helpPath')
// These have abstract test classes and stubs needed by this module
testCompile project(path: ':Project', configuration: 'testArtifacts')
testCompile project(path: ':SoftwareModeling', configuration: 'testArtifacts')
testImplementation project(path: ':Project', configuration: 'testArtifacts')
testImplementation project(path: ':SoftwareModeling', configuration: 'testArtifacts')
}

View File

@ -24,26 +24,26 @@ eclipse.project.name = 'Features Graph Services'
dependencies {
compile project(":Base")
api project(":Base")
// jungrapht - exclude slf4j which produces a conflict with other uses with Ghidra
compile ("com.github.tomnelson:jungrapht-visualization:1.2") { exclude group: "org.slf4j", module: "slf4j-api" }
compile ("com.github.tomnelson:jungrapht-layout:1.2") { exclude group: "org.slf4j", module: "slf4j-api" }
api ("com.github.tomnelson:jungrapht-visualization:1.2") { exclude group: "org.slf4j", module: "slf4j-api" }
api ("com.github.tomnelson:jungrapht-layout:1.2") { exclude group: "org.slf4j", module: "slf4j-api" }
compile "org.jgrapht:jgrapht-core:1.5.0"
api "org.jgrapht:jgrapht-core:1.5.0"
// not using jgrapht-io code that depends on antlr, so exclude antlr
compile ("org.jgrapht:jgrapht-io:1.5.0") { exclude group: "org.antlr", module: "antlr4-runtime" }
api ("org.jgrapht:jgrapht-io:1.5.0") { exclude group: "org.antlr", module: "antlr4-runtime" }
runtime "org.slf4j:slf4j-api:1.7.25"
runtimeOnly "org.slf4j:slf4j-api:1.7.25"
// use this if you want no slf4j log messages
runtime "org.slf4j:slf4j-nop:1.7.25"
runtimeOnly "org.slf4j:slf4j-nop:1.7.25"
// use this if you want slf4j log messages sent to log4j
// runtime "org.apache.logging.log4j:log4j-slf4j-impl:2.12.1"
// runtimeOnly "org.apache.logging.log4j:log4j-slf4j-impl:2.12.1"
runtime "org.jheaps:jheaps:0.13"
runtimeOnly "org.jheaps:jheaps:0.13"
helpPath project(path: ":Base", configuration: 'helpPath')

View File

@ -22,6 +22,6 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Features MicrosoftCodeAnalyzer'
dependencies {
compile project(":MicrosoftDmang")
compile project(":Base")
api project(":MicrosoftDmang")
api project(":Base")
}

View File

@ -23,6 +23,6 @@ eclipse.project.name = 'Features MicrosoftDemangler'
dependencies {
compile project(":Base")
compile project(":MicrosoftDmang")
api project(":Base")
api project(":MicrosoftDmang")
}

View File

@ -25,7 +25,7 @@ project.ext.excludeFromParallelTests = true
project.ext.excludeFromParallelIntegrationTests = true
dependencies {
compile project(':Base')
api project(':Base')
}
/*

View File

@ -28,16 +28,16 @@ eclipse.project.name = 'Features PDB'
* Build dependencies
*********************************************************************************/
dependencies {
compile project(":Base")
api project(":Base")
testCompile "org.jmockit:jmockit:1.44"
testImplementation "org.jmockit:jmockit:1.44"
// Demangler Analyzer needs to find MicrosoftDemangler
compile project(":MicrosoftDemangler")
api project(":MicrosoftDemangler")
helpPath project(path: ':Base', configuration: 'helpPath') // this module's help has links to Base help files
testCompile project(path: ':Base', configuration: 'testArtifacts')
testCompile project(path: ':SoftwareModeling', configuration: 'testArtifacts')
testImplementation project(path: ':Base', configuration: 'testArtifacts')
testImplementation project(path: ':SoftwareModeling', configuration: 'testArtifacts')
}
/**

View File

@ -24,7 +24,7 @@ eclipse.project.name = 'Features ProgramDiff'
dependencies {
compile project(":Base")
api project(":Base")
helpPath project(path: ":Base", configuration: 'helpPath')
}

View File

@ -24,7 +24,7 @@ eclipse.project.name = 'Features Graph ProgramGraph'
dependencies {
compile project(":Base")
api project(":Base")
helpPath project(path: ":Base", configuration: 'helpPath')
helpPath project(path: ":GraphServices", configuration: 'helpPath')

View File

@ -31,10 +31,10 @@ configurations {
}
dependencies {
compile project(':Base')
api project(':Base')
helpPath project(path: ":Base", configuration: "helpPath")
jython JYTHON
compile JYTHON
api JYTHON
}
task jythonUnpack(type: Copy) {

View File

@ -22,7 +22,7 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Features Recognizers'
dependencies {
compile project(':Base')
api project(':Base')
}
test {

View File

@ -23,7 +23,7 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Features SourceCodeLookup'
dependencies {
compile project(":Base")
compile project(":Decompiler")
api project(":Base")
api project(":Decompiler")
helpPath project(path: ":Decompiler", configuration: 'helpPath')
}

View File

@ -25,10 +25,10 @@ eclipse.project.name = 'Features VersionTracking'
project.ext.excludeFromParallelIntegrationTests = true
dependencies {
compile project(":Base")
api project(":Base")
helpPath project(path: ":Base", configuration: "helpPath")
testCompile "org.jmockit:jmockit:1.44"
testCompile project(path: ':Project', configuration: 'testArtifacts')
testImplementation "org.jmockit:jmockit:1.44"
testImplementation project(path: ':Project', configuration: 'testArtifacts')
}

View File

@ -22,6 +22,6 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Framework DB'
dependencies {
compile project(':Generic')
api project(':Generic')
}

View File

@ -22,16 +22,16 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Framework Docking'
dependencies {
compile project(':Generic')
compile 'net.java.dev.timingframework:timingframework:1.0'
api project(':Generic')
api 'net.java.dev.timingframework:timingframework:1.0'
// Only include this debug version of the jh library if necessary.
//compile name:'jh2.with.debug'
compile 'javax.help:javahelp:2.0.05'
//api name:'jh2.with.debug'
api 'javax.help:javahelp:2.0.05'
// include code from src/test in Generic
testCompile project(path: ':Generic', configuration: 'testArtifacts')
testImplementation project(path: ':Generic', configuration: 'testArtifacts')
compileOnly "junit:junit:4.12"
}

View File

@ -22,10 +22,10 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Framework FileSystem'
dependencies {
compile project(':Generic')
compile project(':DB')
compile project(':Docking')
compile "ch.ethz.ganymed:ganymed-ssh2:262@jar"
api project(':Generic')
api project(':DB')
api project(':Docking')
api "ch.ethz.ganymed:ganymed-ssh2:262@jar"
}

View File

@ -24,17 +24,17 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Framework Generic'
dependencies {
compile project(':Utility')
compile "cglib:cglib-nodep:2.2"
compile "com.google.guava:guava:19.0"
compile "org.jdom:jdom-legacy:1.1.3"
compile "org.apache.logging.log4j:log4j-api:2.12.1"
compile "org.apache.logging.log4j:log4j-core:2.12.1"
compile "org.apache.commons:commons-collections4:4.1"
compile "org.apache.commons:commons-lang3:3.9"
compile "org.apache.commons:commons-text:1.6"
compile "commons-io:commons-io:2.6"
compile "com.google.code.gson:gson:2.8.6"
api project(':Utility')
api "cglib:cglib-nodep:2.2"
api "com.google.guava:guava:19.0"
api "org.jdom:jdom-legacy:1.1.3"
api "org.apache.logging.log4j:log4j-api:2.12.1"
api "org.apache.logging.log4j:log4j-core:2.12.1"
api "org.apache.commons:commons-collections4:4.1"
api "org.apache.commons:commons-lang3:3.9"
api "org.apache.commons:commons-text:1.6"
api "commons-io:commons-io:2.6"
api "com.google.code.gson:gson:2.8.6"
compileOnly "junit:junit:4.12"
}

View File

@ -22,21 +22,21 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Framework Graph'
dependencies {
compile project(':Docking')
api project(':Docking')
// these are not used by the project, but indirectly by the jars listed below
compile "net.sf.jung:jung-api:2.1.1" // used by jung-graph-impl
compile "net.sf.jung:jung-algorithms:2.1.1" // used by jung-visualization
api "net.sf.jung:jung-api:2.1.1" // used by jung-graph-impl
api "net.sf.jung:jung-algorithms:2.1.1" // used by jung-visualization
// this project uses these directly
compile "net.sf.jung:jung-graph-impl:2.1.1"
compile "net.sf.jung:jung-visualization:2.1.1"
api "net.sf.jung:jung-graph-impl:2.1.1"
api "net.sf.jung:jung-visualization:2.1.1"
compile "org.jgrapht:jgrapht-core:1.5.0"
api "org.jgrapht:jgrapht-core:1.5.0"
// not using jgrapht-io code that depends on antlr, so exclude antlr
compile ("org.jgrapht:jgrapht-io:1.5.0") { exclude group: "org.antlr", module: "antlr4-runtime" }
api ("org.jgrapht:jgrapht-io:1.5.0") { exclude group: "org.antlr", module: "antlr4-runtime" }
// These have abstract test classes and stubs needed by this module
testCompile project(path: ':Docking', configuration: 'testArtifacts')
testImplementation project(path: ':Docking', configuration: 'testArtifacts')
}

View File

@ -22,9 +22,9 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Framework Help'
dependencies {
compile project(':Utility')
compile project(':Docking')
api project(':Utility')
api project(':Docking')
// compile name:'jh' - provided by Docking
// api name:'jh' - provided by Docking
}

View File

@ -22,13 +22,13 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Framework Project'
dependencies {
compile project(':Generic')
compile project(':DB')
compile project(':Docking')
compile project(':FileSystem')
compile project(':Utility')
api project(':Generic')
api project(':DB')
api project(':Docking')
api project(':FileSystem')
api project(':Utility')
testCompile project(path: ':Generic', configuration: 'testArtifacts')
compile "org.apache.commons:commons-compress:1.19"
testImplementation project(path: ':Generic', configuration: 'testArtifacts')
api "org.apache.commons:commons-compress:1.19"
}

View File

@ -28,19 +28,19 @@ apply plugin: 'antlr'
rootProject.prepDev.dependsOn compileJava
dependencies {
compile project(':Generic')
compile project(':FileSystem')
compile project(':Project')
compile project(':Graph')
api project(':Generic')
api project(':FileSystem')
api project(':Project')
api project(':Graph')
compile "msv:msv:20050913"
compile "msv:xsdlib:20050913"
compile "org.antlr:antlr-runtime:3.5.2"
api "msv:msv:20050913"
api "msv:xsdlib:20050913"
api "org.antlr:antlr-runtime:3.5.2"
runtime "msv:relaxngDatatype:20050913"
compile "msv:isorelax:20050913"
runtimeOnly "msv:relaxngDatatype:20050913"
api "msv:isorelax:20050913"
testCompile "org.jmockit:jmockit:1.44"
testImplementation "org.jmockit:jmockit:1.44"
// Must specify the specific antlr implementation to use or it will default to trying to find
// version 2.7.7 (which we don't have)

View File

@ -25,5 +25,5 @@ eclipse.project.name = 'Processors 68000'
dependencies {
compile project(':Base')
api project(':Base')
}

View File

@ -21,5 +21,5 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Processors 8051'
dependencies {
compile project(':Base')
api project(':Base')
}

View File

@ -27,6 +27,6 @@ sleighCompileOptions = [
]
dependencies {
compile project(':Base')
compile project(':BytePatterns')
api project(':Base')
api project(':BytePatterns')
}

View File

@ -22,5 +22,5 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Processors ARM'
dependencies {
compile project(':Base')
api project(':Base')
}

View File

@ -22,7 +22,7 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Processors Atmel'
dependencies {
compile project(':Base')
api project(':Base')
}
sleighCompileOptions = [

View File

@ -22,6 +22,6 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Processors DATA'
dependencies {
compile project(':Base')
compile project(':SoftwareModeling')
api project(':Base')
api project(':SoftwareModeling')
}

View File

@ -27,6 +27,6 @@ sleighCompileOptions = [
]
dependencies {
compile project(':Base')
compile project(':FileFormats')
api project(':Base')
api project(':FileFormats')
}

View File

@ -25,5 +25,5 @@ sleighCompileOptions = [
]
dependencies {
compile project(':Base')
api project(':Base')
}

View File

@ -26,6 +26,6 @@ eclipse.project.name = 'Processors JVM'
apply from: "$rootProject.projectDir/gradle/processorProject.gradle"
dependencies {
compile project(':Base')
api project(':Base')
}

View File

@ -22,7 +22,7 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Processors MIPS'
dependencies {
compile project(':Base')
api project(':Base')
}
sleighCompileOptions = [

View File

@ -23,6 +23,6 @@ eclipse.project.name = 'Processors PIC'
dependencies {
compile project(':Base')
api project(':Base')
}

View File

@ -24,7 +24,7 @@ eclipse.project.name = 'Processors PowerPC'
dependencies {
compile project(':Base')
compile project(':BytePatterns')
api project(':Base')
api project(':BytePatterns')
}

View File

@ -22,5 +22,5 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Processors RISCV'
dependencies {
compile project(':Base')
api project(':Base')
}

View File

@ -23,6 +23,6 @@ eclipse.project.name = 'Processors Sparc'
dependencies {
compile project(':Base')
api project(':Base')
}

View File

@ -22,5 +22,5 @@ apply plugin: 'eclipse'
eclipse.project.name = 'Processors SuperH4'
dependencies {
compile project(':Base')
api project(':Base')
}

View File

@ -21,6 +21,6 @@ eclipse.project.name = 'Processors Toy'
dependencies {
compile project(':Base')
api project(':Base')
}

View File

@ -23,5 +23,5 @@ eclipse.project.name = 'Processors tricore'
dependencies {
compile project(':Base')
api project(':Base')
}

View File

@ -23,6 +23,6 @@ eclipse.project.name = 'Processors x86'
dependencies {
compile project(':Base')
api project(':Base')
}

View File

@ -17,7 +17,7 @@ import org.apache.tools.ant.filters.ReplaceTokens
defaultTasks 'buildExtension'
apply plugin: 'java'
apply plugin: 'java-library'
/*****************************************************************************************
*
@ -48,9 +48,9 @@ compileJava {
}
dependencies {
compile fileTree(dir: 'lib', include: "*.jar")
compile fileTree(dir: ghidraDir + '/Framework', include: "**/*.jar")
compile fileTree(dir: ghidraDir + '/Features', include: "**/*.jar")
api fileTree(dir: 'lib', include: "*.jar")
api fileTree(dir: ghidraDir + '/Framework', include: "**/*.jar")
api fileTree(dir: ghidraDir + '/Features', include: "**/*.jar")
helpPath fileTree(dir: ghidraDir + '/Features/Base', include: "**/Base.jar")
}
@ -75,8 +75,8 @@ task zipSource (type: Zip) {
task buildExtension (type: Zip) {
baseName "${ZIP_NAME_PREFIX}_${project.name}"
extension 'zip'
archiveBaseName = "${ZIP_NAME_PREFIX}_${project.name}"
archiveExtension = 'zip'
destinationDir DISTRIBUTION_DIR
version ''
@ -152,7 +152,7 @@ task buildExtension (type: Zip) {
}
doLast {
println "\nCreated " + baseName + "." + extension + " in " + destinationDir
println "\nCreated " + archiveBaseName + "." + archiveExtension + " in " + destinationDir
}
}

View File

@ -33,6 +33,10 @@ sourceSets {
}
}
processIntegrationTestResources {
duplicatesStrategy = 'exclude'
}
dependencies {
// integrationtest module may depend on other projects in this repo; add them
// here
@ -46,15 +50,15 @@ dependencies {
projectPath.contains("/Features/") ||
projectPath.contains("/Processors/"))) {
compile p
api p
}
}
}
// some tests use classes in Base/src/test and test.slow
testCompile project(path: ':Base', configuration: 'testArtifacts')
testCompile project(path: ':Base', configuration: 'integrationTestArtifacts')
testCompile project(path: ':FunctionGraph', configuration: 'testArtifacts')
testImplementation project(path: ':Base', configuration: 'testArtifacts')
testImplementation project(path: ':Base', configuration: 'integrationTestArtifacts')
testImplementation project(path: ':FunctionGraph', configuration: 'testArtifacts')
}
// For Java 9, we must explicitly export references to the internal classes we are using.

View File

@ -2,7 +2,7 @@ application.name=Ghidra
application.version=10.0
application.release.name=DEV
application.layout.version=1
application.gradle.min=5.0
application.gradle.min=6.0
application.java.min=11
application.java.max=
application.java.compiler=11

View File

@ -16,10 +16,10 @@
apply plugin: 'eclipse'
eclipse.project.name = '_JsonDoclet'
apply plugin: 'java'
apply plugin: 'java-library'
dependencies {
compile "com.google.code.gson:gson:2.8.6"
api "com.google.code.gson:gson:2.8.6"
}
rootProject.createJsondocs.dependsOn jar

View File

@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
apply plugin: 'java'
apply plugin: 'java-library'
//This project requires the eclpse PDE plugin. To create eclipse files for this project, run
// "gradle eclipse -PeclipsePDE"
@ -48,8 +48,8 @@ sourceCompatibility = 1.8
targetCompatibility = 1.8
dependencies {
compile project(':Utility')
compile project(':LaunchSupport')
api project(':Utility')
api project(':LaunchSupport')
}
// We are currently building this with Eclipse, so prevent gradle from trying.

View File

@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
apply plugin: 'java'
apply plugin: 'java-library'
apply plugin: 'eclipse'
eclipse.project.name = '_LaunchSupport'

View File

@ -20,7 +20,7 @@ apply plugin: 'eclipse'
eclipse.project.name = '_Skeleton'
dependencies {
compile project(':Base')
api project(':Base')
}
// We don't want this to build
@ -37,5 +37,6 @@ rootProject.assembleDistribution {
exclude '.project'
rename "buildTemplate.gradle", "build.gradle"
into "Extensions/Ghidra/Skeleton"
duplicatesStrategy = 'include'
}
}

View File

@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
apply plugin: 'java'
apply plugin: 'java-library'
apply plugin: 'eclipse'
eclipse.project.name = '_GhidraDocs'
@ -26,7 +26,7 @@ sourceSets {
}
dependencies {
compile project(':Base')
api project(':Base')
}
rootProject.assembleDistribution {

View File

@ -38,7 +38,7 @@ To create the latest development build for your platform from this source reposi
##### Install build tools:
* [JDK 11 64-bit][jdk11]
* [Gradle][gradle] (version 5.x or 6.x)
* [Gradle][gradle] (minimum v6.0)
* make, gcc, and g++ (Linux/macOS-only)
* [Microsoft Visual Studio][vs] (Windows-only)

View File

@ -315,13 +315,20 @@ String getCurrentPlatformName() {
List<String> getExternalRuntimeDependencies(Project project) {
List<String> list = new ArrayList<String>()
list.addAll(getExternalDependencies(project.configurations.compile));
list.addAll(getExternalDependencies(project.configurations.runtime));
if (project.configurations.find { it.name == 'api' }) {
list.addAll(getExternalDependencies(project, project.configurations.api));
}
if (project.configurations.find { it.name == 'implementation' }) {
list.addAll(getExternalDependencies(project, project.configurations.implementation));
}
if (project.configurations.find { it.name == 'runtimeOnly' }) {
list.addAll(getExternalDependencies(project, project.configurations.runtimeOnly));
}
return list
}
List<String> getExternalDependencies(Configuration configuration) {
List<String> getExternalDependencies(Project project, Configuration configuration) {
List<String> list = new ArrayList<>();
configuration.dependencies.each { dep ->
@ -344,9 +351,12 @@ List<String> getExternalDependencies(Configuration configuration) {
}
}
// loop back through all the dependency files, looking for one that contains the dependency name.
String depPath = configuration.find {
it.name.contains(searchString)
// loop back through all the dependency files, looking for one that contains the dependency name.
String depPath = project.configurations
.findAll {it.isCanBeResolved()}
.collect {it.resolve()}
.flatten()
.find {it.getAbsolutePath().contains(searchString)
}
if (depPath == null) {
println("****************DID NOT FIND DEPENDENCY: name = "+name+" version = "+version)
@ -369,7 +379,7 @@ Set<String> getAllExternalDependencies(Project project) {
Set<String> set = new HashSet<String>()
project.getConfigurations().each { config ->
set.addAll(getExternalDependencies(config))
set.addAll(getExternalDependencies(project, config))
}
return set

View File

@ -59,8 +59,8 @@ sourceSets {
}
dependencies {
helpIndexCompile "javax.help:javahelp:2.0.05"
helpIndexCompile project(path: ':Help', configuration: 'archives')
helpIndexImplementation "javax.help:javahelp:2.0.05"
helpIndexImplementation project(':Help')
}
// Task for calling the java help indexer, which creates a searchable index of the
@ -193,7 +193,8 @@ jar {
}
// build the help whenever this module's jar file is built
jar.dependsOn buildHelp
processResources.dependsOn buildHelp
jar.dependsOn buildHelp
// make sure generated help directories exist during prepdev so that the directories are created and

View File

@ -31,7 +31,7 @@ import org.gradle.plugins.ide.eclipse.model.Library;
* - all subs will have access to these properties.
*********************************************************************************/
apply plugin: 'java'
apply plugin: 'java-library'
compileJava {
options.compilerArgs << '-Xlint:none'
@ -46,6 +46,14 @@ compileTestJava {
options.fork = true
options.warnings = false
}
processResources {
duplicatesStrategy = 'exclude'
}
processTestResources {
duplicatesStrategy = 'exclude'
}
plugins.withId('java') {
sourceCompatibility = "${rootProject.JAVA_COMPILER}"
@ -120,12 +128,12 @@ sourceSets {
}
configurations {
integrationTestCompile.extendsFrom testCompile
integrationTestRuntime.extendsFrom testRuntime, integrationTestCompile
pcodeTestCompile.extendsFrom compile
testArtifacts.extendsFrom testRuntime
integrationTestArtifacts.extendsFrom integrationTestRuntime
screenShotsCompile.extendsFrom integrationTestCompile
integrationTestImplementation.extendsFrom testImplementation
integrationTestRuntimeOnly.extendsFrom testRuntimeOnly, integrationTestImplementation
pcodeTestImplementation.extendsFrom implementation
testArtifacts.extendsFrom testRuntimeOnly
integrationTestArtifacts.extendsFrom integrationTestRuntimeOnly
screenShotsImplementation.extendsFrom integrationTestImplemenation
}
task testJar(type: Jar) {
@ -147,14 +155,14 @@ artifacts {
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"
integrationTestImplementation "org.hamcrest:hamcrest-all:1.3"
integrationTestImplementation "org.jmockit:jmockit:1.44"
testCompile "org.hamcrest:hamcrest-all:1.3"
testCompile "org.jmockit:jmockit:1.44"
testImplementation "org.hamcrest:hamcrest-all:1.3"
testImplementation "org.jmockit:jmockit:1.44"
testCompile "junit:junit:4.12"
pcodeTestCompile "junit:junit:4.12"
testImplementation "junit:junit:4.12"
pcodeTestImplementation "junit:junit:4.12"
}
// For Java 9, we must explicitly export references to the internal classes we are using.
@ -190,10 +198,12 @@ eclipse.classpath.file.whenMerged { classpath ->
// Prevent Gradle 5.6 from setting the 'test' attribute on our test source folders and jars.
// If we don't do this, things that we have outside of test directories that depend on test
// libraries (like junit) will not compile in Eclipse.
// Also prevent Gradle 7.0 from adding jars to the modulepath instead of the classpath.
classpath.entries.findAll {
it.kind == 'src' || it.kind == 'lib'
}.each {
it.entryAttributes['test'] = 'false'
it.entryAttributes['module'] = 'false'
}
}

View File

@ -119,7 +119,7 @@ def getGitRev(repoPath) {
*********************************************************************************/
task createJavadocs(type: Javadoc, description: 'Generate javadocs for all projects', group: 'Documentation') {
destinationDir = file(rootProject.projectDir.toString() + "/build/tmp/javadoc")
destinationDir file(rootProject.projectDir.toString() + "/build/tmp/javadoc")
failOnError false
@ -177,7 +177,7 @@ task createJsondocs(type: Javadoc, description: 'Generate JSON docs for all proj
String ROOT_PROJECT_DIR = rootProject.projectDir.toString()
destinationDir = file(ROOT_PROJECT_DIR + "/build/tmp/jsondoc")
destinationDir file(ROOT_PROJECT_DIR + "/build/tmp/jsondoc")
failOnError false
@ -222,8 +222,8 @@ task createJsondocs(type: Javadoc, description: 'Generate JSON docs for all proj
*********************************************************************************/
task zipJavadocs(type: Zip) {
group 'private'
archiveName 'GhidraAPI_javadoc.zip'
destinationDir file(rootProject.projectDir.toString() + "/build/tmp")
archiveFileName = 'GhidraAPI_javadoc.zip'
destinationDirectory = file(rootProject.projectDir.toString() + "/build/tmp")
from createJavadocs {
into "api"
@ -233,7 +233,7 @@ task zipJavadocs(type: Zip) {
into "api"
}
description "Zips javadocs for Ghidra API. [gradle/root/distribution.gradle]"
description "Zips javadocs for Ghidra api. [gradle/root/distribution.gradle]"
}
@ -491,12 +491,12 @@ task createInstallationZip(type: Zip) { t ->
}
if (project.hasProperty("allPlatforms")) {
archiveName "${ZIP_NAME_PREFIX}.zip"
archiveFileName = "${ZIP_NAME_PREFIX}.zip"
}
else {
archiveName "${ZIP_NAME_PREFIX}_${currentPlatform}.zip"
archiveFileName = "${ZIP_NAME_PREFIX}_${currentPlatform}.zip"
}
destinationDir DISTRIBUTION_DIR
destinationDirectory = DISTRIBUTION_DIR
// Make sure that we don't try to copy the same file with the same path.
duplicatesStrategy 'exclude'

View File

@ -26,8 +26,8 @@ plugins.withType(JavaPlugin) {
// Define some metadata about the zip (name, location, version, etc....)
t.group 'private'
t.description "Creates the source zips for java modules"
t.archiveName project.name + "-src.zip"
t.destinationDir file(projectDir.path + "/build/tmp/src")
t.archiveFileName = project.name + "-src.zip"
t.destinationDirectory = file(projectDir.path + "/build/tmp/src")
// Without this we get duplicate files but it's unclear why. It doesn't seem that this
// task is being executed multiple times, and sourceSets.main.java contains the
// correct elements. Whatever the cause, this fixes the problem.

View File

@ -20,8 +20,8 @@ task zipExtensions (type: Zip) {
it.group 'private'
it.description "Creates a zip file for an extension module. [gradle/support/extensionCommon.gradle]"
it.archiveName "${rootProject.ext.ZIP_NAME_PREFIX}_${p.name}.zip"
it.destinationDir rootProject.ext.DISTRIBUTION_DIR
it.archiveFileName = "${rootProject.ext.ZIP_NAME_PREFIX}_${p.name}.zip"
it.destinationDirectory = rootProject.ext.DISTRIBUTION_DIR
// Make sure that we don't try to copy the same file with the same path into the
// zip (this can happen!)