These are only needed by the testsuite. If mydef is unavailable for some
reason, e.g. running autogen.sh from a testsuite-only tarball,
regeneration of the benchmarks will be skipped.
We could add rules to directly work with mydef code in Makefile, but
convert the code in autogen removes the mydef dependency.
Also fix a spelling error.
The single source option generates huge c_binding.c. It may be desirable
to opt for multiple source files instead.
TODO: I still think we should do -single-source by default, but it is nice
to have the option.
There are functions removed or deprecated with replacement functions,
which we implemented by calling MPI_xxx_internal functions. Thus
we need generate all replaced functions together to avoid making those
static internal functions external.
The autoconf .in files have to generated inside the source tree. Thus we
cannot generate them during configure.
Also, use AC_CONFIG_COMMANDS_PRE to run python scripts inside configure,
thus will abort configure upon errors.
Then internal code need deal with both the types from ABI header and the
actual types used by MPICH. Generate mpi_abi_internal.h from mpi_abi.h
by renaming all MPI_ typenames into ABI_ prefix. Generate mpi_abi_util.c
to initialize an internal table for builtin datatypes and ops
conversions.
Generates:
src/binding/abi/mpi_abi_internal.h
src/binding/abi/mpi_abi_util.c
Similar to previous commit, we replace the perl script that generates
src/binding/fortran/use_mpi_f08/mpi_f08_compile_constants.f90.in in
gen_binding_f08.py.
This also added the missing MPI 4.0/4.1 symbols including:
MPI_COMBINER_VALUE_INDEX
MPI_COMM_TYPE_HW_GUIDED
MPI_COMM_TYPE_HW_UNGUIDED
MPI_COMM_TYPE_RESOURCE_GUIDED
MPI_ERRORS_ABORT
MPI_SESSION_NULL
MPI_MAX_PSETNAME_LEN
MPI_MAX_STRINGTAG_LEN
In addition, previous perl script failed to account for the "MAX"
constants need to be 1-less than the C correspondent to account for the
terminating NUL in C string.
The perl script src/binding/fortran/mpif_h/buildiface generates
mpif.h.in from scraping mpi.h.in and mpio.h.in. The old script has
become difficult to maintain and it is missing a few newly added symbols
including -
MPI_COMBINER_VALUE_INDEX
MPI_COMM_TYPE_HW_GUIDED
MPI_COMM_TYPE_HW_UNGUIDED
MPI_COMM_TYPE_RESOURCE_GUIDED
MPI_ERRORS_ABORT
MPI_MAX_PSET_NAME_LEN
MPI_MAX_STRINGTAG_LEN
MPI_SESSION_NULL
In addition, it needs declare all functions that does not return
INTEGER. It was missing MPI_Aint_add and MPI_Aint_diff.
Rather than generate one source code for each MPI function, generate all
the binding layer in a single c_binding.c. It compiles faster and allows
future refactoring inside the binding layer.
It is unnecessary to put embedded library to deep nested paths. Put them
all in modules dir, similar to how mpich does it.
The hwloc path was previously broken when we rearranged the source tree.
It didn't show in our testing because by default, we reuse the hwloc
compiled by main mpich.
Practically one would never need to run extractcvars with different
source directories. Hard code the directory list in the extractcvars
script, simplify a few unnecessary steps.
Make pmi a submodule like mpl and romio. This allows to just build and install
libpmi, allowing applications and tests to use PMI interface without
mpi.
We have been manually setting MPI error class index in
src/mpi/errhan/baseerrnames.txt, and it has been out-of-sync with the
values defined in mpi.h. This commit does following:
* Remove the index from baseerrnames.txt and directly load the defined
value from mpi.h instead.
* Add UNKNOWN entry to map the missing entries in baseerrnames.txt.
* When autogen.sh fails to extract error messages, do not generate dummy
defmsg.h, fail instead. The dummy header will break the error class
message translation anyway.
We'll move into configure later to accept config options.
We also remove the replacement of return types for MPI_Wtime/MPI_Wtick
for now. They'll be taken care of once we move the codegen into
configure.
For CI jobs where we always test with a pre-configured environment,
checking autotools versions are unnecessary. Since the checking is very
slow, it makes sense to skip them with `-quick` option.
Having individula fn_autoreconf_amdir and fn_autogen_external does not
fit the -do=xxx semantics. Refactor and use fn_build_configure instead.
This brings the original -do=build_configure option back.
Mixing the --with-xxx and -do=xxx options makes the script logic very
complex since there are extensible steps and many implicit dependency
conditions. Instead, let -do=xxx just execute a single step, which I
believe it is the original intention of this option. We assume that when
this option is used, the developer knows the dependency are already done
or checked.
The current autogen does not make the steps clear, and it is confusing
to run a single step. Remove the option and checks for now.
TODO: refactor the single steps into individual functions. When -do=xxx
is given, run that function and exit.