/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 8 ĠJetBrains Ġs . r . o . Ġ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 Ċ Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . artifacts .* Ċ import Ġorg . gradle . api . attributes . Attribute Container Ċ import Ġorg . gradle . api . attributes . Usage Ċ import Ġorg . gradle . api . capabilities . Capability Ċ import Ġorg . gradle . api . component . Component With Coordinates Ċ import Ġorg . gradle . api . component . Component With Variants Ċ import Ġorg . gradle . api . internal . component . Software Component Internal Ċ import Ġorg . gradle . api . internal . component . Usage Context Ċ import Ġorg . gradle . api . publish . maven . Maven Publication Ċ import Ġorg . jetbrains . kotlin . gradle . plugin .* Ċ Ċ open Ġclass ĠKotlin Software Component ( ĊĠĠĠ Ġprivate Ġval Ġname : ĠString , ĊĠĠĠ Ġprotected Ġval Ġkotlin Targets : ĠIterable < Kotlin Target > Ċ ) Ġ: ĠSoftware Component Internal , ĠComponent With Variants Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Usage s (): ĠSet < Usage Context > Ġ= Ġempty Set () ĊĊĠĠĠ Ġoverride Ġfun Ġget Variants (): ĠSet < Kotlin Target Component > Ġ= ĊĠĠĠĠĠĠĠ Ġkotlin Targets . flatMap Ġ{ Ġit . components Ġ}. toSet () ĊĊĠĠĠ Ġoverride Ġfun ĠgetName (): ĠString Ġ= Ġname ĊĊĠĠĠ Ġ// ĠThis Ġproperty Ġis Ġdeclared Ġin Ġthe Ġparent Ġtype Ġto Ġallow Ġthe Ġusage s Ġto Ġreference Ġit Ġwithout Ġforcing Ġthe Ġsub types Ġto Ġload , ĊĠĠĠ Ġ// Ġwhich Ġis Ġneeded Ġfor Ġcompatibility Ġwith Ġolder ĠGradle Ġversions ĊĠĠĠ Ġvar Ġpublication Delegate : ĠMaven Publication ? Ġ= Ġnull Ċ } Ċ Ċ class ĠKotlin Software Component With Coordinates And Publication ( name : ĠString , Ġkotlin Targets : ĠIterable < Kotlin Target >) Ġ: ĊĠĠĠ ĠKotlin Software Component ( name , Ġkotlin Targets ), ĠComponent With Coordinates Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Coordinates (): ĠModule Version Identifier Ġ= Ġget Coordinates From Publication Delegate And Project ( ĊĠĠĠĠĠĠĠ Ġpublication Delegate , Ġkotlin Targets . first (). project , Ġnull ĊĠĠĠ Ġ) Ċ } Ċ Ċ // ĠAt Ġthe Ġmoment Ġall ĠK N Ġartifacts Ġhave ĠJAVA _ API Ġusage . Ċ // ĠTODO : ĠReplace Ġit Ġwith Ġa Ġspecific Ġusage Ċ object ĠNative Usage Ġ{ ĊĠĠĠ Ġconst Ġval ĠK OT LIN _ K LIB Ġ= Ġ" kotlin - k lib " Ċ } Ċ Ċ interface ĠKotlin Usage Context Ġ: ĠUsage Context Ġ{ ĊĠĠĠ Ġval Ġcompilation : ĠKotlin Compilation < *> ĊĠĠĠ Ġval Ġdependency Configuration Name : ĠString Ċ } Ċ Ċ class ĠDefault Kotlin Usage Context ( ĊĠĠĠ Ġoverride Ġval Ġcompilation : ĠKotlin Compilation <* >, ĊĠĠĠ Ġprivate Ġval Ġusage : ĠUsage , ĊĠĠĠ Ġoverride Ġval Ġdependency Configuration Name : ĠString , ĊĠĠĠ Ġprivate Ġval Ġoverride Configuration Artifacts : ĠSet < Publish Artifact >? Ġ= Ġnull Ċ ) Ġ: ĠKotlin Usage Context Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġkotlin Target : ĠKotlin Target Ġget () Ġ= Ġcompilation . target ĊĠĠĠ Ġprivate Ġval Ġproject : ĠProject Ġget () Ġ= Ġkotlin Target . project ĊĊĠĠĠ Ġoverride Ġfun Ġget Usage (): ĠUsage Ġ= Ġusage ĊĊĠĠĠ Ġoverride Ġfun ĠgetName (): ĠString Ġ= Ġkotlin Target . target Name Ġ+ Ġwhen Ġ( dependency Configuration Name ) Ġ{ ĊĠĠĠĠĠĠĠ Ġkotlin Target . api Elements Configuration Name Ġ-> Ġ"- api " ĊĠĠĠĠĠĠĠ Ġkotlin Target . runtime Elements Configuration Name Ġ-> Ġ"- runtime " ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ"- $ dependency Configuration Name " Ġ// Ġfor ĠAndroid Ġvariants ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġconfiguration : ĠConfiguration ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġproject . configurations . get ByName ( dependency Configuration Name ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Dependencies (): ĠMutable Set < out ĠModule Dependency > Ġ= ĊĠĠĠĠĠĠĠ Ġconfiguration . incoming . dependencies . with Type ( Module Dependency :: class . java ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Dependency Constraints (): ĠMutable Set < out ĠDependency Constraint > Ġ= ĊĠĠĠĠĠĠĠ Ġconfiguration . incoming . dependency Constraints ĊĊĠĠĠ Ġoverride Ġfun Ġget Artifacts (): ĠSet < Publish Artifact > Ġ= ĊĠĠĠĠĠĠĠ Ġoverride Configuration Artifacts Ġ?: ĊĠĠĠĠĠĠĠ Ġ// ĠTODO ĠGradle ĠJava Ġplugin Ġdoes Ġthat Ġin Ġa Ġdifferent Ġway ; Ġcheck Ġwhether Ġwe Ġcan Ġimprove Ġthis ĊĠĠĠĠĠĠĠ Ġconfiguration . artifacts ĊĊĠĠĠ Ġoverride Ġfun Ġget Attributes (): ĠAttribute Container Ġ= ĊĠĠĠĠĠĠĠ ĠH ierarchy Attribute Container ( configuration . outgoing . attributes ) Ġ{ Ġit Ġ!= ĠProject Local Configurations . ATTRIBUTE Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Capabilities (): ĠSet < Capability > Ġ= Ġempty Set () ĊĊĠĠĠ Ġoverride Ġfun Ġget Global Exclude s (): ĠSet < Exclude Rule > Ġ= Ġempty Set () Ċ } Ċ Ċ internal Ġfun Ġrewrite Dependencies To Actual Module Dependencies ( ĊĠĠĠ Ġusage Context : ĠKotlin Usage Context , ĊĠĠĠ Ġmodule Dependencies : ĠSet < Module Dependency > Ċ ): ĠMap < Module Dependency , ĠModule Dependency > Ġ{ ĊĠĠĠ Ġval Ġcompilation Ġ= Ġusage Context . compilation ĊĠĠĠ Ġval Ġproject Ġ= Ġcompilation . target . project ĊĊĠĠĠ Ġval Ġtarget Dependencies Configuration Ġ= Ġproject . configurations . get ByName ( ĊĠĠĠĠĠĠĠ Ġwhen Ġ( compilation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠKotlin Jvm Android Compilation Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO Ġhandle ĠAndroid Ġconfiguration Ġnames Ġin Ġa Ġgeneral Ġway Ġonce Ġwe Ġdrop ĠA GP Ġ< Ġ 3 . 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvariant Name Ġ= Ġcompilation . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( usage Context . usage . name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUsage . JAVA _ API Ġ-> Ġvariant Name Ġ+ Ġ" Compile Classpath " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUsage . JAVA _ RUNTIME _ J ARS Ġ-> Ġvariant Name Ġ+ Ġ" Runtime Classpath " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Unexpected ĠUsage Ġfor Ġusage Ġcontext : Ġ${ usage Context . usage }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġwhen Ġ( usage Context . usage . name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUsage . JAVA _ API Ġ-> Ġcompilation . compile Dependency Configuration Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUsage . JAVA _ RUNTIME _ J ARS Ġ-> Ġ( compilation Ġas ĠKotlin Compilation To Runnable Files ). runtime Dependency Configuration Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Unexpected ĠUsage Ġfor Ġusage Ġcontext : Ġ${ usage Context . usage }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġresolved Dependencies Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġdon 't Ġresolve Ġif Ġno Ġproject Ġdependencies Ġon ĠM PP Ġprojects Ġare Ġfound ĊĠĠĠĠĠĠĠ Ġtarget Dependencies Configuration . resolved Configuration . len ient Configuration . all Module Dependencies . associate By Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTrip le ( it . module Group , Ġit . moduleName , Ġit . module Version ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġresolved Modules By Root Module Coordinates Ġ= Ġtarget Dependencies Configuration ĊĠĠĠĠĠĠĠ Ġ. all Dependencies . with Type ( Module Dependency :: class . java ) ĊĠĠĠĠĠĠĠ Ġ. associate Ġ{ Ġdependency Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( dependency ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠProject Dependency Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdependency Project Ġ= Ġdependency . dependency Project ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdependency Project Kotlin Extension Ġ= Ġdependency Project . multi platform Extension ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn @ associate Ġdependency Ġto Ġdependency ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresolved Ġ= Ġresolved Dependencies [ Triple ( dependency . group , Ġdependency . name , Ġdependency . version )] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn @ associate Ġdependency Ġto Ġdependency ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresolved To Configuration Ġ= Ġresolved . configuration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdependency Target Component : ĠKotlin Target Component Ġ= Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdependency Project Kotlin Extension . targets . forEach Ġ{ Ġtarget Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . components . forEach Ġ{ Ġcomponent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( component . find Usage Context ( resolved To Configuration ) Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ run Ġcomponent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFailed Ġto Ġfind Ġa Ġmatching Ġcomponent : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ associate Ġdependency Ġto Ġdependency ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Module Publication Ġ= Ġ( dependency Target Component Ġas ? ĠKotlin Target Component With Publication )?. publication Delegate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot Module Publication Ġ= Ġdependency Project Kotlin Extension . root Software Component . publication Delegate ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDuring ĠGradle ĠPO M Ġgeneration , Ġa Ġproject Ġdependency Ġis Ġalready Ġwritten Ġas Ġthe Ġroot Ġmodule 's Ġcoordinates . ĠIn Ġthe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdependencies Ġmapping , Ġmap Ġthe Ġroot Ġmodule Ġto Ġthe Ġtarget 's Ġmodule : ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot Module Ġ= Ġproject . dependencies . module ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot Module Publication ?. groupId Ġ?: Ġdependency . group , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot Module Publication ?. artifactId Ġ?: Ġdependency Project . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot Module Publication ?. version Ġ?: Ġdependency . version ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). join ToString (": ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġas ĠModule Dependency ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot Module Ġto Ġproject . dependencies . module ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Module Publication ?. groupId Ġ?: Ġdependency . group , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Module Publication ?. artifactId Ġ?: Ġdependency Target Component . default Artifact Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Module Publication ?. version Ġ?: Ġdependency . version ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). join ToString (": ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġas ĠModule Dependency ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresolved Dependency Ġ= Ġresolved Dependencies [ Triple ( dependency . group , Ġdependency . name , Ġdependency . version )] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn @ associate Ġdependency Ġto Ġdependency ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( resolved Dependency . module Artifacts . isEmpty () Ġ&& Ġresolved Dependency . children . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġis Ġa Ġdependency Ġon Ġa Ġmodule Ġthat Ġresolved Ġto Ġanother Ġmodule ; Ġmap Ġthe Ġoriginal Ġdependency Ġto Ġthe Ġtarget Ġmodule ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Module Ġ= Ġresolved Dependency . children . single () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdependency Ġto Ġproject . dependencies . module ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Module . module Group , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Module . moduleName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Module . module Version ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). join ToString (": ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġas ĠModule Dependency ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdependency Ġto Ġdependency ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. map Keys Ġ{ Ġ( key , Ġ_) Ġ-> ĠTrip le ( key . group , Ġkey . name , Ġkey . version ) Ġ} ĊĊĠĠĠ Ġreturn Ġmodule Dependencies . associate Ġ{ Ġdependency Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= ĠTrip le ( dependency . group , Ġdependency . name , Ġdependency . version ) ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġresolved Modules By Root Module Coordinates [ key ] Ġ?: Ġdependency ĊĠĠĠĠĠĠĠ Ġdependency Ġto Ġvalue ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġfun ĠKotlin Target Component . find Usage Context ( configuration Name : ĠString ): ĠUsage Context ? Ġ{ ĊĠĠĠ Ġval Ġusage Contexts Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠKotlin Variant With Metadata Dependency Ġ-> Ġoriginal Usage s ĊĠĠĠĠĠĠĠ Ġis ĠSoftware Component Internal Ġ-> Ġusage s ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġempty Set () ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġusage Contexts . find Ġ{ Ġusage Context Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( usage Context Ġ! is ĠKotlin Usage Context ) Ġreturn @ find Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġcompilation Ġ= Ġusage Context . compilation ĊĠĠĠĠĠĠĠ Ġconfiguration Name Ġin Ġcompilation . related Configuration Names Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration Name Ġ== Ġcompilation . target . api Elements Configuration Name Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration Name Ġ== Ġcompilation . target . runtime Elements Configuration Name Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration Name Ġ== Ġcompilation . target . default Configuration Name ĊĠĠĠ Ġ} Ċ }