mirror of
https://github.com/Ed94/Odin.git
synced 2026-06-24 06:35:00 -07:00
Support subtargets in build tags: #build darwin:generic and #build linux:android, darwin:ios
This commit is contained in:
+30
-4
@@ -847,13 +847,39 @@ gb_global NamedTargetMetrics *selected_target_metrics;
|
||||
gb_global Subtarget selected_subtarget;
|
||||
|
||||
|
||||
gb_internal TargetOsKind get_target_os_from_string(String str) {
|
||||
gb_internal TargetOsKind get_target_os_from_string(String str, Subtarget *subtarget_ = nullptr) {
|
||||
String os_name = str;
|
||||
String subtarget = {};
|
||||
auto part = string_partition(str, str_lit(":"));
|
||||
if (part.match.len == 1) {
|
||||
os_name = part.head;
|
||||
subtarget = part.tail;
|
||||
}
|
||||
|
||||
TargetOsKind kind = TargetOs_Invalid;
|
||||
|
||||
for (isize i = 0; i < TargetOs_COUNT; i++) {
|
||||
if (str_eq_ignore_case(target_os_names[i], str)) {
|
||||
return cast(TargetOsKind)i;
|
||||
if (str_eq_ignore_case(target_os_names[i], os_name)) {
|
||||
kind = cast(TargetOsKind)i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return TargetOs_Invalid;
|
||||
if (subtarget_) *subtarget_ = Subtarget_Default;
|
||||
|
||||
if (subtarget.len != 0) {
|
||||
if (str_eq_ignore_case(subtarget, "generic") || str_eq_ignore_case(subtarget, "default")) {
|
||||
if (subtarget_) *subtarget_ = Subtarget_Default;
|
||||
} else {
|
||||
for (isize i = 1; i < Subtarget_COUNT; i++) {
|
||||
if (str_eq_ignore_case(subtarget_strings[i], subtarget)) {
|
||||
if (subtarget_) *subtarget_ = cast(Subtarget)i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return kind;
|
||||
}
|
||||
|
||||
gb_internal TargetArchKind get_target_arch_from_string(String str) {
|
||||
|
||||
Reference in New Issue
Block a user