1
1

Add libltdl into the build process.

This commit was SVN r383.
Этот коммит содержится в:
Jeff Squyres 2004-01-14 23:50:58 +00:00
родитель e3973285fd
Коммит ae93b4fffb
5 изменённых файлов: 162 добавлений и 5 удалений

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

@ -23,6 +23,7 @@ sinclude(config/lam_config_subdir_args.m4)
sinclude(config/lam_configure_options.m4)
sinclude(config/lam_functions.m4)
sinclude(config/lam_get_version.m4)
sinclude(config/lam_get_libtool_linker_flags.m4)
sinclude(config/lam_mca.m4)
sinclude(config/lam_setup_cc.m4)
sinclude(config/lam_setup_cxx.m4)

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

@ -352,9 +352,9 @@ EOF
run_and_check $lam_autoconf
# We only need the libltdl stuff for the top-level
# configure, not any of the SSI modules.
# configure, not any of the MCA modules.
if test -d src/include/mpi.h; then
if test -f src/include/mpi.h; then
rm -rf libltdl src/mca/libltdl src/mca/ltdl.h
run_and_check $lam_libtoolize --automake --copy --ltdl
mv libltdl src/mca

91
config/lam_get_libtool_linker_flags.m4 Обычный файл
Просмотреть файл

@ -0,0 +1,91 @@
dnl -*- shell-script -*-
dnl
dnl $HEADER
denl
AC_DEFUN([LAM_CHECK_LINKER_FLAGS],[
#
# libtool has been created by this point
# Try to see if it will add any additional flags for dependant libraries
#
AC_MSG_CHECKING([for libtool-supplied linker flags])
libtool="$1"
extra_flags="$2"
# Get the directory where libtool lives
start="`pwd`"
d="`dirname $libtool`"
cd "$d"
libtool="`pwd`/libtool"
cd "$start"
unset d start
# Make a playground to work in
mkdir conftest.$$
cd conftest.$$
cat > foo.c <<EOF
int foo(void) { return 0; }
EOF
lam_check_linker_flags_work() {
LAM_LOG_MSG([$cmd], [yes])
eval $cmd >&5 2>&5
if test -n "[$]1"; then
output="`eval $cmd 2>/dev/null`"
fi
status="$?"
LAM_LOG_MSG([\$? = $status], [yes])
if test "$status" != "0"; then
AC_MSG_RESULT([libtool error!])
AC_MSG_ERROR([Cannot continue])
fi
}
#
# First make a sample library with the current LDFLAGS and LIBS
#
cmd="$libtool --mode=compile $CC $CFLAGS foo.c -c -o foo.o"
lam_check_linker_flags_work
cmd="$libtool --mode=link $CC $CFLAGS foo.lo $LDFLAGS $LIBS -o libfoo.la"
lam_check_linker_flags_work
#
# Now fake linking to it and capture the output from libtool
#
cmd="$libtool --dry-run --mode=link $CC bar.lo libfoo.la -o bar $extra_flags"
lam_check_linker_flags_work yes
eval "set $output"
extra_ldflags=
while test -n "[$]1"; do
case "[$]1" in
$CC) ;;
bar*) ;;
-I*) ;;
-L*) ;;
-lfoo) ;;
-o) ;;
*.so) ;;
*.a) ;;
*)
extra_ldflags="$extra_ldflags [$]1"
;;
esac
shift
done
if test -n "$extra_ldflags"; then
AC_MSG_RESULT([$extra_ldflags])
else
AC_MSG_RESULT([no extra flags])
fi
cd ..
rm -rf conftest.$$])dnl

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

@ -306,10 +306,74 @@ LAM_MCA
# (after C compiler setup)
############################################################################
lam_show_title "Libtool configuration"
lam_show_title "Libtool / libltdl configuration"
# Use convenience libltdl for the moment, because we need to force the
# use of the newest libltdl (i.e., the one that ships with libtool
# 1.5) because it has support for a lot more things than older
# versions of libtool (which are generally installed by default).
AC_LIBLTDL_CONVENIENCE(src/mca/libltdl)
AC_SUBST(LTDLINCL)
AC_SUBST(LIBLTDL)
AC_LIBTOOL_DLOPEN
AM_PROG_LIBTOOL
# AC_CONFIG_SUBDIRS appears to be broken for non-gcc compilers (i.e.,
# passing precious variables down to the sub-configure).
#
# Note that we also did some magic scripty-foo in autogen.sh to rename
# the output libtool library "liblamltdl", so add -llamltdl here.
# This is because so many systems have older versions of libltdl
# installed very early in ld.so's search path; if we installed our own
# libltdl in some non-standard path (e.g., $HOME/local or even
# /usr/local), the libltdl in /usr/lib might get found first. And if
# it's older -- or just not matching the version that we need, Bad
# Things happen. [sigh]
#
# Finally, make liblamltdl follow the same shared/static convention
# that was user for the main LAM libraries. So manually examine
# $enable_shared and $enable_static and pass down the corresponding
# flags.
lam_show_subtitle "GNU libltdl setup"
lam_subdir_args="$lam_subdir_args --enable-ltdl-convenience --disable-ltdl-install"
if test "$enable_shared" = "yes"; then
lam_subdir_args="$lam_subdir_args --enable-shared"
else
lam_subdir_args="$lam_subdir_args --disable-shared"
fi
if test "$enable_static" = "yes"; then
lam_subdir_args="$lam_subdir_args --enable-static"
else
lam_subdir_args="$lam_subdir_args --disable-static"
fi
LAM_CONFIG_SUBDIR(src/mca/libltdl, [$lam_subdir_args], [HAPPY=1], [HAPPY=0])
if test "$HAPPY" = "1"; then
LIBLTDL_SUBDIR=libltdl
LIBLTDL_LTLIB=libltdl/libltdlc.la
WANT_LIBLTDL=1
# Arrgh. This is gross. But I can't think of any other way to do
# it. :-(
flags="`egrep ^LIBADD_DL src/mca/libltdl/Makefile | cut -d= -f2-`"
LAM_CHECK_LINKER_FLAGS([src/mca/libltdl/libtool], [-export-dynamic $flags])
WRAPPER_EXTRA_LIBS="$WRAPPER_EXTRA_LIBS $extra_ldflags"
LDFLAGS="-export-dynamic $LDFLAGS"
else
LIBLTDL_SUBDIR=
LIBLTDL_LTLIB=
WANT_LIBLTDL=0
fi
AC_SUBST(LIBLTDL_SUBDIR)
AC_SUBST(LIBLTDL_LTLIB)
AM_CONDITIONAL(WANT_LIBLTDL, test "$WANT_LIBLTDL" = "1")
AC_DEFINE_UNQUOTED(LAM_WANT_LIBLTDL, $WANT_LIBLTDL,
[Whether to include support for libltdl or not])
############################################################################
# final wrapper compiler config

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

@ -4,7 +4,7 @@
include $(top_srcdir)/config/Makefile.options
SUBDIRS = lam mpi
SUBDIRS = $(LIBLTDL_SUBDIR) lam mpi
# Source code files
@ -19,7 +19,8 @@ libmca_mpi_la_LIBADD = mpi/libmca_mpi_convenience.la
libmca_mpi_la_DEPENDENCIES = $(libmca_mpi_la_LIBADD)
libmca_lam_la_SOURCES =
libmca_lam_la_LIBADD = lam/libmca_lam_convenience.la
libmca_lam_la_LIBADD = $(LIBLTDL_LTLIB) \
lam/libmca_lam_convenience.la
libmca_lam_la_DEPENDENCIES = $(libmca_lam_la_LIBADD)
# Conditionally install the header files