Put back the static-library-detection stuff from r27668, with some
additional functionality. Rationale (refs trac:3422): * Normal MPI applications only ever use the MPI API. Hence, -lmpi is sufficient (they'll never directly call ORTE or OPAL functions). This is arguably the most common case. * That being said, we do have some test programs (e.g., those in orte/test/mpi) that call MPI functions but also call ORTE/OPAL functions. I've also written the occasional MPI test program that calls opal_output, for example (there even might be a few tests in the IBM test suite that directly call ORTE/OPAL functions). * Even though this is not a common case, these applications should also compile/link with mpicc. * So we should add a --openmpi:linkall option that will also link in whatever is necessary to call ORTE/OPAL functions * Yes, we could hard-code "-lopen-rte -lopen-pal" in Makefiles, but we do reserve the right to change those library names and/or add others someday, so it's better to abstract out the names and let the wrapper supply whatever is necessary. * ORTE programs, however, are different. They almost always call OPAL functions (e.g., if they want to send a message, they must use the OPAL DSS). As such, it seems like the ORTE programs should always link in OPAL. Therefore: * Add undocumented --openmpi:linkall flag to the wrapper compilers. See the comment in opal_wrapper.c for an explanation of what it does. This flag is only intended for Open MPI developers -- not end users. That's why it's undocumented. * Update orte/test/mpi/Makefile.am to add --openmpi:linkall * Make ortecc/ortec++'s wrapper data text files always explicitly link in libopen-pal This commit was SVN r27670. The following SVN revision numbers were found above: r27668 --> open-mpi/ompi@cf845897aa The following Trac tickets were found above: Ticket 3422 --> https://svn.open-mpi.org/trac/ompi/ticket/3422
Этот коммит содержится в:
родитель
18e0c75857
Коммит
f779b1ded9
28
configure.ac
28
configure.ac
@ -1083,6 +1083,34 @@ LTDL_CONVENIENCE
|
|||||||
LT_INIT([dlopen win32-dll])
|
LT_INIT([dlopen win32-dll])
|
||||||
])
|
])
|
||||||
|
|
||||||
|
# What's the suffix of shared libraries? Inspired by generated
|
||||||
|
# Libtool code (even though we don't support several of these
|
||||||
|
# platforms, there didn't seem to be any harm in leaving in some of
|
||||||
|
# them, alhtough I did remove some that we have never/will never
|
||||||
|
# support, like OS/2).
|
||||||
|
case $host_os in
|
||||||
|
cygwin* | mingw* | pw32* | cegcc*)
|
||||||
|
OPAL_DYN_LIB_SUFFIX=dll
|
||||||
|
;;
|
||||||
|
darwin* | rhapsody*)
|
||||||
|
OPAL_DYN_LIB_SUFFIX=dylib
|
||||||
|
;;
|
||||||
|
hpux9* | hpux10* | hpux11*)
|
||||||
|
case $host_cpu in
|
||||||
|
ia64*)
|
||||||
|
OPAL_DYN_LIB_SUFFIX=so
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
OPAL_DYN_LIB_SUFFIX=sl
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
OPAL_DYN_LIB_SUFFIX=so
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
AC_SUBST(OPAL_DYN_LIB_SUFFIX)
|
||||||
|
|
||||||
OPAL_SETUP_LIBLTDL
|
OPAL_SETUP_LIBLTDL
|
||||||
|
|
||||||
|
|
||||||
|
@ -138,7 +138,7 @@ libmpi_la_LIBADD = \
|
|||||||
$(MCA_ompi_FRAMEWORK_LIBS) \
|
$(MCA_ompi_FRAMEWORK_LIBS) \
|
||||||
$(OMPI_MPIEXT_C_LIBS) \
|
$(OMPI_MPIEXT_C_LIBS) \
|
||||||
$(OMPI_LIBMPI_EXTRA_LIBS) \
|
$(OMPI_LIBMPI_EXTRA_LIBS) \
|
||||||
$(top_ompi_builddir)/orte/libopen-rte-lt.la
|
$(top_ompi_builddir)/orte/libopen-rte.la
|
||||||
libmpi_la_DEPENDENCIES = $(libmpi_la_LIBADD)
|
libmpi_la_DEPENDENCIES = $(libmpi_la_LIBADD)
|
||||||
libmpi_la_LDFLAGS = \
|
libmpi_la_LDFLAGS = \
|
||||||
-version-info $(libmpi_so_version) \
|
-version-info $(libmpi_so_version) \
|
||||||
|
@ -18,6 +18,9 @@ compiler_flags_prefix=@OMPI_WRAPPER_EXTRA_CXXFLAGS_PREFIX@
|
|||||||
compiler_flags=@OMPI_WRAPPER_EXTRA_CXXFLAGS@
|
compiler_flags=@OMPI_WRAPPER_EXTRA_CXXFLAGS@
|
||||||
linker_flags=@OMPI_WRAPPER_EXTRA_LDFLAGS@
|
linker_flags=@OMPI_WRAPPER_EXTRA_LDFLAGS@
|
||||||
libs=@OMPI_WRAPPER_CXX_LIB@ -lmpi @OMPI_WRAPPER_EXTRA_LIBS@
|
libs=@OMPI_WRAPPER_CXX_LIB@ -lmpi @OMPI_WRAPPER_EXTRA_LIBS@
|
||||||
|
libs_static=@OMPI_WRAPPER_CXX_LIB@ -lmpi @OMPI_WRAPPER_EXTRA_LIBS@ -lopen-rte @ORTE_WRAPPER_EXTRA_LIBS@ -lopen-pal @OPAL_WRAPPER_EXTRA_LIBS@
|
||||||
|
dyn_lib_file=libmpi.@OPAL_DYN_LIB_SUFFIX@
|
||||||
|
static_lib_file=libmpi.a
|
||||||
required_file=@OMPI_WRAPPER_CXX_REQUIRED_FILE@
|
required_file=@OMPI_WRAPPER_CXX_REQUIRED_FILE@
|
||||||
includedir=${includedir}
|
includedir=${includedir}
|
||||||
libdir=${libdir}
|
libdir=${libdir}
|
||||||
|
@ -18,6 +18,9 @@ compiler_flags_prefix=@OMPI_WRAPPER_EXTRA_CFLAGS_PREFIX@
|
|||||||
compiler_flags=@OMPI_WRAPPER_EXTRA_CFLAGS@
|
compiler_flags=@OMPI_WRAPPER_EXTRA_CFLAGS@
|
||||||
linker_flags=@OMPI_WRAPPER_EXTRA_LDFLAGS@
|
linker_flags=@OMPI_WRAPPER_EXTRA_LDFLAGS@
|
||||||
libs=-lmpi @OMPI_WRAPPER_EXTRA_LIBS@
|
libs=-lmpi @OMPI_WRAPPER_EXTRA_LIBS@
|
||||||
|
libs_static=-lmpi @OMPI_WRAPPER_EXTRA_LIBS@ -lopen-rte @ORTE_WRAPPER_EXTRA_LIBS@ -lopen-pal @OPAL_WRAPPER_EXTRA_LIBS@
|
||||||
|
dyn_lib_file=libmpi.@OPAL_DYN_LIB_SUFFIX@
|
||||||
|
static_lib_file=libmpi.a
|
||||||
required_file=
|
required_file=
|
||||||
includedir=${includedir}
|
includedir=${includedir}
|
||||||
libdir=${libdir}
|
libdir=${libdir}
|
||||||
|
@ -18,6 +18,9 @@ preprocessor_flags=
|
|||||||
compiler_flags=@OMPI_WRAPPER_EXTRA_FCFLAGS@
|
compiler_flags=@OMPI_WRAPPER_EXTRA_FCFLAGS@
|
||||||
linker_flags=@OMPI_WRAPPER_EXTRA_LDFLAGS@
|
linker_flags=@OMPI_WRAPPER_EXTRA_LDFLAGS@
|
||||||
libs=@OMPI_FORTRAN_USEMPIF08_LIB@ @OMPI_FORTRAN_USEMPI_LIB@ -lmpi_mpifh -lmpi -lopen-rte -lopen-pal @OMPI_WRAPPER_EXTRA_LIBS@
|
libs=@OMPI_FORTRAN_USEMPIF08_LIB@ @OMPI_FORTRAN_USEMPI_LIB@ -lmpi_mpifh -lmpi -lopen-rte -lopen-pal @OMPI_WRAPPER_EXTRA_LIBS@
|
||||||
|
libs_static=@OMPI_FORTRAN_USEMPIF08_LIB@ @OMPI_FORTRAN_USEMPI_LIB@ -lmpi_mpifh -lmpi @OMPI_WRAPPER_EXTRA_LIBS@ -lopen-rte @ORTE_WRAPPER_EXTRA_LIBS@ -lopen-pal @OPAL_WRAPPER_EXTRA_LIBS@
|
||||||
|
dyn_lib_file=libmpi.@OPAL_DYN_LIB_SUFFIX@
|
||||||
|
static_lib_file=libmpi.a
|
||||||
required_file=@OMPI_WRAPPER_FORTRAN_REQUIRED_FILE@
|
required_file=@OMPI_WRAPPER_FORTRAN_REQUIRED_FILE@
|
||||||
includedir=${includedir}
|
includedir=${includedir}
|
||||||
libdir=${libdir}
|
libdir=${libdir}
|
||||||
|
@ -86,17 +86,3 @@ include mca/Makefile.am
|
|||||||
include win32/Makefile.am
|
include win32/Makefile.am
|
||||||
include tools/Makefile.am
|
include tools/Makefile.am
|
||||||
include dss/Makefile.am
|
include dss/Makefile.am
|
||||||
|
|
||||||
# Set the convenience library to be the same as the non-convenience
|
|
||||||
# library, but a) it's marked as "noinst", so LT knows it's a
|
|
||||||
# convenience library, and b) no .so version number is assigned here.
|
|
||||||
# Note that we only need to make the convenience library if the ORTE
|
|
||||||
# project is being built (i.e., if there is an upper layer that needs
|
|
||||||
# to slurp in OPAL as a convenience library).
|
|
||||||
|
|
||||||
if PROJECT_ORTE
|
|
||||||
noinst_LTLIBRARIES += libopen-pal-lt.la
|
|
||||||
endif
|
|
||||||
libopen_pal_lt_la_SOURCES = $(libopen_pal_la_SOURCES)
|
|
||||||
libopen_pal_lt_la_LIBADD = $(libopen_pal_la_LIBADD)
|
|
||||||
libopen_pal_lt_la_DEPENDENCIES = $(libopen_pal_la_DEPENDENCIES)
|
|
||||||
|
@ -79,6 +79,9 @@ struct options_data_t {
|
|||||||
char **comp_flags_prefix;
|
char **comp_flags_prefix;
|
||||||
char **link_flags;
|
char **link_flags;
|
||||||
char **libs;
|
char **libs;
|
||||||
|
char **libs_static;
|
||||||
|
char *dyn_lib_file;
|
||||||
|
char *static_lib_file;
|
||||||
char *req_file;
|
char *req_file;
|
||||||
char *path_includedir;
|
char *path_includedir;
|
||||||
char *path_libdir;
|
char *path_libdir;
|
||||||
@ -100,6 +103,8 @@ static int default_data_idx = -1;
|
|||||||
#define COMP_WANT_COMPILE 0x010
|
#define COMP_WANT_COMPILE 0x010
|
||||||
#define COMP_WANT_LINK 0x020
|
#define COMP_WANT_LINK 0x020
|
||||||
#define COMP_WANT_PMPI 0x040
|
#define COMP_WANT_PMPI 0x040
|
||||||
|
#define COMP_WANT_STATIC 0x080
|
||||||
|
#define COMP_WANT_LINKALL 0x100
|
||||||
|
|
||||||
static void
|
static void
|
||||||
options_data_init(struct options_data_t *data)
|
options_data_init(struct options_data_t *data)
|
||||||
@ -124,6 +129,10 @@ options_data_init(struct options_data_t *data)
|
|||||||
data->link_flags[0] = NULL;
|
data->link_flags[0] = NULL;
|
||||||
data->libs = (char **) malloc(sizeof(char*));
|
data->libs = (char **) malloc(sizeof(char*));
|
||||||
data->libs[0] = NULL;
|
data->libs[0] = NULL;
|
||||||
|
data->libs_static = (char **) malloc(sizeof(char*));
|
||||||
|
data->libs_static[0] = NULL;
|
||||||
|
data->dyn_lib_file = NULL;
|
||||||
|
data->static_lib_file = NULL;
|
||||||
data->req_file = NULL;
|
data->req_file = NULL;
|
||||||
data->path_includedir = NULL;
|
data->path_includedir = NULL;
|
||||||
data->path_libdir = NULL;
|
data->path_libdir = NULL;
|
||||||
@ -149,6 +158,9 @@ options_data_free(struct options_data_t *data)
|
|||||||
opal_argv_free(data->comp_flags_prefix);
|
opal_argv_free(data->comp_flags_prefix);
|
||||||
opal_argv_free(data->link_flags);
|
opal_argv_free(data->link_flags);
|
||||||
opal_argv_free(data->libs);
|
opal_argv_free(data->libs);
|
||||||
|
opal_argv_free(data->libs_static);
|
||||||
|
if (NULL != data->dyn_lib_file) free(data->dyn_lib_file);
|
||||||
|
if (NULL != data->static_lib_file) free(data->static_lib_file);
|
||||||
if (NULL != data->req_file) free(data->req_file);
|
if (NULL != data->req_file) free(data->req_file);
|
||||||
if (NULL != data->path_includedir) free(data->path_includedir);
|
if (NULL != data->path_includedir) free(data->path_includedir);
|
||||||
if (NULL != data->path_libdir) free(data->path_libdir);
|
if (NULL != data->path_libdir) free(data->path_libdir);
|
||||||
@ -323,6 +335,16 @@ data_callback(const char *key, const char *value)
|
|||||||
opal_argv_count(options_data[parse_options_idx].libs),
|
opal_argv_count(options_data[parse_options_idx].libs),
|
||||||
values);
|
values);
|
||||||
opal_argv_free(values);
|
opal_argv_free(values);
|
||||||
|
} else if (0 == strcmp(key, "libs_static")) {
|
||||||
|
char **values = opal_argv_split(value, ' ');
|
||||||
|
opal_argv_insert(&options_data[parse_options_idx].libs_static,
|
||||||
|
opal_argv_count(options_data[parse_options_idx].libs_static),
|
||||||
|
values);
|
||||||
|
opal_argv_free(values);
|
||||||
|
} else if (0 == strcmp(key, "dyn_lib_file")) {
|
||||||
|
if (NULL != value) options_data[parse_options_idx].dyn_lib_file = strdup(value);
|
||||||
|
} else if (0 == strcmp(key, "static_lib_file")) {
|
||||||
|
if (NULL != value) options_data[parse_options_idx].static_lib_file = strdup(value);
|
||||||
} else if (0 == strcmp(key, "required_file")) {
|
} else if (0 == strcmp(key, "required_file")) {
|
||||||
if (NULL != value) options_data[parse_options_idx].req_file = strdup(value);
|
if (NULL != value) options_data[parse_options_idx].req_file = strdup(value);
|
||||||
} else if (0 == strcmp(key, "project_short")) {
|
} else if (0 == strcmp(key, "project_short")) {
|
||||||
@ -696,6 +718,43 @@ main(int argc, char *argv[])
|
|||||||
/* remove element from user_argv */
|
/* remove element from user_argv */
|
||||||
opal_argv_delete(&user_argc, &user_argv, i, 1);
|
opal_argv_delete(&user_argc, &user_argv, i, 1);
|
||||||
--i;
|
--i;
|
||||||
|
} else if (0 == strcmp(user_argv[i], "-static") ||
|
||||||
|
0 == strcmp(user_argv[i], "--static") ||
|
||||||
|
0 == strcmp(user_argv[i], "-Bstatic") ||
|
||||||
|
0 == strcmp(user_argv[i], "-Wl,-static") ||
|
||||||
|
0 == strcmp(user_argv[i], "-Wl,--static") ||
|
||||||
|
0 == strcmp(user_argv[i], "-Wl,-Bstatic")) {
|
||||||
|
flags |= COMP_WANT_STATIC;
|
||||||
|
} else if (0 == strcmp(user_argv[i], "-dynamic") ||
|
||||||
|
0 == strcmp(user_argv[i], "--dynamic") ||
|
||||||
|
0 == strcmp(user_argv[i], "-Bdynamic") ||
|
||||||
|
0 == strcmp(user_argv[i], "-Wl,-dynamic") ||
|
||||||
|
0 == strcmp(user_argv[i], "-Wl,--dynamic") ||
|
||||||
|
0 == strcmp(user_argv[i], "-Wl,-Bdynamic")) {
|
||||||
|
flags &= ~COMP_WANT_STATIC;
|
||||||
|
} else if (0 == strcmp(user_argv[i], "--openmpi:linkall")) {
|
||||||
|
/* This is an intentionally undocummented wrapper compiler
|
||||||
|
switch. It should only be used by Open MPI developers
|
||||||
|
-- not end users. It will cause mpicc to use the
|
||||||
|
static library list, even if we're compiling
|
||||||
|
dynamically (i.e., it'll specifically -lopen-rte and
|
||||||
|
-lopen-pal (and all their dependent libs)). We provide
|
||||||
|
this flag for test MPI applications that also invoke
|
||||||
|
ORTE and/or OPAL function calls.
|
||||||
|
|
||||||
|
On some systems (e.g., OS X), if the top-level
|
||||||
|
application calls ORTE/OPAL functions and you don't -l
|
||||||
|
ORTE and OPAL, then the functions won't be resolved at
|
||||||
|
link time (i.e., the implicit library dependencies of
|
||||||
|
libmpi won't be pulled in at link time), and therefore
|
||||||
|
the link will fail. This flag will cause the wrapper
|
||||||
|
to explicitly list the ORTE and OPAL libs on the
|
||||||
|
underlying compiler command line, so the application
|
||||||
|
will therefore link properly. */
|
||||||
|
flags |= COMP_WANT_LINKALL;
|
||||||
|
|
||||||
|
/* remove element from user_argv */
|
||||||
|
opal_argv_delete(&user_argc, &user_argv, i, 1);
|
||||||
} else if ('-' != user_argv[i][0]) {
|
} else if ('-' != user_argv[i][0]) {
|
||||||
disable_flags = false;
|
disable_flags = false;
|
||||||
flags |= COMP_SHOW_ERROR;
|
flags |= COMP_SHOW_ERROR;
|
||||||
@ -793,10 +852,80 @@ main(int argc, char *argv[])
|
|||||||
|
|
||||||
/* link flags and libs */
|
/* link flags and libs */
|
||||||
if (flags & COMP_WANT_LINK) {
|
if (flags & COMP_WANT_LINK) {
|
||||||
|
bool have_static_lib;
|
||||||
|
bool have_dyn_lib;
|
||||||
|
bool use_static_libs;
|
||||||
|
char *filename;
|
||||||
|
struct stat buf;
|
||||||
|
|
||||||
opal_argv_insert(&exec_argv, exec_argc, options_data[user_data_idx].link_flags);
|
opal_argv_insert(&exec_argv, exec_argc, options_data[user_data_idx].link_flags);
|
||||||
exec_argc = opal_argv_count(exec_argv);
|
exec_argc = opal_argv_count(exec_argv);
|
||||||
|
|
||||||
opal_argv_insert(&exec_argv, exec_argc, options_data[user_data_idx].libs);
|
/* Are we linking statically? If so, decide what libraries to
|
||||||
|
list. It depends on two factors:
|
||||||
|
|
||||||
|
1. Was --static (etc.) specified?
|
||||||
|
2. Does OMPI have static, dynamic, or both libraries installed?
|
||||||
|
|
||||||
|
Here's a matrix showing what we'll do in all 6 cases:
|
||||||
|
|
||||||
|
What's installed --static no --static
|
||||||
|
---------------- ---------- -----------
|
||||||
|
ompi .so libs -lmpi -lmpi
|
||||||
|
ompi .a libs all all
|
||||||
|
ompi both libs all -lmpi
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
filename = opal_os_path( false, options_data[user_data_idx].path_libdir, options_data[user_data_idx].static_lib_file, NULL );
|
||||||
|
if (0 == stat(filename, &buf)) {
|
||||||
|
have_static_lib = true;
|
||||||
|
} else {
|
||||||
|
have_static_lib = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
filename = opal_os_path( false, options_data[user_data_idx].path_libdir, options_data[user_data_idx].dyn_lib_file, NULL );
|
||||||
|
if (0 == stat(filename, &buf)) {
|
||||||
|
have_dyn_lib = true;
|
||||||
|
} else {
|
||||||
|
have_dyn_lib = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Determine which set of libs to use: dynamic or static. Be
|
||||||
|
pedantic to make the code easy to read. */
|
||||||
|
if (flags & COMP_WANT_LINKALL) {
|
||||||
|
/* If --openmpi:linkall was specified, list all the libs
|
||||||
|
(i.e., the static libs) if they're available, either in
|
||||||
|
static or dynamic form. */
|
||||||
|
if (have_static_lib || have_dyn_lib) {
|
||||||
|
use_static_libs = true;
|
||||||
|
}
|
||||||
|
} else if (flags & COMP_WANT_STATIC) {
|
||||||
|
/* If --static (or something like it) was specified, if we
|
||||||
|
have the static libs, then use them. Otherwise, use
|
||||||
|
the dynamic libs. */
|
||||||
|
if (have_static_lib) {
|
||||||
|
use_static_libs = true;
|
||||||
|
} else {
|
||||||
|
use_static_libs = false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* If --static (or something like it) was NOT specified
|
||||||
|
(or if --dyanic, or something like it, was specified),
|
||||||
|
if we have the dynamic libs, then use them. Otherwise,
|
||||||
|
use the static libs. */
|
||||||
|
if (have_dyn_lib) {
|
||||||
|
use_static_libs = false;
|
||||||
|
} else {
|
||||||
|
use_static_libs = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (use_static_libs) {
|
||||||
|
opal_argv_insert(&exec_argv, exec_argc, options_data[user_data_idx].libs_static);
|
||||||
|
} else {
|
||||||
|
opal_argv_insert(&exec_argv, exec_argc, options_data[user_data_idx].libs);
|
||||||
|
}
|
||||||
exec_argc = opal_argv_count(exec_argv);
|
exec_argc = opal_argv_count(exec_argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,6 +18,9 @@ compiler_flags_prefix=@OPAL_WRAPPER_EXTRA_CXXFLAGS_PREFIX@
|
|||||||
compiler_flags=@OPAL_WRAPPER_EXTRA_CXXFLAGS@
|
compiler_flags=@OPAL_WRAPPER_EXTRA_CXXFLAGS@
|
||||||
linker_flags=@OPAL_WRAPPER_EXTRA_LDFLAGS@
|
linker_flags=@OPAL_WRAPPER_EXTRA_LDFLAGS@
|
||||||
libs=-lopen-pal @OPAL_WRAPPER_EXTRA_LIBS@
|
libs=-lopen-pal @OPAL_WRAPPER_EXTRA_LIBS@
|
||||||
|
libs_static=-lopen-pal @OPAL_WRAPPER_EXTRA_LIBS@
|
||||||
|
dyn_lib_file=libopen-pal.@OPAL_DYN_LIB_SUFFIX@
|
||||||
|
static_lib_file=libopen-pal.a
|
||||||
required_file=
|
required_file=
|
||||||
includedir=${includedir}
|
includedir=${includedir}
|
||||||
libdir=${libdir}
|
libdir=${libdir}
|
||||||
|
@ -11,13 +11,16 @@ version=@OPAL_VERSION@
|
|||||||
language=C
|
language=C
|
||||||
compiler_env=CC
|
compiler_env=CC
|
||||||
compiler_flags_env=CFLAGS
|
compiler_flags_env=CFLAGS
|
||||||
compiler=@OPAL_WRAPPER_CC@
|
compiler=@WRAPPER_CC@
|
||||||
extra_includes=@OPAL_WRAPPER_EXTRA_INCLUDES@
|
extra_includes=@OPAL_WRAPPER_EXTRA_INCLUDES@
|
||||||
preprocessor_flags=@OPAL_WRAPPER_EXTRA_CPPFLAGS@
|
preprocessor_flags=@OPAL_WRAPPER_EXTRA_CPPFLAGS@
|
||||||
compiler_flags_prefix=@OPAL_WRAPPER_EXTRA_CFLAGS_PREFIX@
|
compiler_flags_prefix=@OPAL_WRAPPER_EXTRA_CFLAGS_PREFIX@
|
||||||
compiler_flags=@OPAL_WRAPPER_EXTRA_CFLAGS@
|
compiler_flags=@OPAL_WRAPPER_EXTRA_CFLAGS@
|
||||||
linker_flags=@OPAL_WRAPPER_EXTRA_LDFLAGS@
|
linker_flags=@OPAL_WRAPPER_EXTRA_LDFLAGS@
|
||||||
libs=-lopen-pal @OPAL_WRAPPER_EXTRA_LIBS@
|
libs=-lopen-pal @OPAL_WRAPPER_EXTRA_LIBS@
|
||||||
|
libs_static=-lopen-pal @OPAL_WRAPPER_EXTRA_LIBS@
|
||||||
|
dyn_lib_file=libopen-pal.@OPAL_DYN_LIB_SUFFIX@
|
||||||
|
static_lib_file=libopen-pal.a
|
||||||
required_file=
|
required_file=
|
||||||
includedir=${includedir}
|
includedir=${includedir}
|
||||||
libdir=${libdir}
|
libdir=${libdir}
|
||||||
|
@ -37,7 +37,7 @@ lib_LTLIBRARIES = libopen-rte.la
|
|||||||
libopen_rte_la_SOURCES =
|
libopen_rte_la_SOURCES =
|
||||||
libopen_rte_la_LIBADD = \
|
libopen_rte_la_LIBADD = \
|
||||||
$(MCA_orte_FRAMEWORK_LIBS) \
|
$(MCA_orte_FRAMEWORK_LIBS) \
|
||||||
$(top_ompi_builddir)/opal/libopen-pal-lt.la
|
$(top_ompi_builddir)/opal/libopen-pal.la
|
||||||
libopen_rte_la_DEPENDENCIES = $(libopen_rte_la_LIBADD)
|
libopen_rte_la_DEPENDENCIES = $(libopen_rte_la_LIBADD)
|
||||||
libopen_rte_la_LDFLAGS = -version-info $(libopen_rte_so_version)
|
libopen_rte_la_LDFLAGS = -version-info $(libopen_rte_so_version)
|
||||||
|
|
||||||
@ -63,17 +63,3 @@ include tools/Makefile.am
|
|||||||
include orted/Makefile.am
|
include orted/Makefile.am
|
||||||
include test/mpi/Makefile.include
|
include test/mpi/Makefile.include
|
||||||
include test/system/Makefile.include
|
include test/system/Makefile.include
|
||||||
|
|
||||||
# Set the convenience library to be the same as the non-convenience
|
|
||||||
# library, but a) it's marked as "noinst", so LT knows it's a
|
|
||||||
# convenience library, and b) no .so version number is assigned here.
|
|
||||||
# Note that we only need to make the convenience library if the OMPI
|
|
||||||
# project is being built (i.e., if there is an upper layer that needs
|
|
||||||
# to slurp in ORTE as a convenience library).
|
|
||||||
|
|
||||||
if PROJECT_ORTE
|
|
||||||
noinst_LTLIBRARIES += libopen-rte-lt.la
|
|
||||||
endif
|
|
||||||
libopen_rte_lt_la_SOURCES = $(libopen_rte_la_SOURCES)
|
|
||||||
libopen_rte_lt_la_LIBADD = $(libopen_rte_la_LIBADD)
|
|
||||||
libopen_rte_lt_la_DEPENDENCIES = $(libopen_rte_la_DEPENDENCIES)
|
|
||||||
|
@ -11,13 +11,12 @@ hello_show_help: hello_show_help.c
|
|||||||
$(CC) $(CFLAGS) $(CFLAGS_INTERNAL) $^ -o $@
|
$(CC) $(CFLAGS) $(CFLAGS_INTERNAL) $^ -o $@
|
||||||
|
|
||||||
CC = mpicc
|
CC = mpicc
|
||||||
CFLAGS = -g
|
CFLAGS = -g --openmpi:linkall
|
||||||
CFLAGS_INTERNAL = -I../../.. -I../../../orte/include -I../../../opal/include
|
CFLAGS_INTERNAL = -I../../.. -I../../../orte/include -I../../../opal/include
|
||||||
CXX = mpic++
|
CXX = mpic++ --openmpi:linkall
|
||||||
CXXFLAGS = -g
|
CXXFLAGS = -g
|
||||||
F77 = mpif77
|
FC = mpifort -openmpi:linkall
|
||||||
FC = mpif90
|
FCFLAGS = -g
|
||||||
FFLAGS = -g
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(PROGS) *~
|
rm -f $(PROGS) *~
|
||||||
|
@ -17,7 +17,10 @@ preprocessor_flags=@ORTE_WRAPPER_EXTRA_CPPFLAGS@
|
|||||||
compiler_flags_prefix=@ORTE_WRAPPER_EXTRA_CXXFLAGS_PREFIX@
|
compiler_flags_prefix=@ORTE_WRAPPER_EXTRA_CXXFLAGS_PREFIX@
|
||||||
compiler_flags=@ORTE_WRAPPER_EXTRA_CXXFLAGS@
|
compiler_flags=@ORTE_WRAPPER_EXTRA_CXXFLAGS@
|
||||||
linker_flags=@ORTE_WRAPPER_EXTRA_LDFLAGS@
|
linker_flags=@ORTE_WRAPPER_EXTRA_LDFLAGS@
|
||||||
libs=-lopen-rte @ORTE_WRAPPER_EXTRA_LIBS@
|
libs=-lopen-rte @ORTE_WRAPPER_EXTRA_LIBS@ -lopen-pal @OPAL_WRAPPER_EXTRA_LIBS@
|
||||||
|
libs_static=-lopen-rte @ORTE_WRAPPER_EXTRA_LIBS@ -lopen-pal @OPAL_WRAPPER_EXTRA_LIBS@
|
||||||
|
dyn_lib_file=libopen-rte.@OPAL_DYN_LIB_SUFFIX@
|
||||||
|
static_lib_file=libopen-rte.a
|
||||||
required_file=
|
required_file=
|
||||||
includedir=${includedir}
|
includedir=${includedir}
|
||||||
libdir=${libdir}
|
libdir=${libdir}
|
||||||
|
@ -17,7 +17,10 @@ preprocessor_flags=@ORTE_WRAPPER_EXTRA_CPPFLAGS@
|
|||||||
compiler_flags_prefix=@ORTE_WRAPPER_EXTRA_CFLAGS_PREFIX@
|
compiler_flags_prefix=@ORTE_WRAPPER_EXTRA_CFLAGS_PREFIX@
|
||||||
compiler_flags=@ORTE_WRAPPER_EXTRA_CFLAGS@
|
compiler_flags=@ORTE_WRAPPER_EXTRA_CFLAGS@
|
||||||
linker_flags=@ORTE_WRAPPER_EXTRA_LDFLAGS@
|
linker_flags=@ORTE_WRAPPER_EXTRA_LDFLAGS@
|
||||||
libs=-lopen-rte @ORTE_WRAPPER_EXTRA_LIBS@
|
libs=-lopen-rte @ORTE_WRAPPER_EXTRA_LIBS@ -lopen-pal @OPAL_WRAPPER_EXTRA_LIBS@
|
||||||
|
libs_static=-lopen-rte @ORTE_WRAPPER_EXTRA_LIBS@ -lopen-pal @OPAL_WRAPPER_EXTRA_LIBS@
|
||||||
|
dyn_lib_file=libopen-rte.@OPAL_DYN_LIB_SUFFIX@
|
||||||
|
static_lib_file=libopen-rte.a
|
||||||
required_file=
|
required_file=
|
||||||
includedir=${includedir}
|
includedir=${includedir}
|
||||||
libdir=${libdir}
|
libdir=${libdir}
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user