2004-12-30 Ralf Wildenhues * config/getopt.m4sh (func_version, func_usage, func_help): Use `$SED -n' instead of `$SED RANGE {..}; d' as AIX sed cannot handle the latter. (func_help): start autoconf and automake in subshells to avoid error messages from ash or Bourne shell if not available. 2004-12-28 Ralf Wildenhues * config/general.m4sh (func_quote_for_eval): Move backslash to beginning of character class, to work around old Bash bug. (func_quote_for_expand): Also test to avoid unnecessary fork. 2004-12-28 Ralf Wildenhues , Gary V. Vaughan * Makefile.am, bootstrap, clcommit.m4sh, libtoolize.m4sh, config/ltmain.m4sh: Replace `set --' with `set dummy [...]; shift' for portability. * tests/sh.test: Test for this. 2004-12-28 Ralf Wildenhues * libtoolize.m4sh, config/ltmain.m4sh (most functions): New variable $opt_debug is either `:' or `set -x' depending on --debug. Execute at most function entries to cater for ksh which resets `-x'. * tests/defs.m4sh: Ditto for VERBOSE=debug. * m4/libtool.m4 (_LT_LINKER_SHLIBS) [cygwin, mingw, pw32]: _LT_TAGVAR missing for `fix_srcfile_path'. [sysv4, sysv5]: _LT_TAGVAR missing for `export_dynamic_flag_spec'. * doc/libtool.texi (all over): Use @option and @command. Some more minor formatting updates, typos. * m4/libtool.m4 (_LT_PROG_ECHO_BACKSLASH): Fix variable quoting; allows lt_ECHO to match --fallback-echo again. * config/ltmain.m4sh (func_extract_archives): Not all shells grok `read -r' (unnecessary in this case). Reported by Ralf Menzel . * config/general.m4sh: New variable quote_scanset... (func_quote_for_eval, func_quote_for_expand): ...use it to work around SunOS ksh `case' backslash-escaping bug: protect character class by variable expansion. Reported by Alexander Kurz . * tests/quote.test: Restart under the correct shell (the one $ECHO was computed for). 2004-12-21 Ralf Wildenhues * libltdl/lt__dirent.c: Include lt__private.h. * libltdl/libltdl/lt__private.h: Include lt__strl.h. 2004-12-20 Peter O'Gorman * config/ltmain.m4sh (func_extract_archives) (func_extract_an_archive): On darwin, uniq can not take the flags -cd together, thanks to Ralf for the fix, also ar does not accept N, so we use the fact that ar x libfoo.a foo.o will always extract the first foo.o in the archive and we then delete foo.o from the archive, which will also delete only the first foo.o, then rinse and repeat. Also add markers for the testuite. * m4/libtool.m4 (_LT_CONFIG): Add a marker so that we can use a sed expression to find the shell functions in libtool. * tests/functests.at: Test this feature. * tests/testsuite.at: Add the test. * tests/Makefile.am: Add the test. 2004-12-20 Ralf Wildenhues * libtoolize.m4sh: Install `install-sh' as well, needed for configure. * Makefile.am, Makefile.maint: Install, update it. * NEWS, doc/libtool.texi (Distributing): Document it. Reported by Ross Boylan . * m4/libtool.m4 (_LT_LINKER_SHLIBS) [solaris]: Add '${wl}-z ${wl}text' to archive_cmds and archive_expsyms_cmds. I.e., do not allow nopic in shared libraries. * m4/libtool.m4 (_LT_LINKER_SHLIBS) [solaris]: Change no_undefined_flag back to ' -z defs'. Problems with linking against libgcc.a will have to be resolved differently. * tests/demo-nopic.test [solaris, sunos]: Skip test. 2004-12-18 Ralf Wildenhues * libtool.m4 [linux] (_LT_COMPILER_PIC, _LT_LANG_CXX_CONFIG): Match icpc* and ecpc* (ia64 version of icpc) instead of only icpc. * libltdl/lt__dirent.c (opendir) [mingw]: Fix write of constant strings past end of buffer. (opendir, readdir): Fix read past end of buffer. 2004-12-17 Ralf Wildenhues * HACKING: Update list of non-Libtool-owned files. 2004-12-17 Akim Demaille * libtoolize.m4sh (func_copy_all_from_path): Remove spurious eval. 2004-12-16 Ralf Wildenhues * libltdl/ltdl.c (trim): Return error rather than do bogus null pointer arithmetic when parsing a malformed .la file. 2004-12-13 Bob Friesenhahn * libltdl/lt__strl.c, libltdl/libltdl/lt__strl.h: New files to emulate strlcat and strlcpy, which support size-bounded string copying and concatenation for improved security. * libltdl/Makefile.am: Optionally build source files libltdl/lt__strl.c and libltdl/libltdl/lt__strl.h. * m4/ltdl.m4 (LTDL_INIT): Add checks for strlcat and strlcpy. 2004-12-13 Albert Chin-A-Young * libtool.m4 (_LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG): Append -G to link command-line on AIX to honor -brtl on command-line (runtime linking). Already done for IBM C/C++ compilers. 2004-12-12 Patrick Welche * configure.ac: Fix aclocaldir to use ${datadir}, not ${prefix}. Necessary for removal of old libtool.m4 files. 2004-12-10 Ralf Wildenhues * config/ltmain.m4sh (func_extract_archive): Send stderr of $NM to /dev/null. Reported by Martin Waitz . 2004-12-09 Albert Chin-A-Young * config/ltmain.m4sh: Preserve -model [arg] option, used with the Tru64 UNIX C++ compiler. This option selects the layout of C++ classes, name mangling, and exception handling. 2004-12-09 Ralf Wildenhues * config/ltmain.m4sh (func_mode_finish) [solaris]: Fix [] escaping bug. * config/ltmain.m4sh (all over the map): Make use of func_basename and func_dirname in most occasions. * m4/libtool.m4 (_LT_CHECK_XSI_SHELL, _LT_PROG_XSI_SHELLFNS): New macros to detect at `configure' time whether the shell supports some XSI extensions and to copy appropriate versions of new shell functions into `libtool' through `config.status'. Copied functions are Bourne and XSI variants of func_basename, func_dirname (a variant of `dirname' suitable for libtool). (_LT_SETUP): Require _LT_CHECK_XSI_SHELL. (_LT_CONFIG): Use _LT_PROG_XSI_SHELLFNS to insert into `libtool' at marker. * config/ltmain.m4sh: Set marker for insertion of shell functions. * config/general.m4sh (func_quote_for_eval): Only fork if the substitution matches. 2004-12-03 Gary V. Vaughan * TODO: Paste Peter's summary of the TODO thread starting at http://lists.gnu.org/archive/html/libtool/2004-11/msg00130.html. 2004-12-02 Bob Friesenhahn * config/ltmain.m4sh: Remove code which is no longer needed now that temp_rpath only contains fully-qualified elements. 2004-11-30 Ralf Wildenhues * config/general.m4sh: basename sed-subst is anchored and thus does not need the `g' flag. (func_quote_for_eval): Return both the possibly double-quoted backslashified as well as only the backslashified argument. * config/ltmain.m4sh (func_mode_link): Use both return values, to save another sed_quote_subst application per cmdline arg. 2004-11-29 Ralf Wildenhues * config/ltmain.m4sh (func_lalib_p): Update function description. (func_lalib_unsafe_p): New function with same functionality but written without forks; this function is safe to use for cases where the argument either does not exist or is required to be a lalib for correct operation. * NEWS: Mention the fact that stdin is not to be used. * config/ltmain.m4sh (func_mode_execute, func_mode_install) (func_mode_link): Use func_lalib_unsafe_p where appropriate. (func_mode_execute): For the program wrapper, use func_ltwrapper_p instead of func_lalib_p. * m4/libtool.m4 (_LT_LINKER_SHLIBS): Treat linux-dietlibc with the `diet' compiler wrapper (as opposed to the `diet-dyn' wrapper) as a static-only platform. * NEWS: Updated. * libltdl/ltdl.c (trim): Use memcpy instead of strncpy here, to avoid problems with non-conforming strncpy. This is safe here. * m4/ltdl.m4 (LT_LIB_DLLOAD): Define HAVE_LIBDLLOADER if we have a dlloader to preload. * libltdl/ltdl.c (lt_dlinit): Only preload if HAVE_LIBDLLOADER, only declare preloaded_symbols then. Fixes libltdl on static platforms. * NEWS: Updated. 2004-11-29 Gary V. Vaughan Add a search path option to libtoolize so that we can run it from the testsuite without pulling in the last installed macros and ltdl sources: * libtoolize.m4sh: Add a -I option to change libtoolize's search path for macro files, and libltdl master sources. (pkgvdatadir, pkgvmacrodir): Renamed... (pkgvdatadirs, pkgvmacrodirs): ...as they can now contain a ':' delimited list of directories. Adjust all callers. (func_copy_all_from_path): New function to search a ':' delimited search path for a directory to copy. (func_serial_update, func_ltmain_update, func_config_update): New first parameter is a filename to search for. srcdir parameter can now be a ':' delimited search path. Adjust all callers. (func_copy_some_files): Ditto. Put srcfile_spec first in parameter list for consistency with other functions. Adjust all callers. (func_copy_cb): func_copy adapter function to call func_copy correctly from func_copy_some_files. (func_filename_path_search): Return the full path to the first occurence of a named file found in a list of directories. * tests/testsuite.at (LIBTOOLIZE): Wrap exported LIBTOOLIZE initialisation in PREPARE_TESTS diversion to stop it being discarded when testsuite is generated. (AT_LIBTOOLIZE): Factor out libtoolize calls, and set search path to find macros and libltdl source files from the source tree. (AT_CHECK_LIBTOOLIZE): Test it. (AT_BOOTSTRAP): Adjust. Split out call to make. * tests/am-subdir.at: Call make explicitly. (Makefile.am): Fix typo in ACLOCAL_AMFLAGS, 2004-11-28 Ralf Wildenhues * config/ltmain.m4sh (func_mode_link): $dlsymsobj is really $symfileobj, bug exposed only in the static preloading case (symfileobj is created, but not linked into output). * tests/demo-relink.test, tests/depdemo-relink.test: SKIP, don't FAIL if no shared libs available in demo/. Do not try to access nonexistent files. * libltdl/loaders/loadlibrary.c: Remove unneeded file-static variable. 2004-11-27 Bob Friesenhahn * config/ltmain.m4sh: Add fully-qualified paths to temp_rpath rather than unqualified paths in order to avoid possible errors when computing the fully-qualified path later. 2004-11-24 Jeff Squyres * m4/libtool.m4 (_LT_COMPILER_PIC, _LT_LINKER_SHLIBS) (_LT_LANG_CXX_CONFIG) [linux]: Support for Portland Group (aka "pgi") compilers. * NEWS, THANKS: Updated. 2004-11-24 Gary V. Vaughan * Makefile.am: Move Autotest rules from here... * tests/Makefile.am: ...to here. * bootstrap: Adjust. Also, create temporary Makefile from tests/Makefile.am so that bootstrap can create the Autotest testsuite. 2004-11-23 Gary V. Vaughan If the user's login shell is something crazy like, oooh, /bin/tcsh, trying to execute bourne shell helper scripts with the `$SHELL /path/to/helper $helper_flags' idiom incase the execute bits were lost by say, eeer, cvs, is gonna blow up in our faces. This changeset tries to save these people from their shells^H^H^H^H^H^H^H^H^Hmselves :-> * tests/defs.m4sh (SHELL): Move definition from here... * config/general.m4sh (SHELL): ...to here. 2004-11-23 Gary V. Vaughan The ltdl.h header is the published interface to libltdl, and is thus not installed to $prefix/include/libltdl. It has always been used with `#include ', so move just that one file back to where it was before: * libltdl/libltdl/ltdl.h: Moved from here... * libltdl/ltdl.h: ...to here. * libltdl/Makefile.am: Adjust. 2004-11-23 Peter O'Gorman Do not require that libtoolize --ltdl=/some/path end in libltdl. Move most libltdl headers to libtldl/libltdl to allow `#include ' to always work: * libltdl/Makefile.am, libltdl/loaders/Makefile.am: Look for includes in the new location. * libltdl/libltdl/lt__alloc.h, libltdl/libltdl/lt__dirent.h, libltdl/libltdl/lt__glibc.h, libltdl/libltdl/lt__private.h, libltdl/libltdl/lt_dlloader.h, libltdl/libltdl/lt_error.h, libltdl/libltdl/lt_system.h, libltdl/libltdl/ltdl.h, libltdl/libltdl/slist.h: Added files, moved from libtdl/. * libltdl/lt__alloc.h, libltdl/lt__dirent.h, libltdl/lt__glibc.h, libltdl/lt__private.h, libltdl/lt_dlloader.h, libltdl/lt_error.h, libltdl/lt_system.h, libltdl/ltdl.h, libltdl/slist.h: Removed, moved to libltdl/libltdl. 2004-11-23 Ralf Wildenhues * doc/libtool.texi (LT_INIT): s/libtool 1.6/libtool 2.0/. (Invoking libtoolize): Fix typo. 2004-11-22 Gary V. Vaughan * config/ltmain.m4sh (func_mode_install): Now that func_mktempdir has been improved, the default directory template is perfectly fine. * doc/libtool.texi (Invoking libtoolize): Improve documentation for use of ACLOCAL_AMFLAGS and AC_CONFIG_MACRO_DIR. 2004-11-22 Ralf Wildenhues * m4/libtool.m4 (_LT_TAG_COMPILER): Document that with_gcc is tag-dependent. * m4/libtool.m4, tests/demo-nopic.test: Undo bogus commit. * config/ltmain.m4sh (func_mode_link), tests/objectlist.test: Make sure the argument to `-objectlist' may contain spaces. 2004-11-19 Gary V. Vaughan * config/m4general.m4sh, config/mailnotify.m4sh, clcommit.m4sh: Updated from cvs-utils--tla--1.0 to allow parallel commits, and use safer tmpfiles. 2004-11-19 Ralf Wildenhues * doc/libtool.texi (Libltdl interface): Typos. * doc/libtool.texi (Libltdl interface): Document public macros LT_PATHSEP_CHAR, LT_DIRSEP_CHAR, use in path descriptions. 2004-11-18 Daniel Reed * m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER) [linux]: Interpret `include' statements in toplevel ld.so.conf file. 2004-11-18 Ralf Wildenhues * m4/libtool.m4 (_LT_LINKER_SHLIBS) [cygwin, mingw, pw32]: tag-protect setting of ld_shlibs. 2004-11-17 Ralf Wildenhues * doc/libtool.texi (Libltdl interface): The path separator is system-dependent. * doc/libtool.texi (Linking static libraries): Typo. * m4/libtool.m4 (_LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG) [aix4/aix5 !ia64]: Set whole_archive_flag_spec to '$convenience' so convenience libs are really added to the link cmdline. 2004-11-17 Mats Rynge * libtool.m4 [linux]: Use only the CC basename in case statment when checking for icc/ecc. Allows for setting CC to the full path to the compiler. * libtool.m4 [solaris]: Added missing 'with linker' flags to -z allextract ... -z defaultextract flags 2004-11-14 Gary V. Vaughan * m4/libtool.m4 (_LT_LINKER_SHLIBS): Typo: s/--rpath/-rpath/g. (_LT_LANG_CXX_CONFIG): Ditto. * configure.ac (APIVERSION): New substituted variable. (pkgvdatadir): Ditto. Versioned data directory. (pkgvmacrodir): Ditto. Versioned aclocal directory. (LN): New check for LN command. * Makefile.am (aclocal_DATA): Replaced with... (pkgvmacro_DATA): ...this. (install-data-local): Remove old shared resources. (install-exec-hook): Make versioned links to executables. (uninstall-hook): Remove versioned files. * libltdl/Makefile.am (ltdldatadir): Redefine in terms of pkgvdatadir. * libltdl/loaders/Makefile.am (ltdldatadir): Ditto. * libtoolize.m4sh: Copy macro files from versioned macro directory instead of shared aclocal directory. * doc/libtool.texi: Document it. * NEWS: Updated. 2004-11-10 Gary V. Vaughan From James Henstridge : * m4/libtool.m4, m4/ltdl.m4, m4/ltoptions.m4: Added commented out empty macro definitions to match each AU_DEFUN to help aclocal from automake-1.4 regexps find the right libtool macro files. 2004-11-10 James E Wilson , Ralf Wildenhues * config/ltmain.m4sh (func_mode_link), tests/Makefile.am, Fix error message with `-objectlist' file that does not exist. * tests/objectlist.test: New test for this. * Makefile.am: config/ltmain.sh is generated by config/ltmain.m4sh. 2004-11-09 Ralf Wildenhues * doc/libtool.texi (Compile mode, Link mode, Libltdl interface, Test descriptions, libtool script contents): Some quote cleanup, more use of texinfo types. * doc/libtool.texi (libtool script contents): echo is now ECHO; mention argument restriction. * doc/libtool.texi (Multiple dependencies): Minor rewording. * doc/libtool.texi (User defined module data, References): indentation and word-wrap cleanup. * doc/libtool.texi (all over): White space cleanup: two spaces at start of sentence, no TABs. 2004-11-09 Gary V. Vaughan , Ralf Wildenhues * doc/libtool.texi (libtool script contents): Fix description of need_lib_prefix. 2004-11-08 Peter Ekberg * config/ltmain.m4sh (func_mode_link): forward thread related flags to dependent applications and libraries by adding them to `inherited_linker_flags'. 2004-11-07 Ralf Wildenhues * m4/ltoptions.m4: Change all references of LT_LIBTOOL_INIT to LT_INIT. 2004-11-05 Peter Ekberg * ltmain.m4sh (cwrappersource): clean up other warning on MinGW. 2004-11-04 Bernhard Fischer , Ralf Wildenhues * m4/ltdl.m4 (LT_SYS_DLOPEN_DEPLIBS), m4/ltoptions.m4 (_LT_SET_OPTIONS), README, README.alpha: Typos. 2004-11-03 Ralf Wildenhues * libtldl/ltdl.c (parse_dotla_file): Fix memleak. * ltmain.m4sh (cwrappersource): Cast isalpha arguments correctly. 2004-11-03 Peter Ekberg * ltmain.m4sh (cwrappersource): clean up warnings and #include errors on MinGW. 2004-11-01 Peter Ekberg * config/ltmain.m4sh (cwrappersource): clean up warnings and #include errors. 2004-11-01 Peter Ekberg Sometimes, a wrapper script is generated for an executable that, itself, does not link against an uninstalled library. It appears that this can happen if you are building a project where: (1) there is a library (2) there is an executable that does not, itself, link against that library In this case, notinst_deplibs is empty, and when the wrapper script is loaded by libtool during ./libtool mode=install, there is a check for "is notinst_deplibs empty". In this case, it is, so libtool reports an error. I don't think it is wrong to have a wrapper script for an exe that *technically* doesn't need it. But instead of checking for notinst_deplib nonempty as a proxy for "did wrapper script get sourced into my environment properly" a different var should be used. * config/ltmain.m4sh (func_mode_install): set new variable `generated_by_libtool_version' in wrapper script when using libtool_install_magic. When verifying that wrapper script was properly sourced, check that `generated_by_libtool_version' is non-empty, instead of using notinst_deplibs. 2004-11-01 Charles Wilson , Peter Ekberg * config/ltmain.m4sh (func_mode_install): On Windows based hosts, ensure that import libraries don't get stripped. * m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER): On Windows based hosts, use postinstall_cmds to strip DLL (not import lib!) when symbol stripped installation was requested. 2004-10-30 Ralf Wildenhues * libltdl/ltdl.c (loader_init_callback): Back out broken cast. * libltdl/ltdl.c (loader_init_callback, lt_dlexit): Add casts to target type. * tests/defs.m4sh (func_exec): `shift'ing when there is nothing to shift is non-portable. 2004-10-28 Patrick Welche , Ralf Wildenhues * Makefile.am, Makefile.maint: Use path for dependencies built in the source tree, to cater for BSD make. 2004-10-24 Noah Misch * config/ltmain.m4sh (func_lalib_p, func_ltwrapper_p): New functions that abstract .la sanity checking. (func_mode_execute, func_mode_install, func_mode_link) (func_mode_uninstall): Use them. 2004-10-24 Gary V. Vaughan * config/ltmain.m4sh (opt_silent): Whether --silent was given. (run, show): Deleted. All callers converted to opt_dry_run, opt_silent or calls to func_show_eval. * tests/mdemo-dryrun.test: Adjust. * HACKING: Fix a typo in the gpg --verify instructions. * Makefile.maint (cvs-dist): Generate signatures and directives for bz2 upload. 2004-10-23 Peter O'Gorman * config/ltmain.m4sh (func_mode_link): Make Gary's new tests pass. When the output wrapper script is not in the current directory, we can not use an rpath which is relative to the current directory. Use an absolute path instead. 2004-10-22 Gary V. Vaughan * clcommit.m4sh: Add --rcfile option. * clcommit.m4sh: Updated again, to support file list limited commits to CVS, and to fix another occurence of the bash bug that was preventing non-tla users from sending a commit mail. 2004-10-22 Ralf Wildenhues * TODO, libltdl/lt_error.h, libltdl/ltdl.c, libltdl/ltdl.h: Undo accidental commit. * Makefile.maint: Fix typo. 2004-10-22 Gary V. Vaughan * clcommit.m4sh, config/mailnotify.m4sh: Updated from cvs-utils--tla--1.0 to fix quoting of metachars in patch names. * HACKING: Updated: `.in' files are now `.m4sh'; document some more coding standards for these files. * config/general.m4sh (sed_double_backslash): Undo an over-optimisation. 2004-10-21 Gary V. Vaughan * AUTHORS: Reformatted to better reflect the current state of Libtool maintainership. * THANKS: Reformatted to give maintainers a quick way to look up who has supplied FSF paperwork. 2004-10-21 Noah Misch , Gary V. Vaughan * config/general.m4sh (sed_double_backslash): Improve this sed expression to correct left anchored \$ input to double_quote_subst, as well as backslash escaped $ preceded by any odd-numbered amount of \ characters. 2004-10-20 Gary V. Vaughan * config/general.m4sh (sed_double_backslash): New sed expression to escape \$ properly in combination with double_quote_subst. (func_quote_for_eval): Four space indent margin for functions! (func_quote_for_expand): Use $sed_double_backslash. (func_show_eval): New function that echos an escaped but variable expanded command, and then evaluates it. 2004-10-20 Noah Misch , Gary V. Vaughan * m4/libtool.m4 (sed_quote_subst): Remove superfluous backslashes from the match character set. (double_quote_subst): Ditto. * config/general.m4sh (sed_quote_subst): Ditto. (double_quote_subst): New variable, copied from m4/libtool.m4. Much the same as sed_quote_subst, but variable references are not quoted. (func_quote_for_eval): Given any $foo; $bar and $foo must be identical after the following commands: func_quote_for_eval "$foo" eval "bar=$func_quote_for_eval_result" (func_quote_for_expand): In a similar vein to to func_quote_for_eval, except that variable expansions are not protected when quoting the command for subsequent display. * config/ltmain.m4sh: Factor away use of $sed_quote_subst now that it has been subsumed into func_quote_for_eval. (func_mode_link): Instead of `2004-10-14 Peter O'Gorman' below, use func_quote_for_expand so that ${wl} is expanded properly in the $show expression. 2004-10-16 Gary V. Vaughan * config/ltmain.m4sh (func_mode_finish): solaris-2.6 also has crle(1). Reported by Albert Chin-A-Young 2004-10-16 Gary V. Vaughan Add some new tests for Libtool's support of Automake subdir-objects builds. This marks the beginning of a move to an Autotest driven test framework, which will eventually allow us to trim away many of the generated files in the current test demo subdirectories: * configure.ac (AC_CONFIG_TESTDIR): Re-enable commented out Autotest macros. (AUTOTEST, M4SH): Use --language long hand. * bootstrap: Generate tests/testsuite, and by implication tests/package.m4. * Makefile.am (edit): Add substitutions needed to generate tests/package.m4 from bootstrap. (check-recursive): Add tests/testsuite. (TESTSUITE): The new Autotest testsuite target. (TESTSUITE_AT): The Autotest sources. (EXTRA_DIST): Distribute the generated testsuite and sources. (tests/package.m4): Use $(edit) to propagate package metadata to the new tests. (tests/testsuite): Build the testsuite. (tests/atconfig): How to regenerate the file. (check-local): Hook Autotest into `make check'. (installcheck-local): Run the testsuite on the installed tree. (clean-local): Tidy our file droppings. * tests/Makefile.am: Remove bitrotted code from Autotest experiments in Autoconf 2.52 era. Updated the rest and moved into Makefile.am. * tests/testsuite.at: New container for Autotest test groups. * tests/am-subdir.at: New test group for compatibility with Automake's subdir-objects builds. Currently holds two tests, one for a C project and another similar project in C++. * TODO: Add an entry to remind us that these new tests expose a bug in libtool. * NEWS: Updated. 2004-10-14 Peter O'Gorman * config/ltmain.m4sh: Revert most of my last commit, only eval \$show \"$cmds\", and only when building a library. I'm a wimp. Thanks Gary for pointing out errors in previous commit. 2004-10-13 Gary V. Vaughan * config/ltmain.m4sh (func_mode_finish): Mention crle(1) on solaris 2.7 and higher in the finalisation notes. Reported by Kurt J. Lidl * tests/cdemo-undef.test: New test for hosts that allow shared libraries with undefined symbols, but have no C++ compiler installed. * tests/Makefile.am (COMMON_TESTS): Add it. 2004-10-13 Peter O'Gorman * config/ltmain.m4sh: Make sure that we $show what we will $run, use eval $show if we do $run eval. 2004-10-13 Charles Wilson * config/ltmain.m4sh: add foo/bin for every foo/lib in dllsearchpath when creating wrapper script. Fixes depdemo-relink test failure. 2004-10-12 Charles Wilson * config/ltmain.m4sh (func_mode_link): don't relink on cygwin/mingw; no need. But do ensure that wrappers are created unless doing a purely static build. 2004-10-13 Gary V. Vaughan * tests/tagdemo-undef.test: New test for hosts that allow shared libraries with undefined symbols. * tests/Makefile.am (CXX_TESTS): Add it. 2004-10-11 Charles Wilson * tests/link.test: Fix check for use of libnlsut.a under Cygwin. 2004-10-11 Noah Misch * tests/quote.test: Do not look for $preargs in the output, because libtool may change them. 2004-10-10 Charles Wilson * config/ltmain.m4sh: Really don't require versions of GNU sed newer than 3.02 for Cygwin and MinGW, and don't break dryrun mode. 2004-10-10 Bob Friesenhahn * config/getopt.m4sh: Under MinGW, reported paths may include ':' so ':' should not be used as the sed delimiter. Use '*' instead since it is very unlikely to appear in a path. 2004-10-10 Albert Chin-A-Young * config/ltmain.m4sh: Don't require versions of GNU sed newer than 3.02 for Cygwin and MinGW. 2004-10-10 Bob Friesenhahn * tests/pdemo-inst.test: Correction for mis-application of Charles Wilson's earlier patch. 2004-10-09 Gary V. Vaughan * m4/libtool.m4 (_LT_LANG_F77_CONFIG): Make sure the save and restore code for CC is nested at the same depth. (_LT_LANG_CXX_CONFIG): Ditto, but for several variables. 2004-10-08 Gary V. Vaughan Update to the latest commit and mailnotify scripts from gary@gnu.org--2004/cvs-utils--tla--1.0: * commit, config/mailnotify: Removed. Now built from... * clcommit.m4sh, config/mailnotify.m4sh: ...these new sources. * Makefile.maint (commit, config/mailnotify): How to build them. * bootstrap: If we have a checked out tree (i.e. clcommit.m4sh is present), then build them. 2004-10-08 Gary V. Vaughan Fix some issues that mangled the reexecution path to a script, and thus prevented it from finding itself: * config/general.m4sh (progname): Don't actually change the name of the script if it begins with a `-', just prepend `./'. (progpath): Add a new clause that first searches the execution PATH, and then finally assumes this script is in the current working directory if $progname has no directory separators (e.g when invoked as `$SHELL progname'). 2004-10-08 Gary V. Vaughan * config/general.m4sh (func_verbose): Work around a bash bug in shell functions. 2004-10-08 Charles Wilson * tests/pdemo-inst.test: pdemo-inst should depend on pdemo-make. * config/ltmain.m4sh: Windows and Cygwin reserve the .lnk extension to represent shortcuts. Use the extension ".lnkscript" rather than ".lnk" for the piecewise linking ld script in order to avoid the conflict. 2004-10-07 Ralf Wildenhues * libltdl/ltdl.c (lt_dlexit, lt_dlpath_insertdir): Fix memleaks, free user_search_path on lt_dlexit. 2004-10-07 Ralf Wildenhues * tests/sh.test: Remove tests which fail on AS_SHELL_SANITIZE from autoconf >= 2.59. * TODO: Remove item: no need for a libltdl without stdio. 2004-10-07 Gary V. Vaughan * tests/defs.m4sh (scripts): Actually scan the generated ltmain.sh for shell portability problems. * m4/libtool.m4 (_LT_FORMAT_COMMENT): Shell meta-characters in _LT_DECL descriptions were not being escaped before injection into TAG CONFIG here documents in config.status. 2004-10-06 Peter O'Gorman * m4/libtool.m4 (_LT_PROG_CXX, _LT_PROG_F77): New macros to work around the deficiencies in AC_PROG_CXX and AC_PROG_F77. * configure.ac: Cleaned up, having moved the checks for compilers which do not exist to libtool.m4. 2004-10-05 Ralf Wildenhues * libltdl/ltdl.c (try_dlopen): Move .la file parsing part.. (parse_dotla_file): ..here. Adjust. * libltdl/ltdl.c (load_deplibs, try_dlopen): Revert unnecessary casts to int from my patch from 2004-10-01. * AUTHORS: Add myself. 2004-10-05 Peter O'Gorman * config/ltmain.m4sh [darwin]: Make the -dylib_file flag work on older darwins too. Reported by Christoph Egger. 2004-10-05 Gary V. Vaughan * configure.ac: Bumped version to 2.1a. 2004-10-04 Gary V. Vaughan * m4/libtool.m4 (_LT_PROG_ECHO_BACKSLASH): Don't confuse $ECHO with $lt_ECHO, or we always get a libtool with ECHO=echo, rather than testing for a mechanism that quotes \ properly. * NEWS: Updated. * config/ltmain.m4sh: Need to include getopt.m4sh earlier so that progpath is set before it is called to --no-reexec. * NEWS: Updated. 2004-10-04 Gary V. Vaughan Without this change, the distributed libtool tarball has a dependency on autom4te. There was some inconsistency in the filenames: now we have foo.m4sh -> m4sh -> foo.in -> configure -> foo[.sh]. Bootstrap runs the m4sh steps and the resulting .in files are distributed: * tests/Makefile.am (EXTRA_DIST): Distribute defs.m4sh. * Makefile.am (EXTRA_DIST): Distribute libtoolize.m4sh. (libtoolize.in, libtoolize): Split into bootstrap and runtime stages. ($(top_srcdir)/tests/defs.in, $(top_srcdir)/tests/defs): Ditto. ($(top_srcdir)/config/ltmain.sh): Swap ltmain.m4sh and ltmain.in names. * bootstrap: Make libtoolize.in and tests/defs.in. * NEWS: Updated. 2004-10-03 Bob Friesenhahn * README, README.alpha: Update notes regarding available VERBOSE settings. 2004-10-03 Bob Friesenhahn * config/ltmain.in: Change $XSED to $Xsed to fix hang noticed under MinGW. * tests/defs.in: Support VERBOSE=debug to enable shell tracing while running tests. 2004-10-03 Gary V. Vaughan * NEWS: Updated. * configure.ac: Bumped version to 1.9e. GNU libtool 1.9d was released. * configure.ac: Bumped version to 1.9d. * NEWS: Updated. * libltdl/lt__alloc.h (lt__alloc_die): Declare with LT_SCOPE as per Ralf's original patch. Reported by Bob Friesenhahn * libltdl/Makefile.am (libltdlc_la_LIBADD): Don't use libdlloader_la_OBJECTS, an undocumented Automake internal variable... (libltdlc_la_SOURCES): ...use libdlloader_la_SOURCES here instead. Reported by Bob Friesenhahn * libltdl/argz_.h: Forgot to spell lt_system.h with just one `_'. * libltdl/argz_.h: Forgot to include lt__system.h for LT_SCOPE definition. 2004-10-03 Ralf Wildenhues , Gary V. Vaughan * libltdl/lt__alloc.h: Declare exported functions with LT_SCOPE for mingw32. * libltdl/lt__dirent.h: Ditto. * libltdl/argz._h: Ditto. Be careful about not requiring additional libltdl files when used outside of libltdl. * libltdl/slist.h: Ditto. * HACKING: Add a section on libltdl implementation layering. 2004-10-03 Gary V. Vaughan * tests/quote.test: echo is called ECHO now. Make sure we extract the value of ECHO from the libtool script. Reported by Bob Friesenhahn 2004-10-02 Gary V. Vaughan * m4/libtool.m4 (hardcode_shlibpath_var) [darwin7*]: Revert my hack from 2004-09-30 now that I've removed /lib/hello.la and the tests work properly for me again. 2004-10-02 Jim Tison Initial support for s390x-ibm-tpf: * m4/libtool.m4: Correct obvious spelling errors in remarks. (_LT_ENABLE_LOCK): Make s390x-ibm-tpf hosts adopt elf64_s390 conventions. (_LT_SYS_DYNAMIC_LINKER): Set defaults for s390x-ibm-tpf host. (_LT_CHECK_MAGIC_METHOD): Skip all dependency checks for s390x-ibm-tpf hosts. (_LT_LINKER_SHLIBS): Make s390x-ibm-tpf hosts adopt GNU/Linux OS attributes. * NEWS: Updated. 2004-10-01 Ralf Wildenhues * config/ltmain.in (func_mode_install): Need to set $tmpdir before using it. * config/ltmain.in (func_mode_link): Fix quoting bug. Fixes e.g. the quoting of the -export-symbols-regex argument in .la files' relink_command. * libltdl/lt__alloc.c (lt__memdup): Allocation can fail, so we need to guard against null pointer dereference here. * libltdl/ltdl.c (lt_dlcaller_register): Ditto. * libltdl/slist.c (slist_foreach): result was declared as inner variable, shadowing the actually returned value. * libltdl/ltdl.c (load_deplibs, try_dlopen): Cast argument to isspace/isalnum to the correct range. Also, cast to int to avoid compiler warnings. 2004-09-30 Ralf Wildenhues * libltdl/ltdl.c (try_dlopen): Fix null pointer dereference in case the name given to lt_dlopen contains no extension. * libltdl/lt_dlloader.c (lt_dlloader_remove), libltdl/ltdl.c (tryall_dlopen, lt_dlhandle_next): Show usage of function pointers. * doc/libtool.texi (LT_INIT, Using libltdl) (Module loaders for libltdl, Multiple dependencies) (libtool script contents): Fix several typos (trivial change). Also, libltdl consists of more than two small files. 2004-09-30 Gary V. Vaughan * m4/libtool.m4 (hardcode_shlibpath_var) [darwin7]: My Panther workstation doesn't hardcode the shared library path, although it used to, so this is more likely a function of the binutils and/or gcc I am using at the moment. The hardcode value setting code for the configure script sucks at the moment though... * TODO: ...and needs to do a test compile instead of a table lookup before 2.0 final. * m4/libtool.m4 (echo): Use ECHO throughout for consistency with config/ltmain.in. Reported by Ralf Wildenhues * m4/libtool.m4 (rm): Use RM throughout for consistency with config/ltmain.in. Reported by Charles Wilson 2004-09-27 Peter O'Gorman * m4/libtool.m4 (_LT_LANG_CXX_CONFIG) [darwin]: Don't echo gcc -v output during configure. (Really this time, honest) 2004-09-26 Albert Chin-A-Young * m4/libtool.m4 (_LT_LINKER_SHLIBS) [aix]: In archive_expsym_cmds, move -bnoentry linker option before $compiler_flags to honor any possible -e entries in LDFLAGS. 2004-09-25 Gary V. Vaughan * config/ltmain.in (func_mode_link): When linking an installed libtool library on the command line using -lfoo we need to find the library in the search paths and add it's dependency_libs to the link in the conv pass so that any libtool libs listed are correctly expanded in the link pass. 2004-09-24 Charles Wilson * libtool.m4 (_LT_SYS_DYNAMIC_LINKER): Revert changeset from `2004-09-22 Charles Wilson '. 2004-09-24 Gary V. Vaughan * config/general.m4sh (Xsed): Set a default when not used from ltmain.in. (ECHO): Audit for (and correct!) uses of $ECHO with more than one argument, which breaks when ECHO='printf %s\n', and with possible `-' as first character of the argument, which breaks `print -r' and some implementations of `echo'. * config/ltmain.in, tests/defs.in, libtoolize.in (ECHO): Ditto. Reported by Albert Chin-A-Young 2004-09-24 Peter O'Gorman * m4/libtool.m4 (_LT_CMD_STRIPLIB) [darwin]: strip archives too. * m4/libtool.m4 (_LT_LANG_CXX_CONFIG) [darwin]: Don't echo gcc -v output during configure. 2004-09-24 Gary V. Vaughan * m4/libtool.m4 (_LT_DECL_EGREP): Only the newest CVS autoconf AC_SUBSTs for GREP. Do our own here too to cater for release autoconfen. * m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER) [openbsd3.3]: Set need_version to yes or no depending on the os release. Reported by Dalibor Topic 2004-09-23 Gary V. Vaughan * tests/cdemo-conf.test, tests/cdemo-exec.test, tests/cdemo-make.test, tests/cdemo-shared.test, tests/cdemo-static.test, tests/demo-conf.test, tests/demo-deplibs.test, tests/demo-exec.test, tests/demo-hardcode.test, tests/demo-inst.test, tests/demo-make.test, tests/demo-nofast.test, tests/demo-noinst-link.test, tests/demo-nopic.test, tests/demo-pic.test, tests/demo-relink.test, tests/demo-shared.test, tests/demo-static.test, tests/demo-unst.test, tests/depdemo-conf.test, tests/depdemo-exec.test, tests/depdemo-inst.test, tests/depdemo-make.test, tests/depdemo-nofast.test, tests/depdemo-relink.test, tests/depdemo-shared.test, tests/depdemo-static.test, tests/depdemo-unst.test, tests/f77demo-conf.test, tests/f77demo-exec.test, tests/f77demo-make.test, tests/f77demo-shared.test, tests/f77demo-static.test, tests/link-2.test, tests/link.test, tests/mdemo-conf.test, tests/mdemo-dryrun.test, tests/mdemo-exec.test, tests/mdemo-inst.test, tests/mdemo-make.test, tests/mdemo-shared.test, tests/mdemo-static.test, tests/mdemo-unst.test, tests/mdemo2-conf.test, tests/mdemo2-exec.test, tests/mdemo2-make.test, tests/nomode.test, tests/pdemo-conf.test, tests/pdemo-exec.test, tests/pdemo-inst.test, tests/pdemo-make.test, tests/quote.test, tests/sh.test, tests/suffix.test, tests/tagdemo-conf.test, tests/tagdemo-exec.test, tests/tagdemo-make.test, tests/tagdemo-shared.test, tests/tagdemo-static.test, tests/tagtrace.test: POSIX `.' searches only in user's $PATH, so we must use `. ./defs' to source the common code. Reported by Alexandre Duret-Lutz * m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS): Gah. Merge error corrected. 2004-09-23 Gary V. Vaughan Since defs can change (path to grep for example) when it is made for a different host, it can't be shipped. That also means that defs will always be generated in the build tree, so each test case can have the srcdir discovery factored away into tests/defs.in: * Makefile.am (EXTRA_DIST): s/defs/defs.in/g * tests/Makefile.am (defs): New rule to remake defs from the parent directory's Makefile. * tests/cdemo-conf.test, tests/cdemo-exec.test, tests/cdemo-make.test, tests/cdemo-shared.test, tests/cdemo-static.test, tests/demo-conf.test, tests/demo-deplibs.test, tests/demo-exec.test, tests/demo-hardcode.test, tests/demo-inst.test, tests/demo-make.test, tests/demo-nofast.test, tests/demo-noinst-link.test, tests/demo-nopic.test, tests/demo-pic.test, tests/demo-relink.test, tests/demo-shared.test, tests/demo-static.test, tests/demo-unst.test, tests/depdemo-conf.test, tests/depdemo-exec.test, tests/depdemo-inst.test, tests/depdemo-make.test, tests/depdemo-nofast.test, tests/depdemo-relink.test, tests/depdemo-shared.test, tests/depdemo-static.test, tests/depdemo-unst.test, tests/f77demo-conf.test, tests/f77demo-exec.test, tests/f77demo-make.test, tests/f77demo-shared.test, tests/f77demo-static.test, tests/link-2.test, tests/link.test, tests/mdemo-conf.test, tests/mdemo-dryrun.test, tests/mdemo-exec.test, tests/mdemo-inst.test, tests/mdemo-make.test, tests/mdemo-shared.test, tests/mdemo-static.test, tests/mdemo-unst.test, tests/mdemo2-conf.test, tests/mdemo2-exec.test, tests/mdemo2-make.test, tests/nomode.test, tests/pdemo-conf.test, tests/pdemo-exec.test, tests/pdemo-inst.test, tests/pdemo-make.test, tests/quote.test, tests/sh.test, tests/suffix.test, tests/tagdemo-conf.test, tests/tagdemo-exec.test, tests/tagdemo-make.test, tests/tagdemo-shared.test, tests/tagdemo-static.test, tests/tagtrace.test: Removed srcdir discovery boilerplate... * tests/defs.in: ...and put it here. 2004-09-23 Ralf Wildenhues * m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS): move symcode calculation to correct place. * doc/libtool.texi (libtool script contents): update description of global_symbol_to_cdecl. 2004-09-23 Gary V. Vaughan * configure.ac (M4SH): AC_SUBST m4sh expander. * config/general.m4sh, config/getopt.m4sh: New files with factored out functionality from... * config/ltmain.in, libtoolize.in: ...here. m4_include the shared code, and call AS_SHELL_SANITIZE. Also quote all `[' and `]' to survive m4 run. (func_serial): No need to double up m4sh quotes after a `#'. (func_check_macros): Escape `dnl' to stop m4sh interpreting it as a macro. * tests/defs.in: New file expanded into tests/defs by autom4te. * m4/libtool.m4 (_LT_DECL_EGREP): Also require fgrep for the tests that use it. * Makefile.am ($(top_srcdir)/config/ltmain.sh): Now built with M4SH. (libtoolize): Ditto. * bootstrap: Set M4SH for call to make. * HACKING: No need to sync to AS_SHELL_SANITIZE by hand any more. * m4/libtool.m4: _LT_DECL uppercase ECHO. * config/ltmain.in: Use it throughout. (func_mkdir_p): Now matches the other implementations in tests/defs and libtoolize.in. * tests/sh.test: Updated to detect ECHO misuse. 2004-09-22 Gary V. Vaughan * config/ltmain.in (func_mode_link): Propagate a convenience library's dependency libs correctly when it is being linked into a libtool library. Deplibs are now propagated whether libdir is set or not. 2004-09-22 Andreas Schwab The dlpreopen pass over libraries reverses the elements in the $deplibs list. This causes problems when the link pass tries to find libraries when they are located in non-standard places denoted by -L options. Due to the reversed order these -L options occur after the libraries that need them, and they are not found: * config/ltmain.in: (Un)Reverse $deplibs list at the start of the link pass in lib mode. 2004-09-22 Charles Wilson * ltmain.in (func_generate_dlsyms) [cygwin, mingw]: when creating a .exp file for an executable, also create a .def file, and add that file to the link command via SYMFILES. This causes binutils to generate an .edata section, and allows self dlopening to work. * NEWS: Updated. * m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER): better quoting for postinstall_cmds and postuninstall_cmds to allow spaces in install paths. * config/ltmain.in (func_generate_dlsyms): Addresses in _preloaded_symbols[] cannot go into .rdata section if symbols are DATA imported from DLL, on windows, because runtime relocations must happen. * m4/libtool.m4 (_LT_LINKER_SHLIBS([TAGNAME])): Build exports for symbols in .rdata sections. 2004-09-19 Gary V. Vaughan The checks in assign.test are trying to catch case of this ilk: `foo=bar break', but unfortunately they also choke on `foo=bar; break' and `foo=bar && break'. Writing a sophisticated test to catch just the intended case seems like more trouble than it's worth, but leaving the test in causes the testsuite to fail on valid m4sh output: * tests/assign.test: Removed; chokes on perfectly valid shell syntax. * tests/Makefile.am (COMMON_TESTS): Remove assign.test. * tests/defs.in (scripts): Don't check the m4sh inputs, go back to checking the generated ltmain.sh script. 2004-09-17 Gary V. Vaughan * config/ltmain.in (func_echo): Except for multi-line warnings and errors, always use func_echo. $show is for command output, and $echo is for internal use in backtick expressions and similar. 2004-09-17 Gary V. Vaughan Missed a couple of MKDIR_P references in ltmain.in in my last patch; fix them carefully. Introduce an opt_dry_run to ltmain.in so that the implementations of func_mkdir_p can converge, and a func_mktempdir to do a better job of temporary directory creation: * libtoolize.in (func_mkdir_p): Don't fail if the directory wasn't created in dry run mode. * tests/defs (func_mkdir_p): Ditto. We don't actually have a dry run mode for the tests, but the function is written carefully to be kept in synch and work correctly here too. * config/ltmain.in (func_mkdir_p): Ditto. This copy of the function now only differs in its use of $echo over $ECHO. (func_extract_archive): Removed first redundant mkdir call. (func_mktempdir): New function that tries to avoid races when making temporary directories. (opt_dry_run): Set this if --dry-run is given at the CLI, or if tests/mdemo-dryrun.test has forced the value of $run. (func_mode_install): Call $MKDIR directly and error out if the directory cannot be created. (func_mode_link): Rather than copying func_mkdir_p into the wrapper script as a replacement for $MKDIR_P, we know that the script won't be called my `make -j', so write the current value of $MKDIR. 2004-09-17 Peter O'Gorman * m4/libtool.m4: remove an extra "]" * m4/libtool.m4 [darwin] (_LT_LANG_CXX_CONFIG): Changes for 10.4. * config/libtool.in [darwin]: ditto. 2004-09-16 Gary V. Vaughan My most recent `2004-09-02 Gary V. Vaughan' patch for mkdir_p below is horrendously broken since it makes the installed libtool try to run the mkinstalldirs or install-sh helper scripts. This patch fixes the `make -j' mkdir race condition internally: * libtoolize.in (func_mkdir_p): New slice and dice algorithm to build the directory tree one dir at a time, ignoring errors until the end incase they are transient due to a concurrent identical mkdir. * tests/defs (func_mkdir_p): Ditto. * config/ltmain.in (func_mkdir_p): Ditto, except that ltmain.in uses $echo rather than $ECHO, and uses $show and $run to interact correctly with the command line. * configure.ac (AM_INIT_AUTOMAKE): 1.8 is sufficient again. * Makefile.am (edit): Don't substitute automake's $(mkdir_p). * NEWS: Updated. 2004-09-15 Bob Friesenhahn * libltdl/loaders/loadlibrary.c: Compilation fixes (originally from Gary V. Vaughan) to compile under MinGW. * config/mkstamp: Translate input data so that it is assured to use the Unix line terminations. This is necessary under Windows if the files are checked out with CR/NL line terminations. A side-effect of this change is that input must always be from stdin. Previously a filename argument was accepted as well. 2004-09-15 Ralf Wildenhues * tests/Makefile.am: Use the same CPP, F77, CXX and CXXFLAGS for the test suite. 2004-09-15 Ralf Wildenhues * m4/libtool.m4 (_LT_ENABLE_LOCK):Replace AC_TRY_LINK with AC_LINK_IFELSE to get rid of `autoconf -Wobsolete' warning. * m4/ltdl.m4 (LT_LIB_DLLOAD): Ditto. 2004-09-15 Gary V. Vaughan * config/ltmain.in (func_quote_for_eval): Set a return value to avoid forking at every call. Changed all callers. (func_mode_link): Simplified, and removed the final non-portable nested escaped double quotes in back quotes usage in the process. 2004-09-14 Gary V. Vaughan * config/ltmain.in (func_quote_for_eval): Factor out the ugly shell meta-character quoting. Changed all callers. 2004-09-14 Ralf Wildenhues * m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS): Simplification: distinguish between data and code symbols on every system. 2004-09-14 Albert Chin-A-Young Unfortunately, libtool has no way of telling if unrecognized compiler flags need an argument or not, and can disect options and pass parts through incorrectly. This changeset reverts both 2004-09-06 Albert Chin-A-Young (topmost) and 2004-09-05 Albert Chin-A-Young below, and recognises more options explicitly: * config/ltmain.in (func_mode_link): Pass through options needed to compile in 64-bit mode with gcc, and the SGI, Sun, HP and IBM compilers. 2004-09-13 Gary V. Vaughan * m4/libtool.m4 (_LT_CMD_GLOBALS_SYMBOLS): Fix a typo I made when applying 2004-09-11 Ralf Wildenhues. 2004-09-12 Brad * libtool.m4: Fixes for the OpenBSD support 2004-09-12 Peter O'Gorman Our fortran tests were not very good. All the libraries created were convenience libs, so we did not test the creation of shared libraries on any platform. Also none of the libs used any actual fortran library calls, adding a call to write(*,*) in each lib causes the tests to fail on darwin (and presumably other platforms). These new tests would likely cause many more fortran test failures, so if there is an error during make it is reported as SKIP. * tests/f77demo-make.test: Don't fail hard, skip on failure. * tests/f77demo/foof2.f: New file. * tests/f77demo/foof3.f: New file. * tests/f77demo/fprogram.f: Call routine in new lib. * tests/f77demo/foof.f: Call routine in another new lib. * tests/f77demo/Makefile.am: Make a couple of new libraries, add $(FLIBS) to cprogram LDADD. 2004-09-11 Ralf Wildenhues * m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS): The linker distinguishes data and code symbols on linux-gnu/ia64. Fixes multiple testsuite failures. * NEWS: Updated. 2004-09-06 Gary V. Vaughan * libltdl/loaders/shl_load.c (get_vtable): Typo. 2004-09-06 Albert Chin-A-Young Hopefully, passing unrecognised compiler arguments through unmolested will prove to be a good plan for the 2.0 release. If it goes awry, we can get back to where we were by reverting this patch and the 2004-09-05 Albert Chin-A-Young patch, aka gary@gnu.org--2004/libtool--devo--1.0--patch-169,172: * config/ltmain.in (func_mode_link): Because we now pass through compiler arguments we doesn't recognize, the code to pass through GCC's -m* arguments is not needed. 2004-09-06 Albert Chin-A-Young * Makefile.am (clean-ltmain-sh): Using '==' to test for equality in a shell script is not portable. Use '=' instead. 2004-09-05 Andreas Schwab * m4/ltdl.m4 (LT_WITH_LTDL): Remove excess quoting in argument of AC_CONFIG_SUBDIRS. 2004-09-05 Albert Chin-A-Young * config/ltmain.in (func_mode_link): Pass otherwise unrecognised + and - style switches to the compiler. * NEWS: Updated. 2004-09-05 Gary V. Vaughan * Makefile.am (libtool): Force libtool to be regenerated if stamp-vcl has changed. 2004-09-05 Albert Chin-A-Young * m4/libtool.m4, config/ltmain.in: When calling $LTCC, pass default $CFLAGS through with $LTCFLAGS. 2004-09-03 David Edelsohn * config/ltmain.in (func_mode_link): Use $pic_object as $non_pic_object if $non_pic_object=none. * NEWS: Updated. 2004-09-03 Gary V. Vaughan * bootstrap: Remember that the ltmain.sh generated by bootstrap is missing most of its substitution values, so force it to be rebuilt at make time by touching $(top_srcdir)/config/ltmain.in. From Martin Quinson * m4/libtool.m4 (_LT_SETUP, _LT_ENABLE_LOCK, LT_PATH_LD): Use AS_HELP_STRING to get rid of autoconf -Wobsolete warning messages. * m4/ltdl.m4 (LT_WITH_LTDL, _LT_ENABLE_INSTALL): Ditto. * m4/ltoptions.m4 (_LT_ENABLE_SHARED, _LT_ENABLE_STATIC) (_LT_ENABLE_FAST_INSTALL, _LT_WITH_PIC): Ditto. * TODO: Updated 2004-09-03 Ralf Wildenhues * libltdl/slist.c (slist_cons): Don't leak the tail of a list. 2004-09-03 Albert Chin-A-Young * m4/libtool.m4 (_LT_ENABLE_LOCK): Reformatted. 2004-09-03 Gary V. Vaughan * HACKING: Explain how to verify detached signatures with gpg in the release announcement templates. * AUTHORS: Fix typo in my address. 2004-09-02 Gary V. Vaughan , Builds of packages that use libtool and make -j produce "directory already exists warnings" for .lib directory. Build on automake wisdom to support make -j builds where a suitable mkdir is available: * configure.ac (AM_INIT_AUTOMAKE): Require 1.9, which goes to some trouble to find a $(mkdir_p) that doesn't interfere with make -j. * Makefile.am (edit): Substitute for @mkdir_p@. * config/ltmain.in (MKDIR_P): Take @mkdir_p@ value. (mkdir): Removed. (func_mkdir_p): New function to use $MKDIR_P. Factor out all previous mkdir calls to use this function. (RM, MV): Declared as in libtoolize.in. Changed all callers. * libtoolize.in (MKDIR_P): Take @mkdir_p@ value from automake. (func_mkdir_p): Use it, similarly to new config/ltmain.in. * tests/defs: Synchronize boiler plate code with ltmain.in. Adjust all callers. Add missing copyright preamble. * tests/demo-static.test: Add missing copyright preamble. * NEWS: Updated. Reported by Daniel Reed 2004-09-02 Gary V. Vaughan , * Makefile.am (clean-ltmain-sh): Quote $(top_builddir) for the shell, incase it is not set when running maintainer rules with `make -fMakefile.maint'. Don't show the shell commands. * AUTHORS: Fix my email address. 2004-09-02 Ralf Wildenhues * libltdl/ltdl.c (try_dlopen): Fix memory leak. * NEWS: Updated. 2004-09-02 Gary V. Vaughan , Ralf Wildenhues * libltdl/slist.c, libltdl/slist.h: Merge in changes from latest upstream. Mostly comments, formal item boxing, a sort function, and const madness reduction. (slist_new): Removed. (slist_box, slist_unbox, slist_sort): New. (SListCompare, SListCallback): Swapped! (slist_remove, slist_find): Change order of parameters for orthogonality with slist_foreach. Changed all callers. * libltdl/lt_dlloader.c (loader_cmp): Renamed to... (loader_callback): ...this. Return boxed item. (lt_dlloader_remove): Adjust to new loader_callback semantics; unbox each removed item before returning. Remove unused variable. Remove const from name parameter, since the slist API cannot guarantee userdata const-ancy for its callback functions. (lt_dlloader_find): Adjust to new loader_callback semantics; need to return the contents of the boxed item. Remove const from name parameter, since the slist API cannot guarantee userdata const-ancy for its callback functions. * libltdl/lt_dlloader.h (lt_dlloader_find, lt_dlloader_remove): Adjust to new constless footprint. * libltdl/ltdl.c (ltdl_exit): The global `loaders' list is changed by `lt_dlloader_remove' while cleaning up, so the address in local variable `loader' is invalidated. Since some loaders may be resident modules that cannot be unloaded (though we have none yet), we must save each `next' address before calling `lt_dlloader_remove'. * NEWS: Updated. * THANKS: Added Ralf. 2004-09-01 Gary V. Vaughan * libltdl/lt_dlloader.c (lt_dlloader_add): Handle malloc failure from slist_new. * libltdl/ltdl.c (loader_init): Trust lt_dlloader_add(), don't overwrite its error type, and simplify. Reported by Ralf Wildenhues 2004-09-01 Ralf Wildenhues * libltdl/slist.c (slist_new): Handle malloc failure gracefully. 2004-09-01 Gary V. Vaughan * libtoolize.in, config/ltmain.in: Add CDPATH protection to preamble. * tests/defs: Put a full m4sh.m4 style 'Be Bourne compatible' preamble in here too. * HACKING: Note that tests/defs needs synching with m4sh.m4 too. * TODO: Add new item. * libltdl/ltdl.c (try_dlopen, lt_dlforeachfile): Use correct cpp macro name, LT_DLSEARCH_PATH. * libltdl/ltdl.c (lt_dlexit, tryall_dlopen): Fix gcc parentheses warning. (foreach_dirinpath, try_dlopen, lt_dlpath_insertdir): Fix gcc signed vs unsigned warning. Reported by Bob Friesenhahn * m4/libtool.m4 (_LT_PROG_LTMAIN): Simplified in light of ltmain.sh no longer being in the build tree. Reported by Ralf Wildenhues 2004-09-01 Ralf Wildenhues * libltdl/loaders/preopen.c: Initialise memory in get_vtable. * tests/sh.test: Look in the source tree for ltmain.sh. 2004-09-01 Gary V. Vaughan Don't use C99 flexible array types as we want to be C89 compatible. Instead, revert to the old way of doing things with an array of symbol name vs. address, and adding the originator as the first symbol but with a NULL address: * config/ltmain.in (func_extract_dlsyms): Store originator as a NULL address symbol. * libltdl/ltdl.h (lt_dlsymbol): Removed. (lt_dlsymlist): Remove originator field. (LTDL_SET_PRELOADED_SYMBOLS): Adjust. * libltdl/loaders/preopen.c (vm_open, lt_dlpreload_open): Adjust for new types. (vm_sym): Skip the new originator symbol when scanning symbol names. * m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS): Adjust preloaded symbols test file to match. * NEWS: Updated. Reported by Andreas Schwab 2004-09-01 Gary V. Vaughan Libtool currently assumes that certain characteristics, such as enable_shared, apply to the host architecture rather than per- language. Running the tests over a broken compiler can corrupt these values, when there is no C++ compiler for example, so we skip most of the tests in those cases. * m4/libtool.m4 (_LT_LANG_CXX_CONFIG): If caught_CXX_compiler was set from configure.ac, then don't run all the compiler tests. (_LT_LANG_F77_CONFIG): Similarly for caught_F77_compiler. 2004-08-31 Gary V. Vaughan * Makefile.am (clean-ltmain-sh): Remove stale config/ltmain.sh from the build tree that were left behind by previous versions of libtool. ($top_srcdir)/stamp-vcl: Since this rule is already called on every invocation of make, hook clean-ltmain-sh in here too. Suggested by Ralf Wildenhues 2004-08-31 Ralf Wildenhues * bootstrap: Update warning message to reflect having split libtool.m4 into several files. Also, add config/ltmain.sh to list of stale files from previous versions to be removed before bootstrap. * libltdl/ltdl.c: Replace strdup with lt__strdup. 2004-08-30 Gary V. Vaughan * config/ltmain.in: Double quote even $# for the sake of sh.test. (exec_cmd): Be careful about "`\"foo\"`" quoting, even in comments to avoid triggering the tests in sh.test. * configure.ac: Because of the way the autoconf C++ testing works, we need to call the C test first to work in an environment that has no C++ compiler. * libltdl/lt_dlloader.c (lt_dlloader_remove): Since the return value of this function is often passed to free, don't declare it `const'. Responsibility for this memory is given back to the caller on return. * libltdl/lt_dlloader.h (lt_dlloader_remove): Ditto. * libltdl/ltdl.c (lt_dlexit): Adjust. * NEWS: Updated. 2004-08-30 Andreas Schwab * libltdl/ltdl.c (lt_dlexit): Remove lvalue cast. * libltdl/slist.h (SListCallback): Fix missing type. * config/ltmain.in: Accept --mode=relink. 2004-08-29 Gary V. Vaughan * NEWS: Updated. * configure.ac: Bumped version to 1.9c. GNU libtool 1.9b was released. * configure.ac: Bumped version to 1.9b. * NEWS: Updated. * INSTALL, config/config.guess, config/config.sub, config/texinfo.tex: Updated from canonical source. * Makefile.maint, HACKING: Update instructions for releasing in a VPATH build. * Makefile.am (dist-hook): Only run if README-alpha exists. * README.alpha: Renamed from README-alpha to stop automake from automatically adding it to DIST_COMMON. * NEWS: Merge changes from branch-1-5. * Makefile.am (dist-hook): Always distribute just a README file, but take its contents from README-alpha for alpha releases. * TODO: Reformat. Removed some items that have been implemented. 2004-08-29 Gary V. Vaughan Add a new `-weak' flag to tell libtool when not to propogate dependency libraries from dlpreopened modules to libraries: * config/ltmain.in: Support new -weak link mode option. Adjust help message. * libltdl/Makefile.am (libltdlc_la_LDFLAGS): Use it. * doc/libtool.texi (Linking with dlopened modules): Document it. (Link mode): Mention -weak. * NEWS: Updated. 2004-08-29 Gary V. Vaughan * config/ltmain.in (opt_help): Defer showing help messages until after a possible following --mode argument has been parsed, so we can handle `libtool --help --mode=foo'. 2004-08-29 Gary V. Vaughan We have had shell functions in ltmain.in for a few years without complaint now, and recently a few more have crept in. Make a start at refactoring the code with shell functions, and standardising on option parsing style: * config/ltmain.in (func_echo, func_verbose, func_error) (func_fatal_error, func_fatal_help, func_missing_arg) (func_version, func_usage, func_help): Boiler plate shell functions mostly copied from libtoolize.in. Changed *lots* of shell snippets to call these functions as appropriate, rather than inlining the same code over and over. (func_config, func_features, func_enable_tag, func_mode_help): Factored out from the shared option parsing loop. Write a new shared option parser based on the one in libtoolize.in. (func_check_version_match): Factored out from global scope. (func_mode_compile, func_mode_execute, func_mode_finish) (func_mode_install, func_mode_link, func_mode_uninstall): Break each of the top level mode handlers out into a function. Adjust main loop. (modename, prevopt, prev, optarg, show_help): Removed in the course of cleaning up the shared option parser. (opt_duplicate_deps): Use `:' and `false' instead of `yes' and `', so we can run it directly, rather than calling test. 2004-08-28 Gary V. Vaughan To help users submit better bug reports, improve the general instructions, and provide additional useful info alongside the bug reporting address in --help output: * Makefile.am (edit): Substitute $host_triplet. * libtoolize.in: Output useful debug info with --help. * config/ltmain.in: Ditto. * README: Rewritten. Added copyright info. * README-alpha: Rewritten. Added copyright info. * HACKING: New file, partly taken from old README-alpha. 2004-08-27 Gary V. Vaughan Two things to stop `make distcheck' from trying to rebuild distributed files (m4/ltversion.m4 and config/ltmain.in) in the readonly source tree: * Makefile.am (stamp-vcl): Keep only one copy of stamp-vcl; in $(top_srcdir), so that an up-to-date version is rolled into the dist tarball even from a VPATH build. ($(top_srcdir)/config/ltmain.sh): Don't depend on Makefile, otherwise ltmain.sh needs to be rebuilt after every config.status run, and then configure needs to be rebuilt, and it all goes horribly wrong :-/ Unfortunately, we can't depend on Makefile.am either, because that is a circular dependency. The downside of this change is that it is now possible to edit Makefile.am to change the way ltmain.sh is generated, and the dependency information can't tell that ltmain.sh needs regenerating. 2004-08-27 Gary V. Vaughan * doc/libtool.texi (Cheap tricks): Escape the `@' for texinfo. 2004-08-27 Gary V. Vaughan * doc/libtool.texi (Cheap tricks): Fix the instructions for making a ltmain.in wrapping libtool in light of recent changes to the version checking code. 2004-08-26 Peter O'Gorman * config/ltmain.in [darwin]: Use the -dylib_file flag and avoid linking to so many libraries on darwin. * m4/libtool.m4 [darwin]: Don't use a libname triplet, a couplet is perfectly fine. * m4/ltdl.m4: Don't use the dyld loader on darwin 8 or later. 2004-08-25 Paolo Bonzini * config/ltmain.in (piecewise linking): Use a GNU ld script if possible. * m4/libtool.m4 (_LT_LINKER_SHLIBS): Add per-tag variable with_gnu_ld. (_LT_LANG_CXX_CONFIG): Don't set unused variable with_gnu_ldcxx. 2004-08-22 Gary V. Vaughan The Grand Renaming. In preparation for libtool-2.0, move all of the many and varied m4 symbols accumulated by libtool over the years, considering also that modern autoconf can detect unexpanded macros even without AC in the macro name: * bootstrap: Remove libltdl/config.h from previous releases. * m4/libtool.m4, m4/ltdl.m4, doc/libtool.texi: Basically, run a giant sed transformation like this: s,AC_LIB_LTDL,LTDL_INIT,g s,AC_LIBLTDL_CONVENIENCE,LTDL_CONVENIENCE,g s,AC_LIBLTDL_INSTALLABLE,LTDL_INSTALLABLE,g s,AC_WITH_LTDL,LT_WITH_LTDL,g s,AC_LTDL_ENABLE_INSTALL,_LT_ENABLE_INSTALL,g s,AC_DEPLIBS_CHECK_METHOD,_LT_CHECK_MAGIC_METHOD,g s,AC_LIBTOOL_OBJDIR,_LT_CHECK_OBJDIR,g s,AC_LTDL_OBJDIR,_LT_CHECK_OBJDIR,g s,AC_LTDL_DLPREOPEN,_LT_CHECK_DLPREOPEN,g s,AC_LIBTOOL_SYS_MAX_CMD_LEN,LT_CMD_MAX_LEN,g s,AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE,_LT_CMD_GLOBAL_SYMBOLS,g s,AC_LIBTOOL_SYS_OLD_ARCHIVE,_LT_CMD_OLD_ARCHIVE,g s,AC_PROG_LD_RELOAD_FLAG,_LT_CMD_RELOAD,g s,AC_LIBTOOL_SYS_LIB_STRIP,_LT_CMD_STRIPLIB,g s,AC_CHECK_LIBM,LT_LIB_M,g s,AC_LTDL_DLLIB,LT_LIB_DLLOAD,g s,AC_LIBTOOL_COMPILER_OPTION,_LT_COMPILER_OPTION,g s,AC_LIBTOOL_PROG_CC_C_O,_LT_COMPILER_C_O,g s,AC_LIBTOOL_PROG_COMPILER_NO_RTTI,_LT_COMPILER_NO_RTTI,g s,AC_LIBTOOL_PROG_COMPILER_PIC,_LT_COMPILER_PIC,g s,AC_LIBTOOL_SYS_HARD_LINK_LOCKS,_LT_COMPILER_FILE_LOCKS,g s,AC_LTDL_DLSYM_USCORE,LT_FUNC_DLSYM_USCORE,g s,AC_LIBTOOL_LINKER_OPTION,_LT_LINKER_OPTION,g s,AC_LIBTOOL_PROG_LD_SHLIBS,_LT_LINKER_SHLIBS,g s,AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH,_LT_LINKER_HARDCODE_LIBPATH,g s,AC_PATH_MAGIC,_LT_PATH_MAGIC,g s,AC_PATH_TOOL_PREFIX,_LT_PATH_TOOL_PREFIX,g s,AC_PROG_LD,LT_PATH_LD,g s,AC_PROG_LD_GNU,_LT_PATH_LD_GNU,g s,AC_PROG_NM,LT_PATH_NM,g s,AC_LTDL_SYS_DLOPEN_DEPLIBS,LT_SYS_DLOPEN_DEPLIBS,g s,AC_LIBTOOL_DLOPEN_SELF,LT_SYS_DLOPEN_SELF,g s,AC_LIBTOOL_POSTDEP_PREDEP,_LT_SYS_HIDDEN_LIBDEPS,g s,AC_LTDL_SYSSEARCHPATH,LT_SYS_DLSEARCH_PATH,g s,AC_LTDL_SHLIBEXT,LT_SYS_MODULE_EXT,g s,AC_LTDL_SHLIBPATH,LT_SYS_MODULE_PATH,g s,AC_LTDL_SYMBOL_USCORE,LT_SYS_SYMBOL_USCORE,g s,AC_LIBTOOL_SYS_DYNAMIC_LINKER,_LT_SYS_DYNAMIC_LINKER,g s,_LT_AC_TAGVAR,_LT_TAGVAR,g s,_LT_AC_SYS_COMPILER,_LT_TAG_COMPILER,g s,_LT_AC_PROG_ECHO_BACKSLASH,_LT_PROG_ECHO_BACKSLASH,g s,_LT_AC_SYS_LIBPATH_AIX,_LT_SYS_MODULE_PATH_AIX,g s,_LT_AC_SHELL_INIT,_LT_SHELL_INIT,g s,_LT_AC_LOCK,_LT_ENABLE_LOCK,g s,_LT_AC_CHECK_DLFCN,_LT_HEADER_DLFCN,g s,_LT_AC_TRY_DLOPEN_SELF,_LT_TRY_DLOPEN_SELF,g s,LT_AC_PROG_EGREP,_LT_DECL_EGREP,g s,LT_AC_PROG_SED,_LT_DECL_SED,g * doc/libtool.texi (Autoconf macros): Document exported macros. * libtoolize.in: Compare ltdl.m4 serial numbers for LTDL_INIT instead of newly obsoleted AC_LIB_LTDL. (func_scan_files): Also set seen_ltdl for LTDL_INIT and LT_WITH_LTDL. 2004-08-12 Peter O'Gorman * m4/libtool.m4 [GNU/linux] (AC_DEPLIBS_CHECK_METHOD): Cleanup, thanks to Daniel Reed. 2004-08-11 Daniel Reed * tests/demo-nopic.test: Do not run on x86_64 or s390* 2004-08-06 Gary V. Vaughan * libltdl/ltdl.c (lt_dlforeachfile): LT_SYS_LIBSEARCH_PATH is not an environment variable, it is an actual path. * bootstrap: Remove `-f Makefile.am' now that we have an actual Makefile to build ltmain.sh. Reported by Noah Mish 2004-08-05 Gary V. Vaughan * bootstrap: Run the bootstrap rules from a file named Makefile, copied from Makefile.am for fresh checkouts. 2004-08-05 Alexandre Duret-Lutz * m4/libtool.m4 (_LT_PROG_LTMAIN): Require ltmain.sh using using Autoconf's new AC_REQUIRE_AUX_FILE. 2004-08-05 Gary V. Vaughan * Makefile.am ($(top_srcdir)/config/ltmain.sh): Depends on Makefile. (timestamp): Factor out timestamp setting and edit it based on the version number, so that it is empty for release versions. ($(top_srcdir)/config/ltmain.sh): Use it. (libtoolize): Ditto. * Makefile.am (libtool): Depends on ltmain.sh. (libtoolize): Set and substitute TIMESTAMP. * Makefile.am ($(top_srcdir)/config/ltmain.sh): Actually run $(MKSTAMP) before changing directories, or it won't be found. Forgot to save before my last commit :-( * Makefile.am ($(top_srcdir)/m4/ltversion.m4): Since we already did `cd $(top_srcdir)' for this rule, we can't mv ltversion.tmp to the relative $(top_srcdir) again! Also, run $(MKSTAMP) before changing directories, or it won't be found. ($(top_srcdir)/config/ltmain.sh): Ditto. (EXTRA_DIST): We should distribute ltversion.m4 too. 2004-08-04 Peter O'Gorman * m4/libtool.m4 (AC_LIBTOOL_SYS_MAX_CMD_LEN): Since CONFIG_SHELL may not actually be set, we should use SHELL here, also make darn sure that SHELL is set to something. Bug from Willem Jan Palenstijn . 2004-08-03 Jacob Meuser * ltmain.in: Allow some static libraries to be used in generating a shared library on NetBSD and OpenBSD. match-pattern_regex decides which are good. 2004-08-02 Geoffrey Keating * m4/libtool.m4 [darwin]: Don't use -all_load. 2004-08-01 Maciej W. Rozycki * m4/libtool.m4 (LT_AC_PROG_SED): Set SED when running from cache as well. 2004-07-31 Gary V. Vaughan Although libtool is optimised to not need to subconfigure libltdl, the installed libltdl sources for libtoolize need to put libltdl/configure.ac in the parent package so that *it* can subconfigure libltdl. That way we don't put any constraints on the build system used by the parent package because the libtoolized libltdl subtree is a self-contained sub-project: * libltdl/Makefile.am (EXTRA_DIST): Add configure.ac. (nobase_ltdldata_DATA): Change back to libltdl's own configure.ac. 2004-07-30 Gary V. Vaughan My thanks to Alexandre Duret-Lutz for the insight required to write this changeset -- especially that ltmain.sh is the same on any machine for a given release, which I hadn't noticed for some bizarre reason: It turns out that generating distributed files from configure causes no end of hassle, as evidenced by the many patches I've generated over the last few days to try and get the dist and distcheck make rules to work. Instead of all that hair, we now simply generate our distributed files (now including ltmain.sh) with make rules -- and since automake creates make variables for all AC_SUBSTs, that is really easy. The code looks a lot more like automake and autoconf Makefile.ams now, and doesn't have all the rough edges the earlier hacky solution suffered from. We still generate libtool from config.status, but that is not a distributed file, and doesn't break the golden rule. Besides, there is way more going on there than a bunch of substitutions: * Makefile.am (edit): New common sed substitutions for files now generated by make instead of config.status. (CLEANFILES): Clean new tmp files. (EXTRA_DIST): Add ltmain.sh. (vcl-tmp): Reinstated. (m4/ltversion.m4, config/ltmain.sh): New rules. Generate from here instead of config.status. (libtoolize): Ditto. (libtool): Call config.status to regenerate if necessary. (dist-hook): Removed. * config/ltmain.in: Moved here from top_srcdir. * README-alpha: Update instructions to check AS_SHELL_SANITIZE is up to date. * bootstrap: Rewritten. Generate m4/ltversion.m4 and config/ltmain.sh because configure depends on them. * configure.ac (AC_CONFIG_SRCDIR): Use libtoolize.in now that ltmain.in has moved. (AC_CONFIG_FILES): Don't generate distributed files, config/ltmain.sh and libtoolize from config.status. We have make rules to do that now. 2004-07-30 Peter O'Gorman * m4/libtool.m4, ltmain.in: readd the comments that I erased. * ltmain.in [darwin]: We already had a module var, there can be only one. * m4/libtool.m4, ltmain.in: autoconf now says the best thing to do with CDPATH is to (unset CDPATH) >/dev/null 2>&1 && unset CDPATH, so do it. 2004-07-29 Gary V. Vaughan * Makefile.am ($(top_srcdir)/config/ltmain.sh): Ugh. More hair to help `make distcheck'; not only do we have to make a copy of ltmain.sh available in the source tree, but we have to be really careful about permission bit twiddling when we copy it across into the possible read-only $(top_srcdir)/config directory! * tests/tagtrace.test: Skip this test when running a VPATH build against a read-only source tree (as in distcheck for example), since autoconf wants to write temporary files in $top_srcdir otherwise. * Makefile.am ($(top_srcdir)/config/ltmain.sh): Automake assumes, quite rightly for every project except libtool, that there will be an ltmain.sh in the source tree. (EXTRA_DIST): As do the dist rules it generates. (dist-hook): Even though we definitely don't want to distribute our local ltmain.sh. * config/config.guess, config/config.sub: Don't check these in, they cause spurious conflicts on cvs commit and update, and are added by bootstrap in any case. * configure.ac (AC_INIT): Revert an accidental commit from my testing of package_revision. 2004-07-29 Alexandre Duret-Lutz * doc/libtool.texi (Tags): Document CC. * m4/libtool.m4 (_LT_SETUP): Register CC as supported tag so that Automake uses it. 2004-07-28 Gary V. Vaughan Fix a long-standing bug where macro_version was always empty in the generated m4/ltversion.m4. Except for CVS revisions: * ltmain.in (package_revision): Don't try to deduce it from TIMESTAMP, since that is empty for release versions; simply substitute it... * configure.ac (package_revision): ...from here, having precalculated it before resetting TIMESTAMP for release versions. * bootstrap: Force regeneration of m4/ltversion.m4, but retain timestamps if there is no change to the content. 2004-07-28 Gary V. Vaughan To take full advantage of this, libtool must be bootstrapped with CVS autoconf, otherwise pdksh chokes on some nested escaped quotes from libtool.m4. Using CVS autoconf protects configure from non-bourne compatible shells in the same way this changeset protects libtool and libtoolize: * libtoolize.in: Include latest CVS autoconf AS_SHELL_SANITIZE expansion to make various shells fully bourne compatible. * ltmain.in: Ditto. * m4/libtool.m4 (AC_PATH_TOOL_PREFIX): Remove spurious quotes, the RHS of = assignment is not IFS split. (_LT_LANG_CXX_CONFIG): Ditto. (AC_LIBTOOL_POSTDEP_PREDEP): Ditto. 2004-07-27 Gary V. Vaughan This change fixes another VPATH build bug, where the vcl.tmp target forced a rebuild of stamp-vcl in the build tree (and hence regeneration of m4/ltversion.m4, thus an automake driven rebootstrap that doesn't know about $fakes) requiring a fresh ./bootstrap after every cvs/tla update: * Makefile.am (vcl.tmp): Removed. (stamp-vcl): Adopt former vcl.tmp target rules. 2004-07-25 Gary V. Vaughan * ltmain.in: Make sure that dependency libraries of -dlpreopened libraries are propogated properly. 2004-07-23 Joe Orton * libtool.m4: Treat bsdi5* like bsdi4*. 2004-07-22 Peter O'Gorman * ltmain.in [darwin](func_extract_archives): $SED not sed. * ltmain.in [darwin](func_extract_archives): Clean up last commit a little, some suggestions are from Albert Chin, those that are broken are mine. * libltdl/Makefile.am, libltdl/loaders/Makefile.am: Look for included files in the right places. 2004-07-18 Peter O'Gorman * ltmain.in [darwin](func_extract_archives): Because fat archives on darwin can not be extracted using ar, we need to use lipo to extract the thin archives and then use lipo again to generate the individual fat objects. This should allow people to run configure with CC set to "cc -arch ppc -arch ppc64" or "cc -arch ppc -arch i386" or whatever to match the toolchain they have available. 2004-07-18 Greg Eisenhauer * libltdl/loaders/Makefile.am: Use AM_MAKEFLAGS not MAKEFLAGS. 2004-07-18 Peter O'Gorman * libltdl/Makefile.am: Ensure that lt__dirent.h is part of the dist, also make failed looking for configure.ac, look for $(top_srcdir)/configure.ac instead. 2004-07-15 Gary V. Vaughan * libltdl/lt__private.h (lt_dlhandle_struct): Renamed to lt__handle to better reflect the naming scheme. * libltdl/ltdl.h (lt_dlhandle): Be truly opaque with a void *. * libltdl/lt_dlloader.c (lt_dlloader_remove): Party to lt__private.h, so use internal lt__handle instead of opaque lt_dlhandle. * libltdl/ltdl.c (LT_DLGET_FLAG, LT_DLSET_FLAG): Add a cast to internal lt__handle type. (try_dlopen, tryall_dlopen, load_deplibs, unload_deplibs): Ditto. (lt_dlexit, lt_dlclose, lt_dlsym): Use lt__handle to iterate throught the handle list. (try_dlopen): Use lt__zalloc instead of MALLOC and memset. * libltdl/ltdl.h (lt_dlcaller_id): Be truly opaque with a void *. (lt_dlhandle_interface): New callback type for filtering handles according to the interface they present. * libltdl/ltdl.c (lt_dlcaller_register): Take an id and an interface check callback, and generate a caller_id. (iterator): New static variable for the use of... (lt_dlhandle_first): New function. Set the iterator for subsequent calls to lt_dlhandle_next. (lt_dlhandle_next): Either work as before when iterator is unset, or else skip handles that fail the interface check in iterator set by lt_dlhandle_first. * libltdl/ltdl.h (lt_dlhandle_first): Declaration. * doc/libtool.texi (User defined module data): Document the new APIs. * NEWS: Updated. 2004-07-15 Gary V. Vaughan Split lt_dlloader management into a separate file, and factor `loaders' list management into a new SList ADT. In the process, the API for writing loaders is a little cleaner, so all the existing loaders were tweaked to take advantage of that: * libltdl/slist.h, libltdl/slist.c: New files implementing a generic singly linked list container ADT. The ADT is purely internal, and none of its API's are visible from an installed libltdl. * libltdl/lt_dlloader.h (lt_dlloader): Removed next field again :-) Renamed to lt_dlvtable for API. Changed all callers. (lt_dlloader_get): New function to turn an lt_dlloader into its associated lt_dlvtable. (lt_dlloader_add): Removed unused data parameter. The caller data belongs to (and is set by) the loader itself, not the loader's client. Changed all callers. (lt_dlloader_name, lt_dlloader_data): Removed. Use lt_dlloader_get instead! * libltdl/lt__private.h: Include slist.h. (lt__alloc_die_callback): Add missing LT_SCOPE to declaration. (lt_dlhandle_struct): Use lt_dlvtable instead of opaque lt_dlloader. * libltdl/ltdl.c (lt_dlexit): Rewritten for the new loader API. (loaders, lt_dlloader_add, lt_dlloader_remove, lt_dlloader_next, lt_dlloader_find): Moved from here... * libltdl/lt_dlloader.c ((loaders, lt_dlloader_add, lt_dlloader_remove, lt_dlloader_next, lt_dlloader_find): ...to here. And rewritten in terms of new SList interface. * libltdl/ltdl.c (lt_dlexit, tryall_dlopen): Rewritten in terms of new lt_dlloader interface. * libltdl/Makefile.am (libdlloader_la_SOURCES): Add slist.h and slist.c. Move lt_dlloader.h from here... (pkginclude_HEADERS): ...to here. (libltdl_la_SOURCES): Add lt_dlloader.c and lt_dlloader.h. 2004-07-15 Gary V. Vaughan Collapse two almost identical structures into one: * libltdl/lt_dlloader.h (lt_dlloader): Add next field. * libltdl/ltdl.c (lt_user_dlloader): Remove entirely. Change all callers to use lt_dlloader instead. Add a compatibility macro. (lt_dlloader_add): Remove copy and allocate stage, just hook directly into the loaders list. 2004-07-15 Gary V. Vaughan A cleaner way to access the private fields of an lt_dlhandle than my move of the module field into lt_dlinfo: * libltdl/ltdl.c (lt_caller_data, lt_dlhandle_struct): Move from here... * libltdl/lt__private.h (lt_caller_data, lt_dlhandle_struct): ...to here. And put the module field back here... * libltdl/ltdl.h (lt_dlinfo): ...instead of here. * libltdl/loaders/loadlibrary.c (vm_open): Adjust. 2004-07-15 Gary V. Vaughan * libltdl/lt__private.h (streq, strneq): New macros to make strcmp calls as used for simple comparison easier to read. * libltdl/loaders/dyld.c, libltdl/loaders/preopen.c, libltdl/ltdl.c: Use them! 2004-07-15 Gary V. Vaughan This pervasive changeset makes two intertwined deep changes to the operation of libtool (neither would work alone). First, there is a new feature that allows libraries to preopen modules. This entails a backwards incompatible change to the libltdl API for separating out the preloaded symbol lists by owner. Second, in the tradition of "eating our own dogfood", libltdl now preloads its own dlloaders. The internal API for dlloaders has also had to change in a backwards incompatible way in support of the new library preloading feature. If you don't use preloaded libraries, you needn't change your project sources, though you will need to recompile against the new libltdl. The API changes are mostly confined to dlloaders, so you probably needn't worry about those (unless you have written a custom loader that you want libltdl to use): * configure.ac (AC_CONFIG_FILES): Add libltdl/loaders/Makefile. * libltdl/configure.ac (AC_CONFIG_FILES): Add loaders/Makefile. * libltdl/loaders: New directory for module loaders, to simplify Makefile rules, and to give the loaders themselves names that are unique in the first few characters. * libtoolize.in (func_copy_all_files): Copy recursively to pick up the loaders directory contents. * libltdl/loaders/Makefile.am: New file. Move module building rules to here... * libltdl/Makefile.am: ...from here. (VERSION_INFO): Bumped version info to signify interface changes. (libltdl_la_CPPFLAGS, libltdlc_la_CPPFLAGS): Set LTDLOPEN appropriately for each library. * libltdl/loader-dld_link.c, libltdl/loader-dlopen.c, libltdl/loader-dyld.c, libltdl/loader-load_add_on.c, libltdl/loader-loadlibrary.c libltdl/loader-preopen.c, libltdl/loader-shl_load.c: Moved from here... * libltdl/loaders/dld_link.c, libltdl/loaders/dlopen.c, libltdl/loaders/dyld.c, libltdl/loaders/load_add_on.c, libltdl/loaders/loadlibrary.c libltdl/loaders/preopen.c, libltdl/loaders/shl_load.c: ...to here. (get_vtable): New entry function for each. * libltdl/loaders/preopen.c (lt_dlsymlists_t): Replaced by... (symlist_chain): ...a new structure which maps lists of preloaded symbols from the object that loads them. (lt_dlpreload_open): New function to automatically open all preloaded modules belonging to a named object (ORIGINATOR). * libltdl/lt__alloc.c (lt__zalloc): New function to return a block of zeroed out new memory. * libltdl/lt__alloc.h (lt__zalloc): Prototype it. * libltdl/lt__private.h (lt__alloc_die_callback): Add missing prototype. (lt__error_strings): Make this opaque to callers. * libltdl/lt_error.c (lt__error_strings): Move the implementation to here. * libltdl/lt_dlloader.h (lt_user_dlloader): Add extra fields to make originator focused preloading possible. *BREAKS BACKWARDS COMPATIBILITY* (lt_dlloader_add): Take advantage of new fields to simplify paramater list. * libltdl/lt_system.h (LT_STR): New ANSI stringification macro. (LT_CONC): Fix it to work from within macros. * libltdl/ltdl.c (loader_init, loader_init_callback): Simplify dlloader loading. (get_vtable, preloaded_symbols): Point these at the preopen.c symbols to bootstrap the loader chain. (lt_dlinit): Load the preopen dlloader manually, and then use it to load any other preloaded dlloaders. (lt_dlloader_add): Simplify parameter list. Populate new fields. Chain new loaders according to priority field. * libltdl/ltdl.h (lt_dlsymlist): Add a new originator field. (lt_dlpreload_callback_func): Type of a callback for automatic lt_dlpreload_open loading. (LTDL_SET_PRELOADED_SYMBOLS): Adjust to hook into preloaded symbols from the "@PROGRAM@" originator. * tests/demo/dlmain.c (main): Use mangled preloaded_symbols symbol. * tests/pdemo/longer_file_name_dlmain.c (main): Ditto. * ltmain.in: Don't spew spurious warnings when dlopening and dlpreopening modules. (func_generate_dlsyms): Factored out from multiple copies in the rest of the code. Generate originator keyed symbol lists. (func_extract_archives): Also factored. Extract the contents of convenience archives for linking with dependent libraries when --whole-archive is not available. [darwin]: Don't try to link $old_library unless it exists, and $lib is a bundle. * m4/ltdl.m4 (AC_LTDL_DLLIB): Check for all possible dynamic loading libraries/apis rather that stopping when an acceptable one is discovered. (LT_DLLOADERS): New variable for holding dlloaders that can be preloaded. * doc/libtool.texi: Document interface changes. * NEWS: Updated. 2004-07-12 Peter O'Gorman * m4/libtool.m4 [darwin]: Set whole_archive_flag_spec to '' for xlc, or it does not pass it's tests. xlc passes -noall_load (the default) and when -all_load is also specified Apple's /usr/bin/libtool barfs and dies. 2004-07-07 Gary V. Vaughan * libltdl/ltdl.h (lt_dlinfo): Move private module field to here... * libltdl/ltdl.c (lt_dlhandle_struct): ...from here. Changed all callers. * libltdl/loader-loadlibrary.c (sys_wll_open): Use new inteface to scan loaded handle->info.module fields for previously loaded modules. * doc/libtool.texi (User defined module data): Document changes to the interface. * NEWS: Updated. Reported by Chuck Wilson 2004-07-07 Brad * m4/libtool.m4: Fixes for the OpenBSD support 2004-06-24 Noah Misch * ltmain.in: Unset the zsh GLOB_SUBST option, which makes zsh handle backslash quoting poorly, before doing anything else. * tests/defs: Likewise. 2004-06-21 Gary V. Vaughan * libtoolize.in (libtoolize_flags): With the --ltdl option, we libtoolize the libltdl subdirectory automatically. * m4/ltdl.m4 (AC_WITH_LTDL): Fix overquoted args. 2004-06-21 Peter O'Gorman * ltmain.in (dependency_libs) [darwin]: Remove -framework stuff from dependency_libs. Instead, invent a new .la var "inherited_linker_flags" to keep any linker flags which should be used when linking the library, but are outside the usual -L -l, -R etc that can be used in dependency_libs. Any unusual flags in dependency_libs cause recent versions of libtool to die with "cannot find the library `'", so it is required to move frameworks out of there. :( 2004-06-21 Gary V. Vaughan From Ralf Wildenhues : * libtoolize.in: Quote $# to make sh.test happy again. * m4/ltdl.m4 (AC_WITH_LTDL): Remove redundant AC_REQUIRE calls. Either set variables to allow a client to link with the installed libltdl, or else compile a local libltdl as a convenience library. * libtoolize.in (opt_ltdl): Removed in favour of... (ltdldir): ...this, which is defaulted to "libltdl" or can be set by the user with an argument to --ltdl. (Main): Use it! * doc/libtool.texi (Distributing libltdl): Improved documentation on libltdl. (Invoking libtoolize): Document new optional --ltdl target directory argument. 2004-06-17 Gary V. Vaughan * m4/libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS) [darwin*]: Fix a typo in allow_undefined_flag: s,${Wl},${wl},g * libtoolize.in (func_scan_files): Accept AC_WITH_LTDL as an indication that libltdl is being used. (Main): Without AC_CONFIG_MACRO_DIR, don't just dump all the macro files in `.' since they are never used, and aclocal will copy them from $aclocaldir into aclocal.m4 anyway. Reported by Alexandre Duret-Lutz 2004-06-16 Brad * m4/libtool.m4: More improvements to OpenBSD support. * NEWS: Updated. 2004-06-16 Gary V. Vaughan libltdl uses LIBOBJS, which leak out into a parent project if both share the same configure.ac. Libtool itself doesn't compile any code, so it is okay to do it during bootstrap, but other projects need to treat libltdl as a configurable subproject to keep their respective LIBOBJS separate: * libltdl/configure.ac: New file, based on configure.ac. * libltdl/Makefile.am (AC_LOCAL_AMFLAGS): Use our own m4 directory. (ltdldata_DATA): List *all* the files that libtoolize --ltdl will install. 2004-06-16 Gary V. Vaughan Automake 1.9 won't have the AC_PROG_EGREP bug (aclocal used to pull an old installed libtool.m4 as well as the bootstrap m4/libtool.m4 if an AC_DEFUN was removed), and we have lt~obsolete.m4 to work around it in the mean time. libtoolize can install macro files from $prefix/share/aclocal perfectly well without us needing to move to a whole other directory: * Makefile.am (pkgmacro_DATA): Renamed to aclocal_DATA, so m4 files are installed to $prefix/share/aclocal again. (install-data-local): Don't remove just installed macros! * libtoolize.in (pkgmacrodir): Renamed to aclocaldir. (func_copy_some_files): New function factored out of... (func_copy_all_files): ...here. Adjust to use func_copy_some_files. (re_pkgaux_files): Renamed to glob_pkgaux_files, since it is not a regular expression. (re_pkgmagro_files): Replaced with... (pkgmacro_files): ...a colon delimited list of libtool installed m4 files from aclocaldir. (Main): Copy macro files from aclocaldir again. * NEWS: Updated. 2004-05-21 Bob Friesenhahn * ltmain.sh (check_executable): The WIN32 API and MinGW do not support S_IXOTH and S_IXGRP so use of these modes should be conditional. 2004-05-21 Gary V. Vaughan * tests/tagtrace.test: Forgot to add this file to the repository for Alexandre's 2004-05-16 patch below. 2004-05-18 Peter O'Gorman * m4/libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER): Make this an m4_defun, test the tags compiler to see if it is GCC, not the CC compiler. 2004-05-16 Alexandre Duret-Lutz * doc/libtool.texi (Invoking libtool): Mention --tag=TAG. (Tags, Trace interface): New nodes. * m4/libtool.m4 (LT_SUPPORTED_TAG): New macro. (_LT_LANG): Call it. * tests/tagtrace.test: New file. * tests/Makefile.am (TESTS): Add tagtrace.test. * tests/defs: Define AUTOCONF. 2004-05-14 Mike Gorchak * ltmain.in: Add new qnx version type support. * m4/libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER): Use it. Set ldqnx.so linker type. (AC_DEPLIBS_CHECK_METHOD): QNX6 uses GNU C++, with deplib checking, so use pass_all. (AC_LIBTOOL_PROG_COMPILER_PIC): Use -shared for QNX. (_LT_LANG_CXX_CONFIG): QNX can make shared libraries. * m4/ltdl.m4 (AC_LTDL_SYS_DLOPEN_DEPLIBS): QNX opens deplibs on dlopen. * NEWS: Updated. 2004-05-05 Peter O'Gorman * m4/libtool.m4 (AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH): Insert space around = for a test and a comma between runpath_var and $1. Bug reported by Max Bowsher. 2004-04-22 Gary V. Vaughan * libltdl/argz.h: Moved from here... * libltdl/argz_.h: ...to here, so as not to shadow system argz.h when we `#include ' for example. #include stdlib.h and sys/types.h to ensure we get a size_t definition. * libltdl/argz.c (HAVE_CONFIG_H): Set it up how ltdl likes it when used by another client. * m4/argz.m4: New file. (gl_FUNC_ARGZ): Try to find an error_t definition, and a system argz.h. * m4/ltdl.m4: Use it. (AC_LTDL_FUNC_ARGZ): Removed. * libltdl/lt__glibc.h: #include to pick up either the system argz.h or our libltdl/argz.h if necessary. * libltdl/Makefile.am (libltdl_la_SOURCES): Move argz.h from here... (ltdldata_DATA): ...here. Along with argz.c. (argz.h): Generate from argz_.h if the system file is missing. Reported by Ralf Wildenhues 2004-04-22 Gary V. Vaughan According to Howard Chu : Applications should assume that the native dlopen is NOT thread-safe, and take care of locking themselves. All application calls into libltdl should thus be protected by the caller. * libltdl/lt_mutex.c, libltdl/lt_mutex.h: Removed. * libltdl/Makefile.am (pkginclude_HEADERS): Removed lt_mutex.h. (libltdl_la_SOURCES): Removed lt_mutex.c and lt_mutex.h. * libltdl/ltdl.h: Don't include lt_mutex.h. * libltdl/lt__private.h (LT__MUTEX_GETERROR, LT__MUTEX_SETERROR) (LT__MUTEX_SETERRORSTR): Renamed to... (LT__GETERROR, LT__SETERROR, LT__SETERRORSTR): ...this. Changed all callers. (LT__MUTEX_LOCK, LT__MUTEX_UNLOCK, lt_dlmutex_lock) (lt_dlmutex_unlock, lt_dlmutex_seterror, lt_dlmutex_geterror): Removed. Changed all callers. * doc/libtool.texi (Thread Saftey in libltdl): * NEWS: Updated. 2004-04-19 Gary V. Vaughan * m4/libtool.m4 (_LT_LANG_CXX_CONFIG): Detect Intel C++ compiler version more idiomatically. 2004-04-19 Albert Chin-A-Young * m4/libtool.m4: Use cc rather than ld to created a shared library on HP-UX 11.x. On HP-UX 10.x, the C compiler doesn't grok -b so we continue to use ld. * m4/libtool.m4: Use cc rather than ld to create a shared library on Solaris. When using the Sun Workshop compiler 5.0 (and I presume any previous version), revert to ld due to compiler errors. * m4/libtool.m4: Use cc rather than ld to created a shared library on Tru64 UNIX. * m4/libtool.m4: Use cc rather than ld to created a shared library on IRIX. * libltdl/loader-shl_load.c: Fix typos during reorg. 2004-04-19 Alexandre Duret-Lutz * doc/libtool.texi (LT_INIT): Properly display options in a table. 2004-04-19 Gary V. Vaughan * m4/libtool.m4 (_LT_LANG_CXX_CONFIG): Intel C++ compiler 8.0 and newer adds predep_objects and postdep_objects itself, so don't duplicate them in $archive_cmds and $archive_expsym_cmds. * NEWS: Updated. Reported by Roberto Bagnara 2004-04-17 Peter O'Gorman * libltdl/loader-dyld.c: Fix compilation issues. Set Original author to me. 2004-04-17 Todd Vierling , Peter O'Gorman * m4/libtool.m4 (AC_LIBTOOL_SYS_MAX_CMD_LEN): Use sysctl to get the max cmd length on BSD* and darwin. Make sure that there is a safety factor too. 2004-04-15 Scott James Remnant * m4/libtool.m4 (_LT_LANG_DEFAULT_CONFIG): Remove code to handle 'none' and 'all' options, this now always assumes automatic mode as that works so well. (_LT_LANG_DEFAULT): Remove definition * m4/ltoptions.m4: Remove 'no-lang', 'auto-lang' and 'all-lang' options. * configure.ac: Invoke LT_LANG for each desired supported language. * doc/libtool.texi: Remove documentation for the LT_INIT options, rewrite LT_LANG documentation. 2004-04-14 Alexandre Duret-Lutz * bootstrap: Delete acinclude.m4. 2004-04-14 Gary V. Vaughan * libtoolize.in (configure_ac): Don't complain about the lack of aclocal.m4. Reported by Alexandre Duret-Lutz 2004-04-13 Gary V. Vaughan * m4/ltdl.m4 (AC_LIB_LTDL): Remove AC_REPLACE_FUNCS for memmove and strcpy. * libltdl/lt__pre89.h, libltdl/memcpy.c, libltdl/memmove.c, libltdl/strchr.c, libltdl/strcmp.c, libltdl/strrchr.c: Remove half-assed pre-c89 support entirely. * libltdl/lt__private.h: Don't refer to lt__pre89.h. * libltdl/Makefile.am (ltdldata_DATA): Remove references to deleted files. * NEWS: Mention it. * libltdl/lt__pre89.h, libltdl/ltdl.c, libltdl/ltdl.h, libltdl/argz.c, libltdl/argz.h, libltdl/lt__glibc.h, libltdl/lt_dlloader.h, libltdl/lt__dirent.c, libltdl/lt__dirent.h, libltdl/lt__private.h, libltdl/lt__alloc.c, libltdl/lt__alloc.h, libltdl/lt_system.h, libltdl/loader-dld_link.c, libltdl/loader-dlopen.c, libltdl/loader-dyld.c, libltdl/loader-loadlibrary.c, libltdl/loader-shl_load.c, libltdl/lt_error.h, libltdl/lt_mutex.h: Autoconf either defines to 1 or undefs the discovery macros it puts in config.h, and many (non-GNU) compilers throw a spurious warning when testing an #undef macro with #if. For consistency, while we are touching all these lines, use defined(MACRO) style throughout. Reported by Bob Friesenhahn 2004-04-13 Gary V. Vaughan Factor out the individual loaders, in preparation for preloading them as libtool modules. Currently loader-preopen.c is linked unconditionally and other appropriate loaders discovered by AC_LTDL_DLLIB are built and linked in: * libltdl/Makefile.am (libltdl_la_SOURCES): Add loader-preopen module. * m4/ltdl.m4 (AC_LTDL_DLLIB): Use AC_LIBOBJ to add appropriate loaders to libltdl. * libltdl/lt_system.h (LT_SCOPE): Moved to here. * libltdl/ltdl.h (lt_dlloader, lt_user_data, lt_module) (lt_module_open, lt_module_close, lt_find_sym, lt_dlloader_exit) (struct lt_user_dlloader, lt_dlloader_next, lt_dlloader_find) (lt_dlloader_name, lt_dlloader_data, lt_dlloader_add) (lt_dlloader_remove): Moved declarations... * libltdl/lt_loader.h: ...to here. * libltdl/ltdl.c: Include lt_loader.h. Move loader implementation code from here... * libltdl/loader-dld_link.c, libltdl/loader-dlopen.c, libltdl/loader-dyld.c, libltdl/loader-load_add_on.c, libltdl/loader-loadlibrary.c, libltdl/loader-preopen.c, libltdl/loader-shl_load.c: ...to here. * tests/cdemo/Makefile.am, tests/demo/Makefile.am, tests/depdemo/Makefile.am, tests/f77demo/Makefile.am, tests/mdemo/Makefile.am, tests/mdemo2/Makefile.am, tests/pdemo/Makefile.am, tests/tagdemo/Makefile.am (AM_CPPFLAGS): Add -I$(top_srcdir)/../.. so that libltdl include files can be written as #include and found correctly. 2004-04-13 Gary V. Vaughan Factor out the mutex handling and error handling into their own modules. Mutex handling is not currently useful in combination with posix threads, and should be easier to replace if it is in a separate module. Additionally, we can factor out the loaders in such a way as to depend on only the portability layer and these new mutex and error modules now: * libltdl/Makefile.am (pkginclude_HEADERS): Install lt_error.h and lt_mutex.h to $includedir/libltdl. (libltdl_la_SOURCES): Build lt_error and lt_mutex objects. * libltdl/ltdl.h (LT_SCOPE): Moved from here... * libltdl/lt_system.h (LT_SCOPE): ...to here. * libltdl/ltdl.c (lt_dlerror_strings, LT_DLSTRERROR): Moved from here... * libltdl/lt__private.h (lt__error_strings, LT__STRERROR): ...to here as additional internal interfaces to lt_error. Changed all callers. * libltdl/ltdl.c (LT_DLMUTEX_LOCK, LT_DLMUTEX_UNLOCK) (LT_DLMUTEX_SETERROR, LT_DLMUTEX_GETERROR, lt_dlmutex_lock_func) (lt_dlmutex_unlock_func, lt_dlmutex_geterror_func) (lt_dllast_error): Moved from here... (LT__MUTEX_LOCK, LT__MUTEX_UNLOCK, LT__MUTEX_SETERRORSTR) (LT__MUTEX_GETERROR, lt__mutex_lock_func, lt__mutex_unlock_func) (lt__mutex_geterror_func, lt__last_error): ...to here as additional internal interfaces to lt_mutex. Changed all callers. (LT_MUTEX_SETERROR): Take an errorcode rather than a string. Changed all callers. * libltdl/ltdl.c, libltdl/ltdl.h (lt_dlmutex_register): Moved from here... * libltdl/lt_mutex.c, libltdl/lt_mutex.h (lt_dlmutex_register): ...to here. New files. * libltdl/ltdl.c, libltdl/ltdl.h (lt_dladderror, lt_dlseterror) (lt_dlerror_table): Moved from here... * libltdl/lt_error.c, libltdl/lt_error.h (lt_dladderror) (lt_dlseterror, lt_dlerror_table): ...to here. New files. 2004-04-13 Scott James Remnant * Makefile.am (XDELTA_OPTIONS): Remove --pristine as that generates huge xdeltas. 2004-04-08 Gary V. Vaughan * libltdl/ltdl.c (argz_append, argz_create_sep, argz_insert) (argz_next, argz_stringify): Move from here... * libltdl/argz.c: New file. ...to here. * libltdl/lt__glibc.h: New file. Rename global symbols into the lt__ namespace. * libltdl/lt__private.h: Include lt__glibc.h. * libltdl/Makefile.am (libltdl_la_SOURCES): Add new files. (AM_CPPFLAGS): Add -DLTDL. * libltdl/argz.h (argz_append, argz_create_sep, argz_insert) (argz_next, argz_stringify): New file. Declare argz functions here, including lt__glibc.h when LTDL is defined to rename global symbols for libltdl. * m4/ltdl.m4 (AC_LTDL_FUNC_ARGZ): Add argz to AC_LIBOBJ if any of our argz_* functions are missing from the system libraries. * libltdl/ltdl.c: Move standard headers and preprocessor guards from here... * libltdl/lt__private.h: ...to here. New file to declare ltdl's internal interfaces. * libltdl/ltdl.c: Include lt__private.h. * m4/ltdl.m4 (AC_LIB_LTDL): Add lt_dirent to AC_LIBOBJ if all of opendir, readdir and closedir are missing. (AC_CHECK_HEADERS): Remove assert.h, ctype.h, errno.h, malloc.h, stdio.h and stdlib.h; these headers are all available in standard c89 environments and newer. * libltdl/lt__private.h: Include them here unconditionally. * libltdl/lt__dirent.c (opendir, readdir, closedir): New file. Windows dirent emulation functions moved to here... * libltdl/ltdl.c (opendir, readdir, closedir): ...from here. * libltdl/lt__dirent.h: New file. Rename the global symbols from lt__dirent.c into the lt__ namespace so they don't clash with other libraries. 2004-04-08 Gary V. Vaughan Factor out the bottom portability layer from ltdl. Code in this layer has global symbols renamed by lt__pre89.h, and may not refer to any symbols except those provided by the system libraries or other code in the portability layer: * libltdl/lt__pre89.h: New file. Rename all the symbols from LTLIBOBJS into the lt__ namespace so that they don't clash with other libraries. * libltdl/ltdl.c (rpl_memcpy, rpl_memmove, rpl_strchr, rpl_strcmp) (rpl_strrchr): Moved from here... * libltdl/memcpy.c (memcpy): ...to here, and fixed void * dereference bug... * libltdl/memmove.c (memmove): ...to here, and fixed void * dereference bug... * libltdl/strchr.c (strchr): ...to here... * libltdl/strcmp.c (strcmp): ...here... * libltdl/strrchr.c (strrchr): ...and here. * libltdl/Makefile.am (libltdl_la_SOURCES): Add lt__pre89.h. (libltdl_la_LIBADD, libltdlc_la_LIBADD): Add $(LTLIBOBJS). (ltdldata_DATA): Add replacement sources files. * m4/ltdl.m4 (AC_LIB_LTDL): Do careful config.h and LTLIBOBJ setting for missing pre89 functions. 2004-04-08 Gary V. Vaughan * libltdl/ltdl.h (LT_PARAMS): Removed. Changed all users to ANSI prototypes. (lt_ptr): Keep backwards compatibility stub. * libtldl/ltdl.c, libltdl/ltdl.h: Use ANSI function declarations throughout. s/lt_ptr/void */g. 2004-04-08 Fredrik Estreen * m4/ltdl.m4: Rename shrext to shrext_cmds here too. 2004-04-06 Gary V. Vaughan There was no clean separation of abstraction layers in libltdl. The first step in fixing this is to factor out the memory management abstraction, making a start on removing promiscuity from the underlying portability layer: * doc/libtool.texi (Libltdl interface): Remove lt_dlmalloc, lt_dlrealloc and lt_dlfree references. The memory management layer used by libltdl is now private. * libltdl/lt_system.h: New installed header for system portability abstraction. * libltdl/ltdl.h: Use it. * libltdl/lt__alloc.c, libltdl/lt__alloc.h: New module above system portability layer to abstract ltdl's memory management. * libltdl/ltdl.c: Use lt__alloc.h. (closedir): Use free. (opendir): Use malloc/free. (lt__xalloc_die_callback): Report memory failures through lt_dlerror. (lt_dlinit): Use it to initialise memory management. (LT_DLMALLOC, LT_DLREALLOC, LT_DLFREE, LT_EMALLOC, LT_EREALLOC) (rpl_strdup, rpl_realloc, lt_estrdup, lt_emalloc, lt_erealloc): Removed in favour of... (lt__strdup, lt__memdup, MALLOC, REALLOC, FREE): ...these calls from libltdl/lt__alloc.h. Changed all callers. (rpl_argz_append, rpl_argz_create_sep, rpl_argz_insert): As part of the portability layer, these functions no longer use libltdl memory management API. (free_vars): Factored out. (LT_DLMEM_REASSIGN): While redoing memory handling, renamed... * libltdl/lt__alloc.h (MEMREASSIGN): ...to this. * libltdl/Makefile.am (AUTOMAKE_OPTIONS): Let automake track dependencies automatically. (pkgincludedir): Override from parent package's setting. (pkginclude_HEADERS): Install lt_system.h. (libltdl_la_SOURCES): Add new files. * NEWS: Updated. Reported by Dalibor Topic 2004-04-01 Peter O'Gorman * ltmain.in: Remove an extra eval concat_cmds that some idiot added. Fixes double eval on AIX, reported by Albert Chin and Uwe Moeller. * NEWS: Add a news item about xlc support that I forgot yesterday. 2004-03-31 Peter O'Gorman * m4/libtool.m4, ltmain.in (darwin): Support IBM's xlc and xlc++. 2004-03-31 Gary V. Vaughan * m4/libtool.m4 (_LT_LANG_C_CONFIG): If $compiler is not set, then don't call the macros that test it. (_LT_LANG_CXX_CONFIG): Ditto. (_LT_LANG_F77_CONFIG): Ditto. (_LT_LANG_GCJ_CONFIG): Ditto. (_LT_LANG_RC_CONFIG): Ditto. 2004-03-30 Gary V. Vaughan * libtoolize.in (func_scan_files): sed BRE have no alternation, so break LT_INIT matcher out. (func_serial): Don't escape literal parens for grep BRE. * m4/libtool.m4 (LT_INIT): aclocal can't see AC_DEFUN_ONCE, so use AC_DEFUN and m4_define. * libtoolize.in (func_serial): No longer accept AC_DEFUN_ONCE... (func_grep): ...so mere grep is sufficient again... (EGREP): ...and this is no longer required. 2004-03-29 Gary V. Vaughan * m4/libtool.m4: Use LT_INIT as #serial tag. * libtoolize.in: Grok LT_INIT! Pass A[CM]_PROG_LIBTOOL to... (func_serial_update): ...here, we now take an additional parameter containing another regex to match ancient serialed files. (func_serial): Accept AC_DEFUN_ONCE of the #serial tag... (func_grep): ...which requires egrep... (EGREP): ...substituted by config.status. (func_scan_files): Set seen_libtool if LT_INIT goes by. * Makefile.am (pkgmacro_DATA): Install ltoptions.m4. * libltdl/Makefile.am (AM_CPPFLAGS): Also check $top_builddir for config.h. (ltdl.o): config.h is in $top_builddir. 2004-03-24 Scott James Remnant * NEWS: Explain more fully why we no longer load libraries with global symbol resolution. * doc/libtool.texi (libtool script contents): Add missing documentation for 'inherit_rpath' variable. * configure.ac: Catch errors during calls to AC_PROG_CXX, AC_PROG_CXXCPP and AC_PROG_F77 before LT_INIT. Only set the HAVE_CXX and HAVE_F77 conditions to true if an error didn't occur (AC_PROG_CXX leaves CXX="g++" even if it didn't find one). Set HAVE_GCJ and HAVE_RC to true correctly as well. * m4/libtool.m4 (LT_PROG_GCJ): If AC_PROG_GCJ or AM_PROG_GCJ are defined, expand to the definition of those instead of our own. Define GCJ to '' instead of 'no' if not found. (LT_PROG_RC) Define RC to '' instead of 'no' if not found. (_LT_LANG_GCJ_CONFIG): Require LT_PROG_GCJ to be expanded first. (_LT_LANG_RC_CONFIG): Require LT_PROG_RC to be expanded first. * libltdl/ltdl.c (sys_dl_open): Don't load libraries with global symbol resolution. * NEWS: Updated. 2004-03-24 Albert Chin-A-Young * m4/libtool.m4: Add new variable, inherit_rpath, if the RPATHs of the libraries being linked are inherited in the output file. For systems with a linker exhibiting this feature, programs/libraries must be relinked at installation time. * m4/libtool.m4: When linking convenience libraries on Solaris with the Sun C++ compiler, pass convenience libraries through to the linker with -Qoption between allextract/defaultextract. The Sun C++ compiler bundles -Qoption arguments so convenience libraries are linked with defaultextract otherwise. * tagdemo/Makefile.am, tagdemo/main.cpp, tagdemo/conv.h, tagdemo/conv.cpp: Augment tagdemo test to link a convenience library with a libtool library. * ltmain.in: Piecewise linking doesn't work when the output file is an absolute path, use the basename only instead. * ltmain.in: When a library is installed, dependent on a convenience library, and it involves relinking, the object files extracted from the convenience library are not removed after the relink. This is a problem if you build as non-root, install as root, then try to remove the build directory as non-root; Clean up properly if relink fails; Change "$realname"U to ${realname}T to be consistent. 2004-03-24 Scott James Remnant * ltmain.in : Always add -L options to $newlib_search_path instead of just in scan mode to ensure that non-libtool libraries in user-specified directories can be found. 2004-03-22 Scott James Remnant * m4/libtool.m4 (_LT_CONFIG): Remove unneeded else condition code, now the support determination is done in m4. (_LT_LANG): Correct comment, unexpected leak from keybuk-lt-tag.patch. 2004-03-21 Scott James Remnant * libltdl/Makefile.am (libltdl_la_LDFLAGS): Increment CURRENT and AGE of libltdl, warranted by the addition of lt_dlhandle_find() since 1.5.2. 2004-03-21 Scott James Remnant Further sweeping changes to the user interface to libtool from `configure.ac' to allow users to better control the list of supported languages. Three LT_INIT options 'no-lang', 'all-lang' and 'auto-lang' (the default) control the initial list and others may be added with LT_LANG. * m4/libtool.m4 (_LT_CONFIG): Renamed AC_LIBTOOL_CONFIG to _LT_CONFIG which is more consistent with our own namespace and gets us further out of Autoconf's. (_LT_LIBTOOL_TAGS): Output available_tags variable based entirely on the value of _LT_TAGS. (_LT_COPYING): Call _LT_LIBTOOL_TAGS to output available tags, always append tag configuration if the tag is available. (LT_LANG): New macro to enable support for a language that accepts tag names (eg. "CXX") or human language names (eg. "C++"). (_LT_LANG): Internal support macro for above that appends the tag to _LT_TAGS and calls the appropriate config macro. (LT_INIT): Ensure that LT_LANG is not called before LT_INIT. (AC_LIBTOOL_TAGS): Removed, call LT_LANG for each language now. (_LT_AC_TAG_CHECK): Removed, _LT_LANG handles duplicate calls. (_LT_LANG_DEFAULT_CONFIG): Macro to set initial language support based on options passed to LT_INIT. (_LT_SETUP): Call _LT_LANG_DEFAULT_CONFIG. (_LT_AC_TAG_CONFIG): Removed, handled by _LT_LANG_DEFAULT_CONFIG. (_LT_AC_LANG_CXX, _LT_AC_LANG_F77, _LT_AC_LANG_GCJ): Removed, automatic language support inclusion now handled by _LT_LANG_DEFAULT_CONFIG. (AC_LIBTOOL_CXX): Obsolete macro, update to LT_LANG(C++). (AC_LIBTOOL_F77): Obsolete macro, update to LT_LANG(Fortran 77). (AC_LIBTOOL_GCJ): Obsolete macro, update to LT_LANG(Java). (AC_LIBTOOL_LANG_C_CONFIG_: Removed. (_LT_AC_LANG_C_CONFIG): Renamed to _LT_LANG_C_CONFIG, call _LT_CONFIG instead of AC_LIBTOOL_CONFIG. (_LT_SETUP): Replace call to AC_LIBTOOL_LANG_C_CONFIG with call to new _LT_LANG_C_CONFIG macro. (AC_LIBTOOL_LANG_CXX_CONFIG): Removed. (_LT_AC_LANG_CXX_CONFIG): Renamed to _LT_LANG_CXX_CONFIG, call _LT_CONFIG instead of AC_LIBTOOL_CONFIG. (AC_LIBTOOL_LANG_F77_CONFIG): Removed. (_LT_AC_LANG_F77_CONFIG): Renamed to _LT_LANG_F77_CONFIG, call _LT_CONFIG instead of AC_LIBTOOL_CONFIG. (AC_LIBTOOL_LANG_GCJ_CONFIG): Removed. (_LT_AC_LANG_GCJ_CONFIG): Renamed to _LT_LANG_GCJ_CONFIG, call _LT_CONFIG instead of AC_LIBTOOL_CONFIG. (AC_LIBTOOL_LANG_RC_CONFIG): Removed. (_LT_AC_LANG_RC_CONFIG): Renamed to _LT_LANG_RC_CONFIG, call _LT_CONFIG instead of AC_LIBTOOL_CONFIG. (LT_AC_PROG_GCJ): Renamed to LT_PROG_GCJ. (LT_AC_PROG_RC): Renamed to LT_PROG_RC. * m4/ltoptions.m4: Define new 'no-lang', 'auto-lang' and 'all-lang' options which set the default for _LT_LANG_DEFAULT_CONFIG. * m4/lt~obsolete.m4: Removed AC_LIBTOOL_CONFIG, _LT_AC_LANG_C_CONFIG, _LT_AC_LANG_GCJ_CONFIG, _LT_AC_LANG_RC_CONFIG; all of which are no long referenced in any way. * configure.ac: Enable all languages. * tests/cdemo/configure.ac, tests/demo/configure,ac, tests/depdemo/configure.ac, tests/f77demo/configure.ac, tests/mdemo/configure.ac, tests/pdemo/configure,ac, tests/tagdemo/configure.ac: Remove calls to AC_LIBTOOL_TAGS, the default 'auto-lang' mode now does the right thing. * doc/libtool.texi (The LT_INIT macro): Add documentation for new LT_INIT options and the LT_LANG macro, replacing the old documentation of AC_LIBTOOL_TAGS which is no more. * NEWS: Updated. 2004-03-17 Scott James Remnant * m4/libtool.m4: Removed AC_BEFORE references to AC_LIBTOOL_SETUP which is no more. * m4/lt~obsolete.m4: As AC_LIBTOOL_SETUP is no longer referenced, it can be removed from this file. Remove _AC_PROG_LIBTOOL also. 2004-03-14 Ralf Wildenhues * m4/libtool.m4: Remove newlines from lt_ld_extra, so variable can safely be stored in config.cache. 2004-03-14 Michael Pruett * m4/libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS0 [irix]: Define archive_expsym_cmds so that --export-symbols will work. 2004-03-11 Peter O'Gorman * ltmain.in (link_all_deplibs,darwin): Link libraries in the correct order. Bug from Zachary Pincus . 2004-03-14 Scott James Remnant * m4/ltmain.in: Only check precious_files_regex if it is not empty. 2004-03-14 Gary V. Vaughan * doc/libtool.texi (Autoconf and LTLIBOBJS): The correct version of Autoconf is 2.54. From Alexandre Duret-Lutz 2004-03-13 Gary V. Vaughan * doc/libtool.texi (Using Automake): Cite correct Automake version for -dlopen quoting. (Autoconf and LTLIBOBJS): Cite correct Autoconf versions throughout. (Distributing libltdl): Use AM_CPPFLAGS; INCLUDES is deprecated. From Alexandre Duret-Lutz 2004-03-05 David Edelsohn * m4/libtool.m4: Disable building static libraries if building shared libraries on AIX 5L. 2004-03-05 Gary V. Vaughan * libtoolize.in: Remove --ltdl-tar. It doesn't work with the current implementation, and seems more or less pointless. * doc/libtool.texi (Invoking libtoolize): Updated. * NEWS: Updated. * doc/libtool.texi: This manual has not been maintained properly for a number of years. Much of what it said was outdated, or plain wrong with reference to modern autotools. This change represents a first pass edit to clean up the obviously wrong. 2004-03-02 Gary V. Vaughan * bootstrap: Prune out my arch mirror dir before running amok through the tree with 'rm -rf'! 2004-03-02 Patrick Welche * doc/libtool.texi (LT_INIT): Dumb typos fixed. 2004-02-23 Gary V. Vaughan * ltmain.in : Add missing --help doc for -inst-prefix option. * ltmain.in : Add missing --help doc for -shrext option. * ltmain.in (IFS): Move '\n' to beginning of IFS so that emacs doesn't offer to strip trailing ' \t' on every save. * ltmain.in: Add missing --help doc for --preserve-dup-deps. 2004-02-22 Gary V. Vaughan * Makefile.maint (web-manual): Generate the web manual carefully so that links will still work when it is uploaded to gnu.org. * README-alpha: Note that this rule should be used at release time. 2004-02-20 Gary V. Vaughan Sweeping changes to the user interface to libtool from `configure.ac' to be more like AC_INIT and accept a space delimited list of options. Instead of calling `AC_LIBTOOL_DLOPEN; AC_PROG_LIBTOOL', we now recommend `LT_INIT([dlopen])': * m4/libtool.m4 (AC_PROG_LIBTOOL, _AC_PROG_LIBTOOL) (AC_LIBTOOL_SETUP): Removed. Added AU_DEFUNs. (LT_INIT): Replace with an Autoconf like interface which accepts a version number as a minimum required libtool release at configure time. * m4/ltoptions.m4: New file inspired by automake/m4/amoptions.m4, which additionally flags an error if the configuring libtool macros are not new enough according to LT_INIT. (LT_OPTION_DEFINE): New macro to declare option handlers. (dlopen, win32-dll, shared, disable-shared, static) (disable-static, fast-install, disable-fast-install, pic-only) (no-pic): Newly LT_OPTION_DEFINEd option handlers that use... (_LT_ENABLE_SHARED, _LT_ENABLE_STATIC, _LT_ENABLE_FAST_INSTALL) (_LT_WITH_PIC, _LT_WIN32_DLL): New macros to handle LT_LIBTOOL_INIT options... * m4/libtool.m4 (AC_ENABLE_SHARED, AC_ENABLE_STATIC) (AC_ENABLE_FAST_INSTALL, AC_LIBTOOL_DLOPEN, AC_LIBTOOL_WIN32_DLL): ...to replace these user interface macros, now defined as AU_DEFUNs. (AC_DISABLE_SHARED, AC_DISABLE_STATIC, AC_DISABLE_FAST_INSTALL): Removed. No longer required with LT_INIT_LIBTOOL interface. Added AU_DEFUNs. (AM_ENABLE_SHARED, AM_DISABLE_SHARED, AM_ENABLE_STATIC) (AM_DISABLE_STATIC): Changed AU_DEFUNs to match new interface. (_LT_SETUP): Internal to LT_INIT, replaces AC_LIBTOOL_SETUP. * m4/lt~obsolete.m4 (AC_LIBTOOL_SETUP, _AC_PROG_LIBTOOL) (_LT_PROG_LTMAIN): More AC_DEFUNs that have been retracted. * configure.ac: Use new interface. * doc/libtool.texi: Document new interface. * NEWS: Updated. 2004-02-18 Gary V. Vaughan * commit (SHELL): Set it explicitly, incase some madman is using tcsh as their login shell :-b 2004-02-15 Scott James Remnant * Makefile.am (m4/ltversion.m4): Generate serial number by removing initial '1.' from the revision, replace @MACRO_SERIAL@ with this new variable. * m4/ltversion.in: Use @MACRO_SERIAL@ for the serial number as some shells don't like a '.' when using test. * m4/ltversion.in: Add a serial number to this file otherwise libtoolize will refuse to copy it into $pkgdatadir, where it is needed by m4/libtool.m4. 2004-02-15 Peter O'Gorman * m4/libtool.m4, ltmain.in: Rename shrext to shrext_cmds. 2004-02-13 Scott James Remnant * ltmain.in, libtoolize.in, commit, config/mailnotify: Correctly quote usage of $basename and $dirname to avoid (unlikely) path expansion. * tests/sh.test: Test the config/ltmain.sh and libtoolize in the build directory not the source directory, where they won't exist during 'make distcheck'. * ltmain.in: Revert one line of previous intendation clean-up to enable one of the sh.test checks to pass. * tests/cdemo/configure.ac: Drop AC_PREREQ back to 2.54, this was debris from Gary's cvsapply going mad and wasn't backed out. * Makefile.am (pkgmacro_DATA): We have to distribute m4/ltversion.m4 because it can be needed before the Makefile that generates it exists. 2004-02-13 Gary V. Vaughan * commit (MKSTAMP): Look for mkstamp in the right place. 2004-02-12 Scott James Remnant * Makefile.maint, Makefile: Move rules intended for Libtool maintainers only out of the Makefile we distribute and into one that we only need keep in CVS. * README-alpha: Add -fMakefile.maint to the instructions where needed. 2004-02-12 Albert Chin-A-Young Scott James Remnant * ltmain.in: Fix typo: duplcations -> duplications, Fix indentation of a handful of badly indented blocks, Fix last remaining use of 'grep' to $GREP, Remove unnecessary trailing slash where we break a line on a command separator. * m4/libtool.m4: Also remove unnecessary trailing slash where we break a line on a command separator. 2004-02-12 Scott James Remnant * m4/ltoptions.m4: This got committed by an over-keen Gary, but the support for this isn't ready yet and if aclocal decides to m4_include this (which it will) you'll get a non-functioning libtool. Removed. * ltmain.in: Remove duplicated version checking block. * bootstrap, m4/libtool.m4: Argh, Gary went crazy after cvsapply went crazy and backed out more than he should've. This patch puts some of it back again. * ltmain.in, libtoolize.in, commit, config/mailnotify: Remove $SED from definitions of $dirname and $basename and prefix each use with it instead. Some shells (zsh) treat the expansion as a single command instead of a command with arguments. * config/mailnotify (func_sendmail): Look for sendmail in a couple of common non-PATH locations as well. * ltmain.in: Fix typo: macro's -> macros. * ltmain.in: Correct definition of basename sed expression to not include single quotes. 2004-02-12 Gary V. Vaughan * libtoolize.in: Use $progpath as for ltmain.in to work around the IRIX bug described below. * commit, config/mailnotify: Ditto. Resynch with cvs-utils HEAD. 2004-02-12 Albert Chin-A-Young , Gary V. Vaughan * ltmain.in (progpath): Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh is ksh but when the shell is invoked as "sh" and the current value of the _XPG environment variable is not equal to 1 (one), the special positional parameter $0, within a function call, is the name of the function. So, rather than using "$0" in functions, we set $progpath in the body and use that everywhere instead (incase of code refactoring later). (EXIT_SUCCESS, EXIT_FAILURE, EXIT_MISMATCH): For clarity. 2004-02-12 Gary V. Vaughan * Makefile.am (EXTRA_DIST): Remove config/mailnotify after all; it is of no use in a distribution tarball. 2004-02-11 Gary V. Vaughan * commit: Fix cut-n-paste error. * commit: Completely change CVS/Root->name sed script to actually work when :ext: is not shown. * commit: Improve CVS/Root->name sed script to work when :ext: is not shown. 2004-02-11 Albert Chin-A-Young * m4/libtool.m4: Fix typo: testring -> teststring. 2004-02-11 Gary V. Vaughan * commit: Mail a nicer commit notification. 2004-02-10 Gary V. Vaughan * NEWS, bootstrap, configure.ac, ltmain.in, m4/libtool.m4: * m4/lt~obsolete.m4, tests/cdemo/configure.ac: Arghh. cvsapply just went crazy and committed a bunch of stuff that shouldn't have been in the last changeset. The patch backs it all out. * config/mailnotify: New file for mailing commit notifications, imported from cvs-utils. * commit: Updated from cvs-utils and tweaked for libtool. * Makefile.am (EXTRA_DIST): Add config/mailnotify. 2004-02-06 Gary V. Vaughan * bootstrap: Remove vcl.tmp, otherwise it can interfere with make. * Makefile.am (vcl.tmp): Move comment out of multi-line command, as this rule is called from bootstrap as if it were a Makefile. * m4/ltversion.in: New file to capture what version number macros are being used. * Makefile.am (m4/ltversion.m4): New rule to create it from m4/ltversion.in. (nodist_pkgmacro_DATA): Add m4/ltversion.m4. (EXTRA_DIST): Add m4/ltversion.in. * m4/libtool.m4 (AC_LIBTOOL_SETUP): AC_REQUIRE LTVERSION_VERSION from ltversion.m4. * bootstrap: Call the Makefile.am to create an initial m4/ltversion.m4. * ltmain.in: Diagnose version mismatches of various flavours. * TODO: Remove mismatch item. * NEWS: Updated. * Makefile.am ($(top_builddir)/config.status): Removed. * configure.ac (CONFIG_STATUS_DEPENDENCIES): This substitution is how automake-1.8 now informs all Makefiles when config.status needs to be rebuilt. Reported by Alexandre Duret-Lutz * configure.ac (AC_CONFIG_FILES): Generate libtoolize from here. * Makefile.am (libtool, libtoolize): These rules are redundant. Automake generates better rules for remaking these files. * m4/libtool.m4 (AC_LIBTOOL_SETUP): Catch unexpanded macros with beginning with LT_ and _LT_. * configure.ac (LT_MAJOR, LT_MINOR, LT_MICRO, LT_ALPHA): Renamed to lt_major, lt_minor, lt_micro, lt_alpha to save triggering the unexpanded macros error. * m4/libtool.m4 (AC_PROVIDE_IFELSE): Removed. We now require Autoconf 2.58, which ships this macro anyway. * Makefile.am: Comment typo. * m4/libtool.m4 (LT_PREREQ): Declare the minimum release number that is required for the calling code. * doc/libtool.texi (AC_PROG_LIBTOOL): Document it. * NEWS: Updated. 2004-02-05 Peter O'Gorman * ltmain.in (infer_tag, win32_libid): Style changes. Rename infer_tag to func_infer_tag and win32_libid to func_win32_libid. * m4/libtool.m4 (cygwin): rename win32_libid to func_win32_libid. 2004-02-04 Peter O'Gorman * ltmain.in (infer_tag): Move tag inferrence to a shell function. Also test $base_compile against $CC with escaped arguments. Bug reported by Geoff Keating . 2004-02-03 Scott James Remnant * Makefile.am (install-data-hook): Manually make config.guess and config.sub executable after they are installed as _DATA. We can't use _SCRIPTS because the various program name transforms may be applied to them. (dist_pkgdata_DATA): List config.guess and config.sub here (pkgdata_SCRIPTS): instead of here. 2003-02-03 Scott James Remnant * ltmain.in: Create temporary directory under a strict umask rather than running chmod afterwards, preventing a race condition where the directory could be replaced with a symbolic link in the time between the two commands. 2004-01-31 Peter O'Gorman * m4/libtool.m4 (_LT_CONFIG_STATUS_DECLARE): Change `echo to `$echo, causes problems when builtin echo is broken. Reported by Ralf Wildenhues . 2004-01-27 Scott James Remnant This fixes release procedure problems discovered whilst making the 1.5.2 release. * Makefile.am (cvs-dist): Because we check whether ChangeLog has been committed, this rule can't be run with uncommitted source so we can't run 'commit' and don't need to run 'make dist' a second time. Fix CVS tag as it should be "release-X" not "Release-X". (cvs_commit): New rule for the cvs-release chain that runs 'commit' (cvs-release): Depend on cvs-commit, depend on deltas instead of cvs-diff and xdelta. (cvs-diff): Removed, replaced with delta-diff. (delta-diff): Unpack and diff the old and new tarballs rather than using CVS, so we get a genuinely complete diff. (xdelta): Removed, replaced with delta-xdelta. (got-xdelta): New rule for improved reading. (delta-xdiff): Copied and cleaned up version of old xdelta rule. (deltas): Depends on delta-diff and delta-xdelta (make deltas). (cvs-news): Don't depend on timestamps, cvs-dist itself does now. (prev-tarball): This is the only place we need a LASTRELEASE check so copy the code here and remove the CHECK_RELEASE variable. (new-tarball): Check there's a new tarball (did cvs-dist work?) (FETCHFILES): Remove obsolete libltdl mentions. * README-alpha: Update CVS instructions as everything's changed on Savannah. (Release procedure): Update NEWS and ChangeLog after changing the version number (both times); Run 'make fetch' after running 'configure' (difficult to do it beforehand); Require 'commit' before 'make cvs-dist' as that checks ChangeLog is committed; 'make deltas' instead of 'cvs-diff' and 'xdelta', pass LASTRELEASE to make instead of OLDVERSION (and it's mandatory); Clean up uploading paragraph; Clearer announcement sending instruction; Removed ftp-upload@gnu.org mail as that's not necessary now; Make web page updating instructions a bit clearer; Add an instruction to update the manual for non-alphas. (Alpha release note template): Add a Subject; update CVS instructions. (Full release note template): Add a Subject; update CVS instructions. * configure.ac: Add dist-bzip2 to AM_INIT_AUTOMAKE as we talk about bz2 files in our release announcements; remove old reference to OLDVERSION. 2004-01-25 Scott James Remnant * NEWS: Include 1.5.2 release information. 2004-01-22 Gary V. Vaughan This fixes a bug in the libtoolize ltdl source installation rules, which were copying Makefile.in from the libtool tree into the package running libtoolize. Now we explicitly list the files to copy to force the package to generate its own Makefile.in: * libltdl/Makefile.am (libltdl_la_SOURCES, libltdlc_la_SOURCES): Add ltdl.h. (ltdldatadir): New variable for installation directory of libtoolize --ltdl files. (ltdldata_DATA): Tell automake what files to copy there at install time (and remove at unistall time!). (local-install-files): Removed. This hack is not required anymore, the automake generated install rules are much more advanced than this. * Makefile.am (install-data-hook, uninstall-local): Removed. Libltdl files for libtoolize are installed by their own Makefile now. 2004-01-22 Jeff Squyres * m4/libtool.m4 (AC_LIBTOOL_PROG_CC_C_O): Some compilers (e.g. Intel Linux icc compiler) write temporary files to the current directory. These compilers do support -c and -o simultaneously but wrongly fail the test due to the failure to create temporary files. It is incorrect to penalize compilers which write temporary files to the current directory so the 'chmod -w .' is therefore removed. 2004-01-22 Gary V. Vaughan * m4/libtool.m4 (LT_AC_PROG_EGREP): Wrapper for AC_PROG_GREP. AIX has a brain-dead grep that only handles lines < 2048 characters. Default GREP incase we are not using a future autoconf that sets it for us :-) Changed all callers to use $GREP instead of grep, and to AC_REQUIRE LT_AC_PROG_EGREP. Declare GREP as a libtool config var. * ltmain.in: Use it. * tests/sh.test (scripts): Accept `if $GREP "^foo=bar"' by tightening the regexp. Reported by Albert Chin-A-Young 2004-01-21 Nick Hudson * m4/libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER) [netbsd*]: Remove gratuitous ${libname}${release}${shared_ext} from library_names_spec. 2004-01-21 Peter O'Gorman * m4/libtool.m4 (AC_PROG_LD_RELOAD_FLAG): On darwin change the reload_cmds to use $CC, otherwise ld will thin out any fat objects. 2004-01-18 Benjamin Reed * ltmain.in: Fix handling of frameworks in search paths. Also a one-liner fix to eval shrext in the libtool library search. 2004-01-16 Gary V. Vaughan * configure.ac (AM_INIT_AUTOMAKE): Require 1.8 for bootstrap, or else aclocal.m4 is huge, and m4 directory is not distributed. * configure.ac (AC_CONFIG_HEADERS): Create config.h in $top_srcdir. * m4/ltdl.m4 (AC_LIB_LTDL): Run AC_CONFIG_HEADERS for the user if necessary. Calculate filename from first argument to AC_CONFIG_HEADERS, and substitute as CONFIG_H. * libltdl/Makefile.am (AM_CPPFLAGS): Make sure we are searching in $top_srcdir for headers. (DEFS): Override the default HAVE_CONFIG_H with the config.h filename. (ltdl.lo): Reference config.h via $(CONFIG_H). * libltdl/ltdl.c (HAVE_CONFIG_H): Ditto. 2004-01-15 Scott James Remnant * m4/lt~obsolete.m4: Add a file containing aclocal-fooling macro definitions which stop the contents of an installed libtool.m4 ending up in our aclocal.m4 when we bootstrap. * Makefile.am (pkgmacro_DATA): Note that we don't need to add lt~obsolete.m4 to this list. 2004-01-12 Gary V. Vaughan * m4/libtool.m4 (_LT_COPYING): Factor out copyright message so it only needs to be updated in one place. (AC_LIBTOOL_CONFIG): Refactor to be more readable. Only add tags if a compiler was found; ie if you have no gcj compiler, don't tack the GCJ tag onto the generated libtool script. 2004-01-13 Peter O'Gorman * m4/libtool.m4: Quote shrext as it is evaled in ltmain. 2004-01-11 Scott James Remnant * ltmain.in: new -precious-files-regex link mode option to prevent removal of matching files from the temporary output directory. (Debian Bug #221420) * doc/libtool.texi: document the new option. * NEWS: announce the new option. 2004-01-11 Gary V. Vaughan * libtoolize.in (func_copy_all_files): s/xfunc_copy/Xfunc_copy. Now the test can actually succeed sometimes. 2004-01-09 Gary V. Vaughan * libtoolize.in: Break out of the command argument parse loop when -- is encountered. 2004-01-08 Gary V. Vaughan * libtoolize.in (func_copy_all_files): s/test "x/test "X/ to keep tests/sh.test happy. 2004-01-07 Gary V. Vaughan * Makefile.am (aclocal_macros, aclocal_DATA): Removed. (EXTRA_DIST): Remove m4 macro files; they are automatically added by automake. (pkgmacrodir): Where to install libtool macro files. (pkgmacro_DATA): List installable libtool macro files. (install-data-local): Remove previous versions of ltdl.m4 and libtool.m4 from their old location. * libtoolize.in: Use new pkgmacrodir installed macros when libtoolizing a project. Treat libtool.m4 and ltdl.m4 specially, and func_serial_update() any other files from pkgmacrodir. (pkgmacrodir): Where to find installed libtool macro files. (aclocaldir): Removed. (func_copy_all_files): Add an optional callback parameter to control how files are copied. If the callback is passed, don't tell it whether it can copy or not. (func_serial): Exchange parameters and make macro_regex optional, so that this function can be used to extract serial numbers from files with the traditional /^# serial [1-9][0-9]*$/ syntax. Changed all callers. (func_serial_update): Make macro_regex optional last parameter, so that this function can be used as a callback for func_copy_all_files(). Changed all callers. * m4/ltsugar.m4: Add a serial number. 2004-01-07 Gary V. Vaughan A complete rewrite of the m4 code involved in the generation of libtool via config.status. The old way involved manually synchronising disparate bits of shell code in several macros, to quote a copy of a shell variable, put that in config.status, maybe add it to some quotation loops to prevent early expansion, and then add a block to _LT_CONFIG_COMMANDS to bring it into the libtool script. The new way is to mark shell variables for propogation using _LT_DECL for language independent variables, or _LT_TAGDECL for those that need to be propogated in several language flavours. The marking can be done in the macro that probes the variables, and this new m4 machinery takes care of synchronising all the other bits of code at autoconf time: * m4/ltsugar.m4: New file. Macros that are useful outside the context of libtool. Initially, contains some generalised list management macros, and the scaffolding for dictionary type data storage and retrieval. * Makefile.am (aclocal_macros): Install ltsugar.m4. * m4/libtool.m4 (_LT_DECL): Mark a shell variable for export to the libtool script, along with a comment, and hints for quoting and renaming. (_LT_TAGDECL): Similarly mark a tagged shell variable for export in each tag. (lt_decl_tag_varnames, lt_decl_quote_varnames) (lt_decl_dquote_varnames, lt_decl_varnames_tagged) (lt_decl_all_varnames): New utility macros for managing lists of shell variable names from _LT_DECL and _LT_TAGDECL. (_LT_CONFIG_STATUS_DECLARATIONS, _LT_CONFIG_STATUS_DECLARE): Expand to correctly quoted variable declarations in config.status from all marked shell variables. (_LT_LIBTOOL_DECLARE): Expand to commented and quoted variable declaration for libtool tag section. (_LT_LIBTOOL_CONFIG_VARS, _LT_LIBTOOL_TAG_VARS): Pass all marked variables to _LT_LIBTOOL_DECLARE. (_LT_CONFIG_COMMANDS): Use _LT_CONFIG_STATUS_DECLARATIONS and friends to generate all the variable passing shell code for config.status, to get marked variables from libtool.m4 into libtool itself eventually. (AC_LIBTOOL_CONFIG): Generate marked variable code for libtool tag configuration. Changed all client macros to mark variables suitably rather than the hand pasting that was necessary previously. (AC_PROG_SED): Renamed from LT_AC_PROG_SED. (LT_AC_PROG_SED): Wrap AC_PROG_SED, and mark shell variables for propogation to the libtool script. 2004-01-07 Gary V. Vaughan * libtoolize.in (seen_gettext): Removed unused variable. 2004-01-06 Gary V. Vaughan * libtoolize.in (func_scan_files): Don't assume the existence of aclocal.m4. Make the comment more descriptive. Reported by Alexandre Duret-Lutz * NEWS: Note libtoolize changes. * ChangeLog.2003: New file, containing all the ChangeLog entries from 2003. Trimmed ChangeLog accordingly. * ltmain.in: Output 2004 in the copyright from libtool --version. 2004-01-03 Stefan Nordhausen Scott James Remnant * ltmain.in: Don't use the mkdir -p option when creating a temporary output directory so a symlink attack can't be used to arbitrarily chmod other directories on the system if libtool gets run as root. 2004-01-02 Peter O'Gorman * m4/libtool.m4: Ensure that ${ZSH_VERSION+set} is properly escaped. * m4/libtool.m4 (CDPATH): Change the CDPATH setting so that it allows for zsh differences, as noted in the autoconf manual's Portable Shell - Special Shell Variables section. 2004-01-02 Scott James Remnant * .cvsignore: Ignore stamp-vcl created by the Makefile. 2004-01-02 Bob Friesenhahn Joe Orton * m4/libtool.m4 (AC_LIBTOOL_CONFIG): Add extra blackslash in front of all the inner double-quotes as this is removed on Solaris, IRIX and AIX leading to broken definitions in config.status. 2004-01-02 Scott James Remnant * NEWS: Next release will be in 2004. Continued in ChangeLog.2003