#if 0

# NOTE: The comments below cannot use tokens that will be intepreted
# as C++ preprocessor directives.  So when you read "if 0", the reader
# must mentally prepend a # to the "if" token.
#
# This file is carefully constructed so that it can be a) run as a
# Bourne shell script and b) compiled as a C/C++ header file.
#
# Specifically, this file is used in the following ways:
#
# 1. This file is executed as a Bourne shell script to assign version
#    numbers to shell variables in config/opal_get_version.* and
#    configure.ac.
# 2. On case-insensitive filesystems, this file can get included by
#    C++ STL header files when compiling the MPI C++ bindings (i.e.,
#    when they "include <version>", that will end up including this
#    file).
#
# Case #2 was discovered in
# https://github.com/open-mpi/ompi/issues/9122.  The obvious fix for
# this issue would be to rename VERSION (e.g., VERSION.sh).  However,
# since the MPI C++ bindings were removed in Open MPI v5.0.0, this
# issue issue only affects legacy Open MPI release series (namely:
# v4.1.x and v4.0.x).  As such, do something simple / safe to fix it:
# protect the main body of this file with an "if" preprocessor
# directive.
#
# 1. For case 1, C++ preprocessor directives become Bourne shell comments.
# 2. For case 2, we "if 0" the main body of the file and in the "else"
#    block, "include_next<version>" to get the "real" <version> file.
#
# This is a bit of a gross (or clever, depending on your viewpoint)
# hack, but it makes both cases work with minimal changes to the
# legacy v4.0.x and v4.1.x release series.

############################################################################

# Copyright (c) 2008      Sun Microsystems, Inc.  All rights reserved.
# Copyright (c) 2008-2021 Cisco Systems, Inc.  All rights reserved.
# Copyright (c) 2011      NVIDIA Corporation.  All rights reserved.
# Copyright (c) 2013      Mellanox Technologies, Inc.
#                         All rights reserved.
# Copyright (c) 2017      Los Alamos National Security, LLC.  All rights
#                         reserved.
# Copyright (c) 2019      Triad National Security, LLC. All rights
#                         reserved.
# Copyright (c) 2018-2020 IBM Corporation.  All rights reserved.
# Copyright (c) 2018      Research Organization for Information Science
#                         and Technology (RIST).  All rights reserved.
# Copyright (c) 2020-2021 Amazon.com, Inc. or its affiliates.  All Rights
#                         reserved.

# This is the VERSION file for Open MPI, describing the precise
# version of Open MPI in this distribution.  The various components of
# the version number below are combined to form a single version
# number string.

# major, minor, and release are generally combined in the form
# <major>.<minor>.<release>.

major=4
minor=1
release=4

# greek is generally used for alpha or beta release tags.  If it is
# non-empty, it will be appended to the version number.  It does not
# have to be numeric.  Common examples include: a1 (alpha release 1),
# b1 (beta release 1), rc2 (release candidate 2).  The only
# requirement is that it must be entirely printable ASCII characters
# and have no white space.

greek=

# If repo_rev is empty, then the repository version number will be
# obtained during "make dist" via the "git describe --tags --always"
# command, or with the date (if "git describe" fails) in the form of
# "date<date>".

repo_rev=v4.1.4

# If tarball_version is not empty, it is used as the version string in
# the tarball filename, regardless of all other versions listed in
# this file.  For example, if tarball_version is empty, the tarball
# filename will be of the form
# openmpi-<major>.<minor>.<release><greek>.tar.*.  However, if
# tarball_version is not empty, the tarball filename will be of the
# form openmpi-<tarball_version>.tar.*.

tarball_version=

# The date when this release was created

date="May 26, 2022"

# The shared library version of each of Open MPI's public libraries.
# These versions are maintained in accordance with the "Library
# Interface Versions" chapter from the GNU Libtool documentation.  The
# first Open MPI release to programatically specify these versions was
# v1.3.4 (note that Libtool defaulted all prior releases to 0:0:0).
# All changes in these version numbers are dictated by the Open MPI
# release managers (not individual developers).  Notes:

# 1. Since these version numbers are associated with *releases*, the
# version numbers maintained on the Open MPI GIT main (and developer
# branches) is always 0:0:0 for all libraries.

# 2. The version number of libmpi refers to the public MPI interfaces.
# It does not refer to any internal interfaces.

# 3. Similar to libmpi, the version numbers of the Fortran libraries
# refer to the public MPI interfaces.  For example, that there have
# been typo fixes in the parameter types to mpif.h Fortran library
# functions over time; these technically did not change the interface
# because Fortran 77 does not link by parameter type.

# 4. Similar to libmpi, libmpi_cxx's version number refers to the
# public MPI interfaces.  Note that this version number may or may not
# be affected by changes to inlined functions in OMPI's
# header-file-based C++ bindings implementation.

# 5. The ORTE and OPAL libraries will change versions when their
# public interfaces change (as relative to the layer(s) above them).
# None of the ORTE and OPAL interfaces are public to MPI applications,
# but they are "public" within the OMPI code base and select 3rd party
# software packages.

# Version numbers are described in the Libtool current:revision:age
# format.

libmpi_so_version=70:4:30
libmpi_cxx_so_version=70:1:30
libmpi_mpifh_so_version=70:0:30
libmpi_usempi_tkr_so_version=70:0:30
libmpi_usempi_ignore_tkr_so_version=70:0:30
libmpi_usempif08_so_version=70:0:30
libopen_rte_so_version=70:2:30
libopen_pal_so_version=70:2:30
libmpi_java_so_version=70:0:30
liboshmem_so_version=70:2:30
libompitrace_so_version=70:1:30

# "Common" components install standalone libraries that are run-time
# linked by one or more components.  So they need to be versioned as
# well.  Yuck; this somewhat breaks the
# components-don't-affect-the-build-system abstraction.

# OMPI layer
libmca_ompi_common_ompio_so_version=70:4:29
libmca_ompi_common_monitoring_so_version=70:0:20

# ORTE layer
libmca_orte_common_alps_so_version=70:0:30

# OPAL layer
libmca_opal_common_cuda_so_version=70:0:30
libmca_opal_common_ofi_so_version=10:2:0
libmca_opal_common_sm_so_version=70:0:30
libmca_opal_common_ucx_so_version=70:2:30
libmca_opal_common_ugni_so_version=70:0:30
libmca_opal_common_verbs_so_version=70:0:30

#else

#include_next <version>

#endif
