cmake_minimum_required(VERSION 3.16) project(TestInstall LANGUAGES CXX) find_package(Ginkgo REQUIRED PATHS # The Path where ginkgo was installed # Alternatively, use `cmake -DCMAKE_PREFIX_PATH=` to specify the install directory ) # Manage RPATH. This needs to be before the targets. set(CMAKE_SKIP_BUILD_RPATH OFF) set(CMAKE_SKIP_INSTALL_RPATH OFF) set(CMAKE_INSTALL_RPATH_USE_LINK_PATH ON) # Copy the data to the build directory configure_file(data/A.mtx data/A.mtx COPYONLY) configure_file(data/b.mtx data/b.mtx COPYONLY) configure_file(data/x0.mtx data/x0.mtx COPYONLY) include(CheckLanguage) check_language(CUDA) set(HAS_REFERENCE 0) if (GINKGO_BUILD_REFERENCE) set(HAS_REFERENCE 1) endif() add_executable(test_install test_install.cpp) target_compile_definitions(test_install PRIVATE HAS_REFERENCE=${HAS_REFERENCE}) target_link_libraries(test_install PRIVATE Ginkgo::ginkgo) if(GINKGO_BUILD_MPI) find_package(MPI 3.1 COMPONENTS CXX REQUIRED) target_link_libraries(test_install PRIVATE MPI::MPI_CXX) endif() if(GINKGO_BUILD_CUDA) enable_language(CUDA) configure_file(test_install.cpp test_install.cu COPYONLY) add_executable(test_install_cuda ${CMAKE_CURRENT_BINARY_DIR}/test_install.cu) set_target_properties(test_install_cuda PROPERTIES CUDA_STANDARD 17) target_compile_definitions(test_install_cuda PRIVATE HAS_CUDA=1) target_compile_definitions(test_install_cuda PRIVATE HAS_REFERENCE=${HAS_REFERENCE}) target_link_libraries(test_install_cuda PRIVATE Ginkgo::ginkgo) endif() if(GINKGO_BUILD_HIP) enable_language(HIP) configure_file(test_install.cpp test_install.hip.cpp COPYONLY) set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/test_install.hip.cpp PROPERTIES LANGUAGE HIP) add_executable(test_install_hip ${CMAKE_CURRENT_BINARY_DIR}/test_install.hip.cpp) set_target_properties(test_install_hip PROPERTIES HIP_STANDARD 17) target_link_libraries(test_install_hip PRIVATE Ginkgo::ginkgo) target_compile_definitions(test_install_hip PRIVATE HAS_HIP=1) target_compile_definitions(test_install_hip PRIVATE HAS_REFERENCE=${HAS_REFERENCE}) endif() # Installation step set(TESTINSTALL_INSTALL_DIR "${GINKGO_INSTALL_PREFIX}/smoke_tests") set(TESTINSTALL_INSTALL_DATADIR "${TESTINSTALL_INSTALL_DIR}/data") # Install the binaries and data install(TARGETS test_install RUNTIME DESTINATION ${TESTINSTALL_INSTALL_DIR}) if(GINKGO_BUILD_CUDA) install(TARGETS test_install_cuda RUNTIME DESTINATION ${TESTINSTALL_INSTALL_DIR}) endif() if(GINKGO_BUILD_HIP) install(TARGETS test_install_hip RUNTIME DESTINATION ${TESTINSTALL_INSTALL_DIR}) endif() install(DIRECTORY "${TestInstall_BINARY_DIR}/data/" DESTINATION "${TESTINSTALL_INSTALL_DATADIR}")