/* Ċ Ġ* Ġ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 Ċ Ċ import Ġorg . gradle . api . attributes . Attribute Ċ import Ġorg . gradle . api . component . Build able Component Ċ import Ġorg . gradle . api . component . Publish able Component Ċ import Ġorg . gradle . api . file . File Collection Ċ import Ġorg . gradle . api . provider . Provider Ċ import Ġorg . gradle . language . Component With Dependencies Ċ import Ġorg . gradle . language . Component With Outputs Ċ import Ġorg . gradle . language . native platform . internal . Configurable Component With Link Usage Ċ import Ġorg . gradle . language . native platform . internal . Configurable Component With Runtime Usage Ċ import Ġorg . gradle . native platform . test . Test Component Ċ import Ġorg . jetbrains . kotlin . gradle . plugin . experimental . internal . Kotlin Native Platform Ċ import Ġorg . jetbrains . kotlin . gradle . plugin . experimental . tasks . Kotlin Native Compile Ċ import Ġorg . jetbrains . kotlin . kon an . target . Compiler Output Kind Ċ import Ġorg . jetbrains . kotlin . kon an . target . Kon an Target Ċ Ċ // ĠTODO : Ġimplement ĠComponent With Object Files Ġwhen Ġwe Ġbuild Ġk libs Ġas Ġobjects Ċ interface ĠKotlin Native Binary Ġ: ĠComponent With Dependencies , ĠBuild able Component , ĠComponent With Outputs Ġ{ ĊĊĠĠĠ Ġ/** ĠA Ġcomponent Ġthis Ġbinary Ġbelongs Ġto . Ġ*/ ĊĠĠĠ Ġval Ġcomponent : ĠKotlin Native Component ĊĊĠĠĠ Ġ/** ĠReturns Ġthe Ġsource Ġfiles Ġof Ġthis Ġbinary . Ġ*/ ĊĠĠĠ Ġval Ġsources : ĠFile Collection ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠKon an Ġtarget Ġthe Ġlibrary Ġis Ġbuilt Ġfor ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġkon an Target : ĠKon an Target ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGradle ĠNative Platform Ġobject Ġthe Ġbinary Ġis Ġbuilt Ġfor . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Target Platform (): ĠKotlin Native Platform ĊĊĠĠĠ Ġ/** ĠCompile Ġtask Ġfor Ġthis Ġlibrary Ġ*/ ĊĠĠĠ Ġval Ġcompile Task : ĠProvider < Kotlin Native Compile > ĊĊĠĠĠ Ġ// ĠTODO : ĠSupport Ġnative Ġlink Ġand Ġruntime Ġlibraries Ġhere . ĊĠĠĠ Ġ// ĠLooks Ġlike Ġwe Ġneed Ġat Ġleast Ġ 3 Ġfile Ġcollections Ġhere : Ġfor Ġk libs , Ġfor Ġlink time Ġnative Ġlibraries Ġand Ġfor Ġruntime Ġnative Ġlibraries . ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġlink Ġlibraries Ġ( k libs Ġonly !) Ġused Ġto Ġlink Ġthis Ġbinary . ĊĠĠĠĠ Ġ* ĠIncludes Ġthe Ġlink Ġlibraries Ġof Ġthe Ġcomponent 's Ġdependencies . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġk libs : ĠFile Collection ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBinary Ġkind Ġin Ġterms Ġof Ġthe ĠK N Ġcompiler Ġ( program , Ġlibrary , Ġdynamic Ġetc ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġkind : ĠCompiler Output Kind ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdditional Ġcommand Ġline Ġoptions Ġpassed Ġto Ġthe Ġcompiler Ġwhen Ġthis Ġbinary Ġis Ġcompiled . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġadditional Compiler Options : ĠCollection < String > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdditional Ġoptions Ġpassed Ġto Ġa Ġlinker Ġwhen Ġthis Ġbinary Ġis Ġbuilt . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġlinker Opts : ĠList < String > ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠK ON AN _ TARGET _ ATTRIBUTE Ġ= ĠAttribute . of (" org . jetbrains . kotlin . native . target ", ĠString :: class . java ) ĊĠĠĠĠĠĠĠ Ġval ĠO LD _ K ON AN _ TARGET _ ATTRIBUTE Ġ= ĠAttribute . of (" org . gradle . native . kotlin . platform ", Ġ ĠString :: class . java ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠRepresents ĠKotlin / Native Ġexecutable . Ċ Ġ*/ Ċ // ĠTODO : ĠConsider Ġimplementing ĠComponent With Executable Ġand ĠComponent With Installation . Ċ interface ĠKotlin Native Executable Ġ: ĠKotlin Native Binary , ĊĠĠĠĠĠĠĠ ĠPublish able Component , ĊĠĠĠĠĠĠĠ ĠConfigur able Component With Runtime Usage Ċ Ċ /** Ċ Ġ* Ġ ĠA Ġcomponent Ġrepresenting Ġa Ġk library . Ċ Ġ*/ Ċ // ĠTODO : ĠConsider Ġimplementing ĠComponent With Link File . Ċ interface ĠKotlin Native Library Ġ: ĠKotlin Native Binary , ĊĠĠĠĠĠĠĠ ĠPublish able Component , ĊĠĠĠĠĠĠĠ ĠConfigur able Component With Link Usage Ċ Ċ /** Ċ Ġ* ĠRepresents Ġan ĠObjective ĠC Ġframework Ġcompiled Ġfrom ĠKotlin / Native Ġsources . Ċ Ġ*/ Ċ interface ĠKotlin Native Framework Ġ: ĠKotlin Native Binary Ċ Ċ /** Ċ Ġ* ĠA Ġshared Ġlibrary Ġcompiled Ġfrom ĠKotlin / Native Ġsources . Ċ Ġ*/ Ċ interface ĠKotlin Native Dynamic Ġ: ĠKotlin Native Binary Ċ Ċ /** Ċ Ġ* ĠA Ġstatic Ġlibrary Ġcompiled Ġfrom ĠKotlin / Native Ġsources . Ċ Ġ*/ Ċ interface ĠKotlin Native Static Ġ: ĠKotlin Native Binary Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġtest Ġexecutable . Ċ Ġ*/ Ċ // ĠTODO : ĠConsider Ġimplementing ĠComponent With Executable Ġand ĠComponent With Installation . Ċ interface ĠKotlin Native Test Executable Ġ: ĠKotlin Native Binary , ĠTest Component