Improve use of 3rd party libs
This commit is contained in:
parent
77c454b304
commit
6e7e87b73f
|
@ -30,6 +30,7 @@ if(NOT DEFINED FIND_THIRD_PARTY_LIBRARIES_EXISTS)
|
||||||
|
|
||||||
macro(link_against_library NAME LINKAGE REQUIRED)
|
macro(link_against_library NAME LINKAGE REQUIRED)
|
||||||
# determine whether the library is required or optional
|
# determine whether the library is required or optional
|
||||||
|
# FIXME: improve passing required argument
|
||||||
if("${REQUIRED}" STREQUAL "OPTIONAL")
|
if("${REQUIRED}" STREQUAL "OPTIONAL")
|
||||||
set(${NAME}_REQUIRED "NO")
|
set(${NAME}_REQUIRED "NO")
|
||||||
elseif("${REQUIRED}" STREQUAL "REQUIRED")
|
elseif("${REQUIRED}" STREQUAL "REQUIRED")
|
||||||
|
@ -41,21 +42,25 @@ if(NOT DEFINED FIND_THIRD_PARTY_LIBRARIES_EXISTS)
|
||||||
# add library to list of libraries to link against when building dynamic libraries or applications
|
# add library to list of libraries to link against when building dynamic libraries or applications
|
||||||
if(${NAME}_STATIC_LIB AND (("${LINKAGE}" STREQUAL "AUTO_LINKAGE" AND ((STATIC_LINKAGE AND "${META_PROJECT_TYPE}" STREQUAL "application") OR (STATIC_LIBRARY_LINKAGE AND ("${META_PROJECT_TYPE}" STREQUAL "" OR "${META_PROJECT_TYPE}" STREQUAL "library")))) OR ("${LINKAGE}" STREQUAL "STATIC")))
|
if(${NAME}_STATIC_LIB AND (("${LINKAGE}" STREQUAL "AUTO_LINKAGE" AND ((STATIC_LINKAGE AND "${META_PROJECT_TYPE}" STREQUAL "application") OR (STATIC_LIBRARY_LINKAGE AND ("${META_PROJECT_TYPE}" STREQUAL "" OR "${META_PROJECT_TYPE}" STREQUAL "library")))) OR ("${LINKAGE}" STREQUAL "STATIC")))
|
||||||
list(APPEND LIBRARIES ${${NAME}_STATIC_LIB})
|
list(APPEND LIBRARIES ${${NAME}_STATIC_LIB})
|
||||||
message(STATUS "Linking ${META_PROJECT_NAME} statically against external library ${NAME} (${${NAME}_STATIC_LIB}).")
|
set(USE_STATIC_${NAME} ON)
|
||||||
|
message(STATUS "Linking ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} statically against external library ${NAME} (${${NAME}_STATIC_LIB}).")
|
||||||
elseif(${NAME}_DYNAMIC_LIB AND ("${LINKAGE}" STREQUAL "AUTO_LINKAGE" OR ("${LINKAGE}" STREQUAL "SHARED")))
|
elseif(${NAME}_DYNAMIC_LIB AND ("${LINKAGE}" STREQUAL "AUTO_LINKAGE" OR ("${LINKAGE}" STREQUAL "SHARED")))
|
||||||
list(APPEND LIBRARIES ${${NAME}_DYNAMIC_LIB})
|
list(APPEND LIBRARIES ${${NAME}_DYNAMIC_LIB})
|
||||||
message(STATUS "Linking ${META_PROJECT_NAME} dynamically against external library ${NAME} (${${NAME}_DYNAMIC_LIB}).")
|
set(USE_STATIC_${NAME} OFF)
|
||||||
|
message(STATUS "Linking ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} dynamically against external library ${NAME} (${${NAME}_DYNAMIC_LIB}).")
|
||||||
else()
|
else()
|
||||||
if(${NAME}_REQUIRED)
|
if(${NAME}_REQUIRED)
|
||||||
message(FATAL_ERROR "External library ${NAME} required by ${META_PROJECT_NAME} is not available for the specified linkage ${LINKAGE}.")
|
message(FATAL_ERROR "External library ${NAME} required by ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} is not available for the specified linkage ${LINKAGE}.")
|
||||||
else()
|
else()
|
||||||
message(WARNING "External library ${NAME} required by ${META_PROJECT_NAME} is not available for the specified linkage ${LINKAGE}.")
|
message(WARNING "External library ${NAME} required by ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} is not available for the specified linkage ${LINKAGE}.")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# add library to list of libraries to be provided as transitive dependencies when building static libraries
|
# add library to list of libraries to be provided as transitive dependencies when building static libraries
|
||||||
list(APPEND STATIC_LIBRARIES ${${NAME}_STATIC_LIB})
|
if(${NAME}_STATIC_LIB)
|
||||||
message(STATUS "Adding ${${NAME}_STATIC_LIB} to static library dependencies of ${META_PROJECT_NAME}.")
|
list(APPEND STATIC_LIBRARIES ${${NAME}_STATIC_LIB})
|
||||||
|
message(STATUS "Adding ${${NAME}_STATIC_LIB} to static library dependencies of ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}.")
|
||||||
|
endif()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
macro(use_external_library NAME LINKAGE REQUIRED)
|
macro(use_external_library NAME LINKAGE REQUIRED)
|
||||||
|
@ -109,7 +114,6 @@ if(NOT DEFINED FIND_THIRD_PARTY_LIBRARIES_EXISTS)
|
||||||
use_external_library_from_package_static(${NAME} ${PKGNAME} ${INCLUDE_VAR} "${LIBRARY_VAR}" "${${NAME}_COMPATIBLE_VERSION}")
|
use_external_library_from_package_static(${NAME} ${PKGNAME} ${INCLUDE_VAR} "${LIBRARY_VAR}" "${${NAME}_COMPATIBLE_VERSION}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
link_against_library(${NAME} ${LINKAGE} ${REQUIRED})
|
link_against_library(${NAME} ${LINKAGE} ${REQUIRED})
|
||||||
|
|
||||||
restore_default_library_suffixes()
|
restore_default_library_suffixes()
|
||||||
|
|
|
@ -46,3 +46,5 @@ macro(use_@META_PROJECT_VARNAME@)
|
||||||
# make CMake modules of the project available
|
# make CMake modules of the project available
|
||||||
list(APPEND CMAKE_MODULE_PATH ${@META_PROJECT_VARNAME_UPPER@_MODULE_DIRS})
|
list(APPEND CMAKE_MODULE_PATH ${@META_PROJECT_VARNAME_UPPER@_MODULE_DIRS})
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
|
# FIXME: provide an imported target
|
||||||
|
|
Loading…
Reference in New Issue