* config/ltmain.m4sh: Make sure that we $show what we will $run,
[libtool.git] / TODO
blobef1c59fa6eecee3702c42a1078fa85f6cd664c09
1 GNU Libtool
2 ***********
4 1. In the near future
5 =====================
7 1.1. libtool
8 ------------
10 * Rather than looking up the linker's hardcode characteristics in a
11   table of shell code, use objdump or equivalent to probe a test program
12   at configure time.
14 * Eliminate the warnings from autoconf -Wobsolete.
16 * Hook the various language dependencies into the autoconf _AC_LANG
17   framework.
19 * We could have an option to hardcode paths into libraries, as well as
20   binaries: `... -Wl,-soname -Wl,/tmp/libtest.so.0 ...'.  This is not
21   possible on all platforms, and is in part obviated by the ability of
22   linking libtool libraries specified with -lname, but it might still
23   be desirable.
25 * Lists of exported symbols should be stored in the pseudo library
26   so that the size of lt_preloaded_symbols can be reduced.
28 * Have some option to tell libtool not to include -L flags that point
29   into a certain tree in the dependence list of an installed library.
30   For example: -L-$top_builddir would let one link with libtool
31   libraries in sibling subdirectories within a project, using the -L
32   notation, without getting builddir pathnames ever mentioned in .la
33   files that get installed.
35 * Eric Lemings <elemings@cyberia.lemings.com> writes:
36   Because of a growing number of config scripts for packages in GNOME 1.2
37   (e.g. glib-config, xml-config, orbit-config. etc), development of GNOME
38   2.0 spawned a separate tool called pkg-config that allows all packages
39   to use one tool rather than several different scripts to query compile
40   flags, link flags, and other configuration data.
42   The functionality of pkg-config seems to me to have a lot of overlap
43   with the goals of libtool.  I was wondering if anyone had considered
44   adding an eighth mode to libtool that just queries the installed
45   library for the same information that pkg-config provides.  Since
46   most packages that use pkg-config also use libtool, I think this
47   would be a good way to reduce maintainer and developer dependencies.
49 1.2. libtldl
50 ------------
52 * Fix the following bugs in libltdl:
53  - error reporting of tryall_dlopen():
54    if the file actually doesn't exist (stat() fails or it wasn't dlpreopened)
55    -> report `file not found'
56    if it cannot be loaded (e.g. due to missing dependencies)
57    -> report dlerror
58     open question: which error should be reported if all dlloaders fail
59     or if a specific module type can only be loaded by one of them, how report its dlerror?
60    Also report dlerror() for dlclose and dlsym if available
61  - Make sure that the dependency_libs of a dlpreopened module won't be loaded.
64 2. In the future
65 ================
67 2.1. Documentation
68 ------------------
70 * Need to finalize the documentation, and give a specification of
71   `.la' files so that people can depend on their format.  This would be
72   a good thing to put before the maintainance notes.
74 2.2. test suite
75 ---------------
77 * Rewrite the whole thing in Autotest.  This will enable us to remove
78   all the tests/*demo noise, and duplication; and thus speed up bootstrap
79   and make writing new tests a whole lot more pleasant.
81 * We should include tests with convenience libraries and reloadable
82   objects in the testsuite.
84 * Write a test case for linkage with gnu ld scripts (per 2004-08-25 patch
85   from Paolo Bonzini).
87 2.3. libtool
88 ------------
90 * If not cross-compiling, have the static flag test run the resulting
91   binary to make sure everything works.
93 * Another form of convenience library is to have undocumented utility
94   libraries, where only the shared version is installed.
96 * We could use libtool object convenience libraries that resolve
97   symbols to be included in a libtool archive.  This would require some
98   sort of -whole-archive option, as well.
100 * Currently, convenience libraries (.al) are built from .lo objects,
101   except when --disable-shared.  When we can build both shared and
102   static libraries, we should probably create a .al out of .lo objects
103   and also a .a out of .o objects.  The .al would only be used to create
104   shared libraries, whereas the .a would be used for creating static
105   libraries and programs.  We could also explicitly support `empty'
106   convenience libraries, that behave as macros that expand to a set of
107   -Rs, -Ls and -ls switches.
109 * Filenames containing shell meta-characters are not properly handled
110   by libtool.  Compiling a file named "a;b.c", for example, fails.
112 * We could introduce a mechanism to allow for soname rewriting, to
113   ease multi-libc support.  Installers could specify a prefix, suffix or
114   sed command to modify the soname, and libtool would create the
115   corresponding link.  This would allow for rebuilding a library with
116   the same version number, but depending on different versions of libc,
117   for example.  In the future, we might even have an option to encode
118   the sonames of all dependencies of a library into its soname.
120 2.4. libtool autoconf macros
121 ----------------------------
123 * The definitions for AC_LTDL_SHLIBEXT, AC_LTDL_SHLIBPATH and
124   AC_LTDL_SYSSEARCHPATH  should not rely on the _LT_AC_LTCONFIG_HACK
125   macro.  This involves moving the code which sets the variables
126   library_names_spec, shlibpath_var and sys_lib_dlsearch_path_spec from
127   into a separate macro, and AC_REQUIRING the newly extracted macro in the
128   respective ltdl.m4 macros.
130 2.5. libltdl
131 ------------
133 * Try to find a work-around for -[all-]static and libltdl on platforms
134   that will fail to find dlopening functions in this case.  Maybe
135   creating an alternate libltdl that provides only for dlpreopening, or
136   creating an additional static library to provide dummy implementations
137   of the functions that can't be linked statically.  This could hardly
138   be made completely transparent, though.
140 2.6. win32 support
141 ------------------
143 * Arrange that EXEEXT suffixes are stripped from wrapper script names
144   only when needed, and that a timestamp file or a wrapper program is
145   created with the EXEEXT suffix, so that `make' doesn't build it every
146   time.
148 * Figure out how to use data items in dlls with win32.
149   The difficult part is compiling each object which will be linked with an
150   import lib differently than if it will be linked with a static lib.  This
151   will almost definitely require that automake pass some hints about linkage
152   in to each object compilation line.
154 * jeffdb@goodnet.com writes:
155   all you need to do for mutually dependent .dll's is to create an implib from
156   a .def file so it appears that we might need to detect and handle mutual
157   dependencies specially on win32 =(O|
160 3. Wish List
161 ============
163 * Maybe implement full support for other orthogonal library types
164   (libhello_g, libhello_p, 64 vs 32-bit ABI's, etc).  Make these types
165   configurable.
167 * Perhaps the iuse of libltdl could be made cleaner by allowing
168   registration of hook functions to call at various points.  This would
169   hopefully free the user from having to maintain a parallel module
170   list with user data.  This would likely involve being able to carry
171   additional per user module data in the lt_dlmodule structure -- perhaps
172   in the form of an associative array keyed by user name?
175 -- 
176 Copyright (C) 2004 Free Software Foundation, Inc.
178 The canonical source of this file is maintained with the
179 GNU Libtool package.  Report bugs to bug-libtool@gnu.org.
181 GNU Libtool is free software; you can redistribute it and/or
182 modify it under the terms of the GNU General Public License as
183 published by the Free Software Foundation; either version 2
184 of the License, or (at your option) any later version.
186 As a special exception to the GNU General Public License,
187 if you distribute this file as part of a program or library that
188 is built using GNU libtool, you may include it under the same
189 distribution terms that you use for the rest of that program.
191 GNU Libtool is distributed in the hope that it will be useful,
192 but WITHOUT ANY WARRANTY; without even the implied warranty of
193 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
194 General Public License for more details.
196 You should have received a copy of the GNU General Public License
197 along with GNU Libtool; if not, write to the Free Software
198 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
199 02111-1307  USA
202 Local Variables:
203 mode: text
204 fill-column: 72
205 End: