mirror of
https://gitlab.kitware.com/vtk/vtk-m
synced 2024-09-08 13:23:51 +00:00
72 lines
2.4 KiB
CMake
72 lines
2.4 KiB
CMake
##============================================================================
|
|
## Copyright (c) Kitware, Inc.
|
|
## All rights reserved.
|
|
## See LICENSE.txt for details.
|
|
##
|
|
## This software is distributed WITHOUT ANY WARRANTY; without even
|
|
## the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
## PURPOSE. See the above copyright notice for more information.
|
|
##============================================================================
|
|
|
|
macro(vtkm_diy_get_general_target target)
|
|
if(PROJECT_NAME STREQUAL "VTKm" OR CMAKE_PROJECT_NAME STREQUAL "VTKm")
|
|
set(${target} "vtkm_diy")
|
|
else()
|
|
set(${target} "vtkm::diy")
|
|
endif()
|
|
endmacro()
|
|
|
|
macro(_vtkm_diy_target flag target)
|
|
set(${target} "vtkmdiympi")
|
|
if (NOT ${flag})
|
|
set(${target} "vtkmdiympi_nompi")
|
|
endif()
|
|
endmacro()
|
|
|
|
function(vtkm_diy_init_target)
|
|
set(vtkm_diy_default_flag "${VTKm_ENABLE_MPI}")
|
|
_vtkm_diy_target(vtkm_diy_default_flag vtkm_diy_default_target)
|
|
|
|
vtkm_diy_get_general_target(diy_target)
|
|
set_target_properties(${diy_target} PROPERTIES
|
|
vtkm_diy_use_mpi_stack ${vtkm_diy_default_flag}
|
|
vtkm_diy_target ${vtkm_diy_default_target})
|
|
endfunction()
|
|
|
|
#-----------------------------------------------------------------------------
|
|
function(vtkm_diy_use_mpi_push)
|
|
set(topval ${VTKm_ENABLE_MPI})
|
|
if (NOT ARGC EQUAL 0)
|
|
set(topval ${ARGV0})
|
|
endif()
|
|
vtkm_diy_get_general_target(diy_target)
|
|
get_target_property(stack ${diy_target} vtkm_diy_use_mpi_stack)
|
|
list (APPEND stack ${topval})
|
|
_vtkm_diy_target(topval target)
|
|
set_target_properties(${diy_target} PROPERTIES
|
|
vtkm_diy_use_mpi_stack "${stack}"
|
|
vtkm_diy_target "${target}")
|
|
endfunction()
|
|
|
|
function(vtkm_diy_use_mpi value)
|
|
vtkm_diy_get_general_target(diy_target)
|
|
get_target_property(stack ${diy_target} vtkm_diy_use_mpi_stack)
|
|
list (REMOVE_AT stack -1)
|
|
list (APPEND stack ${value})
|
|
_vtkm_diy_target(value target)
|
|
set_target_properties(${diy_target} PROPERTIES
|
|
vtkm_diy_use_mpi_stack "${stack}"
|
|
vtkm_diy_target "${target}")
|
|
endfunction()
|
|
|
|
function(vtkm_diy_use_mpi_pop)
|
|
vtkm_diy_get_general_target(diy_target)
|
|
get_target_property(stack ${diy_target} vtkm_diy_use_mpi_stack)
|
|
list (GET stack -1 value)
|
|
list (REMOVE_AT stack -1)
|
|
_vtkm_diy_target(value target)
|
|
set_target_properties(${diy_target} PROPERTIES
|
|
vtkm_diy_use_mpi_stack "${stack}"
|
|
vtkm_diy_target "${target}")
|
|
endfunction()
|