diff --git a/cmake/modules/FindLIBGS.cmake b/cmake/modules/FindLIBGS.cmake index 0cf8ca632..e02c42c9b 100644 --- a/cmake/modules/FindLIBGS.cmake +++ b/cmake/modules/FindLIBGS.cmake @@ -11,6 +11,7 @@ # For details see the accompanying COPYING-CMAKE-SCRIPTS file. include(CheckLibraryExists) +include(CheckCSourceRuns) if (LIBGS_LIBRARY) # in cache already @@ -32,13 +33,44 @@ else (LIBGS_LIBRARY) endif(LIBGS_LIBRARY) set(CMAKE_LIBRARY_PATH) + if (LIBGS_MINIMUM_VERSION) + string(REPLACE "." "" mingsver "${LIBGS_MINIMUM_VERSION}") + set(CMAKE_REQUIRED_LIBRARIES "${LIBGS_LIBRARY}") +set(CMAKE_REQUIRED_INCLUDES "${CMAKE_CURRENT_SOURCE_DIR}/spectre/libspectre") + check_c_source_runs(" +#include + +int main(int argc, char **argv) +{ + gsapi_revision_t gsrev; + + if (gsapi_revision(&gsrev, sizeof(gsrev)) != 0) + return 1; + if (gsrev.revision < ${mingsver}) + return 1; + + return 0; +} +" HAVE_LIBGS_MINIMUM_VERSION) + set(CMAKE_REQUIRED_LIBRARIES) + if (NOT HAVE_LIBGS_MINIMUM_VERSION) + set(LIBGS_FOUND FALSE) + endif (NOT HAVE_LIBGS_MINIMUM_VERSION) + endif (LIBGS_MINIMUM_VERSION) + + if (LIBGS_MINIMUM_VERSION) + set(gsLibraryMessage " (v${LIBGS_MINIMUM_VERSION})") + else (LIBGS_MINIMUM_VERSION) + set(gsLibraryMessage "") + endif (LIBGS_MINIMUM_VERSION) + if (LIBGS_FOUND) if (NOT LIBGS_FIND_QUIETLY) - message(STATUS "Found the GS library: ${LIBGS_LIBRARY}") + message(STATUS "Found the GS library${gsLibraryMessage}: ${LIBGS_LIBRARY}") endif (NOT LIBGS_FIND_QUIETLY) else (LIBGS_FOUND) if (LIBGS_FIND_REQUIRED) - message(FATAL_ERROR "Could NOT find the GS library") + message(FATAL_ERROR "Could NOT find the GS library${gsLibraryMessage}") endif (LIBGS_FIND_REQUIRED) endif (LIBGS_FOUND)