diff --git a/CMakeLists.txt b/CMakeLists.txt index 63bb6c7d..11353f21 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -64,7 +64,21 @@ endif() ################################################################################ -find_package(mdspan REQUIRED) +find_package(mdspan QUIET) +if (NOT mdspan_FOUND) + message(STATUS "No installed mdspan found, fetching from Github") + include(FetchContent) + FetchContent_Declare( + mdspan + GIT_REPOSITORY https://github.com/kokkos/mdspan.git + GIT_TAG stable + ) + FetchContent_GetProperties(mdspan) + if(NOT mdspan_POPULATED) + FetchContent_Populate(mdspan) + add_subdirectory(${mdspan_SOURCE_DIR} ${mdspan_BINARY_DIR} EXCLUDE_FROM_ALL) + endif() +endif() find_package(BLAS) option(LINALG_ENABLE_BLAS diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index ac604650..41968c9a 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,4 +1,25 @@ -find_package(GTest REQUIRED) +find_package(GTest) +if (NOT GTest_FOUND) + message(STATUS "No installed GTest found, fetching from Github") + include(FetchContent) + FetchContent_Declare( + googletest + GIT_REPOSITORY https://github.com/google/googletest.git + GIT_TAG release-1.11.0 + ) + # need to set the variables in CACHE due to CMP0077 + set(gtest_disable_pthreads ON CACHE INTERNAL "") + if(MSVC) + set(gtest_force_shared_crt ON CACHE INTERNAL "") + endif() + FetchContent_GetProperties(googletest) + if(NOT googletest_POPULATED) + FetchContent_Populate(googletest) + add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR} EXCLUDE_FROM_ALL) + endif() + add_library(GTest::Main ALIAS gtest_main) + add_library(GTest::GTest ALIAS gtest) +endif() macro(linalg_add_test name) add_executable(${name} ${name}.cpp)