Add iOS and Android targets.

This commit is contained in:
Christoffer Lerno
2024-08-22 00:31:03 +02:00
parent b46463563e
commit abbd94e89b
5 changed files with 17 additions and 32 deletions

View File

@@ -321,6 +321,7 @@ typedef enum
typedef enum
{
ARCH_OS_TARGET_DEFAULT = 0,
ANDROID_AARCH64,
ELF_AARCH64,
ELF_RISCV32,
ELF_RISCV64,
@@ -329,6 +330,7 @@ typedef enum
ELF_XTENSA,
FREEBSD_X86,
FREEBSD_X64,
IOS_AARCH64,
LINUX_AARCH64,
LINUX_RISCV32,
LINUX_RISCV64,

View File

@@ -17,6 +17,7 @@ extern const char *llvm_version;
extern const char *llvm_target;
char *arch_os_target[ARCH_OS_TARGET_LAST + 1] = {
[ANDROID_AARCH64] = "android-aarch64",
[ELF_AARCH64] = "elf-aarch64",
[ELF_RISCV32] = "elf-riscv32",
[ELF_RISCV64] = "elf-riscv64",
@@ -25,6 +26,7 @@ char *arch_os_target[ARCH_OS_TARGET_LAST + 1] = {
[ELF_XTENSA] = "elf-xtensa",
[FREEBSD_X86] = "freebsd-x86",
[FREEBSD_X64] = "freebsd-x64",
[IOS_AARCH64] = "ios-aarch64",
[LINUX_AARCH64] = "linux-aarch64",
[LINUX_RISCV32] = "linux-riscv32",
[LINUX_RISCV64] = "linux-riscv64",

View File

@@ -1009,12 +1009,14 @@ static int jump_buffer_size()
case OPENBSD_X64:
REMINDER("Guessing setjmp for platform.");
return 32;
case ANDROID_AARCH64:
case LINUX_AARCH64:
case ELF_AARCH64:
return 39;
case WINDOWS_AARCH64:
// Based on Godbolt
return 24;
case IOS_AARCH64:
case MACOS_AARCH64:
// Based on macOS headers
return 25;

View File

@@ -594,10 +594,7 @@ Linker linker_find_linker_type(void)
case OS_TYPE_NETBSD:
case OS_TYPE_OPENBSD:
return LINKER_LD;
case OS_TYPE_IOS:
case OS_TYPE_MACOSX:
case OS_TYPE_TVOS:
case OS_TYPE_WATCHOS:
case OS_DARWIN_TYPES:
return LINKER_LD64;
case OS_TYPE_WIN32:
return LINKER_LINK_EXE;

View File

@@ -113,15 +113,12 @@ static bool os_target_use_thread_local(OsType os)
case OS_TYPE_UNKNOWN:
case OS_TYPE_NONE:
return false;
case OS_DARWIN_TYPES:
case OS_TYPE_FREE_BSD:
case OS_TYPE_IOS:
case OS_TYPE_LINUX:
case OS_TYPE_MACOSX:
case OS_TYPE_NETBSD:
case OS_TYPE_OPENBSD:
case OS_TYPE_WIN32:
case OS_TYPE_TVOS:
case OS_TYPE_WATCHOS:
case OS_TYPE_WASI:
return true;
}
@@ -253,10 +250,7 @@ static inline void target_setup_x86_abi(BuildTarget *target)
compiler.platform.x86.is_mcu_api = compiler.platform.os == OS_TYPE_ELFIAMCU;
switch (compiler.platform.os)
{
case OS_TYPE_MACOSX:
case OS_TYPE_IOS:
case OS_TYPE_WATCHOS:
case OS_TYPE_TVOS:
case OS_DARWIN_TYPES:
case OS_TYPE_DRAGON_FLY:
case OS_TYPE_FREE_BSD:
case OS_TYPE_ELFIAMCU:
@@ -1047,7 +1041,9 @@ static char *arch_to_target_triple[ARCH_OS_TARGET_LAST + 1] = {
[FREEBSD_X64] = "x86_64-pc-freebsd",
[OPENBSD_X64] = "x86_64-pc-openbsd",
[ELF_X64] = "x86_64-unknown-elf",
[ANDROID_AARCH64] = "aarch64-unknown-linux-android",
[LINUX_AARCH64] = "aarch64-unknown-linux-gnu",
[IOS_AARCH64] = "aarch64-apple-ios",
[MACOS_AARCH64] = "aarch64-apple-macosx",
[ELF_AARCH64] = "aarch64-unknown-elf",
[WINDOWS_AARCH64] = "aarch64-pc-windows-msvc",
@@ -1423,10 +1419,7 @@ static ObjectFormatType object_format_from_os(OsType os, ArchType arch_type)
case OS_TYPE_OPENBSD:
case OS_TYPE_FREE_BSD:
return OBJ_FORMAT_ELF;
case OS_TYPE_MACOSX:
case OS_TYPE_IOS:
case OS_TYPE_TVOS:
case OS_TYPE_WATCHOS:
case OS_DARWIN_TYPES:
return OBJ_FORMAT_MACHO;
case OS_TYPE_WIN32:
return OBJ_FORMAT_COFF;
@@ -1475,7 +1468,7 @@ static unsigned os_target_c_type_bits(OsType os, ArchType arch, CType type)
}
// Use default
break;
case OS_TYPE_MACOSX:
case OS_DARWIN_TYPES:
case OS_TYPE_LINUX:
case OS_TYPE_NONE:
case OS_TYPE_FREE_BSD:
@@ -1497,21 +1490,6 @@ static unsigned os_target_c_type_bits(OsType os, ArchType arch, CType type)
default:
UNREACHABLE
}
case OS_TYPE_IOS:
case OS_TYPE_TVOS:
case OS_TYPE_WATCHOS:
switch (type)
{
case CTYPE_SHORT:
return 16;
case CTYPE_INT:
return 32;
case CTYPE_LONG:
case CTYPE_LONG_LONG:
return 64;
default:
UNREACHABLE
}
}
switch (type)
{
@@ -2035,6 +2013,10 @@ void target_setup(BuildTarget *target)
compiler.platform.reloc_model = target->reloc_model;
}
if (compiler.platform.os == OS_TYPE_IOS)
{
WARNING("iOS not properly supported yet.");
}
if (compiler.platform.os == OS_TYPE_MACOSX)
{
if (!compiler.build.macos.sysroot) compiler.build.macos.sysroot = macos_sysroot();