cmake_minimum_required(VERSION 3.31.1)

# Enable compile_commands.json generation for IDE support
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)

set(CMAKE_C_COMPILER gcc)
set(CMAKE_CXX_COMPILER g++)
set(CMAKE_Fortran_COMPILER gfortran)

project(main)

find_package(PkgConfig REQUIRED)

pkg_search_module(OpenBLAS REQUIRED IMPORTED_TARGET openblas)
pkg_search_module(PETSc REQUIRED IMPORTED_TARGET petsc)
pkg_search_module(OpenMPI REQUIRED IMPORTED_TARGET ompi)

add_executable(main main.c)
target_include_directories(main PUBLIC ${PETSc_INCLUDE_DIRS} ${OpenBLAS_INCLUDE_DIRS} ${OpenMPI_INCLUDE_DIRS})
target_link_libraries(main PUBLIC m PkgConfig::PETSc PkgConfig::OpenBLAS PkgConfig::OpenMPI)

add_executable(arnoldi arnoldi.c)
target_include_directories(arnoldi PUBLIC ${PETSc_INCLUDE_DIRS} ${OpenBLAS_INCLUDE_DIRS} ${OpenMPI_INCLUDE_DIRS})
target_link_libraries(arnoldi PUBLIC m PkgConfig::PETSc PkgConfig::OpenBLAS PkgConfig::OpenMPI)
