diff options
Diffstat (limited to 'build-aux')
| -rwxr-xr-x | build-aux/config.guess | 51 | ||||
| -rwxr-xr-x | build-aux/config.sub | 35 | ||||
| -rw-r--r-- | build-aux/ltmain.sh | 853 | ||||
| -rwxr-xr-x | build-aux/run-test | 2 | 
4 files changed, 635 insertions, 306 deletions
| diff --git a/build-aux/config.guess b/build-aux/config.guess index 1105a749..980b0208 100755 --- a/build-aux/config.guess +++ b/build-aux/config.guess @@ -1,14 +1,14 @@  #! /bin/sh  # Attempt to guess a canonical system name. -#   Copyright 1992-2021 Free Software Foundation, Inc. +#   Copyright 1992-2022 Free Software Foundation, Inc.  # shellcheck disable=SC2006,SC2268 # see below for rationale -timestamp='2021-11-30' +timestamp='2022-09-17'  # This file is free software; you can redistribute it and/or modify it  # under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or +# the Free Software Foundation, either version 3 of the License, or  # (at your option) any later version.  #  # This program is distributed in the hope that it will be useful, but @@ -60,7 +60,7 @@ version="\  GNU config.guess ($timestamp)  Originally written by Per Bothner. -Copyright 1992-2021 Free Software Foundation, Inc. +Copyright 1992-2022 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." @@ -929,6 +929,9 @@ EOF      i*:PW*:*)  	GUESS=$UNAME_MACHINE-pc-pw32  	;; +    *:SerenityOS:*:*) +        GUESS=$UNAME_MACHINE-pc-serenity +        ;;      *:Interix*:*)  	case $UNAME_MACHINE in  	    x86) @@ -963,6 +966,12 @@ EOF  	GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`  	GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC  	;; +    x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*) +	GUESS="$UNAME_MACHINE-pc-managarm-mlibc" +	;; +    *:[Mm]anagarm:*:*) +	GUESS="$UNAME_MACHINE-unknown-managarm-mlibc" +	;;      *:Minix:*:*)  	GUESS=$UNAME_MACHINE-unknown-minix  	;; @@ -1033,7 +1042,7 @@ EOF      k1om:Linux:*:*)  	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC  	;; -    loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*) +    loongarch32:Linux:*:* | loongarch64:Linux:*:*)  	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC  	;;      m32r*:Linux:*:*) @@ -1148,16 +1157,27 @@ EOF  	;;      x86_64:Linux:*:*)  	set_cc_for_build +	CPU=$UNAME_MACHINE  	LIBCABI=$LIBC  	if test "$CC_FOR_BUILD" != no_compiler_found; then -	    if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \ -		(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ -		grep IS_X32 >/dev/null -	    then -		LIBCABI=${LIBC}x32 -	    fi +	    ABI=64 +	    sed 's/^	    //' << EOF > "$dummy.c" +	    #ifdef __i386__ +	    ABI=x86 +	    #else +	    #ifdef __ILP32__ +	    ABI=x32 +	    #endif +	    #endif +EOF +	    cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` +	    eval "$cc_set_abi" +	    case $ABI in +		x86) CPU=i686 ;; +		x32) LIBCABI=${LIBC}x32 ;; +	    esac  	fi -	GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI +	GUESS=$CPU-pc-linux-$LIBCABI  	;;      xtensa*:Linux:*:*)  	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC @@ -1364,8 +1384,11 @@ EOF      BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.  	GUESS=i586-pc-haiku  	;; -    x86_64:Haiku:*:*) -	GUESS=x86_64-unknown-haiku +    ppc:Haiku:*:*)	# Haiku running on Apple PowerPC +	GUESS=powerpc-apple-haiku +	;; +    *:Haiku:*:*)	# Haiku modern gcc (not bound by BeOS compat) +	GUESS=$UNAME_MACHINE-unknown-haiku  	;;      SX-4:SUPER-UX:*:*)  	GUESS=sx4-nec-superux$UNAME_RELEASE diff --git a/build-aux/config.sub b/build-aux/config.sub index 5ba9a97d..baf1512b 100755 --- a/build-aux/config.sub +++ b/build-aux/config.sub @@ -1,14 +1,14 @@  #! /bin/sh  # Configuration validation subroutine script. -#   Copyright 1992-2021 Free Software Foundation, Inc. +#   Copyright 1992-2022 Free Software Foundation, Inc.  # shellcheck disable=SC2006,SC2268 # see below for rationale -timestamp='2021-12-25' +timestamp='2022-09-17'  # This file is free software; you can redistribute it and/or modify it  # under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or +# the Free Software Foundation, either version 3 of the License, or  # (at your option) any later version.  #  # This program is distributed in the hope that it will be useful, but @@ -76,7 +76,7 @@ Report bugs and patches to <config-patches@gnu.org>."  version="\  GNU config.sub ($timestamp) -Copyright 1992-2021 Free Software Foundation, Inc. +Copyright 1992-2022 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." @@ -145,7 +145,7 @@ case $1 in  			nto-qnx* | linux-* | uclinux-uclibc* \  			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \  			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ -			| storm-chaos* | os2-emx* | rtmk-nova*) +			| storm-chaos* | os2-emx* | rtmk-nova* | managarm-*)  				basic_machine=$field1  				basic_os=$maybe_os  				;; @@ -1207,7 +1207,7 @@ case $cpu-$vendor in  			| k1om \  			| le32 | le64 \  			| lm32 \ -			| loongarch32 | loongarch64 | loongarchx32 \ +			| loongarch32 | loongarch64 \  			| m32c | m32r | m32rle \  			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \  			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ @@ -1341,6 +1341,10 @@ EOF  		kernel=linux  		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`  		;; +	managarm*) +		kernel=managarm +		os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` +		;;  	*)  		kernel=  		os=$basic_os @@ -1754,7 +1758,7 @@ case $os in  	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \  	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \  	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ -	     | fiwix* ) +	     | fiwix* | mlibc* )  		;;  	# This one is extra strict with allowed versions  	sco3.2v2 | sco3.2v[4-9]* | sco5v6*) @@ -1762,6 +1766,9 @@ case $os in  		;;  	none)  		;; +	kernel* ) +		# Restricted further below +		;;  	*)  		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2  		exit 1 @@ -1772,16 +1779,26 @@ esac  # (given a valid OS), if there is a kernel.  case $kernel-$os in  	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ -		   | linux-musl* | linux-relibc* | linux-uclibc* ) +		   | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* )  		;;  	uclinux-uclibc* )  		;; -	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) +	managarm-mlibc* | managarm-kernel* ) +		;; +	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* )  		# These are just libc implementations, not actual OSes, and thus  		# require a kernel.  		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2  		exit 1  		;; +	-kernel* ) +		echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 +		exit 1 +		;; +	*-kernel* ) +		echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 +		exit 1 +		;;  	kfreebsd*-gnu* | kopensolaris*-gnu*)  		;;  	vxworks-simlinux | vxworks-simwindows | vxworks-spe) diff --git a/build-aux/ltmain.sh b/build-aux/ltmain.sh index 5b875b7f..2a50d7f6 100644 --- a/build-aux/ltmain.sh +++ b/build-aux/ltmain.sh @@ -1,12 +1,12 @@ -#! /bin/sh +#! /usr/bin/env sh  ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in -##               by inline-source v2014-01-03.01 +##               by inline-source v2019-02-19.15 -# libtool (GNU libtool) 2.4.6 +# libtool (GNU libtool) 2.4.7  # Provide generalized library-building support services.  # Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 -# Copyright (C) 1996-2015 Free Software Foundation, Inc. +# Copyright (C) 1996-2019, 2021-2022 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. @@ -31,8 +31,8 @@  PROGRAM=libtool  PACKAGE=libtool -VERSION=2.4.6 -package_revision=2.4.6 +VERSION=2.4.7 +package_revision=2.4.7  ## ------ ## @@ -64,34 +64,25 @@ package_revision=2.4.6  # libraries, which are installed to $pkgauxdir.  # Set a version string for this script. -scriptversion=2015-01-20.17; # UTC +scriptversion=2019-02-19.15; # UTC  # General shell script boiler plate, and helper functions.  # Written by Gary V. Vaughan, 2004 -# Copyright (C) 2004-2015 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. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. - -# As a special exception to the GNU General Public License, if you distribute -# this file as part of a program or library that is built using GNU Libtool, -# you may include this file under the same distribution terms that you use -# for the rest of that program. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. +# This is free software.  There is NO warranty; not even for +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# +# Copyright (C) 2004-2019, 2021 Bootstrap Authors +# +# This file is dual licensed under the terms of the MIT license +# <https://opensource.org/license/MIT>, and GPL version 2 or later +# <http://www.gnu.org/licenses/gpl-2.0.html>.  You must apply one of +# these licenses when using or redistributing this software or any of +# the files within it.  See the URLs above, or the file `LICENSE` +# included in the Bootstrap distribution for the full license texts. -# Please report bugs or propose patches to gary@gnu.org. +# Please report bugs or propose patches to: +# <https://github.com/gnulib-modules/bootstrap/issues>  ## ------ ## @@ -139,9 +130,12 @@ do  	  _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\"  	fi"  done - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH +# These NLS vars are set unconditionally (bootstrap issue #24).  Unset those +# in case the environment reset is needed later and the $save_* variant is not +# defined (see the code above). +LC_ALL=C +LANGUAGE=C +export LANGUAGE LC_ALL  # Make sure IFS has a sensible default  sp=' ' @@ -159,6 +153,26 @@ if test "${PATH_SEPARATOR+set}" != set; then  fi +# func_unset VAR +# -------------- +# Portably unset VAR. +# In some shells, an 'unset VAR' statement leaves a non-zero return +# status if VAR is already unset, which might be problematic if the +# statement is used at the end of a function (thus poisoning its return +# value) or when 'set -e' is active (causing even a spurious abort of +# the script in this case). +func_unset () +{ +    { eval $1=; (eval unset $1) >/dev/null 2>&1 && eval unset $1 || : ; } +} + + +# Make sure CDPATH doesn't cause `cd` commands to output the target dir. +func_unset CDPATH + +# Make sure ${,E,F}GREP behave sanely. +func_unset GREP_OPTIONS +  ## ------------------------- ##  ## Locate command utilities. ## @@ -259,7 +273,7 @@ test -z "$SED" && {      rm -f conftest.in conftest.tmp conftest.nl conftest.out    } -  func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin +  func_path_progs "sed gsed" func_check_prog_sed "$PATH:/usr/xpg4/bin"    rm -f conftest.sed    SED=$func_path_progs_result  } @@ -295,7 +309,7 @@ test -z "$GREP" && {      rm -f conftest.in conftest.tmp conftest.nl conftest.out    } -  func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin +  func_path_progs "grep ggrep" func_check_prog_grep "$PATH:/usr/xpg4/bin"    GREP=$func_path_progs_result  } @@ -360,6 +374,35 @@ sed_double_backslash="\    s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g    s/\n//g" +# require_check_ifs_backslash +# --------------------------- +# Check if we can use backslash as IFS='\' separator, and set +# $check_ifs_backshlash_broken to ':' or 'false'. +require_check_ifs_backslash=func_require_check_ifs_backslash +func_require_check_ifs_backslash () +{ +  _G_save_IFS=$IFS +  IFS='\' +  _G_check_ifs_backshlash='a\\b' +  for _G_i in $_G_check_ifs_backshlash +  do +  case $_G_i in +  a) +    check_ifs_backshlash_broken=false +    ;; +  '') +    break +    ;; +  *) +    check_ifs_backshlash_broken=: +    break +    ;; +  esac +  done +  IFS=$_G_save_IFS +  require_check_ifs_backslash=: +} +  ## ----------------- ##  ## Global variables. ## @@ -580,16 +623,16 @@ if test yes = "$_G_HAVE_PLUSEQ_OP"; then    {      $debug_cmd -    func_quote_for_eval "$2" -    eval "$1+=\\ \$func_quote_for_eval_result" +    func_quote_arg pretty "$2" +    eval "$1+=\\ \$func_quote_arg_result"    }'  else    func_append_quoted ()    {      $debug_cmd -    func_quote_for_eval "$2" -    eval "$1=\$$1\\ \$func_quote_for_eval_result" +    func_quote_arg pretty "$2" +    eval "$1=\$$1\\ \$func_quote_arg_result"    }  fi @@ -1091,85 +1134,203 @@ func_relative_path ()  } -# func_quote_for_eval ARG... -# -------------------------- -# Aesthetically quote ARGs to be evaled later. -# This function returns two values: -#   i) func_quote_for_eval_result -#      double-quoted, suitable for a subsequent eval -#  ii) func_quote_for_eval_unquoted_result -#      has all characters that are still active within double -#      quotes backslashified. -func_quote_for_eval () +# func_quote_portable EVAL ARG +# ---------------------------- +# Internal function to portably implement func_quote_arg.  Note that we still +# keep attention to performance here so we as much as possible try to avoid +# calling sed binary (so far O(N) complexity as long as func_append is O(1)). +func_quote_portable ()  {      $debug_cmd -    func_quote_for_eval_unquoted_result= -    func_quote_for_eval_result= -    while test 0 -lt $#; do -      case $1 in -        *[\\\`\"\$]*) -	  _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; -        *) -          _G_unquoted_arg=$1 ;; -      esac -      if test -n "$func_quote_for_eval_unquoted_result"; then -	func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" -      else -        func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" +    $require_check_ifs_backslash + +    func_quote_portable_result=$2 + +    # one-time-loop (easy break) +    while true +    do +      if $1; then +        func_quote_portable_result=`$ECHO "$2" | $SED \ +          -e "$sed_double_quote_subst" -e "$sed_double_backslash"` +        break        fi -      case $_G_unquoted_arg in -        # Double-quote args containing shell metacharacters to delay -        # word splitting, command substitution and variable expansion -        # for a subsequent eval. -        # Many Bourne shells cannot handle close brackets correctly -        # in scan sets, so we specify it separately. -        *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"") -          _G_quoted_arg=\"$_G_unquoted_arg\" +      # Quote for eval. +      case $func_quote_portable_result in +        *[\\\`\"\$]*) +          # Fallback to sed for $func_check_bs_ifs_broken=:, or when the string +          # contains the shell wildcard characters. +          case $check_ifs_backshlash_broken$func_quote_portable_result in +            :*|*[\[\*\?]*) +              func_quote_portable_result=`$ECHO "$func_quote_portable_result" \ +                  | $SED "$sed_quote_subst"` +              break +              ;; +          esac + +          func_quote_portable_old_IFS=$IFS +          for _G_char in '\' '`' '"' '$' +          do +            # STATE($1) PREV($2) SEPARATOR($3) +            set start "" "" +            func_quote_portable_result=dummy"$_G_char$func_quote_portable_result$_G_char"dummy +            IFS=$_G_char +            for _G_part in $func_quote_portable_result +            do +              case $1 in +              quote) +                func_append func_quote_portable_result "$3$2" +                set quote "$_G_part" "\\$_G_char" +                ;; +              start) +                set first "" "" +                func_quote_portable_result= +                ;; +              first) +                set quote "$_G_part" "" +                ;; +              esac +            done +          done +          IFS=$func_quote_portable_old_IFS            ;; -        *) -          _G_quoted_arg=$_G_unquoted_arg -	  ;; +        *) ;;        esac - -      if test -n "$func_quote_for_eval_result"; then -	func_append func_quote_for_eval_result " $_G_quoted_arg" -      else -        func_append func_quote_for_eval_result "$_G_quoted_arg" -      fi -      shift +      break      done + +    func_quote_portable_unquoted_result=$func_quote_portable_result +    case $func_quote_portable_result in +      # double-quote args containing shell metacharacters to delay +      # word splitting, command substitution and variable expansion +      # for a subsequent eval. +      # many bourne shells cannot handle close brackets correctly +      # in scan sets, so we specify it separately. +      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"") +        func_quote_portable_result=\"$func_quote_portable_result\" +        ;; +    esac  } -# func_quote_for_expand ARG -# ------------------------- -# Aesthetically quote ARG to be evaled later; same as above, -# but do not quote variable references. -func_quote_for_expand () -{ -    $debug_cmd +# func_quotefast_eval ARG +# ----------------------- +# Quote one ARG (internal).  This is equivalent to 'func_quote_arg eval ARG', +# but optimized for speed.  Result is stored in $func_quotefast_eval. +if test xyes = `(x=; printf -v x %q yes; echo x"$x") 2>/dev/null`; then +  printf -v _GL_test_printf_tilde %q '~' +  if test '\~' = "$_GL_test_printf_tilde"; then +    func_quotefast_eval () +    { +      printf -v func_quotefast_eval_result %q "$1" +    } +  else +    # Broken older Bash implementations.  Make those faster too if possible. +    func_quotefast_eval () +    { +      case $1 in +        '~'*) +          func_quote_portable false "$1" +          func_quotefast_eval_result=$func_quote_portable_result +          ;; +        *) +          printf -v func_quotefast_eval_result %q "$1" +          ;; +      esac +    } +  fi +else +  func_quotefast_eval () +  { +    func_quote_portable false "$1" +    func_quotefast_eval_result=$func_quote_portable_result +  } +fi -    case $1 in -      *[\\\`\"]*) -	_G_arg=`$ECHO "$1" | $SED \ -	    -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; -      *) -        _G_arg=$1 ;; + +# func_quote_arg MODEs ARG +# ------------------------ +# Quote one ARG to be evaled later.  MODEs argument may contain zero or more +# specifiers listed below separated by ',' character.  This function returns two +# values: +#   i) func_quote_arg_result +#      double-quoted (when needed), suitable for a subsequent eval +#  ii) func_quote_arg_unquoted_result +#      has all characters that are still active within double +#      quotes backslashified.  Available only if 'unquoted' is specified. +# +# Available modes: +# ---------------- +# 'eval' (default) +#       - escape shell special characters +# 'expand' +#       - the same as 'eval';  but do not quote variable references +# 'pretty' +#       - request aesthetic output, i.e. '"a b"' instead of 'a\ b'.  This might +#         be used later in func_quote to get output like: 'echo "a b"' instead +#         of 'echo a\ b'.  This is slower than default on some shells. +# 'unquoted' +#       - produce also $func_quote_arg_unquoted_result which does not contain +#         wrapping double-quotes. +# +# Examples for 'func_quote_arg pretty,unquoted string': +# +#   string      | *_result              | *_unquoted_result +#   ------------+-----------------------+------------------- +#   "           | \"                    | \" +#   a b         | "a b"                 | a b +#   "a b"       | "\"a b\""             | \"a b\" +#   *           | "*"                   | * +#   z="${x-$y}" | "z=\"\${x-\$y}\""     | z=\"\${x-\$y}\" +# +# Examples for 'func_quote_arg pretty,unquoted,expand string': +# +#   string        |   *_result          |  *_unquoted_result +#   --------------+---------------------+-------------------- +#   z="${x-$y}"   | "z=\"${x-$y}\""     | z=\"${x-$y}\" +func_quote_arg () +{ +    _G_quote_expand=false +    case ,$1, in +      *,expand,*) +        _G_quote_expand=: +        ;;      esac -    case $_G_arg in -      # Double-quote args containing shell metacharacters to delay -      # word splitting and command substitution for a subsequent eval. -      # Many Bourne shells cannot handle close brackets correctly -      # in scan sets, so we specify it separately. -      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"") -        _G_arg=\"$_G_arg\" +    case ,$1, in +      *,pretty,*|*,expand,*|*,unquoted,*) +        func_quote_portable $_G_quote_expand "$2" +        func_quote_arg_result=$func_quote_portable_result +        func_quote_arg_unquoted_result=$func_quote_portable_unquoted_result +        ;; +      *) +        # Faster quote-for-eval for some shells. +        func_quotefast_eval "$2" +        func_quote_arg_result=$func_quotefast_eval_result          ;;      esac +} + -    func_quote_for_expand_result=$_G_arg +# func_quote MODEs ARGs... +# ------------------------ +# Quote all ARGs to be evaled later and join them into single command.  See +# func_quote_arg's description for more info. +func_quote () +{ +    $debug_cmd +    _G_func_quote_mode=$1 ; shift +    func_quote_result= +    while test 0 -lt $#; do +      func_quote_arg "$_G_func_quote_mode" "$1" +      if test -n "$func_quote_result"; then +        func_append func_quote_result " $func_quote_arg_result" +      else +        func_append func_quote_result "$func_quote_arg_result" +      fi +      shift +    done  } @@ -1215,8 +1376,8 @@ func_show_eval ()      _G_cmd=$1      _G_fail_exp=${2-':'} -    func_quote_for_expand "$_G_cmd" -    eval "func_notquiet $func_quote_for_expand_result" +    func_quote_arg pretty,expand "$_G_cmd" +    eval "func_notquiet $func_quote_arg_result"      $opt_dry_run || {        eval "$_G_cmd" @@ -1241,8 +1402,8 @@ func_show_eval_locale ()      _G_fail_exp=${2-':'}      $opt_quiet || { -      func_quote_for_expand "$_G_cmd" -      eval "func_echo $func_quote_for_expand_result" +      func_quote_arg expand,pretty "$_G_cmd" +      eval "func_echo $func_quote_arg_result"      }      $opt_dry_run || { @@ -1369,30 +1530,26 @@ func_lt_ver ()  # End:  #! /bin/sh -# Set a version string for this script. -scriptversion=2014-01-07.03; # UTC -  # A portable, pluggable option parser for Bourne shell.  # Written by Gary V. Vaughan, 2010 -# Copyright (C) 2010-2015 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. - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU General Public License for more details. +# This is free software.  There is NO warranty; not even for +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# +# Copyright (C) 2010-2019, 2021 Bootstrap Authors +# +# This file is dual licensed under the terms of the MIT license +# <https://opensource.org/license/MIT>, and GPL version 2 or later +# <http://www.gnu.org/licenses/gpl-2.0.html>.  You must apply one of +# these licenses when using or redistributing this software or any of +# the files within it.  See the URLs above, or the file `LICENSE` +# included in the Bootstrap distribution for the full license texts. -# You should have received a copy of the GNU General Public License -# along with this program.  If not, see <http://www.gnu.org/licenses/>. +# Please report bugs or propose patches to: +# <https://github.com/gnulib-modules/bootstrap/issues> -# Please report bugs or propose patches to gary@gnu.org. +# Set a version string for this script. +scriptversion=2019-02-19.15; # UTC  ## ------ ## @@ -1415,7 +1572,7 @@ scriptversion=2014-01-07.03; # UTC  #  # In order for the '--version' option to work, you will need to have a  # suitably formatted comment like the one at the top of this file -# starting with '# Written by ' and ending with '# warranty; '. +# starting with '# Written by ' and ending with '# Copyright'.  #  # For '-h' and '--help' to work, you will also need a one line  # description of your script's purpose in a comment directly above the @@ -1427,7 +1584,7 @@ scriptversion=2014-01-07.03; # UTC  # to display verbose messages only when your user has specified  # '--verbose'.  # -# After sourcing this file, you can plug processing for additional +# After sourcing this file, you can plug in processing for additional  # options by amending the variables from the 'Configuration' section  # below, and following the instructions in the 'Option parsing'  # section further down. @@ -1476,8 +1633,8 @@ fatal_help="Try '\$progname --help' for more information."  ## ------------------------- ##  # This section contains functions for adding, removing, and running hooks -# to the main code.  A hook is just a named list of of function, that can -# be run in order later on. +# in the main code.  A hook is just a list of function names that can be +# run in order later on.  # func_hookable FUNC_NAME  # ----------------------- @@ -1510,7 +1667,8 @@ func_add_hook ()  # func_remove_hook FUNC_NAME HOOK_FUNC  # ------------------------------------ -# Remove HOOK_FUNC from the list of functions called by FUNC_NAME. +# Remove HOOK_FUNC from the list of hook functions to be called by +# FUNC_NAME.  func_remove_hook ()  {      $debug_cmd @@ -1519,10 +1677,28 @@ func_remove_hook ()  } +# func_propagate_result FUNC_NAME_A FUNC_NAME_B +# --------------------------------------------- +# If the *_result variable of FUNC_NAME_A _is set_, assign its value to +# *_result variable of FUNC_NAME_B. +func_propagate_result () +{ +    $debug_cmd + +    func_propagate_result_result=: +    if eval "test \"\${${1}_result+set}\" = set" +    then +      eval "${2}_result=\$${1}_result" +    else +      func_propagate_result_result=false +    fi +} + +  # func_run_hooks FUNC_NAME [ARG]...  # ---------------------------------  # Run all hook functions registered to FUNC_NAME. -# It is assumed that the list of hook functions contains nothing more +# It's assumed that the list of hook functions contains nothing more  # than a whitespace-delimited list of legal shell function names, and  # no effort is wasted trying to catch shell meta-characters or preserve  # whitespace. @@ -1532,22 +1708,19 @@ func_run_hooks ()      case " $hookable_fns " in        *" $1 "*) ;; -      *) func_fatal_error "'$1' does not support hook funcions.n" ;; +      *) func_fatal_error "'$1' does not support hook functions." ;;      esac      eval _G_hook_fns=\$$1_hooks; shift      for _G_hook in $_G_hook_fns; do -      eval $_G_hook '"$@"' - -      # store returned options list back into positional -      # parameters for next 'cmd' execution. -      eval _G_hook_result=\$${_G_hook}_result -      eval set dummy "$_G_hook_result"; shift +      func_unset "${_G_hook}_result" +      eval $_G_hook '${1+"$@"}' +      func_propagate_result $_G_hook func_run_hooks +      if $func_propagate_result_result; then +        eval set dummy "$func_run_hooks_result"; shift +      fi      done - -    func_quote_for_eval ${1+"$@"} -    func_run_hooks_result=$func_quote_for_eval_result  } @@ -1557,10 +1730,18 @@ func_run_hooks ()  ## --------------- ##  # In order to add your own option parsing hooks, you must accept the -# full positional parameter list in your hook function, remove any -# options that you action, and then pass back the remaining unprocessed -# options in '<hooked_function_name>_result', escaped suitably for -# 'eval'.  Like this: +# full positional parameter list from your hook function.  You may remove +# or edit any options that you action, and then pass back the remaining +# unprocessed options in '<hooked_function_name>_result', escaped +# suitably for 'eval'. +# +# The '<hooked_function_name>_result' variable is automatically unset +# before your hook gets called; for best performance, only set the +# *_result variable when necessary (i.e. don't call the 'func_quote' +# function unnecessarily because it can be an expensive operation on some +# machines). +# +# Like this:  #  #    my_options_prep ()  #    { @@ -1570,9 +1751,8 @@ func_run_hooks ()  #        usage_message=$usage_message'  #      -s, --silent       don'\''t print informational messages  #    ' -# -#        func_quote_for_eval ${1+"$@"} -#        my_options_prep_result=$func_quote_for_eval_result +#        # No change in '$@' (ignored completely by this hook).  Leave +#        # my_options_prep_result variable intact.  #    }  #    func_add_hook func_options_prep my_options_prep  # @@ -1581,25 +1761,36 @@ func_run_hooks ()  #    {  #        $debug_cmd  # -#        # Note that for efficiency, we parse as many options as we can +#        args_changed=false +# +#        # Note that, for efficiency, we parse as many options as we can  #        # recognise in a loop before passing the remainder back to the  #        # caller on the first unrecognised argument we encounter.  #        while test $# -gt 0; do  #          opt=$1; shift  #          case $opt in -#            --silent|-s) opt_silent=: ;; +#            --silent|-s) opt_silent=: +#                         args_changed=: +#                         ;;  #            # Separate non-argument short options:  #            -s*)         func_split_short_opt "$_G_opt"  #                         set dummy "$func_split_short_opt_name" \  #                             "-$func_split_short_opt_arg" ${1+"$@"}  #                         shift +#                         args_changed=:  #                         ;; -#            *)            set dummy "$_G_opt" "$*"; shift; break ;; +#            *)           # Make sure the first unrecognised option "$_G_opt" +#                         # is added back to "$@" in case we need it later, +#                         # if $args_changed was set to 'true'. +#                         set dummy "$_G_opt" ${1+"$@"}; shift; break ;;  #          esac  #        done  # -#        func_quote_for_eval ${1+"$@"} -#        my_silent_option_result=$func_quote_for_eval_result +#        # Only call 'func_quote' here if we processed at least one argument. +#        if $args_changed; then +#          func_quote eval ${1+"$@"} +#          my_silent_option_result=$func_quote_result +#        fi  #    }  #    func_add_hook func_parse_options my_silent_option  # @@ -1610,17 +1801,26 @@ func_run_hooks ()  #  #        $opt_silent && $opt_verbose && func_fatal_help "\  #    '--silent' and '--verbose' options are mutually exclusive." -# -#        func_quote_for_eval ${1+"$@"} -#        my_option_validation_result=$func_quote_for_eval_result  #    }  #    func_add_hook func_validate_options my_option_validation  # -# You'll alse need to manually amend $usage_message to reflect the extra +# You'll also need to manually amend $usage_message to reflect the extra  # options you parse.  It's preferable to append if you can, so that  # multiple option parsing hooks can be added safely. +# func_options_finish [ARG]... +# ---------------------------- +# Finishing the option parse loop (call 'func_options' hooks ATM). +func_options_finish () +{ +    $debug_cmd + +    func_run_hooks func_options ${1+"$@"} +    func_propagate_result func_run_hooks func_options_finish +} + +  # func_options [ARG]...  # ---------------------  # All the functions called inside func_options are hookable. See the @@ -1630,17 +1830,27 @@ func_options ()  {      $debug_cmd -    func_options_prep ${1+"$@"} -    eval func_parse_options \ -        ${func_options_prep_result+"$func_options_prep_result"} -    eval func_validate_options \ -        ${func_parse_options_result+"$func_parse_options_result"} +    _G_options_quoted=false -    eval func_run_hooks func_options \ -        ${func_validate_options_result+"$func_validate_options_result"} +    for my_func in options_prep parse_options validate_options options_finish +    do +      func_unset func_${my_func}_result +      func_unset func_run_hooks_result +      eval func_$my_func '${1+"$@"}' +      func_propagate_result func_$my_func func_options +      if $func_propagate_result_result; then +        eval set dummy "$func_options_result"; shift +        _G_options_quoted=: +      fi +    done -    # save modified positional parameters for caller -    func_options_result=$func_run_hooks_result +    $_G_options_quoted || { +      # As we (func_options) are top-level options-parser function and +      # nobody quoted "$@" for us yet, we need to do it explicitly for +      # caller. +      func_quote eval ${1+"$@"} +      func_options_result=$func_quote_result +    }  } @@ -1649,9 +1859,8 @@ func_options ()  # All initialisations required before starting the option parse loop.  # Note that when calling hook functions, we pass through the list of  # positional parameters.  If a hook function modifies that list, and -# needs to propogate that back to rest of this script, then the complete -# modified list must be put in 'func_run_hooks_result' before -# returning. +# needs to propagate that back to rest of this script, then the complete +# modified list must be put in 'func_run_hooks_result' before returning.  func_hookable func_options_prep  func_options_prep ()  { @@ -1662,9 +1871,7 @@ func_options_prep ()      opt_warning_types=      func_run_hooks func_options_prep ${1+"$@"} - -    # save modified positional parameters for caller -    func_options_prep_result=$func_run_hooks_result +    func_propagate_result func_run_hooks func_options_prep  } @@ -1676,25 +1883,32 @@ func_parse_options ()  {      $debug_cmd -    func_parse_options_result= - +    _G_parse_options_requote=false      # this just eases exit handling      while test $# -gt 0; do        # Defer to hook functions for initial option parsing, so they        # get priority in the event of reusing an option name.        func_run_hooks func_parse_options ${1+"$@"} - -      # Adjust func_parse_options positional parameters to match -      eval set dummy "$func_run_hooks_result"; shift +      func_propagate_result func_run_hooks func_parse_options +      if $func_propagate_result_result; then +        eval set dummy "$func_parse_options_result"; shift +        # Even though we may have changed "$@", we passed the "$@" array +        # down into the hook and it quoted it for us (because we are in +        # this if-branch).  No need to quote it again. +        _G_parse_options_requote=false +      fi        # Break out of the loop if we already parsed every option.        test $# -gt 0 || break +      # We expect that one of the options parsed in this function matches +      # and thus we remove _G_opt from "$@" and need to re-quote. +      _G_match_parse_options=:        _G_opt=$1        shift        case $_G_opt in          --debug|-x)   debug_cmd='set -x' -                      func_echo "enabling shell trace mode" +                      func_echo "enabling shell trace mode" >&2                        $debug_cmd                        ;; @@ -1704,7 +1918,10 @@ func_parse_options ()  		      ;;          --warnings|--warning|-W) -                      test $# = 0 && func_missing_arg $_G_opt && break +                      if test $# = 0 && func_missing_arg $_G_opt; then +                        _G_parse_options_requote=: +                        break +                      fi                        case " $warning_categories $1" in                          *" $1 "*)                            # trailing space prevents matching last $1 above @@ -1757,15 +1974,24 @@ func_parse_options ()                        shift                        ;; -        --)           break ;; +        --)           _G_parse_options_requote=: ; break ;;          -*)           func_fatal_help "unrecognised option: '$_G_opt'" ;; -        *)            set dummy "$_G_opt" ${1+"$@"}; shift; break ;; +        *)            set dummy "$_G_opt" ${1+"$@"}; shift +                      _G_match_parse_options=false +                      break +                      ;;        esac + +      if $_G_match_parse_options; then +        _G_parse_options_requote=: +      fi      done -    # save modified positional parameters for caller -    func_quote_for_eval ${1+"$@"} -    func_parse_options_result=$func_quote_for_eval_result +    if $_G_parse_options_requote; then +      # save modified positional parameters for caller +      func_quote eval ${1+"$@"} +      func_parse_options_result=$func_quote_result +    fi  } @@ -1782,12 +2008,10 @@ func_validate_options ()      test -n "$opt_warning_types" || opt_warning_types=" $warning_categories"      func_run_hooks func_validate_options ${1+"$@"} +    func_propagate_result func_run_hooks func_validate_options      # Bail if the options were screwed!      $exit_cmd $EXIT_FAILURE - -    # save modified positional parameters for caller -    func_validate_options_result=$func_run_hooks_result  } @@ -1843,8 +2067,8 @@ func_missing_arg ()  # func_split_equals STRING  # ------------------------ -# Set func_split_equals_lhs and func_split_equals_rhs shell variables after -# splitting STRING at the '=' sign. +# Set func_split_equals_lhs and func_split_equals_rhs shell variables +# after splitting STRING at the '=' sign.  test -z "$_G_HAVE_XSI_OPS" \      && (eval 'x=a/b/c;        test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ @@ -1859,8 +2083,9 @@ then        func_split_equals_lhs=${1%%=*}        func_split_equals_rhs=${1#*=} -      test "x$func_split_equals_lhs" = "x$1" \ -        && func_split_equals_rhs= +      if test "x$func_split_equals_lhs" = "x$1"; then +        func_split_equals_rhs= +      fi    }'  else    # ...otherwise fall back to using expr, which is often a shell builtin. @@ -1870,7 +2095,7 @@ else        func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'`        func_split_equals_rhs= -      test "x$func_split_equals_lhs" = "x$1" \ +      test "x$func_split_equals_lhs=" = "x$1" \          || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'`    }  fi #func_split_equals @@ -1896,7 +2121,7 @@ else    {        $debug_cmd -      func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` +      func_split_short_opt_name=`expr "x$1" : 'x\(-.\)'`        func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'`    }  fi #func_split_short_opt @@ -1938,31 +2163,44 @@ func_usage_message ()  # func_version  # ------------  # Echo version message to standard output and exit. +# The version message is extracted from the calling file's header +# comments, with leading '# ' stripped: +#   1. First display the progname and version +#   2. Followed by the header comment line matching  /^# Written by / +#   3. Then a blank line followed by the first following line matching +#      /^# Copyright / +#   4. Immediately followed by any lines between the previous matches, +#      except lines preceding the intervening completely blank line. +# For example, see the header comments of this file.  func_version ()  {      $debug_cmd      printf '%s\n' "$progname $scriptversion"      $SED -n ' -        /(C)/!b go -        :more -        /\./!{ -          N -          s|\n# | | -          b more -        } -        :go -        /^# Written by /,/# warranty; / { -          s|^# || -          s|^# *$|| -          s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| -          p +        /^# Written by /!b +        s|^# ||; p; n + +        :fwd2blnk +        /./ { +          n +          b fwd2blnk          } -        /^# Written by / { -          s|^# || -          p +        p; n + +        :holdwrnt +        s|^# || +        s|^# *$|| +        /^Copyright /!{ +          /./H +          n +          b holdwrnt          } -        /^warranty; /q' < "$progpath" + +        s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| +        G +        s|\(\n\)\n*|\1|g +        p; q' < "$progpath"      exit $?  } @@ -1972,12 +2210,12 @@ func_version ()  # mode: shell-script  # sh-indentation: 2  # eval: (add-hook 'before-save-hook 'time-stamp) -# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-pattern: "30/scriptversion=%:y-%02m-%02d.%02H; # UTC"  # time-stamp-time-zone: "UTC"  # End:  # Set a version string. -scriptversion='(GNU libtool) 2.4.6' +scriptversion='(GNU libtool) 2.4.7'  # func_echo ARG... @@ -2068,7 +2306,7 @@ include the following information:         compiler:       $LTCC         compiler flags: $LTCFLAGS         linker:         $LD (gnu? $with_gnu_ld) -       version:        $progname (GNU libtool) 2.4.6 +       version:        $progname (GNU libtool) 2.4.7         automake:       `($AUTOMAKE --version) 2>/dev/null |$SED 1q`         autoconf:       `($AUTOCONF --version) 2>/dev/null |$SED 1q` @@ -2124,7 +2362,7 @@ fi  # a configuration failure hint, and exit.  func_fatal_configuration ()  { -    func__fatal_error ${1+"$@"} \ +    func_fatal_error ${1+"$@"} \        "See the $PACKAGE documentation for more information." \        "Fatal configuration error."  } @@ -2270,6 +2508,8 @@ libtool_options_prep ()      nonopt=      preserve_args= +    _G_rc_lt_options_prep=: +      # Shorthand for --mode=foo, only valid as the first argument      case $1 in      clean|clea|cle|cl) @@ -2293,11 +2533,16 @@ libtool_options_prep ()      uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)        shift; set dummy --mode uninstall ${1+"$@"}; shift        ;; +    *) +      _G_rc_lt_options_prep=false +      ;;      esac -    # Pass back the list of options. -    func_quote_for_eval ${1+"$@"} -    libtool_options_prep_result=$func_quote_for_eval_result +    if $_G_rc_lt_options_prep; then +      # Pass back the list of options. +      func_quote eval ${1+"$@"} +      libtool_options_prep_result=$func_quote_result +    fi  }  func_add_hook func_options_prep libtool_options_prep @@ -2309,9 +2554,12 @@ libtool_parse_options ()  {      $debug_cmd +    _G_rc_lt_parse_options=false +      # Perform our own loop to consume as many options as possible in      # each iteration.      while test $# -gt 0; do +      _G_match_lt_parse_options=:        _G_opt=$1        shift        case $_G_opt in @@ -2386,15 +2634,20 @@ libtool_parse_options ()                          func_append preserve_args " $_G_opt"                          ;; -	# An option not handled by this hook function: -        *)		set dummy "$_G_opt" ${1+"$@"};	shift; break  ;; +        # An option not handled by this hook function: +        *)              set dummy "$_G_opt" ${1+"$@"} ; shift +                        _G_match_lt_parse_options=false +                        break +                        ;;        esac +      $_G_match_lt_parse_options && _G_rc_lt_parse_options=:      done - -    # save modified positional parameters for caller -    func_quote_for_eval ${1+"$@"} -    libtool_parse_options_result=$func_quote_for_eval_result +    if $_G_rc_lt_parse_options; then +      # save modified positional parameters for caller +      func_quote eval ${1+"$@"} +      libtool_parse_options_result=$func_quote_result +    fi  }  func_add_hook func_parse_options libtool_parse_options @@ -2451,8 +2704,8 @@ libtool_validate_options ()      }      # Pass back the unparsed argument list -    func_quote_for_eval ${1+"$@"} -    libtool_validate_options_result=$func_quote_for_eval_result +    func_quote eval ${1+"$@"} +    libtool_validate_options_result=$func_quote_result  }  func_add_hook func_validate_options libtool_validate_options @@ -3418,8 +3671,8 @@ func_mode_compile ()        esac      done -    func_quote_for_eval "$libobj" -    test "X$libobj" != "X$func_quote_for_eval_result" \ +    func_quote_arg pretty "$libobj" +    test "X$libobj" != "X$func_quote_arg_result" \        && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \        && func_warning "libobj name '$libobj' may not contain shell special characters."      func_dirname_and_basename "$obj" "/" "" @@ -3492,8 +3745,8 @@ compiler."      func_to_tool_file "$srcfile" func_convert_file_msys_to_w32      srcfile=$func_to_tool_file_result -    func_quote_for_eval "$srcfile" -    qsrcfile=$func_quote_for_eval_result +    func_quote_arg pretty "$srcfile" +    qsrcfile=$func_quote_arg_result      # Only build a PIC object if we are building libtool libraries.      if test yes = "$build_libtool_libs"; then @@ -3648,7 +3901,8 @@ This mode accepts the following additional options:    -prefer-non-pic   try to build non-PIC objects only    -shared           do not build a '.o' file suitable for static linking    -static           only build a '.o' file suitable for static linking -  -Wc,FLAG          pass FLAG directly to the compiler +  -Wc,FLAG +  -Xcompiler FLAG   pass FLAG directly to the compiler  COMPILE-COMMAND is a command to be used in creating a 'standard' object file  from the given SOURCEFILE. @@ -3754,6 +4008,8 @@ The following components of LINK-COMMAND are treated specially:    -weak LIBNAME     declare that the target provides the LIBNAME interface    -Wc,FLAG    -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler +  -Wa,FLAG +  -Xassembler FLAG  pass linker-specific FLAG directly to the assembler    -Wl,FLAG    -Xlinker FLAG     pass linker-specific FLAG directly to the linker    -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC) @@ -4096,8 +4352,8 @@ func_mode_install ()         case $nonopt in *shtool*) :;; *) false;; esac      then        # Aesthetically quote it. -      func_quote_for_eval "$nonopt" -      install_prog="$func_quote_for_eval_result " +      func_quote_arg pretty "$nonopt" +      install_prog="$func_quote_arg_result "        arg=$1        shift      else @@ -4107,8 +4363,8 @@ func_mode_install ()      # The real first argument should be the name of the installation program.      # Aesthetically quote it. -    func_quote_for_eval "$arg" -    func_append install_prog "$func_quote_for_eval_result" +    func_quote_arg pretty "$arg" +    func_append install_prog "$func_quote_arg_result"      install_shared_prog=$install_prog      case " $install_prog " in        *[\\\ /]cp\ *) install_cp=: ;; @@ -4165,12 +4421,12 @@ func_mode_install ()        esac        # Aesthetically quote the argument. -      func_quote_for_eval "$arg" -      func_append install_prog " $func_quote_for_eval_result" +      func_quote_arg pretty "$arg" +      func_append install_prog " $func_quote_arg_result"        if test -n "$arg2"; then -	func_quote_for_eval "$arg2" +	func_quote_arg pretty "$arg2"        fi -      func_append install_shared_prog " $func_quote_for_eval_result" +      func_append install_shared_prog " $func_quote_arg_result"      done      test -z "$install_prog" && \ @@ -4181,8 +4437,8 @@ func_mode_install ()      if test -n "$install_override_mode" && $no_mode; then        if $install_cp; then :; else -	func_quote_for_eval "$install_override_mode" -	func_append install_shared_prog " -m $func_quote_for_eval_result" +	func_quote_arg pretty "$install_override_mode" +	func_append install_shared_prog " -m $func_quote_arg_result"        fi      fi @@ -4478,8 +4734,8 @@ func_mode_install ()  	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`  	        $opt_quiet || { -	          func_quote_for_expand "$relink_command" -		  eval "func_echo $func_quote_for_expand_result" +	          func_quote_arg expand,pretty "$relink_command" +		  eval "func_echo $func_quote_arg_result"  	        }  	        if eval "$relink_command"; then :  	          else @@ -5258,7 +5514,8 @@ else    if test \"\$libtool_execute_magic\" != \"$magic\"; then      file=\"\$0\"" -    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` +    func_quote_arg pretty "$ECHO" +    qECHO=$func_quote_arg_result      $ECHO "\  # A function that is used when there is no print builtin or printf. @@ -5268,7 +5525,7 @@ func_fallback_echo ()  \$1  _LTECHO_EOF'  } -    ECHO=\"$qECHO\" +    ECHO=$qECHO    fi  # Very basic option parsing. These options are (a) specific to @@ -6611,9 +6868,9 @@ func_mode_link ()      while test "$#" -gt 0; do        arg=$1        shift -      func_quote_for_eval "$arg" -      qarg=$func_quote_for_eval_unquoted_result -      func_append libtool_args " $func_quote_for_eval_result" +      func_quote_arg pretty,unquoted "$arg" +      qarg=$func_quote_arg_unquoted_result +      func_append libtool_args " $func_quote_arg_result"        # If the previous option needs an argument, assign it.        if test -n "$prev"; then @@ -6849,6 +7106,13 @@ func_mode_link ()  	  prev=  	  continue  	  ;; +	xassembler) +	  func_append compiler_flags " -Xassembler $qarg" +	  prev= +	  func_append compile_command " -Xassembler $qarg" +	  func_append finalize_command " -Xassembler $qarg" +	  continue +	  ;;  	xcclinker)  	  func_append linker_flags " $qarg"  	  func_append compiler_flags " $qarg" @@ -7069,8 +7333,20 @@ func_mode_link ()  	prev=xcompiler  	continue  	;; - -      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ +     # Solaris ld rejects as of 11.4. Refer to Oracle bug 22985199. +     -pthread) +	case $host in +	  *solaris2*) ;; +	  *) +	    case "$new_inherited_linker_flags " in +	        *" $arg "*) ;; +	        * ) func_append new_inherited_linker_flags " $arg" ;; +	    esac +	  ;; +	esac +	continue +	;; +      -mt|-mthreads|-kthread|-Kthread|-pthreads|--thread-safe \        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)  	func_append compiler_flags " $arg"  	func_append compile_command " $arg" @@ -7211,9 +7487,9 @@ func_mode_link ()  	save_ifs=$IFS; IFS=,  	for flag in $args; do  	  IFS=$save_ifs -          func_quote_for_eval "$flag" -	  func_append arg " $func_quote_for_eval_result" -	  func_append compiler_flags " $func_quote_for_eval_result" +          func_quote_arg pretty "$flag" +	  func_append arg " $func_quote_arg_result" +	  func_append compiler_flags " $func_quote_arg_result"  	done  	IFS=$save_ifs  	func_stripname ' ' '' "$arg" @@ -7227,16 +7503,21 @@ func_mode_link ()  	save_ifs=$IFS; IFS=,  	for flag in $args; do  	  IFS=$save_ifs -          func_quote_for_eval "$flag" -	  func_append arg " $wl$func_quote_for_eval_result" -	  func_append compiler_flags " $wl$func_quote_for_eval_result" -	  func_append linker_flags " $func_quote_for_eval_result" +          func_quote_arg pretty "$flag" +	  func_append arg " $wl$func_quote_arg_result" +	  func_append compiler_flags " $wl$func_quote_arg_result" +	  func_append linker_flags " $func_quote_arg_result"  	done  	IFS=$save_ifs  	func_stripname ' ' '' "$arg"  	arg=$func_stripname_result  	;; +      -Xassembler) +        prev=xassembler +        continue +        ;; +        -Xcompiler)  	prev=xcompiler  	continue @@ -7254,8 +7535,8 @@ func_mode_link ()        # -msg_* for osf cc        -msg_*) -	func_quote_for_eval "$arg" -	arg=$func_quote_for_eval_result +	func_quote_arg pretty "$arg" +	arg=$func_quote_arg_result  	;;        # Flags to be passed through unchanged, with rationale: @@ -7272,12 +7553,17 @@ func_mode_link ()        # -tp=*                Portland pgcc target processor selection        # --sysroot=*          for sysroot support        # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization +      # -specs=*             GCC specs files        # -stdlib=*            select c++ std lib with clang +      # -fsanitize=*         Clang/GCC memory and address sanitizer +      # -fuse-ld=*           Linker select flags for GCC +      # -Wa,*                Pass flags directly to the assembler        -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \        -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -      -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*) -        func_quote_for_eval "$arg" -	arg=$func_quote_for_eval_result +      -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ +      -specs=*|-fsanitize=*|-fuse-ld=*|-Wa,*) +        func_quote_arg pretty "$arg" +	arg=$func_quote_arg_result          func_append compile_command " $arg"          func_append finalize_command " $arg"          func_append compiler_flags " $arg" @@ -7298,15 +7584,15 @@ func_mode_link ()  	  continue          else  	  # Otherwise treat like 'Some other compiler flag' below -	  func_quote_for_eval "$arg" -	  arg=$func_quote_for_eval_result +	  func_quote_arg pretty "$arg" +	  arg=$func_quote_arg_result          fi  	;;        # Some other compiler flag.        -* | +*) -        func_quote_for_eval "$arg" -	arg=$func_quote_for_eval_result +        func_quote_arg pretty "$arg" +	arg=$func_quote_arg_result  	;;        *.$objext) @@ -7426,8 +7712,8 @@ func_mode_link ()        *)  	# Unknown arguments in both finalize_command and compile_command need  	# to be aesthetically quoted because they are evaled later. -	func_quote_for_eval "$arg" -	arg=$func_quote_for_eval_result +	func_quote_arg pretty "$arg" +	arg=$func_quote_arg_result  	;;        esac # arg @@ -8632,7 +8918,7 @@ func_mode_link ()        test CXX = "$tagname" && {          case $host_os in          linux*) -          case `$CC -V 2>&1 | sed 5q` in +          case `$CC -V 2>&1 | $SED 5q` in            *Sun\ C*) # Sun C++ 5.9              func_suncc_cstd_abi @@ -8805,13 +9091,13 @@ func_mode_link ()  	  #  	  case $version_type in  	  # correct linux to gnu/linux during the next big refactor -	  darwin|freebsd-elf|midnightbsd-elf|linux|osf|windows|none) +	  darwin|freebsd-elf|linux|midnightbsd-elf|osf|windows|none)  	    func_arith $number_major + $number_minor  	    current=$func_arith_result  	    age=$number_minor  	    revision=$number_revision  	    ;; -	  freebsd-aout|midnightbsd-aout|qnx|sunos) +	  freebsd-aout|qnx|sunos)  	    current=$number_major  	    revision=$number_minor  	    age=0 @@ -8891,12 +9177,12 @@ func_mode_link ()            esac  	  ;; -	freebsd-aout | midnightbsd-aout) +	freebsd-aout)  	  major=.$current  	  versuffix=.$current.$revision  	  ;; -	freebsd-elf | midnightbsd-elf | midnightbsd) +	freebsd-elf | midnightbsd-elf)  	  func_arith $current - $age  	  major=.$func_arith_result  	  versuffix=$major.$age.$revision @@ -9933,8 +10219,8 @@ EOF  	    for cmd in $concat_cmds; do  	      IFS=$save_ifs  	      $opt_quiet || { -		  func_quote_for_expand "$cmd" -		  eval "func_echo $func_quote_for_expand_result" +		  func_quote_arg expand,pretty "$cmd" +		  eval "func_echo $func_quote_arg_result"  	      }  	      $opt_dry_run || eval "$cmd" || {  		lt_exit=$? @@ -10027,8 +10313,8 @@ EOF  	  eval cmd=\"$cmd\"  	  IFS=$save_ifs  	  $opt_quiet || { -	    func_quote_for_expand "$cmd" -	    eval "func_echo $func_quote_for_expand_result" +	    func_quote_arg expand,pretty "$cmd" +	    eval "func_echo $func_quote_arg_result"  	  }  	  $opt_dry_run || eval "$cmd" || {  	    lt_exit=$? @@ -10502,12 +10788,13 @@ EOF  	  elif eval var_value=\$$var; test -z "$var_value"; then  	    relink_command="$var=; export $var; $relink_command"  	  else -	    func_quote_for_eval "$var_value" -	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" +	    func_quote_arg pretty "$var_value" +	    relink_command="$var=$func_quote_arg_result; export $var; $relink_command"  	  fi  	done -	relink_command="(cd `pwd`; $relink_command)" -	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` +	func_quote eval cd "`pwd`" +	func_quote_arg pretty,unquoted "($func_quote_result; $relink_command)" +	relink_command=$func_quote_arg_unquoted_result        fi        # Only actually do things if not in dry run mode. @@ -10747,13 +11034,15 @@ EOF  	elif eval var_value=\$$var; test -z "$var_value"; then  	  relink_command="$var=; export $var; $relink_command"  	else -	  func_quote_for_eval "$var_value" -	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" +	  func_quote_arg pretty,unquoted "$var_value" +	  relink_command="$var=$func_quote_arg_unquoted_result; export $var; $relink_command"  	fi        done        # Quote the link command for shipping. -      relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" -      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` +      func_quote eval cd "`pwd`" +      relink_command="($func_quote_result; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" +      func_quote_arg pretty,unquoted "$relink_command" +      relink_command=$func_quote_arg_unquoted_result        if test yes = "$hardcode_automatic"; then  	relink_command=        fi diff --git a/build-aux/run-test b/build-aux/run-test index 7c980ce2..58e9cc6d 100755 --- a/build-aux/run-test +++ b/build-aux/run-test @@ -4,7 +4,7 @@  #  # This program is free software: you can redistribute it and/or modify  # it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or +# the Free Software Foundation, either version 3 of the License, or  # (at your option) any later version.  #  # This program is distributed in the hope that it will be useful, | 
