Hi Gary, * Gary V. Vaughan wrote on Mon, Sep 13, 2010 at 05:24:51AM CEST: > On 12 Sep 2010, at 21:12, Ralf Wildenhues wrote: > > OK to push? > > Okay with nits addressed.
Thanks for the review. > > @cindex libtool libraries > > -...@cindex @samp{.la} files > > +...@cindex @file{.la} files > > Again, the libtool control file name (@samp{.la} suffix) differs from > > Why the inconsistency between @file in the cindex entry, and @samp > in the body? Oversight. > > If the @var{output-file} ends in @samp{.la}, then a libtool library is > > -created, which must be built only from library objects (@samp{.lo} files). > > +created, which must be built only from library objects (@file{.lo} files). > > Same here: @samp{.la} vs @file{.lo}. If you have good reason to change > to @file, please do it everywhere. Yep. I skimmed through the whole file now. > > -...@deftypefun {const char *}lt_dlgetsearchpath (void) > > +...@deftypefun {const char *} lt_dlgetsearchpath (void) > > Return the current user-defined library search path. > > @end deftypefun > > Might be nicer to split spacing fixes into a separate commit than > @samp to @file conversions. Indeed. I'm thus pushing the following two patches. Cheers, Ralf docs: @file and @option markup fixes. * doc/libtool.texi (Creating object files, Linking libraries) (Linking executables, Link mode, Finish mode, Autoconf macros) (Using Automake, Inter-library dependencies, Dlpreopening) (Linking with dlopened modules, Finding the dlname) (Libltdl interface, Test descriptions, Multiple dependencies): Add @option where needed, replace @samp with @file as appropriate. diff --git a/doc/libtool.texi b/doc/libtool.texi index 9314612..cd9270e 100644 --- a/doc/libtool.texi +++ b/doc/libtool.texi @@ -510,11 +510,11 @@ to the compiler to tell it to generate PIC rather than the standard position-dependent code. @cindex library object file -...@cindex @samp{.lo} files +...@cindex @file{.lo} files @cindex object files, library Since this is a library implementation detail, libtool hides the complexity of PIC compiler flags and uses separate library object files -(the PIC one lives in the @sa...@value{objdir}} subdirectory and the +(the PIC one lives in the @fi...@value{objdir}} subdirectory and the static one lives in the current directory). On systems without shared libraries, the PIC library object files are not created, whereas on systems where all code is PIC, such as AIX, the static ones are not @@ -533,7 +533,7 @@ a23$ @end example Note that libtool silently creates an additional control file on each -...@samp{compile} invocation. The @samp{.lo} file is the libtool object, +...@samp{compile} invocation. The @file{.lo} file is the libtool object, which Libtool uses to determine what object file may be built into a shared library. On @samp{a23}, only static libraries are supported so the library objects look like this: @@ -564,7 +564,7 @@ gcc -g -O -c foo.c -o foo.o >/dev/null 2>&1 burger$ @end example -Note that Libtool automatically created @sa...@value{objdir}} directory +Note that Libtool automatically created @fi...@value{objdir}} directory upon its first execution, where PIC library object files will be stored. Since @samp{burger} supports shared libraries, and requires PIC @@ -585,7 +585,7 @@ pic_object='@value{objdir}/foo.o' non_pic_object='foo.o' @end example -...@cindex -no-suppress, libtool compile mode option +...@cindex @option{-no-suppress}, libtool compile mode option Notice that the second run of GCC has its output discarded. This is done so that compiler warnings aren't annoyingly duplicated. If you need to see both sets of warnings (you might have conditional code @@ -628,9 +628,9 @@ shared libraries, libtool simply acts as a wrapper for the system @command{ar} (and possibly @code{ranlib}) commands. @cindex libtool libraries -...@cindex @samp{.la} files -Again, the libtool control file name (@samp{.la} suffix) differs from -the standard library name (@samp{.a} suffix). The arguments to +...@cindex @file{.la} files +Again, the libtool control file name (@file{.la} suffix) differs from +the standard library name (@file{.a} suffix). The arguments to libtool are the same ones you would use to produce an executable named @file{libhello.la} with your compiler (@pxref{Link mode}): @@ -646,7 +646,7 @@ a23$ @end example Aha! Libtool caught a common er...@dots{} trying to build a library -from standard objects instead of special @samp{.lo} object files. This +from standard objects instead of special @file{.lo} object files. This doesn't matter so much for static libraries, but on shared library systems, it is of great importance. (Note that you may replace @file{libhello.la} with @file{libhello.a} in which case libtool won't @@ -700,7 +700,7 @@ make it easier to clean up the build directory, and to help ensure that other programs fail horribly if you accidentally forget to use libtool when you should. -Again, you may want to have a look at the @samp{.la} file in order +Again, you may want to have a look at the @file{.la} file in order to see what Libtool stores in it. In particular, you will see that Libtool uses this file to remember the destination directory for the library (the argument to @option{-rpath}) as well as the dependency @@ -742,7 +742,7 @@ burger$ Libtool's way is almost the s...@footnote{however, you should avoid using @option{-L} or @option{-l} flags to link against an uninstalled libtool -library. Just specify the relative path to the @samp{.la} file, such as +library. Just specify the relative path to the @file{.la} file, such as @file{../intl/libintl.la}. This is a design decision to eliminate any ambiguity when linking against uninstalled shared libraries.} (@pxref{Link mode}): @@ -1481,7 +1481,7 @@ Allow symbols from @var{output-file} to be resolved with @code{dlsym} @item -export-symbols @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 @file{.sym} and must contain the name of one symbol per line. This option has no effect on some platforms. By default all symbols are exported. @@ -1545,9 +1545,9 @@ If @var{output-file} is a library, it will eventually be installed in the run-time path of the program. On platforms that don't support hardcoding library paths into executables and only search PATH for shared libraries, such as when @var{output-file} is a Windows (or -other PE platform) DLL, the @samp{.la} control file will be installed in +other PE platform) DLL, the @file{.la} control file will be installed in @var{libdir}, but see @option{-bindir} above for the eventual destination -of the @samp{.dll} or other library file itself. +of the @file{.dll} or other library file itself. @item -R @var{libdir} If @var{output-file} is a program, add @var{libdir} to its run-time @@ -1616,18 +1616,18 @@ Pass a linker-specific flag directly to the linker. Pass a link-specific flag to the compiler driver (@code{CC}) during linking. @end table -If the @var{output-file} ends in @samp{.la}, then a libtool library is -created, which must be built only from library objects (@samp{.lo} files). +If the @var{output-file} ends in @file{.la}, then a libtool library is +created, which must be built only from library objects (@file{.lo} files). The @option{-rpath} option is required. In the current implementation, libtool libraries may not depend on other uninstalled libtool libraries (@pxref{Inter-library dependencies}). -If the @var{output-file} ends in @samp{.a}, then a standard library is +If the @var{output-file} ends in @file{.a}, then a standard library is created using @code{ar} and possibly @code{ranlib}. @cindex partial linking @cindex linking, partial -If @var{output-file} ends in @samp{.o} or @samp{.lo}, then a reloadable object +If @var{output-file} ends in @file{.o} or @file{.lo}, then a reloadable object file is created from the input files (generally using @samp{ld -r}). This method is often called @dfn{partial linking}. @@ -1736,7 +1736,7 @@ compilation environment after they were built in a cross-compilation environment. Cross-compilation environments may rely on recent libtool features, and running libtool in finish mode will make it easier to work with older versions of libtool. This task is performed whenever -the @var{mode-arg} is a @samp{.la} file. +the @var{mode-arg} is a @file{.la} file. @node Uninstall mode @section Uninstall mode @@ -1875,7 +1875,7 @@ default library search path. Define the preprocessor symbol @samp{LT_MODULE_EXT} to the extension used for runtime loadable modules. If you use libltdl to open modules, then you can simply use the libtool library extension, -...@samp{.la}. +...@file{.la}. @end defmac @defmac LT_SYS_MODULE_PATH @@ -1959,7 +1959,7 @@ hell_static_LDFLAGS = -static @end example You may use the @samp{program_LDFLAGS} variable to stuff in any flags -you want to pass to libtool while linking @samp{program} (such as +you want to pass to libtool while linking @file{program} (such as @option{-static} to avoid linking uninstalled shared libtool libraries). Building a libtool library is almost as triv...@dots{} note the use of @@ -3264,7 +3264,7 @@ library systems and simple dynamic library systems. Some platforms, such as AIX, do not even allow you this flexibility. In order to build a shared library, it must be entirely self-contained (that is, have references only to symbols that are found -in the @samp{.lo} files or the specified @samp{-l} libraries), and you +in the @file{.lo} files or the specified @samp{-l} libraries), and you need to specify the @option{-no-undefined} flag. By default, libtool builds only static libraries on these kinds of platforms. @@ -3480,7 +3480,7 @@ module opened in this way, call @var{func}. @noindent To open all of the modules preloaded into @file{libhell.la} -(presumably from within the @samp{libhell.a} initialisation code): +(presumably from within the @file{libhell.a} initialisation code): @example #define preloaded_symbols lt_libhell_LTX_preloaded_symbols @@ -3609,7 +3609,7 @@ intrinsics_la_LIBADD = ../libloader/libinterface.la cd ../libloader && $(MAKE) $(AM_MAKEFLAGS) libinterface.la @end example -...@cindex -weak option +...@cindex @option{-weak} option For a more complex example, see the sources of @file{libltdl} in the Libtool distribution, which is built with the help of the @option{-weak} option. @@ -3625,7 +3625,7 @@ Unfortunately, because of the variation in library names, your package needs to determine the correct file to dlopen. The most straightforward and flexible implementation is to determine the -name at runtime, by finding the installed @samp{.la} file, and searching +name at runtime, by finding the installed @file{.la} file, and searching it for the following lines: @example @@ -3880,8 +3880,8 @@ If the file with the file name @var{filename} cannot be found libltdl tries to append the following extensions: @enumerate 1 -...@item the libtool archive extension @samp{.la} -...@item the extension used for native dynamically loadable modules on the host platform, e.g., @samp{.so}, @samp{.sl}, etc. +...@item the libtool archive extension @file{.la} +...@item the extension used for native dynamically loadable modules on the host platform, e.g., @file{.so}, @file{.sl}, etc. @end enumerate This lookup strategy was designed to allow programs that don't @@ -5315,7 +5315,7 @@ library works properly. @item link-2.test @pindex link-2.test -This test makes sure that files ending in @samp{.lo} are never linked +This test makes sure that files ending in @file{.lo} are never linked directly into a program file. @item nomode.test @@ -5354,7 +5354,7 @@ shell scripts. @item suffix.test @pindex suffix.test When other programming languages are used with libtool (@pxref{Other -languages}), the source files may end in suffixes other than @samp{.c}. +languages}), the source files may end in suffixes other than @file{.c}. This test validates that libtool can handle suffixes for all the file types that it supports, and that it fails when the suffix is invalid. @@ -5871,7 +5871,7 @@ in cases where it is necessary. On all known systems, building a static library can be accomplished by running @kbd{ar cru l...@var{name}.a @var{obj1}.o @var{obj2}.o @dots{}}, -where the @samp{.a} file is the output library, and each @samp{.o} file is an +where the @file{.a} file is the output library, and each @file{.o} file is an object file. On all known systems, if there is a program named @command{ranlib}, then it doc: avoid long lines in input and output, indexing fixes. * doc/libtool.texi (Linking libraries) (Module loaders for libltdl): Manually line-wrap examples, to avoid long lines. (Libltdl interface, User defined module data) (Module loaders for libltdl): Wrap long @deftypefun input lines using trailing '@'. Use @deftypefun rather than @deftp where appropriate, and add spaces in @deftypefun lines to fix the index entries generated from these lines. (Cheap tricks): Use @smallexample rather than @example, to avoid long lines. diff --git a/doc/libtool.texi b/doc/libtool.texi index cd9270e..a3555dc 100644 --- a/doc/libtool.texi +++ b/doc/libtool.texi @@ -636,8 +636,8 @@ libtool are the same ones you would use to produce an executable named @example a23$ @kbd{libtool --mode=link gcc -g -O -o libhello.la foo.o hello.o} -*** Warning: Linking the shared library libhello.la against the non-libtool -*** objects foo.o hello.o is not portable! +*** Warning: Linking the shared library libhello.la against the +*** non-libtool objects foo.o hello.o is not portable! ar cru .libs/libhello.a ranlib .libs/libhello.a creating libhello.la @@ -4039,7 +4039,7 @@ Replace the current user-defined library search path with by @code{LT_PATHSEP_CHAR}. Return 0 on success. @end deftypefun -...@deftypefun {const char *}lt_dlgetsearchpath (void) +...@deftypefun {const char *} lt_dlgetsearchpath (void) Return the current user-defined library search path. @end deftypefun @@ -4175,7 +4175,10 @@ Some of the internal information about each loaded module that is maintained by libltdl is available to the user, in the form of this structure: -...@deftypefn {Type} {struct} lt_dlinfo @{ @w{char *...@var{filename};} @w{char *...@var{name};} @w{int @var{ref_count};} @w{int @var{is_resident};} @w{int @var{is_symglobal};} @w{int @var{is_symlocal};}...@} +...@deftypefn {Type} {struct} lt_dlinfo @{ @w{char *...@var{filename};} @ + @w{char *...@var{name};} @w{int @var{ref_count};} @ + @w{int @var{is_resident};} @w{int @var{is_symglobal};} @ + @w{int @var{is_symlocal};}...@} @code{lt_dlinfo} is used to store information about a module. The @var{filename} attribute is a null-terminated character string of the real module file name. If the module is a libtool module then @@ -4205,7 +4208,8 @@ The opaque type used to hold the module interface details for each registered libltdl client. @end deftp -...@deftp {Type} int lt_dlhandle_interface (@w{lt_dlhandle @var{handle},} @w{const char *...@var{id_string}}) +...@deftypefn {Type} int lt_dlhandle_interface (@w{lt_dlhandle @var{handle},} @ + @w{const char *...@var{id_string}}) Functions of this type are called to check that a handle conforms to a library's expected module interface when iterating over the global handle list. You should be careful to write a callback function of @@ -4238,9 +4242,10 @@ my_interface_cb (lt_dlhandle handle, const char *id_string) return 0; @} @end example -...@end deftp +...@end deftypefn -...@deftypefun lt_dlinterface_id lt_dlinterface_register (@w{const char *...@var{id_string}}, @w{lt_dlhandle_interface *...@var{iface}}) +...@deftypefun lt_dlinterface_id lt_dlinterface_register @ + (@w{const char *...@var{id_string}}, @w{lt_dlhandle_interface *...@var{iface}}) Use this function to register your interface validator with libltdl, and in return obtain a unique key to store and retrieve per-module data. You supply an @var{id_string} and @var{iface} so that the resulting @@ -4253,7 +4258,9 @@ all modules will be matched. Release the data associated with @var{iface}. @end deftypefun -...@deftypefun int lt_dlhandle_map (@w{lt_dlinterface_id @var{iface}}, @w{int (*...@var{func}) (lt_dlhandle @var{handle}, void * @var{data})}, @w{void * @var{data}}) +...@deftypefun int lt_dlhandle_map (@w{lt_dlinterface_id @var{iface}}, @ + @w{int (*...@var{func}) (lt_dlhandle @var{handle}, void * @var{data})}, @ + @w{void * @var{data}}) For each module that matches @var{iface}, call the function @var{func}. When writing the @var{func} callback function, the argument @var{handle} is the handle of a loaded module, and @@ -4264,7 +4271,8 @@ return that non-zero value. Otherwise 0 is eventually returned when @var{func} has been successfully called for all matching modules. @end deftypefun -...@deftypefun lt_dlhandle lt_dlhandle_iterate (@w{lt_dlinterface_id @var{iface}}, @w{lt_dlhandle @var{place}}) +...@deftypefun lt_dlhandle lt_dlhandle_iterate (@w{lt_dlinterface_id @ + @var{iface}}, @w{lt_dlhandle @var{place}}) Iterate over the module handles loaded by @var{iface}, returning the first matching handle in the list if @var{place} is @code{NULL}, and the next one on subsequent calls. If @var{place} is the last element @@ -4455,7 +4463,8 @@ register_myloader (void) dlloader.dlloader_data = (lt_user_data)myloader_function; /* Add my loader as the default module loader. */ - if (lt_dlloader_add (lt_dlloader_next (NULL), &dlloader, "myloader") != 0) + if (lt_dlloader_add (lt_dlloader_next (NULL), &dlloader, + "myloader") != 0) return ERROR; return OK; @@ -4475,7 +4484,8 @@ during the initialisation phase. libltdl provides the following functions for writing your own module loaders: -...@deftypefun int lt_dlloader_add (@w{lt_dlloader *...@var{place},} @w{lt_user_dlloader *...@var{dlloader},} @w{const char *...@var{loader_name}}) +...@deftypefun int lt_dlloader_add (@w{lt_dlloader *...@var{place},} @ + @w{lt_user_dlloader *...@var{dlloader},} @w{const char *...@var{loader_name}}) Add a new module loader to the list of all loaders, either as the last loader (if @var{place} is @code{NULL}), else immediately before the loader passed as @var{place}. @var{loader_name} will be returned by @@ -4504,7 +4514,7 @@ if (lt_dlloader_remove ("myloader") != 0) @end example @end deftypefun -...@deftypefun {lt_dlloader *}lt_dlloader_next (@w{lt_dlloader *...@var{place}}) +...@deftypefun {lt_dlloader *} lt_dlloader_next (@w{lt_dlloader *...@var{place}}) Iterate over the module loaders, returning the first loader if @var{place} is @code{NULL}, and the next one on subsequent calls. The handle is for use with @code{lt_dlloader_add}. @@ -4516,7 +4526,7 @@ if (lt_dlloader_add (lt_dlloader_next (NULL), myloader) != 0) @end example @end deftypefun -...@deftypefun {lt_dlloader *}lt_dlloader_find (@w{const char *...@var{loader_name}}) +...@deftypefun {lt_dlloader *} lt_dlloader_find (@w{const char *...@var{loader_name}}) Return the first loader with a matching @var{loader_name} identifier, or else @code{NULL}, if the identifier is not found. @@ -4533,14 +4543,14 @@ if (lt_dlloader_add (lt_dlloader_find ("dlopen"), myloader) != 0) @end example @end deftypefun -...@deftypefun {const char *}lt_dlloader_name (@w{lt_dlloader *...@var{place}}) +...@deftypefun {const char *} lt_dlloader_name (@w{lt_dlloader *...@var{place}}) Return the identifying name of @var{place}, as obtained from @code{lt_dlloader_next} or @code{lt_dlloader_find}. If this function fails, it will return @code{NULL} and set an error for retrieval with @code{lt_dlerror}. @end deftypefun -...@deftypefun {lt_user_data *}lt_dlloader_data (@w{lt_dlloader *...@var{place}}) +...@deftypefun {lt_user_data *} lt_dlloader_data (@w{lt_dlloader *...@var{place}}) Return the address of the @code{dlloader_data} of @var{place}, as obtained from @code{lt_dlloader_next} or @code{lt_dlloader_find}. If this function fails, it will return @code{NULL} and set an error for @@ -6875,7 +6885,7 @@ tree, @code{/home/src/libtool/libtool} is a libtool script that has been configured for your platform, and @code{~/bin} is a directory in your @env{PATH}: -...@example +...@smallexample trick$ cd ~/bin trick$ sed 's%^\(macro_version=\).*$%\1@@VERSION@@%; s%^\(macro_revision=\).*$%\1@@package_revision@@%; @@ -6889,7 +6899,7 @@ Copyright (C) 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. trick$ -...@end example +...@end smallexample @end itemize The output of the final @samp{libtool --version} command shows that the