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).
Co-Authored-By: EMSR <10240646+shanggl@users.noreply.github.com>
Co-Authored-By: carl <101383042+tcdddd@users.noreply.github.com>
Co-Authored-By: Hugo Chiang <hugo@gyroflow.xyz>
Tests are now managed with cmake, with the intention of eventually
moving the whole build system to it. The root Makefile still has
a test target that has been adjusted to call into the appropriate
cmake commands.
Also, GTest library is now downloaded on demand the first time the
tests are run, so we can delete it from the repository.
* Initial cut on cleaning up makefile and libraries.
* F3, F4, F7 support
* Add 'make release' to build targets for release
* Introduce BUILD_SUFFIX options; Comment fix
* Fix USB core
* Fix F7 warnings
* Clean up STM32F1 code
* More cleanups of unused files
Fixes the LTO build with GCC 4.9. Tested on the STM32F3DISCOVERY. I
assume the compiler was doing cross function optimisation, saw that
the same non-volatile address was read twice, and dropped the second
read.
Fixes#763.
Signed-off-by: Michael Hope <mlhx@google.com>
Remove duplicate consts.
Pull in the include files where functions and variables are declared.
Mark file local but duplicated variables as static.
Mark some variable declarations as extern.
Remove duplicated variable definition.
Signed-off-by: Michael Hope <mlhx@google.com>