|
@@ -632,6 +632,10 @@ enum BuildFlagKind {
|
|
BuildFlag_ExtraLinkerFlags,
|
|
BuildFlag_ExtraLinkerFlags,
|
|
BuildFlag_ExtraAssemblerFlags,
|
|
BuildFlag_ExtraAssemblerFlags,
|
|
BuildFlag_Microarch,
|
|
BuildFlag_Microarch,
|
|
|
|
+ BuildFlag_TargetFeatures,
|
|
|
|
+
|
|
|
|
+ BuildFlag_RelocMode,
|
|
|
|
+ BuildFlag_DisableRedZone,
|
|
|
|
|
|
BuildFlag_TestName,
|
|
BuildFlag_TestName,
|
|
|
|
|
|
@@ -640,6 +644,8 @@ enum BuildFlagKind {
|
|
BuildFlag_InsertSemicolon,
|
|
BuildFlag_InsertSemicolon,
|
|
BuildFlag_StrictStyle,
|
|
BuildFlag_StrictStyle,
|
|
BuildFlag_StrictStyleInitOnly,
|
|
BuildFlag_StrictStyleInitOnly,
|
|
|
|
+ BuildFlag_ForeignErrorProcedures,
|
|
|
|
+ BuildFlag_DisallowRTTI,
|
|
|
|
|
|
BuildFlag_Compact,
|
|
BuildFlag_Compact,
|
|
BuildFlag_GlobalDefinitions,
|
|
BuildFlag_GlobalDefinitions,
|
|
@@ -784,7 +790,11 @@ bool parse_build_flags(Array<String> args) {
|
|
add_flag(&build_flags, BuildFlag_IgnoreUnknownAttributes, str_lit("ignore-unknown-attributes"), BuildFlagParam_None, Command__does_check);
|
|
add_flag(&build_flags, BuildFlag_IgnoreUnknownAttributes, str_lit("ignore-unknown-attributes"), BuildFlagParam_None, Command__does_check);
|
|
add_flag(&build_flags, BuildFlag_ExtraLinkerFlags, str_lit("extra-linker-flags"), BuildFlagParam_String, Command__does_build);
|
|
add_flag(&build_flags, BuildFlag_ExtraLinkerFlags, str_lit("extra-linker-flags"), BuildFlagParam_String, Command__does_build);
|
|
add_flag(&build_flags, BuildFlag_ExtraAssemblerFlags, str_lit("extra-assembler-flags"), BuildFlagParam_String, Command__does_build);
|
|
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_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_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);
|
|
|
|
|
|
add_flag(&build_flags, BuildFlag_TestName, str_lit("test-name"), BuildFlagParam_String, Command_test);
|
|
add_flag(&build_flags, BuildFlag_TestName, str_lit("test-name"), BuildFlagParam_String, Command_test);
|
|
|
|
|
|
@@ -793,10 +803,16 @@ bool parse_build_flags(Array<String> args) {
|
|
add_flag(&build_flags, BuildFlag_InsertSemicolon, str_lit("insert-semicolon"), BuildFlagParam_None, Command__does_check);
|
|
add_flag(&build_flags, BuildFlag_InsertSemicolon, str_lit("insert-semicolon"), BuildFlagParam_None, Command__does_check);
|
|
add_flag(&build_flags, BuildFlag_StrictStyle, str_lit("strict-style"), BuildFlagParam_None, Command__does_check);
|
|
add_flag(&build_flags, BuildFlag_StrictStyle, str_lit("strict-style"), BuildFlagParam_None, Command__does_check);
|
|
add_flag(&build_flags, BuildFlag_StrictStyleInitOnly, str_lit("strict-style-init-only"), BuildFlagParam_None, Command__does_check);
|
|
add_flag(&build_flags, BuildFlag_StrictStyleInitOnly, str_lit("strict-style-init-only"), BuildFlagParam_None, Command__does_check);
|
|
|
|
+ add_flag(&build_flags, BuildFlag_ForeignErrorProcedures, str_lit("foreign-error-procedures"), BuildFlagParam_None, Command__does_check);
|
|
|
|
+
|
|
|
|
+ add_flag(&build_flags, BuildFlag_DisallowRTTI, str_lit("disallow-rtti"), BuildFlagParam_None, Command__does_check);
|
|
|
|
+
|
|
|
|
+
|
|
add_flag(&build_flags, BuildFlag_Compact, str_lit("compact"), BuildFlagParam_None, Command_query);
|
|
add_flag(&build_flags, BuildFlag_Compact, str_lit("compact"), BuildFlagParam_None, Command_query);
|
|
add_flag(&build_flags, BuildFlag_GlobalDefinitions, str_lit("global-definitions"), BuildFlagParam_None, Command_query);
|
|
add_flag(&build_flags, BuildFlag_GlobalDefinitions, str_lit("global-definitions"), BuildFlagParam_None, Command_query);
|
|
add_flag(&build_flags, BuildFlag_GoToDefinitions, str_lit("go-to-definitions"), BuildFlagParam_None, Command_query);
|
|
add_flag(&build_flags, BuildFlag_GoToDefinitions, str_lit("go-to-definitions"), BuildFlagParam_None, Command_query);
|
|
|
|
|
|
|
|
+
|
|
add_flag(&build_flags, BuildFlag_Short, str_lit("short"), BuildFlagParam_None, Command_doc);
|
|
add_flag(&build_flags, BuildFlag_Short, str_lit("short"), BuildFlagParam_None, Command_doc);
|
|
add_flag(&build_flags, BuildFlag_AllPackages, str_lit("all-packages"), BuildFlagParam_None, Command_doc);
|
|
add_flag(&build_flags, BuildFlag_AllPackages, str_lit("all-packages"), BuildFlagParam_None, Command_doc);
|
|
add_flag(&build_flags, BuildFlag_DocFormat, str_lit("doc-format"), BuildFlagParam_None, Command_doc);
|
|
add_flag(&build_flags, BuildFlag_DocFormat, str_lit("doc-format"), BuildFlagParam_None, Command_doc);
|
|
@@ -1343,6 +1359,37 @@ bool parse_build_flags(Array<String> args) {
|
|
string_to_lower(&build_context.microarch);
|
|
string_to_lower(&build_context.microarch);
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
|
|
+ case BuildFlag_TargetFeatures: {
|
|
|
|
+ GB_ASSERT(value.kind == ExactValue_String);
|
|
|
|
+ build_context.target_features = value.value_string;
|
|
|
|
+ string_to_lower(&build_context.target_features);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ case BuildFlag_RelocMode: {
|
|
|
|
+ GB_ASSERT(value.kind == ExactValue_String);
|
|
|
|
+ String v = value.value_string;
|
|
|
|
+ if (v == "default") {
|
|
|
|
+ build_context.reloc_mode = RelocMode_Default;
|
|
|
|
+ } else if (v == "static") {
|
|
|
|
+ build_context.reloc_mode = RelocMode_Static;
|
|
|
|
+ } else if (v == "pic") {
|
|
|
|
+ build_context.reloc_mode = RelocMode_PIC;
|
|
|
|
+ } else if (v == "dynamic-no-pic") {
|
|
|
|
+ build_context.reloc_mode = RelocMode_DynamicNoPIC;
|
|
|
|
+ } else {
|
|
|
|
+ gb_printf_err("-reloc-mode flag expected one of the following\n");
|
|
|
|
+ gb_printf_err("\tdefault\n");
|
|
|
|
+ gb_printf_err("\tstatic\n");
|
|
|
|
+ gb_printf_err("\tpic\n");
|
|
|
|
+ gb_printf_err("\tdynamic-no-pic\n");
|
|
|
|
+ bad_flags = true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ case BuildFlag_DisableRedZone:
|
|
|
|
+ build_context.disable_red_zone = true;
|
|
|
|
+ break;
|
|
case BuildFlag_TestName: {
|
|
case BuildFlag_TestName: {
|
|
GB_ASSERT(value.kind == ExactValue_String);
|
|
GB_ASSERT(value.kind == ExactValue_String);
|
|
{
|
|
{
|
|
@@ -1361,9 +1408,15 @@ bool parse_build_flags(Array<String> args) {
|
|
case BuildFlag_DisallowDo:
|
|
case BuildFlag_DisallowDo:
|
|
build_context.disallow_do = true;
|
|
build_context.disallow_do = true;
|
|
break;
|
|
break;
|
|
|
|
+ case BuildFlag_DisallowRTTI:
|
|
|
|
+ build_context.disallow_rtti = true;
|
|
|
|
+ break;
|
|
case BuildFlag_DefaultToNilAllocator:
|
|
case BuildFlag_DefaultToNilAllocator:
|
|
build_context.ODIN_DEFAULT_TO_NIL_ALLOCATOR = true;
|
|
build_context.ODIN_DEFAULT_TO_NIL_ALLOCATOR = true;
|
|
break;
|
|
break;
|
|
|
|
+ case BuildFlag_ForeignErrorProcedures:
|
|
|
|
+ build_context.ODIN_FOREIGN_ERROR_PROCEDURES = true;
|
|
|
|
+ break;
|
|
case BuildFlag_InsertSemicolon: {
|
|
case BuildFlag_InsertSemicolon: {
|
|
gb_printf_err("-insert-semicolon flag is not required any more\n");
|
|
gb_printf_err("-insert-semicolon flag is not required any more\n");
|
|
bad_flags = true;
|
|
bad_flags = true;
|
|
@@ -2062,6 +2115,18 @@ void print_show_help(String const arg0, String const &command) {
|
|
print_usage_line(3, "-microarch:sandybridge");
|
|
print_usage_line(3, "-microarch:sandybridge");
|
|
print_usage_line(3, "-microarch:native");
|
|
print_usage_line(3, "-microarch:native");
|
|
print_usage_line(0, "");
|
|
print_usage_line(0, "");
|
|
|
|
+
|
|
|
|
+ print_usage_line(1, "-reloc-mode:<string>");
|
|
|
|
+ print_usage_line(2, "Specifies the reloc mode");
|
|
|
|
+ print_usage_line(2, "Options:");
|
|
|
|
+ print_usage_line(3, "default");
|
|
|
|
+ print_usage_line(3, "static");
|
|
|
|
+ print_usage_line(3, "pic");
|
|
|
|
+ print_usage_line(3, "dynamic-no-pic");
|
|
|
|
+ print_usage_line(0, "");
|
|
|
|
+
|
|
|
|
+ print_usage_line(1, "-disable-red-zone");
|
|
|
|
+ print_usage_line(2, "Disable red zone on a supported freestanding target");
|
|
}
|
|
}
|
|
|
|
|
|
if (check) {
|
|
if (check) {
|
|
@@ -2092,6 +2157,11 @@ void print_show_help(String const arg0, String const &command) {
|
|
print_usage_line(1, "-verbose-errors");
|
|
print_usage_line(1, "-verbose-errors");
|
|
print_usage_line(2, "Prints verbose error messages showing the code on that line and the location in that line");
|
|
print_usage_line(2, "Prints verbose error messages showing the code on that line and the location in that line");
|
|
print_usage_line(0, "");
|
|
print_usage_line(0, "");
|
|
|
|
+
|
|
|
|
+ print_usage_line(1, "-foreign-error-procedures");
|
|
|
|
+ print_usage_line(2, "States that the error procedues used in the runtime are defined in a separate translation unit");
|
|
|
|
+ print_usage_line(0, "");
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
if (run_or_build) {
|
|
if (run_or_build) {
|