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_ARM64 -> "cortex-a57"
|
||||
KonanTarget.ANDROID_X64 -> "x86-64"
|
||||
KonanTarget.ANDROID_X86 -> TODO("implement me")
|
||||
KonanTarget.ANDROID_X86 -> "i686"
|
||||
KonanTarget.LINUX_MIPS32 -> "mips32r2"
|
||||
KonanTarget.LINUX_MIPSEL32 -> "mips32r2"
|
||||
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
|
||||
|
||||
# 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
|
||||
dependencies.macos_x64-android_arm64 = \
|
||||
clang-llvm-6.0.1-darwin-macos \
|
||||
@@ -418,12 +391,73 @@ dependencies.mingw_x64-android_arm64 = \
|
||||
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
|
||||
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
|
||||
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
|
||||
clangOptFlags.android_x64 = -O3 -ffunction-sections
|
||||
clangNooptFlags.android_x64 = -O1
|
||||
targetSysRoot.android_x64 = target-sysroot-1-android_ndk
|
||||
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.
|
||||
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 {
|
||||
const val API = "21"
|
||||
private val architectureMap = mapOf(
|
||||
// KonanTarget.X86 to "x86",
|
||||
KonanTarget.ANDROID_X86 to "x86",
|
||||
KonanTarget.ANDROID_X64 to "x86_64",
|
||||
KonanTarget.ANDROID_ARM32 to "arm",
|
||||
KonanTarget.ANDROID_ARM64 to "arm64"
|
||||
@@ -85,7 +85,8 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con
|
||||
KonanTarget.IOS_X64 ->
|
||||
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 architectureDir = Android.architectureDirForTarget(target)
|
||||
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/libc")
|
||||
|
||||
KonanTarget.ANDROID_X86 -> TODO("implement me")
|
||||
KonanTarget.WATCHOS_ARM64 -> TODO("implement me")
|
||||
KonanTarget.WATCHOS_ARM32 -> 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_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 ->
|
||||
listOf("-D__ANDROID__",
|
||||
"-DUSE_GCC_UNWIND=1",
|
||||
@@ -271,7 +280,6 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con
|
||||
"-DKONAN_NO_MEMMEM",
|
||||
"-DKONAN_NO_CTORS_SECTION=1")
|
||||
|
||||
KonanTarget.ANDROID_X86 -> TODO("implement me")
|
||||
KonanTarget.WATCHOS_ARM64 -> TODO("implement me")
|
||||
KonanTarget.WATCHOS_ARM32 -> 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)
|
||||
KonanTarget.MACOS_X64, KonanTarget.IOS_ARM32, KonanTarget.IOS_ARM64, KonanTarget.IOS_X64 ->
|
||||
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)
|
||||
KonanTarget.MINGW_X64, KonanTarget.MINGW_X86 ->
|
||||
MingwConfigurablesImpl(target, properties, baseDir)
|
||||
KonanTarget.WASM32 ->
|
||||
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.TVOS_ARM64, KonanTarget.TVOS_X64 -> TODO("unimplemented: $target")
|
||||
is KonanTarget.ZEPHYR ->
|
||||
|
||||
@@ -439,13 +439,13 @@ fun linker(configurables: Configurables): LinkerFlags =
|
||||
LinuxBasedLinker(configurables as LinuxMIPSConfigurables)
|
||||
KonanTarget.MACOS_X64, KonanTarget.IOS_ARM32, KonanTarget.IOS_ARM64, KonanTarget.IOS_X64 ->
|
||||
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)
|
||||
KonanTarget.MINGW_X64, KonanTarget.MINGW_X86 ->
|
||||
MingwLinker(configurables as MingwConfigurables)
|
||||
KonanTarget.WASM32 ->
|
||||
WasmLinker(configurables as WasmConfigurables)
|
||||
KonanTarget.ANDROID_X86 -> TODO("implement me")
|
||||
KonanTarget.WATCHOS_ARM64 -> TODO("implement me")
|
||||
KonanTarget.WATCHOS_ARM32 -> 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`.
|
||||
*/
|
||||
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.TVOS_X64 || it == KonanTarget.TVOS_ARM64}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user