* TODO: updated

* autogen: only libltdl needs autoheader
* doc/libtool.texi (link mode): documented -export-symbols-regex
  and updated -export-symbols
* doc/libtool.texi (script contents): documented
  always_export_symbols, export_symbols_cmd, exclude_expsyms,
  include_expsyms, dlopen and dlopen_self
  more detailed description of need_lib_prefix
* ltconfig.in: a "'" was missing in the default value
  of export_symbols_cmd
* ltmain.in: implemented -export-symbols-regex
This commit is contained in:
Thomas Tanner 1999-02-18 11:38:36 +00:00
parent d56d56eafc
commit 01e414be0d
6 changed files with 85 additions and 13 deletions

View File

@ -1,3 +1,17 @@
1999-02-18 Thomas Tanner <tanner@gmx.de>
* TODO: updated
* autogen: only libltdl needs autoheader
* doc/libtool.texi (link mode): documented -export-symbols-regex
and updated -export-symbols
* doc/libtool.texi (script contents): documented
always_export_symbols, export_symbols_cmd, exclude_expsyms,
include_expsyms, dlopen and dlopen_self
more detailed description of need_lib_prefix
* ltconfig.in: a "'" was missing in the default value
of export_symbols_cmd
* ltmain.in: implemented -export-symbols-regex
1999-02-17 Alexandre Oliva <oliva@dcc.unicamp.br> 1999-02-17 Alexandre Oliva <oliva@dcc.unicamp.br>
* ltconfig.in: (freebsd2*, sunos4*, exclude_expsyms): exclude * ltconfig.in: (freebsd2*, sunos4*, exclude_expsyms): exclude

5
TODO
View File

@ -35,6 +35,7 @@ this in the dso.5 page, this looks more informative :)
* Inter-library dependencies should be fully tracked by libtool. * Inter-library dependencies should be fully tracked by libtool.
Reminded by Alexandre Oliva. This requires looking up installed Reminded by Alexandre Oliva. This requires looking up installed
libtool libraries for transparent support. libtool libraries for transparent support.
Thomas Tanner has a patch for this.
* Inter-library dependencies need to work for ltlibraries too. * Inter-library dependencies need to work for ltlibraries too.
Thomas Tanner has a patch for this. Thomas Tanner has a patch for this.
@ -42,6 +43,7 @@ Thomas Tanner has a patch for this.
* Alexandre Oliva suggests that we hardcode paths into libraries, as * Alexandre Oliva suggests that we hardcode paths into libraries, as
well as binaries: `... -Wl,-soname -Wl,/tmp/libtest.so.0 ...'. Tim well as binaries: `... -Wl,-soname -Wl,/tmp/libtest.so.0 ...'. Tim
Mooney wants the same thing. Mooney wants the same thing.
Thomas Tanner has a patch for this.
* Tom Lane adds that HP-UX's linker, at least (I've also found this on * Tom Lane adds that HP-UX's linker, at least (I've also found this on
AIX 4), distinguishes between global function and global variable AIX 4), distinguishes between global function and global variable
@ -58,6 +60,9 @@ work under Solaris however.
- libltdl documentation needs to be completed. - libltdl documentation needs to be completed.
- AC_PROG_LIBTOOL, AC_ENABLE/DISABLE_SHARED/STATIC, AC_LIBTOOL_DLOPEN
are not documented.
In the future: In the future:
************** **************

View File

@ -19,7 +19,7 @@ for sub in demo depdemo libltdl mdemo cdemo; do
rm -f acinclude.m4 rm -f acinclude.m4
cp ../libtool.m4 acinclude.m4 cp ../libtool.m4 acinclude.m4
aclocal aclocal
autoheader test "$sub" = libltdl && autoheader
automake --gnits --add-missing automake --gnits --add-missing
autoconf autoconf
cd .. cd ..

View File

@ -1163,8 +1163,12 @@ Allow symbols from @var{output-file} to be resolved with @code{dlsym}
@item -export-symbols @var{symfile} @item -export-symbols @var{symfile}
Tells the linker to export only the symbols listed in @var{symfile}. Tells the linker to export only the symbols listed in @var{symfile}.
The symbol file should end in @samp{.sym} and must contain the name of one The symbol file should end in @samp{.sym} and must contain the name of one
symbol per line. This option does not work for modules and is not symbol per line. This option has no effect on some platforms.
supported on all platforms. By default all symbols are exported.
@item -export-symbols-regex @var{regex}
Same as @samp{-export-symbols}, except that only symbols matching
the regular expression @var{regex} are exported.
By default all symbols are exported. By default all symbols are exported.
@item -L@var{libdir} @item -L@var{libdir}
@ -3376,6 +3380,12 @@ is no way to generate a shared library with references to symbols that
aren't defined in that library. aren't defined in that library.
@end defvar @end defvar
@defvar always_export_symbols
Whether libtool should automatically generate a list of exported symbols
using @var{export_symbols_cmd} before linking an archive.
Set to @samp{yes} or @samp{no}. Default is @samp{no}
@end defvar
@defvar archive_cmds @defvar archive_cmds
@defvarx archive_expsym_cmds @defvarx archive_expsym_cmds
@defvarx old_archive_cmds @defvarx old_archive_cmds
@ -3411,16 +3421,35 @@ i.e whether object files do not have to have the suffix ".o".
Set to @samp{yes} or @samp{no}. Set to @samp{yes} or @samp{no}.
@end defvar @end defvar
@defvar dlopen
Whether @code{dlopen} is supported on the platform.
Set to @samp{yes} or @samp{no}.
@end defvar
@defvar dlopen_self
Whether it is possible to @code{dlopen} the executable itself.
Set to @samp{yes} or @samp{no}.
@end defvar
@defvar echo @defvar echo
An @code{echo} program which does not interpret backslashes as an An @code{echo} program which does not interpret backslashes as an
escape character. escape character.
@end defvar @end defvar
@defvar exclude_expsyms
List of symbols that should not be listed in the preloaded symbols.
@end defvar
@defvar export_dynamic_flag_spec @defvar export_dynamic_flag_spec
Compiler link flag that allows a dlopened shared library to reference Compiler link flag that allows a dlopened shared library to reference
symbols that are defined in the program. symbols that are defined in the program.
@end defvar @end defvar
@defvar export_symbols_cmd
Command to extract exported symbols from @var{libobjs} to the
file @var{export_symbols}.
@end defvar
@defvar finish_cmds @defvar finish_cmds
Commands to tell the dynamic linker how to find shared libraries in a Commands to tell the dynamic linker how to find shared libraries in a
specific directory. specific directory.
@ -3491,6 +3520,10 @@ For information purposes, set to the specified and canonical names of
the system that libtool was configured for. the system that libtool was configured for.
@end defvar @end defvar
@defvar include_expsyms
List of symbols that must always be exported when using @var{export_symbols}.
@end defvar
@defvar libext @defvar libext
The standard old archive suffix (normally "a"). The standard old archive suffix (normally "a").
@end defvar @end defvar
@ -3517,6 +3550,9 @@ Whether libtool should automatically prefix module names with 'lib'.
Set to @samp{yes} or @samp{no}. By default, it is @samp{unknown}, which Set to @samp{yes} or @samp{no}. By default, it is @samp{unknown}, which
means the same as @samp{yes}, but documents that we are not really sure means the same as @samp{yes}, but documents that we are not really sure
about it. about it.
@samp{yes} means that it is possible both to @code{dlopen} and to
link against a library wihthout 'lib' prefix,
i.e. it requires @var{hardcode_direct} to be @samp{yes}.
@end defvar @end defvar
@defvar need_version @defvar need_version

View File

@ -1022,7 +1022,7 @@ hardcode_minus_L=no
hardcode_shlibpath_var=unsupported hardcode_shlibpath_var=unsupported
runpath_var= runpath_var=
always_export_symbols=no always_export_symbols=no
export_symbols_cmd="$NM $libobjs | $global_symbol_pipe | sed '\''s/.* //'\' | sort | uniq > $export_symbols" export_symbols_cmd='$NM $libobjs | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
# include_expsyms should be a list of space-separated symbols to be *always* # include_expsyms should be a list of space-separated symbols to be *always*
# included in the symbol list # included in the symbol list
include_expsyms= include_expsyms=

View File

@ -672,6 +672,7 @@ compiler."
dlprefiles= dlprefiles=
export_dynamic=no export_dynamic=no
export_symbols= export_symbols=
export_symbols_regex=
generated= generated=
hardcode_libdirs= hardcode_libdirs=
finalize_hardcode_libdirs= finalize_hardcode_libdirs=
@ -741,7 +742,7 @@ compiler."
;; ;;
esac esac
;; ;;
exportsyms) expsyms)
export_symbols="$arg" export_symbols="$arg"
if test ! -f "$arg"; then if test ! -f "$arg"; then
$echo "$modename: symbol file \`$arg' does not exist" $echo "$modename: symbol file \`$arg' does not exist"
@ -750,6 +751,11 @@ compiler."
prev= prev=
continue continue
;; ;;
expsyms_regex)
export_symbols_regex="$arg"
prev=
continue
;;
release) release)
release="-$arg" release="-$arg"
prev= prev=
@ -822,12 +828,16 @@ compiler."
fi fi
;; ;;
-export-symbols) -export-symbols | -export-symbols-regex)
if test -n "$export_symbols"; then if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
$echo "$modename: cannot have more than one -exported-symbols" $echo "$modename: cannot have more than one -exported-symbols"
exit 1 exit 1
fi fi
prev=exportsyms if test "$arg" = "-export-symbols"; then
prev=expsyms
else
prev=expsyms_regex
fi
continue continue
;; ;;
@ -1859,13 +1869,20 @@ EOF
fi fi
# Prepare the list of exported symbols # Prepare the list of exported symbols
if test "$always_export_symbols" = yes && test -z "$export_symbols"; then if test -z "$run" && test -z "$export_symbols"; then
export_symbols="$objdir/$libname.exp" if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
$run $rm $export_symbols export_symbols="$objdir/$libname.exp"
$run eval "$export_symbols_cmd" $rm $export_symbols
eval cmd=\"$export_symbols_cmd\"
eval "$cmd"
if test -n "$export_symbols_regex"; then
egrep -e "$export_symbols_regex" "$export_symbols" > "$export_symbols"T
$mv "$export_symbols"T "$export_symbols"
fi
fi
fi fi
if test -n "$include_expsyms"; then if test -n "$include_expsyms"; then
$run $echo "X$include_expsyms" | $SP2NL >> $export_symbols $run $echo "X$include_expsyms" | $SP2NL >> "$export_symbols"
fi fi
# Do each of the archive commands. # Do each of the archive commands.