It has a few warts, though, but also another cool thing can be fixed
now.
First the good thing: in principle, libltdl can do fine without an
AC_CONFIG_HEADER at all:
--- libltdl/Makefile.inc 2005-10-26 12:42:05.000000000 +0200
+++ libltdl/Makefile.inc 2005-11-07 16:13:55.000000000 +0100
@@ -26,7 +26,7 @@
# -I$(srcdir) is needed for user that built libltdl with a sub-Automake
# (not as a sub-package!) using 'nostdinc':
-AM_CPPFLAGS += -DHAVE_CONFIG_H -DLT_CONFIG_H='<$(LT_CONFIG_H)>' \
+AM_CPPFLAGS += -DLT_CONFIG_H='<$(LT_CONFIG_H)>' \
-DLTDL -I. -I$(srcdir) -Ilibltdl \
-I$(srcdir)/libltdl -I$(srcdir)/libltdl/libltdl
AM_LDFLAGS += -no-undefined
diff -u m4/ltdl.m4
/mount/endor/wildenhu/download/software/libtool/install/libtool-2.1/share/aclocal/ltdl.m4
--- libltdl/m4/ltdl.m4 2005-11-07 15:49:08.000000000 +0100
+++ libltdl/m4/ltdl.m4 2005-11-07 16:18:01.000000000 +0100
@@ -273,10 +273,10 @@
dnl _LTDL_MODE specific code must be evaluated at least once:
_LTDL_MODE_DISPATCH
-# In order that ltdl.c can compile, run AC_CONFIG_HEADERS for the user
-# if they did not call it themself. This is so that ltdl.h can pick up
-# the parent projects config.h file, The first file in AC_CONFIG_HEADERS
-# must contain the definitions required by ltdl.c.
+# In order that ltdl.c can compile, find out the first AC_CONFIG_HEADERS
+# the user used. This is so that ltdl.h can pick up the parent projects
+# config.h file, The first file in AC_CONFIG_HEADERS must contain the
+# definitions required by ltdl.c.
# FIXME: Remove use of undocumented AC_LIST_HEADERS (2.59 compatibility).
AC_CONFIG_COMMANDS_PRE([dnl
m4_pattern_allow([^LT_CONFIG_H$])dnl
@@ -284,11 +284,7 @@
[LT_CONFIG_H=AH_HEADER],
[m4_ifset([AC_LIST_HEADERS],
[LT_CONFIG_H=`echo "AC_LIST_HEADERS" | $SED 's,^[[ ]]*,,;s,[[
:]].*$,,'`],
- [LT_CONFIG_H=config.h
- dnl subproject mode libltdl has its own config.h...
- m4_if(_LTDL_MODE, [subproject],
- [],
- [AC_CONFIG_HEADERS([config.h:config-h.in])])])])])
+ [])])])
AC_SUBST([LT_CONFIG_H])
AC_CHECK_HEADERS([memory.h unistd.h dl.h sys/dl.h dld.h mach-o/dyld.h],
Now the warts: This works: (Note no autoheader!)
cat >configure.ac <<EOF
AC_INIT([nonrec-test],1,[devnull])
LT_CONFIG_LTDL_DIR([libltdl],[nonrecursive])
AM_INIT_AUTOMAKE([foreign])
AC_PROG_CC
LT_INIT
LT_WITH_LTDL
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
EOF
cat >Makefile.am <<EOF
ACLOCAL_AMFLAGS = -I libltdl/m4
AM_CPPFLAGS =
AM_LDFLAGS =
EXTRA_DIST =
CLEANFILES =
MOSTLYCLEANFILES =
noinst_LTLIBRARIES =
lib_LTLIBRARIES =
EXTRA_LTLIBRARIES =
BUILT_SOURCES =
include libltdl/Makefile.inc
EOF
libtoolize --ltdl --install --nonrecursive
aclocal -I libltdl/m4
automake -a
autoconf
./configure
make
But this then fails:
make dist
The dist target currently needs all these files to exist:
libltdl/m4/lt~obsolete.m4 libltdl/aclocal.m4 libltdl/configure.ac
libltdl/configure libltdl/config-h.in libltdl/Makefile.in
libltdl/Makefile.am
If I touch them, "make distcheck" passes.
Can you fix this? Then, (non)recursive mode will be really usable!