aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2024-03-24 13:33:37 +0000
committergingerBill <bill@gingerbill.org>2024-03-24 13:33:37 +0000
commit590e52cc05cb4350c75c551b7d724927bbdb9964 (patch)
treeecdb436259fb65637097f7379c92015c3ae0e6dc /src
parent398af659e59740463f569f4424c7e953d5968baf (diff)
parent2e416c1a48092d33f53135d77580f72adb1e585b (diff)
Merge branch 'master' of https://github.com/odin-lang/Odin
Diffstat (limited to 'src')
-rw-r--r--src/build_settings.cpp34
-rw-r--r--src/linker.cpp5
-rw-r--r--src/main.cpp2
3 files changed, 24 insertions, 17 deletions
diff --git a/src/build_settings.cpp b/src/build_settings.cpp
index 4be189cf1..19006ab2c 100644
--- a/src/build_settings.cpp
+++ b/src/build_settings.cpp
@@ -510,7 +510,7 @@ gb_global TargetMetrics target_darwin_amd64 = {
TargetOs_darwin,
TargetArch_amd64,
8, 8, 8, 16,
- str_lit("x86_64-apple-darwin"),
+ str_lit("x86_64-apple-macosx"), // NOTE: Changes during initialization based on build flags.
str_lit("e-m:o-i64:64-f80:128-n8:16:32:64-S128"),
};
@@ -518,7 +518,7 @@ gb_global TargetMetrics target_darwin_arm64 = {
TargetOs_darwin,
TargetArch_arm64,
8, 8, 8, 16,
- str_lit("arm64-apple-macosx11.0.0"),
+ str_lit("arm64-apple-macosx"), // NOTE: Changes during initialization based on build flags.
str_lit("e-m:o-i64:64-i128:128-n32:64-S128"),
};
@@ -1418,19 +1418,25 @@ gb_internal void init_build_context(TargetMetrics *cross_target, Subtarget subta
}
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");
+ if (metrics->os == TargetOs_darwin) {
+ if (bc->minimum_os_version_string.len == 0) {
+ bc->minimum_os_version_string = str_lit("11.0.0");
+ }
+
+ switch (subtarget) {
+ case Subtarget_Default:
+ bc->metrics.target_triplet = concatenate_strings(permanent_allocator(), bc->metrics.target_triplet, bc->minimum_os_version_string);
+ break;
+ case Subtarget_iOS:
+ 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;
}
- break;
}
bc->ODIN_OS = target_os_names[metrics->os];
diff --git a/src/linker.cpp b/src/linker.cpp
index 9d7f16f1d..6699c9cb8 100644
--- a/src/linker.cpp
+++ b/src/linker.cpp
@@ -502,7 +502,6 @@ gb_internal i32 linker_stage(LinkerData *gen) {
platform_lib_str = gb_string_appendc(platform_lib_str, "-L/opt/local/lib ");
}
- // This sets a requirement of Mountain Lion and up, but the compiler doesn't work without this limit.
if (build_context.minimum_os_version_string.len) {
link_settings = gb_string_append_fmt(link_settings, "-mmacosx-version-min=%.*s ", LIT(build_context.minimum_os_version_string));
}
@@ -513,7 +512,9 @@ gb_internal i32 linker_stage(LinkerData *gen) {
if (!build_context.no_crt) {
platform_lib_str = gb_string_appendc(platform_lib_str, "-lm ");
if (build_context.metrics.os == TargetOs_darwin) {
- platform_lib_str = gb_string_appendc(platform_lib_str, "-lSystem ");
+ // NOTE: adding this causes a warning about duplicate libraries, I think it is
+ // automatically assumed/added by clang when you don't do `-nostdlib`.
+ // platform_lib_str = gb_string_appendc(platform_lib_str, "-lSystem ");
} else {
platform_lib_str = gb_string_appendc(platform_lib_str, "-lc ");
}
diff --git a/src/main.cpp b/src/main.cpp
index ab721a143..9c353653f 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1925,7 +1925,7 @@ gb_internal void print_show_help(String const arg0, String const &command) {
if (run_or_build) {
print_usage_line(1, "-minimum-os-version:<string>");
print_usage_line(2, "Sets the minimum OS version targeted by the application.");
- print_usage_line(2, "Example: -minimum-os-version:12.0.0");
+ print_usage_line(2, "Default: -minimum-os-version:11.0.0");
print_usage_line(2, "(Only used when target is Darwin.)");
print_usage_line(0, "");