From 0133dba0c6396d3cf6531c9164f6c37e4d2721a0 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sat, 9 Nov 2024 12:36:10 +0200 Subject: [PATCH] [CMAKE] Disable GCC builtin math functions --- sdk/cmake/gcc.cmake | 53 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/sdk/cmake/gcc.cmake b/sdk/cmake/gcc.cmake index a628c1b92c7..6043ab70e2e 100644 --- a/sdk/cmake/gcc.cmake +++ b/sdk/cmake/gcc.cmake @@ -56,6 +56,59 @@ if(CMAKE_C_COMPILER_ID STREQUAL "GNU") add_compile_options("$<$:-Wold-style-declaration>") endif() + # Disable all math intrinsics. The reason is that these are implicitly declared + # extern by GCC, which causes inline functions to generate global symbols. + # And since GCC is retarded, these symbols are not marked as weak, so they + # conflict with each other in multiple compilation units. + add_compile_options(-fno-builtin-acosf) + add_compile_options(-fno-builtin-acosl) + add_compile_options(-fno-builtin-asinf) + add_compile_options(-fno-builtin-asinl) + add_compile_options(-fno-builtin-atan2f) + add_compile_options(-fno-builtin-atan2l) + add_compile_options(-fno-builtin-atanf) + add_compile_options(-fno-builtin-atanl) + add_compile_options(-fno-builtin-ceilf) + add_compile_options(-fno-builtin-ceill) + add_compile_options(-fno-builtin-coshf) + add_compile_options(-fno-builtin-coshl) + add_compile_options(-fno-builtin-cosf) + add_compile_options(-fno-builtin-cosl) + add_compile_options(-fno-builtin-expf) + add_compile_options(-fno-builtin-expl) + add_compile_options(-fno-builtin-fabsf) + add_compile_options(-fno-builtin-fabsl) + add_compile_options(-fno-builtin-floorf) + add_compile_options(-fno-builtin-floorl) + add_compile_options(-fno-builtin-fmodf) + add_compile_options(-fno-builtin-fmodl) + add_compile_options(-fno-builtin-frexpf) + add_compile_options(-fno-builtin-frexpl) + add_compile_options(-fno-builtin-hypotf) + add_compile_options(-fno-builtin-hypotl) + add_compile_options(-fno-builtin-ldexpf) + add_compile_options(-fno-builtin-ldexpl) + add_compile_options(-fno-builtin-logf) + add_compile_options(-fno-builtin-logl) + add_compile_options(-fno-builtin-log10f) + add_compile_options(-fno-builtin-log10l) + add_compile_options(-fno-builtin-modff) + add_compile_options(-fno-builtin-modfl) + add_compile_options(-fno-builtin-powf) + add_compile_options(-fno-builtin-powl) + add_compile_options(-fno-builtin-sinhf) + add_compile_options(-fno-builtin-sinhl) + add_compile_options(-fno-builtin-sinf) + add_compile_options(-fno-builtin-sinl) + add_compile_options(-fno-builtin-sqrtf) + add_compile_options(-fno-builtin-sqrtl) + add_compile_options(-fno-builtin-tanhf) + add_compile_options(-fno-builtin-tanhl) + add_compile_options(-fno-builtin-tanf) + add_compile_options(-fno-builtin-tanl) + add_compile_options(-fno-builtin-feraiseexcept) + add_compile_options(-fno-builtin-feupdateenv) + if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 11) add_compile_options(-fno-builtin-ceil) add_compile_options(-fno-builtin-ceilf)