Fix generation of psb_config.h with CMAKE

maint-3.9.0
sfilippone 1 month ago
parent d3c19706cd
commit 783a0db592

@ -132,12 +132,10 @@ include("${CMAKE_CURRENT_LIST_DIR}/cmake/CapitalizeString.cmake")
message(STATUS "Using compiler ${CMAKE_C_COMPILER};")
# Define Major and Minor Version and Patch Level, String Version
set(PSBLASMAJOR "3")
set(PSBLASMINOR "9")
set(PSBLASPATCH "0")
set(PSBLASSTRING "\"3.9.0\"")
# Find PSBLAS constants
include(${CMAKE_CURRENT_LIST_DIR}/cmake/readPSBConst.cmake)
_psb_read_const()
_psb_read_desc_const()
# Set default values for IPK_SIZE and LPK_SIZE
set(DEFAULT_IPK_SIZE 4)
@ -430,7 +428,7 @@ if(METIS_FOUND)
include(CheckTypeSize)
message(STATUS "METIS PATH ${METIS_INCLUDES} and metis libraries ${METIS_LIBRARIES}")
# Make sure this path is correct
# set(METISINCFILE "metis.h") # Adjust this to your actual path
set(CMAKE_METIS_INCFILE "metis.h") # Adjust this to your actual path
# Specify the configuration file
# set(HEADER_TEMPLATE "${CMAKE_CURRENT_SOURCE_DIR}/util/psb_metis_int.h.in")
@ -511,7 +509,7 @@ if(METIS_FOUND)
# 1. Tell CMake where to find metis.h for the check
set(CMAKE_EXTRA_INCLUDE_FILES "${METIS_INCLUDES}/metis.h")
set(CMAKE_EXTRA_INCLUDE_FILES "${METIS_INCLUDES}/${CMAKE_METIS_INCFILE}")
# 2. Check the size of Metis's own type: real_t
# This replaces checking 'float' and 'double' separately
@ -853,7 +851,7 @@ set(CMAKE_Fortran_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/modules)
message(STATUS "fortran module direcotry ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}")
message(STATUS "fortran module directory ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}")
include_directories(${MPI_Fortran_INCLUDE_PATH})

@ -0,0 +1,64 @@
macro(_psb_read_const)
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/base/modules/psb_const_mod.F90" _psb_const_mod)
string(REGEX MATCH "psb_version_major_[ \t]+=[ \t]+([0-9]+)" _psb_version_major_match "${_psb_const_mod}")
set(PSBLASMAJOR "${CMAKE_MATCH_1}")
string(REGEX MATCH "psb_version_minor_[ \t]+=[ \t]+([0-9]+)" _psb_version_minor_match "${_psb_const_mod}")
set(PSBLASMINOR "${CMAKE_MATCH_1}")
string(REGEX MATCH "psb_patchlevel_[ \t]+=[ \t]+([0-9]+)" _psb_patchlevel_match "${_psb_const_mod}")
set(PSBLASPATCH "${CMAKE_MATCH_1}")
string(REGEX MATCH "psb_version_string_[ \t]+=[ \t]+([^ \t]+)" _psb_version_string_match "${_psb_const_mod}")
set(PSBLASSTRING "${CMAKE_MATCH_1}")
string(REGEX MATCH "psb_dupl_null_[ \t]+=[ \t]+([0-9]+)" _psb_dupl_null_match "${_psb_const_mod}")
set(PSBLASDUPNUL "${CMAKE_MATCH_1}")
string(REGEX MATCH "psb_dupl_add_[ \t]+=[ \t]+([0-9]+)" _psb_dupl_add_match "${_psb_const_mod}")
set(PSBLASDUPADD "${CMAKE_MATCH_1}")
string(REGEX MATCH "psb_dupl_err_[ \t]+=[ \t]+([0-9]+)" _psb_dupl_err_match "${_psb_const_mod}")
set(PSBLASDUPERR "${CMAKE_MATCH_1}")
string(REGEX MATCH "psb_dupl_def_[ \t]+=[ \t]+([0-9]+)" _psb_dupl_def_match "${_psb_const_mod}")
set(PSBLASDUPDEF "${CMAKE_MATCH_1}")
string(REGEX MATCH "psb_upd_srch_[ \t]+=[ \t]+([0-9]+)" _psb_upd_srch_match "${_psb_const_mod}")
set(PSBLASUPDSRC "${CMAKE_MATCH_1}")
string(REGEX MATCH "psb_upd_perm_[ \t]+=[ \t]+([0-9]+)" _psb_upd_perm_match "${_psb_const_mod}")
set(PSBLASUPDPRM "${CMAKE_MATCH_1}")
string(REGEX MATCH "psb_upd_dflt_[ \t]+=[ \t]+([0-9]+)" _psb_upd_dflt_match "${_psb_const_mod}")
set(PSBLASUPDDEF "${CMAKE_MATCH_1}")
string(REGEX MATCH "psb_matbld_noremote_[ \t]+=[ \t]+([0-9]+)" _psb_matbld_noremote_match "${_psb_const_mod}")
set(PSBLASBLDNOR "${CMAKE_MATCH_1}")
string(REGEX MATCH "psb_matbld_remote_[ \t]+=[ \t]+([0-9]+)" _psb_matbld_remote_match "${_psb_const_mod}")
set(PSBLASBLDRMT "${CMAKE_MATCH_1}")
endmacro(_psb_read_const)
macro(_psb_read_desc_const)
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/base/modules/desc/psb_desc_const_mod.f90" _psb_const_mod)
string(REGEX MATCH "psb_swap_send_[ \t]+=[ \t]+([0-9]+)" _psb_swap_send_match "${_psb_const_mod}")
set(PSBSWPSND "${CMAKE_MATCH_1}")
string(REGEX MATCH "psb_swap_recv_[ \t]+=[ \t]+([0-9]+)" _psb_swap_recv_match "${_psb_const_mod}")
set(PSBSWPRCV "${CMAKE_MATCH_1}")
string(REGEX MATCH "psb_swap_sync_[ \t]+=[ \t]+([0-9]+)" _psb_swap_sync_match "${_psb_const_mod}")
set(PSBSWPSYN "${CMAKE_MATCH_1}")
string(REGEX MATCH "psb_swap_mpi_[ \t]+=[ \t]+([0-9]+)" _psb_swap_mpi_match "${_psb_const_mod}")
set(PSBSWPMPI "${CMAKE_MATCH_1}")
string(REGEX MATCH "psb_collective_start_[ \t]+=[ \t]+([0-9]+)" _psb_collective_start_match "${_psb_const_mod}")
set(PSBCLCSTR "${CMAKE_MATCH_1}")
string(REGEX MATCH "psb_collective_end_[ \t]+=[ \t]+([0-9]+)" _psb_collective_end_match "${_psb_const_mod}")
set(PSBCLCEND "${CMAKE_MATCH_1}")
string(REGEX MATCH "psb_collective_sync_[ \t]+=[ \t]+([0-9]+)" _psb_collective_sync_match "${_psb_const_mod}")
set(PSBCLCSYN "${CMAKE_MATCH_1}")
string(REGEX MATCH "psb_none_[ \t]+=[ \t]+([0-9]+)" _psb_none_match "${_psb_const_mod}")
set(PSBNONE "${CMAKE_MATCH_1}")
string(REGEX MATCH "psb_sum_[ \t]+=[ \t]+([0-9]+)" _psb_sum_match "${_psb_const_mod}")
set(PSBSUM "${CMAKE_MATCH_1}")
string(REGEX MATCH "psb_avg_[ \t]+=[ \t]+([0-9]+)" _psb_avg_match "${_psb_const_mod}")
set(PSBAVG "${CMAKE_MATCH_1}")
string(REGEX MATCH "psb_square_root_[ \t]+=[ \t]+([0-9]+)" _psb_square_root_match "${_psb_const_mod}")
set(PSBSQRT "${CMAKE_MATCH_1}")
string(REGEX MATCH "psb_setzero_[ \t]+=[ \t]+([0-9]+)" _psb_setzero_match "${_psb_const_mod}")
set(PSBSETZ "${CMAKE_MATCH_1}")
endmacro(_psb_read_desc_const)
Loading…
Cancel
Save