mirror of
https://github.com/libssh2/libssh2.git
synced 2025-07-23 16:21:00 +03:00
cmake: use shared libs again in example and tests
Re-sync with autotools and v1.10.0 behavior.
This improves build times. It also allows to stop building our special
shared test target to test shared builds.
Follow-up to 4e2580628d
Cherry-picked from #1017
Closes #1022
This commit is contained in:
@ -114,13 +114,20 @@ endif()
|
||||
option(BUILD_EXAMPLES "Build libssh2 examples" ON)
|
||||
option(BUILD_TESTING "Build libssh2 test suite" ON)
|
||||
|
||||
if(NOT BUILD_STATIC_LIBS AND (NOT BUILD_SHARED_LIBS OR BUILD_EXAMPLES OR BUILD_TESTING))
|
||||
if(NOT BUILD_STATIC_LIBS AND (NOT BUILD_SHARED_LIBS OR BUILD_TESTING))
|
||||
set(BUILD_STATIC_LIBS ON)
|
||||
endif()
|
||||
|
||||
set(LIB_STATIC "libssh2_static")
|
||||
set(LIB_SHARED "libssh2_shared")
|
||||
|
||||
# lib flavour selected for example and test programs.
|
||||
if(BUILD_SHARED_LIBS)
|
||||
set(LIB_SELECTED ${LIB_SHARED})
|
||||
else()
|
||||
set(LIB_SELECTED ${LIB_STATIC})
|
||||
endif()
|
||||
|
||||
# Symbol hiding
|
||||
|
||||
option(HIDE_SYMBOLS "Set to ON to hide all libssh2 symbols that are not officially external" ON)
|
||||
|
@ -47,7 +47,7 @@ foreach(example ${EXAMPLES})
|
||||
list(APPEND EXAMPLE_TARGETS ${example})
|
||||
# to find generated header
|
||||
target_include_directories(${example} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/../src ../src)
|
||||
target_link_libraries(${example} ${LIB_STATIC} ${LIBRARIES})
|
||||
target_link_libraries(${example} ${LIB_SELECTED} ${LIBRARIES})
|
||||
endforeach()
|
||||
|
||||
add_target_to_copy_dependencies(
|
||||
|
@ -32,10 +32,6 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#if defined(_MSC_VER) && _MSC_VER < 1900
|
||||
#define snprintf _snprintf
|
||||
#endif
|
||||
|
||||
static const char *pubkey = ".ssh/id_rsa.pub";
|
||||
static const char *privkey = ".ssh/id_rsa";
|
||||
static const char *username = "username";
|
||||
|
@ -21,10 +21,6 @@
|
||||
#define INADDR_NONE (in_addr_t)~0
|
||||
#endif
|
||||
|
||||
#if defined(_MSC_VER) && _MSC_VER < 1900
|
||||
#define snprintf _snprintf
|
||||
#endif
|
||||
|
||||
static const char *pubkey = "/home/username/.ssh/id_rsa.pub";
|
||||
static const char *privkey = "/home/username/.ssh/id_rsa";
|
||||
static const char *username = "username";
|
||||
|
@ -77,6 +77,13 @@
|
||||
# endif
|
||||
# ifndef _WINSOCK_DEPRECATED_NO_WARNINGS
|
||||
# define _WINSOCK_DEPRECATED_NO_WARNINGS /* for inet_addr() */
|
||||
# endif
|
||||
/* we cannot access our internal snprintf() implementation in examples and
|
||||
tests when linking to a shared libssh2. */
|
||||
# if _MSC_VER < 1900
|
||||
# undef HAVE_SNPRINTF
|
||||
# define HAVE_SNPRINTF
|
||||
# define snprintf _snprintf
|
||||
# endif
|
||||
# endif
|
||||
# if _MSC_VER < 1500
|
||||
|
@ -65,14 +65,13 @@ target_compile_definitions(runner PRIVATE "${CRYPTO_BACKEND_DEFINE}")
|
||||
target_include_directories(runner PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/../src" ../src ../include "${CRYPTO_BACKEND_INCLUDE_DIR}")
|
||||
target_compile_definitions(runner PRIVATE FIXTURE_WORKDIR="${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
|
||||
# test building against shared libssh2 lib
|
||||
if(BUILD_SHARED_LIBS)
|
||||
foreach(test test_ssh2)
|
||||
add_executable(${test}_shared ${test}.c)
|
||||
target_include_directories(${test}_shared PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/../src" ../src)
|
||||
target_link_libraries(${test}_shared ${LIB_SHARED} ${LIBRARIES})
|
||||
endforeach()
|
||||
endif()
|
||||
# These programs use internal libssh2 functions so they need to be statically
|
||||
# linked against libssh2
|
||||
set(TESTS_WITH_LIB_STATIC
|
||||
test_auth_keyboard_info_request
|
||||
test_hostkey
|
||||
test_simple
|
||||
)
|
||||
|
||||
foreach(test ${DOCKER_TESTS} ${STANDALONE_TESTS} ${SSHD_TESTS})
|
||||
# We support the same target as both Docker and SSHD test. Build those just once.
|
||||
@ -85,8 +84,10 @@ foreach(test ${DOCKER_TESTS} ${STANDALONE_TESTS} ${SSHD_TESTS})
|
||||
if(GCOV_PATH AND test STREQUAL test_auth_keyboard_info_request)
|
||||
target_compile_options(${test} BEFORE PRIVATE ${GCOV_OPTIONS})
|
||||
target_link_libraries(${test} runner ${LIB_STATIC} ${LIBRARIES} gcov)
|
||||
else()
|
||||
elseif(";${TESTS_WITH_LIB_STATIC};" MATCHES ";${test};")
|
||||
target_link_libraries(${test} runner ${LIB_STATIC} ${LIBRARIES})
|
||||
else()
|
||||
target_link_libraries(${test} runner ${LIB_SELECTED} ${LIBRARIES})
|
||||
endif()
|
||||
|
||||
list(APPEND TEST_TARGETS ${test})
|
||||
|
Reference in New Issue
Block a user