Blame src/CMakeLists.txt

Packit Service 31306d
set(LIBSSH_PUBLIC_INCLUDE_DIRS ${libssh_SOURCE_DIR}/include)
Packit Service 31306d
Packit Service 31306d
set(LIBSSH_PRIVATE_INCLUDE_DIRS
Packit Service 31306d
  ${libssh_BINARY_DIR}
Packit Service 31306d
)
Packit Service 31306d
Packit Service 31306d
set(LIBSSH_LINK_LIBRARIES
Packit Service 31306d
  ${LIBSSH_REQUIRED_LIBRARIES}
Packit Service 31306d
)
Packit Service 31306d
Packit Service 31306d
if (WIN32)
Packit Service 31306d
  set(LIBSSH_LINK_LIBRARIES
Packit Service 31306d
    ${LIBSSH_LINK_LIBRARIES}
Packit Service 31306d
    ws2_32
Packit Service 31306d
  )
Packit Service 31306d
endif (WIN32)
Packit Service 31306d
Packit Service 31306d
if (OPENSSL_CRYPTO_LIBRARY)
Packit Service 31306d
  set(LIBSSH_PRIVATE_INCLUDE_DIRS
Packit Service 31306d
    ${LIBSSH_PRIVATE_INCLUDE_DIRS}
Packit Service 31306d
    ${OPENSSL_INCLUDE_DIR}
Packit Service 31306d
  )
Packit Service 31306d
Packit Service 31306d
  set(LIBSSH_LINK_LIBRARIES
Packit Service 31306d
    ${LIBSSH_LINK_LIBRARIES}
Packit Service 31306d
    ${OPENSSL_CRYPTO_LIBRARY}
Packit Service 31306d
  )
Packit Service 31306d
endif (OPENSSL_CRYPTO_LIBRARY)
Packit Service 31306d
Packit Service 31306d
if (MBEDTLS_CRYPTO_LIBRARY)
Packit Service 31306d
    set(LIBSSH_PRIVATE_INCLUDE_DIRS
Packit Service 31306d
      ${LIBSSH_PRIVATE_INCLUDE_DIRS}
Packit Service 31306d
      ${MBEDTLS_INCLUDE_DIR}
Packit Service 31306d
    )
Packit Service 31306d
  set(LIBSSH_LINK_LIBRARIES
Packit Service 31306d
    ${LIBSSH_LINK_LIBRARIES}
Packit Service 31306d
    ${MBEDTLS_CRYPTO_LIBRARY}
Packit Service 31306d
  )
Packit Service 31306d
endif (MBEDTLS_CRYPTO_LIBRARY)
Packit Service 31306d
Packit Service 31306d
if (GCRYPT_LIBRARIES)
Packit Service 31306d
  set(LIBSSH_PRIVATE_INCLUDE_DIRS
Packit Service 31306d
    ${LIBSSH_PRIVATE_INCLUDE_DIRS}
Packit Service 31306d
    ${GCRYPT_INCLUDE_DIR}
Packit Service 31306d
  )
Packit Service 31306d
Packit Service 31306d
  set(LIBSSH_LINK_LIBRARIES
Packit Service 31306d
    ${LIBSSH_LINK_LIBRARIES}
Packit Service 31306d
    ${GCRYPT_LIBRARIES})
Packit Service 31306d
endif()
Packit Service 31306d
Packit Service 31306d
if (WITH_ZLIB)
Packit Service 31306d
  set(LIBSSH_PRIVATE_INCLUDE_DIRS
Packit Service 31306d
    ${LIBSSH_PRIVATE_INCLUDE_DIRS}
Packit Service 31306d
    ${ZLIB_INCLUDE_DIR}
Packit Service 31306d
  )
Packit Service 31306d
Packit Service 31306d
  set(LIBSSH_LINK_LIBRARIES
Packit Service 31306d
    ${LIBSSH_LINK_LIBRARIES}
Packit Service 31306d
    ${ZLIB_LIBRARY}
Packit Service 31306d
  )
Packit Service 31306d
endif (WITH_ZLIB)
Packit Service 31306d
Packit Service 31306d
if (WITH_GSSAPI AND GSSAPI_FOUND)
Packit Service 31306d
  set(LIBSSH_PRIVATE_INCLUDE_DIRS
Packit Service 31306d
    ${LIBSSH_PRIVATE_INCLUDE_DIRS}
Packit Service 31306d
    ${GSSAPI_INCLUDE_DIR}
Packit Service 31306d
  )
Packit Service 31306d
Packit Service 31306d
  set(LIBSSH_LINK_LIBRARIES
Packit Service 31306d
    ${LIBSSH_LINK_LIBRARIES}
Packit Service 31306d
    ${GSSAPI_LIBRARIES}
Packit Service 31306d
  )
Packit Service 31306d
endif (WITH_GSSAPI AND GSSAPI_FOUND)
Packit Service 31306d
Packit Service 31306d
if (WITH_NACL AND NACL_FOUND)
Packit Service 31306d
  set(LIBSSH_PRIVATE_INCLUDE_DIRS
Packit Service 31306d
    ${LIBSSH_PRIVATE_INCLUDE_DIRS}
Packit Service 31306d
    ${NACL_INCLUDE_DIR}
Packit Service 31306d
  )
Packit Service 31306d
Packit Service 31306d
  set(LIBSSH_LINK_LIBRARIES
Packit Service 31306d
    ${LIBSSH_LINK_LIBRARIES}
Packit Service 31306d
    ${NACL_LIBRARY}
Packit Service 31306d
  )
Packit Service 31306d
endif (WITH_NACL AND NACL_FOUND)
Packit Service 31306d
Packit Service 31306d
if (MINGW AND Threads_FOUND)
Packit Service 31306d
  set(LIBSSH_LINK_LIBRARIES
Packit Service 31306d
    ${LIBSSH_LINK_LIBRARIES}
Packit Service 31306d
    Threads::Threads
Packit Service 31306d
  )
Packit Service 31306d
endif()
Packit Service 31306d
Packit Service 31306d
if (BUILD_STATIC_LIB)
Packit Service 31306d
  set(LIBSSH_STATIC_LIBRARY
Packit Service 31306d
    ssh_static
Packit Service 31306d
    CACHE INTERNAL "libssh static library"
Packit Service 31306d
  )
Packit Service 31306d
endif (BUILD_STATIC_LIB)
Packit Service 31306d
Packit Service 31306d
set(libssh_SRCS
Packit Service 31306d
  agent.c
Packit Service 31306d
  auth.c
Packit Service 31306d
  base64.c
Packit Service 31306d
  bignum.c
Packit Service 31306d
  buffer.c
Packit Service 31306d
  callbacks.c
Packit Service 31306d
  channels.c
Packit Service 31306d
  client.c
Packit Service 31306d
  config.c
Packit Service 31306d
  connect.c
Packit Service 31306d
  connector.c
Packit Service 31306d
  curve25519.c
Packit Service 31306d
  dh.c
Packit Service 31306d
  ecdh.c
Packit Service 31306d
  error.c
Packit Service 31306d
  getpass.c
Packit Service 31306d
  init.c
Packit Service 31306d
  kdf.c
Packit Service 31306d
  kex.c
Packit Service 31306d
  known_hosts.c
Packit Service 31306d
  knownhosts.c
Packit Service 31306d
  legacy.c
Packit Service 31306d
  log.c
Packit Service 31306d
  match.c
Packit Service 31306d
  messages.c
Packit Service 31306d
  misc.c
Packit Service 31306d
  options.c
Packit Service 31306d
  packet.c
Packit Service 31306d
  packet_cb.c
Packit Service 31306d
  packet_crypt.c
Packit Service 31306d
  pcap.c
Packit Service 31306d
  pki.c
Packit Service 31306d
  pki_container_openssh.c
Packit Service 31306d
  poll.c
Packit Service 31306d
  session.c
Packit Service 31306d
  scp.c
Packit Service 31306d
  socket.c
Packit Service 31306d
  string.c
Packit Service 31306d
  threads.c
Packit Service 31306d
  wrapper.c
Packit Service 31306d
  external/bcrypt_pbkdf.c
Packit Service 31306d
  external/blowfish.c
Packit Service 31306d
  external/chacha.c
Packit Service 31306d
  external/poly1305.c
Packit Service 31306d
  chachapoly.c
Packit Service 31306d
  config_parser.c
Packit Service 31306d
  token.c
Packit Service 31306d
  pki_ed25519_common.c
Packit Service 31306d
)
Packit Service 31306d
Packit Service 31306d
if (DEFAULT_C_NO_DEPRECATION_FLAGS)
Packit Service 31306d
    set_source_files_properties(known_hosts.c
Packit Service 31306d
                                PROPERTIES
Packit Service 31306d
                                    COMPILE_FLAGS ${DEFAULT_C_NO_DEPRECATION_FLAGS})
Packit Service 31306d
endif()
Packit Service 31306d
Packit Service 31306d
if (CMAKE_USE_PTHREADS_INIT)
Packit Service 31306d
    set(libssh_SRCS
Packit Service 31306d
        ${libssh_SRCS}
Packit Service 31306d
        threads/noop.c
Packit Service 31306d
        threads/pthread.c
Packit Service 31306d
    )
Packit Service 31306d
elseif (CMAKE_USE_WIN32_THREADS_INIT)
Packit Service 31306d
        set(libssh_SRCS
Packit Service 31306d
            ${libssh_SRCS}
Packit Service 31306d
            threads/noop.c
Packit Service 31306d
            threads/winlocks.c
Packit Service 31306d
        )
Packit Service 31306d
else()
Packit Service 31306d
    set(libssh_SRCS
Packit Service 31306d
        ${libssh_SRCS}
Packit Service 31306d
        threads/noop.c
Packit Service 31306d
    )
Packit Service 31306d
endif()
Packit Service 31306d
Packit Service 31306d
if (WITH_GCRYPT)
Packit Service 31306d
    set(libssh_SRCS
Packit Service 31306d
        ${libssh_SRCS}
Packit Service 31306d
        threads/libgcrypt.c
Packit Service 31306d
        libgcrypt.c
Packit Service 31306d
        gcrypt_missing.c
Packit Service 31306d
        pki_gcrypt.c
Packit Service 31306d
        ecdh_gcrypt.c
Packit Service 31306d
        dh_key.c
Packit Service 31306d
        pki_ed25519.c
Packit Service 31306d
        external/ed25519.c
Packit Service 31306d
        external/fe25519.c
Packit Service 31306d
        external/ge25519.c
Packit Service 31306d
        external/sc25519.c
Packit Service 31306d
       )
Packit Service 31306d
elseif (WITH_MBEDTLS)
Packit Service 31306d
    set(libssh_SRCS
Packit Service 31306d
        ${libssh_SRCS}
Packit Service 31306d
        threads/mbedtls.c
Packit Service 31306d
        libmbedcrypto.c
Packit Service 31306d
        mbedcrypto_missing.c
Packit Service 31306d
        pki_mbedcrypto.c
Packit Service 31306d
        ecdh_mbedcrypto.c
Packit Service 31306d
        dh_key.c
Packit Service 31306d
        pki_ed25519.c
Packit Service 31306d
        external/ed25519.c
Packit Service 31306d
        external/fe25519.c
Packit Service 31306d
        external/ge25519.c
Packit Service 31306d
        external/sc25519.c
Packit Service 31306d
       )
Packit Service 31306d
else (WITH_GCRYPT)
Packit Service 31306d
    set(libssh_SRCS
Packit Service 31306d
        ${libssh_SRCS}
Packit Service 31306d
        threads/libcrypto.c
Packit Service 31306d
        pki_crypto.c
Packit Service 31306d
        ecdh_crypto.c
Packit Service 31306d
        libcrypto.c
Packit Service 31306d
        dh_crypto.c
Packit Service 31306d
       )
Packit Service 31306d
    if (NOT HAVE_OPENSSL_ED25519)
Packit Service 31306d
        set(libssh_SRCS
Packit Service 31306d
            ${libssh_SRCS}
Packit Service 31306d
            pki_ed25519.c
Packit Service 31306d
            external/ed25519.c
Packit Service 31306d
            external/fe25519.c
Packit Service 31306d
            external/ge25519.c
Packit Service 31306d
            external/sc25519.c
Packit Service 31306d
           )
Packit Service 31306d
    endif (NOT HAVE_OPENSSL_ED25519)
Packit Service 31306d
    if(OPENSSL_VERSION VERSION_LESS "1.1.0")
Packit Service 31306d
        set(libssh_SRCS ${libssh_SRCS} libcrypto-compat.c)
Packit Service 31306d
    endif()
Packit Service 31306d
endif (WITH_GCRYPT)
Packit Service 31306d
Packit Service 31306d
if (WITH_SFTP)
Packit Service 31306d
  set(libssh_SRCS
Packit Service 31306d
    ${libssh_SRCS}
Packit Service 31306d
    sftp.c
Packit Service 31306d
  )
Packit Service 31306d
Packit Service 31306d
  if (WITH_SERVER)
Packit Service 31306d
    set(libssh_SRCS
Packit Service 31306d
      ${libssh_SRCS}
Packit Service 31306d
      sftpserver.c
Packit Service 31306d
    )
Packit Service 31306d
  endif (WITH_SERVER)
Packit Service 31306d
endif (WITH_SFTP)
Packit Service 31306d
Packit Service 31306d
if (WITH_SERVER)
Packit Service 31306d
  set(libssh_SRCS
Packit Service 31306d
    ${libssh_SRCS}
Packit Service 31306d
    server.c
Packit Service 31306d
    bind.c
Packit Service 31306d
    bind_config.c
Packit Service 31306d
  )
Packit Service 31306d
endif (WITH_SERVER)
Packit Service 31306d
Packit Service 31306d
if (WITH_GEX)
Packit Service 31306d
  set(libssh_SRCS
Packit Service 31306d
    ${libssh_SRCS}
Packit Service 31306d
    dh-gex.c
Packit Service 31306d
  )
Packit Service 31306d
endif (WITH_GEX)
Packit Service 31306d
Packit Service 31306d
if (WITH_ZLIB)
Packit Service 31306d
  set(libssh_SRCS
Packit Service 31306d
    ${libssh_SRCS}
Packit Service 31306d
    gzip.c
Packit Service 31306d
  )
Packit Service 31306d
endif(WITH_ZLIB)
Packit Service 31306d
Packit Service 31306d
if (WITH_GSSAPI AND GSSAPI_FOUND)
Packit Service 31306d
  set(libssh_SRCS
Packit Service 31306d
    ${libssh_SRCS}
Packit Service 31306d
    gssapi.c
Packit Service 31306d
  )
Packit Service 31306d
endif (WITH_GSSAPI AND GSSAPI_FOUND)
Packit Service 31306d
Packit Service 31306d
if (NOT WITH_NACL)
Packit Service 31306d
    if (NOT HAVE_OPENSSL_ED25519)
Packit Service 31306d
        set(libssh_SRCS
Packit Service 31306d
            ${libssh_SRCS}
Packit Service 31306d
            external/curve25519_ref.c
Packit Service 31306d
           )
Packit Service 31306d
    endif (NOT HAVE_OPENSSL_ED25519)
Packit Service 31306d
endif (NOT WITH_NACL)
Packit Service 31306d
Packit Service 31306d
# Set the path to the default map file
Packit Service 31306d
set(MAP_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.map")
Packit Service 31306d
Packit Service 31306d
if (WITH_SYMBOL_VERSIONING AND HAVE_LD_VERSION_SCRIPT AND ABIMAP_FOUND)
Packit Service 31306d
    # Get the list of header files
Packit Service 31306d
    get_file_list(dev_header_list
Packit Service 31306d
                  DIRECTORIES "${LIBSSH_PUBLIC_INCLUDE_DIRS}/libssh"
Packit Service 31306d
                  FILES_PATTERNS "*.h")
Packit Service 31306d
Packit Service 31306d
    # Extract the symbols marked as "LIBSSH_API" from the header files
Packit Service 31306d
    extract_symbols("${PROJECT_NAME}_dev.symbols"
Packit Service 31306d
                    HEADERS_LIST dev_header_list
Packit Service 31306d
                    FILTER_PATTERN "LIBSSH_API")
Packit Service 31306d
Packit Service 31306d
    if (WITH_ABI_BREAK)
Packit Service 31306d
        set(ALLOW_ABI_BREAK "BREAK_ABI")
Packit Service 31306d
    endif()
Packit Service 31306d
Packit Service 31306d
    # Generate the symbol version map file
Packit Service 31306d
    generate_map_file("${PROJECT_NAME}_dev.map"
Packit Service 31306d
                      SYMBOLS "${PROJECT_NAME}_dev.symbols"
Packit Service 31306d
                      RELEASE_NAME_VERSION ${PROJECT_NAME}_AFTER_${LIBRARY_VERSION}
Packit Service 31306d
                      CURRENT_MAP ${MAP_PATH}
Packit Service 31306d
                      ${ALLOW_ABI_BREAK})
Packit Service 31306d
Packit Service 31306d
    set(libssh_SRCS
Packit Service 31306d
      ${libssh_SRCS}
Packit Service 31306d
      ${PROJECT_NAME}_dev.map
Packit Service 31306d
    )
Packit Service 31306d
endif (WITH_SYMBOL_VERSIONING AND HAVE_LD_VERSION_SCRIPT AND ABIMAP_FOUND)
Packit Service 31306d
Packit Service 31306d
# This gets built as a static library, if -DBUILD_SHARED_LIBS=OFF is passed to
Packit Service 31306d
# cmake.
Packit Service 31306d
add_library(ssh ${libssh_SRCS})
Packit Service 31306d
target_compile_options(ssh
Packit Service 31306d
                       PRIVATE
Packit Service 31306d
                           ${DEFAULT_C_COMPILE_FLAGS}
Packit Service 31306d
                           -D_GNU_SOURCE)
Packit Service 31306d
target_include_directories(ssh
Packit Service 31306d
                           PUBLIC
Packit Service 31306d
                               $<BUILD_INTERFACE:${libssh_SOURCE_DIR}/include>
Packit Service 31306d
                               $<INSTALL_INTERFACE:include>
Packit Service 31306d
                           PRIVATE ${LIBSSH_PRIVATE_INCLUDE_DIRS})
Packit Service 31306d
Packit Service 31306d
target_link_libraries(ssh
Packit Service 31306d
                      PRIVATE ${LIBSSH_LINK_LIBRARIES})
Packit Service 31306d
Packit Service 31306d
if (WIN32 AND NOT BUILD_SHARED_LIBS)
Packit Service 31306d
    set_target_properties(ssh PROPERTIES COMPILE_FLAGS "-DLIBSSH_STATIC")
Packit Service 31306d
endif ()
Packit Service 31306d
Packit Service 31306d
add_library(ssh::ssh ALIAS ssh)
Packit Service 31306d
Packit Service 31306d
if (WITH_SYMBOL_VERSIONING AND HAVE_LD_VERSION_SCRIPT)
Packit Service 31306d
    if (ABIMAP_FOUND)
Packit Service 31306d
        # Change path to devel map file
Packit Service 31306d
        set(MAP_PATH "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_dev.map")
Packit Service 31306d
    endif (ABIMAP_FOUND)
Packit Service 31306d
Packit Service 31306d
    set_target_properties(ssh
Packit Service 31306d
                          PROPERTIES LINK_FLAGS
Packit Service 31306d
                          "-Wl,--version-script,\"${MAP_PATH}\"")
Packit Service 31306d
endif (WITH_SYMBOL_VERSIONING AND HAVE_LD_VERSION_SCRIPT)
Packit Service 31306d
Packit Service 31306d
set_target_properties(ssh
Packit Service 31306d
    PROPERTIES
Packit Service 31306d
      VERSION
Packit Service 31306d
        ${LIBRARY_VERSION}
Packit Service 31306d
      SOVERSION
Packit Service 31306d
        ${LIBRARY_SOVERSION}
Packit Service 31306d
      DEFINE_SYMBOL
Packit Service 31306d
        LIBSSH_EXPORTS
Packit Service 31306d
)
Packit Service 31306d
Packit Service 31306d
if (WITH_VISIBILITY_HIDDEN)
Packit Service 31306d
  set_target_properties(ssh PROPERTIES COMPILE_FLAGS "-fvisibility=hidden")
Packit Service 31306d
endif (WITH_VISIBILITY_HIDDEN)
Packit Service 31306d
Packit Service 31306d
if (MINGW)
Packit Service 31306d
    set_target_properties(ssh PROPERTIES LINK_FLAGS "-Wl,--enable-stdcall-fixup")
Packit Service 31306d
endif ()
Packit Service 31306d
Packit Service 31306d
Packit Service 31306d
install(TARGETS ssh
Packit Service 31306d
        EXPORT libssh-config
Packit Service 31306d
        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
Packit Service 31306d
        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
Packit Service 31306d
        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
Packit Service 31306d
        COMPONENT libraries)
Packit Service 31306d
Packit Service 31306d
install(EXPORT libssh-config
Packit Service 31306d
        DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
Packit Service 31306d
Packit Service 31306d
if (BUILD_STATIC_LIB)
Packit Service 31306d
  add_library(ssh-static STATIC ${libssh_SRCS})
Packit Service 31306d
  target_compile_options(ssh-static
Packit Service 31306d
                         PRIVATE
Packit Service 31306d
                            ${DEFAULT_C_COMPILE_FLAGS}
Packit Service 31306d
                            -D_GNU_SOURCE)
Packit Service 31306d
Packit Service 31306d
  target_include_directories(ssh-static
Packit Service 31306d
                             PUBLIC
Packit Service 31306d
                                 $<BUILD_INTERFACE:${libssh_SOURCE_DIR}/include>
Packit Service 31306d
                                 $<INSTALL_INTERFACE:include>
Packit Service 31306d
                             PRIVATE ${LIBSSH_PRIVATE_INCLUDE_DIRS})
Packit Service 31306d
  target_link_libraries(ssh-static
Packit Service 31306d
                        PUBLIC ${LIBSSH_LINK_LIBRARIES})
Packit Service 31306d
  add_library(ssh::static ALIAS ssh-static)
Packit Service 31306d
Packit Service 31306d
  if (MSVC)
Packit Service 31306d
    set(OUTPUT_SUFFIX static)
Packit Service 31306d
  else (MSVC)
Packit Service 31306d
    set(OUTPUT_SUFFIX )
Packit Service 31306d
  endif (MSVC)
Packit Service 31306d
  set_target_properties(
Packit Service 31306d
    ssh-static
Packit Service 31306d
      PROPERTIES
Packit Service 31306d
        VERSION
Packit Service 31306d
          ${LIBRARY_VERSION}
Packit Service 31306d
        SOVERSION
Packit Service 31306d
          ${LIBRARY_SOVERSION}
Packit Service 31306d
        OUTPUT_NAME
Packit Service 31306d
          ssh
Packit Service 31306d
        ARCHIVE_OUTPUT_DIRECTORY
Packit Service 31306d
          ${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_SUFFIX}
Packit Service 31306d
  )
Packit Service 31306d
Packit Service 31306d
  if (WIN32)
Packit Service 31306d
    set_target_properties(
Packit Service 31306d
      ssh-static
Packit Service 31306d
        PROPERTIES
Packit Service 31306d
          COMPILE_FLAGS
Packit Service 31306d
            "-DLIBSSH_STATIC"
Packit Service 31306d
    )
Packit Service 31306d
  endif (WIN32)
Packit Service 31306d
endif (BUILD_STATIC_LIB)
Packit Service 31306d
Packit Service 31306d
message(STATUS "Threads_FOUND=${Threads_FOUND}")