mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-04 22:58:46 +00:00
-target-features:<string>
This just passes a string directly to the LLVM features string
This commit is contained in:
@@ -232,6 +232,7 @@ struct BuildContext {
|
|||||||
String extra_linker_flags;
|
String extra_linker_flags;
|
||||||
String extra_assembler_flags;
|
String extra_assembler_flags;
|
||||||
String microarch;
|
String microarch;
|
||||||
|
String target_features;
|
||||||
BuildModeKind build_mode;
|
BuildModeKind build_mode;
|
||||||
bool generate_docs;
|
bool generate_docs;
|
||||||
i32 optimization_level;
|
i32 optimization_level;
|
||||||
|
|||||||
@@ -1298,6 +1298,10 @@ void lb_generate_code(lbGenerator *gen) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (build_context.target_features.len != 0) {
|
||||||
|
llvm_features = alloc_cstring(permanent_allocator(), build_context.target_features);
|
||||||
|
}
|
||||||
|
|
||||||
// GB_ASSERT_MSG(LLVMTargetHasAsmBackend(target));
|
// GB_ASSERT_MSG(LLVMTargetHasAsmBackend(target));
|
||||||
|
|
||||||
LLVMCodeGenOptLevel code_gen_level = LLVMCodeGenLevelNone;
|
LLVMCodeGenOptLevel code_gen_level = LLVMCodeGenLevelNone;
|
||||||
|
|||||||
+9
-1
@@ -626,6 +626,7 @@ enum BuildFlagKind {
|
|||||||
BuildFlag_ExtraLinkerFlags,
|
BuildFlag_ExtraLinkerFlags,
|
||||||
BuildFlag_ExtraAssemblerFlags,
|
BuildFlag_ExtraAssemblerFlags,
|
||||||
BuildFlag_Microarch,
|
BuildFlag_Microarch,
|
||||||
|
BuildFlag_TargetFeatures,
|
||||||
|
|
||||||
BuildFlag_RelocMode,
|
BuildFlag_RelocMode,
|
||||||
BuildFlag_DisableRedZone,
|
BuildFlag_DisableRedZone,
|
||||||
@@ -783,7 +784,8 @@ 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_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_DisableRedZone, str_lit("disable-red-zone"), BuildFlagParam_None, Command__does_build);
|
||||||
@@ -1351,6 +1353,12 @@ 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: {
|
case BuildFlag_RelocMode: {
|
||||||
GB_ASSERT(value.kind == ExactValue_String);
|
GB_ASSERT(value.kind == ExactValue_String);
|
||||||
String v = value.value_string;
|
String v = value.value_string;
|
||||||
|
|||||||
@@ -10,10 +10,6 @@ struct String {
|
|||||||
u8 * text;
|
u8 * text;
|
||||||
isize len;
|
isize len;
|
||||||
|
|
||||||
// u8 &operator[](isize i) {
|
|
||||||
// GB_ASSERT_MSG(0 <= i && i < len, "[%td]", i);
|
|
||||||
// return text[i];
|
|
||||||
// }
|
|
||||||
u8 const &operator[](isize i) const {
|
u8 const &operator[](isize i) const {
|
||||||
GB_ASSERT_MSG(0 <= i && i < len, "[%td]", i);
|
GB_ASSERT_MSG(0 <= i && i < len, "[%td]", i);
|
||||||
return text[i];
|
return text[i];
|
||||||
@@ -33,10 +29,6 @@ struct String {
|
|||||||
struct String16 {
|
struct String16 {
|
||||||
wchar_t *text;
|
wchar_t *text;
|
||||||
isize len;
|
isize len;
|
||||||
wchar_t &operator[](isize i) {
|
|
||||||
GB_ASSERT_MSG(0 <= i && i < len, "[%td]", i);
|
|
||||||
return text[i];
|
|
||||||
}
|
|
||||||
wchar_t const &operator[](isize i) const {
|
wchar_t const &operator[](isize i) const {
|
||||||
GB_ASSERT_MSG(0 <= i && i < len, "[%td]", i);
|
GB_ASSERT_MSG(0 <= i && i < len, "[%td]", i);
|
||||||
return text[i];
|
return text[i];
|
||||||
|
|||||||
Reference in New Issue
Block a user