mirror of https://github.com/CGAL/cgal
move the code to a CMake module
This commit is contained in:
parent
3c56db979d
commit
49cb591951
|
|
@ -479,130 +479,9 @@ if(CMAKE_COMPILER_IS_GNUCXX)
|
|||
endif()
|
||||
|
||||
endif()
|
||||
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()
|
||||
include(display-third-party-libs-versions)
|
||||
|
||||
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()
|
||||
message("== Generate version files (DONE) ==\n")
|
||||
#--------------------------------------------------------------------------------------------------
|
||||
#
|
||||
|
|
|
|||
|
|
@ -0,0 +1,124 @@
|
|||
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()
|
||||
Loading…
Reference in New Issue