Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,8 @@ ecbuild_add_option( FEATURE DR_HOOK_ROCTX
ecbuild_find_package( NAME Realtime QUIET )

### Sources
# define MPI_SERIAL_LIBRARIES before including src folder, for use in fiat library declaration
set(MPI_SERIAL_LIBRARIES ${_whole_archive} mpi_serial ${_no_whole_archive})

include( fiat_compiler_warnings )
add_subdirectory(src)
Expand Down
165 changes: 94 additions & 71 deletions src/fiat/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -82,12 +82,37 @@ ecbuild_list_exclude_pattern( LIST fiat_src REGEX drhook/extensions/*)

set( fiat_src ${fiat_src} PARENT_SCOPE )

ecbuild_add_library( TARGET fiat
if( HAVE_MPI )
set( FIAT_MPI_LIBRARIES MPI::MPI_Fortran )
else()
set( FIAT_MPI_LIBRARIES ${MPI_SERIAL_LIBRARIES} )
endif()

set( FIAT_DEPENDENCE )
if( ${BUILD_SHARED_LIBS} MATCHES "BOTH" )
set( LIB_TYPES SHARED STATIC )
set( FIAT_DEPENDENCE fiat )
elseif( BUILD_SHARED_LIBS )
set( LIB_TYPES SHARED )
else()
set( LIB_TYPES STATIC )
endif()

foreach( LIB_TYPE ${LIB_TYPES} )
if( ${LIB_TYPE} MATCHES "STATIC" )
set( fiatlib "fiat-static" )
else()
set( fiatlib "fiat")
endif()
ecbuild_add_library( TARGET ${fiatlib}
LINKER_LANGUAGE Fortran
SOURCES ${fiat_src} ${CMAKE_CURRENT_BINARY_DIR}/version.c
TYPE ${LIB_TYPE}
PRIVATE_LIBS
${CMAKE_DL_LIBS}
${RT_LIB}
PRIVATE_LIBS
${FIAT_MPI_LIBRARIES}
PRIVATE_INCLUDES
${CMAKE_CURRENT_SOURCE_DIR}/drhook/internal
${CMAKE_CURRENT_SOURCE_DIR}/ecsort/internal
Expand All @@ -99,85 +124,89 @@ ecbuild_add_library( TARGET fiat
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include/fiat>
$<INSTALL_INTERFACE:include>
$<INSTALL_INTERFACE:include/fiat>
)
${MPI_Fortran_INCLUDE_DIRS}
OUTPUT_NAME fiat
DEPENDS ${FIAT_DEPENDENCE}
)

if (HAVE_DR_HOOK_NVTX)
# Files from within DrHook
ecbuild_list_add_pattern( LIST fiat_nvtx_src GLOB *.c SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/drhook/extensions/nvtx)
target_sources(fiat PRIVATE ${fiat_nvtx_src})
target_include_directories(fiat PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/drhook/extensions/nvtx)
target_compile_definitions(fiat PRIVATE DR_HOOK_HAVE_NVTX=1 HAVE_NVTX3=${HAVE_NVTX3} )
if (HAVE_DR_HOOK_NVTX)
# Files from within DrHook
ecbuild_list_add_pattern( LIST fiat_nvtx_src GLOB *.c SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/drhook/extensions/nvtx)
target_sources(${fiatlib} PRIVATE ${fiat_nvtx_src})
target_include_directories(${fiatlib} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/drhook/extensions/nvtx)
target_compile_definitions(${fiatlib} PRIVATE DR_HOOK_HAVE_NVTX=1 HAVE_NVTX3=${HAVE_NVTX3} )

# Link with NVTX
target_link_libraries (fiat PRIVATE ${NVTX_LIBRARIES})
target_include_directories(fiat PRIVATE ${NVTX_INCLUDE_DIRS})
endif()
# Link with NVTX
target_link_libraries (${fiatlib} PRIVATE ${NVTX_LIBRARIES})
target_include_directories(${fiatlib} PRIVATE ${NVTX_INCLUDE_DIRS})
endif()

if (HAVE_DR_HOOK_ROCTX)
# Files from within DrHook
ecbuild_list_add_pattern( LIST fiat_roctx_src GLOB *.c SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/drhook/extensions/roctx)
target_sources(fiat PRIVATE ${fiat_roctx_src})
target_include_directories(fiat PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/drhook/extensions/roctx)
target_compile_definitions(fiat PRIVATE DR_HOOK_HAVE_ROCTX=1 HAVE_ROCPROFILER_SDK_ROCTX=${HAVE_ROCPROFILER_SDK_ROCTX})
if (HAVE_DR_HOOK_ROCTX)
# Files from within DrHook
ecbuild_list_add_pattern( LIST fiat_roctx_src GLOB *.c SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/drhook/extensions/roctx)
target_sources(fiat PRIVATE ${fiat_roctx_src})
target_include_directories(${fiatlib} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/drhook/extensions/roctx)
target_compile_definitions(${fiatlib} PRIVATE DR_HOOK_HAVE_ROCTX=1 HAVE_ROCPROFILER_SDK_ROCTX=${HAVE_ROCPROFILER_SDK_ROCTX})

# Link with ROCTX
target_link_libraries (fiat PRIVATE ${ROCTX_LIBRARIES})
target_include_directories(fiat PRIVATE ${ROCTX_INCLUDE_DIRS})
endif()
# Link with ROCTX
target_link_libraries (${fiatlib} PRIVATE ${ROCTX_LIBRARIES})
target_include_directories(${fiatlib} PRIVATE ${ROCTX_INCLUDE_DIRS})
endif()

if (HAVE_DR_HOOK_PAPI)
# Files from within DrHook
ecbuild_list_add_pattern( LIST fiat_papi_src GLOB *.c SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/drhook/extensions/papi)
target_sources(fiat PRIVATE ${fiat_papi_src})
target_include_directories(fiat PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/drhook/extensions/papi)
target_compile_definitions(fiat PRIVATE DR_HOOK_HAVE_PAPI=1)
if (HAVE_DR_HOOK_PAPI)
# Files from within DrHook
ecbuild_list_add_pattern( LIST fiat_papi_src GLOB *.c SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/drhook/extensions/papi)
target_sources(${fiatlib} PRIVATE ${fiat_papi_src})
target_include_directories(${fiatlib} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/drhook/extensions/papi)
target_compile_definitions(${fiatlib} PRIVATE DR_HOOK_HAVE_PAPI=1)

# Files defined externally
target_link_libraries ( fiat PRIVATE ${PAPI_LIBRARIES} )
target_include_directories ( fiat PRIVATE ${PAPI_INCLUDE_DIRS} )
endif()
# Files defined externally
target_link_libraries ( ${fiatlib} PRIVATE ${PAPI_LIBRARIES} )
target_include_directories ( ${fiatlib} PRIVATE ${PAPI_INCLUDE_DIRS} )
endif()

if( ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" )
# Following should not be necessary;
# Probably a bug in the M1 prerelease of gfortran 10.2.0.4
target_compile_definitions( fiat PRIVATE $<$<COMPILE_LANG_AND_ID:Fortran,GNU>:__APPLE__>)
endif()
if( ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" )
# Following should not be necessary;
# Probably a bug in the M1 prerelease of gfortran 10.2.0.4
target_compile_definitions( ${fiatlib} PRIVATE $<$<COMPILE_LANG_AND_ID:Fortran,GNU>:__APPLE__>)
endif()

if( NOT HAVE_MPI )
# define a preprocessor macro to improve messaging in dr_hook_init
target_compile_definitions( fiat PRIVATE NO_MPI_SUPPORT)
endif()
if( NOT HAVE_MPI )
# define a preprocessor macro to improve messaging in dr_hook_init
target_compile_definitions( ${fiatlib} PRIVATE NO_MPI_SUPPORT)
endif()

if( HAVE_MPL_F77_DEPRECATED)
target_compile_definitions( fiat PRIVATE MPL_F77_DEPRECATED )
endif()
if( HAVE_MPL_F77_DEPRECATED)
target_compile_definitions( ${fiatlib} PRIVATE MPL_F77_DEPRECATED )
endif()

if( HAVE_MPL_CHECK_CONTIG)
target_compile_definitions( fiat PRIVATE MPL_CHECK_CONTIG )
endif()
if( HAVE_MPL_CHECK_CONTIG)
target_compile_definitions( ${fiatlib} PRIVATE MPL_CHECK_CONTIG )
endif()

target_compile_definitions( fiat PRIVATE ${FIAT_DEFINITIONS} )
target_compile_definitions( ${fiatlib} PRIVATE ${FIAT_DEFINITIONS} )

if( HAVE_FCKIT )
target_link_libraries( fiat PRIVATE fckit )
endif()
if( HAVE_FCKIT )
target_link_libraries( ${fiatlib} PRIVATE fckit )
endif()

if( HAVE_MPI )
target_link_libraries( fiat PUBLIC ${MPI_Fortran_LIBRARIES} )
target_include_directories( fiat PUBLIC ${MPI_Fortran_INCLUDE_DIRS} )
else()
target_link_libraries( fiat PRIVATE mpi_serial )
endif()
if( HAVE_OMP )
target_link_libraries( ${fiatlib} PRIVATE OpenMP::OpenMP_Fortran )
endif()

if( HAVE_OMP )
target_link_libraries( fiat PRIVATE OpenMP::OpenMP_Fortran )
endif()
fiat_target_ignore_missing_symbols( TARGET ${fiatlib} SYMBOLS
_MallocExtension_GetNumericProperty
_MPI_Get_version
_MPI_Get_library_version
)

fiat_target_ignore_missing_symbols( TARGET fiat SYMBOLS
_MallocExtension_GetNumericProperty
_MPI_Get_version
_MPI_Get_library_version
)
fiat_target_fortran_module_directory(
TARGET ${fiatlib}
MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/module/fiat
INSTALL_DIRECTORY module/fiat
)

endforeach()

## Install and Export ##

Expand All @@ -192,10 +221,4 @@ install(
DESTINATION include/fiat
)

fiat_target_fortran_module_directory(
TARGET fiat
MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/module/fiat
INSTALL_DIRECTORY module/fiat
)

set( FIAT_DEFINITIONS ${FIAT_DEFINITIONS} PARENT_SCOPE )
10 changes: 10 additions & 0 deletions src/mpi_serial/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,12 @@ ecbuild_add_library( TARGET mpi_serial
TYPE STATIC
SOURCES
mpi_abort.F
mpi_abort_f08.F
mpi_allgatherv.F
mpi_allreduce.F
mpi_alltoallv.F
mpi_barrier.F
mpi_barrier_f08.F
mpi_bcast.F
mpi_bsend.F
mpi_buffer_attach.F
Expand All @@ -26,10 +28,14 @@ ecbuild_add_library( TARGET mpi_serial
mpi_cart_sub.F
mpi_comm_compare.F
mpi_comm_create.F
mpi_comm_create_f08.F
mpi_comm_free.F
mpi_comm_group.F
mpi_comm_group_f08.F
mpi_comm_rank.F
mpi_comm_rank_f08.F
mpi_comm_size.F
mpi_comm_size_f08.F
mpi_comm_split.F
mpi_end.F
mpi_error_string.F
Expand All @@ -47,6 +53,7 @@ ecbuild_add_library( TARGET mpi_serial
mpi_file_write_shared.F
mpi_finalize.F
mpi_finalized.F
mpi_f08_compile_constants.F
mpi_gather.F
mpi_gatherv.F
mpi_get_count.F
Expand All @@ -61,15 +68,18 @@ ecbuild_add_library( TARGET mpi_serial
mpi_init.F
mpi_init_thread.F
mpi_initialized.F
mpi_initialized_f08.F
mpi_iprobe.F
mpi_irecv.F
mpi_iscatter.F
mpi_iscatterv.F
mpi_isend.F
mpi_probe.F
mpi_recv.F
mpi_recv_f08ts.F
mpi_scatterv.F
mpi_send.F
mpi_send_f08ts.F
mpi_ssend.F
mpi_testsome.F
mpi_type_size.F
Expand Down
4 changes: 4 additions & 0 deletions src/mpi_serial/mpi_abort_f08.F
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
SUBROUTINE mpi_abort_f08
call abort
return
END SUBROUTINE
2 changes: 2 additions & 0 deletions src/mpi_serial/mpi_barrier_f08.F
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
SUBROUTINE mpi_barrier_f08
END SUBROUTINE
3 changes: 3 additions & 0 deletions src/mpi_serial/mpi_comm_create_f08.F
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
SUBROUTINE mpi_comm_create_f08 (MPL_COMM,IGROUP,KCOMM,IERR)
ierr = 0
END SUBROUTINE
2 changes: 2 additions & 0 deletions src/mpi_serial/mpi_comm_group_f08.F
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
SUBROUTINE mpi_comm_group_f08
END SUBROUTINE
4 changes: 4 additions & 0 deletions src/mpi_serial/mpi_comm_rank_f08.F
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
SUBROUTINE mpi_comm_rank_f08 (ic,ir,ie)
ir = 0
ie = 0
END SUBROUTINE
4 changes: 4 additions & 0 deletions src/mpi_serial/mpi_comm_size_f08.F
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
SUBROUTINE mpi_comm_size_f08(ic,is,ie)
is = 1
ie = 0
END SUBROUTINE
7 changes: 7 additions & 0 deletions src/mpi_serial/mpi_f08_compile_constants.F
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
MODULE mpi_f08_compile_constants
INTEGER :: mpi_byte = 0
INTEGER :: mpi_comm_world = 0
INTEGER :: mpi_integer = 0
INTEGER :: mpi_integer4 = 0
INTEGER :: mpi_integer8 = 0
END MODULE
6 changes: 6 additions & 0 deletions src/mpi_serial/mpi_initialized_f08.F
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
SUBROUTINE mpi_initialized_f08(ldflag,ierr)
logical ldflag
integer ierr
ldflag=.FALSE.
ierr=0
END SUBROUTINE
2 changes: 2 additions & 0 deletions src/mpi_serial/mpi_recv_f08ts.F
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
SUBROUTINE mpi_recv_f08ts
END SUBROUTINE
2 changes: 2 additions & 0 deletions src/mpi_serial/mpi_send_f08ts.F
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
SUBROUTINE mpi_send_f08ts
END SUBROUTINE
Loading
Loading