| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| # |
| # arrow_cuda |
| # |
| |
| add_custom_target(arrow_cuda-all) |
| add_custom_target(arrow_cuda) |
| add_custom_target(arrow_cuda-benchmarks) |
| add_custom_target(arrow_cuda-tests) |
| add_dependencies(arrow_cuda-all arrow_cuda arrow_cuda-tests arrow_cuda-benchmarks) |
| |
| if(DEFINED ENV{CUDA_HOME}) |
| set(CUDA_TOOLKIT_ROOT_DIR "$ENV{CUDA_HOME}") |
| endif() |
| |
| find_package(CUDA REQUIRED) |
| include_directories(SYSTEM ${CUDA_INCLUDE_DIRS}) |
| |
| set(ARROW_CUDA_SRCS cuda_arrow_ipc.cc cuda_context.cc cuda_internal.cc cuda_memory.cc) |
| |
| set(ARROW_CUDA_SHARED_LINK_LIBS ${CUDA_CUDA_LIBRARY}) |
| |
| add_arrow_lib(arrow_cuda |
| CMAKE_PACKAGE_NAME |
| ArrowCUDA |
| PKG_CONFIG_NAME |
| arrow-cuda |
| SOURCES |
| ${ARROW_CUDA_SRCS} |
| OUTPUTS |
| ARROW_CUDA_LIBRARIES |
| SHARED_LINK_FLAGS |
| ${ARROW_VERSION_SCRIPT_FLAGS} # Defined in cpp/arrow/CMakeLists.txt |
| SHARED_LINK_LIBS |
| arrow_shared |
| ${ARROW_CUDA_SHARED_LINK_LIBS} |
| # Static arrow_cuda must also link against CUDA shared libs |
| STATIC_LINK_LIBS ${ARROW_CUDA_SHARED_LINK_LIBS}) |
| |
| add_dependencies(arrow_cuda ${ARROW_CUDA_LIBRARIES}) |
| |
| foreach(LIB_TARGET ${ARROW_CUDA_LIBRARIES}) |
| target_compile_definitions(${LIB_TARGET} PRIVATE ARROW_EXPORTING) |
| endforeach() |
| |
| # CUDA build version |
| configure_file(cuda_version.h.in "${CMAKE_CURRENT_BINARY_DIR}/cuda_version.h" @ONLY) |
| |
| install(FILES "${CMAKE_CURRENT_BINARY_DIR}/cuda_version.h" |
| DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/arrow/gpu") |
| |
| arrow_install_all_headers("arrow/gpu") |
| |
| if(ARROW_BUILD_SHARED) |
| set(ARROW_CUDA_LIBRARY arrow_cuda_shared) |
| else() |
| set(ARROW_CUDA_LIBRARY arrow_cuda_static) |
| endif() |
| |
| set(ARROW_CUDA_TEST_LINK_LIBS ${ARROW_CUDA_LIBRARY} ${ARROW_TEST_LINK_LIBS}) |
| |
| if(ARROW_BUILD_TESTS) |
| add_arrow_test(cuda_test STATIC_LINK_LIBS ${ARROW_CUDA_TEST_LINK_LIBS} NO_VALGRIND) |
| endif() |
| |
| if(ARROW_BUILD_BENCHMARKS) |
| cuda_add_executable(arrow-cuda-benchmark cuda_benchmark.cc) |
| target_link_libraries(arrow-cuda-benchmark ${ARROW_CUDA_LIBRARY} GTest::gtest |
| ${ARROW_BENCHMARK_LINK_LIBS}) |
| add_dependencies(arrow_cuda-benchmarks arrow-cuda-benchmark) |
| endif() |