A configurable zephyr board support.
This commit is contained in:
committed by
alexander-gorshenev
parent
d968fafec0
commit
9789420ed3
@@ -168,11 +168,11 @@ task start(dependsOn: "${hostName}Start")
|
||||
|
||||
// These files are built before the 'dist' is complete,
|
||||
// so we provide custom values for
|
||||
// -runtime, -properties, -library and -Djava.library.path
|
||||
// konan.home, --runtime, -Djava.library.path etc
|
||||
|
||||
targetList.each { target ->
|
||||
def konanJvmArgs = ["-ea",
|
||||
"-Dkonan.home=$distDir",
|
||||
"-Dkonan.home=${rootProject.projectDir}",
|
||||
"-Djava.library.path=${project.buildDir}/nativelibs/$hostName",
|
||||
"-Dfile.encoding=UTF-8"]
|
||||
|
||||
@@ -180,8 +180,7 @@ targetList.each { target ->
|
||||
if (target != "wasm32") defaultArgs += '-g'
|
||||
def konanArgs = [*defaultArgs,
|
||||
'-target', target,
|
||||
'-runtime', project(':runtime').file("build/${target}/runtime.bc"),
|
||||
'-properties', rootProject.konanPropertiesFile.canonicalPath,
|
||||
'--runtime', project(':runtime').file("build/${target}/runtime.bc"),
|
||||
*project.globalBuildArgs]
|
||||
|
||||
task("${target}Stdlib", type: JavaExec) {
|
||||
|
||||
@@ -124,7 +124,6 @@ class K2Native : CLICompiler<K2NativeCompilerArguments>() {
|
||||
arguments.mainPackage ?.let{ put(ENTRY, it) }
|
||||
arguments.manifestFile ?.let{ put(MANIFEST_FILE, it) }
|
||||
arguments.runtimeFile ?.let{ put(RUNTIME_FILE, it) }
|
||||
arguments.propertyFile ?.let{ put(PROPERTY_FILE, it) }
|
||||
|
||||
put(LIST_TARGETS, arguments.listTargets)
|
||||
put(OPTIMIZATION, arguments.optimization)
|
||||
|
||||
@@ -78,15 +78,9 @@ class K2NativeCompilerArguments : CommonCompilerArguments() {
|
||||
@Argument(value = "-produce", shortName = "-p", valueDescription = "{program|dynamic|framework|library|bitcode}", description = "Specify output file kind")
|
||||
var produce: String? = null
|
||||
|
||||
@Argument(value = "-properties", valueDescription = "<path>", description = "Override standard 'konan.properties' location")
|
||||
var propertyFile: String? = null
|
||||
|
||||
@Argument(value = "-repo", shortName = "-r", valueDescription = "<path>", description = "Library search path")
|
||||
var repositories: Array<String>? = null
|
||||
|
||||
@Argument(value = "-runtime", valueDescription = "<path>", description = "Override standard 'runtime.bc' location")
|
||||
var runtimeFile: String? = null
|
||||
|
||||
@Argument(value = "-target", valueDescription = "<target>", description = "Set hardware target")
|
||||
var target: String? = null
|
||||
|
||||
@@ -124,6 +118,9 @@ class K2NativeCompilerArguments : CommonCompilerArguments() {
|
||||
@Argument(value = "--purge_user_libs", description = "Don't link unused libraries even explicitly specified")
|
||||
var purgeUserLibs: Boolean = false
|
||||
|
||||
@Argument(value = "--runtime", valueDescription = "<path>", description = "Override standard 'runtime.bc' location")
|
||||
|
||||
var runtimeFile: String? = null
|
||||
@Argument(value = "--time", description = "Report execution time for compiler phases")
|
||||
var timePhases: Boolean = false
|
||||
|
||||
|
||||
+1
-1
@@ -829,7 +829,7 @@ internal class CAdapterGenerator(
|
||||
output("RUNTIME_USED ${prefix}_ExportedSymbols* $exportedSymbol(void) { return &__konan_symbols;}")
|
||||
outputStreamWriter.close()
|
||||
|
||||
if (context.config.targetManager.target.family == Family.WINDOWS) {
|
||||
if (context.config.target.family == Family.WINDOWS) {
|
||||
outputStreamWriter = context.config.tempFiles
|
||||
.cAdapterDef
|
||||
.printWriter()
|
||||
|
||||
+1
-1
@@ -73,7 +73,7 @@ internal fun produceOutput(context: Context) {
|
||||
val neededLibraries
|
||||
= context.llvm.librariesForLibraryManifest
|
||||
val abiVersion = context.config.currentAbiVersion
|
||||
val target = context.config.targetManager.target
|
||||
val target = context.config.target
|
||||
val nopack = config.getBoolean(KonanConfigKeys.NOPACK)
|
||||
val manifest = config.get(KonanConfigKeys.MANIFEST_FILE)
|
||||
|
||||
|
||||
-49
@@ -1,49 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2017 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.backend.konan
|
||||
|
||||
import org.jetbrains.kotlin.konan.file.*
|
||||
import org.jetbrains.kotlin.konan.properties.*
|
||||
import org.jetbrains.kotlin.konan.target.*
|
||||
import org.jetbrains.kotlin.konan.util.visibleName
|
||||
import org.jetbrains.kotlin.konan.util.DependencyProcessor
|
||||
|
||||
class Distribution(val target: KonanTarget,
|
||||
propertyFileOverride: String? = null,
|
||||
runtimeFileOverride: String? = null) {
|
||||
|
||||
val localKonanDir = "${File.userHome}/.konan"
|
||||
|
||||
private fun findKonanHome(): String {
|
||||
val value = System.getProperty("konan.home", "dist")
|
||||
val path = File(value).absolutePath
|
||||
return path
|
||||
}
|
||||
|
||||
val konanHome = findKonanHome()
|
||||
val propertyFileName = propertyFileOverride ?: "$konanHome/konan/konan.properties"
|
||||
val properties = File(propertyFileName).loadProperties()
|
||||
|
||||
val klib = "$konanHome/klib"
|
||||
val stdlib = "$klib/common/stdlib"
|
||||
|
||||
val targetName = target.visibleName
|
||||
val defaultNatives = "$konanHome/konan/targets/${targetName}/native"
|
||||
val runtime = runtimeFileOverride ?: "$stdlib/targets/${targetName}/native/runtime.bc"
|
||||
|
||||
val dependenciesDir = DependencyProcessor.defaultDependenciesRoot.absolutePath
|
||||
}
|
||||
+13
-14
@@ -39,30 +39,29 @@ class KonanConfig(val project: Project, val configuration: CompilerConfiguration
|
||||
|
||||
val currentAbiVersion: Int = configuration.get(KonanConfigKeys.ABI_VERSION)!!
|
||||
|
||||
internal val targetManager = TargetManager(
|
||||
configuration.get(KonanConfigKeys.TARGET))
|
||||
internal val distribution = Distribution(
|
||||
false,
|
||||
null,
|
||||
configuration.get(KonanConfigKeys.RUNTIME_FILE))
|
||||
|
||||
private val target = targetManager.target
|
||||
internal val platformManager = PlatformManager(distribution)
|
||||
internal val targetManager = platformManager.targetManager(configuration.get(KonanConfigKeys.TARGET))
|
||||
internal val target = targetManager.target
|
||||
|
||||
init {
|
||||
if (!target.enabled) {
|
||||
error("Target $target is not available on the ${TargetManager.host} host")
|
||||
if (!platformManager.isEnabled(target)) {
|
||||
error("Target $target is not available on the ${HostManager.host} host")
|
||||
}
|
||||
}
|
||||
|
||||
val indirectBranchesAreAllowed = target != KonanTarget.WASM32
|
||||
|
||||
internal val distribution = Distribution(target,
|
||||
configuration.get(KonanConfigKeys.PROPERTY_FILE),
|
||||
configuration.get(KonanConfigKeys.RUNTIME_FILE))
|
||||
|
||||
internal val platform = PlatformManager(distribution.properties, distribution.dependenciesDir).platform(target).apply {
|
||||
val platform = platformManager.platform(target).apply {
|
||||
if (configuration.getBoolean(KonanConfigKeys.CHECK_DEPENDENCIES)) {
|
||||
downloadDependencies()
|
||||
}
|
||||
}
|
||||
|
||||
internal val clang = platform.clang
|
||||
val indirectBranchesAreAllowed = target != KonanTarget.WASM32
|
||||
|
||||
internal val produce get() = configuration.get(KonanConfigKeys.PRODUCE)!!
|
||||
private val prefix = produce.prefix(target)
|
||||
@@ -84,7 +83,7 @@ class KonanConfig(val project: Project, val configuration: CompilerConfiguration
|
||||
get() = configuration.getList(KonanConfigKeys.LIBRARY_FILES)
|
||||
|
||||
private val repositories = configuration.getList(KonanConfigKeys.REPOSITORIES)
|
||||
private val resolver = defaultResolver(repositories, distribution)
|
||||
private val resolver = defaultResolver(repositories, target, distribution)
|
||||
|
||||
internal val immediateLibraries: List<LibraryReaderImpl> by lazy {
|
||||
val result = resolver.resolveImmediateLibraries(
|
||||
@@ -109,7 +108,7 @@ class KonanConfig(val project: Project, val configuration: CompilerConfiguration
|
||||
|
||||
internal val defaultNativeLibraries =
|
||||
if (produce == CompilerOutputKind.PROGRAM)
|
||||
File(distribution.defaultNatives).listFiles.map { it.absolutePath }
|
||||
File(distribution.defaultNatives(target)).listFiles.map { it.absolutePath }
|
||||
else emptyList()
|
||||
|
||||
internal val nativeLibraries: List<String> =
|
||||
|
||||
-2
@@ -83,8 +83,6 @@ class KonanConfigKeys {
|
||||
= CompilerConfigurationKey.create("print locations")
|
||||
val PRODUCE: CompilerConfigurationKey<CompilerOutputKind>
|
||||
= CompilerConfigurationKey.create("compiler output kind")
|
||||
val PROPERTY_FILE: CompilerConfigurationKey<String?>
|
||||
= CompilerConfigurationKey.create("override default property file path")
|
||||
val PURGE_USER_LIBS: CompilerConfigurationKey<Boolean>
|
||||
= CompilerConfigurationKey.create("purge user-specified libs too")
|
||||
val REPOSITORIES: CompilerConfigurationKey<List<String>>
|
||||
|
||||
+26
-8
@@ -18,7 +18,8 @@ package org.jetbrains.kotlin.backend.konan
|
||||
|
||||
import org.jetbrains.kotlin.konan.KonanExternalToolFailure
|
||||
import org.jetbrains.kotlin.konan.exec.Command
|
||||
import org.jetbrains.kotlin.konan.file.*
|
||||
import org.jetbrains.kotlin.konan.file.File
|
||||
import org.jetbrains.kotlin.konan.file.createTempFile
|
||||
import org.jetbrains.kotlin.konan.target.*
|
||||
|
||||
typealias BitcodeFile = String
|
||||
@@ -28,7 +29,7 @@ typealias ExecutableFile = String
|
||||
internal class LinkStage(val context: Context) {
|
||||
|
||||
private val config = context.config.configuration
|
||||
private val target = context.config.targetManager.target
|
||||
private val target = context.config.target
|
||||
private val platform = context.config.platform
|
||||
private val linker = platform.linker
|
||||
|
||||
@@ -117,6 +118,19 @@ internal class LinkStage(val context: Context) {
|
||||
return combinedWasm
|
||||
}
|
||||
|
||||
private fun llvmLinkAndLlc(bitcodeFiles: List<BitcodeFile>): String {
|
||||
val combinedBc = temporary("combined", ".bc")
|
||||
hostLlvmTool("llvm-link", "-o", combinedBc, *bitcodeFiles.toTypedArray())
|
||||
|
||||
val optimizedBc = temporary("optimized", ".bc")
|
||||
hostLlvmTool("opt", combinedBc, "-o=$optimizedBc", "-O3")
|
||||
|
||||
val combinedO = temporary("combined", ".o")
|
||||
hostLlvmTool("llc", combinedBc, "-filetype=obj", "-o", combinedO, "-function-sections", "-data-sections")
|
||||
|
||||
return combinedO
|
||||
}
|
||||
|
||||
private fun asLinkerArgs(args: List<String>): List<String> {
|
||||
if (linker.useCompilerDriverAsLinker) {
|
||||
return args
|
||||
@@ -201,15 +215,19 @@ internal class LinkStage(val context: Context) {
|
||||
val libraryProvidedLinkerFlags =
|
||||
libraries.map{it -> it.linkerOpts}.flatten()
|
||||
|
||||
var objectFiles: List<String> = listOf()
|
||||
val objectFiles: MutableList<String> = mutableListOf()
|
||||
|
||||
val phaser = PhaseManager(context)
|
||||
phaser.phase(KonanPhase.OBJECT_FILES) {
|
||||
objectFiles = listOf(
|
||||
if (target == KonanTarget.WASM32)
|
||||
bitcodeToWasm(bitcodeFiles)
|
||||
else
|
||||
llvmLto(bitcodeFiles)
|
||||
objectFiles.add(
|
||||
when (platform.configurables) {
|
||||
is WasmConfigurables
|
||||
-> bitcodeToWasm(bitcodeFiles)
|
||||
is ZephyrConfigurables
|
||||
-> llvmLinkAndLlc(bitcodeFiles)
|
||||
else
|
||||
-> llvmLto(bitcodeFiles)
|
||||
}
|
||||
)
|
||||
}
|
||||
phaser.phase(KonanPhase.LINKER) {
|
||||
|
||||
+4
-6
@@ -16,14 +16,12 @@
|
||||
|
||||
package org.jetbrains.kotlin.backend.konan.library
|
||||
|
||||
import org.jetbrains.kotlin.backend.konan.Distribution
|
||||
import org.jetbrains.kotlin.backend.konan.library.impl.LibraryReaderImpl
|
||||
import org.jetbrains.kotlin.backend.konan.util.removeSuffixIfPresent
|
||||
import org.jetbrains.kotlin.backend.konan.util.suffixIfNot
|
||||
import org.jetbrains.kotlin.konan.file.File
|
||||
import org.jetbrains.kotlin.konan.target.Distribution
|
||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||
import org.jetbrains.kotlin.konan.target.TargetManager
|
||||
import org.jetbrains.kotlin.konan.util.visibleName
|
||||
|
||||
interface SearchPathResolver {
|
||||
val searchRoots: List<File>
|
||||
@@ -32,12 +30,12 @@ interface SearchPathResolver {
|
||||
}
|
||||
|
||||
fun defaultResolver(repositories: List<String>, target: KonanTarget): SearchPathResolver =
|
||||
defaultResolver(repositories, Distribution(target))
|
||||
defaultResolver(repositories, target, Distribution())
|
||||
|
||||
fun defaultResolver(repositories: List<String>, distribution: Distribution): SearchPathResolver =
|
||||
fun defaultResolver(repositories: List<String>, target: KonanTarget, distribution: Distribution): SearchPathResolver =
|
||||
KonanLibrarySearchPathResolver(
|
||||
repositories,
|
||||
distribution.target,
|
||||
target,
|
||||
distribution.klib,
|
||||
distribution.localKonanDir
|
||||
)
|
||||
|
||||
+14
-2
@@ -362,7 +362,9 @@ internal class Llvm(val context: Context, val llvmModule: LLVMModuleRef) {
|
||||
|
||||
val staticData = StaticData(context)
|
||||
|
||||
val runtimeFile = context.config.distribution.runtime
|
||||
private val target = context.config.target
|
||||
|
||||
val runtimeFile = context.config.distribution.runtime(target)
|
||||
val runtime = Runtime(runtimeFile) // TODO: dispose
|
||||
|
||||
init {
|
||||
@@ -416,7 +418,17 @@ internal class Llvm(val context: Context, val llvmModule: LLVMModuleRef) {
|
||||
null
|
||||
}
|
||||
|
||||
private val personalityFunctionName = when (context.config.targetManager.target) {
|
||||
val tlsMode by lazy {
|
||||
when (target) {
|
||||
KonanTarget.WASM32,
|
||||
is KonanTarget.ZEPHYR
|
||||
-> LLVMThreadLocalMode.LLVMNotThreadLocal
|
||||
else
|
||||
-> LLVMThreadLocalMode.LLVMGeneralDynamicTLSModel
|
||||
}
|
||||
}
|
||||
|
||||
private val personalityFunctionName = when (target) {
|
||||
KonanTarget.MINGW -> "__gxx_personality_seh0"
|
||||
else -> "__gxx_personality_v0"
|
||||
}
|
||||
|
||||
+1
-1
@@ -2228,7 +2228,7 @@ internal class CodeGeneratorVisitor(val context: Context, val lifetimes: Map<IrE
|
||||
// On x86_64 it is the case if the return value takes more than 16 bytes or is the structure with
|
||||
// unaligned fields (there are some complicated exceptions currently ignored). The latter condition
|
||||
// is "encoded" by stub generator by emitting either `getMessenger` or `getMessengerLU` intrinsic call.
|
||||
val isStret = when (context.config.targetManager.target) {
|
||||
val isStret = when (context.config.target) {
|
||||
KonanTarget.MACBOOK, KonanTarget.IPHONE_SIM -> isLU // x86_64
|
||||
KonanTarget.IPHONE -> false // aarch64
|
||||
else -> TODO()
|
||||
|
||||
+3
-3
@@ -205,7 +205,7 @@ internal fun ContextUtils.addGlobal(name: String, type: LLVMTypeRef, isExported:
|
||||
assert(LLVMGetNamedGlobal(context.llvmModule, name) == null)
|
||||
val result = LLVMAddGlobal(context.llvmModule, type, name)!!
|
||||
if (threadLocal)
|
||||
LLVMSetThreadLocalMode(result, runtime.tlsMode)
|
||||
LLVMSetThreadLocalMode(result, context.llvm.tlsMode)
|
||||
return result
|
||||
}
|
||||
|
||||
@@ -219,12 +219,12 @@ internal fun ContextUtils.importGlobal(name: String, type: LLVMTypeRef, origin:
|
||||
assert (getGlobalType(found) == type)
|
||||
assert (LLVMGetInitializer(found) == null)
|
||||
if (threadLocal)
|
||||
assert(LLVMGetThreadLocalMode(found) == runtime.tlsMode)
|
||||
assert(LLVMGetThreadLocalMode(found) == context.llvm.tlsMode)
|
||||
return found
|
||||
} else {
|
||||
val result = LLVMAddGlobal(context.llvmModule, type, name)!!
|
||||
if (threadLocal)
|
||||
LLVMSetThreadLocalMode(result, runtime.tlsMode)
|
||||
LLVMSetThreadLocalMode(result, context.llvm.tlsMode)
|
||||
return result
|
||||
}
|
||||
}
|
||||
|
||||
-5
@@ -46,11 +46,6 @@ class Runtime(bitcodeFile: String) {
|
||||
|
||||
val target = LLVMGetTarget(llvmModule)!!.toKString()
|
||||
|
||||
// TODO: deduce TLS model from explicit config parameter.
|
||||
val tlsMode by lazy {
|
||||
if (target.indexOf("wasm") != -1) LLVMThreadLocalMode.LLVMNotThreadLocal
|
||||
else LLVMThreadLocalMode.LLVMGeneralDynamicTLSModel
|
||||
}
|
||||
val dataLayout = LLVMGetDataLayout(llvmModule)!!.toKString()
|
||||
|
||||
val targetData = LLVMCreateTargetData(dataLayout)!!
|
||||
|
||||
+1
-1
@@ -1007,4 +1007,4 @@ private val ReturnableTypeBridge.objCEncoding: String get() = when (this) {
|
||||
HashCodeBridge -> "L" // NSUInteger = unsigned long; // TODO: `unsigned int` on watchOS
|
||||
}
|
||||
|
||||
internal fun Context.is64Bit(): Boolean = this.config.targetManager.target.architecture.bitness == 64
|
||||
internal fun Context.is64Bit(): Boolean = this.config.target.architecture.bitness == 64
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ import org.jetbrains.kotlin.name.isSubpackageOf
|
||||
|
||||
internal class ObjCExport(val context: Context) {
|
||||
|
||||
private val target get() = context.config.targetManager.target
|
||||
private val target get() = context.config.target
|
||||
|
||||
internal fun produceObjCFramework() {
|
||||
if (context.config.produce != CompilerOutputKind.FRAMEWORK) return
|
||||
|
||||
+2
-2
@@ -1,14 +1,14 @@
|
||||
package org.jetbrains.kotlin.compiletest
|
||||
|
||||
import org.jetbrains.kotlin.konan.target.Family
|
||||
import org.jetbrains.kotlin.konan.target.TargetManager
|
||||
import org.jetbrains.kotlin.konan.target.HostManager
|
||||
import java.nio.file.Path
|
||||
import java.nio.file.Paths
|
||||
|
||||
|
||||
object DistProperties {
|
||||
private val dist: Path = Paths.get(requireProp("konan.home"))
|
||||
private val konancDriver = if (TargetManager.host.family == Family.WINDOWS) "konanc.bat" else "konanc"
|
||||
private val konancDriver = if (HostManager.host.family == Family.WINDOWS) "konanc.bat" else "konanc"
|
||||
val konanc: Path = dist.resolve("bin/$konancDriver")
|
||||
val lldb: Path = Paths.get("lldb")
|
||||
val lldbPrettyPrinters: Path = dist.resolve("tools/konan_lldb.py")
|
||||
|
||||
@@ -1,346 +0,0 @@
|
||||
#
|
||||
# Copyright 2010-2017 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.
|
||||
#
|
||||
|
||||
# TODO: Do we need a $variable substitution mechanism here?
|
||||
dependenciesUrl = https://download.jetbrains.com/kotlin/native
|
||||
|
||||
# In order of preference:
|
||||
dependencyProfiles = default alt
|
||||
|
||||
# Don't check dependencies on a server.
|
||||
# If true, dependency downloader will throw an exception if a dependency isn't found in konan.home.
|
||||
airplaneMode = false
|
||||
|
||||
downloadingAttempts = 10
|
||||
downloadingAttemptIntervalMs = 3000
|
||||
homeDependencyCache = .konan/cache
|
||||
|
||||
llvmDebugOptFlags = -O0
|
||||
llvmVersion = 5.0.0
|
||||
|
||||
# Mac OS X.
|
||||
llvmHome.osx = clang-llvm-5.0.0-darwin-macos
|
||||
targetToolchain.osx = target-toolchain-1-osx
|
||||
|
||||
arch.osx = x86_64
|
||||
targetSysRoot.osx = target-sysroot-2-darwin-macos
|
||||
libffiDir.osx = libffi-3.2.1-2-darwin-macos
|
||||
llvmLtoFlags.osx =
|
||||
llvmLtoOptFlags.osx = -O3 -function-sections
|
||||
llvmLtoNooptFlags.osx = -O1
|
||||
llvmLtoDynamicFlags.osx = -relocation-model=pic
|
||||
linkerKonanFlags.osx = -lc++ -lobjc -framework Foundation
|
||||
linkerOptimizationFlags.osx = -dead_strip
|
||||
linkerNoDebugFlags.osx = -S
|
||||
linkerDynamicFlags.osx = -dylib
|
||||
osVersionMinFlagLd.osx = -macosx_version_min
|
||||
osVersionMinFlagClang.osx = -mmacosx-version-min
|
||||
osVersionMin.osx = 10.11
|
||||
entrySelector.osx = -alias _Konan_main _main
|
||||
dependencies.osx = \
|
||||
libffi-3.2.1-2-darwin-macos \
|
||||
clang-llvm-5.0.0-darwin-macos
|
||||
|
||||
target-sysroot-2-darwin-macos.default = \
|
||||
remote:internal
|
||||
|
||||
target-toolchain-1-osx.default = \
|
||||
remote:internal
|
||||
|
||||
# Apple iOS.
|
||||
targetToolchain.osx-ios = target-toolchain-1-osx
|
||||
dependencies.osx-ios = \
|
||||
libffi-3.2.1-2-darwin-ios \
|
||||
clang-llvm-5.0.0-darwin-macos
|
||||
|
||||
target-sysroot-3-darwin-ios.default = \
|
||||
remote:internal
|
||||
|
||||
arch.ios = arm64
|
||||
entrySelector.ios = -alias _Konan_main _main
|
||||
targetSysRoot.ios = target-sysroot-3-darwin-ios
|
||||
libffiDir.ios = libffi-3.2.1-2-darwin-ios
|
||||
llvmLtoFlags.ios =
|
||||
llvmLtoOptFlags.ios = -O3 -function-sections
|
||||
linkerNoDebugFlags.ios = -S
|
||||
linkerDynamicFlags.ios = -dylib
|
||||
llvmLtoNooptFlags.ios = -O1
|
||||
llvmLtoDynamicFlags.ios = -relocation-model=pic
|
||||
linkerKonanFlags.ios = -lc++ -lobjc -framework Foundation -sdk_version 11.2
|
||||
linkerOptimizationFlags.ios = -dead_strip
|
||||
osVersionMinFlagLd.ios = -iphoneos_version_min
|
||||
osVersionMinFlagClang.ios = -miphoneos-version-min
|
||||
osVersionMin.ios = 8.0
|
||||
|
||||
# Apple iOS simulator.
|
||||
targetToolchain.osx-ios_sim = target-toolchain-1-osx
|
||||
dependencies.osx-ios_sim = \
|
||||
libffi-3.2.1-1-darwin-ios_sim \
|
||||
clang-llvm-5.0.0-darwin-macos
|
||||
|
||||
target-sysroot-2-darwin-ios_sim.default = \
|
||||
remote:internal
|
||||
|
||||
arch.ios_sim = x86_64
|
||||
entrySelector.ios_sim = -alias _Konan_main _main
|
||||
targetSysRoot.ios_sim = target-sysroot-2-darwin-ios_sim
|
||||
libffiDir.ios_sim = libffi-3.2.1-1-darwin-ios_sim
|
||||
llvmLtoFlags.ios_sim =
|
||||
llvmLtoOptFlags.ios_sim = -O3 -function-sections
|
||||
llvmLtoNooptFlags.ios_sim = -O1
|
||||
llvmLtoDynamicFlags.ios_sim = -relocation-model=pic
|
||||
linkerKonanFlags.ios_sim = -lc++ -lobjc -framework Foundation -sdk_version 11.2
|
||||
linkerOptimizationFlags.ios_sim = -dead_strip
|
||||
linkerNoDebugFlags.ios_sim = -S
|
||||
linkerDynamicFlags.ios_sim = -dylib
|
||||
osVersionMinFlagLd.ios_sim = -ios_simulator_version_min
|
||||
osVersionMinFlagClang.ios_sim = -mios-simulator-version-min
|
||||
osVersionMin.ios_sim = 8.0
|
||||
|
||||
# Linux x86-64.
|
||||
llvmHome.linux = clang-llvm-5.0.0-linux-x86-64
|
||||
gccToolchain.linux = target-gcc-toolchain-3-linux-x86-64
|
||||
targetToolchain.linux = target-gcc-toolchain-3-linux-x86-64/x86_64-unknown-linux-gnu
|
||||
|
||||
quadruple.linux = x86_64-unknown-linux-gnu
|
||||
targetSysRoot.linux = target-gcc-toolchain-3-linux-x86-64/x86_64-unknown-linux-gnu/sysroot
|
||||
libffiDir.linux = libffi-3.2.1-2-linux-x86-64
|
||||
# targetSysroot-relative.
|
||||
libGcc.linux = ../../lib/gcc/x86_64-unknown-linux-gnu/4.8.5
|
||||
llvmLtoFlags.linux =
|
||||
llvmLtoOptFlags.linux = -O3 -function-sections
|
||||
llvmLtoNooptFlags.linux = -O1
|
||||
llvmLtoDynamicFlags.linux = -relocation-model=pic
|
||||
llvmLlcFlags.linux = -march=x86-64
|
||||
linkerKonanFlags.linux = -Bstatic -lstdc++ -Bdynamic -ldl -lm -lpthread \
|
||||
--defsym __cxa_demangle=Konan_cxa_demangle
|
||||
linkerOptimizationFlags.linux = --gc-sections
|
||||
linkerNoDebugFlags.linux = -S
|
||||
linkerDynamicFlags.linux = -shared
|
||||
pluginOptimizationFlags.linux = -plugin-opt=mcpu=x86-64 -plugin-opt=O3
|
||||
dynamicLinker.linux = /lib64/ld-linux-x86-64.so.2
|
||||
entrySelector.linux = --defsym main=Konan_main
|
||||
# targetSysRoot relative
|
||||
abiSpecificLibraries.linux = ../lib64 lib64 usr/lib64
|
||||
dependencies.linux = \
|
||||
clang-llvm-5.0.0-linux-x86-64 \
|
||||
target-gcc-toolchain-3-linux-x86-64 \
|
||||
libffi-3.2.1-2-linux-x86-64
|
||||
|
||||
# Raspberry Pi
|
||||
targetToolchain.linux-raspberrypi = target-gcc-toolchain-3-linux-x86-64/x86_64-unknown-linux-gnu
|
||||
dependencies.linux-raspberrypi = \
|
||||
clang-llvm-5.0.0-linux-x86-64 \
|
||||
target-gcc-toolchain-3-linux-x86-64 \
|
||||
target-sysroot-1-raspberrypi \
|
||||
libffi-3.2.1-2-linux-x86-64 \
|
||||
libffi-3.2.1-2-raspberrypi
|
||||
|
||||
quadruple.raspberrypi = armv6-unknown-linux-gnueabihf
|
||||
entrySelector.raspberrypi = --defsym main=Konan_main
|
||||
linkerNoDebugFlags.raspberrypi = -S
|
||||
linkerDynamicFlags.raspberrypi = -shared
|
||||
linkerOptimizationFlags.raspberrypi = --gc-sections
|
||||
targetSysRoot.raspberrypi = target-sysroot-1-raspberrypi
|
||||
# We could reuse host toolchain here.
|
||||
libffiDir.raspberrypi = libffi-3.2.1-2-raspberrypi
|
||||
linkerKonanFlags.raspberrypi = -Bstatic -lstdc++ -Bdynamic -ldl -lm -lpthread \
|
||||
--defsym __cxa_demangle=Konan_cxa_demangle
|
||||
# targetSysroot-relative.
|
||||
libGcc.raspberrypi = lib/gcc/arm-linux-gnueabihf/4.8.3
|
||||
llvmLtoFlags.raspberrypi = -float-abi=hard -mcpu=arm1136jf-s
|
||||
llvmLtoOptFlags.raspberrypi = -O3 -function-sections
|
||||
llvmLtoNooptFlags.raspberrypi = -O1
|
||||
llvmLtoDynamicFlags.raspberrypi = -relocation-model=pic
|
||||
dynamicLinker.raspberrypi = /lib/ld-linux-armhf.so.3
|
||||
# targetSysRoot relative
|
||||
abiSpecificLibraries.raspberrypi = \
|
||||
../lib/arm-linux-gnueabihf \
|
||||
lib/arm-linux-gnueabihf \
|
||||
usr/lib/arm-linux-gnueabihf
|
||||
|
||||
# MIPS
|
||||
targetToolchain.linux-linux_mips32 = target-gcc-toolchain-2-linux-mips/x86_64-unknown-linux-gnu
|
||||
dependencies.linux-linux_mips32 = \
|
||||
clang-llvm-5.0.0-linux-x86-64 \
|
||||
target-gcc-toolchain-2-linux-mips \
|
||||
target-gcc-toolchain-3-linux-x86-64 \
|
||||
target-sysroot-2-mips \
|
||||
libffi-3.2.1-2-linux-x86-64 \
|
||||
libffi-3.2.1-2-linux-mips
|
||||
|
||||
quadruple.linux_mips32 = mips-unknown-linux-gnu
|
||||
entrySelector.linux_mips32 = --defsym main=Konan_main
|
||||
linkerOptimizationFlags.linux_mips32 = --gc-sections
|
||||
linkerDynamicFlags.linux_mips32 = -shared
|
||||
targetSysRoot.linux_mips32 = target-sysroot-2-mips
|
||||
# We could reuse host toolchain here.
|
||||
libffiDir.linux_mips32 = libffi-3.2.1-2-linux-mips
|
||||
linkerKonanFlags.linux_mips32 = -Bstatic -lstdc++ -Bdynamic -ldl -lm -lpthread \
|
||||
--defsym __cxa_demangle=Konan_cxa_demangle
|
||||
# targetSysroot-relative.
|
||||
libGcc.linux_mips32 = lib/gcc/mips-unknown-linux-gnu/4.9.4
|
||||
llvmLtoFlags.linux_mips32 =
|
||||
llvmLtoOptFlags.linux_mips32 = -O3 -function-sections
|
||||
llvmLtoNooptFlags.linux_mips32 = -O1
|
||||
llvmLtoDynamicFlags.linux_mips32 = -relocation-model=pic
|
||||
dynamicLinker.linux_mips32 = /lib/ld.so.1
|
||||
# targetSysRoot relative
|
||||
abiSpecificLibraries.linux_mips32 =
|
||||
|
||||
# MIPSel
|
||||
targetToolchain.linux-linux_mipsel32 = target-gcc-toolchain-2-linux-mips/x86_64-unknown-linux-gnu
|
||||
dependencies.linux-linux_mipsel32 = \
|
||||
clang-llvm-5.0.0-linux-x86-64 \
|
||||
target-gcc-toolchain-2-linux-mips \
|
||||
target-gcc-toolchain-3-linux-x86-64 \
|
||||
target-sysroot-2-mipsel \
|
||||
libffi-3.2.1-2-linux-x86-64 \
|
||||
libffi-3.2.1-2-linux-mipsel
|
||||
quadruple.linux_mipsel32 = mipsel-unknown-linux-gnu
|
||||
entrySelector.linux_mipsel32 = --defsym main=Konan_main
|
||||
linkerOptimizationFlags.linux_mipsel32 = --gc-sections
|
||||
linkerDynamicFlags.linux_mipsel32 = -shared
|
||||
targetSysRoot.linux_mipsel32 = target-sysroot-2-mipsel
|
||||
# We could reuse host toolchain here.
|
||||
libffiDir.linux_mipsel32 = libffi-3.2.1-2-linux-mipsel
|
||||
linkerKonanFlags.linux_mipsel32 = -Bstatic -lstdc++ -Bdynamic -ldl -lm -lpthread \
|
||||
--defsym __cxa_demangle=Konan_cxa_demangle
|
||||
# targetSysroot-relative.
|
||||
libGcc.linux_mipsel32 = lib/gcc/mipsel-unknown-linux-gnu/4.9.4
|
||||
llvmLtoFlags.linux_mipsel32 =
|
||||
llvmLtoOptFlags.linux_mipsel32 = -O3 -function-sections
|
||||
llvmLtoNooptFlags.linux_mipsel32 = -O1
|
||||
llvmLtoDynamicFlags.linux_mipsel32 = -relocation-model=pic
|
||||
dynamicLinker.linux_mipsel32 = /lib/ld.so.1
|
||||
# targetSysRoot relative
|
||||
abiSpecificLibraries.linux_mipsel32 =
|
||||
|
||||
# Android ARM32, based on NDK for android-21.
|
||||
targetToolchain.osx-android_arm32 = target-toolchain-21-osx-android_arm32
|
||||
# TODO: split dependencies to host-dependent and host-independent parts.
|
||||
dependencies.osx-android_arm32 = \
|
||||
clang-llvm-5.0.0-darwin-macos \
|
||||
target-sysroot-21-android_arm32 \
|
||||
target-toolchain-21-osx-android_arm32 \
|
||||
libffi-3.2.1-2-android_arm32
|
||||
targetToolchain.linux-android_arm32 = target-toolchain-21-linux-android_arm32
|
||||
dependencies.linux-android_arm32 = \
|
||||
clang-llvm-5.0.0-linux-x86-64 \
|
||||
target-sysroot-21-android_arm32 \
|
||||
target-toolchain-21-linux-android_arm32 \
|
||||
libffi-3.2.1-2-android_arm32
|
||||
|
||||
quadruple.android_arm32 = arm-linux-androideabi
|
||||
entrySelector.android_arm32 = -Wl,--defsym -Wl,main=Konan_main
|
||||
llvmLtoFlags.android_arm32 = -emulated-tls -relocation-model=pic
|
||||
llvmLtoOptFlags.android_arm32 = -O3 -function-sections
|
||||
linkerNoDebugFlags.android_arm32 = -Wl,-S
|
||||
llvmLtoNooptFlags.android_arm32 = -O1
|
||||
targetSysRoot.android_arm32 = target-sysroot-21-android_arm32
|
||||
libffiDir.android_arm32 = libffi-3.2.1-2-android_arm32
|
||||
linkerKonanFlags.android_arm32 = -lm -latomic -lstdc++ -landroid
|
||||
|
||||
# Android ARM64, based on NDK for android-21.
|
||||
targetToolchain.osx-android_arm64 = target-toolchain-21-osx-android_arm64
|
||||
# TODO: split dependencies to host-dependent and host-independent parts.
|
||||
dependencies.osx-android_arm64 = \
|
||||
clang-llvm-5.0.0-darwin-macos \
|
||||
target-sysroot-21-android_arm64 \
|
||||
target-toolchain-21-osx-android_arm64 \
|
||||
libffi-3.2.1-2-android_arm64
|
||||
targetToolchain.linux-android_arm64 = target-toolchain-21-linux-android_arm64
|
||||
dependencies.linux-android_arm64 = \
|
||||
clang-llvm-5.0.0-linux-x86-64 \
|
||||
target-sysroot-21-android_arm64 \
|
||||
target-toolchain-21-linux-android_arm64 \
|
||||
libffi-3.2.1-2-android_arm64
|
||||
|
||||
quadruple.android_arm64 = aarch64-linux-android
|
||||
entrySelector.android_arm64 = -Wl,--defsym -Wl,main=Konan_main
|
||||
llvmLtoFlags.android_arm64 = -emulated-tls -relocation-model=pic
|
||||
targetSysRoot.android_arm64 = target-sysroot-21-android_arm64
|
||||
libffiDir.android_arm64 = libffi-3.2.1-2-android_arm64
|
||||
linkerKonanFlags.android_arm64 = -lm -latomic -lstdc++ -landroid
|
||||
linkerNoDebugFlags.android_arm64 = -Wl,-S
|
||||
|
||||
# Windows x86-64, based on mingw-w64.
|
||||
llvmHome.mingw = msys2-mingw-w64-x86_64-gcc-7.2.0-clang-llvm-5.0.0-windows-x86-64
|
||||
targetToolchain.mingw = msys2-mingw-w64-x86_64-gcc-7.2.0-clang-llvm-5.0.0-windows-x86-64
|
||||
|
||||
quadruple.mingw = x86_64-w64-mingw32
|
||||
targetSysRoot.mingw = msys2-mingw-w64-x86_64-gcc-7.2.0-clang-llvm-5.0.0-windows-x86-64
|
||||
libffiDir.mingw = libffi-3.2.1-mingw-w64-x86-64
|
||||
llvmLtoFlags.mingw =
|
||||
llvmLtoOptFlags.mingw = -O3 -function-sections
|
||||
llvmLtoNooptFlags.mingw = -O1
|
||||
linkerNoDebugFlags.mingw = -Wl,-S
|
||||
linkerDynamicFlags.mingw = -shared
|
||||
linkerKonanFlags.mingw =-static-libgcc -static-libstdc++ \
|
||||
-Xclang -flto-visibility-public-std \
|
||||
-Wl,-Bstatic,--whole-archive -lwinpthread -Wl,--no-whole-archive,-Bdynamic \
|
||||
-Wl,--defsym,__cxa_demangle=Konan_cxa_demangle
|
||||
linkerOptimizationFlags.mingw = -Wl,--gc-sections
|
||||
entrySelector.mingw = -Wl,--defsym,main=Konan_main
|
||||
dependencies.mingw = \
|
||||
msys2-mingw-w64-x86_64-gcc-7.2.0-clang-llvm-5.0.0-windows-x86-64 \
|
||||
libffi-3.2.1-mingw-w64-x86-64
|
||||
|
||||
# WebAssembly 32-bit.
|
||||
targetToolchain.osx-wasm32 = target-toolchain-2-osx-wasm
|
||||
dependencies.osx-wasm32 = \
|
||||
clang-llvm-5.0.0-darwin-macos \
|
||||
target-sysroot-2-wasm \
|
||||
target-toolchain-2-osx-wasm
|
||||
|
||||
targetToolchain.linux-wasm32 = target-toolchain-1-linux-wasm
|
||||
dependencies.linux-wasm32 = \
|
||||
clang-llvm-5.0.0-linux-x86-64 \
|
||||
target-sysroot-2-wasm \
|
||||
target-toolchain-1-linux-wasm
|
||||
|
||||
targetToolchain.mingw-wasm32 = target-toolchain-1-mingw-wasm
|
||||
dependencies.mingw-wasm32 = \
|
||||
msys2-mingw-w64-x86_64-gcc-7.2.0-clang-llvm-5.0.0-windows-x86-64 \
|
||||
target-sysroot-2-wasm \
|
||||
target-toolchain-1-mingw-wasm
|
||||
|
||||
quadruple.wasm32 = wasm32
|
||||
llvmLtoFlags.wasm32 =
|
||||
targetSysRoot.wasm32 = target-sysroot-2-wasm
|
||||
optFlags.wasm32 = -internalize -globaldce
|
||||
optNooptFlags.wasm32 = -O1
|
||||
optOptFlags.wasm32 = -O3
|
||||
optDebugFlags.wasm32 = -O0
|
||||
llcFlags.wasm32 =
|
||||
llcNooptFlags.wasm32 = -O1
|
||||
llcOptFlags.wasm32 = -O3
|
||||
llcDebugFlags.wasm32 = -O0
|
||||
# The stack size is in bytes.
|
||||
s2wasmFlags.wasm32 = --allocate-stack 1048576 --import-memory
|
||||
|
||||
# Zephyr RTOS.
|
||||
targetToolchain.linux-zephyr = target-gcc-toolchain-6-2017q2-linux-armemb/arm-none-eabi
|
||||
dependencies.linux-zephyr = \
|
||||
clang-llvm-5.0.0-linux-x86-64 \
|
||||
target-gcc-toolchain-6-2017q2-linux-armemb \
|
||||
target-sysroot-2-wasm \
|
||||
zephyr-host-tools-1-linux \
|
||||
zephyr-zephyr-v1.10.0
|
||||
|
||||
quadruple.zephyr = armv7m-none-eabi
|
||||
targetSysRoot.zephyr = target-sysroot-2-wasm
|
||||
entrySelector.zephyr = --defsym main=Konan_main
|
||||
Reference in New Issue
Block a user