mirror of
https://git.libssh.org/projects/libssh.git
synced 2025-07-31 00:03:07 +03:00
cmake: Check if the linker supports version scripts
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
This commit is contained in:
@ -369,6 +369,20 @@ int main(void) {
|
|||||||
# Stop treating warnings as errors
|
# Stop treating warnings as errors
|
||||||
unset(CMAKE_REQUIRED_FLAGS)
|
unset(CMAKE_REQUIRED_FLAGS)
|
||||||
|
|
||||||
|
# Check for version script support
|
||||||
|
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/conftest.map" "VERS_1 {
|
||||||
|
global: sym;
|
||||||
|
};
|
||||||
|
VERS_2 {
|
||||||
|
global: sym;
|
||||||
|
} VERS_1;
|
||||||
|
")
|
||||||
|
|
||||||
|
set(CMAKE_REQUIRED_FLAGS "-Wl,--version-script=\"${CMAKE_CURRENT_BINARY_DIR}/conftest.map\"")
|
||||||
|
check_c_source_compiles("int main(void) { return 0; }" HAVE_LD_VERSION_SCRIPT)
|
||||||
|
unset(CMAKE_REQUIRED_FLAGS)
|
||||||
|
file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/conftest.map")
|
||||||
|
|
||||||
if (WITH_DEBUG_CRYPTO)
|
if (WITH_DEBUG_CRYPTO)
|
||||||
set(DEBUG_CRYPTO 1)
|
set(DEBUG_CRYPTO 1)
|
||||||
endif (WITH_DEBUG_CRYPTO)
|
endif (WITH_DEBUG_CRYPTO)
|
||||||
|
@ -266,7 +266,7 @@ include_directories(
|
|||||||
# Set the path to the default map file
|
# Set the path to the default map file
|
||||||
set(MAP_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.map")
|
set(MAP_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.map")
|
||||||
|
|
||||||
if (WITH_SYMBOL_VERSIONING AND ABIMAP_FOUND)
|
if (WITH_SYMBOL_VERSIONING AND HAVE_LD_VERSION_SCRIPT AND ABIMAP_FOUND)
|
||||||
# Get the list of header files
|
# Get the list of header files
|
||||||
get_file_list("dev_header_list"
|
get_file_list("dev_header_list"
|
||||||
DIRECTORIES "${LIBSSH_PUBLIC_INCLUDE_DIRS}/libssh"
|
DIRECTORIES "${LIBSSH_PUBLIC_INCLUDE_DIRS}/libssh"
|
||||||
@ -292,14 +292,14 @@ if (WITH_SYMBOL_VERSIONING AND ABIMAP_FOUND)
|
|||||||
${libssh_SRCS}
|
${libssh_SRCS}
|
||||||
${PROJECT_NAME}_dev.map
|
${PROJECT_NAME}_dev.map
|
||||||
)
|
)
|
||||||
endif (WITH_SYMBOL_VERSIONING AND ABIMAP_FOUND)
|
endif (WITH_SYMBOL_VERSIONING AND HAVE_LD_VERSION_SCRIPT AND ABIMAP_FOUND)
|
||||||
|
|
||||||
add_library(${LIBSSH_SHARED_LIBRARY} SHARED ${libssh_SRCS})
|
add_library(${LIBSSH_SHARED_LIBRARY} SHARED ${libssh_SRCS})
|
||||||
target_compile_options(${LIBSSH_SHARED_LIBRARY} PRIVATE ${DEFAULT_C_COMPILE_FLAGS})
|
target_compile_options(${LIBSSH_SHARED_LIBRARY} PRIVATE ${DEFAULT_C_COMPILE_FLAGS})
|
||||||
|
|
||||||
target_link_libraries(${LIBSSH_SHARED_LIBRARY} ${LIBSSH_LINK_LIBRARIES})
|
target_link_libraries(${LIBSSH_SHARED_LIBRARY} ${LIBSSH_LINK_LIBRARIES})
|
||||||
|
|
||||||
if (WITH_SYMBOL_VERSIONING)
|
if (WITH_SYMBOL_VERSIONING AND HAVE_LD_VERSION_SCRIPT)
|
||||||
if (ABIMAP_FOUND)
|
if (ABIMAP_FOUND)
|
||||||
# Change path to devel map file
|
# Change path to devel map file
|
||||||
set(MAP_PATH "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_dev.map")
|
set(MAP_PATH "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_dev.map")
|
||||||
@ -308,7 +308,7 @@ if (WITH_SYMBOL_VERSIONING)
|
|||||||
set_target_properties(${LIBSSH_SHARED_LIBRARY}
|
set_target_properties(${LIBSSH_SHARED_LIBRARY}
|
||||||
PROPERTIES LINK_FLAGS
|
PROPERTIES LINK_FLAGS
|
||||||
"-Wl,--version-script,\"${MAP_PATH}\"")
|
"-Wl,--version-script,\"${MAP_PATH}\"")
|
||||||
endif (WITH_SYMBOL_VERSIONING)
|
endif (WITH_SYMBOL_VERSIONING AND HAVE_LD_VERSION_SCRIPT)
|
||||||
|
|
||||||
set_target_properties(
|
set_target_properties(
|
||||||
${LIBSSH_SHARED_LIBRARY}
|
${LIBSSH_SHARED_LIBRARY}
|
||||||
|
Reference in New Issue
Block a user