diff --git a/Installation/CMakeLists.txt b/Installation/CMakeLists.txt index efd9b012625..31753bc1133 100644 --- a/Installation/CMakeLists.txt +++ b/Installation/CMakeLists.txt @@ -480,9 +480,7 @@ if(CMAKE_COMPILER_IS_GNUCXX) endif() set(LIBRARIES_TO_CHECK - Boost GMP MPFR - VTK - Qt6 + Boost GMP MPFR VTK Qt6 Eigen3 OpenGR libpointmatcher LEDA MPFI NTL TBB OpenCV METIS ZLIB Ceres GLPK SCIP OSQP @@ -498,7 +496,57 @@ function(check_library cgal_3rdparty_lib) if(${cgal_3rdparty_lib} STREQUAL "Eigen3") set(version_var ${EIGEN3_VERSION}) elseif(${cgal_3rdparty_lib} STREQUAL "GMP") - set(version_var ${GMP_VERSION}) + 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 "")