]> git.ipfire.org Git - thirdparty/libtool.git/commitdiff
* m4/libtool.m4 (LT_OUTPUT): New macro to generate
authorRalf Wildenhues <Ralf.Wildenhues@gmx.de>
Thu, 18 Aug 2005 17:09:28 +0000 (17:09 +0000)
committerRalf Wildenhues <Ralf.Wildenhues@gmx.de>
Thu, 18 Aug 2005 17:09:28 +0000 (17:09 +0000)
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.
* doc/libtool.texi (LT_INIT): Document LT_OUTPUT.

ChangeLog
doc/libtool.texi
m4/libtool.m4

index babcbdef4f68ff391660d84f6dfc50c6304dd65e..032cd42f24818bb13bd75d363ed0c1ef4a2909fa 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2005-08-18  Gary V. Vaughan  <gary@gnu.org>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * 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.
+       * doc/libtool.texi (LT_INIT): Document LT_OUTPUT.
+
 2005-08-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 
        * m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER) [ freebsd ]: Do not
index 39eaf1a06c14490906bcfbe5fd96227d3e9996ab..0d5279d85a10936a38d812abf8d280918dd3818d 100644 (file)
@@ -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 @@ identical to this one except for the removal of this paragraph
 
 @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
@@ -2114,6 +2114,23 @@ equivalent Autoconf shell variables that are set by the configure time
 tests before being passed to @file{config.status} for inclusion in the
 generated libtool script.
 
+@defmac 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
+@file{libtool} from @file{configure}.  However, sometimes it is
+necessary to run configure time compile and link tests using
+@file{libtool}.  You can add @code{LT_OUTPUT} to your
+@file{configure.ac} any time after @code{LT_INIT} and any
+@code{LT_LANG} 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
+@file{config.lt} to regenerate @file{libtool}, rather than generating
+the file itself.
+@end defmac
+
 @pindex aclocal
 When you invoke the @command{libtoolize} program (@pxref{Invoking
 libtoolize}), it will tell you where to find a definition of
@@ -5392,7 +5409,7 @@ trick$ chmod +x libtool
 trick$ libtool --version
 ltmain.sh (GNU @@PACKAGE@@@@TIMESTAMP@@) @@VERSION@@
 
-Copyright (C) 200 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$
index e6f482872d08829c0ec1b5f2c0653df67175c8ab..13e263bfaa21ec243b3bb13e3934c1ed28c1a0a6 100644 (file)
@@ -188,8 +188,7 @@ no_glob_subst='s/\*/\\\*/g'
 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 MSVC,
@@ -460,7 +459,23 @@ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
 # 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,
+       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.
@@ -495,11 +510,118 @@ esac
 
 _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
+
+lt_cl_help="\
+\`$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 <bug-libtool@gnu.org>."
+
+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."
+
+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
+_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.
+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
@@ -522,7 +644,7 @@ m4_defun([_LT_CONFIG],
 #! $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.
 #