SET(MINIGLOG ON)
SET(PROVIDE_UNINSTALL_TARGET OFF)
SET(USE_CUDA OFF)
SET(EIGENSPARSE ON)

# Prevent MKL from being found (guarantees no MKL)
SET(CMAKE_DISABLE_FIND_PACKAGE_MKL TRUE)
SET(CERES_THREADING_MODEL "CXX_THREADS")

FetchContent_Declare(
        ceres
        GIT_REPOSITORY https://github.com/ceres-solver/ceres-solver
        GIT_TAG 0c70ed3
        EXCLUDE_FROM_ALL
)

FetchContent_MakeAvailable(ceres)

ADD_LIBRARY(JFJochImageAnalysis STATIC
        MXAnalysisWithoutFPGA.cpp
        MXAnalysisWithoutFPGA.h
        MXAnalysisAfterFPGA.h
        MXAnalysisAfterFPGA.cpp
        IndexAndRefine.cpp
        IndexAndRefine.h
        dark_mask_analysis/DarkMaskAnalysis.cpp
        dark_mask_analysis/DarkMaskAnalysis.h
        RotationIndexer.cpp
        RotationIndexer.h
        RotationParameters.cpp
        RotationParameters.h
        WriteMmcif.cpp
        WriteMmcif.h)

FIND_PACKAGE(Eigen3 3.4 REQUIRED NO_MODULE)  # provides Eigen3::Eigen

ADD_SUBDIRECTORY(spot_finding)
ADD_SUBDIRECTORY(bragg_integration)
ADD_SUBDIRECTORY(bragg_prediction)
ADD_SUBDIRECTORY(indexing)
ADD_SUBDIRECTORY(geom_refinement)
ADD_SUBDIRECTORY(lattice_search)
ADD_SUBDIRECTORY(scale_merge)

TARGET_LINK_LIBRARIES(JFJochImageAnalysis JFJochBraggPrediction JFJochBraggIntegration JFJochLatticeSearch JFJochIndexing JFJochSpotFinding JFJochCommon JFJochGeomRefinement JFJochScaleMerge gemmi)
