Files
geant4/source/externals/ptl/cmake/Templates/PTLConfig.cmake.in
2024-12-06 11:11:40 +01:00

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()