148 lines
5.1 KiB
CMake
148 lines
5.1 KiB
CMake
## Copyright 2009 Intel Corporation
|
|
## SPDX-License-Identifier: Apache-2.0
|
|
|
|
macro(ospray_get_target_configuration TARGET_NAME)
|
|
set(TARGETName ${TARGET_NAME})
|
|
get_target_property(CONFIGURATIONS ${TARGET_NAME} IMPORTED_CONFIGURATIONS)
|
|
string(TOUPPER ${CMAKE_BUILD_TYPE} CONFIGURATION)
|
|
list(FIND CONFIGURATIONS ${CONFIGURATION} IDX)
|
|
if (IDX LESS 0)
|
|
set(IDX 0) # first/default configuration
|
|
endif()
|
|
list(GET CONFIGURATIONS ${IDX} CONFIGURATION)
|
|
endmacro()
|
|
|
|
macro(ospray_add_dependent_lib TARGET_NAME)
|
|
if (TARGET ${TARGET_NAME})
|
|
ospray_get_target_configuration(${TARGET_NAME})
|
|
get_target_property(LIBRARY ${TARGET_NAME} IMPORTED_LOCATION_${CONFIGURATION})
|
|
get_target_property(LIBRARY_SO ${TARGET_NAME} IMPORTED_SONAME_${CONFIGURATION})
|
|
if (LIBRARY_SO)
|
|
get_filename_component(LIBRARY_DIR ${LIBRARY} DIRECTORY)
|
|
get_filename_component(LIBRARY_NAME ${LIBRARY_SO} NAME)
|
|
set(LIBRARY "${LIBRARY_DIR}/${LIBRARY_NAME}")
|
|
endif()
|
|
list(APPEND DEPENDENT_LIBS ${LIBRARY})
|
|
else()
|
|
message(STATUS "Skipping target '${TARGET_NAME}'")
|
|
endif()
|
|
endmacro()
|
|
|
|
macro(ospray_add_dependent_lib_plugins TARGET_NAME PLUGINS_PATTERN VER_PATTERN)
|
|
if (TARGET ${TARGET_NAME})
|
|
ospray_get_target_configuration(${TARGET_NAME})
|
|
# retrieve library directory
|
|
get_target_property(LIBRARY ${TARGET_NAME} IMPORTED_LOCATION_${CONFIGURATION})
|
|
get_filename_component(LIBRARY_DIR ${LIBRARY} DIRECTORY)
|
|
|
|
# search for plugins with given file pattern
|
|
if (WIN32)
|
|
file(GLOB LIBRARY_PLUGINS LIST_DIRECTORIES FALSE
|
|
"${LIBRARY_DIR}/${PLUGINS_PATTERN}.dll"
|
|
)
|
|
elseif (APPLE)
|
|
file(GLOB LIBRARY_PLUGINS LIST_DIRECTORIES FALSE
|
|
"${LIBRARY_DIR}/lib${PLUGINS_PATTERN}${VER_PATTERN}.dylib"
|
|
)
|
|
else()
|
|
file(GLOB LIBRARY_PLUGINS LIST_DIRECTORIES FALSE
|
|
"${LIBRARY_DIR}/lib${PLUGINS_PATTERN}.so${VER_PATTERN}"
|
|
)
|
|
endif()
|
|
|
|
list(APPEND DEPENDENT_LIBS ${LIBRARY_PLUGINS})
|
|
else()
|
|
message(STATUS "Skipping target '${TARGET_NAME}' plugins")
|
|
endif()
|
|
endmacro()
|
|
|
|
ospray_add_dependent_lib(rkcommon::rkcommon)
|
|
if (RKCOMMON_TASKING_TBB)
|
|
ospray_add_dependent_lib(TBB::tbb)
|
|
ospray_add_dependent_lib(TBB::tbbmalloc)
|
|
if (${CMAKE_BUILD_TYPE} STREQUAL "Debug")
|
|
set(TBB_DEBUG_SUFFIX "_debug")
|
|
endif()
|
|
ospray_add_dependent_lib_plugins(TBB::tbb "tbbbind${TBB_DEBUG_SUFFIX}" ".[0-9]")
|
|
ospray_add_dependent_lib_plugins(TBB::tbb "tbbbind_?_?${TBB_DEBUG_SUFFIX}" ".[0-9]")
|
|
endif()
|
|
ospray_add_dependent_lib(embree)
|
|
ospray_add_dependent_lib(openvkl::openvkl)
|
|
ospray_add_dependent_lib(openvkl::openvkl_module_cpu_device)
|
|
ospray_add_dependent_lib(openvkl::openvkl_module_cpu_device_4)
|
|
ospray_add_dependent_lib(openvkl::openvkl_module_cpu_device_8)
|
|
ospray_add_dependent_lib(openvkl::openvkl_module_cpu_device_16)
|
|
if (OSPRAY_MODULE_DENOISER)
|
|
ospray_add_dependent_lib(OpenImageDenoise)
|
|
ospray_add_dependent_lib(OpenImageDenoise_core)
|
|
ospray_add_dependent_lib_plugins(OpenImageDenoise "OpenImageDenoise_device_*" ".[0-9].[0-9].[0-9]")
|
|
endif()
|
|
if (OSPRAY_MODULE_GPU OR OSPRAY_MODULE_DENOISER)
|
|
if (OSPRAY_MODULE_GPU)
|
|
get_filename_component(SYCL_DIR ${CMAKE_CXX_COMPILER} DIRECTORY)
|
|
if (NOT WIN32)
|
|
set(SYCL_DIR "${SYCL_DIR}/../lib")
|
|
endif()
|
|
else()
|
|
get_target_property(CONFIGURATIONS OpenImageDenoise IMPORTED_CONFIGURATIONS)
|
|
list(GET CONFIGURATIONS 0 CONFIGURATION) # use first/default configuration
|
|
get_target_property(OIDN_LIB OpenImageDenoise IMPORTED_LOCATION_${CONFIGURATION})
|
|
get_filename_component(SYCL_DIR ${OIDN_LIB} DIRECTORY)
|
|
endif()
|
|
|
|
if (WIN32)
|
|
file(GLOB SYCL_LIB LIST_DIRECTORIES FALSE
|
|
"${SYCL_DIR}/sycl?.dll"
|
|
"${SYCL_DIR}/pi_level_zero.dll"
|
|
"${SYCL_DIR}/pi_win_proxy_loader.dll"
|
|
"${SYCL_DIR}/win_proxy_loader.dll"
|
|
)
|
|
else()
|
|
file(GLOB SYCL_LIB LIST_DIRECTORIES FALSE
|
|
"${SYCL_DIR}/libsycl.so.?"
|
|
"${SYCL_DIR}/libpi_level_zero.so"
|
|
)
|
|
endif()
|
|
list(APPEND DEPENDENT_LIBS ${SYCL_LIB})
|
|
endif()
|
|
|
|
if (WIN32)
|
|
set(INSTALL_DIR ${CMAKE_INSTALL_BINDIR})
|
|
else()
|
|
set(INSTALL_DIR ${CMAKE_INSTALL_LIBDIR})
|
|
endif()
|
|
|
|
if (OSPRAY_SIGN_FILE)
|
|
add_custom_target(sign_files
|
|
COMMAND ${OSPRAY_SIGN_FILE} -q ${DEPENDENT_LIBS}
|
|
COMMENT "Signing files"
|
|
VERBATIM
|
|
)
|
|
else()
|
|
add_custom_target(sign_files COMMENT "Not signing files")
|
|
endif()
|
|
|
|
foreach(LIB ${DEPENDENT_LIBS})
|
|
install(CODE
|
|
"file(INSTALL \"${LIB}\" DESTINATION \${CMAKE_INSTALL_PREFIX}/${INSTALL_DIR} FOLLOW_SYMLINK_CHAIN)"
|
|
COMPONENT redist
|
|
)
|
|
endforeach()
|
|
|
|
# Install MSVC runtime
|
|
if (WIN32)
|
|
set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE)
|
|
include(InstallRequiredSystemLibraries)
|
|
|
|
# FIXME WA for OSPRay to build with GNU-style options
|
|
file(TO_CMAKE_PATH ${OSPRAY_MODULE_PATH} OSPRAY_MODULE_PATH)
|
|
list(APPEND CMAKE_MODULE_PATH ${OSPRAY_MODULE_PATH})
|
|
include(ospray_system_runtime OPTIONAL)
|
|
list(APPEND CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS "${OSPRAY_INSTALL_SYSTEM_RUNTIME_LIBS}")
|
|
|
|
list(FILTER CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS INCLUDE REGEX
|
|
".*msvcp[0-9]+\.dll|.*vcruntime[0-9]+\.dll|.*vcruntime[0-9]+_[0-9]+\.dll")
|
|
install(FILES ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS}
|
|
DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT redist)
|
|
endif()
|