| include(CheckLibraryExists) |
| |
| if (LIBPGMATH_DIR) |
| # If pgmath library is found, it can be used for constant folding. |
| find_library(LIBPGMATH pgmath PATHS ${LIBPGMATH_DIR}) |
| if(LIBPGMATH) |
| # pgmath uses _Complex, so only enable linking pgmath with flang in environments |
| # that support it (MSVC is OK, pgmath uses _Fcomplex/_Dcomplex there). |
| if (CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU|MSVC") |
| check_cxx_compiler_flag("-Werror -Wc99-extensions" HAS_WC99_EXTENSIONS_FLAG) |
| if (HAS_WC99_EXTENSIONS_FLAG) |
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-c99-extensions") |
| endif() |
| add_compile_definitions(LINK_WITH_LIBPGMATH) |
| message(STATUS "Found libpgmath: ${LIBPGMATH}") |
| else() |
| message(STATUS "Libpgmath will not be used because C99 complex is not supported.") |
| endif() |
| else() |
| message(STATUS "Libpgmath not found in: ${LIBPGMATH_DIR}") |
| endif() |
| endif() |
| |
| check_include_file(quadmath.h FOUND_QUADMATH_HEADER) |
| check_library_exists(quadmath sinq "" FOUND_QUADMATH_LIB) |
| if(FOUND_QUADMATH_HEADER AND FOUND_QUADMATH_LIB) |
| add_compile_definitions(HAS_QUADMATHLIB) |
| set(QUADMATHLIB quadmath) |
| endif() |
| |
| add_flang_library(FortranEvaluate |
| call.cpp |
| characteristics.cpp |
| check-expression.cpp |
| common.cpp |
| complex.cpp |
| constant.cpp |
| expression.cpp |
| fold.cpp |
| fold-character.cpp |
| fold-complex.cpp |
| fold-designator.cpp |
| fold-integer.cpp |
| fold-logical.cpp |
| fold-real.cpp |
| fold-reduction.cpp |
| formatting.cpp |
| host.cpp |
| initial-image.cpp |
| integer.cpp |
| intrinsics.cpp |
| intrinsics-library.cpp |
| logical.cpp |
| real.cpp |
| shape.cpp |
| static-data.cpp |
| target.cpp |
| tools.cpp |
| type.cpp |
| variable.cpp |
| |
| LINK_LIBS |
| FortranCommon |
| FortranDecimal |
| FortranParser |
| ${LIBPGMATH} |
| ${QUADMATHLIB} |
| |
| LINK_COMPONENTS |
| Support |
| |
| DEPENDS |
| acc_gen |
| omp_gen |
| ) |