diff --git a/CMakeLists.txt b/CMakeLists.txt index fee994cd..5da4f7e4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,6 +41,8 @@ macro_ensure_out_of_source_build("${PROJECT_NAME} requires an out of source buil # Copy library files to a lib sub-directory set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib") +set(LIBSSSH_PC_REQUIRES_PRIVATE "") + # search for libraries if (WITH_ZLIB) find_package(ZLIB REQUIRED) @@ -66,6 +68,7 @@ find_package(Threads) if (WITH_GSSAPI) find_package(GSSAPI) + list(APPEND LIBSSH_PC_REQUIRES_PRIVATE ${GSSAPI_PC_REQUIRES}) endif (WITH_GSSAPI) if (WITH_NACL) diff --git a/cmake/Modules/FindGSSAPI.cmake b/cmake/Modules/FindGSSAPI.cmake index 037ad5eb..630d7c16 100644 --- a/cmake/Modules/FindGSSAPI.cmake +++ b/cmake/Modules/FindGSSAPI.cmake @@ -11,6 +11,8 @@ # GSSAPI_INCLUDE_DIR - the GSSAPI include directory # GSSAPI_LIBRARIES - Link these to use GSSAPI # GSSAPI_DEFINITIONS - Compiler switches required for using GSSAPI +# GSSAPI_PC_REQUIRES - pkg-config module name if found, needed for +# Requires.private for static linking # #============================================================================= # Copyright (c) 2013 Andreas Schneider @@ -24,12 +26,23 @@ #============================================================================= # +set(_mit_modname "mit-krb5-gssapi") +set(_heimdal_modname "heimdal-gssapi") + +if(NOT _GSSAPI_ROOT_HINTS AND NOT _GSSAPI_ROOT_PATHS) + find_package(PkgConfig QUIET) + if (PKG_CONFIG_FOUND) + pkg_search_module(_GSSAPI ${_mit_modname} ${_heimdal_modname}) + endif() +endif() + find_path(GSSAPI_ROOT_DIR NAMES include/gssapi.h include/gssapi/gssapi.h HINTS ${_GSSAPI_ROOT_HINTS} + "${_GSSAPI_INCLUDEDIR}" PATHS ${_GSSAPI_ROOT_PATHS} ) @@ -317,5 +330,15 @@ endif (GSSAPI_FLAVOR_HEIMDAL) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(GSSAPI DEFAULT_MSG GSSAPI_LIBRARIES GSSAPI_INCLUDE_DIR) +if(GSSAPI_FOUND) + if(_GSSAPI_FOUND) # via pkg-config + if (GSSAPI_FLAVOR_MIT) + set(GSSAPI_PC_REQUIRES ${_mit_modname}) + elseif (GSSAPI_FLAVOR_HEIMDAL) + set(GSSAPI_PC_REQUIRES ${_heimdal_modname}) + endif() + endif() +endif() + # show the GSSAPI_INCLUDE_DIR and GSSAPI_LIBRARIES variables only in the advanced view mark_as_advanced(GSSAPI_INCLUDE_DIR GSSAPI_LIBRARIES) diff --git a/libssh.pc.cmake b/libssh.pc.cmake index f288b94d..970db5e2 100644 --- a/libssh.pc.cmake +++ b/libssh.pc.cmake @@ -8,3 +8,4 @@ Description: The SSH Library Version: @PROJECT_VERSION@ Libs: -L${libdir} -lssh Cflags: -I${includedir} +Requires.private: @LIBSSH_PC_REQUIRES_PRIVATE@