mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
I haven't figured out why this happens, but on one of my computers running kubuntu 13.10 g++ says the following if one tries to use quadruple precision math: /home/erne/src/ewoms/ewoms/common/quad.hh: In static member function ‘static quad std::numeric_limits<__float128>::min()’: /home/erne/src/ewoms/ewoms/common/quad.hh:52:14: error: unable to find numeric literal operator ‘operator"" Q’ { return FLT128_MIN; } since this happens only on this machine and only with the c++ (but not the C) compiler, i suppose that this is either an upgrade issue with kubuntu or an issue with the ubuntu gcc stack. Strangely enough, my other kubuntu machine does not have a problem with that... In any case also testing for assignability of constants and using the C++ compiler for the quadmath test won't hurt...
34 lines
707 B
CMake
34 lines
707 B
CMake
# Module that checks whether the compiler supports the
|
|
# quadruple precision floating point math
|
|
#
|
|
# Sets the following variables:
|
|
# HAVE_QUAD
|
|
# QUADMATH_LIBRARIES
|
|
#
|
|
# perform tests
|
|
include(CheckCSourceCompiles)
|
|
include(CheckCXXSourceCompiles)
|
|
include(CMakePushCheckState)
|
|
|
|
cmake_push_check_state()
|
|
list(APPEND CMAKE_REQUIRED_LIBRARIES "quadmath")
|
|
CHECK_CXX_SOURCE_COMPILES("
|
|
#include <quadmath.h>
|
|
|
|
int main(void){
|
|
__float128 foo = sqrtq(123.456);
|
|
foo = FLT128_MIN;
|
|
}" HAVE_QUAD)
|
|
cmake_pop_check_state()
|
|
|
|
if (HAVE_QUAD)
|
|
set(QUADMATH_LIBRARIES "quadmath")
|
|
endif()
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(QuadMath
|
|
DEFAULT_MSG
|
|
QUADMATH_LIBRARIES
|
|
HAVE_QUAD
|
|
)
|