|
| 1 | +#============================================================================= |
| 2 | +# Copyright 2019 BlazingDB, Inc. |
| 3 | +# Copyright 2019 Percy Camilo Triveño Aucahuasi <percy@blazingdb.com> |
| 4 | +#============================================================================= |
| 5 | + |
| 6 | +# BEGIN macros |
| 7 | + |
| 8 | +macro(CONFIGURE_GPU_RMM_EXTERNAL_PROJECT) |
| 9 | + set(ENV{CUDACXX} $ENV{CUDACXX}) |
| 10 | + |
| 11 | + set(RMM_CMAKE_ARGS |
| 12 | + ) |
| 13 | + |
| 14 | + if(CXX_OLD_ABI) |
| 15 | + # enable old ABI for C/C++ |
| 16 | + list(APPEND RMM_CMAKE_ARGS " -DCMAKE_CXX11_ABI=OFF") |
| 17 | + else() |
| 18 | + list(APPEND RMM_CMAKE_ARGS " -DCMAKE_CXX11_ABI=ON") |
| 19 | + endif() |
| 20 | + |
| 21 | + # Download and unpack rmm at configure time |
| 22 | + configure_file(${CMAKE_CURRENT_LIST_DIR}/RMM.CMakeLists.txt.cmake ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/thirdparty/rmm-download/CMakeLists.txt) |
| 23 | + |
| 24 | + execute_process( |
| 25 | + COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . |
| 26 | + RESULT_VARIABLE result |
| 27 | + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/thirdparty/rmm-download/ |
| 28 | + ) |
| 29 | + |
| 30 | + if(result) |
| 31 | + message(FATAL_ERROR "CMake step for rmm failed: ${result}") |
| 32 | + endif() |
| 33 | + |
| 34 | + execute_process( |
| 35 | + COMMAND ${CMAKE_COMMAND} --build . -- -j8 |
| 36 | + RESULT_VARIABLE result |
| 37 | + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/thirdparty/rmm-download/ |
| 38 | + ) |
| 39 | + |
| 40 | + if(result) |
| 41 | + message(FATAL_ERROR "Build step for rmm failed: ${result}") |
| 42 | + endif() |
| 43 | + |
| 44 | + execute_process( |
| 45 | + COMMAND bash ${CMAKE_SOURCE_DIR}/scripts/patch_rmm.sh ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/thirdparty/rmm-install/ |
| 46 | + RESULT_VARIABLE result |
| 47 | + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/thirdparty/rmm-download/ |
| 48 | + ) |
| 49 | + |
| 50 | + if(result) |
| 51 | + message(FATAL_ERROR "Patch step for rmm failed: ${result}") |
| 52 | + endif() |
| 53 | +endmacro() |
| 54 | + |
| 55 | +# END macros |
| 56 | + |
| 57 | +# BEGIN MAIN # |
| 58 | + |
| 59 | +if (RMM_INSTALL_DIR) |
| 60 | + if (NOT RMM_INSTALL_DIR) |
| 61 | + message(FATAL_ERROR "If you use the RMM_INSTALL_DIR argument then you need pass the RMM_INSTALL_DIR argument too (the home installation of rmm)") |
| 62 | + endif() |
| 63 | + |
| 64 | + message(STATUS "RMM_INSTALL_DIR defined, it will use vendor version from ${RMM_INSTALL_DIR}") |
| 65 | + set(RMM_ROOT "${RMM_INSTALL_DIR}") |
| 66 | +else() |
| 67 | + message(STATUS "RMM_INSTALL_DIR not defined, it will be built from sources") |
| 68 | + configure_gpu_rmm_external_project() |
| 69 | + set(RMM_ROOT "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/thirdparty/rmm-install/") |
| 70 | +endif() |
| 71 | + |
| 72 | +find_package(RMM REQUIRED) |
| 73 | +set_package_properties(RMM PROPERTIES TYPE REQUIRED |
| 74 | + PURPOSE "rmm is a C library for implementing common functionality for a GPU Data Frame." |
| 75 | + URL "https://github.com/gpuopenanalytics/rmm") |
| 76 | + |
| 77 | +if(NOT RMM_FOUND) |
| 78 | + message(FATAL_ERROR "rmm not found, please check your settings.") |
| 79 | +endif() |
| 80 | + |
| 81 | +message(STATUS "rmm found in ${RMM_ROOT}") |
| 82 | + |
| 83 | +set(RMM_LIBDIR ${RMM_ROOT}/lib/) |
| 84 | +link_directories(${RMM_LIBDIR}) |
| 85 | + |
| 86 | +include_directories(${RMM_INCLUDEDIR} ${RMM_INCLUDE_DIR}) |
| 87 | +# TODO percy seems cmake bug: we cannot define target dirs per cuda target |
| 88 | +# ... see if works in future cmake versions |
| 89 | +link_directories(${RMM_LIBDIR}) |
| 90 | + |
| 91 | +# END MAIN # |
0 commit comments