/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 1 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . gradle . plugin . mpp . pm 2 0 Ċ Ċ import Ġorg . gradle . api . artifacts . Configuration Ċ import Ġorg . gradle . api . artifacts . Dependency Ċ import Ġorg . gradle . api . attributes . Usage Ċ import Ġorg . gradle . jvm . tasks . Jar Ċ import Ġorg . jetbrains . kotlin . gradle . dsl . pm 2 0 Extension Ċ import Ġorg . jetbrains . kotlin . gradle . plugin . Kotlin Native Target Configurator Ċ import Ġorg . jetbrains . kotlin . gradle . plugin . get Kotlin Plugin Version Ċ import Ġorg . jetbrains . kotlin . gradle . plugin . mpp . Kotlin Native Target Ċ import Ġorg . jetbrains . kotlin . gradle . plugin . mpp . Kotlin Usage s Ċ import Ġorg . jetbrains . kotlin . gradle . plugin . usage ByName Ċ import Ġorg . jetbrains . kotlin . gradle . targets . metadata . files With Un packed Arch ives Ċ import Ġorg . jetbrains . kotlin . gradle . tasks . register Task Ċ import Ġorg . jetbrains . kotlin . library . K LIB _ FILE _ EXTENSION Ċ import Ġorg . jetbrains . kotlin . project . model . ref ines Closure Ċ import Ġkotlin . reflect . K Class Ċ Ċ open Ġclass ĠKotlin Native Variant Factory < T Ġ: ĠKotlin Native Variant Internal >( ĊĠĠĠ Ġmodule : ĠKotlin Gradle Module , ĊĠĠĠ Ġval Ġvariant Class : ĠK Class < out ĠT > Ċ ) Ġ: ĊĠĠĠ ĠAbstract Kotlin Gradle Variant Factory < T >( module ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġinstantiate Fragment ( name : ĠString ): ĠT Ġ= ĊĠĠĠĠĠĠĠ Ġmodule . project . objects . newInstance ( variant Class . java , Ġmodule , Ġname ) ĊĊĠĠĠ Ġoverride Ġfun Ġset Platform Attributes In Configuration ( fragment : ĠT , Ġconfiguration : ĠConfiguration ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . set Platform Attributes In Configuration ( fragment , Ġconfiguration ) ĊĠĠĠĠĠĠĠ Ġconfiguration . attributes . attribute ( Kotlin Native Target . kon an Target Attribute , Ġfragment . kon an Target . name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate ( name : ĠString ): ĠT Ġ= ĊĠĠĠĠĠĠĠ Ġsuper . create ( name ). also Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure Host Specific Metadata ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure Variant Publishing ( result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfigure Kotlin Compilation ( fragment : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcompilation Data Ġ= Ġfragment . compilation Data ĊĠĠĠĠĠĠĠ ĠLifecycle Tasks Manager ( project ). register Classes Task ( compilation Data ) ĊĠĠĠĠĠĠĠ ĠKotlin Compilation Task Configurator ( project ). create Kotlin Native Compilation Task ( fragment , Ġcompilation Data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfigure Host Specific Metadata ( variant : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhost Specific Configuration Name If Enabled Ġ= Ġvariant . host Specific Metadata Elements Configuration Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġhost Specific Metadata Jar Ġ= Ġproject . register Task < Jar >( variant . dis amb igu ate Name (" host Specific Metadata Jar ")) Ġ{ Ġjar Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjar . archive Classifier . set (" metadata ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjar . archive Append ix . set ( variant . dis amb igu ate Name ("")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . pm 2 0 Extension . metadata Compilation Registry By Module Id . getValue ( variant . containing Module . module Identifier ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with All Ġ{ Ġmetadata Compilation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= Ġmetadata Compilation . fragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( metadata Compilation Ġis ĠKotlin Native Fragment Metadata Compilation Data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjar . from ( project . files ( project . provider Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fragment Ġin Ġvariant . ref ines Closure Ġ&& Ġfragment . is Native Host Specific ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . files With Un packed Arch ives ( metadata Compilation . output . all Outputs , Ġset Of ( K LIB _ FILE _ EXTENSION )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġempty List < Any >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ})) Ġ{ Ġspec Ġ-> Ġspec . into ( fragment . name ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġapi Elements Ġ= Ġproject . configurations . get ByName ( variant . api Elements Configuration Name ) ĊĠĠĠĠĠĠĠ Ġproject . configurations . create ( host Specific Configuration Name If Enabled ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Can Be Resolved Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Can Be Cons umed Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Platform Attributes And Metadata Usage ( variant ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . artifacts . add ( name , Ġhost Specific Metadata Jar ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies . addAll Later ( project . objects . list Property ( Dependency :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset ( project . provider Ġ{ Ġapi Elements . all Dependencies Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġconfigure Variant Publishing ( variant : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ ĠVariant Publishing Configurator . get ( project ). configure Native Variant Publication ( variant ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠConfiguration . set Platform Attributes And Metadata Usage ( variant : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconfigure Api Elements Configuration ( variant , Ġthis ) Ġ// Ġthen Ġoverride Ġthe ĠUsage Ġattribute ĊĠĠĠĠĠĠĠ Ġattributes . attribute ( Usage . USAGE _ ATTRIBUTE , Ġproject . usage ByName ( Kotlin Usage s . K OT LIN _ METADATA )) ĊĠĠĠ Ġ} Ċ }