mingw_x86 target

This commit is contained in:
Mike Sinkovsky
2019-02-07 18:39:29 +05:00
committed by Sergey Bogolepov
parent 147c7d2c3e
commit e1d2f783fe
5 changed files with 32 additions and 5 deletions
+24
View File
@@ -358,6 +358,30 @@ dependencies.mingw_x64 = \
msys2-mingw-w64-x86_64-gcc-7.3.0-clang-llvm-lld-6.0.1 \
libffi-3.2.1-mingw-w64-x86-64
# Windows i686, based on mingw-w64.
targetToolchain.mingw_x64-mingw_x86 = msys2-mingw-w64-i686-gcc-7.3.0-clang-llvm-lld-6.0.1
dependencies.mingw_x64-mingw_x86 = \
msys2-mingw-w64-i686-gcc-7.3.0-clang-llvm-lld-6.0.1 \
msys2-mingw-w64-x86_64-gcc-7.3.0-clang-llvm-lld-6.0.1 \
libffi-3.2.1-mingw-w64-x86-64
quadruple.mingw_x86 = i686-w64-mingw32
targetSysRoot.mingw_x86 = msys2-mingw-w64-i686-gcc-7.3.0-clang-llvm-lld-6.0.1
# For using with Universal Windows Platform (UWP) we need to use this slower option.
# See https://youtrack.jetbrains.com/issue/KT-27654.
# TODO: remove, once fixed in mingw, check with the bug testcase.
llvmLtoFlags.mingw_x86 = -emulated-tls
llvmLtoOptFlags.mingw_x86 = -O3 -function-sections
llvmLtoNooptFlags.mingw_x86 = -O1
linkerNoDebugFlags.mingw_x86 = -Wl,-S
linkerDynamicFlags.mingw_x86 = -shared
linkerKonanFlags.mingw_x86 = -static-libgcc -static-libstdc++ \
-Xclang -flto-visibility-public-std -Wl,--dynamicbase \
-Wl,-Bstatic,--whole-archive -lwinpthread -Wl,--no-whole-archive,-Bdynamic \
-Wl,--defsym,___cxa_demangle=_Konan_cxa_demangle
linkerOptimizationFlags.mingw_x86 = -Wl,--gc-sections
entrySelector.mingw_x86 = -Wl,--defsym,_main=_Konan_main
# WebAssembly 32-bit.
targetToolchain.macos_x64-wasm32 = target-toolchain-3-macos-wasm
dependencies.macos_x64-wasm32 = \
@@ -51,7 +51,7 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con
"-I$absoluteTargetSysRoot/usr/include/c++/4.9.4",
"-I$absoluteTargetSysRoot/usr/include/c++/4.9.4/mipsel-unknown-linux-gnu")
KonanTarget.MINGW_X64 ->
KonanTarget.MINGW_X64, KonanTarget.MINGW_X86 ->
listOf("-target", targetArg!!, "--sysroot=$absoluteTargetSysRoot", "-Xclang", "-flto-visibility-public-std")
KonanTarget.MACOS_X64 ->
@@ -149,7 +149,7 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con
"-DKONAN_NO_64BIT_ATOMIC=1",
"-DKONAN_NO_UNALIGNED_ACCESS=1")
KonanTarget.MINGW_X64 ->
KonanTarget.MINGW_X64, KonanTarget.MINGW_X86 ->
listOf("-DUSE_GCC_UNWIND=1",
"-DUSE_PE_COFF_SYMBOLS=1",
"-DKONAN_WINDOWS=1",
@@ -46,7 +46,7 @@ fun loadConfigurables(target: KonanTarget, properties: Properties, baseDir: Stri
AppleConfigurablesImpl(target, properties, baseDir)
KonanTarget.ANDROID_ARM32, KonanTarget.ANDROID_ARM64 ->
AndroidConfigurablesImpl(target, properties, baseDir)
KonanTarget.MINGW_X64 ->
KonanTarget.MINGW_X64, KonanTarget.MINGW_X86 ->
MingwConfigurablesImpl(target, properties, baseDir)
KonanTarget.WASM32 ->
WasmConfigurablesImpl(target, properties, baseDir)
@@ -35,6 +35,7 @@ enum class Family(val exeSuffix:String, val dynamicPrefix: String, val dynamicSu
enum class Architecture(val bitness: Int) {
X64(64),
X86(32),
ARM64(64),
ARM32(32),
MIPS32(32),
@@ -49,6 +50,7 @@ sealed class KonanTarget(override val name: String, val family: Family, val arch
object IOS_ARM64 : KonanTarget( "ios_arm64", Family.IOS, Architecture.ARM64)
object IOS_X64 : KonanTarget( "ios_x64", Family.IOS, Architecture.X64)
object LINUX_X64 : KonanTarget( "linux_x64", Family.LINUX, Architecture.X64)
object MINGW_X86 : KonanTarget( "mingw_x86", Family.MINGW, Architecture.X86)
object MINGW_X64 : KonanTarget( "mingw_x64", Family.MINGW, Architecture.X64)
object MACOS_X64 : KonanTarget( "macos_x64", Family.OSX, Architecture.X64)
object LINUX_ARM32_HFP :KonanTarget( "linux_arm32_hfp", Family.LINUX, Architecture.ARM32)
@@ -134,7 +136,7 @@ open class HostManager(protected val distribution: Distribution = Distribution()
ANDROID_ARM32, ANDROID_ARM64,
IOS_ARM32, IOS_ARM64, IOS_X64,
LINUX_X64, LINUX_ARM32_HFP, LINUX_MIPS32, LINUX_MIPSEL32,
MINGW_X64,
MINGW_X64, MINGW_X86,
MACOS_X64,
WASM32)
@@ -182,6 +184,7 @@ open class HostManager(protected val distribution: Distribution = Distribution()
) + zephyrSubtargets
KonanTarget.MINGW_X64 -> listOf(
KonanTarget.MINGW_X64,
KonanTarget.MINGW_X86,
KonanTarget.LINUX_X64,
KonanTarget.LINUX_ARM32_HFP,
KonanTarget.ANDROID_ARM32,
@@ -395,7 +395,7 @@ fun linker(configurables: Configurables): LinkerFlags =
MacOSBasedLinker(configurables as AppleConfigurables)
KonanTarget.ANDROID_ARM32, KonanTarget.ANDROID_ARM64 ->
AndroidLinker(configurables as AndroidConfigurables)
KonanTarget.MINGW_X64 ->
KonanTarget.MINGW_X64, KonanTarget.MINGW_X86 ->
MingwLinker(configurables as MingwConfigurables)
KonanTarget.WASM32 ->
WasmLinker(configurables as WasmConfigurables)