Files
trigdx/src/CMakeLists.txt
Bram Veenboer 9c17e90c77 Add AVX checks (#20)
Co-authored-by: mancini <mancini@astron.nl>
2025-08-15 10:30:57 +02:00

43 lines
1.2 KiB
CMake

include(FetchContent)
include(FindAVX)
add_library(trigdx reference.cpp lookup.cpp)
target_include_directories(trigdx PUBLIC ${PROJECT_SOURCE_DIR}/include)
if(HAVE_AVX)
target_sources(trigdx PRIVATE lookup_avx.cpp)
endif()
if(TRIGDX_USE_MKL)
find_package(MKL REQUIRED)
target_sources(trigdx PRIVATE mkl.cpp)
target_link_libraries(trigdx PRIVATE MKL::MKL)
endif()
if(TRIGDX_USE_GPU)
enable_language(CUDA)
find_package(CUDAToolkit REQUIRED)
add_library(gpu SHARED gpu/gpu.cu)
target_sources(trigdx PRIVATE gpu.cpp)
target_link_libraries(trigdx PRIVATE CUDA::cudart)
target_link_libraries(trigdx PRIVATE gpu)
endif()
if(TRIGDX_USE_XSIMD)
# Requires XSIMD > 13 for architecture independent dispatching
find_package(xsimd 13 QUIET)
if(NOT TARGET xsimd)
FetchContent_Declare(
xsimd
GIT_REPOSITORY https://github.com/xtensor-stack/xsimd.git
GIT_TAG 13.2.0)
FetchContent_MakeAvailable(xsimd)
endif()
target_sources(trigdx PRIVATE lookup_xsimd.cpp)
target_link_libraries(trigdx PRIVATE xsimd)
endif()
target_include_directories(
trigdx INTERFACE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>)