cmake_minimum_required(VERSION 4.0) set(CMAKE_C_COMPILER clang) set(CMAKE_CXX_COMPILER clang++) set(CMAKE_CXX_STANDARD 23) project(slopefit) add_compile_options(-Wall -Werror -Wpedantic) find_package(Eigen3 REQUIRED) find_package(Python 3.13 COMPONENTS Interpreter Development.Module REQUIRED) execute_process( COMMAND "${Python_EXECUTABLE}" -m nanobind --cmake_dir OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE nanobind_ROOT) find_package(nanobind CONFIG REQUIRED) file(GLOB_RECURSE SOURCES lib/*.cpp) add_library(autoopt STATIC ${SOURCES}) target_include_directories(autoopt PUBLIC include) target_link_libraries(autoopt PUBLIC Eigen3::Eigen) target_link_libraries(autoopt PRIVATE fftw3) nanobind_add_module(slopefit NOMINSIZE src/module.cpp) nanobind_add_stub( slopefit_stub MODULE slopefit OUTPUT slopefit.pyi PYTHON_PATH $ DEPENDS slopefit ) target_link_libraries(slopefit PRIVATE autoopt) install(TARGETS slopefit DESTINATION .) install(FILES $/slopefit.pyi DESTINATION .) # add tests if gtest is found enable_testing() add_subdirectory(tests) find_library(GTestPackage gtest QUIET) if(GTestPackage) endif()