1
1
openmpi/Makefile.ompi-rules

94 строки
2.8 KiB
Makefile
Исходник Обычный вид История

# -*- makefile -*-
# Copyright (c) 2008-2018 Cisco Systems, Inc. All rights reserved.
# Copyright (c) 2008 Sun Microsystems, Inc. All rights reserved.
# Copyright (c) 2020 Intel, Inc. All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
Add MPI_T.5 man page for Open MPI-specific info Also added infrastructure to have developers write man pages in Markdown (vs. nroff). Pandoc >=v1.12 is used to convert those Markdown files into actual nroff man pages. Dist tarballs will contain generated nroff man pages; we don't want to require users to have Pandoc installed. Anyone who builds Open MPI from a git clone will need to have Pandoc installed (similar to how we treat Flex). You can opt out of Open MPI's Pandoc-generated man pages by configuring Open MPI with --disable-man-pages. This will also disable "make dist" (i.e., "make dist" will error if you configured with --disable-man-pages). Also removed the stuff to re-generate man pages. This commit also: 1. Includes a new man page, written in Markdown (ompi/mpi/man/man5/MPI_T.5.md) that contains Open MPI-specific information about MPI_T. 2. Includes a converted ompi/mpi/man/man3/MPI_T_init_thread.3.md (from MPI_T_init_thread.3in -- i.e., nroff) just to show that Markdown can be used throughout the Open MPI code base for man pages. 3. Made the Makefiles in ompi/mpi/man/man?/ be full-fledged Makefile.am's (vs. Makefile.extras that are designed to be included in ompi/Makefile.am). It is more convenient to test generation / installation of man pages when you can "make" and "make install" in their respective directories (vs. doing a build / install for the entire ompi project). 4. Removed logic from ompi/Makefile.am that re-generated man pages if opal_config.h changes. Other man pages -- hopefully all of them! -- will be converted to Markdown over time. Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
2020-04-20 19:43:59 +03:00
MD2NROFF = $(OMPI_TOP_SRCDIR)/config/md2nroff.pl
2015-05-15 12:22:15 +03:00
TRIM_OPTIONS=
if ! MAN_PAGE_BUILD_MPIFH_BINDINGS
TRIM_OPTIONS += --nofortran
endif
if ! MAN_PAGE_BUILD_USEMPIF08_BINDINGS
TRIM_OPTIONS += --nof08
endif
2015-05-15 12:22:15 +03:00
Add MPI_T.5 man page for Open MPI-specific info Also added infrastructure to have developers write man pages in Markdown (vs. nroff). Pandoc >=v1.12 is used to convert those Markdown files into actual nroff man pages. Dist tarballs will contain generated nroff man pages; we don't want to require users to have Pandoc installed. Anyone who builds Open MPI from a git clone will need to have Pandoc installed (similar to how we treat Flex). You can opt out of Open MPI's Pandoc-generated man pages by configuring Open MPI with --disable-man-pages. This will also disable "make dist" (i.e., "make dist" will error if you configured with --disable-man-pages). Also removed the stuff to re-generate man pages. This commit also: 1. Includes a new man page, written in Markdown (ompi/mpi/man/man5/MPI_T.5.md) that contains Open MPI-specific information about MPI_T. 2. Includes a converted ompi/mpi/man/man3/MPI_T_init_thread.3.md (from MPI_T_init_thread.3in -- i.e., nroff) just to show that Markdown can be used throughout the Open MPI code base for man pages. 3. Made the Makefiles in ompi/mpi/man/man?/ be full-fledged Makefile.am's (vs. Makefile.extras that are designed to be included in ompi/Makefile.am). It is more convenient to test generation / installation of man pages when you can "make" and "make install" in their respective directories (vs. doing a build / install for the entire ompi project). 4. Removed logic from ompi/Makefile.am that re-generated man pages if opal_config.h changes. Other man pages -- hopefully all of them! -- will be converted to Markdown over time. Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
2020-04-20 19:43:59 +03:00
# JMS This rule can be deleted once all man pages have been converted
# to markdown.
.1in.1:
$(OMPI_V_GEN) $(top_srcdir)/config/make_manpage.pl \
2015-05-15 12:22:15 +03:00
--package-name='@PACKAGE_NAME@' \
--package-version='@PACKAGE_VERSION@' \
--ompi-date='@OMPI_RELEASE_DATE@' \
--opal-date='@OPAL_RELEASE_DATE@' \
--input=$< \
--output=$@
Add MPI_T.5 man page for Open MPI-specific info Also added infrastructure to have developers write man pages in Markdown (vs. nroff). Pandoc >=v1.12 is used to convert those Markdown files into actual nroff man pages. Dist tarballs will contain generated nroff man pages; we don't want to require users to have Pandoc installed. Anyone who builds Open MPI from a git clone will need to have Pandoc installed (similar to how we treat Flex). You can opt out of Open MPI's Pandoc-generated man pages by configuring Open MPI with --disable-man-pages. This will also disable "make dist" (i.e., "make dist" will error if you configured with --disable-man-pages). Also removed the stuff to re-generate man pages. This commit also: 1. Includes a new man page, written in Markdown (ompi/mpi/man/man5/MPI_T.5.md) that contains Open MPI-specific information about MPI_T. 2. Includes a converted ompi/mpi/man/man3/MPI_T_init_thread.3.md (from MPI_T_init_thread.3in -- i.e., nroff) just to show that Markdown can be used throughout the Open MPI code base for man pages. 3. Made the Makefiles in ompi/mpi/man/man?/ be full-fledged Makefile.am's (vs. Makefile.extras that are designed to be included in ompi/Makefile.am). It is more convenient to test generation / installation of man pages when you can "make" and "make install" in their respective directories (vs. doing a build / install for the entire ompi project). 4. Removed logic from ompi/Makefile.am that re-generated man pages if opal_config.h changes. Other man pages -- hopefully all of them! -- will be converted to Markdown over time. Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
2020-04-20 19:43:59 +03:00
# JMS This rule can be deleted once all man pages have been converted
# to markdown.
.3in.3:
$(OMPI_V_GEN) $(top_srcdir)/config/make_manpage.pl \
2015-05-15 12:22:15 +03:00
--package-name='@PACKAGE_NAME@' \
--package-version='@PACKAGE_VERSION@' \
--ompi-date='@OMPI_RELEASE_DATE@' \
--opal-date='@OPAL_RELEASE_DATE@' \
$(TRIM_OPTIONS) \
--input=$< \
--output=$@
Add MPI_T.5 man page for Open MPI-specific info Also added infrastructure to have developers write man pages in Markdown (vs. nroff). Pandoc >=v1.12 is used to convert those Markdown files into actual nroff man pages. Dist tarballs will contain generated nroff man pages; we don't want to require users to have Pandoc installed. Anyone who builds Open MPI from a git clone will need to have Pandoc installed (similar to how we treat Flex). You can opt out of Open MPI's Pandoc-generated man pages by configuring Open MPI with --disable-man-pages. This will also disable "make dist" (i.e., "make dist" will error if you configured with --disable-man-pages). Also removed the stuff to re-generate man pages. This commit also: 1. Includes a new man page, written in Markdown (ompi/mpi/man/man5/MPI_T.5.md) that contains Open MPI-specific information about MPI_T. 2. Includes a converted ompi/mpi/man/man3/MPI_T_init_thread.3.md (from MPI_T_init_thread.3in -- i.e., nroff) just to show that Markdown can be used throughout the Open MPI code base for man pages. 3. Made the Makefiles in ompi/mpi/man/man?/ be full-fledged Makefile.am's (vs. Makefile.extras that are designed to be included in ompi/Makefile.am). It is more convenient to test generation / installation of man pages when you can "make" and "make install" in their respective directories (vs. doing a build / install for the entire ompi project). 4. Removed logic from ompi/Makefile.am that re-generated man pages if opal_config.h changes. Other man pages -- hopefully all of them! -- will be converted to Markdown over time. Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
2020-04-20 19:43:59 +03:00
# JMS This rule can be deleted once all man pages have been converted
# to markdown.
.7in.7:
$(OMPI_V_GEN) $(top_srcdir)/config/make_manpage.pl \
2015-05-15 12:22:15 +03:00
--package-name='@PACKAGE_NAME@' \
--package-version='@PACKAGE_VERSION@' \
--ompi-date='@OMPI_RELEASE_DATE@' \
--opal-date='@OPAL_RELEASE_DATE@' \
--input=$< \
--output=$@
Add MPI_T.5 man page for Open MPI-specific info Also added infrastructure to have developers write man pages in Markdown (vs. nroff). Pandoc >=v1.12 is used to convert those Markdown files into actual nroff man pages. Dist tarballs will contain generated nroff man pages; we don't want to require users to have Pandoc installed. Anyone who builds Open MPI from a git clone will need to have Pandoc installed (similar to how we treat Flex). You can opt out of Open MPI's Pandoc-generated man pages by configuring Open MPI with --disable-man-pages. This will also disable "make dist" (i.e., "make dist" will error if you configured with --disable-man-pages). Also removed the stuff to re-generate man pages. This commit also: 1. Includes a new man page, written in Markdown (ompi/mpi/man/man5/MPI_T.5.md) that contains Open MPI-specific information about MPI_T. 2. Includes a converted ompi/mpi/man/man3/MPI_T_init_thread.3.md (from MPI_T_init_thread.3in -- i.e., nroff) just to show that Markdown can be used throughout the Open MPI code base for man pages. 3. Made the Makefiles in ompi/mpi/man/man?/ be full-fledged Makefile.am's (vs. Makefile.extras that are designed to be included in ompi/Makefile.am). It is more convenient to test generation / installation of man pages when you can "make" and "make install" in their respective directories (vs. doing a build / install for the entire ompi project). 4. Removed logic from ompi/Makefile.am that re-generated man pages if opal_config.h changes. Other man pages -- hopefully all of them! -- will be converted to Markdown over time. Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
2020-04-20 19:43:59 +03:00
%.1: %.1.md
$(OMPI_V_GEN) $(MD2NROFF) --source=$< --dest=$@ --pandoc=$(PANDOC)
%.3: %.3.md
$(OMPI_V_GEN) $(MD2NROFF) --source=$< --dest=$@ --pandoc=$(PANDOC)
%.5: %.5.md
$(OMPI_V_GEN) $(MD2NROFF) --source=$< --dest=$@ --pandoc=$(PANDOC)
%.7: %.7.md
$(OMPI_V_GEN) $(MD2NROFF) --source=$< --dest=$@ --pandoc=$(PANDOC)
# It is an error to "configure --disable-man-pages" and then try to
# "make dist".
if !OPAL_ENABLE_MAN_PAGES
dist-hook:
@echo "************************************************************************************"
@echo "ERROR: 'make dist' inoperable when Open MPI is configured with --disable-man-pages"
@echo "************************************************************************************"
@/bin/false
endif
# A little verbosity magic; "make" will show the terse output. "make
# V=1" will show the actual commands used (just like the other
# Automake-generated compilation/linker rules).
V=0
OMPI_V_LN_S = $(ompi__v_LN_S_$V)
ompi__v_LN_S_ = $(ompi__v_LN_S_$AM_DEFAULT_VERBOSITY)
ompi__v_LN_S_0 = @echo " LN_S " `basename $@`;
OMPI_V_MKDIR = $(ompi__v_MKDIR_$V)
ompi__v_MKDIR_ = $(ompi__v_MKDIR_$AM_DEFAULT_VERBOSITY)
ompi__v_MKDIR_0 = @echo " MKDIR " $@;
Fortran: Fix MPI_SIZEOF. What a disaster. :-( What started as a simple ticket ended up reaching the way up to the MPI Forum. It turns out that we are supposed to have MPI_SIZEOF for all Fortran interfaces: mpif.h, the mpi module, and the mpi_f08 module. It further turns out that to properly support MPI_SIZEOF, your Fortran compiler *has* support the INTERFACE keyword and ISO_FORTRAN_ENV. We can't use "ignore TKR" functionality, because the whole point of MPI_SIZEOF is that the implementation knows what type was passed to it ("ignore TKR" functionality, by definition, throws that information away). Hence, we have to have an MPI_SIZEOF interface+implementation for all intrinsic types, kinds, and ranks. This commit therefore adds a perl script that generates both the interfaces and implementations for MPI_SIZEOF in each of mpif.h, the mpi module, and mpi_f08 module (yay consolidation!). The perl script uses the results of some new configure tests: * check if the Fortran compiler supports the INTERFACE keyword * check if the Fortran compiler supports ISO_FORTRAN_ENV * find the max array rank (i.e., dimension) that the compiler supports If the Fortran compiler supports both INTERFACE and ISO_FORTRAN_ENV, then we'll build the MPI_SIZEOF interfaces. If not, we'll skip MPI_SIZEOF in mpif.h and the mpi module. Note that we won't build the mpi_f08 module -- to include the MPI_SIZEOF interfaces -- if the Fortran compiler doesn't support INTERFACE, ISO_FORTRAN_ENV, and a whole bunch of ther modern Fortran stuff. Since MPI_SIZEOF interfaces are now generated by the perl script, this commit also removes all the old MPI_SIZEOF implementations (which were laden with a zillion #if blocks). cmr=v1.8.3 This commit was SVN r32764.
2014-09-19 17:44:52 +04:00
OMPI_V_GEN = $(ompi__v_GEN_$V)
ompi__v_GEN_ = $(ompi__v_GEN_$AM_DEFAULT_VERBOSITY)
ompi__v_GEN_0 = @echo " GENERATE" $@;