# Copyright (C) 2022 The Qt Company Ltd. # SPDX-License-Identifier: BSD-3-Clause find_package(PkgConfig QUIET) pkg_check_modules(PC_GSSAPI QUIET "krb5-gssapi") if (NOT PC_GSSAPI_FOUND) pkg_check_modules(PC_GSSAPI QUIET "mit-krb5-gssapi") endif() find_path(GSSAPI_INCLUDE_DIRS NAMES gssapi/gssapi.h HINTS ${PC_GSSAPI_INCLUDEDIR} ) # On macOS, vcpkg opts for finding frameworks LAST. This is generally fine; # however, in the case of GSSAPI, `usr/lib/libgssapi_krb5.tbd` which is a # symlink to `Kerberos.framework` misses a few symols, e.g., # `___gss_c_nt_hostbased_service_oid_desc`, and it causes build failure. # So, we need to make sure that we find `GSS.framework`. set(gssapi_library_names GSS # framework gss # solaris gssapi # FreeBSD gssapi_krb5 ) if(APPLE) list(REMOVE_ITEM gssapi_library_names "gssapi_krb5") endif() find_library(GSSAPI_LIBRARIES NAMES ${gssapi_library_names} HINTS ${PC_GSSAPI_LIBDIR} ) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(GSSAPI DEFAULT_MSG GSSAPI_LIBRARIES GSSAPI_INCLUDE_DIRS) if(GSSAPI_FOUND AND NOT TARGET GSSAPI::GSSAPI) if(GSSAPI_LIBRARIES MATCHES "/([^/]+)\\.framework$") add_library(GSSAPI::GSSAPI INTERFACE IMPORTED) set_target_properties(GSSAPI::GSSAPI PROPERTIES INTERFACE_LINK_LIBRARIES "${GSSAPI_LIBRARIES}") else() add_library(GSSAPI::GSSAPI UNKNOWN IMPORTED) set_target_properties(GSSAPI::GSSAPI PROPERTIES IMPORTED_LOCATION "${GSSAPI_LIBRARIES}") endif() set_target_properties(GSSAPI::GSSAPI PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${GSSAPI_INCLUDE_DIRS}") endif() mark_as_advanced(GSSAPI_INCLUDE_DIRS GSSAPI_LIBRARIES) include(FeatureSummary) set_package_properties(GSSAPI PROPERTIES DESCRIPTION "Generic Security Services Application Program Interface")