Allow linking only tests in 3rdParty macros
So tagparser tests can link against OpenSSL for computing checksums
This commit is contained in:
parent
7c189b18e1
commit
2e0df8aa6a
|
@ -31,7 +31,7 @@ if(NOT DEFINED THIRD_PARTY_MODULE_LOADED)
|
|||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(link_against_library NAME LINKAGE REQUIRED)
|
||||
macro(link_against_library_varnames NAME LINKAGE REQUIRED PRIVATE_LIBRARIES_VARNAME PUBLIC_LIBRARIES_VARNAME PRIVATE_STATIC_LIBRARIES_VARNAME PUBLIC_STATIC_LIBRARIES_VARNAME)
|
||||
# determine whether the library is required or optional
|
||||
# FIXME: improve passing required argument
|
||||
if("${REQUIRED}" STREQUAL "OPTIONAL")
|
||||
|
@ -47,9 +47,9 @@ if(NOT DEFINED THIRD_PARTY_MODULE_LOADED)
|
|||
set(USE_STATIC_${NAME} ON)
|
||||
list(APPEND LIBRARIES ${${NAME}_STATIC_LIB})
|
||||
if(${${NAME}_STATIC_LIB} IN_LIST META_PUBLIC_STATIC_LIB_DEPENDS)
|
||||
list(APPEND PUBLIC_LIBRARIES ${${NAME}_STATIC_LIB})
|
||||
list(APPEND ${PUBLIC_LIBRARIES_VARNAME} ${${NAME}_STATIC_LIB})
|
||||
else()
|
||||
list(APPEND PRIVATE_LIBRARIES ${${NAME}_STATIC_LIB})
|
||||
list(APPEND ${PRIVATE_LIBRARIES_VARNAME} ${${NAME}_STATIC_LIB})
|
||||
endif()
|
||||
message(STATUS "Linking ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} statically against external library ${NAME} (${${NAME}_STATIC_LIB}).")
|
||||
elseif((${NAME}_DYNAMIC_LIB OR ${NAME}_SHARED_LIB) AND (("${LINKAGE}" STREQUAL "AUTO_LINKAGE") OR ("${LINKAGE}" STREQUAL "SHARED")))
|
||||
|
@ -59,9 +59,9 @@ if(NOT DEFINED THIRD_PARTY_MODULE_LOADED)
|
|||
endif()
|
||||
list(APPEND LIBRARIES ${${NAME}_DYNAMIC_LIB})
|
||||
if(${${NAME}_DYNAMIC_LIB} IN_LIST META_PUBLIC_SHARED_LIB_DEPENDS)
|
||||
list(APPEND PUBLIC_LIBRARIES ${${NAME}_DYNAMIC_LIB})
|
||||
list(APPEND ${PUBLIC_LIBRARIES_VARNAME} ${${NAME}_DYNAMIC_LIB})
|
||||
else()
|
||||
list(APPEND PRIVATE_LIBRARIES ${${NAME}_DYNAMIC_LIB})
|
||||
list(APPEND ${PRIVATE_LIBRARIES_VARNAME} ${${NAME}_DYNAMIC_LIB})
|
||||
endif()
|
||||
message(STATUS "Linking ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} dynamically against external library ${NAME} (${${NAME}_DYNAMIC_LIB}).")
|
||||
else()
|
||||
|
@ -76,24 +76,40 @@ if(NOT DEFINED THIRD_PARTY_MODULE_LOADED)
|
|||
if(${NAME}_STATIC_LIB)
|
||||
list(APPEND STATIC_LIBRARIES ${${NAME}_STATIC_LIB})
|
||||
if(${${NAME}_STATIC_LIB} IN_LIST META_PUBLIC_STATIC_LIB_DEPENDS)
|
||||
list(APPEND PUBLIC_STATIC_LIBRARIES ${${NAME}_STATIC_LIB})
|
||||
list(APPEND ${PUBLIC_STATIC_LIBRARIES_VARNAME} ${${NAME}_STATIC_LIB})
|
||||
else()
|
||||
list(APPEND PRIVATE_STATIC_LIBRARIES ${${NAME}_STATIC_LIB})
|
||||
list(APPEND ${PRIVATE_STATIC_LIBRARIES_VARNAME} ${${NAME}_STATIC_LIB})
|
||||
endif()
|
||||
message(STATUS "Adding ${${NAME}_STATIC_LIB} to static library dependencies of ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}.")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(use_external_library NAME LINKAGE REQUIRED)
|
||||
macro(link_against_library NAME LINKAGE REQUIRED)
|
||||
link_against_library_varnames("${NAME}" "${LINKAGE}" "${REQUIRED}"
|
||||
PRIVATE_LIBRARIES PUBLIC_LIBRARIES PRIVATE_STATIC_LIBRARIES PUBLIC_STATIC_LIBRARIES
|
||||
)
|
||||
endmacro()
|
||||
|
||||
macro(link_tests_against_library NAME LINKAGE REQUIRED)
|
||||
link_against_library_varnames("${NAME}" "${LINKAGE}" "${REQUIRED}"
|
||||
TEST_LIBRARIES TEST_LIBRARIES STATIC_TEST_LIBRARIES STATIC_TEST_LIBRARIES
|
||||
)
|
||||
endmacro()
|
||||
|
||||
macro(find_external_library NAME LINKAGE REQUIRED)
|
||||
save_default_library_suffixes()
|
||||
configure_dynamic_library_suffixes()
|
||||
find_library(${NAME}_DYNAMIC_LIB ${NAME})
|
||||
configure_static_library_suffixes()
|
||||
find_library(${NAME}_STATIC_LIB ${NAME})
|
||||
link_against_library(${NAME} ${LINKAGE} ${REQUIRED})
|
||||
restore_default_library_suffixes()
|
||||
endmacro()
|
||||
|
||||
macro(use_external_library NAME LINKAGE REQUIRED)
|
||||
find_external_library("${NAME}" "${LINKAGE}" "${REQUIRED}")
|
||||
link_against_library("${NAME}" "${LINKAGE}" "${REQUIRED}")
|
||||
endmacro()
|
||||
|
||||
function(use_external_library_from_package_dynamic NAME PKGNAME INCLUDE_VAR LIBRARY_VAR COMPAT_VERSION)
|
||||
# internally used by use_external_library_from_package to find dynamic libraries
|
||||
configure_dynamic_library_suffixes()
|
||||
|
@ -110,7 +126,7 @@ if(NOT DEFINED THIRD_PARTY_MODULE_LOADED)
|
|||
set(${NAME}_STATIC_LIB ${${LIBRARY_VAR}} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
macro(use_external_library_from_package NAME PKGNAME VERSION INCLUDE_VAR LIBRARY_VAR LINKAGE REQUIRED)
|
||||
macro(find_external_library_from_package NAME PKGNAME VERSION INCLUDE_VAR LIBRARY_VAR LINKAGE REQUIRED)
|
||||
save_default_library_suffixes()
|
||||
|
||||
# handle specified VERSION
|
||||
|
@ -135,11 +151,14 @@ if(NOT DEFINED THIRD_PARTY_MODULE_LOADED)
|
|||
use_external_library_from_package_static(${NAME} ${PKGNAME} ${INCLUDE_VAR} "${LIBRARY_VAR}" "${${NAME}_COMPATIBLE_VERSION}")
|
||||
endif()
|
||||
|
||||
link_against_library(${NAME} ${LINKAGE} ${REQUIRED})
|
||||
|
||||
restore_default_library_suffixes()
|
||||
endmacro()
|
||||
|
||||
macro(use_external_library_from_package NAME PKGNAME VERSION INCLUDE_VAR LIBRARY_VAR LINKAGE REQUIRED)
|
||||
find_external_library_from_package("${NAME}" "${PKGNAME}" "${VERSION}" "${INCLUDE_VAR}" "${LIBRARY_VAR}" "${LINKAGE}" "${REQUIRED}")
|
||||
link_against_library("${NAME}" "${LINKAGE}" "${REQUIRED}")
|
||||
endmacro()
|
||||
|
||||
macro(use_iconv LINKAGE REQUIRED)
|
||||
# check whether iconv exists in the standard library
|
||||
include(CheckFunctionExists)
|
||||
|
|
Loading…
Reference in New Issue