#------------------------------------------------------------------------------- # rmm_wrap/CMakeLists.txt: cmake script for building rmm_wrap #------------------------------------------------------------------------------- # SPDX-License-Identifier: Apache-2.0 #------------------------------------------------------------------------------- cmake_minimum_required ( VERSION 3.20 ) # GraphBLAS can be built stand-alone project ( rmm_wrap VERSION 0.1 ) # This build depends upon having RMM cmake installed from https://github.com/rapidsai/rmm.git set ( CMAKE_CXX_STANDARD 17 ) set ( CMAKE_C_STANDARD 99 ) set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC" ) find_package ( CUDAToolkit REQUIRED ) set ( EXTERNAL_INCLUDES_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/external_includes ) if ( NOT EXISTS ${EXTERNAL_INCLUDES_DIRECTORY} ) file ( MAKE_DIRECTORY ${EXTERNAL_INCLUDES_DIRECTORY} ) endif ( ) if ( NOT EXISTS ${EXTERNAL_INCLUDES_DIRECTORY}/spdlog ) execute_process ( COMMAND git clone "https://github.com/gabime/spdlog.git" --branch v1.10.0 --recursive spdlog WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/external_includes ) endif ( ) set ( SPDLOG_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/external_includes/spdlog/include ) include_directories ( ${SPDLOG_INCLUDE_DIR} ) if ( NOT EXISTS ${EXTERNAL_INCLUDES_DIRECTORY}/rmm ) execute_process ( COMMAND git clone "https://github.com/rapidsai/rmm.git" --branch branch-21.10 --recursive rmm WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/external_includes ) endif() set ( RMM_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/external_includes/rmm/include ) include_directories ( ${RMM_INCLUDE_DIR} ) add_library ( RMM_wrap rmm_wrap.cpp rmm_wrap.hpp rmm_wrap.h ) set_target_properties ( RMM_wrap PROPERTIES VERSION ${GraphBLAS_VERSION_MAJOR}.${GraphBLAS_VERSION_MINOR}.${GraphBLAS_VERSION_SUB} OUTPUT_NAME rmm_wrap SOVERSION ${GraphBLAS_VERSION_MAJOR} PUBLIC_HEADER "rmm_wrap.h" WINDOWS_EXPORT_ALL_SYMBOLS ON ) add_executable ( rmm_wrap_test rmm_wrap_test.c rmm_wrap.cpp rmm_wrap.hpp rmm_wrap.h ) set ( RMM_WRAP_LIBS ${EXTRA_LIBS} CUDA::cudart_static ) set ( RMM_WRAP_INCLUDES ${PROJECT_BINARY_DIR} ${SPDLOG_INCLUDE_DIR} ${RMM_INCLUDE_DIR} ${CUDA_INCLUDE_DIRS} ${CONDA_PREFIX}/include ${PROJECT_SOURCE_DIR}/include ) target_link_libraries ( RMM_wrap PRIVATE ${RMM_WRAP_LIBS} ) target_include_directories ( RMM_wrap PRIVATE "${RMM_WRAP_INCLUDES}" ) target_link_libraries ( rmm_wrap_test PUBLIC ${RMM_WRAP_LIBS} ) target_include_directories ( rmm_wrap_test PUBLIC "${RMM_WRAP_INCLUDES}" ) #------------------------------------------------------------------------------- # installation location #------------------------------------------------------------------------------- install ( TARGETS RMM_wrap EXPORT GraphBLASTargets LIBRARY DESTINATION ${SUITESPARSE_LIBDIR} ARCHIVE DESTINATION ${SUITESPARSE_LIBDIR} RUNTIME DESTINATION ${SUITESPARSE_BINDIR} PUBLIC_HEADER DESTINATION ${SUITESPARSE_INCLUDEDIR} )