mirror of
https://github.com/odin-lang/Odin.git
synced 2026-07-15 20:30:31 +00:00
fix: reworked the playdate subtarget to fix issues with the requirement for single point precision floats, as well as an issue with function lowering when set to thumb mode only instrunctions.
This commit is contained in:
@@ -1960,14 +1960,17 @@ gb_internal void init_build_context(TargetMetrics *cross_target, Subtarget subta
|
||||
break;
|
||||
}
|
||||
} else if (subtarget == Subtarget_Playdate) {
|
||||
// Playdate uses the cortex-m7 as well and an FPU, requiring thumb instructions and hard floats.
|
||||
bc->microarch = str_lit("cortex-m7");
|
||||
bc->metrics.target_triplet = str_lit("thumbv7em-none-eabihf");
|
||||
// Remove MOVW/MOVT instructions as playdate only handles R_ARM_ABS32 relocations.
|
||||
// Uses generic triplet and arch to avoid issues with the playdates
|
||||
// single precision float fpu as well as issues with function lowering
|
||||
// when using the thumbv7em triplet.
|
||||
bc->metrics.target_triplet = str_lit("arm-unknown-unknown-gnueabihf");
|
||||
//no-movt required as playdate doesn't support it
|
||||
String const playdate_features = str_lit("no-movt,armv7e-m,thumb2,m7,fpregs");
|
||||
|
||||
if(bc->target_features_string.len > 0) {
|
||||
bc->target_features_string = concatenate_strings(permanent_allocator(), bc->target_features_string, str_lit(",no-movt"));
|
||||
bc->target_features_string = concatenate3_strings(permanent_allocator(), playdate_features, str_lit(","), bc->target_features_string);
|
||||
} else {
|
||||
bc->target_features_string = str_lit("no-movt");
|
||||
bc->target_features_string = playdate_features;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user