/* ### * 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/debugger/hasNodepJar.gradle" apply from: "$rootProject.projectDir/gradle/debugger/hasPythonPackage.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.10-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") } }