mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2024-11-24 13:11:47 +00:00
113 lines
3.5 KiB
Groovy
113 lines
3.5 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/javaProject.gradle"
|
|
apply from: "$rootProject.projectDir/gradle/jacocoProject.gradle"
|
|
apply from: "$rootProject.projectDir/gradle/javaTestProject.gradle"
|
|
apply from: "$rootProject.projectDir/gradle/nativeProject.gradle"
|
|
apply from: "$rootProject.projectDir/gradle/distributableGhidraModule.gradle"
|
|
apply from: "$rootProject.projectDir/gradle/hasPythonPackage.gradle"
|
|
apply from: "$rootProject.projectDir/gradle/debugger/hasNodepJar.gradle"
|
|
|
|
apply plugin: 'eclipse'
|
|
eclipse.project.name = 'Debug Debugger-agent-dbgeng'
|
|
|
|
dependencies {
|
|
api project(":Framework-AsyncComm")
|
|
api project(":Framework-Debugging")
|
|
api project(":Debugger-gadp")
|
|
|
|
//testImplementation project(":Base")
|
|
testImplementation project(path: ':Framework-AsyncComm', configuration: 'testArtifacts')
|
|
testImplementation project(path: ':Framework-Debugging', configuration: 'testArtifacts')
|
|
testImplementation project(path: ":Debugger-gadp", configuration: 'testArtifacts')
|
|
}
|
|
|
|
ext.tlb = file("build/os/win_x86_64/dbgmodel.tlb")
|
|
|
|
if ("win_x86_64".equals(getCurrentPlatformName())) {
|
|
|
|
String makeName = "win_x86_64DbgmodelTlbMake"
|
|
task(type: Exec, makeName) {
|
|
ext.tmpBatch = file("build/buildTlb.bat")
|
|
ext.idl = file("src/main/py/src/ghidradbg/dbgmodel/DbgModel.idl")
|
|
inputs.file(idl)
|
|
outputs.file(tlb)
|
|
|
|
doFirst {
|
|
file(tlb).parentFile.mkdirs()
|
|
def midlCmd = "midl /tlb ${tlb} ${idl}"
|
|
println "Executing: " + midlCmd
|
|
|
|
tmpBatch.withWriter { out ->
|
|
out.println "call " + VISUAL_STUDIO_VCVARS_CMD
|
|
out.println midlCmd
|
|
}
|
|
}
|
|
doLast {
|
|
assert file(tlb).exists() : "Failed to build dbgmodel.tlb"
|
|
}
|
|
|
|
commandLine "cmd", "/c", tmpBatch
|
|
}
|
|
|
|
tasks.assemblePyPackage {
|
|
from(tasks."$makeName") {
|
|
into("src/ghidradbg/dbgmodel/tlb")
|
|
}
|
|
}
|
|
}
|
|
else if (file(tlb).exists()) {
|
|
// required for multi-platform build
|
|
tasks.assemblePyPackage {
|
|
from(tlb) {
|
|
println "Copying existing tlb build artifact: " + tlb
|
|
into("src/ghidradbg/dbgmodel/tlb")
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
def prebuiltTlb = new File(rootProject.BIN_REPO + '/' + getGhidraRelativePath(project) + "/os/win_x86_64/dbgmodel.tlb")
|
|
if (prebuiltTlb.exists()) {
|
|
println "Copying prebuilt dbgmodel.tlb"
|
|
tasks.assemblePyPackage {
|
|
from(rootProject.BIN_REPO + '/' + getGhidraRelativePath(project) + "/os/win_x86_64/dbgmodel.tlb") {
|
|
into("src/ghidradbg/dbgmodel/tlb")
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
println "WARNING: dbgmodel.tlb omitted from ghidradbg python package"
|
|
}
|
|
}
|
|
|
|
distributePyDep("Pybag-2.2.12-py3-none-any.whl")
|
|
distributePyDep("capstone-5.0.1-py3-none-win_amd64.whl")
|
|
distributePyDep("comtypes-1.4.1-py3-none-any.whl")
|
|
distributePyDep("pywin32-306-cp312-cp312-win_amd64.whl")
|
|
|
|
tasks.nodepJar {
|
|
manifest {
|
|
attributes['Main-Class'] = 'agent.dbgeng.gadp.DbgEngGadpServer'
|
|
}
|
|
}
|
|
|
|
test {
|
|
jvmArgs('-Xrs') // TODO: Is this needed, or left over from trial-and-error
|
|
if ("win_x86_64".equals(getCurrentPlatformName())) {
|
|
dependsOn(":Framework-Debugging:testSpecimenWin_x86_64")
|
|
}
|
|
}
|