[SITL OSX] Fix some of the warnings and add macosx SITL build to workflows (#9063)
commit69bd3e9d9376152b9c1f6c9ea01e2b4a96baa752
authorMarcelo Bezerra <23555060+mmosca@users.noreply.github.com>
Thu, 25 May 2023 11:12:03 +0000 (25 13:12 +0200)
committerGitHub <noreply@github.com>
Thu, 25 May 2023 11:12:03 +0000 (25 13:12 +0200)
tree42f57f14e1f936330c3a18ba1d20b12cd78128c5
parentccd75e7a2e69443bc2a8acca83e380a08840e58a
[SITL OSX] Fix some of the warnings and add macosx SITL build to workflows (#9063)

clang can be verbose with warnings, but some of it is probably valid when building a 64bit binary.

Highlighted changes:

* Call float versions of math functions to avoid conversion to double by the compiler (absf, sqrtf, roundf, etc)
* Make sure floating point constants are marked as floats, to avoid conversion to double by the compiler. (1.0 is a double, 1.0f is a float and when doing math between float and double, all values get upgraded to double!)
* Changed memcpy_fn in unit test AND SITL builds to be a macro to memcpy (instead of inline function calling memcpy), this fixes linker errors for memcpy as macos compiler mangles the symbol in a different way and would not work with asm("memcpy") call.
* Some simulator code made heavy use of doubles, but since all the data in INAV is float, that is probably overkill and some functions/macros had float in the name, while upconvertting to double.

Open questions:

* Should scale in osdFormatCentiNumber be changed to float? It is currently uint32_t but some of the scale defines are, correctly, not integer numbers.
* I changed CENTIDEGREES_TO_DEGREES to use float on the division path, but the code seems to be ok, or assuming it would be converted to integer anyway. Is this the correct solution?
* This still does not fix the invalid settings issues, I suspect it is related to the lack of linker scripts in clang, to preserve the section data of settings.
* Binary is still not multi platform (arm/x86_64).
42 files changed:
.github/workflows/ci.yml
cmake/sitl.cmake
lib/main/MAVLink/mavlink_helpers.h
src/main/blackbox/blackbox.c
src/main/cms/cms_types.h
src/main/common/constants.h
src/main/common/maths.c
src/main/common/maths.h
src/main/common/memory.c
src/main/common/quaternion.h
src/main/common/utils.h
src/main/drivers/rangefinder/rangefinder_vl53l0x.c
src/main/fc/fc_core.c
src/main/fc/runtime_config.c
src/main/fc/stats.c
src/main/flight/imu.c
src/main/flight/mixer.c
src/main/flight/pid.c
src/main/flight/power_limits.c
src/main/flight/rth_estimator.c
src/main/flight/smith_predictor.c
src/main/io/dashboard.c
src/main/io/frsky_osd.c
src/main/io/osd.c
src/main/io/osd_canvas.c
src/main/io/osd_dji_hd.c
src/main/io/osd_hud.c
src/main/navigation/navigation.c
src/main/navigation/navigation_fixedwing.c
src/main/rx/sbus.c
src/main/rx/srxl2.c
src/main/sensors/battery.c
src/main/sensors/gyro.c
src/main/sensors/opflow.c
src/main/sensors/temperature.c
src/main/target/SITL/sim/realFlight.c
src/main/target/SITL/sim/simHelper.c
src/main/target/SITL/sim/simHelper.h
src/main/target/SITL/sim/xplane.c
src/main/telemetry/sim.c
src/main/telemetry/sim.h
src/utils/settings.rb