+Mon Sep 15 07:08:35 1997 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
+
+ * demo/Makefile.am, ltmain.in, tests/hardcode.test (objdir):
+ Changed objdir variable .libs to _libs. This is another MS-DOS
+ portability fix. Suggested by Robert Hoehne.
+
Sat Sep 13 11:41:44 1997 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
* ltconfig.in, ltmain.in (hardcode_minusL): Fix typo by renaming
New in 1.0c:
* Bug fixes.
+* Change the libtool temporary directory from `.libs' to `_libs' in
+ order to cope with MS-DOS filenames. See README-alpha.
* New `-all-static' flag to prevent any dynamic linking. The regular
`-static' flag just prevents dynamic linking of libtool libraries.
* The `-rpath' flag can be used to hardcode absolute directories when
forums (such as GNU newsgroups), send them directly to the libtool
mailing list <bug-libtool@gnu.ai.mit.edu>.
+
+Automake
+********
+
+Between beta release 1.0b and 1.0c, libtool changed its private
+directory name from `.libs' to `_libs' in order to be compatible with
+MS-DOS filenames. This change allows libtool to run under the DJGPP
+build environment. Unfortunately, it also introduces a minor bug into
+Automake's `clean' rules for releases < 1.2a.
+
+This should not affect anybody else's programs unless you depend on
+libtool internals. If you do, and it isn't just for deleting
+unnecessary directories, then let me know so libtool can support the
+functionality you require.
+
+To fix Automake, edit libtool.am, and change the following lines:
+i.e.
+
+clean-libtool:
+ rm -rf .libs
+
+to:
+
+clean-libtool:
+ rm -rf _libs
+
+and reinstall Automake. If you've already installed Automake, you can
+make the same change in /usr/local/share/automake/libtool.am, to avoid
+having to reinstall.
+
+
+global_symbol_pipe
+******************
+
CALL FOR HELP: In order to implement dlopening even on archictectures
that don't have shared libraries, I am collecting `NM' and
`global_symbol_pipe' values for every known operating system.
helldl_SOURCES = dlmain.c
helldl_LDFLAGS = -export-dynamic -dlpreopen libhello.la
+# Unfortunately, in order to test libtool thoroughly, we need access
+# to its private directory.
+objdir = _libs
+
TESTS = run.test
# The following rules are only for the libtool demo and tests.
hc-direct: $(hell_OBJECTS) $(hell_DEPENDENCIES)
@rm -f hc-direct
@echo "You may ignore any linking errors from the following command:"
- @shlib=./.libs/libhello.a; \
+ @shlib=./$(objdir)/libhello.a; \
eval "`egrep '^library_names' libhello.la`"; \
for lib in $$library_names; do \
- shlib="./.libs/$$lib"; \
+ shlib="./$(objdir)/$$lib"; \
done; \
echo "$(CC) $(LDFLAGS) -o $@ $(hell_OBJECTS) $$shlib $(LIBS) || echo unsupported > $@"; \
eval "$(CC) $(LDFLAGS) -o $@ $(hell_OBJECTS) $$shlib $(LIBS) || echo unsupported > $@"
hc-minusL: $(hell_OBJECTS) $(hell_DEPENDENCIES)
@rm -f hc-minusL
- $(CC) $(LDFLAGS) -o $@ $(hell_OBJECTS) -L./.libs -lhello $(LIBS)
+ $(CC) $(LDFLAGS) -o $@ $(hell_OBJECTS) -L./$(objdir) -lhello $(LIBS)
hc-libpath: $(hell_OBJECTS) $(hell_DEPENDENCIES)
@rm -f hc-libpath
@echo "You may ignore any linking errors from the following command:"
@eval `egrep -e '^shlibpath_var=' ./libtool`; \
- echo "$$shlibpath_var=./.libs $(CC) $(LDFLAGS) -o $@ $(hell_OBJECTS) -lhello $(LIBS) || echo unsupported > $@"; \
- eval "$$shlibpath_var=./.libs $(CC) $(LDFLAGS) -o $@ $(hell_OBJECTS) -lhello $(LIBS) || echo unsupported > $@"
+ echo "$$shlibpath_var=./$(objdir) $(CC) $(LDFLAGS) -o $@ $(hell_OBJECTS) -lhello $(LIBS) || echo unsupported > $@"; \
+ eval "$$shlibpath_var=./$(objdir) $(CC) $(LDFLAGS) -o $@ $(hell_OBJECTS) -lhello $(LIBS) || echo unsupported > $@"
@code{ld} command to create a shared library, as well as the static
library.
-@cindex @file{@value{objdir}} subdirectory
+@c FIXME: TeX cannot handle @value{objdir} in an index entry
+@cindex @file{_libs} subdirectory
+@c @cindex @file{@value{objdir}} subdirectory
Note how libtool creates extra files in the @file{@value{objdir}}
subdirectory, rather than the current directory. This feature is to
make it easier to clean up the build directory, and to help ensure that
magic="%%%MAGIC variable%%%"
mkdir="mkdir"
mv="mv -f"
-objdir=.libs
+objdir=_libs
rm="rm -f"
# Sed substitution that helps us do robust quoting. It backslashifies
+Mon Sep 15 07:14:37 1997 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
+
+ * hardcode.test (objdir): New variable to simplify change from
+ .libs to _libs (MS-DOS portability fix).
+
Fri Sep 5 13:36:24 1997 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
* demo-exec.test, demo-inst.test: Change references from
# Change to our build directory.
cd ../demo || exit 1
+# Unfortunately, we need access to libtool internals for this test.
+objdir=_libs
+
# Check to make sure we have a dynamic library.
library_names=NONE
eval `egrep -e '^library_names=' ./libhello.la 2>/dev/null`
;;
esac
- # Discover whether the .libs directory really was hardcoded.
+ # Discover whether the objdir really was hardcoded.
hardcoded=no
- if fgrep '.libs' $file > /dev/null; then
+ if fgrep "$objdir" $file > /dev/null; then
hardcoded=yes
elif cat $file | tr '\200-\277' '\100-\177' | tr '\300-\377' '\100-\177' \
| tr '\000-\037' '\040-\077' | tr '\040' '\012' \
- | fgrep '.libs' > /dev/null 2>&1; then
+ | fgrep "$objdir" > /dev/null 2>&1; then
# At least AIX fgrep doesn't work for binary files, and AIX also
# doesn't have strings(1), so we need this strange conversion.
# AIX fgrep also has a limited line length, that's why we finally
case "$hardcoded" in
yes)
if test $expected = yes; then
- echo ".libs was hardcoded in \`$file', as libtool expected"
+ echo "$objdir was hardcoded in \`$file', as libtool expected"
else
- echo ".libs was hardcoded in \`$file', which fooled libtool" 1>&2
+ echo "$objdir was hardcoded in \`$file', which fooled libtool" 1>&2
status=1
fi
;;
no)
if test $expected = no; then
- echo ".libs was not hardcoded in \`$file', as libtool expected"
+ echo "$objdir was not hardcoded in \`$file', as libtool expected"
else
- echo ".libs was not hardcoded in \`$file', which fooled libtool" 1>&2
+ echo "$objdir was not hardcoded in \`$file', which fooled libtool" 1>&2
status=1
fi
;;