1
1

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
Этот коммит содержится в:
Jeff Squyres 2012-12-13 22:31:37 +00:00
родитель 18e0c75857
Коммит f779b1ded9
13 изменённых файлов: 188 добавлений и 39 удалений

Просмотреть файл

@ -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);
/* 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); 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}