cmake_minimum_required(VERSION 3.10) project(psblas_project Fortran) # Check for the installation path for psblas if(NOT DEFINED PSBLAS_INSTALL_DIR) message(FATAL_ERROR "Please specify the path to the psblas installation directory using -DPSBLAS_INSTALL_DIR=") endif() # Set the include and library directories based on the provided path set(INSTALLDIR "${PSBLAS_INSTALL_DIR}") set(INCDIR "${INSTALLDIR}/include") set(MODDIR "${INSTALLDIR}/modules") set(LIBDIR "${INSTALLDIR}/lib") # Find the psblas package find_package(psblas REQUIRED PATHS ${INSTALLDIR}) # for Fortran compiler include_directories(${INCDIR} ${MODDIR}) # Define executable directory set(EXEDIR "${CMAKE_CURRENT_SOURCE_DIR}/runs") # Ensure the executable directory exists file(MAKE_DIRECTORY ${EXEDIR}) # PSBLAS libraries set(PSBLAS_LIBS psblas::util psblas::prec psblas::base) include(${CMAKE_CURRENT_LIST_DIR}/utils/CMakeLists.txt) include(${CMAKE_CURRENT_LIST_DIR}/geaxpby/CMakeLists.txt) include(${CMAKE_CURRENT_LIST_DIR}/gedot/CMakeLists.txt) include(${CMAKE_CURRENT_LIST_DIR}/spmm/CMakeLists.txt) # Create executables add_executable(psb_geaxpby_test ${geaxpby_source_files} ${utils_source_files}) add_executable(psb_gedot_test ${gedot_source_files} ${utils_source_files}) add_executable(psb_spmm_test ${spmm_source_files} ${utils_source_files}) # Link the necessary libraries target_link_libraries(psb_geaxpby_test ${PSBLAS_LIBS}) target_link_libraries(psb_gedot_test ${PSBLAS_LIBS}) target_link_libraries(psb_spmm_test ${PSBLAS_LIBS}) # Set output directory set_target_properties(psb_geaxpby_test PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${EXEDIR} ) set_target_properties(psb_gedot_test PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${EXEDIR} ) set_target_properties(psb_spmm_test PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${EXEDIR} ) # Inform the user of successful configuration message(STATUS "CMake configuration complete. Build with 'make' in the build directory.")