[CMAKE] Disable GCC builtin math functions

This commit is contained in:
Timo Kreuzer 2024-11-09 12:36:10 +02:00
parent efe84ec41a
commit 0133dba0c6

View file

@ -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)