https://git.reactos.org/?p=reactos.git;a=commitdiff;h=0133dba0c6396d3cf6531…
commit 0133dba0c6396d3cf6531c9164f6c37e4d2721a0
Author: Timo Kreuzer <timo.kreuzer(a)reactos.org>
AuthorDate: Sat Nov 9 12:36:10 2024 +0200
Commit: Timo Kreuzer <timo.kreuzer(a)reactos.org>
CommitDate: Sun Jan 26 18:08:55 2025 +0200
[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("$<$<COMPILE_LANGUAGE:C>:-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)