Commit cc71c0db1 for clamav.net
commit cc71c0db1e537a34c9a6009fd959821375497049
Author: Jonas Zaddach <5988756+zaddach@users.noreply.github.com>
Date: Thu Aug 7 06:55:45 2025 +0200
CMake: Support finding the check library as published by vcpkg
diff --git a/cmake/FindLibcheck.cmake b/cmake/FindLibcheck.cmake
index 130acf8fe..707eb11d9 100755
--- a/cmake/FindLibcheck.cmake
+++ b/cmake/FindLibcheck.cmake
@@ -31,94 +31,106 @@
# ``LIBCHECK_ROOT_DIR``
# The root to search for libcheck.
-set(LIBCHECK_ROOT_DIR "${LIBCHECK_ROOT_DIR}" CACHE PATH "Root to search for libcheck")
+# First let's try to find libcheck in the vcpkg cache
+find_package(check CONFIG QUIET)
+if(check_FOUND)
+ if(TARGET Check::check)
+ add_library(libcheck::check ALIAS Check::check)
+ else()
+ add_library(libcheck::check ALIAS Check::checkShared)
+ endif()
+ set(LIBCHECK_FOUND TRUE)
+else()
+ # We didn't find the vcpkg package. Use the traditional detection logic.
+ set(LIBCHECK_ROOT_DIR "${LIBCHECK_ROOT_DIR}" CACHE PATH "Root to search for libcheck")
-find_package(PkgConfig QUIET)
-if(PKG_CONFIG_FOUND)
- set(_old_prefix_path "${CMAKE_PREFIX_PATH}")
- # So pkg-config uses LIBCHECK_ROOT_DIR too.
- if(LIBCHECK_ROOT_DIR)
- list(APPEND CMAKE_PREFIX_PATH ${LIBCHECK_ROOT_DIR})
+ find_package(PkgConfig QUIET)
+ if(PKG_CONFIG_FOUND)
+ set(_old_prefix_path "${CMAKE_PREFIX_PATH}")
+ # So pkg-config uses LIBCHECK_ROOT_DIR too.
+ if(LIBCHECK_ROOT_DIR)
+ list(APPEND CMAKE_PREFIX_PATH ${LIBCHECK_ROOT_DIR})
+ endif()
+ pkg_check_modules(PC_LIBCHECK QUIET check)
+ # Restore
+ set(CMAKE_PREFIX_PATH "${_old_prefix_path}")
endif()
- pkg_check_modules(PC_LIBCHECK QUIET check)
- # Restore
- set(CMAKE_PREFIX_PATH "${_old_prefix_path}")
-endif()
-find_path(LIBCHECK_INCLUDE_DIR
- NAMES
- check.h
- PATHS
- ${LIBCHECK_ROOT_DIR}
- HINTS
- ${PC_LIBCHECK_INCLUDE_DIRS}
- PATH_SUFFIXES
- include
-)
-find_library(LIBCHECK_LIBRARY
- NAMES
- check_pic
- check
- PATHS
- ${LIBCHECK_ROOT_DIR}
- HINTS
- ${PC_LIBCHECK_LIBRARY_DIRS}
- PATH_SUFFIXES
- lib
-)
-find_library(LIBCHECK_SUBUNIT_LIBRARY
- NAMES
- subunit
- PATHS
- ${LIBCHECK_ROOT_DIR}
- HINTS
- ${PC_LIBCHECK_LIBRARY_DIRS}
- PATH_SUFFIXES
- lib
-)
-find_library(LIBCHECK_LIBRT rt)
-find_library(LIBCHECK_LIBM m)
+ find_path(LIBCHECK_INCLUDE_DIR
+ NAMES
+ check.h
+ PATHS
+ ${LIBCHECK_ROOT_DIR}
+ HINTS
+ ${PC_LIBCHECK_INCLUDE_DIRS}
+ PATH_SUFFIXES
+ include
+ )
+ find_library(LIBCHECK_LIBRARY
+ NAMES
+ check_pic
+ check
+ PATHS
+ ${LIBCHECK_ROOT_DIR}
+ HINTS
+ ${PC_LIBCHECK_LIBRARY_DIRS}
+ PATH_SUFFIXES
+ lib
+ )
+ find_library(LIBCHECK_SUBUNIT_LIBRARY
+ NAMES
+ subunit
+ PATHS
+ ${LIBCHECK_ROOT_DIR}
+ HINTS
+ ${PC_LIBCHECK_LIBRARY_DIRS}
+ PATH_SUFFIXES
+ lib
+ )
+ find_library(LIBCHECK_LIBRT rt)
+ find_library(LIBCHECK_LIBM m)
-find_package(Threads QUIET)
+ find_package(Threads QUIET)
-set(_libcheck_extra_required)
-if(PC_LIBCHECK_FOUND AND "${PC_LIBCHECK_LIBRARIES}" MATCHES "subunit")
- list(APPEND _libcheck_extra_required LIBCHECK_SUBUNIT_LIBRARY)
-endif()
+ set(_libcheck_extra_required)
+ if(PC_LIBCHECK_FOUND AND "${PC_LIBCHECK_LIBRARIES}" MATCHES "subunit")
+ list(APPEND _libcheck_extra_required LIBCHECK_SUBUNIT_LIBRARY)
+ endif()
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(Libcheck
- REQUIRED_VARS
- LIBCHECK_INCLUDE_DIR
- LIBCHECK_LIBRARY
- THREADS_FOUND
-)
-if(LIBCHECK_FOUND)
- if(NOT TARGET libcheck::check)
- add_library(libcheck::check UNKNOWN IMPORTED)
+ include(FindPackageHandleStandardArgs)
+ find_package_handle_standard_args(Libcheck
+ REQUIRED_VARS
+ LIBCHECK_INCLUDE_DIR
+ LIBCHECK_LIBRARY
+ THREADS_FOUND
+ )
+ if(LIBCHECK_FOUND)
+ if(NOT TARGET libcheck::check)
+ add_library(libcheck::check UNKNOWN IMPORTED)
- set_target_properties(libcheck::check PROPERTIES
- INTERFACE_INCLUDE_DIRECTORIES "${LIBCHECK_INCLUDE_DIR}")
- set_target_properties(libcheck::check PROPERTIES
- IMPORTED_LINK_INTERFACE_LANGUAGES "C"
- IMPORTED_LOCATION ${LIBCHECK_LIBRARY})
- set_property(TARGET libcheck::check PROPERTY
- IMPORTED_LINK_INTERFACE_LIBRARIES Threads::Threads)
+ set_target_properties(libcheck::check PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${LIBCHECK_INCLUDE_DIR}")
+ set_target_properties(libcheck::check PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+ IMPORTED_LOCATION ${LIBCHECK_LIBRARY})
+ set_property(TARGET libcheck::check PROPERTY
+ IMPORTED_LINK_INTERFACE_LIBRARIES Threads::Threads)
- # if we found librt or libm, link them.
- if(LIBCHECK_LIBRT)
- set_property(TARGET libcheck::check APPEND PROPERTY
- IMPORTED_LINK_INTERFACE_LIBRARIES "${LIBCHECK_LIBRT}")
- endif()
- if(LIBCHECK_LIBM)
- set_property(TARGET libcheck::check APPEND PROPERTY
- IMPORTED_LINK_INTERFACE_LIBRARIES "${LIBCHECK_LIBM}")
- endif()
- if(LIBCHECK_SUBUNIT_LIBRARY)
- set_property(TARGET libcheck::check APPEND PROPERTY
- IMPORTED_LINK_INTERFACE_LIBRARIES "${LIBCHECK_SUBUNIT_LIBRARY}")
- endif()
+ # if we found librt or libm, link them.
+ if(LIBCHECK_LIBRT)
+ set_property(TARGET libcheck::check APPEND PROPERTY
+ IMPORTED_LINK_INTERFACE_LIBRARIES "${LIBCHECK_LIBRT}")
+ endif()
+ if(LIBCHECK_LIBM)
+ set_property(TARGET libcheck::check APPEND PROPERTY
+ IMPORTED_LINK_INTERFACE_LIBRARIES "${LIBCHECK_LIBM}")
+ endif()
+ if(LIBCHECK_SUBUNIT_LIBRARY)
+ set_property(TARGET libcheck::check APPEND PROPERTY
+ IMPORTED_LINK_INTERFACE_LIBRARIES "${LIBCHECK_SUBUNIT_LIBRARY}")
+ endif()
+ endif()
+ mark_as_advanced(LIBCHECK_INCLUDE_DIR LIBCHECK_LIBRARY LIBCHECK_SUBUNIT_LIBRARY)
endif()
- mark_as_advanced(LIBCHECK_INCLUDE_DIR LIBCHECK_LIBRARY LIBCHECK_SUBUNIT_LIBRARY)
+ mark_as_advanced(LIBCHECK_ROOT_DIR LIBCHECK_LIBRT LIBCHECK_LIBM)
endif()
-mark_as_advanced(LIBCHECK_ROOT_DIR LIBCHECK_LIBRT LIBCHECK_LIBM)