@@ -4,10 +4,7 @@ import dev.adamko.kotlin.binary_compatibility_validator.internal.*
44import dev.adamko.kotlin.binary_compatibility_validator.targets.BCVJvmTarget
55import dev.adamko.kotlin.binary_compatibility_validator.targets.BCVKLibTarget
66import dev.adamko.kotlin.binary_compatibility_validator.targets.BCVTarget
7- import dev.adamko.kotlin.binary_compatibility_validator.workers.JvmSignaturesWorker
8- import dev.adamko.kotlin.binary_compatibility_validator.workers.KLibInferSignaturesWorker
9- import dev.adamko.kotlin.binary_compatibility_validator.workers.KLibMergeWorker
10- import dev.adamko.kotlin.binary_compatibility_validator.workers.KLibSignaturesWorker
7+ import dev.adamko.kotlin.binary_compatibility_validator.workers.*
118import java.io.File
129import javax.inject.Inject
1310import org.gradle.api.NamedDomainObjectContainer
@@ -184,6 +181,23 @@ constructor(
184181
185182 val (supportedKLibTargets, unsupportedKLibTargets) =
186183 klibTargets.partition { it.supportedByCurrentHost.get() }
184+
185+ generateSupportedKLibTargets(workQueue, supportedKLibTargets)
186+ generateUnsupportedKLibTargets(workQueue, unsupportedKLibTargets)
187+
188+ workQueue.await()
189+
190+ val allTargetDumpFiles =
191+ supportedTargetsDir.walk().filter { it.isFile }.toSet() union
192+ unsupportedTargetsDir.walk().filter { it.isFile }.toSet()
193+
194+ mergeDumpFiles(workQueue, allTargetDumpFiles, outputApiBuildDir.asFile)
195+ }
196+
197+ private fun generateSupportedKLibTargets (
198+ workQueue : WorkQueue ,
199+ supportedKLibTargets : List <BCVKLibTarget >
200+ ) {
187201 logger.lifecycle(" [$path ] generating ${supportedKLibTargets.size} supported KLib targets : ${supportedKLibTargets.joinToString { it.name }} " )
188202
189203 val supportedKLibGenDuration = measureTime {
@@ -195,8 +209,14 @@ constructor(
195209 }
196210 workQueue.await()
197211 }
212+
198213 logger.lifecycle(" [$path ] finished generating supported KLib targets in $supportedKLibGenDuration " )
214+ }
199215
216+ private fun generateUnsupportedKLibTargets (
217+ workQueue : WorkQueue ,
218+ unsupportedKLibTargets : List <BCVKLibTarget >
219+ ) {
200220 logger.lifecycle(" [$path ] generating ${unsupportedKLibTargets.size} unsupported KLib targets : ${unsupportedKLibTargets.joinToString { it.name }} " )
201221
202222 val unsupportedKLibGenDuration = measureTime {
@@ -210,30 +230,32 @@ constructor(
210230 )
211231 }
212232 }
213- logger.lifecycle(" [$path ] finished generating unsupported KLib targets in $unsupportedKLibGenDuration " )
214233
215- workQueue.await()
234+ logger.lifecycle(" [$path ] finished generating unsupported KLib targets in $unsupportedKLibGenDuration " )
235+ }
216236
217- val allTargetDumpFiles =
218- supportedTargetsDir.walk().filter { it.isFile }.toSet() union
219- unsupportedTargetsDir.walk().filter { it.isFile }.toSet()
220237
238+ private fun mergeDumpFiles (
239+ workQueue : WorkQueue ,
240+ allTargetDumpFiles : Set <File >,
241+ outputApiBuildDir : File
242+ ) {
221243 logger.lifecycle(" [$path ] merging ${allTargetDumpFiles.size} dump files : ${allTargetDumpFiles.joinToString { it.name }} " )
222244
223245 workQueue.merge(
224246 projectName.get(),
225247 targetDumpFiles = allTargetDumpFiles,
226- outputDir = outputApiBuildDir.asFile ,
248+ outputDir = outputApiBuildDir,
227249 )
228250 workQueue.await()
229251
230- logger.lifecycle(
231- " [$path ] merged ${allTargetDumpFiles.size} dump files : ${
232- outputApiBuildDir.asFile.walk().filter { it.isFile }.toList()
233- } "
234- )
252+ if (logger.isLifecycleEnabled) {
253+ val fileNames = outputApiBuildDir.walk().filter { it.isFile }.toList()
254+ logger.lifecycle(" [$path ] merged ${allTargetDumpFiles.size} dump files : $fileNames " )
255+ }
235256 }
236257
258+
237259 @OptIn(BCVExperimentalApi ::class )
238260 private fun WorkQueue.submit (
239261 target : BCVKLibTarget ,
@@ -300,5 +322,24 @@ constructor(
300322 this @worker.targetDumpFiles.from(targetDumpFiles)
301323 }
302324 }
325+
326+ @OptIn(BCVExperimentalApi ::class )
327+ private fun WorkQueue.extract (
328+ target : BCVKLibTarget ,
329+ targetDumpFiles : Set <File >,
330+ outputDir : File ,
331+ ) {
332+ val task = this @BCVApiGenerateTask
333+
334+ @OptIn(BCVInternalApi ::class )
335+ submit(KLibExtractWorker ::class ) worker@{
336+ this @worker.taskPath.set(task.path)
337+ this @worker.strictValidation.set(target.strictValidation)
338+
339+ // this@worker.inputAbiFile.set()
340+ // this@worker.outputAbiFile.set()
341+ // this@worker.supportedTargets.set()
342+ }
343+ }
303344 // endregion
304345}
0 commit comments