From 0a6eb4fcaddd4ccfaa206865f17def38e666b927 Mon Sep 17 00:00:00 2001 From: Eric Kilmer Date: Sun, 12 Feb 2023 13:43:33 -0500 Subject: [PATCH] gradle: Fix bundle_examples compilation --- .../Extensions/bundle_examples/build.gradle | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/Ghidra/Extensions/bundle_examples/build.gradle b/Ghidra/Extensions/bundle_examples/build.gradle index 24194f0b3b..c996218f91 100644 --- a/Ghidra/Extensions/bundle_examples/build.gradle +++ b/Ghidra/Extensions/bundle_examples/build.gradle @@ -36,15 +36,33 @@ dependencies { def srcDirs = [] file(project.projectDir).eachDirMatch(~/.*scripts_.*/) { srcDirs << it.name } +// Create all source sets first +srcDirs.each{ dirName -> sourceSets.create(dirName) } -srcDirs.each {dirName -> - sourceSets.create(dirName) { - java { - srcDir { - dirName - } +// Examples that depend on 'org.other.lib' in 'scripts_lib' +def script_lib_dependents = ["scripts_with_manifest", "scripts_lib_user"] as Set +// Examples that depend on 'org.jarlib.JarUtil' in 'scripts_jar' +def script_jar_dependents = ["scripts_uses_jar", "scripts_uses_jar_version"] as Set +// Fixup each of the sourceSets +srcDirs.each{ dirName -> + def sourceSet = sourceSets.named(dirName).get() + sourceSet.java { + srcDir { + dirName } } + sourceSet.compileClasspath += sourceSets.main.output + + if (script_lib_dependents.contains(dirName)) { + sourceSet.compileClasspath += sourceSets.scripts_lib.output + } + if (script_jar_dependents.contains(dirName)) { + // Only use jar1 because jar2 conflicts + sourceSet.compileClasspath += sourceSets.scripts_jar1.output + } + + def baseImplementation = project.configurations.maybeCreate(sourceSets.main.implementationConfigurationName) + project.configurations.maybeCreate(sourceSet.implementationConfigurationName).extendsFrom(baseImplementation) } // create and return a jar task for the given source directory