From 8ccd328b87a608cfd6b25e90f5ae06c29c381eec Mon Sep 17 00:00:00 2001 From: Andreas Lauser Date: Mon, 11 Apr 2016 14:30:07 +0200 Subject: [PATCH] refine FindQuadmath.cmake with this, it is now possible to disable quadruple precision math detection without hacks. (by setting USE_QUADMATH to ON or OFF) --- cmake/Modules/FindQuadmath.cmake | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/cmake/Modules/FindQuadmath.cmake b/cmake/Modules/FindQuadmath.cmake index 06487d339..cc16fa105 100644 --- a/cmake/Modules/FindQuadmath.cmake +++ b/cmake/Modules/FindQuadmath.cmake @@ -11,24 +11,34 @@ include(CheckCXXSourceCompiles) include(CMakePushCheckState) include(CheckCXXCompilerFlag) -check_cxx_compiler_flag("-Werror -fext-numeric-literals" HAVE_EXTENDED_NUMERIC_LITERALS) -if (HAVE_EXTENDED_NUMERIC_LITERALS) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fext-numeric-literals") -endif() +if(NOT DEFINED USE_QUADMATH OR USE_QUADMATH) + if(NOT DEFINED HAVE_EXTENDED_NUMERIC_LITERALS) + check_cxx_compiler_flag("-Werror -fext-numeric-literals" HAVE_EXTENDED_NUMERIC_LITERALS) + endif() -cmake_push_check_state() -list(APPEND CMAKE_REQUIRED_LIBRARIES "quadmath") -CHECK_CXX_SOURCE_COMPILES(" + if (HAVE_EXTENDED_NUMERIC_LITERALS) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fext-numeric-literals") + endif() + + cmake_push_check_state(RESET) + list(APPEND CMAKE_REQUIRED_LIBRARIES "quadmath") + CHECK_CXX_SOURCE_COMPILES(" #include int main(void){ __float128 foo = sqrtq(123.456); foo = FLT128_MIN; -}" HAVE_QUAD) -cmake_pop_check_state() +}" QUADMATH_FOUND) + cmake_pop_check_state() -if (HAVE_QUAD) - set(QUADMATH_LIBRARIES "quadmath") + if (QUADMATH_FOUND) + set(QUADMATH_LIBRARIES "quadmath") + set(HAVE_QUAD "${QUADMATH_FOUND}") + endif() +endif() + +if (USE_QUADMATH AND NOT QUADMATH_FOUND) + message(FATAL_ERROR "Quadruple precision math support was explicitly requested but is unavailable!") endif() include(FindPackageHandleStandardArgs)