aboutsummaryrefslogtreecommitdiff
path: root/src/build_settings.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2023-08-08 11:35:51 +0100
committergingerBill <bill@gingerbill.org>2023-08-08 11:35:51 +0100
commit939bf4bb5dd2c94f0e67d3193becf56ec9c7abf1 (patch)
treefe2aa1ccb9b65d1e6ae78bb219b6fd010264ebca /src/build_settings.cpp
parent7861dfd667aa8f610292b241269326911fba7b15 (diff)
Add experimental `-subtarget:ios`
Diffstat (limited to 'src/build_settings.cpp')
-rw-r--r--src/build_settings.cpp31
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];