Blame src/CMakeLists.txt

Packit 6c0a39
set(LIBSSH_PUBLIC_INCLUDE_DIRS
Packit 6c0a39
  ${libssh_SOURCE_DIR}/include
Packit 6c0a39
  CACHE INTERNAL "libssh public include directories"
Packit 6c0a39
)
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 (HAVE_LIBSOCKET)
Packit 6c0a39
  set(LIBSSH_LINK_LIBRARIES
Packit 6c0a39
    ${LIBSSH_LINK_LIBRARIES}
Packit 6c0a39
    socket
Packit 6c0a39
  )
Packit 6c0a39
endif (HAVE_LIBSOCKET)
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 6c0a39
set(LIBSSH_LINK_LIBRARIES
Packit 6c0a39
  ${LIBSSH_LINK_LIBRARIES}
Packit 6c0a39
  CACHE INTERNAL "libssh link libraries"
Packit 6c0a39
)
Packit 6c0a39
Packit 6c0a39
set(LIBSSH_SHARED_LIBRARY
Packit 6c0a39
  ssh_shared
Packit 6c0a39
  CACHE INTERNAL "libssh shared library"
Packit 6c0a39
)
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
  pki_ed25519.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/ed25519.c
Packit 6c0a39
  external/fe25519.c
Packit 6c0a39
  external/ge25519.c
Packit 6c0a39
  external/poly1305.c
Packit 6c0a39
  external/sc25519.c
Packit 6c0a39
  chachapoly.c
Packit 6c0a39
  config_parser.c
Packit 6c0a39
  token.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 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 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 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 6c0a39
  set(libssh_SRCS
Packit 6c0a39
    ${libssh_SRCS}
Packit 6c0a39
    external/curve25519_ref.c
Packit 6c0a39
  )
Packit 6c0a39
endif (NOT WITH_NACL)
Packit 6c0a39
Packit 6c0a39
include_directories(
Packit 6c0a39
  ${LIBSSH_PUBLIC_INCLUDE_DIRS}
Packit 6c0a39
  ${LIBSSH_PRIVATE_INCLUDE_DIRS}
Packit 6c0a39
)
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 6c0a39
add_library(${LIBSSH_SHARED_LIBRARY} SHARED ${libssh_SRCS})
Packit 6c0a39
target_compile_options(${LIBSSH_SHARED_LIBRARY}
Packit 6c0a39
                       PRIVATE
Packit 6c0a39
                           ${DEFAULT_C_COMPILE_FLAGS}
Packit 6c0a39
                           -D_GNU_SOURCE)
Packit 6c0a39
Packit 6c0a39
target_link_libraries(${LIBSSH_SHARED_LIBRARY} ${LIBSSH_LINK_LIBRARIES})
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 6c0a39
    set_target_properties(${LIBSSH_SHARED_LIBRARY}
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 6c0a39
set_target_properties(
Packit 6c0a39
  ${LIBSSH_SHARED_LIBRARY}
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
      DEFINE_SYMBOL
Packit 6c0a39
        LIBSSH_EXPORTS
Packit 6c0a39
)
Packit 6c0a39
Packit 6c0a39
if (WITH_VISIBILITY_HIDDEN)
Packit 6c0a39
  set_target_properties(${LIBSSH_SHARED_LIBRARY} PROPERTIES COMPILE_FLAGS "-fvisibility=hidden")
Packit 6c0a39
endif (WITH_VISIBILITY_HIDDEN)
Packit 6c0a39
Packit 6c0a39
if (MINGW)
Packit 6c0a39
    set_target_properties(${LIBSSH_SHARED_LIBRARY} PROPERTIES LINK_FLAGS "-Wl,--enable-stdcall-fixup")
Packit 6c0a39
endif ()
Packit 6c0a39
Packit 6c0a39
Packit 6c0a39
install(
Packit 6c0a39
  TARGETS
Packit 6c0a39
    ${LIBSSH_SHARED_LIBRARY}
Packit 6c0a39
  RUNTIME DESTINATION ${BIN_INSTALL_DIR}
Packit 6c0a39
  LIBRARY DESTINATION ${LIB_INSTALL_DIR}
Packit 6c0a39
  ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
Packit 6c0a39
  COMPONENT libraries
Packit 6c0a39
)
Packit 6c0a39
Packit 6c0a39
if (BUILD_STATIC_LIB)
Packit 6c0a39
  add_library(${LIBSSH_STATIC_LIBRARY} STATIC ${libssh_SRCS})
Packit 6c0a39
  target_compile_options(${LIBSSH_STATIC_LIBRARY}
Packit 6c0a39
                         PRIVATE
Packit 6c0a39
                            ${DEFAULT_C_COMPILE_FLAGS}
Packit 6c0a39
                            -D_GNU_SOURCE)
Packit 6c0a39
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 6c0a39
    ${LIBSSH_STATIC_LIBRARY}
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 6c0a39
      ${LIBSSH_STATIC_LIBRARY}
Packit 6c0a39
        PROPERTIES
Packit 6c0a39
          COMPILE_FLAGS
Packit 6c0a39
            "-DLIBSSH_STATIC"
Packit 6c0a39
    )
Packit 6c0a39
  endif (WIN32)
Packit 6c0a39
Packit 6c0a39
    if (WITH_STATIC_LIB)
Packit 6c0a39
      install(TARGETS
Packit 6c0a39
                ${LIBSSH_STATIC_LIBRARY}
Packit 6c0a39
              DESTINATION
Packit 6c0a39
                ${LIB_INSTALL_DIR}/${OUTPUT_SUFFIX}
Packit 6c0a39
              COMPONENT
Packit 6c0a39
                libraries)
Packit 6c0a39
    endif (WITH_STATIC_LIB)
Packit 6c0a39
endif (BUILD_STATIC_LIB)
Packit 6c0a39
Packit 6c0a39
message(STATUS "Threads_FOUND=${Threads_FOUND}")