mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-03 17:59:46 +02:00
115 lines
3.2 KiB
Groovy
115 lines
3.2 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 from: "$rootProject.projectDir/gradle/distributableGhidraModule.gradle"
|
|
apply from: "$rootProject.projectDir/gradle/javaProject.gradle"
|
|
apply from: "$rootProject.projectDir/gradle/jacocoProject.gradle"
|
|
apply from: "$rootProject.projectDir/gradle/javaTestProject.gradle"
|
|
apply from: "$rootProject.projectDir/gradle/javadoc.gradle"
|
|
apply plugin: 'eclipse'
|
|
|
|
eclipse.project.name = 'Framework Help'
|
|
|
|
dependencies {
|
|
api project(':Gui')
|
|
|
|
api 'net.java.dev.timingframework:timingframework:1.0'
|
|
|
|
// Only include this debug version of the jh library if necessary.
|
|
//api name:'jh2.with.debug'
|
|
api 'javax.help:javahelp:2.0.05'
|
|
}
|
|
|
|
/*
|
|
* Get all help tasks from all projects
|
|
*/
|
|
def getAllHelpTasks() {
|
|
|
|
List list = new ArrayList()
|
|
rootProject.allprojects {
|
|
tasks.each {
|
|
if (it.name == 'buildModuleHelp') {
|
|
list.add(it)
|
|
}
|
|
}
|
|
}
|
|
return list
|
|
}
|
|
|
|
/*
|
|
* A task at the Ghidra tool top-level build that will trigger all 'buildModuleHelp' tasks to run,
|
|
* this building help. Additionally, this task will perform any needed validation after all help
|
|
* modules are built.
|
|
*/
|
|
tasks.register('buildHelp') {
|
|
|
|
description 'Build all Ghidra help'
|
|
|
|
dependsOn { getAllHelpTasks() } // all 'buildHelpModule' tasks
|
|
dependsOn 'validateHelpTocFiles' // the validate TOC task to run after all help is built
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* Gathers all generated help TOC files and validates them.
|
|
*/
|
|
tasks.register('validateHelpTocFiles', JavaExec) {
|
|
|
|
group = "private"
|
|
|
|
dependsOn { getAllHelpTasks() } // all 'buildHelpModule' tasks to provide TOC inputs
|
|
|
|
// we need our Help java files compiled
|
|
dependsOn jar
|
|
|
|
mainClass = 'help.GHelpTocValidator'
|
|
|
|
// to allow remote debugging of the help build jvm
|
|
// jvmArgs '-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=13001'
|
|
|
|
// print debug info
|
|
// args '-debug'
|
|
|
|
doFirst {
|
|
|
|
// get the Help module jar file, since it has classes we use
|
|
classpath += jar.outputs.files
|
|
|
|
// get the classpath items used by the Help module, since we use those classes
|
|
classpath += configurations.runtimeClasspath
|
|
|
|
// add each Module-help.jar file created by 'buildModuleHelp' to the application inputs
|
|
rootProject.allprojects.forEach {
|
|
|
|
// <module>/build/libs/Module-help.jar
|
|
def helpLibDir = it.file('build/libs')
|
|
if (helpLibDir.isDirectory()) {
|
|
|
|
helpLibDir.listFiles().each {
|
|
String name = it.getName()
|
|
if (name.endsWith('-help.jar')) {
|
|
args "${it.absolutePath}"
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
// Sigal that any System.out messages from this Java process should be logged at INFO level.
|
|
// To see this output, run gradle with the '-i' option to show INFO messages.
|
|
logging.captureStandardOutput LogLevel.INFO
|
|
}
|
|
}
|