A few cleanups to the wrapper compiler build system / man pages:
- Only install opal{cc,c++} and orte{cc,c++} if configured with --with-devel-headers. Right now, they are always installed, but there are no header files installed for either project, so there's really not much way for a user to actually compile an OPAL / ORTE application. - Drop support for opalCC and orteCC. It's a pain to setup all the symlinks (indeed, they are currently done wrong for opalCC) and there's no history like there is for mpiCC. - Change what is currently opalcc.1 to opal_wrapper.1 and add some macros that get sed'ed so that the man pages appear to be customized for the given command. - Install the wrapper data files even if we compiled with --disable-binaries. This is for the use case of doing multi-lib builds, where one word size will only have the library built, but we need both set of wrapper data files to piece together to activate the multi-lib support in the wrapper compilers. This commit was SVN r12192.
Этот коммит содержится в:
родитель
3eb2f90ceb
Коммит
581a4b0a4e
@ -16,6 +16,8 @@
|
||||
# $HEADER$
|
||||
#
|
||||
|
||||
if OMPI_INSTALL_BINARIES
|
||||
|
||||
dist_pkgdata_DATA =
|
||||
|
||||
man_MANS = mpirun.1 \
|
||||
@ -49,3 +51,5 @@ ompi-clean.1: $(top_srcdir)/orte/tools/orte-clean/orte-clean.1
|
||||
|
||||
distclean-local:
|
||||
rm -f mpirun.1 mpiexec.1 ompi-ps.1 ompi-clean.1
|
||||
|
||||
endif # OMPI_INSTALL_BINARIES
|
||||
|
@ -17,82 +17,79 @@
|
||||
# $HEADER$
|
||||
#
|
||||
|
||||
if OMPI_INSTALL_BINARIES
|
||||
|
||||
dist_pkgdata_DATA = mpicc-wrapper-data.txt \
|
||||
mpic++-wrapper-data.txt \
|
||||
mpif77-wrapper-data.txt \
|
||||
mpif90-wrapper-data.txt
|
||||
|
||||
if CASE_SENSITIVE_FS
|
||||
install-exec-hook:
|
||||
(cd $(DESTDIR)$(bindir); rm -f mpiCC$(EXEEXT); $(LN_S) mpic++ mpiCC)
|
||||
(cd $(DESTDIR)$(bindir); rm -f mpicxx$(EXEEXT); $(LN_S) mpic++ mpicxx)
|
||||
if OMPI_INSTALL_BINARIES
|
||||
|
||||
man_MANS = \
|
||||
mpicc.1 \
|
||||
mpic++.1 \
|
||||
mpicxx.1 \
|
||||
mpif77.1 \
|
||||
mpif90.1
|
||||
|
||||
EXTRA_DIST = $(man_MANS)
|
||||
|
||||
install-exec-hook-always:
|
||||
test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
|
||||
(cd $(DESTDIR)$(bindir); rm -f mpicc$(EXEEXT); $(LN_S) opal_wrapper mpicc)
|
||||
(cd $(DESTDIR)$(bindir); rm -f mpic++$(EXEEXT); $(LN_S) opal_wrapper mpic++)
|
||||
(cd $(DESTDIR)$(bindir); rm -f mpicxx$(EXEEXT); $(LN_S) opal_wrapper mpicxx)
|
||||
(cd $(DESTDIR)$(bindir); rm -f mpif77$(EXEEXT); $(LN_S) opal_wrapper mpif77)
|
||||
(cd $(DESTDIR)$(bindir); rm -f mpif90$(EXEEXT); $(LN_S) opal_wrapper mpif90)
|
||||
|
||||
install-data-hook-always:
|
||||
(cd $(DESTDIR)$(pkgdatadir); rm -f mpicxx-wrapper-data.txt; $(LN_S) mpic++-wrapper-data.txt mpicxx-wrapper-data.txt)
|
||||
|
||||
uninstall-local-always:
|
||||
rm -f $(DESTDIR)$(bindir)/mpicc$(EXEEXT) \
|
||||
$(DESTDIR)$(bindir)/mpic++$(EXEEXT) \
|
||||
$(DESTDIR)$(bindir)/mpicxx$(EXEEXT) \
|
||||
$(DESTDIR)$(bindir)/mpif77$(EXEEXT) \
|
||||
$(DESTDIR)$(bindir)/mpif90$(EXEEXT) \
|
||||
$(DESTDIR)$(pkgdatadir)/mpicxx-wrapper-data.txt
|
||||
|
||||
if CASE_SENSITIVE_FS
|
||||
install-exec-hook: install-exec-hook-always
|
||||
(cd $(DESTDIR)$(bindir); rm -f mpiCC$(EXEEXT); $(LN_S) opal_wrapper mpiCC)
|
||||
(cd $(DESTDIR)$(bindir); rm -f mpicxx$(EXEEXT); $(LN_S) opal_wrapper mpicxx)
|
||||
(cd $(DESTDIR)$(bindir); rm -f mpif77$(EXEEXT); $(LN_S) opal_wrapper mpif77)
|
||||
(cd $(DESTDIR)$(bindir); rm -f mpif90$(EXEEXT); $(LN_S) opal_wrapper mpif90)
|
||||
|
||||
install-data-hook: install-data-hook-always
|
||||
(cd $(DESTDIR)$(pkgdatadir); rm -f mpiCC-wrapper-data.txt; $(LN_S) mpic++-wrapper-data.txt mpiCC-wrapper-data.txt)
|
||||
(cd $(DESTDIR)$(pkgdatadir); rm -f mpicxx-wrapper-data.txt; $(LN_S) mpic++-wrapper-data.txt mpicxx-wrapper-data.txt)
|
||||
(cd $(DESTDIR)$(mandir)/man1; rm -f mpiCC.1; $(LN_S) mpic++.1 mpiCC.1)
|
||||
|
||||
install-data-hook:
|
||||
(cd $(DESTDIR)$(mandir)/man1; rm -f mpicc.1; $(LN_S) opalcc.1 mpicc.1)
|
||||
(cd $(DESTDIR)$(mandir)/man1; rm -f mpic++.1; $(LN_S) opalcc.1 mpic++.1)
|
||||
(cd $(DESTDIR)$(mandir)/man1; rm -f mpiCC.1; $(LN_S) opalcc.1 mpiCC.1)
|
||||
(cd $(DESTDIR)$(mandir)/man1; rm -f mpif77.1; $(LN_S) opalcc.1 mpif77.1)
|
||||
(cd $(DESTDIR)$(mandir)/man1; rm -f mpif90.1; $(LN_S) opalcc.1 mpif90.1)
|
||||
else
|
||||
install-exec-hook:
|
||||
(cd $(DESTDIR)$(bindir); rm -f mpicxx$(EXEEXT); $(LN_S) mpic++ mpicxx)
|
||||
|
||||
(cd $(DESTDIR)$(bindir); rm -f mpicc$(EXEEXT); $(LN_S) opal_wrapper mpicc)
|
||||
(cd $(DESTDIR)$(bindir); rm -f mpic++$(EXEEXT); $(LN_S) opal_wrapper mpic++)
|
||||
(cd $(DESTDIR)$(bindir); rm -f mpicxx$(EXEEXT); $(LN_S) opal_wrapper mpicxx)
|
||||
(cd $(DESTDIR)$(bindir); rm -f mpif77$(EXEEXT); $(LN_S) opal_wrapper mpif77)
|
||||
(cd $(DESTDIR)$(bindir); rm -f mpif90$(EXEEXT); $(LN_S) opal_wrapper mpif90)
|
||||
(cd $(DESTDIR)$(pkgdatadir); rm -f mpicxx-wrapper-data.txt; $(LN_S) mpic++-wrapper-data.txt mpicxx-wrapper-data.txt)
|
||||
|
||||
install-data-hook:
|
||||
(cd $(DESTDIR)$(mandir)/man1; rm -f mpicc.1; $(LN_S) opalcc.1 mpicc.1)
|
||||
(cd $(DESTDIR)$(mandir)/man1; rm -f mpic++.1; $(LN_S) opalcc.1 mpic++.1)
|
||||
(cd $(DESTDIR)$(mandir)/man1; rm -f mpif77.1; $(LN_S) opalcc.1 mpif77.1)
|
||||
(cd $(DESTDIR)$(mandir)/man1; rm -f mpif90.1; $(LN_S) opalcc.1 mpif90.1)
|
||||
endif
|
||||
|
||||
if CASE_SENSITIVE_FS
|
||||
uninstall-local:
|
||||
uninstall-local: uninstall-local-always
|
||||
rm -f $(DESTDIR)$(bindir)/mpiCC$(EXEEXT) \
|
||||
$(DESTDIR)$(bindir)/mpicxx$(EXEEXT) \
|
||||
$(DESTDIR)$(bindir)/mpicc$(EXEEXT) \
|
||||
$(DESTDIR)$(bindir)/mpic++$(EXEEXT) \
|
||||
$(DESTDIR)$(bindir)/mpiCC$(EXEEXT) \
|
||||
$(DESTDIR)$(bindir)/mpicxx$(EXEEXT) \
|
||||
$(DESTDIR)$(bindir)/mpif77$(EXEEXT) \
|
||||
$(DESTDIR)$(bindir)/mpif90$(EXEEXT) \
|
||||
$(DESTDIR)$(mandir)/man1/mpicc.1 \
|
||||
$(DESTDIR)$(mandir)/man1/mpic++.1 \
|
||||
$(DESTDIR)$(mandir)/man1/mpiCC.1 \
|
||||
$(DESTDIR)$(mandir)/man1/mpif77.1 \
|
||||
$(DESTDIR)$(mandir)/man1/mpif90.1 \
|
||||
$(DESTDIR)$(pkgdatadir)/mpiCC-wrapper-data.txt \
|
||||
$(DESTDIR)$(pkgdatadir)/mpicxx-wrapper-data.txt
|
||||
$(DESTDIR)$(pkgdatadir)/mpiCC-wrapper-data.txt
|
||||
|
||||
else
|
||||
uninstall-local:
|
||||
rm -f $(DESTDIR)$(bindir)/mpicxx$(EXEEXT) \
|
||||
$(DESTDIR)$(bindir)/mpicc$(EXEEXT) \
|
||||
$(DESTDIR)$(bindir)/mpic++$(EXEEXT) \
|
||||
$(DESTDIR)$(bindir)/mpicxx$(EXEEXT) \
|
||||
$(DESTDIR)$(bindir)/mpif77$(EXEEXT) \
|
||||
$(DESTDIR)$(bindir)/mpif90$(EXEEXT) \
|
||||
$(DESTDIR)$(mandir)/man1/mpicc.1 \
|
||||
$(DESTDIR)$(mandir)/man1/mpic++.1 \
|
||||
$(DESTDIR)$(mandir)/man1/mpif77.1 \
|
||||
$(DESTDIR)$(mandir)/man1/mpif90.1 \
|
||||
$(DESTDIR)$(pkgdatadir)/mpicxx-wrapper-data.txt
|
||||
endif
|
||||
else # CASE_SENSITIVE_FS
|
||||
install-exec-hook: install-exec-hook-always
|
||||
install-data-hook: install-data-hook-always
|
||||
uninstall-local: uninstall-local-always
|
||||
|
||||
endif
|
||||
endif # CASE_SENSITIVE_FS
|
||||
|
||||
endif # OMPI_INSTALL_BINARIES
|
||||
|
||||
mpicc.1: $(top_srcdir)/opal/tools/wrappers/opal_wrapper.1
|
||||
rm -f mpicc.1
|
||||
sed -e 's/@COMMAND@/mpicc/g' -e 's/@PROJECT@/Open MPI/g' -e 's/@PROJECT_SHORT@/OMPI/g' -e 's/@LANGUAGE@/C/g' < $(top_srcdir)/opal/tools/wrappers/opal_wrapper.1 > mpicc.1
|
||||
|
||||
mpic++.1: $(top_srcdir)/opal/tools/wrappers/opal_wrapper.1
|
||||
rm -f mpic++.1
|
||||
sed -e 's/@COMMAND@/mpic++/g' -e 's/@PROJECT@/Open MPI/g' -e 's/@PROJECT_SHORT@/OMPI/g' -e 's/@LANGUAGE@/C++/g' < $(top_srcdir)/opal/tools/wrappers/opal_wrapper.1 > mpic++.1
|
||||
|
||||
mpicxx.1: $(top_srcdir)/opal/tools/wrappers/opal_wrapper.1
|
||||
rm -f mpicxx.1
|
||||
sed -e 's/@COMMAND@/mpicxx/g' -e 's/@PROJECT@/Open MPI/g' -e 's/@PROJECT_SHORT@/OMPI/g' -e 's/@LANGUAGE@/C++/g' < $(top_srcdir)/opal/tools/wrappers/opal_wrapper.1 > mpicxx.1
|
||||
|
||||
mpif77.1: $(top_srcdir)/opal/tools/wrappers/opal_wrapper.1
|
||||
rm -f mpif77.1
|
||||
sed -e 's/@COMMAND@/mpif77/g' -e 's/@PROJECT@/Open MPI/g' -e 's/@PROJECT_SHORT@/OMPI/g' -e 's/@LANGUAGE@/Fortran 77/g' < $(top_srcdir)/opal/tools/wrappers/opal_wrapper.1 > mpif77.1
|
||||
|
||||
mpif90.1: $(top_srcdir)/opal/tools/wrappers/opal_wrapper.1
|
||||
rm -f mpif90.1
|
||||
sed -e 's/@COMMAND@/mpif90/g' -e 's/@PROJECT@/Open MPI/g' -e 's/@PROJECT_SHORT@/OMPI/g' -e 's/@LANGUAGE@/Fortran 90/g' < $(top_srcdir)/opal/tools/wrappers/opal_wrapper.1 > mpif90.1
|
||||
|
@ -17,71 +17,63 @@
|
||||
# $HEADER$
|
||||
#
|
||||
|
||||
DEFS="-DEXEEXT=\"$(EXEEXT)\""
|
||||
|
||||
if OMPI_INSTALL_BINARIES
|
||||
|
||||
# install even if we don't want the headers / opalcc, as we need it
|
||||
# for the MPI layer
|
||||
opal_wrapper_SOURCES = \
|
||||
opal_wrapper.c
|
||||
|
||||
opal_wrapper_LDADD = $(top_builddir)/opal/libopal.la
|
||||
opal_wrapper_DEPENDENCIES = $(top_builddir)/opal/libopal.la
|
||||
|
||||
DEFS="-DEXEEXT=\"$(EXEEXT)\""
|
||||
bin_PROGRAMS = opal_wrapper
|
||||
|
||||
# Whether or not --enable-binaries was given to configure (useful for
|
||||
# multi-lib installations). If this was not given, we do not build /
|
||||
# install anything in this directory.
|
||||
endif # OMPI_INSTALL_BINARIES
|
||||
|
||||
if OMPI_INSTALL_BINARIES
|
||||
if WANT_INSTALL_HEADERS
|
||||
|
||||
nodist_pkgdata_DATA = \
|
||||
opalcc-wrapper-data.txt \
|
||||
opalc++-wrapper-data.txt
|
||||
|
||||
# Whether or not --enable-binaries was given to configure (useful for
|
||||
# multi-lib installations). If this was not given, we do not build /
|
||||
# install the applications / man pages
|
||||
|
||||
if OMPI_INSTALL_BINARIES
|
||||
|
||||
dist_pkgdata_DATA = \
|
||||
help-opal-wrapper.txt
|
||||
|
||||
bin_PROGRAMS = opal_wrapper
|
||||
|
||||
# List all man pages that will be installed
|
||||
|
||||
man_MANS = opalcc.1
|
||||
man_MANS = \
|
||||
opalcc.1 \
|
||||
opalc++.1
|
||||
|
||||
# MANS are not automatically distributed
|
||||
EXTRA_DIST = \
|
||||
opal_wrapper.1 \
|
||||
$(man_MANS)
|
||||
|
||||
EXTRA_DIST = $(man_MANS)
|
||||
|
||||
if CASE_SENSITIVE_FS
|
||||
install-exec-hook:
|
||||
(cd $(DESTDIR)$(bindir); rm -f opalcc$(EXEEXT); $(LN_S) opal_wrapper opalcc)
|
||||
(cd $(DESTDIR)$(bindir); rm -f opalc++$(EXEEXT); $(LN_S) opal_wrapper opalc++)
|
||||
(cd $(DESTDIR)$(bindir); rm -f opalCC$(EXEEXT); $(LN_S) opal_wrapper opalCC)
|
||||
(cd $(DESTDIR)$(pkgdatadir); rm -f opalCC-wrapper-data.txt; $(LN_S) opalc++-wrapper-data.txt opalCC-wrapper-data.txt)
|
||||
|
||||
install-data-hook:
|
||||
(cd $(DESTDIR)$(mandir)/man1; rm -f opalc++.1; $(LN_S) opalcc.1 opalc++.1)
|
||||
(cd $(DESTDIR)$(mandir)/man1; rm -f opalCC.1; $(LN_S) opalcc.1 opalCC.1)
|
||||
|
||||
uninstall-local:
|
||||
rm -f $(DESTDIR)$(bindir)/opalcc$(EXEEXT) \
|
||||
$(DESTDIR)$(bindir)/opalc++$(EXEEXT) \
|
||||
$(DESTDIR)$(bindir)/opalCC$(EXEEXT) \
|
||||
$(DESTDIR)$(mandir)/man1/opalc++.1 \
|
||||
$(DESTDIR)$(mandir)/man1/opalCC.1 \
|
||||
$(DESTDIR)$(pkgdatadir)/opalCC-wrapper-data.txt
|
||||
|
||||
else
|
||||
install-exec-hook:
|
||||
(cd $(DESTDIR)$(bindir); rm -f opalcc$(EXEEXT); $(LN_S) opal_wrapper opalcc)
|
||||
(cd $(DESTDIR)$(bindir); rm -f opalc++$(EXEEXT); $(LN_S) opal_wrapper opalc++)
|
||||
|
||||
install-data-hook:
|
||||
(cd $(DESTDIR)$(mandir)/man1; rm -f opalc++.1; $(LN_S) opalcc.1 opalc++.1)
|
||||
|
||||
uninstall-local:
|
||||
rm -f $(DESTDIR)$(bindir)/opalcc$(EXEEXT) \
|
||||
$(DESTDIR)$(bindir)/opalc++$(EXEEXT) \
|
||||
$(DESTDIR)$(mandir)/man1/opalc++.1
|
||||
$(DESTDIR)$(bindir)/opalc++$(EXEEXT)
|
||||
|
||||
endif
|
||||
endif # OPAL_INSTALL_BINARIES
|
||||
|
||||
else
|
||||
endif # WANT_INSTALL_HEADERS
|
||||
|
||||
endif
|
||||
opalcc.1: opal_wrapper.1
|
||||
rm -f opalcc.1
|
||||
sed -e 's/@COMMAND@/opalcc/g' -e 's/@PROJECT@/Open PAL/g' -e 's/@PROJECT_SHORT@/OPAL/g' -e 's/@LANGUAGE@/C/g' < $(top_srcdir)/opal/tools/wrappers/opal_wrapper.1 > opalcc.1
|
||||
|
||||
opalc++.1: opal_wrapper.1
|
||||
rm -f opalc++.1
|
||||
sed -e 's/@COMMAND@/opalc++/g' -e 's/@PROJECT@/Open PAL/g' -e 's/@PROJECT_SHORT@/OPAL/g' -e 's/@LANGUAGE@/C++/g' < $(top_srcdir)/opal/tools/wrappers/opal_wrapper.1 > opalc++.1
|
||||
|
208
opal/tools/wrappers/opal_wrapper.1
Обычный файл
208
opal/tools/wrappers/opal_wrapper.1
Обычный файл
@ -0,0 +1,208 @@
|
||||
.TH @COMMAND@ 1 "@PROJECT@" "@PROJECT_SHORT@" "@PROJECT@"
|
||||
.
|
||||
.SH NAME
|
||||
@COMMAND@ -- @PROJECT@ @LANGUAGE@ wrapper compiler
|
||||
.
|
||||
.SH SYNTAX
|
||||
@COMMAND@ [-showme|-showme:compile|-showme:link] ...
|
||||
.
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
-showme
|
||||
Do not invoke the underlying compiler. Instead, show the command line
|
||||
that would be executed to compile the program. \fBNOTE:\fR If a
|
||||
non-filename argument is passed on the command line, the \fI-showme\fR
|
||||
option will \fInot\fR display any additional flags. For example, both
|
||||
"@COMMAND@ --showme" and "@COMMAND@ --showme my_source.c" will show all the
|
||||
wrapper-supplied flags. But "@COMMAND@ -showme -v" will only show the
|
||||
underlying compiler name and "-v".
|
||||
.TP
|
||||
-showme:compile
|
||||
Do not invoke the underlying @LANGUAGE@ compiler. Instead, show the
|
||||
compiler flags that would be supplied to the @LANGUAGE@ compiler.
|
||||
.TP
|
||||
-showme:link
|
||||
Do not invoke the underlying @LANGUAGE@ compiler. Instead, show the linker
|
||||
flags that would be supplied to the @LANGUAGE@ compiler.
|
||||
.PP
|
||||
See the man page for your underlying compiler for other options that
|
||||
can be passed through @COMMAND@
|
||||
.
|
||||
.
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
Conceptually, the role of these commands is quite simple:
|
||||
transparently add relevant compiler and linker flags to the user's
|
||||
command line that are necessary to compile / link @PROJECT@
|
||||
programs, and then invoke the underlying compiler to actually perform
|
||||
the command.
|
||||
.
|
||||
.PP
|
||||
As such, these commands are frequently referred to as "wrapper"
|
||||
compilers because they do not actually compile or link applications
|
||||
themselves; they only add in command line flags and invoke the
|
||||
back-end compiler.
|
||||
.
|
||||
.
|
||||
.SS Background
|
||||
Open MPI is comprised of three software layers: OPAL (Open Portable
|
||||
Access Layer), ORTE (Open Run-Time Environment), and OMPI (Open MPI).
|
||||
There are wrapper compilers for each layer; each layer's wrapper only
|
||||
links in the libraries relevant for that layer. Specifically, each
|
||||
layer provides the following wrapper compilers:
|
||||
.
|
||||
.TP 4
|
||||
OPAL
|
||||
\fIopalcc\fR and \fIopalc++\fR
|
||||
.
|
||||
.TP
|
||||
ORTE
|
||||
\fIortecc\fR and \fIortec++\fR
|
||||
.
|
||||
.TP
|
||||
OMPI
|
||||
\fImpicc\fR, \fImpic++\fR, \fImpicxx\fR, \fImpiCC\fR (only on systems with
|
||||
case-senstive file systems), \fImpif77\fR, and \fImpif90\fR. Note
|
||||
that \fImpic++\fR, \fImpicxx\fR, and \fImpiCC\fR all invoke the same
|
||||
underlying C++ compiler with the same options. All are provided as
|
||||
compatibility with other MPI implementations.
|
||||
.
|
||||
.PP
|
||||
The Fortran wrapper compilers for MPI (\fImpif77\fR and \fImpif90\fR)
|
||||
will be inoperative and will return an error on use if Fortran 77 /
|
||||
Fortran 90 support was not built into the MPI layer.
|
||||
.
|
||||
.
|
||||
.SS Overview
|
||||
\fI@COMMAND@\fR is a convenience wrappers for the underlying
|
||||
@LANGUAGE@ compiler. Translation of an @PROJECT@ program requires the
|
||||
linkage of the @PROJECT@-specific libraries which may not reside in
|
||||
one of the standard search directories of ld(1). It also often
|
||||
requires the inclusion of header files what may also not be found in a
|
||||
standard location.
|
||||
.
|
||||
.PP
|
||||
\fI@COMMAND@\fR passes its arguments to the underlying @LANGUAGE@
|
||||
compiler along with the -I, -L and -l options required by @PROJECT@
|
||||
programs.
|
||||
.
|
||||
.PP
|
||||
The @PROJECT@ Team \fIstrongly\fR encourages using the wrapper
|
||||
compilers instead of attempting to link to the @PROJECT@ libraries
|
||||
manually. This allows the specific implementation of @PROJECT@ to
|
||||
change without forcing changes to linker directives in users'
|
||||
Makefiles. Indeed, the specific set of flags and libraries used by
|
||||
the wrapper compilers depends on how @PROJECT@ was configured and
|
||||
built; the values can change between different installations of the
|
||||
same version of @PROJECT@.
|
||||
.
|
||||
.PP
|
||||
Indeed, since the wrappers are simply thin shells on top of an
|
||||
underlying compiler, there are very, very few compelling reasons
|
||||
\fInot\fR to use \fI@COMMAND@\fR. When it is not possible to use the
|
||||
wrappers directly, the \fI-showme:compile\fR and \fI-showme:link\fR
|
||||
options should be used to determine what flags the wrappers would have
|
||||
used. For example:
|
||||
.
|
||||
.PP
|
||||
shell$ cc -c file1.c `mpicc -showme:compile`
|
||||
.
|
||||
.PP
|
||||
shell$ cc -c file2.c `mpicc -showme:compile`
|
||||
.
|
||||
.PP
|
||||
shell$ cc file1.o file2.o `mpicc -showme:link` -o my_mpi_program
|
||||
.
|
||||
.
|
||||
.SH NOTES
|
||||
.PP
|
||||
It is possible to make the wrapper compilers multi-lib aware. That
|
||||
is, the libraries and includes specified may differ based on the
|
||||
compiler flags specified (for example, with the GNU compilers on
|
||||
Linux, a different library path may be used if -m32 is seen versus
|
||||
-m64 being seen). This is not the default behavior in a standard
|
||||
build, but can be activated (for example, in a binary package
|
||||
providing both 32 and 64 bit support). More information can be found
|
||||
at:
|
||||
.PP
|
||||
https://svn.open-mpi.org/trac/ompi/wiki/compilerwrapper3264
|
||||
.
|
||||
.
|
||||
.SH FILES
|
||||
.PP
|
||||
The string that the wrapper compilers insert into the command line
|
||||
before invoking the underlying compiler are stored in a text file
|
||||
created by @PROJECT@ and installed to
|
||||
\fI$pkgdata/@COMMAND@-wrapper-data.txt\fR, where \fI$pkgdata\fR
|
||||
is typically \fI$prefix/share/openmpi\fR, and \fI$prefix\fR is the top
|
||||
installation directory of @PROJECT@.
|
||||
.
|
||||
.PP
|
||||
It is rarely necessary to edit this file, but it can be examined to
|
||||
gain insight into what flags the wrappers are placing on the command
|
||||
line.
|
||||
.
|
||||
.
|
||||
.SH ENVIRONMENT VARIABLES
|
||||
.PP
|
||||
By default, the wrappers use the compilers that were selected when
|
||||
@PROJECT@ was configured. These compilers were either found
|
||||
automatically by Open MPI's "configure" script, or were selected by
|
||||
the user in the CC, CXX, F77, and/or FC environment variables
|
||||
before "configure" was invoked. Additionally, other arguments
|
||||
specific to the compiler may have been selected by configure.
|
||||
.
|
||||
.PP
|
||||
These values can be selectively overridden by either editing the text
|
||||
files containing this configuration information (see the \fBFILES\fR
|
||||
section), or by setting selected environment variables of the
|
||||
form "@PROJECT_SHORT@_value".
|
||||
.
|
||||
.PP
|
||||
Valid value names are:
|
||||
.
|
||||
.TP
|
||||
CPPFLAGS
|
||||
Flags added when invoking the preprocessor (C or C++)
|
||||
.
|
||||
.TP
|
||||
LDFLAGS
|
||||
Flags added when invoking the linker (C, C++, or Fortran)
|
||||
.
|
||||
.TP
|
||||
LIBS
|
||||
Libraries added when invoking the linker (C, C++, or Fortran)
|
||||
.
|
||||
.TP
|
||||
CC
|
||||
C compiler
|
||||
.
|
||||
.TP
|
||||
CFLAGS
|
||||
C compiler flags
|
||||
.
|
||||
.TP
|
||||
CXX
|
||||
C++ compiler
|
||||
.
|
||||
.TP
|
||||
CXXFLAGS
|
||||
C++ compiler flags
|
||||
.
|
||||
.
|
||||
.TP
|
||||
F77
|
||||
Fortran 77 compiler
|
||||
.
|
||||
.TP
|
||||
FFLAGS
|
||||
Fortran 77 compiler flags
|
||||
.
|
||||
.
|
||||
.TP
|
||||
FC
|
||||
Fortran 90 compiler
|
||||
.
|
||||
.TP
|
||||
FCFLAGS
|
||||
Fortran 90 compiler flags
|
@ -1,226 +0,0 @@
|
||||
.TH opalcc 1 "OPEN MPI TOOLS" "OPEN MPI" "OPEN MPI TOOLS"
|
||||
.
|
||||
.SH NAME
|
||||
This man page describes the wrapper compilers for the Open MPI (OMPI),
|
||||
OpenRTE (ORTE), and Open Portable Access Layer (OPAL):
|
||||
.
|
||||
.PP
|
||||
mpicc, mpiCC / mpic++, mpif77, mpif90
|
||||
.
|
||||
.PP
|
||||
ortecc, orteCC / ortec++
|
||||
.
|
||||
.PP
|
||||
opalcc, opalCC / opalc++
|
||||
.
|
||||
.
|
||||
.SH SYNTAX
|
||||
mpicc [-showme|-showme:compile|-showme:link] ...
|
||||
.
|
||||
.PP
|
||||
The same syntax works for all the wrapper compilers; \fImpicc\fR is
|
||||
shown above as a single example representing all the others.
|
||||
.
|
||||
.
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
-showme
|
||||
Do not invoke the underlying compiler. Instead, show the command line
|
||||
that would be executed to compile the program. \fBNOTE:\fR If a
|
||||
non-filename argument is passed on the command line, the \fI-showme\fR
|
||||
option will \fInot\fR display any additional flags. For example, both
|
||||
"mpicc --showme" and "mpicc --showme my_source.c" will show all the
|
||||
wrapper-supplied flags. But "mpicc -showme -v" will only show the
|
||||
underlying compiler name and "-v".
|
||||
.TP
|
||||
-showme:compile
|
||||
Do not invoke the underlying C/C++ compiler. Instead, show the
|
||||
compiler flags that would be supplied to the C/C++ compiler.
|
||||
.TP
|
||||
-showme:link
|
||||
Do not invoke the underlying C/C++ compiler. Instead, show the linker
|
||||
flags that would be supplied to the C/C++ compiler.
|
||||
.PP
|
||||
See cc(1) and CC(1) (or whatever your underlying C/C++ compilers are)
|
||||
for all other options.
|
||||
.
|
||||
.
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
Conceptually, the role of these commands is quite simple:
|
||||
transparently add relevant compiler and linker flags to the user's
|
||||
command line that are necessary to compile / link OPAL, ORTE, and OMPI
|
||||
programs, and then invoke the underlying compiler to actually perform
|
||||
the command.
|
||||
.
|
||||
.PP
|
||||
As such, these commands are frequently referred to as "wrapper"
|
||||
compilers because they do not actually compile or link applications
|
||||
themselves; they only add in command line flags and invoke the
|
||||
back-end compiler.
|
||||
.
|
||||
.
|
||||
.SS Background
|
||||
Open MPI is comprised of three software layers: OPAL (Open Portable
|
||||
Access Layer), ORTE (Open Run-Time Environment), and OMPI (Open MPI).
|
||||
There are wrapper compilers for each layer; each layer's wrapper only
|
||||
links in the libraries relevant for that layer. Specifically, each
|
||||
layer provides the following wrapper compilers:
|
||||
.
|
||||
.TP 4
|
||||
OPAL
|
||||
\fIopalcc\fR, \fIopalc++\fR, \fIopalCC\fR (only on systems with
|
||||
case-sensitive filesystems)
|
||||
.
|
||||
.TP
|
||||
ORTE
|
||||
\fIortecc\fR, \fIortec++\fR, \fIorteCC\fR (only on systems with
|
||||
case-senstive filesystems)
|
||||
.
|
||||
.TP
|
||||
OMPI
|
||||
\fImpicc\fR, \fImpic++\fR, \fImpiCC\fR (only on systems with
|
||||
case-senstive file systems), \fImpif77\fR, \fImpif90\fR
|
||||
.
|
||||
.PP
|
||||
Some systems may not have all the wrapper compilers listed above
|
||||
depending on which back-end compilers are available. For example, if
|
||||
a system does not have any Fortran compilers available, \fImpif77\fR
|
||||
and \fImpif90\fR will not be available.
|
||||
.PP
|
||||
The descriptions below are use the names of the MPI wrapper compilers,
|
||||
but generally apply to all wrapper compilers. Likewise, the name
|
||||
\fImpiCC\fR is used in the descriptions below; it is only available on
|
||||
systems with a C++ compiler and case-sensitive filesystems
|
||||
(\fImpic++\fR is available on all systems with a C++ compiler).
|
||||
.
|
||||
.
|
||||
.SS Overview
|
||||
\fImpicc\fR and \fImpiCC\fR (\fImpic++\fR is a synonym for \fImpiCC\fR
|
||||
provided for filenames that do not support case-sensitive filenames)
|
||||
are convenience wrappers for the underlying C and C++ compilers.
|
||||
Likewise, \fImpif77\fR and \fImpif90\fR are convenience wrappers for
|
||||
the underlying F77 and F90 compilers. Translation of an Open MPI
|
||||
program requires the linkage of the Open MPI-specific libraries which
|
||||
may not reside in one of the standard search directories of ld(1). It
|
||||
also often requires the inclusion of header files what may also not be
|
||||
found in a standard location.
|
||||
.
|
||||
.PP
|
||||
\fImpicc\fR passes its arguments to the underlying C compiler along
|
||||
with the -I, -L and -l options required by Open MPI programs.
|
||||
Likewise, \fImpiCC\fR (\fImpic++\fR), \fImpif77\FR, and \fImpif90\fR
|
||||
are similar, but invoke the underlying C++, F77, and F90 compiler
|
||||
instead, respectively.
|
||||
.
|
||||
.PP
|
||||
The Open MPI Team \fIstrongly\fR encourages using the wrapper
|
||||
compilers instead of attempting to link to the Open MPI libraries
|
||||
manually. This allows the specific implementation of Open MPI to
|
||||
change without forcing changes to linker directives in users'
|
||||
Makefiles. Indeed, the specific set of flags and libraries used by
|
||||
the wrapper compilers depends on how Open MPI was configured and
|
||||
built; the values can change between different installations of the
|
||||
same version of Open MPI.
|
||||
.
|
||||
.PP
|
||||
Indeed, since the wrappers are simply thin shells on top of an
|
||||
underlying compiler, there are very, very few compelling reasons
|
||||
\fInot\fR to use \fImpicc\fR / \fImpiCC\fR. When it is not possible
|
||||
to use the wrappers directly, the \fI-showme:compile\fR and
|
||||
\fI-showme:link\fR options should be used to determine what flags the
|
||||
wrappers would have used. For example:
|
||||
.
|
||||
.PP
|
||||
shell$ cc -c file1.c `mpicc -showme:compile`
|
||||
.
|
||||
.PP
|
||||
shell$ cc -c file2.c `mpicc -showme:compile`
|
||||
.
|
||||
.PP
|
||||
shell$ cc file1.o file2.o `mpicc -showme:link` -o my_mpi_program
|
||||
.
|
||||
.
|
||||
.SH NOTES
|
||||
.PP
|
||||
It is possible to make the wrapper compilers multi-lib aware. That
|
||||
is, the libraries and includes specified may differ based on the
|
||||
compiler flags specified (for example, with the GNU compilers on
|
||||
Linux, a different library path may be used if -m32 is seen versus
|
||||
-m64 being seen). This is not the default behavior in a standard
|
||||
build, but can be activated (for example, in a binary package
|
||||
providing both 32 and 64 bit support). More information can be found
|
||||
at:
|
||||
.PP
|
||||
https://svn.open-mpi.org/trac/ompi/wiki/compilerwrapper3264
|
||||
.
|
||||
.
|
||||
.SH FILES
|
||||
.PP
|
||||
The string that the wrapper compilers insert into the command line
|
||||
before invoking the underlying compiler are stored in a text file
|
||||
created by Open MPI and installed to
|
||||
\fI$pkgdata/<wrapper_name>-wrapper-data.txt\fR, where \fI$pkgdata\fR
|
||||
is typically \fI$prefix/share/openmpi\fR, and \fI$prefix\fR is the top
|
||||
installation directory of Open MPI. \fI<wrapper_name>\fR is the
|
||||
executable name of the wrapper compiler, such as \fImpicc\fR and
|
||||
\fImpic++\fR.
|
||||
.
|
||||
.PP
|
||||
It is rarely necessary to edit this file, but it can be examined to
|
||||
gain insight into what flags the wrappers are placing on the command
|
||||
line.
|
||||
.
|
||||
.
|
||||
.SH ENVIRONMENT VARIABLES
|
||||
.PP
|
||||
By default, the wrappers use the compilers that were selected when
|
||||
Open MPI was configured. These compilers were either found
|
||||
automatically by Open MPI's "configure" script, or were selected by
|
||||
the user in the CC, CXX, F77, and/or FC environment variables
|
||||
before "configure" was invoked. Additionally, other arguments
|
||||
specific to the compiler may have been selected by configure.
|
||||
.
|
||||
.PP
|
||||
These values can be selectively overridden by either editing the text
|
||||
files containing this configuration information (see the \fBFILES\fR
|
||||
section), or by setting selected environment variables of the
|
||||
form "project_value".
|
||||
.
|
||||
.PP
|
||||
Valid project names are \fIOPAL\fR, \fIORTE\fR, and \fIOMPI\fR. Valid
|
||||
value names are:
|
||||
.
|
||||
.TP
|
||||
CC
|
||||
C compiler
|
||||
.
|
||||
.TP
|
||||
CFLAGS
|
||||
C compiler flags
|
||||
.
|
||||
.TP
|
||||
CXX
|
||||
C++ compiler
|
||||
.
|
||||
.TP
|
||||
CXXFLAGS
|
||||
C++ compiler flags
|
||||
.
|
||||
.
|
||||
.TP
|
||||
F77
|
||||
Fortran 77 compiler
|
||||
.
|
||||
.TP
|
||||
FFLAGS
|
||||
Fortran 77 compiler flags
|
||||
.
|
||||
.
|
||||
.TP
|
||||
FC
|
||||
Fortran 90 compiler
|
||||
.
|
||||
.TP
|
||||
FCFLAGS
|
||||
Fortran 90 compiler flags
|
@ -16,6 +16,8 @@
|
||||
# $HEADER$
|
||||
#
|
||||
|
||||
if OMPI_INSTALL_BINARIES
|
||||
|
||||
nodist_pkgdata_DATA =
|
||||
dist_pkgdata_DATA = \
|
||||
help-orte-clean.txt
|
||||
@ -32,3 +34,4 @@ EXTRA_DIST = orte-clean.1
|
||||
orte_clean_LDADD = $(top_builddir)/orte/liborte.la
|
||||
orte_clean_DEPENDENCIES = $(top_builddir)/orte/liborte.la
|
||||
|
||||
endif # OMPI_INSTALL_BINARIES
|
||||
|
@ -16,6 +16,8 @@
|
||||
# $HEADER$
|
||||
#
|
||||
|
||||
if OMPI_INSTALL_BINARIES
|
||||
|
||||
nodist_pkgdata_DATA =
|
||||
dist_pkgdata_DATA = \
|
||||
help-orte-ps.txt
|
||||
@ -32,3 +34,4 @@ EXTRA_DIST = orte-ps.1
|
||||
orte_ps_LDADD = $(top_builddir)/orte/liborte.la
|
||||
orte_ps_DEPENDENCIES = $(top_builddir)/orte/liborte.la
|
||||
|
||||
endif # OMPI_INSTALL_BINARIES
|
||||
|
@ -17,48 +17,37 @@
|
||||
# $HEADER$
|
||||
#
|
||||
|
||||
if OMPI_INSTALL_BINARIES
|
||||
if WANT_INSTALL_HEADERS
|
||||
|
||||
nodist_pkgdata_DATA = \
|
||||
ortecc-wrapper-data.txt \
|
||||
ortec++-wrapper-data.txt
|
||||
|
||||
if CASE_SENSITIVE_FS
|
||||
install-exec-hook:
|
||||
(cd $(DESTDIR)$(bindir); rm -f ortecc$(EXEEXT); $(LN_S) opal_wrapper ortecc)
|
||||
(cd $(DESTDIR)$(bindir); rm -f ortec++$(EXEEXT); $(LN_S) opal_wrapper ortec++)
|
||||
(cd $(DESTDIR)$(bindir); rm -f orteCC$(EXEEXT); $(LN_S) opal_wrapper orteCC)
|
||||
(cd $(DESTDIR)$(pkgdatadir); rm -f orteCC-wrapper-data.txt; $(LN_S) ortec++-wrapper-data.txt orteCC-wrapper-data.txt)
|
||||
|
||||
install-data-hook:
|
||||
(cd $(DESTDIR)$(mandir)/man1; rm -f ortecc.1; $(LN_S) opalcc.1 ortecc.1)
|
||||
(cd $(DESTDIR)$(mandir)/man1; rm -f ortec++.1; $(LN_S) opalcc.1 ortec++.1)
|
||||
(cd $(DESTDIR)$(mandir)/man1; rm -f orteCC.1; $(LN_S) opalcc.1 orteCC.1)
|
||||
|
||||
uninstall-local:
|
||||
rm -f $(DESTDIR)$(bindir)/ortecc$(EXEEXT) \
|
||||
$(DESTDIR)$(bindir)/ortec++$(EXEEXT) \
|
||||
$(DESTDIR)$(bindir)/orteCC$(EXEEXT) \
|
||||
$(DESTDIR)$(mandir)/man1/ortecc.1 \
|
||||
$(DESTDIR)$(mandir)/man1/ortec++.1 \
|
||||
$(DESTDIR)$(mandir)/man1/orteCC.1 \
|
||||
$(DESTDIR)$(pkgdatadir)/orteCC-wrapper-data.txt
|
||||
|
||||
else
|
||||
if OMPI_INSTALL_BINARIES
|
||||
|
||||
man_MANS = \
|
||||
ortecc.1 \
|
||||
ortec++.1
|
||||
|
||||
EXTRA_DIST = $(man_MANS)
|
||||
|
||||
install-exec-hook:
|
||||
test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
|
||||
(cd $(DESTDIR)$(bindir); rm -f ortecc$(EXEEXT); $(LN_S) opal_wrapper ortecc)
|
||||
(cd $(DESTDIR)$(bindir); rm -f ortec++$(EXEEXT); $(LN_S) opal_wrapper ortec++)
|
||||
|
||||
install-data-hook:
|
||||
(cd $(DESTDIR)$(mandir)/man1; rm -f ortecc.1; $(LN_S) opalcc.1 ortecc.1)
|
||||
(cd $(DESTDIR)$(mandir)/man1; rm -f ortec++.1; $(LN_S) opalcc.1 ortec++.1)
|
||||
|
||||
uninstall-local:
|
||||
rm -f $(DESTDIR)$(bindir)/ortecc$(EXEEXT) \
|
||||
$(DESTDIR)$(mandir)/man1/ortecc.1 \
|
||||
$(DESTDIR)$(mandir)/man1/ortec++.1 \
|
||||
$(DESTDIR)$(bindir)/ortec++$(EXEEXT)
|
||||
|
||||
endif
|
||||
endif # OMPI_INSTALL_BINARIES
|
||||
|
||||
endif
|
||||
endif # WANT_INSTALL_HEADERS
|
||||
|
||||
ortecc.1: $(top_srcdir)/opal/tools/wrappers/opal_wrapper.1
|
||||
rm -f ortecc.1
|
||||
sed -e 's/@COMMAND@/ortecc/g' -e 's/@PROJECT@/OpenRTE/g' -e 's/@PROJECT_SHORT@/ORTE/g' -e 's/@LANGUAGE@/C/g' < $(top_srcdir)/opal/tools/wrappers/opal_wrapper.1 > ortecc.1
|
||||
|
||||
ortec++.1: $(top_srcdir)/opal/tools/wrappers/opal_wrapper.1
|
||||
rm -f ortec++.1
|
||||
sed -e 's/@COMMAND@/ortec++/g' -e 's/@PROJECT@/OpenRTE/g' -e 's/@PROJECT_SHORT@/ORTE/g' -e 's/@LANGUAGE@/C++/g' < $(top_srcdir)/opal/tools/wrappers/opal_wrapper.1 > ortec++.1
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user