
This commit adds a new configure option: --enable-mpi1-compat. Without this option we will no longer provide APIs, typedefs, and defines that were removed from the standard in MPI-3.0. This option will exist for one major release (Open MPI v4.x.x) and then the option and associated code will be removed in Open MPI v5.x.x. Open MPI has already internally prepared for this change. Please prepare your codes accordingly. Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
508 строки
15 KiB
Makefile
508 строки
15 KiB
Makefile
#
|
|
# Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana
|
|
# University Research and Technology
|
|
# Corporation. All rights reserved.
|
|
# Copyright (c) 2004-2013 The University of Tennessee and The University
|
|
# of Tennessee Research Foundation. All rights
|
|
# reserved.
|
|
# Copyright (c) 2004-2009 High Performance Computing Center Stuttgart,
|
|
# University of Stuttgart. All rights reserved.
|
|
# Copyright (c) 2004-2005 The Regents of the University of California.
|
|
# All rights reserved.
|
|
# Copyright (c) 2006-2015 Cisco Systems, Inc. All rights reserved.
|
|
# Copyright (c) 2011-2013 Inria. All rights reserved.
|
|
# Copyright (c) 2011-2013 Universite Bordeaux 1
|
|
# Copyright (c) 2013-2018 Los Alamos National Security, LLC. All rights
|
|
# reserved.
|
|
# Copyright (c) 2015-2017 Research Organization for Information Science
|
|
# and Technology (RIST). All rights reserved.
|
|
# Copyright (c) 2016 IBM Corporation. All rights reserved.
|
|
# $COPYRIGHT$
|
|
#
|
|
# Additional copyrights may follow
|
|
#
|
|
# $HEADER$
|
|
#
|
|
|
|
include $(top_srcdir)/Makefile.ompi-rules
|
|
|
|
SUBDIRS = profile
|
|
|
|
AM_CPPFLAGS = -DOMPI_BUILD_MPI_PROFILING=0 -DOMPI_COMPILING_FORTRAN_WRAPPERS=1
|
|
|
|
# The top directory only builds MPI_* bindings and some support
|
|
# glue. The bottom directory only builds PMPI_* bindings. Each
|
|
# directory is built when certain conditions are met. If the mpif.h
|
|
# bindings are disabled, nothing in the top or bottom directory is
|
|
# built.
|
|
#
|
|
# If the mpif.h MPI API bindings are enabled, the glue functions in
|
|
# the top directory are always built.
|
|
#
|
|
# The cases where the MPI API functions are build top directory needs
|
|
# to be built are:
|
|
#
|
|
# 1. When profiling is disabled
|
|
# 2. When profiling is enabled but weak symbol support is absent
|
|
#
|
|
|
|
lib_LTLIBRARIES =
|
|
CLEANFILES =
|
|
# Note that we invoke some OPAL functions directly in libmpi_mpifh.la,
|
|
# so we need to link in the OPAL library directly (pulling it in
|
|
# indirectly via libmpi.la does not work on all platforms).
|
|
lib@OMPI_LIBMPI_NAME@_mpifh_la_LIBADD = \
|
|
$(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la \
|
|
$(OMPI_MPIEXT_MPIFH_LIBS) \
|
|
$(OMPI_TOP_BUILDDIR)/opal/lib@OPAL_LIB_PREFIX@open-pal.la
|
|
|
|
lib@OMPI_LIBMPI_NAME@_mpifh_la_LDFLAGS = -version-info $(libmpi_mpifh_so_version)
|
|
|
|
# Are we building the mpif.h bindings at all?
|
|
if OMPI_BUILD_FORTRAN_MPIFH_BINDINGS
|
|
# If yes, then we need to build the installable library and the glue
|
|
# convenience library that will be sucked up into the main libmpi.
|
|
lib_LTLIBRARIES += lib@OMPI_LIBMPI_NAME@_mpifh.la
|
|
# Do we need to suck in the convenience library from the lower
|
|
# directory?
|
|
if BUILD_PMPI_FORTRAN_MPIFH_BINDINGS_LAYER
|
|
lib@OMPI_LIBMPI_NAME@_mpifh_la_LIBADD += profile/libmpi_mpifh_pmpi.la
|
|
endif
|
|
endif
|
|
|
|
headers = \
|
|
bindings.h \
|
|
prototypes_mpi.h \
|
|
status-conversion.h
|
|
|
|
#
|
|
# These files are only built and added to libmpi_mpifh.la in certain cases.
|
|
#
|
|
lib@OMPI_LIBMPI_NAME@_mpifh_la_SOURCES =
|
|
|
|
# sizeof_f.f90 is generated based on some results from configure tests.
|
|
CLEANFILES += sizeof_f.f90
|
|
|
|
# If we're building the MPI_SIZEOF interfaces, generate the source
|
|
# code in sizeof_f.f90 (via a perl script). Normally, we'd just add
|
|
# sizeof_f.f90 to the libmpi_mpif_la_SOURCES and be done with it.
|
|
# However, since this is the first *actual Fortran* source that we've
|
|
# added to libmpi_mpif_la_SOURCEs, this causes Libtool to use the
|
|
# *Fortran* linker to create the final libmpi_mpif.la library
|
|
# (vs. using the C linker, as it has done for years). This exposes an
|
|
# unfortunate bug in the Absoft linker: it does not honor the order of
|
|
# -Wl arguments, which basically causes the resulting libmpi_mpif.so
|
|
# to be borked.
|
|
#
|
|
# To get around this, we compile sizeof_f.f90 into its own LT
|
|
# convenience library, and then we LIBADD that convenience library
|
|
# into the main libmpi_mpifh.la. In this way, we basically trick
|
|
# Libtool into still using the C linker to create libmpi_mpif.la, and
|
|
# our -Wl flags therefore don't get re-ordered.
|
|
#
|
|
# All this being said, we can't rely on Automake/Libtool not figuring
|
|
# out this workaround indefinitely. So Jeff advised Absoft to fix
|
|
# this bug in Sep 2014.
|
|
noinst_LTLIBRARIES=
|
|
if BUILD_FORTRAN_SIZEOF
|
|
noinst_LTLIBRARIES += libmpi_mpifh_sizeof.la
|
|
# Do not dist this file; it is generated
|
|
nodist_libmpi_mpifh_sizeof_la_SOURCES = sizeof_f.f90
|
|
lib@OMPI_LIBMPI_NAME@_mpifh_la_LIBADD += libmpi_mpifh_sizeof.la
|
|
endif
|
|
|
|
sizeof_pl = $(top_srcdir)/ompi/mpi/fortran/base/gen-mpi-sizeof.pl
|
|
|
|
sizeof_f.f90: $(top_builddir)/config.status
|
|
sizeof_f.f90: $(sizeof_pl)
|
|
sizeof_f.f90:
|
|
$(OMPI_V_GEN) $(sizeof_pl) \
|
|
--impl=$@ --ierror=mandatory --mpi \
|
|
--maxrank=$(OMPI_FORTRAN_MAX_ARRAY_RANK) \
|
|
--generate=$(OMPI_FORTRAN_BUILD_SIZEOF) \
|
|
--real16=$(OMPI_HAVE_FORTRAN_REAL16) \
|
|
--complex32=$(OMPI_HAVE_FORTRAN_COMPLEX32)
|
|
|
|
if BUILD_MPI_FORTRAN_MPIFH_BINDINGS_LAYER
|
|
lib@OMPI_LIBMPI_NAME@_mpifh_la_SOURCES += \
|
|
abort_f.c \
|
|
add_error_class_f.c \
|
|
add_error_code_f.c \
|
|
add_error_string_f.c \
|
|
aint_add_f.c \
|
|
aint_diff_f.c \
|
|
allgather_f.c \
|
|
allgatherv_f.c \
|
|
alloc_mem_f.c \
|
|
allreduce_f.c \
|
|
alltoall_f.c \
|
|
alltoallv_f.c \
|
|
alltoallw_f.c \
|
|
barrier_f.c \
|
|
bcast_f.c \
|
|
bsend_f.c \
|
|
bsend_init_f.c \
|
|
buffer_attach_f.c \
|
|
buffer_detach_f.c \
|
|
cancel_f.c \
|
|
cart_coords_f.c \
|
|
cart_create_f.c \
|
|
cartdim_get_f.c \
|
|
cart_get_f.c \
|
|
cart_map_f.c \
|
|
cart_rank_f.c \
|
|
cart_shift_f.c \
|
|
cart_sub_f.c \
|
|
close_port_f.c \
|
|
comm_accept_f.c \
|
|
comm_call_errhandler_f.c \
|
|
comm_compare_f.c \
|
|
comm_connect_f.c \
|
|
comm_create_errhandler_f.c \
|
|
comm_create_f.c \
|
|
comm_create_group_f.c \
|
|
comm_create_keyval_f.c \
|
|
comm_delete_attr_f.c \
|
|
comm_disconnect_f.c \
|
|
comm_dup_f.c \
|
|
comm_dup_with_info_f.c \
|
|
comm_idup_f.c \
|
|
comm_free_f.c \
|
|
comm_free_keyval_f.c \
|
|
comm_get_attr_f.c \
|
|
comm_get_errhandler_f.c \
|
|
comm_get_info_f.c \
|
|
comm_get_name_f.c \
|
|
comm_get_parent_f.c \
|
|
comm_group_f.c \
|
|
comm_join_f.c \
|
|
comm_rank_f.c \
|
|
comm_remote_group_f.c \
|
|
comm_remote_size_f.c \
|
|
comm_set_attr_f.c \
|
|
comm_set_errhandler_f.c \
|
|
comm_set_info_f.c \
|
|
comm_set_name_f.c \
|
|
comm_size_f.c \
|
|
comm_spawn_f.c \
|
|
comm_spawn_multiple_f.c \
|
|
comm_split_f.c \
|
|
comm_split_type_f.c \
|
|
comm_test_inter_f.c \
|
|
dist_graph_create_adjacent_f.c \
|
|
dist_graph_create_f.c \
|
|
dist_graph_neighbors_f.c \
|
|
dist_graph_neighbors_count_f.c \
|
|
dims_create_f.c \
|
|
errhandler_free_f.c \
|
|
error_class_f.c \
|
|
error_string_f.c \
|
|
exscan_f.c \
|
|
f_sync_reg_f.c \
|
|
file_call_errhandler_f.c \
|
|
file_close_f.c \
|
|
file_create_errhandler_f.c \
|
|
file_delete_f.c \
|
|
file_get_amode_f.c \
|
|
file_get_atomicity_f.c \
|
|
file_get_byte_offset_f.c \
|
|
file_get_errhandler_f.c \
|
|
file_get_group_f.c \
|
|
file_get_info_f.c \
|
|
file_get_position_f.c \
|
|
file_get_position_shared_f.c \
|
|
file_get_size_f.c \
|
|
file_get_type_extent_f.c \
|
|
file_get_view_f.c \
|
|
file_iread_at_f.c \
|
|
file_iread_f.c \
|
|
file_iread_at_all_f.c \
|
|
file_iread_all_f.c \
|
|
file_iread_shared_f.c \
|
|
file_iwrite_at_f.c \
|
|
file_iwrite_f.c \
|
|
file_iwrite_at_all_f.c \
|
|
file_iwrite_all_f.c \
|
|
file_iwrite_shared_f.c \
|
|
file_open_f.c \
|
|
file_preallocate_f.c \
|
|
file_read_all_begin_f.c \
|
|
file_read_all_end_f.c \
|
|
file_read_all_f.c \
|
|
file_read_at_all_begin_f.c \
|
|
file_read_at_all_end_f.c \
|
|
file_read_at_all_f.c \
|
|
file_read_at_f.c \
|
|
file_read_f.c \
|
|
file_read_ordered_begin_f.c \
|
|
file_read_ordered_end_f.c \
|
|
file_read_ordered_f.c \
|
|
file_read_shared_f.c \
|
|
file_seek_f.c \
|
|
file_seek_shared_f.c \
|
|
file_set_atomicity_f.c \
|
|
file_set_errhandler_f.c \
|
|
file_set_info_f.c \
|
|
file_set_size_f.c \
|
|
file_set_view_f.c \
|
|
file_sync_f.c \
|
|
file_write_all_begin_f.c \
|
|
file_write_all_end_f.c \
|
|
file_write_all_f.c \
|
|
file_write_at_all_begin_f.c \
|
|
file_write_at_all_end_f.c \
|
|
file_write_at_all_f.c \
|
|
file_write_at_f.c \
|
|
file_write_f.c \
|
|
file_write_ordered_begin_f.c \
|
|
file_write_ordered_end_f.c \
|
|
file_write_ordered_f.c \
|
|
file_write_shared_f.c \
|
|
finalized_f.c \
|
|
finalize_f.c \
|
|
free_mem_f.c \
|
|
gather_f.c \
|
|
gatherv_f.c \
|
|
get_address_f.c \
|
|
get_count_f.c \
|
|
get_elements_f.c \
|
|
get_elements_x_f.c \
|
|
get_library_version_f.c \
|
|
get_processor_name_f.c \
|
|
get_version_f.c \
|
|
graph_create_f.c \
|
|
graphdims_get_f.c \
|
|
graph_get_f.c \
|
|
graph_map_f.c \
|
|
graph_neighbors_count_f.c \
|
|
graph_neighbors_f.c \
|
|
grequest_complete_f.c \
|
|
grequest_start_f.c \
|
|
group_compare_f.c \
|
|
group_difference_f.c \
|
|
group_excl_f.c \
|
|
group_free_f.c \
|
|
group_incl_f.c \
|
|
group_intersection_f.c \
|
|
group_range_excl_f.c \
|
|
group_range_incl_f.c \
|
|
group_rank_f.c \
|
|
group_size_f.c \
|
|
group_translate_ranks_f.c \
|
|
group_union_f.c \
|
|
iallgather_f.c \
|
|
iallgatherv_f.c \
|
|
iallreduce_f.c \
|
|
ialltoall_f.c \
|
|
ialltoallv_f.c \
|
|
ialltoallw_f.c \
|
|
ibarrier_f.c \
|
|
ibcast_f.c \
|
|
ibsend_f.c \
|
|
iexscan_f.c \
|
|
igather_f.c \
|
|
igatherv_f.c \
|
|
improbe_f.c \
|
|
imrecv_f.c \
|
|
ineighbor_allgather_f.c \
|
|
ineighbor_allgatherv_f.c \
|
|
ineighbor_alltoall_f.c \
|
|
ineighbor_alltoallv_f.c \
|
|
ineighbor_alltoallw_f.c \
|
|
info_create_f.c \
|
|
info_delete_f.c \
|
|
info_dup_f.c \
|
|
info_free_f.c \
|
|
info_get_f.c \
|
|
info_get_nkeys_f.c \
|
|
info_get_nthkey_f.c \
|
|
info_get_valuelen_f.c \
|
|
info_set_f.c \
|
|
init_f.c \
|
|
initialized_f.c \
|
|
init_thread_f.c \
|
|
intercomm_create_f.c \
|
|
intercomm_merge_f.c \
|
|
iprobe_f.c \
|
|
irecv_f.c \
|
|
ireduce_f.c \
|
|
ireduce_scatter_f.c \
|
|
ireduce_scatter_block_f.c \
|
|
irsend_f.c \
|
|
isend_f.c \
|
|
iscan_f.c \
|
|
iscatter_f.c \
|
|
iscatterv_f.c \
|
|
issend_f.c \
|
|
is_thread_main_f.c \
|
|
lookup_name_f.c \
|
|
mprobe_f.c \
|
|
mrecv_f.c \
|
|
neighbor_allgather_f.c \
|
|
neighbor_allgatherv_f.c \
|
|
neighbor_alltoall_f.c \
|
|
neighbor_alltoallv_f.c \
|
|
neighbor_alltoallw_f.c \
|
|
op_commutative_f.c \
|
|
op_create_f.c \
|
|
open_port_f.c \
|
|
op_free_f.c \
|
|
pack_external_f.c \
|
|
pack_external_size_f.c \
|
|
pack_f.c \
|
|
pack_size_f.c \
|
|
pcontrol_f.c \
|
|
probe_f.c \
|
|
publish_name_f.c \
|
|
query_thread_f.c \
|
|
recv_f.c \
|
|
recv_init_f.c \
|
|
reduce_f.c \
|
|
reduce_local_f.c \
|
|
reduce_scatter_f.c \
|
|
reduce_scatter_block_f.c \
|
|
register_datarep_f.c \
|
|
request_free_f.c \
|
|
request_get_status_f.c \
|
|
rsend_f.c \
|
|
rsend_init_f.c \
|
|
scan_f.c \
|
|
scatter_f.c \
|
|
scatterv_f.c \
|
|
send_f.c \
|
|
send_init_f.c \
|
|
sendrecv_f.c \
|
|
sendrecv_replace_f.c \
|
|
ssend_f.c \
|
|
ssend_init_f.c \
|
|
startall_f.c \
|
|
start_f.c \
|
|
status_set_cancelled_f.c \
|
|
status_set_elements_f.c \
|
|
status_set_elements_x_f.c \
|
|
testall_f.c \
|
|
testany_f.c \
|
|
test_cancelled_f.c \
|
|
test_f.c \
|
|
testsome_f.c \
|
|
topo_test_f.c \
|
|
type_commit_f.c \
|
|
type_contiguous_f.c \
|
|
type_create_darray_f.c \
|
|
type_create_f90_complex_f.c \
|
|
type_create_f90_integer_f.c \
|
|
type_create_f90_real_f.c \
|
|
type_create_hindexed_f.c \
|
|
type_create_hvector_f.c \
|
|
type_create_indexed_block_f.c \
|
|
type_create_hindexed_block_f.c \
|
|
type_create_keyval_f.c \
|
|
type_create_resized_f.c \
|
|
type_create_struct_f.c \
|
|
type_create_subarray_f.c \
|
|
type_delete_attr_f.c \
|
|
type_dup_f.c \
|
|
type_free_f.c \
|
|
type_free_keyval_f.c \
|
|
type_get_attr_f.c \
|
|
type_get_contents_f.c \
|
|
type_get_envelope_f.c \
|
|
type_get_extent_f.c \
|
|
type_get_extent_x_f.c \
|
|
type_get_name_f.c \
|
|
type_get_true_extent_f.c \
|
|
type_get_true_extent_x_f.c \
|
|
type_indexed_f.c \
|
|
type_match_size_f.c \
|
|
type_set_attr_f.c \
|
|
type_set_name_f.c \
|
|
type_size_f.c \
|
|
type_size_x_f.c \
|
|
type_vector_f.c \
|
|
unpack_external_f.c \
|
|
unpack_f.c \
|
|
unpublish_name_f.c \
|
|
waitall_f.c \
|
|
waitany_f.c \
|
|
wait_f.c \
|
|
waitsome_f.c \
|
|
wtick_f.c \
|
|
wtime_f.c \
|
|
accumulate_f.c \
|
|
raccumulate_f.c \
|
|
get_f.c \
|
|
rget_f.c \
|
|
get_accumulate_f.c \
|
|
rget_accumulate_f.c \
|
|
put_f.c \
|
|
rput_f.c \
|
|
compare_and_swap_f.c \
|
|
fetch_and_op_f.c \
|
|
win_allocate_f.c \
|
|
win_allocate_shared_f.c \
|
|
win_attach_f.c \
|
|
win_call_errhandler_f.c \
|
|
win_complete_f.c \
|
|
win_create_dynamic_f.c \
|
|
win_create_errhandler_f.c \
|
|
win_create_f.c \
|
|
win_create_keyval_f.c \
|
|
win_delete_attr_f.c \
|
|
win_detach_f.c \
|
|
win_fence_f.c \
|
|
win_free_f.c \
|
|
win_free_keyval_f.c \
|
|
win_get_attr_f.c \
|
|
win_get_errhandler_f.c \
|
|
win_get_group_f.c \
|
|
win_get_info_f.c \
|
|
win_get_name_f.c \
|
|
win_lock_f.c \
|
|
win_lock_all_f.c \
|
|
win_post_f.c \
|
|
win_set_attr_f.c \
|
|
win_set_errhandler_f.c \
|
|
win_set_info_f.c \
|
|
win_set_name_f.c \
|
|
win_shared_query_f.c \
|
|
win_start_f.c \
|
|
win_sync_f.c \
|
|
win_test_f.c \
|
|
win_unlock_f.c \
|
|
win_unlock_all_f.c \
|
|
win_wait_f.c \
|
|
win_flush_f.c \
|
|
win_flush_all_f.c \
|
|
win_flush_local_f.c \
|
|
win_flush_local_all_f.c
|
|
|
|
|
|
if OMPI_ENABLE_MPI1_COMPAT
|
|
lib@OMPI_LIBMPI_NAME@_mpifh_la_SOURCES += \
|
|
address_f.c \
|
|
attr_delete_f.c \
|
|
attr_get_f.c \
|
|
attr_put_f.c \
|
|
errhandler_create_f.c \
|
|
errhandler_get_f.c \
|
|
errhandler_set_f.c \
|
|
keyval_create_f.c \
|
|
keyval_free_f.c \
|
|
type_extent_f.c \
|
|
type_hindexed_f.c \
|
|
type_hvector_f.c \
|
|
type_lb_f.c \
|
|
type_struct_f.c \
|
|
type_ub_f.c
|
|
endif
|
|
endif
|
|
|
|
#
|
|
# Conditionally install the header files
|
|
#
|
|
|
|
if WANT_INSTALL_HEADERS
|
|
ompidir = $(ompiincludedir)/$(subdir)
|
|
ompi_HEADERS = $(headers)
|
|
endif
|