81 lines
2.8 KiB
CMake
81 lines
2.8 KiB
CMake
# -------------------------------------------------------------------------------------- #
|
|
# package initialization
|
|
#
|
|
@PACKAGE_INIT@
|
|
|
|
cmake_minimum_required(VERSION 3.8...3.27)
|
|
|
|
# -------------------------------------------------------------------------------------- #
|
|
# basic paths
|
|
#
|
|
set_and_check(PTL_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@")
|
|
set_and_check(PTL_LIB_DIR "@PACKAGE_LIB_INSTALL_DIR@")
|
|
|
|
# -------------------------------------------------------------------------------------- #
|
|
# available components
|
|
#
|
|
set(PTL_shared_FOUND @BUILD_SHARED_LIBS@)
|
|
set(PTL_static_FOUND @BUILD_STATIC_LIBS@)
|
|
set(PTL_TBB_FOUND @PTL_USE_TBB@)
|
|
|
|
# Early check so later setup doesn't need to check REQUIRED status
|
|
check_required_components(PTL)
|
|
|
|
# -------------------------------------------------------------------------------------- #
|
|
# refind needed dependencies/targets
|
|
#
|
|
include(CMakeFindDependencyMacro)
|
|
|
|
if(NOT Threads_FOUND)
|
|
set(CMAKE_THREAD_PREFER_PTHREAD @CMAKE_THREAD_PREFER_PTHREAD@)
|
|
set(THREADS_PREFER_PTHREAD_FLAG @THREADS_PREFER_PTHREAD_FLAG@)
|
|
find_dependency(Threads REQUIRED)
|
|
endif()
|
|
|
|
if(NOT TBB_FOUND AND PTL_TBB_FOUND)
|
|
list(INSERT CMAKE_MODULE_PATH 0 "@PACKAGE_CMAKE_MODULE_INSTALL_DIR@")
|
|
find_dependency(TBB @TBB_VERSION@ REQUIRED)
|
|
list(REMOVE_AT CMAKE_MODULE_PATH 0)
|
|
endif()
|
|
|
|
# -------------------------------------------------------------------------------------- #
|
|
# Include our targets file(s)
|
|
#
|
|
include("${CMAKE_CURRENT_LIST_DIR}/PTLTargets.cmake")
|
|
|
|
# Set the default component based on what's available
|
|
if(PTL_shared_FOUND)
|
|
set(_ptl_preferred_link "shared")
|
|
else()
|
|
set(_ptl_preferred_link "static")
|
|
endif()
|
|
|
|
# Override if user has specified "static" alone as a component. Earlier check handles case
|
|
# that components are REQUIRED. Only change preferred link only changed if available to
|
|
# cover OPTIONAL case
|
|
if(("static" IN_LIST PTL_FIND_COMPONENTS) AND NOT ("shared" IN_LIST PTL_FIND_COMPONENTS))
|
|
if(PTL_static_FOUND)
|
|
set(_ptl_preferred_link "static")
|
|
endif()
|
|
endif()
|
|
|
|
# -------------------------------------------------------------------------------------- #
|
|
# Set old style variables for include/linking
|
|
#
|
|
set(PTL_INCLUDE_DIRS ${PTL_INCLUDE_DIR})
|
|
set(PTL_LIBRARIES PTL::ptl-${_ptl_preferred_link})
|
|
|
|
# -------------------------------------------------------------------------------------- #
|
|
# Create "transparent" link target that interfaces to shared/static on basis of
|
|
# availability or requested linking option
|
|
#
|
|
if(NOT TARGET PTL::ptl)
|
|
add_library(PTL::ptl INTERFACE IMPORTED)
|
|
target_link_libraries(PTL::ptl INTERFACE ${PTL_LIBRARIES})
|
|
# Needed to distinguish DLL/Lib, but symbol never used in code. Should also be a
|
|
# public symbol of ptl-static
|
|
if(WIN32)
|
|
target_compile_definitions(PTL::ptl INTERFACE _PTL_ARCHIVE)
|
|
endif()
|
|
endif()
|