Copyright (C) 2000-2012 |
GNU Info (libtool.info)Porting inter-library dependenciesPorting inter-library dependencies support ------------------------------------------ Since version 1.2c, libtool has re-introduced the ability to do inter-library dependency on some platforms, thanks to a patch by Toshio Kuratomi <badger@prtr-13.ucsc.edu>. Here's a shortened version of the message that contained his patch: The basic architecture is this: in `libtool.m4', the person who writes libtool makes sure `$deplibs' is included in `$archive_cmds' somewhere and also sets the variable `$deplibs_check_method', and maybe `$file_magic_cmd' when `deplibs_check_method' is file_magic. `deplibs_check_method' can be one of five things: `file_magic [REGEX]' looks in the library link path for libraries that have the right libname. Then it runs `$file_magic_cmd' on the library and checks for a match against REGEX using `egrep'. When FILE_MAGIC_TEST_FILE is set by `libtool.m4', it is used as an argument to `$file_magic_cmd' in order to verify whether the regular expression matches its output, and warn the user otherwise. `test_compile' just checks whether it is possible to link a program out of a list of libraries, and checks which of those are listed in the output of `ldd'. It is currently unused, and will probably be dropped in the future. `pass_all' will pass everything without any checking. This may work on platforms in which code is position-independent by default and inter-library dependencies are properly supported by the dynamic linker, for example, on DEC OSF/1 3 and 4. `none' It causes deplibs to be reassigned deplibs="". That way `archive_cmds' can contain deplibs on all platforms, but not have deplibs used unless needed. `unknown' is the default for all systems unless overridden in `libtool.m4'. It is the same as `none', but it documents that we really don't know what the correct value should be, and we welcome patches that improve it. Then in `ltmain.in' we have the real workhorse: a little initialization and postprocessing (to setup/release variables for use with eval echo libname_spec etc.) and a case statement that decides which method is being used. This is the real code... I wish I could condense it a little more, but I don't think I can without function calls. I've mostly optimized it (moved things out of loops, etc) but there is probably some fat left. I thought I should stop while I was ahead, work on whatever bugs you discover, etc before thinking about more than obvious optimizations. automatically generated by info2www version 1.2.2.9 |