mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2024-11-21 19:42:14 +00:00
GP-1080: Preventing native test binaries from getting built for the
distribution
This commit is contained in:
parent
7936f89ab5
commit
524badc9d4
@ -87,6 +87,16 @@ def isNativeBinaryMakeTask(Task task, String platform) {
|
||||
return false
|
||||
}
|
||||
|
||||
/*******************************************************************************************
|
||||
* Returns true if the native binaries for the given task should be skipped during build.
|
||||
*
|
||||
* NOTE: Some native binaries are test-only and should not be built for a distribution.
|
||||
*
|
||||
******************************************************************************************/
|
||||
def shouldSkipNative(task) {
|
||||
return task.ext.has("skipNative") && task.ext.get("skipNative")
|
||||
}
|
||||
|
||||
/*******************************************************************************************
|
||||
* Task Rule : builds all the natives in this module for a given platform.
|
||||
*
|
||||
@ -113,6 +123,11 @@ tasks.addRule("Pattern: buildNatives_<platform name>]: build all natives for giv
|
||||
myTask.dependsOn t.path
|
||||
t.dependsOn CheckToolChain
|
||||
}
|
||||
|
||||
// buildNatives task natives end up in the distribution...mark test natives as "skip"
|
||||
if (project.findProperty("nativesTestOnly") ?: false) {
|
||||
t.ext.set("skipNative", true)
|
||||
}
|
||||
}
|
||||
|
||||
// add callbacks to look for native build tasks when new tasks are added later
|
||||
@ -169,13 +184,16 @@ tasks.addRule("Pattern: prebuildNatives_<platform name>]: build all natives for
|
||||
gradle.taskGraph.whenReady {
|
||||
def p = this.project
|
||||
p.tasks.withType(LinkExecutable).each { t ->
|
||||
if (!shouldSkipNative(t)) {
|
||||
File f = t.linkedFile.getAsFile().get()
|
||||
String filename = f.getName()
|
||||
NativePlatform platform = t.targetPlatform.get()
|
||||
String osName = platform.getName()
|
||||
t.linkedFile = p.file("build/os/${osName}/$filename")
|
||||
}
|
||||
}
|
||||
p.tasks.withType(LinkSharedLibrary).each { t ->
|
||||
if (!shouldSkipNative(t)) {
|
||||
File f = t.linkedFile.getAsFile().get()
|
||||
String filename = f.getName()
|
||||
NativePlatform platform = t.targetPlatform.get()
|
||||
@ -183,6 +201,7 @@ gradle.taskGraph.whenReady {
|
||||
t.linkedFile = p.file("build/os/${osName}/$filename")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************************
|
||||
* The following block of code ensures that the buildNatives_<platform> task is used
|
||||
|
@ -31,6 +31,9 @@ dependencies {
|
||||
testImplementation project(path: ':Framework-AsyncComm', configuration: 'testArtifacts')
|
||||
}
|
||||
|
||||
// Ensure the below native test binaries don't get built for a distribution
|
||||
ext.nativesTestOnly = true
|
||||
|
||||
task testSpecimenWin64 {
|
||||
dependsOn 'expCreateProcessWin64Executable'
|
||||
dependsOn 'expCreateThreadExitWin64Executable'
|
||||
|
Loading…
Reference in New Issue
Block a user