diff options
| author | gingerBill <bill@gingerbill.org> | 2022-11-01 14:45:57 +0000 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2022-11-01 14:45:57 +0000 |
| commit | 35331e6973280da2a0f9971a33842fb45d311aac (patch) | |
| tree | 16d0b40a7b9a40389937b7b269039e6b0da8eaab | |
| parent | c18e98e8c5659610127a24d33cacab2770668b1c (diff) | |
| parent | 3cd553565f5d86078e7f993b4a9c7e1dcc18e34b (diff) | |
Merge branch 'master' of https://github.com/odin-lang/Odin
| -rw-r--r-- | src/build_settings.cpp | 14 | ||||
| -rw-r--r-- | src/main.cpp | 26 |
2 files changed, 23 insertions, 17 deletions
diff --git a/src/build_settings.cpp b/src/build_settings.cpp index 02de22ec4..97ee9f2a3 100644 --- a/src/build_settings.cpp +++ b/src/build_settings.cpp @@ -298,17 +298,17 @@ struct BuildContext { bool ignore_microsoft_magic; bool linker_map_file; - bool use_separate_modules; - bool threaded_checker; + bool use_separate_modules; + bool threaded_checker; - bool show_debug_messages; + bool show_debug_messages; - bool copy_file_contents; + bool copy_file_contents; - bool disallow_rtti; + bool disallow_rtti; RelocMode reloc_mode; - bool disable_red_zone; + bool disable_red_zone; u32 cmd_doc_flags; @@ -326,7 +326,7 @@ struct BuildContext { BlockingMutex target_features_mutex; StringSet target_features_set; String target_features_string; - + String minimum_os_version_string; }; gb_global BuildContext build_context = {0}; diff --git a/src/main.cpp b/src/main.cpp index ae6bd174a..b75137613 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -481,9 +481,9 @@ i32 linker_stage(lbGenerator *gen) { if (build_context.metrics.os == TargetOs_darwin) { // This sets a requirement of Mountain Lion and up, but the compiler doesn't work without this limit. - // NOTE: If you change this (although this minimum is as low as you can go with Odin working) - // make sure to also change the 'mtriple' param passed to 'opt' - if (build_context.metrics.arch == TargetArch_arm64) { + 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)); + } else if (build_context.metrics.arch == TargetArch_arm64) { link_settings = gb_string_appendc(link_settings, " -mmacosx-version-min=12.0.0 "); } else { link_settings = gb_string_appendc(link_settings, " -mmacosx-version-min=10.12.0 "); @@ -624,6 +624,7 @@ enum BuildFlagKind { BuildFlag_ExtraAssemblerFlags, BuildFlag_Microarch, BuildFlag_TargetFeatures, + BuildFlag_MinimumOSVersion, BuildFlag_RelocMode, BuildFlag_DisableRedZone, @@ -797,6 +798,7 @@ bool parse_build_flags(Array<String> args) { add_flag(&build_flags, BuildFlag_ExtraAssemblerFlags, str_lit("extra-assembler-flags"), BuildFlagParam_String, Command__does_build); add_flag(&build_flags, BuildFlag_Microarch, str_lit("microarch"), BuildFlagParam_String, Command__does_build); add_flag(&build_flags, BuildFlag_TargetFeatures, str_lit("target-features"), BuildFlagParam_String, Command__does_build); + add_flag(&build_flags, BuildFlag_MinimumOSVersion, str_lit("minimum-os-version"), BuildFlagParam_String, Command__does_build); add_flag(&build_flags, BuildFlag_RelocMode, str_lit("reloc-mode"), BuildFlagParam_String, Command__does_build); add_flag(&build_flags, BuildFlag_DisableRedZone, str_lit("disable-red-zone"), BuildFlagParam_None, Command__does_build); @@ -1361,6 +1363,11 @@ bool parse_build_flags(Array<String> args) { string_to_lower(&build_context.target_features_string); break; } + case BuildFlag_MinimumOSVersion: { + GB_ASSERT(value.kind == ExactValue_String); + build_context.minimum_os_version_string = value.value_string; + break; + } case BuildFlag_RelocMode: { GB_ASSERT(value.kind == ExactValue_String); String v = value.value_string; @@ -1972,12 +1979,6 @@ void print_show_help(String const arg0, String const &command) { print_usage_line(2, "Example: -out:foo.exe"); print_usage_line(0, ""); - print_usage_line(1, "-opt:<integer>"); - print_usage_line(2, "Set the optimization level for compilation"); - print_usage_line(2, "Accepted values: 0, 1, 2, 3"); - print_usage_line(2, "Example: -opt:2"); - print_usage_line(0, ""); - print_usage_line(1, "-o:<string>"); print_usage_line(2, "Set the optimization mode for compilation"); print_usage_line(2, "Accepted values: minimal, size, speed"); @@ -2141,6 +2142,12 @@ 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, "e.g. -minimum-os-version:12.0.0"); + print_usage_line(2, "(Only used when target is Darwin)"); + print_usage_line(0, ""); + print_usage_line(1, "-extra-linker-flags:<string>"); print_usage_line(2, "Adds extra linker specific flags in a string"); print_usage_line(0, ""); @@ -2149,7 +2156,6 @@ void print_show_help(String const arg0, String const &command) { print_usage_line(2, "Adds extra assembler specific flags in a string"); print_usage_line(0, ""); - print_usage_line(1, "-microarch:<string>"); print_usage_line(2, "Specifies the specific micro-architecture for the build in a string"); print_usage_line(2, "Examples:"); |