Support Android x86. (#3314)
This commit is contained in:
+1
-1
@@ -60,7 +60,7 @@ private class LlvmPipelineConfiguration(context: Context) {
|
|||||||
KonanTarget.ANDROID_ARM32 -> "arm7tdmi"
|
KonanTarget.ANDROID_ARM32 -> "arm7tdmi"
|
||||||
KonanTarget.ANDROID_ARM64 -> "cortex-a57"
|
KonanTarget.ANDROID_ARM64 -> "cortex-a57"
|
||||||
KonanTarget.ANDROID_X64 -> "x86-64"
|
KonanTarget.ANDROID_X64 -> "x86-64"
|
||||||
KonanTarget.ANDROID_X86 -> TODO("implement me")
|
KonanTarget.ANDROID_X86 -> "i686"
|
||||||
KonanTarget.LINUX_MIPS32 -> "mips32r2"
|
KonanTarget.LINUX_MIPS32 -> "mips32r2"
|
||||||
KonanTarget.LINUX_MIPSEL32 -> "mips32r2"
|
KonanTarget.LINUX_MIPSEL32 -> "mips32r2"
|
||||||
KonanTarget.WATCHOS_ARM64 -> TODO("implement me")
|
KonanTarget.WATCHOS_ARM64 -> TODO("implement me")
|
||||||
|
|||||||
+62
-28
@@ -372,33 +372,6 @@ targetSysRoot.android_arm32 = target-sysroot-1-android_ndk
|
|||||||
linkerKonanFlags.android_arm32 = -lm -lstdc++ -landroid -llog -latomic
|
linkerKonanFlags.android_arm32 = -lm -lstdc++ -landroid -llog -latomic
|
||||||
|
|
||||||
# Android ARM64, based on NDK.
|
# Android ARM64, based on NDK.
|
||||||
targetToolchain.macos_x64-android_x64 = target-toolchain-1-osx-android_ndk
|
|
||||||
dependencies.macos_x64-android_x64 = \
|
|
||||||
clang-llvm-6.0.1-darwin-macos \
|
|
||||||
target-sysroot-1-android_ndk \
|
|
||||||
target-toolchain-1-osx-android_ndk \
|
|
||||||
libffi-3.2.1-3-darwin-macos
|
|
||||||
targetToolchain.linux_x64-android_x64 = target-toolchain-1-linux-android_ndk
|
|
||||||
dependencies.linux_x64-android_x64 = \
|
|
||||||
clang-llvm-6.0.1-linux-x86-64 \
|
|
||||||
target-sysroot-1-android_ndk \
|
|
||||||
target-toolchain-1-linux-android_ndk \
|
|
||||||
libffi-3.2.1-2-linux-x86-64
|
|
||||||
targetToolchain.mingw_x64-android_x64 = target-toolchain-1-windows-android_ndk
|
|
||||||
dependencies.mingw_x64-android_x64 = \
|
|
||||||
msys2-mingw-w64-x86_64-gcc-7.3.0-clang-llvm-lld-6.0.1-2 \
|
|
||||||
target-sysroot-1-android_ndk \
|
|
||||||
target-toolchain-1-windows-android_ndk \
|
|
||||||
libffi-3.2.1-mingw-w64-x86-64
|
|
||||||
|
|
||||||
quadruple.android_arm64 = aarch64-linux-android
|
|
||||||
entrySelector.android_arm64 = -Wl,--defsym -Wl,main=Konan_main
|
|
||||||
clangFlags.android_arm64 = -cc1 -target-cpu cortex-a57 -emit-obj -disable-llvm-passes -x ir -femulated-tls -mrelocation-model pic
|
|
||||||
targetSysRoot.android_arm64 = target-sysroot-1-android_ndk
|
|
||||||
linkerKonanFlags.android_arm64 = -lm -lstdc++ -landroid -llog -latomic
|
|
||||||
linkerNoDebugFlags.android_arm64 = -Wl,-S
|
|
||||||
|
|
||||||
# Android X64, based on NDK.
|
|
||||||
targetToolchain.macos_x64-android_arm64 = target-toolchain-1-osx-android_ndk
|
targetToolchain.macos_x64-android_arm64 = target-toolchain-1-osx-android_ndk
|
||||||
dependencies.macos_x64-android_arm64 = \
|
dependencies.macos_x64-android_arm64 = \
|
||||||
clang-llvm-6.0.1-darwin-macos \
|
clang-llvm-6.0.1-darwin-macos \
|
||||||
@@ -418,12 +391,73 @@ dependencies.mingw_x64-android_arm64 = \
|
|||||||
target-toolchain-1-windows-android_ndk \
|
target-toolchain-1-windows-android_ndk \
|
||||||
libffi-3.2.1-mingw-w64-x86-64
|
libffi-3.2.1-mingw-w64-x86-64
|
||||||
|
|
||||||
|
quadruple.android_arm64 = aarch64-linux-android
|
||||||
|
entrySelector.android_arm64 = -Wl,--defsym -Wl,main=Konan_main
|
||||||
|
clangFlags.android_arm64 = -cc1 -target-cpu cortex-a57 -emit-obj -disable-llvm-passes -x ir -femulated-tls -mrelocation-model pic
|
||||||
|
clangOptFlags.android_arm64 = -O3 -ffunction-sections
|
||||||
|
clangNooptFlags.android_arm64 = -O1
|
||||||
|
targetSysRoot.android_arm64 = target-sysroot-1-android_ndk
|
||||||
|
linkerKonanFlags.android_arm64 = -lm -lstdc++ -landroid -llog -latomic
|
||||||
|
linkerNoDebugFlags.android_arm64 = -Wl,-S
|
||||||
|
|
||||||
|
# Android X86, based on NDK.
|
||||||
|
targetToolchain.macos_x64-android_x86 = target-toolchain-1-osx-android_ndk
|
||||||
|
dependencies.macos_x64-android_x86 = \
|
||||||
|
clang-llvm-6.0.1-darwin-macos \
|
||||||
|
target-sysroot-1-android_ndk \
|
||||||
|
target-toolchain-1-osx-android_ndk \
|
||||||
|
libffi-3.2.1-3-darwin-macos
|
||||||
|
targetToolchain.linux_x64-android_x86 = target-toolchain-1-linux-android_ndk
|
||||||
|
dependencies.linux_x64-android_x86 = \
|
||||||
|
clang-llvm-6.0.1-linux-x86-64 \
|
||||||
|
target-sysroot-1-android_ndk \
|
||||||
|
target-toolchain-1-linux-android_ndk \
|
||||||
|
libffi-3.2.1-2-linux-x86-64
|
||||||
|
targetToolchain.mingw_x64-android_x86 = target-toolchain-1-windows-android_ndk
|
||||||
|
dependencies.mingw_x64-android_x86 = \
|
||||||
|
msys2-mingw-w64-x86_64-gcc-7.3.0-clang-llvm-lld-6.0.1-2 \
|
||||||
|
target-sysroot-1-android_ndk \
|
||||||
|
target-toolchain-1-windows-android_ndk \
|
||||||
|
libffi-3.2.1-mingw-w64-x86-64
|
||||||
|
|
||||||
|
quadruple.android_x86 = i686-linux-android
|
||||||
|
entrySelector.android_x86 = -Wl,--defsym -Wl,main=Konan_main
|
||||||
|
clangFlags.android_x86 = -cc1 -target-cpu i686 -emit-obj -disable-llvm-passes -x ir -femulated-tls -mrelocation-model pic
|
||||||
|
clangOptFlags.android_x86 = -O3 -ffunction-sections
|
||||||
|
clangNooptFlags.android_x86 = -O1
|
||||||
|
targetSysRoot.android_x86 = target-sysroot-1-android_ndk
|
||||||
|
linkerKonanFlags.android_x86 = -lm -lstdc++ -landroid -llog -latomic
|
||||||
|
linkerNoDebugFlags.android_x86 = -Wl,-S
|
||||||
|
|
||||||
|
# Android X64, based on NDK.
|
||||||
|
targetToolchain.macos_x64-android_x64 = target-toolchain-1-osx-android_ndk
|
||||||
|
dependencies.macos_x64-android_x64 = \
|
||||||
|
clang-llvm-6.0.1-darwin-macos \
|
||||||
|
target-sysroot-1-android_ndk \
|
||||||
|
target-toolchain-1-osx-android_ndk \
|
||||||
|
libffi-3.2.1-3-darwin-macos
|
||||||
|
targetToolchain.linux_x64-android_x64 = target-toolchain-1-linux-android_ndk
|
||||||
|
dependencies.linux_x64-android_x64 = \
|
||||||
|
clang-llvm-6.0.1-linux-x86-64 \
|
||||||
|
target-sysroot-1-android_ndk \
|
||||||
|
target-toolchain-1-linux-android_ndk \
|
||||||
|
libffi-3.2.1-2-linux-x86-64
|
||||||
|
targetToolchain.mingw_x64-android_x64 = target-toolchain-1-windows-android_ndk
|
||||||
|
dependencies.mingw_x64-android_x64 = \
|
||||||
|
msys2-mingw-w64-x86_64-gcc-7.3.0-clang-llvm-lld-6.0.1-2 \
|
||||||
|
target-sysroot-1-android_ndk \
|
||||||
|
target-toolchain-1-windows-android_ndk \
|
||||||
|
libffi-3.2.1-mingw-w64-x86-64
|
||||||
|
|
||||||
quadruple.android_x64 = x86_64-linux-android
|
quadruple.android_x64 = x86_64-linux-android
|
||||||
entrySelector.android_x64 = -Wl,--defsym -Wl,main=Konan_main
|
entrySelector.android_x64 = -Wl,--defsym -Wl,main=Konan_main
|
||||||
clangFlags.android_x64 = -cc1 -target-cpu x86-64 -emit-obj -disable-llvm-passes -x ir -femulated-tls -mrelocation-model pic
|
clangFlags.android_x64 = -cc1 -target-cpu x86-64 -emit-obj -disable-llvm-passes -x ir -femulated-tls -mrelocation-model pic
|
||||||
|
clangOptFlags.android_x64 = -O3 -ffunction-sections
|
||||||
|
clangNooptFlags.android_x64 = -O1
|
||||||
targetSysRoot.android_x64 = target-sysroot-1-android_ndk
|
targetSysRoot.android_x64 = target-sysroot-1-android_ndk
|
||||||
linkerKonanFlags.android_x64 = -lm -lstdc++ -landroid -llog -latomic
|
linkerKonanFlags.android_x64 = -lm -lstdc++ -landroid -llog -latomic
|
||||||
linkerNoDebugFlags.android_ax64 = -Wl,-S
|
linkerNoDebugFlags.android_x64 = -Wl,-S
|
||||||
|
|
||||||
|
|
||||||
# Windows x86-64, based on mingw-w64.
|
# Windows x86-64, based on mingw-w64.
|
||||||
llvmHome.mingw_x64 = msys2-mingw-w64-x86_64-gcc-7.3.0-clang-llvm-lld-6.0.1-2
|
llvmHome.mingw_x64 = msys2-mingw-w64-x86_64-gcc-7.3.0-clang-llvm-lld-6.0.1-2
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.konan.file.File
|
|||||||
internal object Android {
|
internal object Android {
|
||||||
const val API = "21"
|
const val API = "21"
|
||||||
private val architectureMap = mapOf(
|
private val architectureMap = mapOf(
|
||||||
// KonanTarget.X86 to "x86",
|
KonanTarget.ANDROID_X86 to "x86",
|
||||||
KonanTarget.ANDROID_X64 to "x86_64",
|
KonanTarget.ANDROID_X64 to "x86_64",
|
||||||
KonanTarget.ANDROID_ARM32 to "arm",
|
KonanTarget.ANDROID_ARM32 to "arm",
|
||||||
KonanTarget.ANDROID_ARM64 to "arm64"
|
KonanTarget.ANDROID_ARM64 to "arm64"
|
||||||
@@ -85,7 +85,8 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con
|
|||||||
KonanTarget.IOS_X64 ->
|
KonanTarget.IOS_X64 ->
|
||||||
listOf("-stdlib=libc++", "-isysroot", absoluteTargetSysRoot, "-miphoneos-version-min=9.0.0")
|
listOf("-stdlib=libc++", "-isysroot", absoluteTargetSysRoot, "-miphoneos-version-min=9.0.0")
|
||||||
|
|
||||||
KonanTarget.ANDROID_ARM32, KonanTarget.ANDROID_ARM64, KonanTarget.ANDROID_X64 -> {
|
KonanTarget.ANDROID_ARM32, KonanTarget.ANDROID_ARM64,
|
||||||
|
KonanTarget.ANDROID_X86, KonanTarget.ANDROID_X64 -> {
|
||||||
val clangTarget = targetArg!!
|
val clangTarget = targetArg!!
|
||||||
val architectureDir = Android.architectureDirForTarget(target)
|
val architectureDir = Android.architectureDirForTarget(target)
|
||||||
val toolchainSysroot = "$absoluteTargetToolchain/sysroot"
|
val toolchainSysroot = "$absoluteTargetToolchain/sysroot"
|
||||||
@@ -113,7 +114,6 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con
|
|||||||
"-Xclang", "-isystem$absoluteTargetSysRoot/include/compat",
|
"-Xclang", "-isystem$absoluteTargetSysRoot/include/compat",
|
||||||
"-Xclang", "-isystem$absoluteTargetSysRoot/include/libc")
|
"-Xclang", "-isystem$absoluteTargetSysRoot/include/libc")
|
||||||
|
|
||||||
KonanTarget.ANDROID_X86 -> TODO("implement me")
|
|
||||||
KonanTarget.WATCHOS_ARM64 -> TODO("implement me")
|
KonanTarget.WATCHOS_ARM64 -> TODO("implement me")
|
||||||
KonanTarget.WATCHOS_ARM32 -> TODO("implement me")
|
KonanTarget.WATCHOS_ARM32 -> TODO("implement me")
|
||||||
KonanTarget.WATCHOS_X64 -> TODO("implement me")
|
KonanTarget.WATCHOS_X64 -> TODO("implement me")
|
||||||
@@ -251,6 +251,15 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con
|
|||||||
"-DKONAN_ARM64=1",
|
"-DKONAN_ARM64=1",
|
||||||
"-DKONAN_HAS_CXX11_EXCEPTION_FUNCTIONS=1")
|
"-DKONAN_HAS_CXX11_EXCEPTION_FUNCTIONS=1")
|
||||||
|
|
||||||
|
KonanTarget.ANDROID_X86 ->
|
||||||
|
listOf("-D__ANDROID__",
|
||||||
|
"-DUSE_GCC_UNWIND=1",
|
||||||
|
"-DUSE_ELF_SYMBOLS=1",
|
||||||
|
"-DELFSIZE=32",
|
||||||
|
"-DKONAN_ANDROID=1",
|
||||||
|
"-DKONAN_X86=1",
|
||||||
|
"-DKONAN_HAS_CXX11_EXCEPTION_FUNCTIONS=1")
|
||||||
|
|
||||||
KonanTarget.ANDROID_X64 ->
|
KonanTarget.ANDROID_X64 ->
|
||||||
listOf("-D__ANDROID__",
|
listOf("-D__ANDROID__",
|
||||||
"-DUSE_GCC_UNWIND=1",
|
"-DUSE_GCC_UNWIND=1",
|
||||||
@@ -271,7 +280,6 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con
|
|||||||
"-DKONAN_NO_MEMMEM",
|
"-DKONAN_NO_MEMMEM",
|
||||||
"-DKONAN_NO_CTORS_SECTION=1")
|
"-DKONAN_NO_CTORS_SECTION=1")
|
||||||
|
|
||||||
KonanTarget.ANDROID_X86 -> TODO("implement me")
|
|
||||||
KonanTarget.WATCHOS_ARM64 -> TODO("implement me")
|
KonanTarget.WATCHOS_ARM64 -> TODO("implement me")
|
||||||
KonanTarget.WATCHOS_ARM32 -> TODO("implement me")
|
KonanTarget.WATCHOS_ARM32 -> TODO("implement me")
|
||||||
KonanTarget.WATCHOS_X64 -> TODO("implement me")
|
KonanTarget.WATCHOS_X64 -> TODO("implement me")
|
||||||
|
|||||||
@@ -44,13 +44,13 @@ fun loadConfigurables(target: KonanTarget, properties: Properties, baseDir: Stri
|
|||||||
LinuxMIPSConfigurablesImpl(target, properties, baseDir)
|
LinuxMIPSConfigurablesImpl(target, properties, baseDir)
|
||||||
KonanTarget.MACOS_X64, KonanTarget.IOS_ARM32, KonanTarget.IOS_ARM64, KonanTarget.IOS_X64 ->
|
KonanTarget.MACOS_X64, KonanTarget.IOS_ARM32, KonanTarget.IOS_ARM64, KonanTarget.IOS_X64 ->
|
||||||
AppleConfigurablesImpl(target, properties, baseDir)
|
AppleConfigurablesImpl(target, properties, baseDir)
|
||||||
KonanTarget.ANDROID_ARM32, KonanTarget.ANDROID_ARM64, KonanTarget.ANDROID_X64 ->
|
KonanTarget.ANDROID_ARM32, KonanTarget.ANDROID_ARM64,
|
||||||
|
KonanTarget.ANDROID_X86, KonanTarget.ANDROID_X64 ->
|
||||||
AndroidConfigurablesImpl(target, properties, baseDir)
|
AndroidConfigurablesImpl(target, properties, baseDir)
|
||||||
KonanTarget.MINGW_X64, KonanTarget.MINGW_X86 ->
|
KonanTarget.MINGW_X64, KonanTarget.MINGW_X86 ->
|
||||||
MingwConfigurablesImpl(target, properties, baseDir)
|
MingwConfigurablesImpl(target, properties, baseDir)
|
||||||
KonanTarget.WASM32 ->
|
KonanTarget.WASM32 ->
|
||||||
WasmConfigurablesImpl(target, properties, baseDir)
|
WasmConfigurablesImpl(target, properties, baseDir)
|
||||||
KonanTarget.ANDROID_X86-> TODO("unimplemented: $target")
|
|
||||||
KonanTarget.WATCHOS_ARM64, KonanTarget.WATCHOS_ARM32, KonanTarget.WATCHOS_X64, KonanTarget.WATCHOS_X86-> TODO("unimplemented: $target")
|
KonanTarget.WATCHOS_ARM64, KonanTarget.WATCHOS_ARM32, KonanTarget.WATCHOS_X64, KonanTarget.WATCHOS_X86-> TODO("unimplemented: $target")
|
||||||
KonanTarget.TVOS_ARM64, KonanTarget.TVOS_X64 -> TODO("unimplemented: $target")
|
KonanTarget.TVOS_ARM64, KonanTarget.TVOS_X64 -> TODO("unimplemented: $target")
|
||||||
is KonanTarget.ZEPHYR ->
|
is KonanTarget.ZEPHYR ->
|
||||||
|
|||||||
@@ -439,13 +439,13 @@ fun linker(configurables: Configurables): LinkerFlags =
|
|||||||
LinuxBasedLinker(configurables as LinuxMIPSConfigurables)
|
LinuxBasedLinker(configurables as LinuxMIPSConfigurables)
|
||||||
KonanTarget.MACOS_X64, KonanTarget.IOS_ARM32, KonanTarget.IOS_ARM64, KonanTarget.IOS_X64 ->
|
KonanTarget.MACOS_X64, KonanTarget.IOS_ARM32, KonanTarget.IOS_ARM64, KonanTarget.IOS_X64 ->
|
||||||
MacOSBasedLinker(configurables as AppleConfigurables)
|
MacOSBasedLinker(configurables as AppleConfigurables)
|
||||||
KonanTarget.ANDROID_ARM32, KonanTarget.ANDROID_ARM64, KonanTarget.ANDROID_X64 ->
|
KonanTarget.ANDROID_ARM32, KonanTarget.ANDROID_ARM64,
|
||||||
|
KonanTarget.ANDROID_X86, KonanTarget.ANDROID_X64 ->
|
||||||
AndroidLinker(configurables as AndroidConfigurables)
|
AndroidLinker(configurables as AndroidConfigurables)
|
||||||
KonanTarget.MINGW_X64, KonanTarget.MINGW_X86 ->
|
KonanTarget.MINGW_X64, KonanTarget.MINGW_X86 ->
|
||||||
MingwLinker(configurables as MingwConfigurables)
|
MingwLinker(configurables as MingwConfigurables)
|
||||||
KonanTarget.WASM32 ->
|
KonanTarget.WASM32 ->
|
||||||
WasmLinker(configurables as WasmConfigurables)
|
WasmLinker(configurables as WasmConfigurables)
|
||||||
KonanTarget.ANDROID_X86 -> TODO("implement me")
|
|
||||||
KonanTarget.WATCHOS_ARM64 -> TODO("implement me")
|
KonanTarget.WATCHOS_ARM64 -> TODO("implement me")
|
||||||
KonanTarget.WATCHOS_ARM32 -> TODO("implement me")
|
KonanTarget.WATCHOS_ARM32 -> TODO("implement me")
|
||||||
KonanTarget.WATCHOS_X64 -> TODO("implement me")
|
KonanTarget.WATCHOS_X64 -> TODO("implement me")
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ class PlatformManager(distribution: Distribution = Distribution(), experimental:
|
|||||||
* TODO: Don't forget to delete this field and replace all its usages to `enabled`.
|
* TODO: Don't forget to delete this field and replace all its usages to `enabled`.
|
||||||
*/
|
*/
|
||||||
val filteredOutEnabledButNotSupported
|
val filteredOutEnabledButNotSupported
|
||||||
get() = enabled.filterNot { it == KonanTarget.ANDROID_X86 || it == KonanTarget.WATCHOS_X64 ||
|
get() = enabled.filterNot { it == KonanTarget.WATCHOS_X64 ||
|
||||||
it == KonanTarget.WATCHOS_X86|| it == KonanTarget.WATCHOS_ARM64 || it == KonanTarget.WATCHOS_ARM32 ||
|
it == KonanTarget.WATCHOS_X86|| it == KonanTarget.WATCHOS_ARM64 || it == KonanTarget.WATCHOS_ARM32 ||
|
||||||
it == KonanTarget.TVOS_X64 || it == KonanTarget.TVOS_ARM64}
|
it == KonanTarget.TVOS_X64 || it == KonanTarget.TVOS_ARM64}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user