<lambda>null1 import org.apache.tools.ant.taskdefs.condition.Os
2 import org.gradle.api.file.ConfigurableFileCollection
3 import org.gradle.api.file.DirectoryProperty
4 import org.gradle.api.tasks.AbstractExecTask
5 import org.gradle.api.tasks.Input
6 import org.gradle.api.tasks.InputFiles
7 import org.gradle.api.tasks.OutputDirectory
8 import javax.inject.Inject
9 
10 abstract class GenerateJavaAidlDependencies
11 @Inject constructor() : AbstractExecTask<GenerateJavaAidlDependencies>(GenerateJavaAidlDependencies::class.java) {
12 
13     @get:OutputDirectory
14     abstract val outputFolder: DirectoryProperty
15 
16     @get:Input
17     abstract var androidBuildTop: String
18 
19     @get:InputFiles
20     abstract val aidlSrcDirs: ConfigurableFileCollection
21 
22     @get:InputFiles
23     abstract val aidlIncludeDirs: ConfigurableFileCollection
24 
25     override fun exec() {
26         val platform = if (Os.isFamily(Os.FAMILY_MAC)) "darwin" else "linux"
27         commandLine("$androidBuildTop/prebuilts/build-tools/${platform}-x86/bin/aidl")
28         args("--lang=java", "--stability=vintf", "-v", "1", "--hash=1", "--structured")
29 
30         aidlIncludeDirs.files.forEach { includeDir ->
31             args("-I", includeDir)
32         }
33         args("--out", outputFolder.get())
34 
35         // Recursively list all the aidl files in the src directories
36         aidlSrcDirs.files.forEach { srcDir ->
37             args(project.fileTree(srcDir) {
38                 include("**/*.aidl")
39             }.files)
40         }
41 
42         CommandLineUtils.debugPrintCommandLineArgs(this)
43         super.exec()
44     }
45 }
46