--- /dev/null
+/* main.c -- mlib library
+ Copyright (C) 2002 Free Software Foundation, Inc.
+ Originally by greg Eisenhauer <eisen at cc.gatech.edu>
+ Extracted from mdemo.c
+ This file is part of GNU Libtool.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+USA. */
+
+#include "foo.h"
+#include "ltdl.h"
+#include <stdio.h>
+
+int
+test_dl (filename)
+ char *filename;
+{
+ lt_dlhandle handle;
+ const lt_dlinfo *info;
+ int (*pfoo1)() = 0;
+ int (*pfoo2)() = 0;
+ int (*phello)() = 0;
+ int *pnothing = 0;
+ int ret = 0;
+
+ handle = lt_dlopen(filename);
+ if (!handle) {
+ fprintf (stderr, "can't open the module %s!\n", filename);
+ fprintf (stderr, "error was: %s\n", lt_dlerror());
+ return 1;
+ }
+
+ info = lt_dlgetinfo(handle);
+ if (!info) {
+ fprintf (stderr, "can't get module info: %s\n", lt_dlerror());
+ return 1;
+ }
+ if (info->name) {
+ printf ("module name: %s\n", info->name);
+ } else {
+ printf ("module is not a libtool module\n");
+ }
+ printf ("module filename: %s\n", info->filename);
+ printf ("module reference count: %i\n", info->ref_count);
+
+ phello = (int(*)())lt_dlsym(handle, "hello");
+ if (phello)
+ {
+ int value = (*phello) ();
+
+ printf ("hello returned: %i\n", value);
+ if (value == HELLO_RET)
+ printf("hello is ok!\n");
+ }
+ else
+ {
+ fprintf (stderr, "did not find the `hello' function\n");
+ fprintf (stderr, "error was: %s\n", lt_dlerror());
+ ret = 1;
+ }
+
+ pnothing = (int*)lt_dlsym(handle, "nothing");
+ /* Try assigning to the nothing variable. */
+ if (pnothing)
+ *pnothing = 1;
+ else
+ {
+ fprintf (stderr, "did not find the `nothing' variable\n");
+ fprintf (stderr, "error was: %s\n", lt_dlerror());
+ ret = 1;
+ }
+
+ pfoo1 = (int(*)())lt_dlsym(handle, "foo1");
+ /* Just call the functions and check return values. */
+ if (pfoo1)
+ {
+ if ((*pfoo1) () == FOO_RET)
+ printf("foo1 is ok!\n");
+ else
+ ret = 1;
+ }
+ else {
+ pfoo2 = (int(*)())lt_dlsym(handle, "foo2");
+ if (pfoo2)
+ {
+ if ((*pfoo2) () == FOO_RET)
+ printf("foo2 is ok!\n");
+ else ret = 1;
+ }
+ else
+ {
+ fprintf (stderr, "did not find any of the `foo' functions\n");
+ fprintf (stderr, "error was: %s\n", lt_dlerror());
+ ret = 1;
+ }
+ }
+ lt_dlclose(handle);
+ return ret;
+}
+int
+mlib_func(argc, argv)
+int argc;
+char **argv;
+{
+ int ret = 0;
+ int i;
+ /*
+ * Would be nice if this somehow worked for libraries, not just executables.
+ * LTDL_SET_PRELOADED_SYMBOLS();
+ */
+ if (lt_dlinit() != 0) {
+ fprintf (stderr, "error during initialization: %s\n", lt_dlerror());
+ return 1;
+ }
+
+ for (i = 1; i < argc; i++)
+ if (test_dl(argv[i]))
+ ret = 1;
+
+ lt_dlexit();
+ return ret;
+}
--- /dev/null
+#! /bin/sh
+# mdemo2-conf.test - try configuring the ../mdemo2 subdirectory
+
+# Test script header.
+need_prefix=yes
+if test -z "$srcdir"; then
+ srcdir=`echo "$0" | sed 's%/[^/]*$%%'`
+ test "$srcdir" = "$0" && srcdir=.
+ test "${VERBOSE+set}" != "set" && VERBOSE=yes
+fi
+. $srcdir/defs || exit 1
+
+# Maybe we have a VPATH build, in which case, create a new subdir.
+test -d ../mdemo2 || mkdir ../mdemo2
+
+# Change to our build directory.
+cd ../mdemo2 || exit 1
+
+# Possibly clean up the distribution.
+if test -f Makefile; then
+ echo "= Running $make distclean in ../mdemo2"
+ $make distclean
+fi
+rm -f config.cache
+
+# Configure the demonstration.
+echo "= Configuring in ../mdemo2 (prefix=$prefix)"
+CONFIG_SITE=/nonexistent ${CONFIG_SHELL-/bin/sh} $srcdir/../mdemo2/configure --srcdir=$srcdir/../mdemo2 --prefix=$prefix || exit 1
+
+if grep '^build_old_libs=yes' libtool > /dev/null &&
+ grep '^build_libtool_libs=yes' libtool > /dev/null; then :
+else rm -f Makefile && exit 77
+fi
+
+exit 0
--- /dev/null
+#! /bin/sh
+# mdemo2-exec.test - check that programs in the ../mdemo2 subdirectory are viable
+
+# Test script header.
+need_prefix=no
+if test -z "$srcdir"; then
+ srcdir=`echo "$0" | sed 's%/[^/]*$%%'`
+ test "$srcdir" = "$0" && srcdir=.
+ test "${VERBOSE+set}" != "set" && VERBOSE=yes
+fi
+. $srcdir/defs || exit 1
+
+if test -f ../mdemo2/mdemo2; then :
+else
+ echo "You must run mdemo2-make.test before running $0" 1>&2
+ exit 77
+fi
+
+# Check to see if the programs really run.
+echo "Executing uninstalled programs in ../mdemo2"
+
+status=0
+if ../mdemo2/mdemo2_static ../mdemo/foo1.la ../mdemo/libfoo2.la; then :
+else
+ echo "$0: execution of ../mdemo2/mdemo2_static failed" 1>&2
+ status=1
+fi
+
+if ../mdemo2/mdemo2 ../mdemo/foo1.la ../mdemo/libfoo2.la; then :
+else
+ echo "$0: execution of ../mdemo2/mdemo2 failed" 1>&2
+ status=1
+fi
+
+exit $status
--- /dev/null
+#! /bin/sh
+# mdemo2-make.test - try building in the ../mdemo2 subdirectory
+
+# Test script header.
+need_prefix=no
+if test -z "$srcdir"; then
+ srcdir=`echo "$0" | sed 's%/[^/]*$%%'`
+ test "$srcdir" = "$0" && srcdir=.
+ test "${VERBOSE+set}" != "set" && VERBOSE=yes
+fi
+. $srcdir/defs || exit 1
+
+if test -f ../mdemo2/Makefile; then :
+else
+ echo "You must run mdemo2-conf.test before running $0" 1>&2
+ exit 77
+fi
+
+if test -f ../mdemo/libmlib.la; then :
+else
+ echo "You must run mdemo-make.test before running $0" 1>&2
+ exit 77
+fi
+
+# Change to our build directory.
+cd ../mdemo2 || exit 1
+
+# Do the actual build.
+echo "Making in ../mdemo2"
+$make || exit 1
+exit 0