[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: FYI: allow running libtool tests at configure time [libtool--gary--1
From: |
Ralf Wildenhues |
Subject: |
Re: FYI: allow running libtool tests at configure time [libtool--gary--1.0--patch-26] |
Date: |
Mon, 2 May 2005 14:05:20 +0200 |
User-agent: |
Mutt/1.4.1i |
Hi Gary,
* Gary V. Vaughan wrote on Sat, Apr 30, 2005 at 04:06:19PM CEST:
>
> This may not apply cleanly to HEAD, as I developed it on my own branch
> which still has the pending standalone libtool patch awaiting.
Does that mean branch-2-0 will need Automake 1.10? Which patch are you
talking about here?
> Unless
> anyone points out any other showstoppers for 2.0, I would like to apply
> this patch (and the last as soon as my patches for autoconf and automake
> are accepted); backport to branch-2-0; and then release 1.9h as a final
> alpha to shake out any final bugs before 2.0 proper...
Let me thank you very much for your work on this!
> Okay to apply to HEAD and branch-2-0?
I promise to test it after I get back.
Slight nits from reading are below.
Regards,
Ralf
> Index: Changelog
> from Gary V. Vaughan <address@hidden>
>
> * libltdl/m4/libtool.m4 (LT_OUTPUT): New macro to generate libtool
> before config.status.
> (_LT_CONFIG_COMMANDS): If LT_OUTPUT has been invoked, then
> generate code in config.status to call config.lt instead of
> generating libtool directly.
> * tests/early-libtool.at: New test.
Please show early-libtool.at.
> * Makefile.am (TESTSUITE_AT): Add tests/early-libtool.at.
> * doc/libtool.texi (LT_INIT): Document LT_OUTPUT.
>
> --- orig/Makefile.am
> +++ mod/Makefile.am
> @@ -443,13 +443,14 @@
> TESTSUITE = tests/testsuite
> TESTSUITE_AT = tests/testsuite.at \
> tests/am-subdir.at \
> + tests/convenience.at \
> tests/duplicate_members.at \
> + tests/early-libtool.at \
> tests/inherited_flags.at \
> tests/libtoolize.at \
> + tests/link-order.at \
> tests/standalone.at \
> tests/stresstest.at \
> - tests/link-order.at \
> - tests/convenience.at \
> tests/template.at
>
> EXTRA_DIST += $(TESTSUITE) $(TESTSUITE_AT) tests/package.m4
>
>
> --- orig/doc/libtool.texi
> +++ mod/doc/libtool.texi
> @@ -24,7 +24,7 @@
> @ifnottex
> This file documents GNU Libtool @value{VERSION}
>
> -Copyright (C) 1996-2004 Free Software Foundation, Inc.
> +Copyright (C) 1996-2005 Free Software Foundation, Inc.
>
> Permission is granted to copy, distribute and/or modify this document
> under the terms of the GNU Free Documentation License, Version 1.1
> @@ -51,7 +51,7 @@
>
> @page
> @vskip 0pt plus 1filll
> -Copyright @copyright{} 2004 Free Software Foundation, Inc.
> +Copyright @copyright{} 2005 Free Software Foundation, Inc.
>
> Permission is granted to copy, distribute and/or modify this document
> under the terms of the @sc{gnu} Free Documentation License, Version 1.1
> @@ -2096,6 +2096,23 @@
> tests before being passed to @file{config.status} for inclusion in the
> generated libtool script.
>
> address@hidden LT_OUTPUT
> +By default, the configured @file{libtool} script is generated by the
> +call to @code{AC_OUTPUT} command, and there is rarely any need to use
> address@hidden from @file{configure}. However, sometimes it is
> +necessary to run configure time compile and link tests using
> address@hidden You can add @code{LT_OUTPUT} to your
> address@hidden any time after @code{LT_INIT} and any
> address@hidden calls; that done, @file{libtool} will be created by a
> +specially generated @file{config.lt} file, and available for use in
> +later tests.
> +
> +Also, when @code{LT_OUTPUT} is used, for backwards compatibility with
> +Automake regeneration rules, @file{config.status} will call
> address@hidden to regenerate @file{libtool}, rather than generating
> +the file itself.
> address@hidden defmac
> +
> @pindex aclocal
> When you invoke the @command{libtoolize} program (@pxref{Invoking
> libtoolize}), it will tell you where to find a definition of
> @@ -5381,7 +5398,7 @@
> trick$ libtool --version
> ltmain.sh (GNU @@PACKAGE@@@@TIMESTAMP@@) @@VERSION@@
>
> -Copyright (C) 2004 Free Software Foundation, Inc.
> +Copyright (C) 2005 Free Software Foundation, Inc.
> This is free software; see the source for copying conditions. There is NO
> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
> trick$
>
>
> --- orig/libltdl/m4/libtool.m4
> +++ mod/libltdl/m4/libtool.m4
> @@ -189,8 +189,7 @@
> RM="rm -f"
>
> # Global variables:
> -default_ofile=libtool
> -ofile="$default_ofile"
> +ofile=libtool
> can_build_shared=yes
>
> # All known linkers require a `.a' archive for static linking (except M$VC,
> @@ -461,7 +460,23 @@
> # for loops in `config.status'. Finally, any additional code accumulated
> # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
> m4_defun([_LT_CONFIG_COMMANDS],
> -[AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [
> +[AC_PROVIDE_IFELSE([LT_OUTPUT],
> + dnl If the libtool generation code has been placed in $CONFIG_LT,
Really minor nit: tabify.
> + dnl instead of duplicating it all over again into config.status,
> + dnl then we will have config.status run $CONFIG_LT later, so it
> + dnl needs to know what name is stored there:
> + [AC_CONFIG_COMMANDS([libtool],
> + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
> + dnl If the libtool generation code is destined for config.status,
> + dnl expand the accumulated commands and init code now:
> + [AC_CONFIG_COMMANDS([libtool],
> + [_LT_OUTPUT_LIBTOOL_COMMANDS],
> [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
> +])#_LT_CONFIG_COMMANDS
> +
> +
> +# Initialize.
> +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
> +[
>
> # The HP-UX ksh and POSIX shell print the target directory to stdout
> # if CDPATH is set.
> @@ -508,11 +523,124 @@
>
> _LT_OUTPUT_LIBTOOL_INIT
> ])
> -])#_LT_CONFIG_COMMANDS
> +
> +
> +# LT_OUTPUT
> +# ---------
> +# This macro allows early generation of the libtool script (before
> +# AC_OUTPUT is called), incase it is used in configure for compilation
> +# tests.
> +AC_DEFUN([LT_OUTPUT],
> +[dnl This macro can only work once all the language testing is completed
> +AC_BEFORE([LT_INIT], [LT_OUTPUT])
> +AC_BEFORE([LT_LANG], [LT_OUTPUT])
> +
> +: ${CONFIG_LT=./config.lt}
> +AC_MSG_NOTICE([creating $CONFIG_LT])
> +cat >$CONFIG_LT <<_LTEOF
> +#! $SHELL
> +# Generated by $as_me.
> +# Run this file to recreate a libtool stub with the current configuration.
> +
> +lt_cl_silent=false
> +SHELL=\${CONFIG_SHELL-$SHELL}
> +_LTEOF
> +
> +cat >>$CONFIG_LT <<\_LTEOF
> +AS_SHELL_SANITIZE
> +_AS_PREPARE
> +
> +exec AS_MESSAGE_FD>&1
> +exec AS_MESSAGE_LOG_FD>>config.log
> +{
> + echo
> + AS_BOX([Running $as_me.])
> +} >&AS_MESSAGE_LOG_FD
> +_LTEOF
> +
> +cat >>$CONFIG_LT <<\_LTEOF
> +
> +lt_cl_usage="\
> +\`$as_me' creates a local libtool stub from the current configuration,
> +for use in further configure time tests before the real libtool is
> +generated.
> +
> +Usage: $[0] [[OPTIONS]]
> +
> + -h, --help print this help, then exit
> + -V, --version print version number, then exit
> + -q, --quiet do not print progress messages
> + -d, --debug don't remove temporary files
> +
> +Report bugs to <address@hidden>."
> +
> +lt_cl_version="\
> +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
> +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
> +configured by $[0], generated by m4_PACKAGE_STRING.
> +
> +Copyright (C) 2005 Free Software Foundation, Inc.
> +This config.lt script is free software; the Free Software Foundation
> +gives unlimited permision to copy, distribute and modify it."
> +
> +_LTEOF
> +
> +cat >>$CONFIG_LT <<\_LTEOF
Please quote $CONFIG_LT here and throughout.
> +while test $[#] != 0
> +do
> + case $[1] in
> + --version | --v* | -V )
> + echo "$lt_cl_version"; exit 0 ;;
> + --help | --h* | -h )
> + echo "$lt_cl_help"; exit 0 ;;
> + --debug | --d* | -d )
> + debug=: ;;
> + --quiet | --q* | --silent | --s* | -q )
> + lt_cl_silent=: ;;
> +
> + -*) AC_MSG_ERROR([unrecognized option: $[1]
> +Try `$[0] --help' for more information.]) ;;
> +
> + *) AC_MSG_ERROR([unrecognised argument: $[1]
> +Try `$[0] --help for more information.]) ;;
> + esac
> + shift
> +done
> +
> +if $lt_cl_silent; then
> + exec AS_MESSAGE_FD>/dev/null
> +fi
> +_LTEOF
> +
> +cat >>$CONFIG_LT <<_LTEOF
Ditto.
> +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
> +_LTEOF
> +
> +cat >>$CONFIG_LT <<\_LTEOF
> +AC_MSG_NOTICE([creating $ofile])
> +_LT_OUTPUT_LIBTOOL_COMMANDS
> +AS_EXIT(0)
> +_LTEOF
> +chmod +x $CONFIG_LT
> +
> +# configure is writing to config.log, but config.lt does its own
> redirection,
> +# appending to config.log, which fails on DOS, as config.log is still kept
> +# open by configure. Here we exec the FD to /dev/null, effectively closing
> +# config.log, so it can be properly (re)opened and appended to by
> config.lt.
Nice!
> +if test "$no_create" != yes; then
> + lt_cl_success=:
> + test "$silent" = yes &&
> + lt_config_lt_args="$lt_config_lt_args --quiet"
> + exec AS_MESSAGE_LOG_FD>/dev/null
> + $SHELL $CONFIG_LT $lt_config_lt_args || lt_cl_success=false
> + exec AS_MESSAGE_LOG_FD>>config.log
> + $lt_cl_success || AS_EXIT(1)
> +fi
> +])# LT_OUTPUT
>
>
> # _LT_CONFIG(TAG)
> -# ----------------------------
> +# ---------------
> # If TAG is the built-in tag, create an initial libtool script with a
> # default configuration from the untagged config vars. Otherwise add code
> # to config.status for appending the configuration named by TAG from the
> @@ -535,7 +663,7 @@
> #! $SHELL
>
> # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building
> support services.
> -# Generated automatically by config.status (GNU $PACKAGE$TIMESTAMP)
> $VERSION
> +# Generated automatically by $as_me (GNU $PACKAGE$TIMESTAMP) $VERSION
> # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed
> 1q`:
> # NOTE: Changes made to this file will be lost: look at ltmain.sh.
> #
> @@ -1204,7 +1332,7 @@
> # nice to cause kernel panics so lets avoid the loop below.
> # First set a reasonable default.
> lt_cv_sys_max_cmd_len=16384
> - #
> + #
> if test -x /sbin/sysconfig; then
> case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
> *1*) lt_cv_sys_max_cmd_len=-1 ;;
> @@ -3616,7 +3744,7 @@
> if test "$with_gnu_ld" = yes; then
> # If archive_cmds runs LD, not CC, wlarc should be empty
> wlarc='${wl}'
> -
> +
> # Set some defaults for GNU ld with shared library support. These
> # are reset later if shared libraries are not supported. Putting them
> # here allows them to be overridden if necessary.
>
>
> --- orig/tests/testsuite.at
> +++ mod/tests/testsuite.at
> @@ -99,5 +99,7 @@
> m4_include([am-subdir.at])
> # C++ templates tests
> m4_include([template.at])
> +# Behaviour of LT_OUTPUT
> +m4_include([early-libtool.at])
> # stress test
> m4_include([stresstest.at])
>
>