mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
Add iOS and Android targets.
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user