ghidra/GPL/CabExtract/build.gradle
2019-04-23 15:20:26 -04:00

72 lines
2.0 KiB
Groovy

apply from: "$rootProject.projectDir/gradle/distributableGhidraModule.gradle"
apply plugin: 'eclipse'
eclipse.project.name = 'GPL CabExtract'
project.ext.cabextract = "cabextract-1.6"
/*********************************************************************************
* CabExtract extraction task
*
* Unpacks the cabextract tar file that's needed for the symbol server. This
* is only unpacked for building the tool; once it's built, this unzipped
* archive is removed.
*
* NOTE: Ant is used so that timestamps are properly preserved, failure to
* do so can cause the aclocal utility to be required which may be missing!
*********************************************************************************/
task unpackCabExtract (type: Copy) {
doFirst {
delete file("build/${cabextract}")
}
doLast {
// Force all unpacked files to have the same timestamp
ant.touch() {
fileset(dir: file("build/${cabextract}"))
}
}
from tarTree(file("data/${cabextract}.tar.gz"))
into 'build'
// Force the task to be executed every time by setting to false.
// This is done since configure changes the contents for a platform
outputs.upToDateWhen { false }
}
/*********************************************************************************
* CabExtract platform specific tasks
*
* The cabextract tool requires that its 'configure' script is called before make.
*********************************************************************************/
['linux64', 'osx64'].each { platform ->
def configureName = "${platform}CabExtractConfigure"
def makeName = "${platform}CabExtractMake" // native Make task found automatically
task (configureName, type: Exec) {
group "private"
workingDir "build/${cabextract}"
executable "./configure"
dependsOn unpackCabExtract
}
task (makeName, type: Exec) {
group "private"
workingDir "build/${cabextract}"
executable "make"
dependsOn configureName
doLast {
copy {
from "build/${cabextract}/cabextract"
into "build/os/${platform}"
}
}
}
}