He says make it an extension property.

This commit is contained in:
Alexander Gorshenev
2017-12-15 20:15:05 +03:00
committed by alexander-gorshenev
parent dda43dd4a1
commit eae130e246
19 changed files with 32 additions and 25 deletions
@@ -19,7 +19,7 @@ package org.jetbrains.kotlin.native.interop.tool
import org.jetbrains.kotlin.konan.file.*
import org.jetbrains.kotlin.konan.properties.*
import org.jetbrains.kotlin.konan.target.*
import org.jetbrains.kotlin.konan.util.DependencyProcessor
import org.jetbrains.kotlin.konan.util.*
import kotlin.reflect.KFunction
class ToolConfig(userProvidedTargetName: String?, userProvidedKonanProperties: String?, runnerProvidedKonanHome: String) {
@@ -31,7 +31,7 @@ import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.konan.file.File
import org.jetbrains.kotlin.konan.target.*
import org.jetbrains.kotlin.konan.util.DependencyProcessor
import org.jetbrains.kotlin.konan.util.*
import org.jetbrains.kotlin.storage.LockBasedStorageManager
import org.jetbrains.kotlin.storage.StorageManager
@@ -17,13 +17,13 @@
package org.jetbrains.kotlin.backend.konan
import org.jetbrains.kotlin.backend.konan.util.*
import org.jetbrains.kotlin.konan.util.VisibleNamed
import org.jetbrains.kotlin.konan.util.*
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
enum class KonanPhase(val description: String,
vararg prerequisite: KonanPhase,
var enabled: Boolean = true,
var verbose: Boolean = false) : VisibleNamed {
var verbose: Boolean = false) {
/* */ FRONTEND("Frontend builds AST"),
/* */ PSI_TO_IR("Psi to IR conversion"),
/* */ SERIALIZER("Serialize descriptor tree and inline IR bodies"),
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.backend.konan.library
import org.jetbrains.kotlin.konan.target.KonanTarget
import org.jetbrains.kotlin.konan.file.File
import org.jetbrains.kotlin.konan.util.visibleName
// This scheme describes the Konan Library (klib) layout.
interface KonanLibraryLayout {
+3 -2
View File
@@ -17,6 +17,7 @@ import groovy.io.FileType
import org.jetbrains.kotlin.konan.target.*
import org.jetbrains.kotlin.konan.properties.*
import org.jetbrains.kotlin.konan.util.*
import static org.jetbrains.kotlin.konan.util.VisibleNamedKt.*
defaultTasks 'clean', 'dist'
@@ -65,7 +66,7 @@ allprojects {
void setupHostAndTarget() {
ext.hostName = TargetManager.hostName
ext.targetList = TargetManager.enabled*.visibleName as List
ext.targetList = TargetManager.enabled.collect { getVisibleName(it) } as List
}
void setupClang(Project project) {
@@ -337,7 +338,7 @@ private ArrayList<DefFile> targetDefFiles(String target) {
}
private String targetToPlatform(String target) {
new TargetManager(target).target.family.visibleName
getVisibleName(new TargetManager(target).target.family)
}
private String targetToOs(String target) {
@@ -22,6 +22,7 @@ import org.gradle.api.tasks.TaskAction
import org.gradle.process.ExecResult
import org.jetbrains.kotlin.konan.target.*
import org.jetbrains.kotlin.konan.properties.*
import static org.jetbrains.kotlin.konan.util.VisibleNamedKt.*
import java.util.regex.Pattern
@@ -109,7 +110,7 @@ abstract class KonanTest extends JavaExec {
*moreArgs,
*project.globalTestArgs]
if (project.testTarget) {
args "-target", target.visibleName
args "-target", getVisibleName(target)
}
if (enableKonanAssertions) {
args "-ea"
@@ -447,7 +448,7 @@ class RunDriverKonanTest extends KonanTest {
*moreArgs,
*project.globalTestArgs]
if (project.testTarget) {
args "-target", target.visibleName
args "-target", getVisibleName(target)
}
if (enableKonanAssertions) {
args "-ea"
@@ -469,7 +470,7 @@ class RunInteropKonanTest extends KonanTest {
void setInterop(String value) {
this.interop = value
this.interopConf = project.kotlinNativeInterop[value]
this.interopConf.target = target.visibleName
this.interopConf.target = getVisibleName(target)
this.dependsOn(this.interopConf.genTask)
}
@@ -29,6 +29,8 @@ import org.gradle.api.tasks.SourceSet
import org.gradle.api.tasks.TaskDependency
import org.gradle.internal.reflect.Instantiator
import org.jetbrains.kotlin.konan.target.*
import org.jetbrains.kotlin.konan.util.*
import static org.jetbrains.kotlin.konan.util.VisibleNamedKt.*
class NamedNativeInteropConfig implements Named {
@@ -146,7 +148,7 @@ class NamedNativeInteropConfig implements Named {
}
File getNativeLibsDir() {
def target = new TargetManager(target).target.visibleName
def target = getVisibleName(new TargetManager(target).target)
return new File(project.buildDir, "nativelibs/$target")
}
+2 -1
View File
@@ -22,6 +22,7 @@ import groovy.transform.stc.FromString
import org.jetbrains.kotlin.konan.target.*
import org.jetbrains.kotlin.konan.util.DependencyProcessor
import static org.jetbrains.kotlin.konan.target.KonanTarget.*
import static org.jetbrains.kotlin.konan.util.VisibleNamedKt.*
import org.jetbrains.kotlin.konan.properties.KonanProperties
import org.jetbrains.kotlin.konan.properties.*
@@ -218,7 +219,7 @@ enum DependencyKind {
DependencyKind(String name,
@ClosureParams(value = FromString.class, options = "KonanProperties") Closure<String> dirGetter,
@ClosureParams(value = FromString.class, options = "KonanTarget") Closure<String> propertyNameGetter =
{target -> "${target.visibleName}${name.capitalize()}Dir"}) {
{target -> "${getVisibleName(target)}${name.capitalize()}Dir"}) {
this.name = name
this.dirGetter = dirGetter
this.propertyNameGetter = propertyNameGetter
@@ -16,9 +16,4 @@
package org.jetbrains.kotlin.konan.util
// This interface is good for Enums to make enum members available to users
// as low case words.
interface VisibleNamed {
val name: String
val visibleName get() = name.toLowerCase()
}
val <T : Enum<T>> T.visibleName get() = name.toLowerCase()
@@ -16,9 +16,9 @@
package org.jetbrains.kotlin.konan.target
import org.jetbrains.kotlin.konan.util.VisibleNamed
import org.jetbrains.kotlin.konan.util.visibleName
enum class Family(val exeSuffix:String, val dynamicPrefix: String, val dynamicSuffix: String) : VisibleNamed {
enum class Family(val exeSuffix:String, val dynamicPrefix: String, val dynamicSuffix: String) {
OSX ("kexe", "lib", "dylib"),
IOS ("kexe", "lib", "dylib"),
LINUX ("kexe", "lib", "so" ),
@@ -27,7 +27,7 @@ enum class Family(val exeSuffix:String, val dynamicPrefix: String, val dynamicSu
WASM ("wasm", "" , "wasm" )
}
enum class Architecture(val bitness: Int) : VisibleNamed {
enum class Architecture(val bitness: Int) {
X64(64),
ARM64(64),
ARM32(32),
@@ -36,7 +36,7 @@ enum class Architecture(val bitness: Int) : VisibleNamed {
WASM32(32);
}
enum class KonanTarget(val family: Family, val architecture: Architecture, val detailedName: String, var enabled: Boolean = false) : VisibleNamed {
enum class KonanTarget(val family: Family, val architecture: Architecture, val detailedName: String, var enabled: Boolean = false) {
ANDROID_ARM32( Family.ANDROID, Architecture.ARM32, "android_arm32"),
ANDROID_ARM64( Family.ANDROID, Architecture.ARM64, "android_arm64"),
IPHONE( Family.IOS, Architecture.ARM64, "ios"),
@@ -53,7 +53,7 @@ enum class KonanTarget(val family: Family, val architecture: Architecture, val d
fun hostTargetSuffix(host: KonanTarget, target: KonanTarget) =
if (target == host) host.detailedName else "${host.detailedName}-${target.detailedName}"
enum class CompilerOutputKind: VisibleNamed {
enum class CompilerOutputKind {
PROGRAM {
override fun suffix(target: KonanTarget?) = ".${target!!.family.exeSuffix}"
},
@@ -29,6 +29,7 @@ import org.gradle.util.ConfigureUtil
import org.jetbrains.kotlin.gradle.plugin.tasks.KonanBuildingTask
import org.jetbrains.kotlin.konan.target.KonanTarget
import org.jetbrains.kotlin.konan.target.TargetManager
import org.jetbrains.kotlin.konan.util.visibleName
import java.io.File
/** Base class for all Kotlin/Native artifacts. */
@@ -25,6 +25,7 @@ import org.gradle.api.tasks.Internal
import org.jetbrains.kotlin.gradle.plugin.tasks.KonanArtifactWithLibrariesTask
import org.jetbrains.kotlin.gradle.plugin.tasks.KonanBuildingTask
import org.jetbrains.kotlin.konan.target.KonanTarget
import org.jetbrains.kotlin.konan.util.visibleName
import java.io.File
open class KonanLibrariesSpec(val task: KonanArtifactWithLibrariesTask, val project: Project) {
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.gradle.plugin.KonanPlugin.Companion.COMPILE_ALL_TASK
import org.jetbrains.kotlin.gradle.plugin.tasks.*
import org.jetbrains.kotlin.konan.target.KonanTarget
import org.jetbrains.kotlin.konan.target.TargetManager
import org.jetbrains.kotlin.konan.util.visibleName
import java.io.File
import java.util.*
import javax.inject.Inject
@@ -20,6 +20,7 @@ import org.gradle.api.Project
import org.gradle.tooling.provider.model.ToolingModelBuilder
import org.jetbrains.kotlin.gradle.plugin.model.KonanArtifact
import org.jetbrains.kotlin.gradle.plugin.model.KonanModel
import org.jetbrains.kotlin.konan.util.visibleName
object KonanToolingModelBuilder : ToolingModelBuilder {
override fun canBuild(modelName: String): Boolean = KonanModel::class.java.name == modelName
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.gradle.plugin.KonanArtifactWithLibrariesSpec
import org.jetbrains.kotlin.gradle.plugin.KonanLibrariesSpec
import org.jetbrains.kotlin.konan.target.KonanTarget
import org.jetbrains.kotlin.konan.target.TargetManager
import org.jetbrains.kotlin.konan.util.visibleName
import java.io.File
internal val Project.host
@@ -20,6 +20,7 @@ import org.gradle.api.file.FileCollection
import org.gradle.api.tasks.*
import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
import org.jetbrains.kotlin.konan.util.visibleName
enum class Produce(val cliOption: String, val kind: CompilerOutputKind) {
PROGRAM("program", CompilerOutputKind.PROGRAM),
@@ -21,8 +21,7 @@ import org.gradle.api.GradleScriptException
import org.gradle.api.tasks.Internal
import org.gradle.api.tasks.TaskAction
import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.konan.util.DependencyProcessor
import org.jetbrains.kotlin.konan.util.DependencySource
import org.jetbrains.kotlin.konan.util.*
import java.io.File
import java.io.IOException
@@ -24,6 +24,7 @@ import org.gradle.util.ConfigureUtil
import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.plugin.KonanInteropSpec.IncludeDirectoriesSpec
import org.jetbrains.kotlin.konan.target.KonanTarget
import org.jetbrains.kotlin.konan.util.visibleName
import java.io.File
/**
@@ -24,7 +24,7 @@ class KonanProject {
static String DEFAULT_ARTIFACT_NAME = 'main'
static String DEFAULT_INTEROP_NAME = "stdio"
static String HOST = TargetManager.host.visibleName
static String HOST = TargetManager.hostName
File projectDir
Path projectPath