cmake_minimum_required(VERSION 3.21)
project(STRUMPACK-example VERSION 0.1 LANGUAGES CXX C Fortran)

find_package(STRUMPACK REQUIRED)

add_executable(KernelRegression          ../../examples/dense/KernelRegression.cpp)
add_executable(KernelRegressionMPI       ../../examples/dense/KernelRegressionMPI.cpp)
add_executable(testStructured            ../../examples/dense/testStructured.cpp)
add_executable(testStructuredMPI         ../../examples/dense/testStructuredMPI.cpp)
add_executable(dstructured               ../../examples/dense/dstructured.c)
add_executable(dstructured_mpi           ../../examples/dense/dstructured_mpi.c)
add_executable(fstructured               ../../examples/dense/fstructured.f90)
add_executable(testBLRMPI                ../../examples/dense/testBLRMPI.cpp)

add_executable(testPoisson2d             ../../examples/sparse/testPoisson2d.cpp)
add_executable(testMMdouble              ../../examples/sparse/testMMdouble.cpp)
add_executable(testPoisson3d             ../../examples/sparse/testPoisson3d.cpp)
add_executable(testMixedPrecision        ../../examples/sparse/testMixedPrecision.cpp)
add_executable(sexample                  ../../examples/sparse/sexample.c)
add_executable(dexample                  ../../examples/sparse/dexample.c)
add_executable(cexample                  ../../examples/sparse/cexample.c)
add_executable(zexample                  ../../examples/sparse/zexample.c)
add_executable(fexample                  ../../examples/sparse/fexample.f90)
add_executable(testHelmholtz             ../../examples/sparse/testHelmholtz.cpp ../../examples/sparse/genmatrix3D_core.f)
add_executable(testPoisson2dMPIDist      ../../examples/sparse/testPoisson2dMPIDist.cpp)
add_executable(testMMdoubleMPIDist       ../../examples/sparse/testMMdoubleMPIDist.cpp)
add_executable(testPoisson3dMPIDist      ../../examples/sparse/testPoisson3dMPIDist.cpp)
add_executable(testMixedPrecisionMPIDist ../../examples/sparse/testMixedPrecisionMPIDist.cpp)


target_link_libraries(KernelRegression          PRIVATE STRUMPACK::strumpack ${MPI_Fortran_LIBRARIES})
target_link_libraries(KernelRegressionMPI       PRIVATE STRUMPACK::strumpack ${MPI_Fortran_LIBRARIES})
target_link_libraries(testStructured            PRIVATE STRUMPACK::strumpack ${MPI_Fortran_LIBRARIES})
target_link_libraries(testStructuredMPI         PRIVATE STRUMPACK::strumpack ${MPI_Fortran_LIBRARIES})
target_link_libraries(dstructured               PRIVATE STRUMPACK::strumpack ${MPI_Fortran_LIBRARIES})
target_link_libraries(dstructured_mpi           PRIVATE STRUMPACK::strumpack ${MPI_Fortran_LIBRARIES})
target_link_libraries(fstructured               PRIVATE STRUMPACK::strumpack ${MPI_Fortran_LIBRARIES})
target_link_libraries(testBLRMPI                PRIVATE STRUMPACK::strumpack ${MPI_Fortran_LIBRARIES})

target_link_libraries(testPoisson2d             PRIVATE STRUMPACK::strumpack ${MPI_Fortran_LIBRARIES})
target_link_libraries(testMMdouble              PRIVATE STRUMPACK::strumpack ${MPI_Fortran_LIBRARIES})
target_link_libraries(testPoisson3d             PRIVATE STRUMPACK::strumpack ${MPI_Fortran_LIBRARIES})
target_link_libraries(testMixedPrecision        PRIVATE STRUMPACK::strumpack ${MPI_Fortran_LIBRARIES})
target_link_libraries(sexample                  PRIVATE STRUMPACK::strumpack ${MPI_Fortran_LIBRARIES})
target_link_libraries(dexample                  PRIVATE STRUMPACK::strumpack ${MPI_Fortran_LIBRARIES})
target_link_libraries(cexample                  PRIVATE STRUMPACK::strumpack ${MPI_Fortran_LIBRARIES})
target_link_libraries(zexample                  PRIVATE STRUMPACK::strumpack ${MPI_Fortran_LIBRARIES})
target_link_libraries(fexample                  PRIVATE STRUMPACK::strumpack ${MPI_Fortran_LIBRARIES})
target_link_libraries(testHelmholtz             PRIVATE STRUMPACK::strumpack ${MPI_Fortran_LIBRARIES})
target_link_libraries(testPoisson2dMPIDist      PRIVATE STRUMPACK::strumpack ${MPI_Fortran_LIBRARIES})
target_link_libraries(testMMdoubleMPIDist       PRIVATE STRUMPACK::strumpack ${MPI_Fortran_LIBRARIES})
target_link_libraries(testPoisson3dMPIDist      PRIVATE STRUMPACK::strumpack ${MPI_Fortran_LIBRARIES})
target_link_libraries(testMixedPrecisionMPIDist PRIVATE STRUMPACK::strumpack ${MPI_Fortran_LIBRARIES})
