78 lines
3 KiB
CMake
78 lines
3 KiB
CMake
## Copyright 2009-2021 Intel Corporation
|
|
## SPDX-License-Identifier: Apache-2.0
|
|
|
|
IF (TASKING_INTERNAL)
|
|
ADD_LIBRARY(tasking STATIC taskschedulerinternal.cpp)
|
|
ELSEIF (TASKING_TBB)
|
|
##############################################################
|
|
# Find TBB
|
|
##############################################################
|
|
if (NOT ${EMBREE_TBB_ROOT} STREQUAL "")
|
|
set(TBB_FIND_PACKAGE_OPTION "NO_DEFAULT_PATH")
|
|
set(TBB_ROOT ${EMBREE_TBB_ROOT})
|
|
list(APPEND CMAKE_PREFIX_PATH ${EMBREE_TBB_ROOT})
|
|
endif()
|
|
|
|
ADD_LIBRARY(tasking STATIC taskschedulertbb.cpp)
|
|
|
|
if (TARGET TBB::${EMBREE_TBB_COMPONENT})
|
|
message("-- TBB: reuse existing TBB::${TBB_COMPONENT} target")
|
|
TARGET_LINK_LIBRARIES(tasking PUBLIC TBB::${EMBREE_TBB_COMPONENT})
|
|
else()
|
|
# Try getting TBB via config first
|
|
find_package(TBB 2020 COMPONENTS ${EMBREE_TBB_COMPONENT} CONFIG ${TBB_FIND_PACKAGE_OPTION})
|
|
if (TBB_FOUND)
|
|
TARGET_LINK_LIBRARIES(tasking PUBLIC TBB::${EMBREE_TBB_COMPONENT})
|
|
message("-- Found TBB: ${TBB_VERSION} at ${TBB_DIR} via TBBConfig.cmake")
|
|
else()
|
|
|
|
# If not found try getting older TBB via module (FindTBB.cmake)
|
|
message("-- Using FindTBB.cmake ")
|
|
|
|
unset(TBB_DIR CACHE)
|
|
find_package(TBB 4.1 REQUIRED ${EMBREE_TBB_COMPONENT})
|
|
if (TBB_FOUND)
|
|
TARGET_LINK_LIBRARIES(tasking PUBLIC TBB)
|
|
TARGET_INCLUDE_DIRECTORIES(tasking PUBLIC $<BUILD_INTERFACE:${TBB_INCLUDE_DIRS}>)
|
|
|
|
IF (EMBREE_STATIC_LIB)
|
|
INSTALL(TARGETS TBB EXPORT TBB-targets)
|
|
INSTALL(EXPORT TBB-targets DESTINATION ${EMBREE_CMAKEEXPORT_DIR} COMPONENT devel)
|
|
ENDIF()
|
|
|
|
endif()
|
|
if (NOT TBB_FOUND)
|
|
message("-- Not found TBB")
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
IF(WIN32)
|
|
GET_TARGET_PROPERTY(DLL_PATH TBB::${EMBREE_TBB_COMPONENT} IMPORTED_LOCATION_RELEASE)
|
|
GET_TARGET_PROPERTY(DLL_PATH_DEBUG TBB::${EMBREE_TBB_COMPONENT} IMPORTED_LOCATION_DEBUG)
|
|
SET_TARGET_PROPERTIES(tasking PROPERTIES IMPORTED_LOCATION_RELEASE ${DLL_PATH})
|
|
SET_TARGET_PROPERTIES(tasking PROPERTIES IMPORTED_LOCATION_DEBUG ${DLL_PATH_DEBUG})
|
|
ENDIF()
|
|
|
|
###############################################################
|
|
## Create tasking target and link against TBB. Also set include directory
|
|
## information on tasking target to provide the "algorithms" object library
|
|
## with the TBB header files
|
|
###############################################################
|
|
#TARGET_LINK_LIBRARIES(tasking PUBLIC TBB)
|
|
#TARGET_INCLUDE_DIRECTORIES(tasking PUBLIC "${TBB_INCLUDE_DIRS}")
|
|
|
|
include(installTBB)
|
|
|
|
ELSEIF (TASKING_PPL)
|
|
ADD_LIBRARY(tasking STATIC taskschedulerppl.cpp)
|
|
TARGET_LINK_LIBRARIES(tasking PUBLIC ${PPL_LIBRARIES})
|
|
ENDIF()
|
|
|
|
SET_PROPERTY(TARGET tasking PROPERTY FOLDER common)
|
|
SET_PROPERTY(TARGET tasking APPEND PROPERTY COMPILE_FLAGS " ${FLAGS_LOWEST}")
|
|
|
|
IF (EMBREE_STATIC_LIB)
|
|
INSTALL(TARGETS tasking EXPORT tasking-targets ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT devel)
|
|
INSTALL(EXPORT tasking-targets DESTINATION "${EMBREE_CMAKEEXPORT_DIR}" COMPONENT devel)
|
|
ENDIF()
|