diff options
| author | gingerBill <bill@gingerbill.org> | 2023-08-08 11:35:51 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2023-08-08 11:35:51 +0100 |
| commit | 939bf4bb5dd2c94f0e67d3193becf56ec9c7abf1 (patch) | |
| tree | fe2aa1ccb9b65d1e6ae78bb219b6fd010264ebca /src/build_settings.cpp | |
| parent | 7861dfd667aa8f610292b241269326911fba7b15 (diff) | |
Add experimental `-subtarget:ios`
Diffstat (limited to 'src/build_settings.cpp')
| -rw-r--r-- | src/build_settings.cpp | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/src/build_settings.cpp b/src/build_settings.cpp index ef68a399b..79f6e8a2c 100644 --- a/src/build_settings.cpp +++ b/src/build_settings.cpp @@ -123,6 +123,18 @@ struct TargetMetrics { TargetABIKind abi; }; +enum Subtarget : u32 { + Subtarget_Default, + Subtarget_iOS, + + Subtarget_COUNT, +}; + +gb_global String subtarget_strings[Subtarget_COUNT] = { + str_lit(""), + str_lit("ios"), +}; + enum QueryDataSetKind { QueryDataSet_Invalid, @@ -585,6 +597,8 @@ gb_global NamedTargetMetrics named_targets[] = { }; gb_global NamedTargetMetrics *selected_target_metrics; +gb_global Subtarget selected_subtarget; + gb_internal TargetOsKind get_target_os_from_string(String str) { for (isize i = 0; i < TargetOs_COUNT; i++) { @@ -1147,7 +1161,7 @@ gb_internal char *token_pos_to_string(TokenPos const &pos) { return s; } -gb_internal void init_build_context(TargetMetrics *cross_target) { +gb_internal void init_build_context(TargetMetrics *cross_target, Subtarget subtarget) { BuildContext *bc = &build_context; gb_affinity_init(&bc->affinity); @@ -1242,6 +1256,21 @@ gb_internal void init_build_context(TargetMetrics *cross_target) { bc->metrics = *metrics; + switch (subtarget) { + case Subtarget_Default: + break; + case Subtarget_iOS: + GB_ASSERT(metrics->os == TargetOs_darwin); + if (metrics->arch == TargetArch_arm64) { + bc->metrics.target_triplet = str_lit("arm64-apple-ios"); + } else if (metrics->arch == TargetArch_amd64) { + bc->metrics.target_triplet = str_lit("x86_64-apple-ios"); + } else { + GB_PANIC("Unknown architecture for darwin"); + } + break; + } + bc->ODIN_OS = target_os_names[metrics->os]; bc->ODIN_ARCH = target_arch_names[metrics->arch]; bc->endian_kind = target_endians[metrics->arch]; |