set(LIBRARIES_TO_CHECK Boost GMP MPFR VTK Qt6 Eigen3 OpenGR libpointmatcher LEDA MPFI TBB OpenCV METIS ZLIB GLPK SCIP ) function(check_library cgal_3rdparty_lib) set(QT_NO_CREATE_VERSIONLESS_TARGETS ON) set(CMAKE_FIND_PACKAGE_QUIET TRUE) find_package(${cgal_3rdparty_lib} QUIET) set(CMAKE_FIND_PACKAGE_QUIET FALSE) if(${cgal_3rdparty_lib}_FOUND) set(version_var "") if(${cgal_3rdparty_lib} STREQUAL "Eigen3") set(version_var ${EIGEN3_VERSION}) elseif(${cgal_3rdparty_lib} STREQUAL "GMP") set(GMP_HEADER_PATH "${GMP_INCLUDE_DIR}/gmp.h") file(READ "${GMP_HEADER_PATH}" GMP_HEADER_CONTENT) string(REGEX MATCHALL "#include[ \t]+\"([^\"]+)\"" INCLUDED_HEADERS "${GMP_HEADER_CONTENT}") set(GMP_VERSION_MAJOR "") set(GMP_VERSION_MINOR "") set(GMP_VERSION_PATCH "") foreach(INCLUDED_HEADER ${INCLUDED_HEADERS}) string(REGEX REPLACE "#include[ \t]+\"([^\"]+)\"" "\\1" GMP_ARCH_HEADER "${INCLUDED_HEADER}") set(GMP_ARCH_HEADER_PATH "${GMP_INCLUDE_DIR}/${GMP_ARCH_HEADER}") if(EXISTS "${GMP_ARCH_HEADER_PATH}") file(READ "${GMP_ARCH_HEADER_PATH}" GMP_ARCH_HEADER_CONTENT) string(REGEX MATCH "#define[ \t]+__GNU_MP_VERSION[ \t]+[0-9]+" GMP_VERSION_MAJOR_LINE "${GMP_ARCH_HEADER_CONTENT}") string(REGEX MATCH "#define[ \t]+__GNU_MP_VERSION_MINOR[ \t]+[0-9]+" GMP_VERSION_MINOR_LINE "${GMP_ARCH_HEADER_CONTENT}") string(REGEX MATCH "#define[ \t]+__GNU_MP_VERSION_PATCHLEVEL[ \t]+[0-9]+" GMP_VERSION_PATCH_LINE "${GMP_ARCH_HEADER_CONTENT}") if(GMP_VERSION_MAJOR_LINE) string(REGEX REPLACE ".*[ \t]+([0-9]+).*" "\\1" GMP_VERSION_MAJOR "${GMP_VERSION_MAJOR_LINE}") endif() if(GMP_VERSION_MINOR_LINE) string(REGEX REPLACE ".*[ \t]+([0-9]+).*" "\\1" GMP_VERSION_MINOR "${GMP_VERSION_MINOR_LINE}") endif() if(GMP_VERSION_PATCH_LINE) string(REGEX REPLACE ".*[ \t]+([0-9]+).*" "\\1" GMP_VERSION_PATCH "${GMP_VERSION_PATCH_LINE}") endif() if(GMP_VERSION_MAJOR AND GMP_VERSION_MINOR AND GMP_VERSION_PATCH) set(GMP_VERSION "${GMP_VERSION_MAJOR}.${GMP_VERSION_MINOR}.${GMP_VERSION_PATCH}") break() endif() endif() endforeach() if(GMP_VERSION) set(version_var ${GMP_VERSION}) endif() elseif(${cgal_3rdparty_lib} STREQUAL "GLPK") set(GLPK_HEADER_PATH "${GLPK_INCLUDE_DIR}/glpk.h") if(EXISTS "${GLPK_HEADER_PATH}") file(READ "${GLPK_HEADER_PATH}" GLPK_HEADER_CONTENT) string(REGEX MATCH "#define[ \t]+GLP_MAJOR_VERSION[ \t]+[0-9]+" GLPK_VERSION_MAJOR_LINE "${GLPK_HEADER_CONTENT}") string(REGEX MATCH "#define[ \t]+GLP_MINOR_VERSION[ \t]+[0-9]+" GLPK_VERSION_MINOR_LINE "${GLPK_HEADER_CONTENT}") set(GLPK_VERSION_MAJOR "") set(GLPK_VERSION_MINOR "") if(GLPK_VERSION_MAJOR_LINE) string(REGEX REPLACE ".*[ \t]+([0-9]+).*" "\\1" GLPK_VERSION_MAJOR "${GLPK_VERSION_MAJOR_LINE}") endif() if(GLPK_VERSION_MINOR_LINE) string(REGEX REPLACE ".*[ \t]+([0-9]+).*" "\\1" GLPK_VERSION_MINOR "${GLPK_VERSION_MINOR_LINE}") endif() if(NOT GLPK_VERSION_MAJOR STREQUAL "" AND NOT GLPK_VERSION_MINOR STREQUAL "") set(GLPK_VERSION "${GLPK_VERSION_MAJOR}.${GLPK_VERSION_MINOR}") set(version_var ${GLPK_VERSION}) endif() endif() elseif(${cgal_3rdparty_lib} STREQUAL "MPFR" OR ${cgal_3rdparty_lib} STREQUAL "METIS") set(header_name "") set(version_macros "") if(${cgal_3rdparty_lib} STREQUAL "MPFR") set(header_name "mpfr.h") set(version_macros "MPFR_VERSION_MAJOR;MPFR_VERSION_MINOR;MPFR_VERSION_PATCHLEVEL") elseif(${cgal_3rdparty_lib} STREQUAL "METIS") set(header_name "metis.h") set(version_macros "METIS_VER_MAJOR;METIS_VER_MINOR;METIS_VER_SUBMINOR") endif() find_path(INCLUDE_DIR NAMES ${header_name} PATHS ${${cgal_3rdparty_lib}_INCLUDE_DIRS} PATH_SUFFIXES ${cgal_3rdparty_lib} ) if(INCLUDE_DIR) set(HEADER_PATH "${INCLUDE_DIR}/${header_name}") if(EXISTS ${HEADER_PATH}) file(READ ${HEADER_PATH} HEADER_CONTENT) list(GET version_macros 0 major_macro) list(GET version_macros 1 minor_macro) list(GET version_macros 2 patchlevel_macro) string(REGEX MATCH "#define[ \t]+${major_macro}[ \t]+([0-9]+)" _major_match ${HEADER_CONTENT}) string(REGEX MATCH "#define[ \t]+${minor_macro}[ \t]+([0-9]+)" _minor_match ${HEADER_CONTENT}) string(REGEX MATCH "#define[ \t]+${patchlevel_macro}[ \t]+([0-9]+)" _patchlevel_match ${HEADER_CONTENT}) string(REGEX REPLACE ".*#define[ \t]+${major_macro}[ \t]+([0-9]+).*" "\\1" VERSION_MAJOR ${_major_match}) string(REGEX REPLACE ".*#define[ \t]+${minor_macro}[ \t]+([0-9]+).*" "\\1" VERSION_MINOR ${_minor_match}) string(REGEX REPLACE ".*#define[ \t]+${patchlevel_macro}[ \t]+([0-9]+).*" "\\1" VERSION_PATCHLEVEL ${_patchlevel_match}) set(version_var "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCHLEVEL}") endif() endif() elseif(DEFINED ${cgal_3rdparty_lib}_VERSION) set(version_var ${${cgal_3rdparty_lib}_VERSION}) elseif(DEFINED ${cgal_3rdparty_lib}_VERSION_STRING) set(version_var ${${cgal_3rdparty_lib}_VERSION_STRING}) endif() if(version_var) message(STATUS "Third-party library ${cgal_3rdparty_lib} ${version_var}") else() message(STATUS "Third-party library ${cgal_3rdparty_lib} found") endif() else() message(STATUS "Third-party library ${cgal_3rdparty_lib} not found") endif() endfunction() foreach(cgal_3rdparty_lib IN LISTS LIBRARIES_TO_CHECK) check_library(${cgal_3rdparty_lib}) endforeach()