mirror of
https://gitlab.kitware.com/vtk/vtk-m
synced 2024-09-08 13:23:51 +00:00
Merge topic 'tbb_not_found'
bef1965cd VTK-m now handles when TBB uses link scripts. b2682ec5f VTK-m properly specifies the linker language of imported targets Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: Brad King <brad.king@kitware.com> Merge-request: !1264
This commit is contained in:
commit
d07e1f1e94
@ -18,6 +18,39 @@
|
||||
## this software.
|
||||
##============================================================================
|
||||
|
||||
#
|
||||
function(vtkm_extract_real_library library real_library)
|
||||
if(NOT UNIX)
|
||||
set(${real_library} "${library}" PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
#Read in the first 4 bytes and see if they are the ELF magic number
|
||||
set(_elf_magic "7f454c46")
|
||||
file(READ ${library} _hex_data OFFSET 0 LIMIT 4 HEX)
|
||||
if(_hex_data STREQUAL _elf_magic)
|
||||
#we have opened a elf binary so this is what
|
||||
#we should link too
|
||||
set(${real_library} "${library}" PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
file(READ ${library} _data OFFSET 0 LIMIT 1024)
|
||||
if("${_data}" MATCHES "INPUT \\(([^(]+)\\)")
|
||||
#extract out the so name from REGEX MATCh command
|
||||
set(_proper_so_name "${CMAKE_MATCH_1}")
|
||||
|
||||
#construct path to the real .so which is presumed to be in the same directory
|
||||
#as the input file
|
||||
get_filename_component(_so_dir "${library}" DIRECTORY)
|
||||
set(${real_library} "${_so_dir}/${_proper_so_name}" PARENT_SCOPE)
|
||||
else()
|
||||
#unable to determine what this library is so just hope everything works
|
||||
#add pass it unmodified.
|
||||
set(${real_library} "${library}" PARENT_SCOPE)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
if(VTKm_ENABLE_TBB AND NOT TARGET vtkm::tbb)
|
||||
find_package(TBB REQUIRED)
|
||||
|
||||
@ -32,31 +65,41 @@ if(VTKm_ENABLE_TBB AND NOT TARGET vtkm::tbb)
|
||||
set_target_properties(vtkm::tbb PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${TBB_INCLUDE_DIRS}")
|
||||
|
||||
if(TBB_LIBRARY_RELEASE)
|
||||
set_property(TARGET vtkm::tbb APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
|
||||
set_target_properties(vtkm::tbb PROPERTIES IMPORTED_LOCATION_RELEASE "${TBB_LIBRARY_RELEASE}")
|
||||
endif()
|
||||
if(EXISTS "${TBB_LIBRARY_RELEASE}")
|
||||
vtkm_extract_real_library("${TBB_LIBRARY_RELEASE}" real_path)
|
||||
set_property(TARGET vtkm::tbb APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
|
||||
set_target_properties(vtkm::tbb PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
IMPORTED_LOCATION_RELEASE "${real_path}"
|
||||
)
|
||||
endif()
|
||||
|
||||
if(TBB_LIBRARY_DEBUG)
|
||||
set_property(TARGET vtkm::tbb APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
|
||||
set_target_properties(vtkm::tbb PROPERTIES IMPORTED_LOCATION_DEBUG "${TBB_LIBRARY_DEBUG}")
|
||||
endif()
|
||||
|
||||
if(NOT TBB_LIBRARY_RELEASE AND NOT TBB_LIBRARY_DEBUG)
|
||||
set_property(TARGET vtkm::tbb APPEND PROPERTY IMPORTED_LOCATION "${TBB_LIBRARY}")
|
||||
endif()
|
||||
if(EXISTS "${TBB_LIBRARY_DEBUG}")
|
||||
vtkm_extract_real_library("${TBB_LIBRARY_DEBUG}" real_path)
|
||||
set_property(TARGET vtkm::tbb APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
|
||||
set_target_properties(vtkm::tbb PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
IMPORTED_LOCATION_DEBUG "${real_path}"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(VTKm_ENABLE_OPENMP AND NOT TARGET vtkm::openmp)
|
||||
find_package(OpenMP 4.0 REQUIRED COMPONENTS CXX QUIET)
|
||||
|
||||
add_library(vtkm::openmp INTERFACE IMPORTED GLOBAL)
|
||||
if (CMAKE_VERSION VERSION_LESS 3.10)
|
||||
add_library(vtkm::openmp SHARED IMPORTED GLOBAL)
|
||||
else()
|
||||
add_library(vtkm::openmp UNKNOWN IMPORTED GLOBAL)
|
||||
endif()
|
||||
|
||||
if(OpenMP_CXX_FLAGS)
|
||||
set_target_properties(vtkm::openmp PROPERTIES
|
||||
INTERFACE_COMPILE_OPTIONS "$<$<COMPILE_LANGUAGE:CXX>:${OpenMP_CXX_FLAGS}>")
|
||||
endif()
|
||||
if(OpenMP_CXX_LIBRARIES)
|
||||
set_target_properties(vtkm::openmp PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
INTERFACE_LINK_LIBRARIES "${OpenMP_CXX_LIBRARIES}")
|
||||
endif()
|
||||
endif()
|
||||
@ -88,24 +131,27 @@ if(VTKm_ENABLE_CUDA AND NOT TARGET vtkm::cuda)
|
||||
if("x${CMAKE_CUDA_SIMULATE_ID}" STREQUAL "xMSVC")
|
||||
get_filename_component(VTKM_CUDA_BIN_DIR "${CMAKE_CUDA_COMPILER}" DIRECTORY)
|
||||
|
||||
set_property(TARGET vtkm::cuda APPEND PROPERTY IMPORTED_LOCATION "${VTKM_CUDA_BIN_DIR}/../lib/x64/cudadevrt.lib")
|
||||
|
||||
set_target_properties(vtkm::cuda PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${VTKM_CUDA_BIN_DIR}/../include/")
|
||||
set_target_properties(vtkm::cuda PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
IMPORTED_LOCATION "${VTKM_CUDA_BIN_DIR}/../lib/x64/cudadevrt.lib"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${VTKM_CUDA_BIN_DIR}/../include/"
|
||||
)
|
||||
|
||||
else()
|
||||
list(GET CMAKE_CUDA_IMPLICIT_LINK_LIBRARIES 0 VTKM_CUDA_LIBRARY)
|
||||
if(IS_ABSOLUTE "${VTKM_CUDA_LIBRARY}")
|
||||
set_property(TARGET vtkm::cuda APPEND PROPERTY IMPORTED_LOCATION "${VTKM_CUDA_LIBRARY}")
|
||||
set_target_properties(vtkm::cuda PROPERTIES IMPORTED_LOCATION "${VTKM_CUDA_LIBRARY}")
|
||||
else()
|
||||
find_library(cuda_lib
|
||||
NAME ${VTKM_CUDA_LIBRARY}
|
||||
PATHS ${CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES}
|
||||
)
|
||||
set(VTKM_CUDA_LIBRARY ${cuda_lib})
|
||||
set_property(TARGET vtkm::cuda APPEND PROPERTY IMPORTED_LOCATION "${VTKM_CUDA_LIBRARY}")
|
||||
set_target_properties(vtkm::cuda PROPERTIES IMPORTED_LOCATION "${VTKM_CUDA_LIBRARY}")
|
||||
unset(cuda_lib CACHE)
|
||||
endif()
|
||||
set_target_properties(vtkm::cuda PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}")
|
||||
endif()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user