Blame src/CMakeLists.txt

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