Moved KonanTarget to be a sealed class rather than enum.
This commit is contained in:
committed by
alexander-gorshenev
parent
8324bb67f5
commit
a5bc23d706
+4
-5
@@ -17,7 +17,6 @@ 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'
|
||||
|
||||
@@ -68,7 +67,7 @@ allprojects {
|
||||
|
||||
void setupHostAndTarget() {
|
||||
ext.hostName = TargetManager.hostName
|
||||
ext.targetList = TargetManager.enabled.collect { getVisibleName(it) } as List
|
||||
ext.targetList = TargetManager.enabled.collect { it.visibleName } as List
|
||||
}
|
||||
|
||||
void setupClang(Project project) {
|
||||
@@ -136,15 +135,15 @@ void loadCommandLineProperties() {
|
||||
|
||||
class PlatformInfo {
|
||||
boolean isMac() {
|
||||
return TargetManager.host == KonanTarget.MACBOOK
|
||||
return TargetManager.hostIsMac
|
||||
}
|
||||
|
||||
boolean isWindows() {
|
||||
return TargetManager.host == KonanTarget.MINGW
|
||||
return TargetManager.hostIsMingw
|
||||
}
|
||||
|
||||
boolean isLinux() {
|
||||
return TargetManager.host == KonanTarget.LINUX
|
||||
return TargetManager.hostIsLinux
|
||||
}
|
||||
|
||||
Throwable unsupportedPlatformException() {
|
||||
|
||||
@@ -22,7 +22,6 @@ 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 javax.inject.Inject
|
||||
import java.util.regex.Pattern
|
||||
@@ -113,7 +112,7 @@ abstract class KonanTest extends JavaExec {
|
||||
*moreArgs,
|
||||
*project.globalTestArgs]
|
||||
if (project.testTarget) {
|
||||
args "-target", getVisibleName(target)
|
||||
args "-target", target.visibleName
|
||||
}
|
||||
if (enableKonanAssertions) {
|
||||
args "-ea"
|
||||
@@ -486,7 +485,7 @@ class RunDriverKonanTest extends KonanTest {
|
||||
*moreArgs,
|
||||
*project.globalTestArgs]
|
||||
if (project.testTarget) {
|
||||
args "-target", getVisibleName(target)
|
||||
args "-target", target.visibleName
|
||||
}
|
||||
if (enableKonanAssertions) {
|
||||
args "-ea"
|
||||
@@ -508,7 +507,7 @@ class RunInteropKonanTest extends KonanTest {
|
||||
void setInterop(String value) {
|
||||
this.interop = value
|
||||
this.interopConf = project.kotlinNativeInterop[value]
|
||||
this.interopConf.target = getVisibleName(target)
|
||||
this.interopConf.target = target.visibleName
|
||||
this.dependsOn(this.interopConf.genTask)
|
||||
}
|
||||
|
||||
|
||||
@@ -30,7 +30,6 @@ 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 {
|
||||
|
||||
@@ -148,7 +147,7 @@ class NamedNativeInteropConfig implements Named {
|
||||
}
|
||||
|
||||
File getNativeLibsDir() {
|
||||
def target = getVisibleName(new TargetManager(target).target)
|
||||
def target = new TargetManager(target).target.visibleName
|
||||
return new File(project.buildDir, "nativelibs/$target")
|
||||
}
|
||||
|
||||
|
||||
Vendored
+2
-2
@@ -22,7 +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.util.Named
|
||||
import org.jetbrains.kotlin.konan.properties.KonanPropertiesLoader
|
||||
import org.jetbrains.kotlin.konan.properties.*
|
||||
|
||||
@@ -216,7 +216,7 @@ enum DependencyKind {
|
||||
DependencyKind(String name,
|
||||
@ClosureParams(value = FromString.class, options = "KonanPropertiesLoader") Closure<String> dirGetter,
|
||||
@ClosureParams(value = FromString.class, options = "KonanTarget") Closure<String> propertyNameGetter =
|
||||
{target -> "${getVisibleName(target)}${name.capitalize()}Dir"}) {
|
||||
{target -> "${target.visibleName}${name.capitalize()}Dir"}) {
|
||||
this.name = name
|
||||
this.dirGetter = dirGetter
|
||||
this.propertyNameGetter = propertyNameGetter
|
||||
|
||||
@@ -17,3 +17,7 @@
|
||||
package org.jetbrains.kotlin.konan.util
|
||||
|
||||
val <T : Enum<T>> T.visibleName get() = name.toLowerCase()
|
||||
interface Named {
|
||||
val name: String
|
||||
val visibleName get() = name
|
||||
}
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
package org.jetbrains.kotlin.konan.target
|
||||
|
||||
import org.jetbrains.kotlin.konan.util.visibleName
|
||||
import org.jetbrains.kotlin.konan.util.Named
|
||||
import org.jetbrains.kotlin.konan.target.KonanTarget.*
|
||||
|
||||
enum class Family(val exeSuffix:String, val dynamicPrefix: String, val dynamicSuffix: String) {
|
||||
OSX ("kexe", "lib", "dylib"),
|
||||
@@ -36,18 +38,27 @@ enum class Architecture(val bitness: Int) {
|
||||
WASM32(32);
|
||||
}
|
||||
|
||||
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"),
|
||||
IPHONE_SIM( Family.IOS, Architecture.X64, "ios_sim"),
|
||||
LINUX( Family.LINUX, Architecture.X64, "linux"),
|
||||
MINGW( Family.WINDOWS, Architecture.X64, "mingw"),
|
||||
MACBOOK( Family.OSX, Architecture.X64, "osx"),
|
||||
RASPBERRYPI( Family.LINUX, Architecture.ARM32, "raspberrypi"),
|
||||
LINUX_MIPS32( Family.LINUX, Architecture.MIPS32, "linux_mips32"),
|
||||
LINUX_MIPSEL32( Family.LINUX, Architecture.MIPSEL32, "linux_mipsel32"),
|
||||
WASM32( Family.WASM, Architecture.WASM32, "wasm32");
|
||||
sealed class KonanTarget(override val name: String, val family: Family, val architecture: Architecture, val detailedName: String, var enabled: Boolean = false) : Named {
|
||||
object ANDROID_ARM32 : KonanTarget( "android_arm32", Family.ANDROID, Architecture.ARM32, "android_arm32")
|
||||
object ANDROID_ARM64 : KonanTarget( "android_arm64", Family.ANDROID, Architecture.ARM64, "android_arm64")
|
||||
object IPHONE : KonanTarget( "iphone", Family.IOS, Architecture.ARM64, "ios")
|
||||
object IPHONE_SIM : KonanTarget( "iphone_sim", Family.IOS, Architecture.X64, "ios_sim")
|
||||
object LINUX : KonanTarget( "linux", Family.LINUX, Architecture.X64, "linux")
|
||||
object MINGW : KonanTarget( "mingw", Family.WINDOWS, Architecture.X64, "mingw")
|
||||
object MACBOOK : KonanTarget( "macbook", Family.OSX, Architecture.X64, "osx")
|
||||
object RASPBERRYPI : KonanTarget( "raspberrypi", Family.LINUX, Architecture.ARM32, "raspberrypi")
|
||||
object LINUX_MIPS32 : KonanTarget( "linux_mips32", Family.LINUX, Architecture.MIPS32, "linux_mips32")
|
||||
object LINUX_MIPSEL32 : KonanTarget( "linux_mipsel32", Family.LINUX, Architecture.MIPSEL32, "linux_mipsel32")
|
||||
object WASM32 : KonanTarget( "wasm32", Family.WASM, Architecture.WASM32, "wasm32")
|
||||
|
||||
companion object {
|
||||
protected val memberObjects = mutableListOf<KonanTarget>()
|
||||
fun values() = memberObjects
|
||||
}
|
||||
|
||||
init {
|
||||
memberObjects.add(this)
|
||||
}
|
||||
}
|
||||
|
||||
fun hostTargetSuffix(host: KonanTarget, target: KonanTarget) =
|
||||
@@ -194,7 +205,11 @@ class TargetManager(val userRequest: String? = null) {
|
||||
|
||||
@JvmStatic
|
||||
val enabled: List<KonanTarget>
|
||||
get() = KonanTarget.values().asList().filter { it.enabled }
|
||||
get() = KonanTarget.values().filter { it.enabled }
|
||||
|
||||
val hostIsMac = (host == KonanTarget.MACBOOK)
|
||||
val hostIsLinux = (host == KonanTarget.LINUX)
|
||||
val hostIsMingw = (host == KonanTarget.MINGW)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user