/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 8 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . gradle . plugin . experimental . source sets Ċ Ċ import Ġgro ovy . lang . Closure Ċ import Ġorg . gradle . api . Action Ċ import Ġorg . gradle . api . file . Configurable File Collection Ċ import Ġorg . gradle . api . file . File Collection Ċ import Ġorg . gradle . api . file . Source Directory Set Ċ import Ġorg . gradle . api . internal . file . Source Directory Set Factory Ċ import Ġorg . gradle . api . internal . project . Project Internal Ċ import Ġorg . gradle . util . Configure Util . configure Ċ import Ġorg . jetbrains . kotlin . gradle . plugin . experimental . Kotlin Native Dependencies Ċ import Ġorg . jetbrains . kotlin . gradle . plugin . experimental . internal . Abstract Kotlin Native Component Ċ import Ġorg . jetbrains . kotlin . kon an . target . Host Manager Ċ import Ġorg . jetbrains . kotlin . kon an . target . Kon an Target Ċ import Ġjavax . inject . Inject Ċ Ċ open Ġclass ĠKotlin Native Source Set Impl Ġ@ Inject Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġsource Directory Set Factory : ĠSource Directory Set Factory , ĊĠĠĠĠĠĠĠ Ġval Ġproject : ĠProject Internal Ċ ) Ġ: ĠKotlin Native Source Set Ġ{ ĊĊĠĠĠ Ġoverride Ġlateinit Ġvar Ġcomponent : ĠAbstract Kotlin Native Component ĊĊĠĠĠ Ġoverride Ġval Ġkotlin : ĠSource Directory Set ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġnative Sources ĊĊĠĠĠ Ġinternal Ġval Ġcommon Sources : ĠConfigur able File Collection Ġ= Ġproject . files () ĊĊĠĠĠ Ġprivate Ġval Ġnative Sources : ĠSource Directory Set Ġ= Ġnew Source Directory Set (" kotlin ") ĊĊĠĠĠ Ġprivate Ġval Ġplatform Sources Ġ= Ġmutable Map Of < Kon an Target , ĠSource Directory Set >() ĊĊĠĠĠ Ġprivate Ġfun Ġnew Source Directory Set ( name : ĠString ) Ġ= Ġsource Directory Set Factory . create ( name ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġfilter . include (" ** /*. kt ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Platform Sources ( target : ĠKon an Target ) Ġ= Ġplatform Sources . get Or Put ( target ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnew Source Directory Set ( target . name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Common Multi platform Sources (): ĠFile Collection Ġ= Ġcommon Sources ĊĠĠĠ Ġoverride Ġfun Ġget Common Native Sources (): ĠSource Directory Set Ġ= Ġnative Sources ĊĊĠĠĠ Ġoverride Ġfun ĠgetAll Sources ( target : ĠKon an Target ): ĠFile Collection Ġ= ĊĠĠĠĠĠĠĠ Ġcommon Sources Ġ+ Ġnative Sources Ġ+ Ġget Platform Sources ( target ) ĊĊĠĠĠ Ġoverride Ġfun ĠgetName (): ĠString Ġ= Ġname ĊĊĠĠĠ Ġ// Ġregion ĠDSL ĊĊĠĠĠ Ġ// ĠCommon Ġsource Ġdirectory Ġset Ġconfiguration . ĊĠĠĠ Ġoverride Ġfun Ġkotlin ( configure Closure : ĠClosure <* >) Ġ= Ġapply Ġ{ Ġconfigure ( configure Closure , Ġnative Sources ) Ġ} ĊĠĠĠ Ġoverride Ġfun Ġkotlin ( configure Action : ĠAction < in ĠSource Directory Set >) Ġ= Ġapply Ġ{ Ġconfigure Action . execute ( native Sources ) Ġ} ĊĠĠĠ Ġoverride Ġfun Ġkotlin ( configure Lambda : ĠSource Directory Set . () Ġ-> ĠUnit ) Ġ= Ġapply Ġ{ Ġnative Sources . configure Lambda () Ġ} ĊĊĠĠĠ Ġ// ĠConfiguration Ġof Ġthe Ġcorresponding Ġsoftware Ġcomponent . ĊĠĠĠ Ġoverride Ġfun Ġcomponent ( configure Closure : ĠClosure <* >) Ġ= Ġapply Ġ{ Ġconfigure ( configure Closure , Ġcomponent ) Ġ} ĊĠĠĠ Ġoverride Ġfun Ġcomponent ( configure Action : ĠAction < in ĠAbstract Kotlin Native Component >) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Ġ{ Ġconfigure Action . execute ( component ) Ġ} ĊĠĠĠ Ġoverride Ġfun Ġcomponent ( configure Lambda : ĠAbstract Kotlin Native Component . () Ġ-> ĠUnit ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Ġ{ Ġcomponent . configure Lambda () Ġ} ĊĊĠĠĠ Ġ// ĠAdding Ġnew Ġtargets Ġand Ġconfiguration Ġof Ġtarget - specific Ġsource Ġdirectory Ġsets . ĊĠĠĠ Ġoverride Ġfun Ġtarget ( target : ĠString ): ĠSource Directory Set Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkon an Target Ġ= ĠHost Manager (). target ByName ( target ) ĊĠĠĠĠĠĠĠ Ġcomponent . kon an Targets . add ( kon an Target ) ĊĠĠĠĠĠĠĠ Ġreturn Ġget Platform Sources ( kon an Target ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtarget ( targets : ĠIterable < String >) Ġ= Ġtarget ( targets ) Ġ{} ĊĊĠĠĠ Ġoverride Ġfun Ġtarget ( targets : ĠIterable < String >, Ġconfigure Lambda : ĠSource Directory Set . () Ġ-> ĠUnit ) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġtargets . forEach Ġ{ Ġtarget ( it ). configure Lambda () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtarget ( targets : ĠIterable < String >, Ġconfigure Closure : ĠClosure <* >) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget ( targets ) Ġ{ Ġconfigure ( configure Closure , Ġthis ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtarget ( targets : ĠIterable < String >, Ġconfigure Action : ĠAction < in ĠSource Directory Set >) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget ( targets ) Ġ{ Ġconfigure Action . execute ( this ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtarget ( var arg Ġtargets : ĠString ) Ġ= Ġtarget ( targets . toList ()) ĊĊĠĠĠ Ġoverride Ġfun Ġtarget ( var arg Ġtargets : ĠString , Ġconfigure Lambda : ĠSource Directory Set . () Ġ-> ĠUnit ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget ( targets . toList (), Ġconfigure Lambda ) ĊĊĠĠĠ Ġoverride Ġfun Ġtarget ( var arg Ġtargets : ĠString , Ġconfigure Closure : ĠClosure <* >) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget ( targets . toList (), Ġconfigure Closure ) ĊĊĠĠĠ Ġoverride Ġfun Ġtarget ( var arg Ġtargets : ĠString , Ġconfigure Action : ĠAction < in ĠSource Directory Set >) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget ( targets . toList (), Ġconfigure Action ) ĊĊĠĠĠ Ġoverride Ġval Ġdependencies : ĠKotlin Native Dependencies ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġcomponent . dependencies ĊĊĠĠĠ Ġoverride Ġfun Ġdependencies ( action : ĠKotlin Native Dependencies . () Ġ-> ĠUnit ) Ġ= Ġcomponent . dependencies ( action ) ĊĠĠĠ Ġoverride Ġfun Ġdependencies ( action : ĠClosure < Unit >) Ġ= Ġcomponent . dependencies ( action ) ĊĠĠĠ Ġoverride Ġfun Ġdependencies ( action : ĠAction < Kotlin Native Dependencies >) Ġ= Ġcomponent . dependencies ( action ) ĊĊĠĠĠ Ġ// Ġend region Ċ }