# ${GMP_INCLUDE_DIRS} contains the paths to gmp.h (and gmpxx.h) if GMP is found. # ${GMP_LIBRARIES} contains libgmp and libgmpxx if GMP is found. # Check whether environment variable GMP_DIR was set. if(NOT GMP_DIR) set(ENV_GMP_DIR $ENV{GMP_DIR}) if(ENV_GMP_DIR) set(GMP_DIR $ENV{GMP_DIR} CACHE PATH "Path to gmp directory") endif() endif() find_path(GMP_INCLUDE_DIRS NAMES gmp.h gmpxx.h HINTS ${GMP_DIR} PATH_SUFFIXES include) if(STATIC_GMP) find_library(GMP_LIBRARY NAMES libgmp.a gmp HINTS ${GMP_DIR} PATH_SUFFIXES lib) find_library(GMPXX_LIBRARY NAMES libgmpxx.a gmpxx HINTS ${GMP_DIR} PATH_SUFFIXES lib) else() find_library(GMP_LIBRARY NAMES libgmp.so gmp HINTS ${GMP_DIR} PATH_SUFFIXES lib) find_library(GMPXX_LIBRARY NAMES libgmpxx.so gmpxx HINTS ${GMP_DIR} PATH_SUFFIXES lib) endif() SET(GMP_LIBRARIES ${GMP_LIBRARY} ${GMPXX_LIBRARY}) # look for mpir library and include files when gmp could not be found if(NOT GMP_LIBRARIES) find_path(GMP_INCLUDE_DIRS NAMES mpir.h HINTS ${GMP_DIR} PATH_SUFFIXES include) find_library(GMP_LIBRARY NAMES mpir HINTS ${GMP_DIR} PATH_SUFFIXES lib) SET(GMP_LIBRARIES ${GMP_LIBRARY}) endif() file(GLOB GMP_HEADERS "${GMP_INCLUDE_DIRS}/gmp.h" "${GMP_INCLUDE_DIRS}/gmp-*.h") foreach (gmp_header_filename ${GMP_HEADERS}) file(READ "${gmp_header_filename}" _gmp_version_header) string(REGEX MATCH "define[ \t]+__GNU_MP_VERSION[ \t]+([0-9]+)" _gmp_major_version_match "${_gmp_version_header}") if (_gmp_major_version_match) set(GMP_MAJOR_VERSION "${CMAKE_MATCH_1}") string(REGEX MATCH "define[ \t]+__GNU_MP_VERSION_MINOR[ \t]+([0-9]+)" _gmp_minor_version_match "${_gmp_version_header}") set(GMP_MINOR_VERSION "${CMAKE_MATCH_1}") string(REGEX MATCH "define[ \t]+__GNU_MP_VERSION_PATCHLEVEL[ \t]+([0-9]+)" _gmp_patchlevel_version_match "${_gmp_version_header}") set(GMP_PATCHLEVEL_VERSION "${CMAKE_MATCH_1}") set(GMP_VERSION ${GMP_MAJOR_VERSION}.${GMP_MINOR_VERSION}.${GMP_PATCHLEVEL_VERSION}) endif () endforeach () include(FindPackageHandleStandardArgs) find_package_handle_standard_args(GMP DEFAULT_MSG GMP_INCLUDE_DIRS GMP_LIBRARIES)