Thu Nov 27 08:53:05 1997 Gordon Matzigkeit <gord@gnu.org>
+ * Makefile.am (maintainer-checkin, maintainer-release): New
+ commands to reap the full benefit of using PRCS to maintain
+ libtool version numbers.
+
* ltconfig.in, ltmain.in (global_symbol_pipe): Explicitly cast all
addresses to __ptr_t. This fixes a bug due to a strict IRIX
compiler. Suggested by Kaveh R. Ghazi.
# maintainer-checkin whenever I feel like it, then I run a maintainer-release
# after changing the project major version number in my project file.
#
-# This works because of the special `$Format ...$' string I have in my
+# This works because of the special `$Format: ...$' string I have in my
# `configure.in'.
PRCS = prcs
+.PHONY: maintainer-checkin maintainer-check-versions maintainer-release
maintainer-checkin:
cd $(top_srcdir) && $(PRCS) checkin $(PACKAGE)
-maintainer-release: distcheck
- cd $(top_srcdir) && $(PRCS) checkin $(PACKAGE)
- @newver=`grep '^(Parent-Version[ ]' $(srcdir)/$(PACKAGE).prj | \
+maintainer-check-versions:
+ @newver=`grep '^(Project-Version[ ]' $(srcdir)/$(PACKAGE).prj | \
sed 's/^.*[ ]\+\([^ ]\+\)[ ]\+[0-9]\+).*$$/\1/'`; \
if test "X$$newver" = "X$(VERSION)"; then \
- echo "Parent-Version \`$$newver' is the same as the released version." 1>&2; \
- echo "You must change the Project-Version major number in $(top_srcdir)/$(PACKAGE).prj before releasing." 1>&2; \
+ echo "Project-Version major \`$$newver' is the same as the released version." 1>&2; \
+ echo "You must change Project-Version in $(top_srcdir)/$(PACKAGE).prj before releasing." 1>&2; \
exit 1; \
- fi; \
- echo "============================="; \
+ fi
+
+maintainer-release: maintainer-check-versions distcheck
+ cd $(top_srcdir) && $(PRCS) checkin $(PACKAGE)
+ cd $(top_srcdir) && $(PRCS) rekey $(PACKAGE) configure.in
+ echo "============================="; \
echo "Congratulations! $(PACKAGE)-$(VERSION) is now complete."; \
echo; \
echo "Distribute \`$(PACKAGE)-$(VERSION).tar.gz' to the masses, and start thinking about"; \
- echo "how you're going to tackle $(PACKAGE)-$$newver!"; \
+ echo "the next development cycle."; \
echo "============================="
- cd $(top_srcdir) && $(PRCS) rekey $(PACKAGE) configure.in
NEWS - list of user-visible changes between releases of GNU Libtool
+New in 1.0x - 1997-XX-XX, Gordon Matzigkeit:
+* Bug fixes.
+
New in 1.0f - 1997-11-08, Gordon Matzigkeit:
* Bug fixes.
* New `-all-static' flag to prevent any dynamic linking. The regular
what the debugging difficulty is, and so, I wonder what problems I
will meet.''
+* Document the change from `-allow-undefined' to `-no-undefined'.
+
* Some packages, such as GIMP, choose to put a note about
`--disable-shared' in their README:
In the future:
**************
+* Inter-library dependencies should be automatically tracked by
+libtool. Reminded by Alexandre Oliva. This also would require
+looking up installed libtool libraries for transparent support.
+
* Implement full multi-language support. Currently, this is only for
C++, but there are beginnings of this in the manual (Other Languages).
This includes writing libtool not to be so dependent on the compiler
dnl `prcs.README' from your nearest GNU mirror.
dnl $Format: "AM_INIT_AUTOMAKE($Project$,$ProjectMajorVersion$)"$
-AM_INIT_AUTOMAKE(libtool,1.2b)
+AM_INIT_AUTOMAKE(libtool,1.2c)
pkgdatadir='${datadir}/libtool'
AC_SUBST(pkgdatadir)
# A lot of this script is taken from autoconf-2.10.
+echo=echo
+if test "X`$echo '\t'`" = 'X\t'; then :
+else
+ # The Solaris and AIX default echo program unquotes backslashes.
+ # This makes it impossible to quote backslashes using
+ # echo "$something" | sed 's/\\/\\\\/g'
+ # So, we emulate echo with printf '%s\n'
+ echo='printf %s\n'
+ if test "X`$echo '\t'`" = 'X\t'; then :
+ else
+ # Oops. We have no working printf. Try to find a not-so-buggy echo.
+ echo=echo
+ IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:"
+ save_PATH="$PATH"
+ PATH="$PATH":/usr/ucb
+ for dir in $PATH; do
+ if test -f $dir/echo && test "X`$dir/echo '\t'`" = 'X\t'; then
+ echo="$dir/echo"
+ break
+ fi
+ done
+ IFS="$save_ifs"
+ PATH="$save_PATH"
+ fi
+fi
+
# The name of this program.
-progname=`echo "$0" | sed 's%^.*/%%'`
+progname=`$echo "$0" | sed 's%^.*/%%'`
# Constants:
PROGRAM=ltconfig
case "$host_os" in
sunos4*)
ld_shlibs=yes
+ archive_cmds='$CC -shared ${wl}-soname $wl$soname -o $lib$libobjs'
hardcode_direct=yes
hardcode_shlibpath_var=no
;;
*)
if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared ${wl}-soname $wl$soname -o $lib$libobjs'
runpath_var=LD_RUN_PATH
hardcode_runpath_var=yes
ld_shlibs=yes
esac
if test "$ld_shlibs" = yes; then
- archive_cmds='$CC -shared ${wl}-soname $wl$soname -o $lib$libobjs$deplibs'
hardcode_libdir_flag_spec='${wl}-rpath $wl$libdir'
export_dynamic_flag_spec='${wl}-export-dynamic'
fi
case "$host_os" in
aix3*)
allow_undefined_flag=unsupported
- archive_cmds='$NM$libobjs | $global_symbol_pipe | sed '\''s/.* //'\'' > $lib.exp;$LD -o $objdir/$soname$libobjs -bE:$lib.exp -T512 -H512 -bM:SRE$deplibs;$AR cru $lib $objdir/$soname'
+ archive_cmds='$NM$libobjs | $global_symbol_pipe | sed '\''s/.* //'\'' > $lib.exp;$LD -o $objdir/$soname$libobjs -bE:$lib.exp -T512 -H512 -bM:SRE;$AR cru $lib $objdir/$soname'
# Note: this linker hardcodes the directories in LIBPATH if there
# are no directories specified by -L.
hardcode_minus_L=yes
aix4*)
allow_undefined_flag=unsupported
- archive_cmds='$NM$libobjs | $global_symbol_pipe | sed '\''s/.* //'\'' > $lib.exp;$CC -o $objdir/$soname$libobjs ${wl}-bE:$lib.exp ${wl}-bM:SRE ${wl}-bnoentry$deplibs;$AR cru $lib $objdir/$soname'
+ archive_cmds='$NM$libobjs | $global_symbol_pipe | sed '\''s/.* //'\'' > $lib.exp;$CC -o $objdir/$soname$libobjs ${wl}-bE:$lib.exp ${wl}-bM:SRE ${wl}-bnoentry;$AR cru $lib $objdir/$soname'
hardcode_direct=yes
hardcode_minus_L=yes
;;
# doesn't break anything, and helps significantly (at the cost of a little
# extra space).
freebsd2.2*)
- archive_cmds='$LD -Bshareable -o $lib$libobjs$deplibs /usr/lib/c++rt0.o'
+ archive_cmds='$LD -Bshareable -o $lib$libobjs /usr/lib/c++rt0.o'
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
hardcode_minus_L=yes
# Unfortunately, older versions of FreeBSD 2 don't have this feature.
freebsd2*)
- archive_cmds='$LD -Bshareable -o $lib$libobjs$deplibs'
+ archive_cmds='$LD -Bshareable -o $lib$libobjs'
hardcode_direct=yes
hardcode_minus_L=yes
hardcode_shlibpath_var=no
# FreeBSD 3, at last, uses gcc -shared to do shared libraries.
freebsd3*)
- archive_cmds='$CC -shared -o $lib$libobjs$deplibs'
+ archive_cmds='$CC -shared -o $lib$libobjs'
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
hardcode_minus_L=yes
;;
hpux9*)
- archive_cmds='$rm $objdir/$soname;$LD -b +s +b $install_libdir -o $objdir/$soname$libobjs$deplibs;mv $objdir/$soname $lib'
+ archive_cmds='$rm $objdir/$soname;$LD -b +s +b $install_libdir -o $objdir/$soname$libobjs;mv $objdir/$soname $lib'
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
hardcode_direct=yes
hardcode_minus_L=yes
+ export_dynamic_flag_spec='${wl}-E'
;;
hpux10*)
- archive_cmds='$LD -b +h $soname +s +b $install_libdir -o $lib$libobjs$deplibs'
+ archive_cmds='$LD -b +h $soname +s +b $install_libdir -o $lib$libobjs'
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
hardcode_direct=yes
hardcode_minus_L=yes
+ export_dynamic_flag_spec='${wl}-E'
;;
irix5* | irix6*)
- archive_cmds='$LD -shared -o $lib -soname $soname -set_version $verstring$libobjs$deplibs'
+ archive_cmds='$LD -shared -o $lib -soname $soname -set_version $verstring$libobjs'
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
;;
;;
openbsd*)
- archive_cmds='$LD -Bshareable -o $lib$libobjs$deplibs'
+ archive_cmds='$LD -Bshareable -o $lib$libobjs'
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
hardcode_shlibpath_var=no
hardcode_libdir_flag_spec='-L$libdir'
hardcode_minus_L=yes
allow_undefined_flag=unsupported
- archive_cmds='echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def;echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def;echo DATA >> $objdir/$libname.def;echo " SINGLE NONSHARED" >> $objdir/$libname.def;echo EXPORTS >> $objdir/$libname.def;emxexp$libobjs >> $objdir/$libname.def;$CC -Zdll -Zcrtdll -o $lib$libobjs $objdir/$libname.def'
+ archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def;$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def;$echo DATA >> $objdir/$libname.def;$echo " SINGLE NONSHARED" >> $objdir/$libname.def;$echo EXPORTS >> $objdir/$libname.def;emxexp$libobjs >> $objdir/$libname.def;$CC -Zdll -Zcrtdll -o $lib$libobjs $objdir/$libname.def'
old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def'
;;
;;
sco3.2v5*)
- archive_cmds='$LD -G -o $lib$libobjs$deplibs'
+ archive_cmds='$LD -G -o $lib$libobjs'
hardcode_direct=yes
;;
solaris2*)
- archive_cmds='$LD -G -z text -h $soname -o $lib$libobjs$deplibs'
+ archive_cmds='$LD -G -z text -h $soname -o $lib$libobjs'
hardcode_libdir_flag_spec='-R$libdir'
hardcode_shlibpath_var=no
;;
;;
uts4*)
- archive_cmds='$LD -G -h $soname -o $lib$libobjs$deplibs'
+ archive_cmds='$LD -G -h $soname -o $lib$libobjs'
hardcode_libdir_flag_spec='-L$libdir'
hardcode_direct=no
hardcode_minus_L=no
dld_preloaded_symbols[] =
{
EOF
- sed 's/^\(.*\) \(.*\)$/ {"\1", \&\2},/' < "$nlist" >> conftest.c
+ sed 's/^\(.*\) \(.*\)$/ {"\1", (__ptr_t) \&\2},/' < "$nlist" >> conftest.c
cat <<\EOF >> conftest.c
{0},
};
old_postinstall_cmds | old_postuninstall_cmds | archive_cmds | \
postinstall_cmds | postuninstall_cmds | finish_cmds)
# Double-quote double-evaled strings.
- eval "$var=\`echo \"\$$var\" | sed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\"\`"
+ eval "$var=\`$echo \"\$$var\" | sed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\"\`"
;;
*)
- eval "$var=\`echo \"\$$var\" | sed \"\$sed_quote_subst\"\`"
+ eval "$var=\`$echo \"\$$var\" | sed \"\$sed_quote_subst\"\`"
;;
esac
done
;;
*) cat <<EOF >> $ofile
# Find the path to this script.
-thisdir=\`echo "\$0" | sed -e 's%/[^/]*\$%%'\`
+thisdir=\`$echo "\$0" | sed -e 's%/[^/]*\$%%'\`
test "X\$0" = "X\$thisdir" && thisdir=.
# Execute the libtool backend.
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
-#FIXME: echo=echo
-echo='printf %s\n'
+echo=echo
if test "X`$echo '\t'`" = 'X\t'; then :
else
# The Solaris and AIX default echo program unquotes backslashes.
if test "${LANG+set}" = set; then LANG=C; export LANG; fi
if test "$LTCONFIG_VERSION" != "$VERSION"; then
- $echo "$progname: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2
- $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
+ echo "$progname: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2
+ echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
exit 1
fi
if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
- $echo "$progname: not configured to build any kind of library" 1>&2
- $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
+ echo "$progname: not configured to build any kind of library" 1>&2
+ echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
exit 1
fi
;;
--version)
- $echo "$PROGRAM (GNU $PACKAGE) $VERSION"
+ echo "$PROGRAM (GNU $PACKAGE) $VERSION"
exit 0
;;
;;
--features)
- $echo "host: $host"
+ echo "host: $host"
if test "$build_libtool_libs" = yes; then
- $echo "enable shared libraries"
+ echo "enable shared libraries"
else
- $echo "disable shared libraries"
+ echo "disable shared libraries"
fi
if test "$build_old_libs" = yes; then
- $echo "enable static libraries"
+ echo "enable static libraries"
else
- $echo "disable static libraries"
+ echo "disable static libraries"
fi
exit 0
;;
# Create an invalid libtool object if no PIC, so that we don't accidentally
# link it into a program.
if test "$build_libtool_libs" != yes; then
- $show "$echo timestamp > $libobj"
- $run eval "\$echo timestamp > \$libobj" || exit $?
+ $show "echo timestamp > $libobj"
+ $run eval "echo timestamp > \$libobj" || exit $?
fi
exit 0
link)
progname="$progname: link"
CC="$nonopt"
- allow_undefined=no
+ allow_undefined=yes
compile_command="$CC"
finalize_command="$CC"
;;
-allow-undefined)
- allow_undefined=yes
+ # FIXME: remove this flag sometime in the future.
+ $echo "$progname: \`-allow-undefined' is deprecated because it is the default" 1>&2
continue
;;
-l*) deplibs="$deplibs $arg" ;;
+ -no-undefined)
+ allow_undefined=no
+ continue
+ ;;
+
-o) prev=output ;;
-rpath)
esac
# Now actually substitute the argument into the commands.
- compile_command="$compile_command $arg"
- finalize_command="$finalize_command $arg"
+ if test -n "$arg"; then
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ fi
done
if test -n "$prev"; then
*)
$echo "$progname: unknown library version type \`$version_type'" 1>&2
- $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
+ echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
exit 1
;;
esac
if test "$build_libtool_libs" != yes; then
# Create an invalid libtool object if no PIC, so that we don't
# accidentally link it into a program.
- $show "$echo timestamp > $libobj"
- $run eval "\$echo timestamp > $libobj" || exit $?
+ $show "echo timestamp > $libobj"
+ $run eval "echo timestamp > $libobj" || exit $?
exit 0
fi
if sort "$nlist" | uniq > "$nlist"T; then
mv -f "$nlist"T "$nlist"
wcout=`wc "$nlist" 2>/dev/null`
- count=`$echo "$wcout" | sed 's/^[ ]*\([0-9][0-9]*\).*$/\1/'`
+ count=`echo "$wcout" | sed 's/^[ ]*\([0-9][0-9]*\).*$/\1/'`
(test "$count" -ge 0) 2>/dev/null || count=-1
else
$rm "$nlist"T
if test -f "$nlist"; then
sed -e 's/^.* \(.*\)$/extern char \1;/' < "$nlist" >> "$objdir/$dlsyms"
else
- $echo '/* NONE */' >> "$objdir/$dlsyms"
+ echo '/* NONE */' >> "$objdir/$dlsyms"
EOF
fi
EOF
if test -f "$nlist"; then
- sed 's/^\(.*\) \(.*\)$/ {"\1", \&\2},/' < "$nlist" >> "$objdir/$dlsyms"
+ sed 's/^\(.*\) \(.*\)$/ {"\1", (__ptr_t) \&\2},/' < "$nlist" >> "$objdir/$dlsyms"
fi
cat <<\EOF >> "$objdir/$dlsyms"
;;
*)
- echo "$progname: unknown suffix for \`$dlsyms'" 1>&2
+ $echo "$progname: unknown suffix for \`$dlsyms'" 1>&2
exit 1
;;
esac
# The program doesn't exist.
\$echo "\$0: error: \$progdir/\$program does not exist" 1>&2
\$echo "This script is just a wrapper for \$program." 1>&2
- \$echo "See the $PACKAGE documentation for more information." 1>&2
+ echo "See the $PACKAGE documentation for more information." 1>&2
exit 1
fi
fi
done
fi
- $echo "To link against installed libraries in LIBDIR, users may have to:"
+ echo "To link against installed libraries in LIBDIR, users may have to:"
if test -n "$shlibpath_var"; then
- $echo " - add LIBDIR to their \`$shlibpath_var' environment variable"
+ echo " - add LIBDIR to their \`$shlibpath_var' environment variable"
fi
- $echo " - use the \`-LLIBDIR' linker flag"
+ echo " - use the \`-LLIBDIR' linker flag"
exit 0
;;
The following components of LINK-COMMAND are treated specially:
-all-static do not do any dynamic linking at all
- -allow-undefined allow a libtool library to reference undefined symbols
-dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
-dlpreopen FILE link in FILE and add its symbols to dld_preloaded_symbols
-export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
-LLIBDIR search LIBDIR for required installed libraries
-lNAME OUTPUT-FILE requires the installed library libNAME
+ -no-undefined declare that a library does not refer to external symbols
-o OUTPUT-FILE create OUTPUT-FILE from the specified objects
-rpath LIBDIR the created library will eventually be installed in LIBDIR
-static do not do any dynamic linking of libtool libraries
;;
esac
-$echo
+echo
$echo "Try \`$progname --help' for more information about other modes."
exit 0