199ca880aSopenharmony_ci#! /bin/sh
299ca880aSopenharmony_ci## DO NOT EDIT - This file generated from ./build-aux/ltmain.in
399ca880aSopenharmony_ci##               by inline-source v2014-01-03.01
499ca880aSopenharmony_ci
599ca880aSopenharmony_ci# libtool (GNU libtool) 2.4.6
699ca880aSopenharmony_ci# Provide generalized library-building support services.
799ca880aSopenharmony_ci# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
899ca880aSopenharmony_ci
999ca880aSopenharmony_ci# Copyright (C) 1996-2015 Free Software Foundation, Inc.
1099ca880aSopenharmony_ci# This is free software; see the source for copying conditions.  There is NO
1199ca880aSopenharmony_ci# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
1299ca880aSopenharmony_ci
1399ca880aSopenharmony_ci# GNU Libtool is free software; you can redistribute it and/or modify
1499ca880aSopenharmony_ci# it under the terms of the GNU General Public License as published by
1599ca880aSopenharmony_ci# the Free Software Foundation; either version 2 of the License, or
1699ca880aSopenharmony_ci# (at your option) any later version.
1799ca880aSopenharmony_ci#
1899ca880aSopenharmony_ci# As a special exception to the GNU General Public License,
1999ca880aSopenharmony_ci# if you distribute this file as part of a program or library that
2099ca880aSopenharmony_ci# is built using GNU Libtool, you may include this file under the
2199ca880aSopenharmony_ci# same distribution terms that you use for the rest of that program.
2299ca880aSopenharmony_ci#
2399ca880aSopenharmony_ci# GNU Libtool is distributed in the hope that it will be useful, but
2499ca880aSopenharmony_ci# WITHOUT ANY WARRANTY; without even the implied warranty of
2599ca880aSopenharmony_ci# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
2699ca880aSopenharmony_ci# General Public License for more details.
2799ca880aSopenharmony_ci#
2899ca880aSopenharmony_ci# You should have received a copy of the GNU General Public License
2999ca880aSopenharmony_ci# along with this program.  If not, see <http://www.gnu.org/licenses/>.
3099ca880aSopenharmony_ci
3199ca880aSopenharmony_ci
3299ca880aSopenharmony_ciPROGRAM=libtool
3399ca880aSopenharmony_ciPACKAGE=libtool
3499ca880aSopenharmony_ciVERSION=2.4.6
3599ca880aSopenharmony_cipackage_revision=2.4.6
3699ca880aSopenharmony_ci
3799ca880aSopenharmony_ci
3899ca880aSopenharmony_ci## ------ ##
3999ca880aSopenharmony_ci## Usage. ##
4099ca880aSopenharmony_ci## ------ ##
4199ca880aSopenharmony_ci
4299ca880aSopenharmony_ci# Run './libtool --help' for help with using this script from the
4399ca880aSopenharmony_ci# command line.
4499ca880aSopenharmony_ci
4599ca880aSopenharmony_ci
4699ca880aSopenharmony_ci## ------------------------------- ##
4799ca880aSopenharmony_ci## User overridable command paths. ##
4899ca880aSopenharmony_ci## ------------------------------- ##
4999ca880aSopenharmony_ci
5099ca880aSopenharmony_ci# After configure completes, it has a better idea of some of the
5199ca880aSopenharmony_ci# shell tools we need than the defaults used by the functions shared
5299ca880aSopenharmony_ci# with bootstrap, so set those here where they can still be over-
5399ca880aSopenharmony_ci# ridden by the user, but otherwise take precedence.
5499ca880aSopenharmony_ci
5599ca880aSopenharmony_ci: ${AUTOCONF="autoconf"}
5699ca880aSopenharmony_ci: ${AUTOMAKE="automake"}
5799ca880aSopenharmony_ci
5899ca880aSopenharmony_ci
5999ca880aSopenharmony_ci## -------------------------- ##
6099ca880aSopenharmony_ci## Source external libraries. ##
6199ca880aSopenharmony_ci## -------------------------- ##
6299ca880aSopenharmony_ci
6399ca880aSopenharmony_ci# Much of our low-level functionality needs to be sourced from external
6499ca880aSopenharmony_ci# libraries, which are installed to $pkgauxdir.
6599ca880aSopenharmony_ci
6699ca880aSopenharmony_ci# Set a version string for this script.
6799ca880aSopenharmony_ciscriptversion=2015-10-04.22; # UTC
6899ca880aSopenharmony_ci
6999ca880aSopenharmony_ci# General shell script boiler plate, and helper functions.
7099ca880aSopenharmony_ci# Written by Gary V. Vaughan, 2004
7199ca880aSopenharmony_ci
7299ca880aSopenharmony_ci# Copyright (C) 2004-2015 Free Software Foundation, Inc.
7399ca880aSopenharmony_ci# This is free software; see the source for copying conditions.  There is NO
7499ca880aSopenharmony_ci# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
7599ca880aSopenharmony_ci
7699ca880aSopenharmony_ci# This program is free software; you can redistribute it and/or modify
7799ca880aSopenharmony_ci# it under the terms of the GNU General Public License as published by
7899ca880aSopenharmony_ci# the Free Software Foundation; either version 3 of the License, or
7999ca880aSopenharmony_ci# (at your option) any later version.
8099ca880aSopenharmony_ci
8199ca880aSopenharmony_ci# As a special exception to the GNU General Public License, if you distribute
8299ca880aSopenharmony_ci# this file as part of a program or library that is built using GNU Libtool,
8399ca880aSopenharmony_ci# you may include this file under the same distribution terms that you use
8499ca880aSopenharmony_ci# for the rest of that program.
8599ca880aSopenharmony_ci
8699ca880aSopenharmony_ci# This program is distributed in the hope that it will be useful,
8799ca880aSopenharmony_ci# but WITHOUT ANY WARRANTY; without even the implied warranty of
8899ca880aSopenharmony_ci# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU
8999ca880aSopenharmony_ci# General Public License for more details.
9099ca880aSopenharmony_ci
9199ca880aSopenharmony_ci# You should have received a copy of the GNU General Public License
9299ca880aSopenharmony_ci# along with this program. If not, see <http://www.gnu.org/licenses/>.
9399ca880aSopenharmony_ci
9499ca880aSopenharmony_ci# Please report bugs or propose patches to gary@gnu.org.
9599ca880aSopenharmony_ci
9699ca880aSopenharmony_ci
9799ca880aSopenharmony_ci## ------ ##
9899ca880aSopenharmony_ci## Usage. ##
9999ca880aSopenharmony_ci## ------ ##
10099ca880aSopenharmony_ci
10199ca880aSopenharmony_ci# Evaluate this file near the top of your script to gain access to
10299ca880aSopenharmony_ci# the functions and variables defined here:
10399ca880aSopenharmony_ci#
10499ca880aSopenharmony_ci#   . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh
10599ca880aSopenharmony_ci#
10699ca880aSopenharmony_ci# If you need to override any of the default environment variable
10799ca880aSopenharmony_ci# settings, do that before evaluating this file.
10899ca880aSopenharmony_ci
10999ca880aSopenharmony_ci
11099ca880aSopenharmony_ci## -------------------- ##
11199ca880aSopenharmony_ci## Shell normalisation. ##
11299ca880aSopenharmony_ci## -------------------- ##
11399ca880aSopenharmony_ci
11499ca880aSopenharmony_ci# Some shells need a little help to be as Bourne compatible as possible.
11599ca880aSopenharmony_ci# Before doing anything else, make sure all that help has been provided!
11699ca880aSopenharmony_ci
11799ca880aSopenharmony_ciDUALCASE=1; export DUALCASE # for MKS sh
11899ca880aSopenharmony_ciif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
11999ca880aSopenharmony_ci  emulate sh
12099ca880aSopenharmony_ci  NULLCMD=:
12199ca880aSopenharmony_ci  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
12299ca880aSopenharmony_ci  # is contrary to our usage.  Disable this feature.
12399ca880aSopenharmony_ci  alias -g '${1+"$@"}'='"$@"'
12499ca880aSopenharmony_ci  setopt NO_GLOB_SUBST
12599ca880aSopenharmony_cielse
12699ca880aSopenharmony_ci  case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac
12799ca880aSopenharmony_cifi
12899ca880aSopenharmony_ci
12999ca880aSopenharmony_ci# NLS nuisances: We save the old values in case they are required later.
13099ca880aSopenharmony_ci_G_user_locale=
13199ca880aSopenharmony_ci_G_safe_locale=
13299ca880aSopenharmony_cifor _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
13399ca880aSopenharmony_cido
13499ca880aSopenharmony_ci  eval "if test set = \"\${$_G_var+set}\"; then
13599ca880aSopenharmony_ci          save_$_G_var=\$$_G_var
13699ca880aSopenharmony_ci          $_G_var=C
13799ca880aSopenharmony_ci	  export $_G_var
13899ca880aSopenharmony_ci	  _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\"
13999ca880aSopenharmony_ci	  _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\"
14099ca880aSopenharmony_ci	fi"
14199ca880aSopenharmony_cidone
14299ca880aSopenharmony_ci
14399ca880aSopenharmony_ci# CDPATH.
14499ca880aSopenharmony_ci(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
14599ca880aSopenharmony_ci
14699ca880aSopenharmony_ci# Make sure IFS has a sensible default
14799ca880aSopenharmony_cisp=' '
14899ca880aSopenharmony_cinl='
14999ca880aSopenharmony_ci'
15099ca880aSopenharmony_ciIFS="$sp	$nl"
15199ca880aSopenharmony_ci
15299ca880aSopenharmony_ci# There are apparently some retarded systems that use ';' as a PATH separator!
15399ca880aSopenharmony_ciif test "${PATH_SEPARATOR+set}" != set; then
15499ca880aSopenharmony_ci  PATH_SEPARATOR=:
15599ca880aSopenharmony_ci  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
15699ca880aSopenharmony_ci    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
15799ca880aSopenharmony_ci      PATH_SEPARATOR=';'
15899ca880aSopenharmony_ci  }
15999ca880aSopenharmony_cifi
16099ca880aSopenharmony_ci
16199ca880aSopenharmony_ci
16299ca880aSopenharmony_ci
16399ca880aSopenharmony_ci## ------------------------- ##
16499ca880aSopenharmony_ci## Locate command utilities. ##
16599ca880aSopenharmony_ci## ------------------------- ##
16699ca880aSopenharmony_ci
16799ca880aSopenharmony_ci
16899ca880aSopenharmony_ci# func_executable_p FILE
16999ca880aSopenharmony_ci# ----------------------
17099ca880aSopenharmony_ci# Check that FILE is an executable regular file.
17199ca880aSopenharmony_cifunc_executable_p ()
17299ca880aSopenharmony_ci{
17399ca880aSopenharmony_ci    test -f "$1" && test -x "$1"
17499ca880aSopenharmony_ci}
17599ca880aSopenharmony_ci
17699ca880aSopenharmony_ci
17799ca880aSopenharmony_ci# func_path_progs PROGS_LIST CHECK_FUNC [PATH]
17899ca880aSopenharmony_ci# --------------------------------------------
17999ca880aSopenharmony_ci# Search for either a program that responds to --version with output
18099ca880aSopenharmony_ci# containing "GNU", or else returned by CHECK_FUNC otherwise, by
18199ca880aSopenharmony_ci# trying all the directories in PATH with each of the elements of
18299ca880aSopenharmony_ci# PROGS_LIST.
18399ca880aSopenharmony_ci#
18499ca880aSopenharmony_ci# CHECK_FUNC should accept the path to a candidate program, and
18599ca880aSopenharmony_ci# set $func_check_prog_result if it truncates its output less than
18699ca880aSopenharmony_ci# $_G_path_prog_max characters.
18799ca880aSopenharmony_cifunc_path_progs ()
18899ca880aSopenharmony_ci{
18999ca880aSopenharmony_ci    _G_progs_list=$1
19099ca880aSopenharmony_ci    _G_check_func=$2
19199ca880aSopenharmony_ci    _G_PATH=${3-"$PATH"}
19299ca880aSopenharmony_ci
19399ca880aSopenharmony_ci    _G_path_prog_max=0
19499ca880aSopenharmony_ci    _G_path_prog_found=false
19599ca880aSopenharmony_ci    _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:}
19699ca880aSopenharmony_ci    for _G_dir in $_G_PATH; do
19799ca880aSopenharmony_ci      IFS=$_G_save_IFS
19899ca880aSopenharmony_ci      test -z "$_G_dir" && _G_dir=.
19999ca880aSopenharmony_ci      for _G_prog_name in $_G_progs_list; do
20099ca880aSopenharmony_ci        for _exeext in '' .EXE; do
20199ca880aSopenharmony_ci          _G_path_prog=$_G_dir/$_G_prog_name$_exeext
20299ca880aSopenharmony_ci          func_executable_p "$_G_path_prog" || continue
20399ca880aSopenharmony_ci          case `"$_G_path_prog" --version 2>&1` in
20499ca880aSopenharmony_ci            *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;;
20599ca880aSopenharmony_ci            *)     $_G_check_func $_G_path_prog
20699ca880aSopenharmony_ci		   func_path_progs_result=$func_check_prog_result
20799ca880aSopenharmony_ci		   ;;
20899ca880aSopenharmony_ci          esac
20999ca880aSopenharmony_ci          $_G_path_prog_found && break 3
21099ca880aSopenharmony_ci        done
21199ca880aSopenharmony_ci      done
21299ca880aSopenharmony_ci    done
21399ca880aSopenharmony_ci    IFS=$_G_save_IFS
21499ca880aSopenharmony_ci    test -z "$func_path_progs_result" && {
21599ca880aSopenharmony_ci      echo "no acceptable sed could be found in \$PATH" >&2
21699ca880aSopenharmony_ci      exit 1
21799ca880aSopenharmony_ci    }
21899ca880aSopenharmony_ci}
21999ca880aSopenharmony_ci
22099ca880aSopenharmony_ci
22199ca880aSopenharmony_ci# We want to be able to use the functions in this file before configure
22299ca880aSopenharmony_ci# has figured out where the best binaries are kept, which means we have
22399ca880aSopenharmony_ci# to search for them ourselves - except when the results are already set
22499ca880aSopenharmony_ci# where we skip the searches.
22599ca880aSopenharmony_ci
22699ca880aSopenharmony_ci# Unless the user overrides by setting SED, search the path for either GNU
22799ca880aSopenharmony_ci# sed, or the sed that truncates its output the least.
22899ca880aSopenharmony_citest -z "$SED" && {
22999ca880aSopenharmony_ci  _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
23099ca880aSopenharmony_ci  for _G_i in 1 2 3 4 5 6 7; do
23199ca880aSopenharmony_ci    _G_sed_script=$_G_sed_script$nl$_G_sed_script
23299ca880aSopenharmony_ci  done
23399ca880aSopenharmony_ci  echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed
23499ca880aSopenharmony_ci  _G_sed_script=
23599ca880aSopenharmony_ci
23699ca880aSopenharmony_ci  func_check_prog_sed ()
23799ca880aSopenharmony_ci  {
23899ca880aSopenharmony_ci    _G_path_prog=$1
23999ca880aSopenharmony_ci
24099ca880aSopenharmony_ci    _G_count=0
24199ca880aSopenharmony_ci    printf 0123456789 >conftest.in
24299ca880aSopenharmony_ci    while :
24399ca880aSopenharmony_ci    do
24499ca880aSopenharmony_ci      cat conftest.in conftest.in >conftest.tmp
24599ca880aSopenharmony_ci      mv conftest.tmp conftest.in
24699ca880aSopenharmony_ci      cp conftest.in conftest.nl
24799ca880aSopenharmony_ci      echo '' >> conftest.nl
24899ca880aSopenharmony_ci      "$_G_path_prog" -f conftest.sed <conftest.nl >conftest.out 2>/dev/null || break
24999ca880aSopenharmony_ci      diff conftest.out conftest.nl >/dev/null 2>&1 || break
25099ca880aSopenharmony_ci      _G_count=`expr $_G_count + 1`
25199ca880aSopenharmony_ci      if test "$_G_count" -gt "$_G_path_prog_max"; then
25299ca880aSopenharmony_ci        # Best one so far, save it but keep looking for a better one
25399ca880aSopenharmony_ci        func_check_prog_result=$_G_path_prog
25499ca880aSopenharmony_ci        _G_path_prog_max=$_G_count
25599ca880aSopenharmony_ci      fi
25699ca880aSopenharmony_ci      # 10*(2^10) chars as input seems more than enough
25799ca880aSopenharmony_ci      test 10 -lt "$_G_count" && break
25899ca880aSopenharmony_ci    done
25999ca880aSopenharmony_ci    rm -f conftest.in conftest.tmp conftest.nl conftest.out
26099ca880aSopenharmony_ci  }
26199ca880aSopenharmony_ci
26299ca880aSopenharmony_ci  func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin
26399ca880aSopenharmony_ci  rm -f conftest.sed
26499ca880aSopenharmony_ci  SED=$func_path_progs_result
26599ca880aSopenharmony_ci}
26699ca880aSopenharmony_ci
26799ca880aSopenharmony_ci
26899ca880aSopenharmony_ci# Unless the user overrides by setting GREP, search the path for either GNU
26999ca880aSopenharmony_ci# grep, or the grep that truncates its output the least.
27099ca880aSopenharmony_citest -z "$GREP" && {
27199ca880aSopenharmony_ci  func_check_prog_grep ()
27299ca880aSopenharmony_ci  {
27399ca880aSopenharmony_ci    _G_path_prog=$1
27499ca880aSopenharmony_ci
27599ca880aSopenharmony_ci    _G_count=0
27699ca880aSopenharmony_ci    _G_path_prog_max=0
27799ca880aSopenharmony_ci    printf 0123456789 >conftest.in
27899ca880aSopenharmony_ci    while :
27999ca880aSopenharmony_ci    do
28099ca880aSopenharmony_ci      cat conftest.in conftest.in >conftest.tmp
28199ca880aSopenharmony_ci      mv conftest.tmp conftest.in
28299ca880aSopenharmony_ci      cp conftest.in conftest.nl
28399ca880aSopenharmony_ci      echo 'GREP' >> conftest.nl
28499ca880aSopenharmony_ci      "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' <conftest.nl >conftest.out 2>/dev/null || break
28599ca880aSopenharmony_ci      diff conftest.out conftest.nl >/dev/null 2>&1 || break
28699ca880aSopenharmony_ci      _G_count=`expr $_G_count + 1`
28799ca880aSopenharmony_ci      if test "$_G_count" -gt "$_G_path_prog_max"; then
28899ca880aSopenharmony_ci        # Best one so far, save it but keep looking for a better one
28999ca880aSopenharmony_ci        func_check_prog_result=$_G_path_prog
29099ca880aSopenharmony_ci        _G_path_prog_max=$_G_count
29199ca880aSopenharmony_ci      fi
29299ca880aSopenharmony_ci      # 10*(2^10) chars as input seems more than enough
29399ca880aSopenharmony_ci      test 10 -lt "$_G_count" && break
29499ca880aSopenharmony_ci    done
29599ca880aSopenharmony_ci    rm -f conftest.in conftest.tmp conftest.nl conftest.out
29699ca880aSopenharmony_ci  }
29799ca880aSopenharmony_ci
29899ca880aSopenharmony_ci  func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin
29999ca880aSopenharmony_ci  GREP=$func_path_progs_result
30099ca880aSopenharmony_ci}
30199ca880aSopenharmony_ci
30299ca880aSopenharmony_ci
30399ca880aSopenharmony_ci## ------------------------------- ##
30499ca880aSopenharmony_ci## User overridable command paths. ##
30599ca880aSopenharmony_ci## ------------------------------- ##
30699ca880aSopenharmony_ci
30799ca880aSopenharmony_ci# All uppercase variable names are used for environment variables.  These
30899ca880aSopenharmony_ci# variables can be overridden by the user before calling a script that
30999ca880aSopenharmony_ci# uses them if a suitable command of that name is not already available
31099ca880aSopenharmony_ci# in the command search PATH.
31199ca880aSopenharmony_ci
31299ca880aSopenharmony_ci: ${CP="cp -f"}
31399ca880aSopenharmony_ci: ${ECHO="printf %s\n"}
31499ca880aSopenharmony_ci: ${EGREP="$GREP -E"}
31599ca880aSopenharmony_ci: ${FGREP="$GREP -F"}
31699ca880aSopenharmony_ci: ${LN_S="ln -s"}
31799ca880aSopenharmony_ci: ${MAKE="make"}
31899ca880aSopenharmony_ci: ${MKDIR="mkdir"}
31999ca880aSopenharmony_ci: ${MV="mv -f"}
32099ca880aSopenharmony_ci: ${RM="rm -f"}
32199ca880aSopenharmony_ci: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
32299ca880aSopenharmony_ci
32399ca880aSopenharmony_ci
32499ca880aSopenharmony_ci## -------------------- ##
32599ca880aSopenharmony_ci## Useful sed snippets. ##
32699ca880aSopenharmony_ci## -------------------- ##
32799ca880aSopenharmony_ci
32899ca880aSopenharmony_cised_dirname='s|/[^/]*$||'
32999ca880aSopenharmony_cised_basename='s|^.*/||'
33099ca880aSopenharmony_ci
33199ca880aSopenharmony_ci# Sed substitution that helps us do robust quoting.  It backslashifies
33299ca880aSopenharmony_ci# metacharacters that are still active within double-quoted strings.
33399ca880aSopenharmony_cised_quote_subst='s|\([`"$\\]\)|\\\1|g'
33499ca880aSopenharmony_ci
33599ca880aSopenharmony_ci# Same as above, but do not quote variable references.
33699ca880aSopenharmony_cised_double_quote_subst='s/\(["`\\]\)/\\\1/g'
33799ca880aSopenharmony_ci
33899ca880aSopenharmony_ci# Sed substitution that turns a string into a regex matching for the
33999ca880aSopenharmony_ci# string literally.
34099ca880aSopenharmony_cised_make_literal_regex='s|[].[^$\\*\/]|\\&|g'
34199ca880aSopenharmony_ci
34299ca880aSopenharmony_ci# Sed substitution that converts a w32 file name or path
34399ca880aSopenharmony_ci# that contains forward slashes, into one that contains
34499ca880aSopenharmony_ci# (escaped) backslashes.  A very naive implementation.
34599ca880aSopenharmony_cised_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
34699ca880aSopenharmony_ci
34799ca880aSopenharmony_ci# Re-'\' parameter expansions in output of sed_double_quote_subst that
34899ca880aSopenharmony_ci# were '\'-ed in input to the same.  If an odd number of '\' preceded a
34999ca880aSopenharmony_ci# '$' in input to sed_double_quote_subst, that '$' was protected from
35099ca880aSopenharmony_ci# expansion.  Since each input '\' is now two '\'s, look for any number
35199ca880aSopenharmony_ci# of runs of four '\'s followed by two '\'s and then a '$'.  '\' that '$'.
35299ca880aSopenharmony_ci_G_bs='\\'
35399ca880aSopenharmony_ci_G_bs2='\\\\'
35499ca880aSopenharmony_ci_G_bs4='\\\\\\\\'
35599ca880aSopenharmony_ci_G_dollar='\$'
35699ca880aSopenharmony_cised_double_backslash="\
35799ca880aSopenharmony_ci  s/$_G_bs4/&\\
35899ca880aSopenharmony_ci/g
35999ca880aSopenharmony_ci  s/^$_G_bs2$_G_dollar/$_G_bs&/
36099ca880aSopenharmony_ci  s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g
36199ca880aSopenharmony_ci  s/\n//g"
36299ca880aSopenharmony_ci
36399ca880aSopenharmony_ci
36499ca880aSopenharmony_ci## ----------------- ##
36599ca880aSopenharmony_ci## Global variables. ##
36699ca880aSopenharmony_ci## ----------------- ##
36799ca880aSopenharmony_ci
36899ca880aSopenharmony_ci# Except for the global variables explicitly listed below, the following
36999ca880aSopenharmony_ci# functions in the '^func_' namespace, and the '^require_' namespace
37099ca880aSopenharmony_ci# variables initialised in the 'Resource management' section, sourcing
37199ca880aSopenharmony_ci# this file will not pollute your global namespace with anything
37299ca880aSopenharmony_ci# else. There's no portable way to scope variables in Bourne shell
37399ca880aSopenharmony_ci# though, so actually running these functions will sometimes place
37499ca880aSopenharmony_ci# results into a variable named after the function, and often use
37599ca880aSopenharmony_ci# temporary variables in the '^_G_' namespace. If you are careful to
37699ca880aSopenharmony_ci# avoid using those namespaces casually in your sourcing script, things
37799ca880aSopenharmony_ci# should continue to work as you expect. And, of course, you can freely
37899ca880aSopenharmony_ci# overwrite any of the functions or variables defined here before
37999ca880aSopenharmony_ci# calling anything to customize them.
38099ca880aSopenharmony_ci
38199ca880aSopenharmony_ciEXIT_SUCCESS=0
38299ca880aSopenharmony_ciEXIT_FAILURE=1
38399ca880aSopenharmony_ciEXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
38499ca880aSopenharmony_ciEXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
38599ca880aSopenharmony_ci
38699ca880aSopenharmony_ci# Allow overriding, eg assuming that you follow the convention of
38799ca880aSopenharmony_ci# putting '$debug_cmd' at the start of all your functions, you can get
38899ca880aSopenharmony_ci# bash to show function call trace with:
38999ca880aSopenharmony_ci#
39099ca880aSopenharmony_ci#    debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name
39199ca880aSopenharmony_cidebug_cmd=${debug_cmd-":"}
39299ca880aSopenharmony_ciexit_cmd=:
39399ca880aSopenharmony_ci
39499ca880aSopenharmony_ci# By convention, finish your script with:
39599ca880aSopenharmony_ci#
39699ca880aSopenharmony_ci#    exit $exit_status
39799ca880aSopenharmony_ci#
39899ca880aSopenharmony_ci# so that you can set exit_status to non-zero if you want to indicate
39999ca880aSopenharmony_ci# something went wrong during execution without actually bailing out at
40099ca880aSopenharmony_ci# the point of failure.
40199ca880aSopenharmony_ciexit_status=$EXIT_SUCCESS
40299ca880aSopenharmony_ci
40399ca880aSopenharmony_ci# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
40499ca880aSopenharmony_ci# is ksh but when the shell is invoked as "sh" and the current value of
40599ca880aSopenharmony_ci# the _XPG environment variable is not equal to 1 (one), the special
40699ca880aSopenharmony_ci# positional parameter $0, within a function call, is the name of the
40799ca880aSopenharmony_ci# function.
40899ca880aSopenharmony_ciprogpath=$0
40999ca880aSopenharmony_ci
41099ca880aSopenharmony_ci# The name of this program.
41199ca880aSopenharmony_ciprogname=`$ECHO "$progpath" |$SED "$sed_basename"`
41299ca880aSopenharmony_ci
41399ca880aSopenharmony_ci# Make sure we have an absolute progpath for reexecution:
41499ca880aSopenharmony_cicase $progpath in
41599ca880aSopenharmony_ci  [\\/]*|[A-Za-z]:\\*) ;;
41699ca880aSopenharmony_ci  *[\\/]*)
41799ca880aSopenharmony_ci     progdir=`$ECHO "$progpath" |$SED "$sed_dirname"`
41899ca880aSopenharmony_ci     progdir=`cd "$progdir" && pwd`
41999ca880aSopenharmony_ci     progpath=$progdir/$progname
42099ca880aSopenharmony_ci     ;;
42199ca880aSopenharmony_ci  *)
42299ca880aSopenharmony_ci     _G_IFS=$IFS
42399ca880aSopenharmony_ci     IFS=${PATH_SEPARATOR-:}
42499ca880aSopenharmony_ci     for progdir in $PATH; do
42599ca880aSopenharmony_ci       IFS=$_G_IFS
42699ca880aSopenharmony_ci       test -x "$progdir/$progname" && break
42799ca880aSopenharmony_ci     done
42899ca880aSopenharmony_ci     IFS=$_G_IFS
42999ca880aSopenharmony_ci     test -n "$progdir" || progdir=`pwd`
43099ca880aSopenharmony_ci     progpath=$progdir/$progname
43199ca880aSopenharmony_ci     ;;
43299ca880aSopenharmony_ciesac
43399ca880aSopenharmony_ci
43499ca880aSopenharmony_ci
43599ca880aSopenharmony_ci## ----------------- ##
43699ca880aSopenharmony_ci## Standard options. ##
43799ca880aSopenharmony_ci## ----------------- ##
43899ca880aSopenharmony_ci
43999ca880aSopenharmony_ci# The following options affect the operation of the functions defined
44099ca880aSopenharmony_ci# below, and should be set appropriately depending on run-time para-
44199ca880aSopenharmony_ci# meters passed on the command line.
44299ca880aSopenharmony_ci
44399ca880aSopenharmony_ciopt_dry_run=false
44499ca880aSopenharmony_ciopt_quiet=false
44599ca880aSopenharmony_ciopt_verbose=false
44699ca880aSopenharmony_ci
44799ca880aSopenharmony_ci# Categories 'all' and 'none' are always available.  Append any others
44899ca880aSopenharmony_ci# you will pass as the first argument to func_warning from your own
44999ca880aSopenharmony_ci# code.
45099ca880aSopenharmony_ciwarning_categories=
45199ca880aSopenharmony_ci
45299ca880aSopenharmony_ci# By default, display warnings according to 'opt_warning_types'.  Set
45399ca880aSopenharmony_ci# 'warning_func'  to ':' to elide all warnings, or func_fatal_error to
45499ca880aSopenharmony_ci# treat the next displayed warning as a fatal error.
45599ca880aSopenharmony_ciwarning_func=func_warn_and_continue
45699ca880aSopenharmony_ci
45799ca880aSopenharmony_ci# Set to 'all' to display all warnings, 'none' to suppress all
45899ca880aSopenharmony_ci# warnings, or a space delimited list of some subset of
45999ca880aSopenharmony_ci# 'warning_categories' to display only the listed warnings.
46099ca880aSopenharmony_ciopt_warning_types=all
46199ca880aSopenharmony_ci
46299ca880aSopenharmony_ci
46399ca880aSopenharmony_ci## -------------------- ##
46499ca880aSopenharmony_ci## Resource management. ##
46599ca880aSopenharmony_ci## -------------------- ##
46699ca880aSopenharmony_ci
46799ca880aSopenharmony_ci# This section contains definitions for functions that each ensure a
46899ca880aSopenharmony_ci# particular resource (a file, or a non-empty configuration variable for
46999ca880aSopenharmony_ci# example) is available, and if appropriate to extract default values
47099ca880aSopenharmony_ci# from pertinent package files. Call them using their associated
47199ca880aSopenharmony_ci# 'require_*' variable to ensure that they are executed, at most, once.
47299ca880aSopenharmony_ci#
47399ca880aSopenharmony_ci# It's entirely deliberate that calling these functions can set
47499ca880aSopenharmony_ci# variables that don't obey the namespace limitations obeyed by the rest
47599ca880aSopenharmony_ci# of this file, in order that that they be as useful as possible to
47699ca880aSopenharmony_ci# callers.
47799ca880aSopenharmony_ci
47899ca880aSopenharmony_ci
47999ca880aSopenharmony_ci# require_term_colors
48099ca880aSopenharmony_ci# -------------------
48199ca880aSopenharmony_ci# Allow display of bold text on terminals that support it.
48299ca880aSopenharmony_cirequire_term_colors=func_require_term_colors
48399ca880aSopenharmony_cifunc_require_term_colors ()
48499ca880aSopenharmony_ci{
48599ca880aSopenharmony_ci    $debug_cmd
48699ca880aSopenharmony_ci
48799ca880aSopenharmony_ci    test -t 1 && {
48899ca880aSopenharmony_ci      # COLORTERM and USE_ANSI_COLORS environment variables take
48999ca880aSopenharmony_ci      # precedence, because most terminfo databases neglect to describe
49099ca880aSopenharmony_ci      # whether color sequences are supported.
49199ca880aSopenharmony_ci      test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"}
49299ca880aSopenharmony_ci
49399ca880aSopenharmony_ci      if test 1 = "$USE_ANSI_COLORS"; then
49499ca880aSopenharmony_ci        # Standard ANSI escape sequences
49599ca880aSopenharmony_ci        tc_reset='[0m'
49699ca880aSopenharmony_ci        tc_bold='[1m';   tc_standout='[7m'
49799ca880aSopenharmony_ci        tc_red='[31m';   tc_green='[32m'
49899ca880aSopenharmony_ci        tc_blue='[34m';  tc_cyan='[36m'
49999ca880aSopenharmony_ci      else
50099ca880aSopenharmony_ci        # Otherwise trust the terminfo database after all.
50199ca880aSopenharmony_ci        test -n "`tput sgr0 2>/dev/null`" && {
50299ca880aSopenharmony_ci          tc_reset=`tput sgr0`
50399ca880aSopenharmony_ci          test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold`
50499ca880aSopenharmony_ci          tc_standout=$tc_bold
50599ca880aSopenharmony_ci          test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso`
50699ca880aSopenharmony_ci          test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1`
50799ca880aSopenharmony_ci          test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2`
50899ca880aSopenharmony_ci          test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4`
50999ca880aSopenharmony_ci          test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5`
51099ca880aSopenharmony_ci        }
51199ca880aSopenharmony_ci      fi
51299ca880aSopenharmony_ci    }
51399ca880aSopenharmony_ci
51499ca880aSopenharmony_ci    require_term_colors=:
51599ca880aSopenharmony_ci}
51699ca880aSopenharmony_ci
51799ca880aSopenharmony_ci
51899ca880aSopenharmony_ci## ----------------- ##
51999ca880aSopenharmony_ci## Function library. ##
52099ca880aSopenharmony_ci## ----------------- ##
52199ca880aSopenharmony_ci
52299ca880aSopenharmony_ci# This section contains a variety of useful functions to call in your
52399ca880aSopenharmony_ci# scripts. Take note of the portable wrappers for features provided by
52499ca880aSopenharmony_ci# some modern shells, which will fall back to slower equivalents on
52599ca880aSopenharmony_ci# less featureful shells.
52699ca880aSopenharmony_ci
52799ca880aSopenharmony_ci
52899ca880aSopenharmony_ci# func_append VAR VALUE
52999ca880aSopenharmony_ci# ---------------------
53099ca880aSopenharmony_ci# Append VALUE onto the existing contents of VAR.
53199ca880aSopenharmony_ci
53299ca880aSopenharmony_ci  # We should try to minimise forks, especially on Windows where they are
53399ca880aSopenharmony_ci  # unreasonably slow, so skip the feature probes when bash or zsh are
53499ca880aSopenharmony_ci  # being used:
53599ca880aSopenharmony_ci  if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then
53699ca880aSopenharmony_ci    : ${_G_HAVE_ARITH_OP="yes"}
53799ca880aSopenharmony_ci    : ${_G_HAVE_XSI_OPS="yes"}
53899ca880aSopenharmony_ci    # The += operator was introduced in bash 3.1
53999ca880aSopenharmony_ci    case $BASH_VERSION in
54099ca880aSopenharmony_ci      [12].* | 3.0 | 3.0*) ;;
54199ca880aSopenharmony_ci      *)
54299ca880aSopenharmony_ci        : ${_G_HAVE_PLUSEQ_OP="yes"}
54399ca880aSopenharmony_ci        ;;
54499ca880aSopenharmony_ci    esac
54599ca880aSopenharmony_ci  fi
54699ca880aSopenharmony_ci
54799ca880aSopenharmony_ci  # _G_HAVE_PLUSEQ_OP
54899ca880aSopenharmony_ci  # Can be empty, in which case the shell is probed, "yes" if += is
54999ca880aSopenharmony_ci  # useable or anything else if it does not work.
55099ca880aSopenharmony_ci  test -z "$_G_HAVE_PLUSEQ_OP" \
55199ca880aSopenharmony_ci    && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \
55299ca880aSopenharmony_ci    && _G_HAVE_PLUSEQ_OP=yes
55399ca880aSopenharmony_ci
55499ca880aSopenharmony_ciif test yes = "$_G_HAVE_PLUSEQ_OP"
55599ca880aSopenharmony_cithen
55699ca880aSopenharmony_ci  # This is an XSI compatible shell, allowing a faster implementation...
55799ca880aSopenharmony_ci  eval 'func_append ()
55899ca880aSopenharmony_ci  {
55999ca880aSopenharmony_ci    $debug_cmd
56099ca880aSopenharmony_ci
56199ca880aSopenharmony_ci    eval "$1+=\$2"
56299ca880aSopenharmony_ci  }'
56399ca880aSopenharmony_cielse
56499ca880aSopenharmony_ci  # ...otherwise fall back to using expr, which is often a shell builtin.
56599ca880aSopenharmony_ci  func_append ()
56699ca880aSopenharmony_ci  {
56799ca880aSopenharmony_ci    $debug_cmd
56899ca880aSopenharmony_ci
56999ca880aSopenharmony_ci    eval "$1=\$$1\$2"
57099ca880aSopenharmony_ci  }
57199ca880aSopenharmony_cifi
57299ca880aSopenharmony_ci
57399ca880aSopenharmony_ci
57499ca880aSopenharmony_ci# func_append_quoted VAR VALUE
57599ca880aSopenharmony_ci# ----------------------------
57699ca880aSopenharmony_ci# Quote VALUE and append to the end of shell variable VAR, separated
57799ca880aSopenharmony_ci# by a space.
57899ca880aSopenharmony_ciif test yes = "$_G_HAVE_PLUSEQ_OP"; then
57999ca880aSopenharmony_ci  eval 'func_append_quoted ()
58099ca880aSopenharmony_ci  {
58199ca880aSopenharmony_ci    $debug_cmd
58299ca880aSopenharmony_ci
58399ca880aSopenharmony_ci    func_quote_for_eval "$2"
58499ca880aSopenharmony_ci    eval "$1+=\\ \$func_quote_for_eval_result"
58599ca880aSopenharmony_ci  }'
58699ca880aSopenharmony_cielse
58799ca880aSopenharmony_ci  func_append_quoted ()
58899ca880aSopenharmony_ci  {
58999ca880aSopenharmony_ci    $debug_cmd
59099ca880aSopenharmony_ci
59199ca880aSopenharmony_ci    func_quote_for_eval "$2"
59299ca880aSopenharmony_ci    eval "$1=\$$1\\ \$func_quote_for_eval_result"
59399ca880aSopenharmony_ci  }
59499ca880aSopenharmony_cifi
59599ca880aSopenharmony_ci
59699ca880aSopenharmony_ci
59799ca880aSopenharmony_ci# func_append_uniq VAR VALUE
59899ca880aSopenharmony_ci# --------------------------
59999ca880aSopenharmony_ci# Append unique VALUE onto the existing contents of VAR, assuming
60099ca880aSopenharmony_ci# entries are delimited by the first character of VALUE.  For example:
60199ca880aSopenharmony_ci#
60299ca880aSopenharmony_ci#   func_append_uniq options " --another-option option-argument"
60399ca880aSopenharmony_ci#
60499ca880aSopenharmony_ci# will only append to $options if " --another-option option-argument "
60599ca880aSopenharmony_ci# is not already present somewhere in $options already (note spaces at
60699ca880aSopenharmony_ci# each end implied by leading space in second argument).
60799ca880aSopenharmony_cifunc_append_uniq ()
60899ca880aSopenharmony_ci{
60999ca880aSopenharmony_ci    $debug_cmd
61099ca880aSopenharmony_ci
61199ca880aSopenharmony_ci    eval _G_current_value='`$ECHO $'$1'`'
61299ca880aSopenharmony_ci    _G_delim=`expr "$2" : '\(.\)'`
61399ca880aSopenharmony_ci
61499ca880aSopenharmony_ci    case $_G_delim$_G_current_value$_G_delim in
61599ca880aSopenharmony_ci      *"$2$_G_delim"*) ;;
61699ca880aSopenharmony_ci      *) func_append "$@" ;;
61799ca880aSopenharmony_ci    esac
61899ca880aSopenharmony_ci}
61999ca880aSopenharmony_ci
62099ca880aSopenharmony_ci
62199ca880aSopenharmony_ci# func_arith TERM...
62299ca880aSopenharmony_ci# ------------------
62399ca880aSopenharmony_ci# Set func_arith_result to the result of evaluating TERMs.
62499ca880aSopenharmony_ci  test -z "$_G_HAVE_ARITH_OP" \
62599ca880aSopenharmony_ci    && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \
62699ca880aSopenharmony_ci    && _G_HAVE_ARITH_OP=yes
62799ca880aSopenharmony_ci
62899ca880aSopenharmony_ciif test yes = "$_G_HAVE_ARITH_OP"; then
62999ca880aSopenharmony_ci  eval 'func_arith ()
63099ca880aSopenharmony_ci  {
63199ca880aSopenharmony_ci    $debug_cmd
63299ca880aSopenharmony_ci
63399ca880aSopenharmony_ci    func_arith_result=$(( $* ))
63499ca880aSopenharmony_ci  }'
63599ca880aSopenharmony_cielse
63699ca880aSopenharmony_ci  func_arith ()
63799ca880aSopenharmony_ci  {
63899ca880aSopenharmony_ci    $debug_cmd
63999ca880aSopenharmony_ci
64099ca880aSopenharmony_ci    func_arith_result=`expr "$@"`
64199ca880aSopenharmony_ci  }
64299ca880aSopenharmony_cifi
64399ca880aSopenharmony_ci
64499ca880aSopenharmony_ci
64599ca880aSopenharmony_ci# func_basename FILE
64699ca880aSopenharmony_ci# ------------------
64799ca880aSopenharmony_ci# Set func_basename_result to FILE with everything up to and including
64899ca880aSopenharmony_ci# the last / stripped.
64999ca880aSopenharmony_ciif test yes = "$_G_HAVE_XSI_OPS"; then
65099ca880aSopenharmony_ci  # If this shell supports suffix pattern removal, then use it to avoid
65199ca880aSopenharmony_ci  # forking. Hide the definitions single quotes in case the shell chokes
65299ca880aSopenharmony_ci  # on unsupported syntax...
65399ca880aSopenharmony_ci  _b='func_basename_result=${1##*/}'
65499ca880aSopenharmony_ci  _d='case $1 in
65599ca880aSopenharmony_ci        */*) func_dirname_result=${1%/*}$2 ;;
65699ca880aSopenharmony_ci        *  ) func_dirname_result=$3        ;;
65799ca880aSopenharmony_ci      esac'
65899ca880aSopenharmony_ci
65999ca880aSopenharmony_cielse
66099ca880aSopenharmony_ci  # ...otherwise fall back to using sed.
66199ca880aSopenharmony_ci  _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`'
66299ca880aSopenharmony_ci  _d='func_dirname_result=`$ECHO "$1"  |$SED "$sed_dirname"`
66399ca880aSopenharmony_ci      if test "X$func_dirname_result" = "X$1"; then
66499ca880aSopenharmony_ci        func_dirname_result=$3
66599ca880aSopenharmony_ci      else
66699ca880aSopenharmony_ci        func_append func_dirname_result "$2"
66799ca880aSopenharmony_ci      fi'
66899ca880aSopenharmony_cifi
66999ca880aSopenharmony_ci
67099ca880aSopenharmony_cieval 'func_basename ()
67199ca880aSopenharmony_ci{
67299ca880aSopenharmony_ci    $debug_cmd
67399ca880aSopenharmony_ci
67499ca880aSopenharmony_ci    '"$_b"'
67599ca880aSopenharmony_ci}'
67699ca880aSopenharmony_ci
67799ca880aSopenharmony_ci
67899ca880aSopenharmony_ci# func_dirname FILE APPEND NONDIR_REPLACEMENT
67999ca880aSopenharmony_ci# -------------------------------------------
68099ca880aSopenharmony_ci# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
68199ca880aSopenharmony_ci# otherwise set result to NONDIR_REPLACEMENT.
68299ca880aSopenharmony_cieval 'func_dirname ()
68399ca880aSopenharmony_ci{
68499ca880aSopenharmony_ci    $debug_cmd
68599ca880aSopenharmony_ci
68699ca880aSopenharmony_ci    '"$_d"'
68799ca880aSopenharmony_ci}'
68899ca880aSopenharmony_ci
68999ca880aSopenharmony_ci
69099ca880aSopenharmony_ci# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT
69199ca880aSopenharmony_ci# --------------------------------------------------------
69299ca880aSopenharmony_ci# Perform func_basename and func_dirname in a single function
69399ca880aSopenharmony_ci# call:
69499ca880aSopenharmony_ci#   dirname:  Compute the dirname of FILE.  If nonempty,
69599ca880aSopenharmony_ci#             add APPEND to the result, otherwise set result
69699ca880aSopenharmony_ci#             to NONDIR_REPLACEMENT.
69799ca880aSopenharmony_ci#             value returned in "$func_dirname_result"
69899ca880aSopenharmony_ci#   basename: Compute filename of FILE.
69999ca880aSopenharmony_ci#             value retuned in "$func_basename_result"
70099ca880aSopenharmony_ci# For efficiency, we do not delegate to the functions above but instead
70199ca880aSopenharmony_ci# duplicate the functionality here.
70299ca880aSopenharmony_cieval 'func_dirname_and_basename ()
70399ca880aSopenharmony_ci{
70499ca880aSopenharmony_ci    $debug_cmd
70599ca880aSopenharmony_ci
70699ca880aSopenharmony_ci    '"$_b"'
70799ca880aSopenharmony_ci    '"$_d"'
70899ca880aSopenharmony_ci}'
70999ca880aSopenharmony_ci
71099ca880aSopenharmony_ci
71199ca880aSopenharmony_ci# func_echo ARG...
71299ca880aSopenharmony_ci# ----------------
71399ca880aSopenharmony_ci# Echo program name prefixed message.
71499ca880aSopenharmony_cifunc_echo ()
71599ca880aSopenharmony_ci{
71699ca880aSopenharmony_ci    $debug_cmd
71799ca880aSopenharmony_ci
71899ca880aSopenharmony_ci    _G_message=$*
71999ca880aSopenharmony_ci
72099ca880aSopenharmony_ci    func_echo_IFS=$IFS
72199ca880aSopenharmony_ci    IFS=$nl
72299ca880aSopenharmony_ci    for _G_line in $_G_message; do
72399ca880aSopenharmony_ci      IFS=$func_echo_IFS
72499ca880aSopenharmony_ci      $ECHO "$progname: $_G_line"
72599ca880aSopenharmony_ci    done
72699ca880aSopenharmony_ci    IFS=$func_echo_IFS
72799ca880aSopenharmony_ci}
72899ca880aSopenharmony_ci
72999ca880aSopenharmony_ci
73099ca880aSopenharmony_ci# func_echo_all ARG...
73199ca880aSopenharmony_ci# --------------------
73299ca880aSopenharmony_ci# Invoke $ECHO with all args, space-separated.
73399ca880aSopenharmony_cifunc_echo_all ()
73499ca880aSopenharmony_ci{
73599ca880aSopenharmony_ci    $ECHO "$*"
73699ca880aSopenharmony_ci}
73799ca880aSopenharmony_ci
73899ca880aSopenharmony_ci
73999ca880aSopenharmony_ci# func_echo_infix_1 INFIX ARG...
74099ca880aSopenharmony_ci# ------------------------------
74199ca880aSopenharmony_ci# Echo program name, followed by INFIX on the first line, with any
74299ca880aSopenharmony_ci# additional lines not showing INFIX.
74399ca880aSopenharmony_cifunc_echo_infix_1 ()
74499ca880aSopenharmony_ci{
74599ca880aSopenharmony_ci    $debug_cmd
74699ca880aSopenharmony_ci
74799ca880aSopenharmony_ci    $require_term_colors
74899ca880aSopenharmony_ci
74999ca880aSopenharmony_ci    _G_infix=$1; shift
75099ca880aSopenharmony_ci    _G_indent=$_G_infix
75199ca880aSopenharmony_ci    _G_prefix="$progname: $_G_infix: "
75299ca880aSopenharmony_ci    _G_message=$*
75399ca880aSopenharmony_ci
75499ca880aSopenharmony_ci    # Strip color escape sequences before counting printable length
75599ca880aSopenharmony_ci    for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan"
75699ca880aSopenharmony_ci    do
75799ca880aSopenharmony_ci      test -n "$_G_tc" && {
75899ca880aSopenharmony_ci        _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"`
75999ca880aSopenharmony_ci        _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"`
76099ca880aSopenharmony_ci      }
76199ca880aSopenharmony_ci    done
76299ca880aSopenharmony_ci    _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`"  " ## exclude from sc_prohibit_nested_quotes
76399ca880aSopenharmony_ci
76499ca880aSopenharmony_ci    func_echo_infix_1_IFS=$IFS
76599ca880aSopenharmony_ci    IFS=$nl
76699ca880aSopenharmony_ci    for _G_line in $_G_message; do
76799ca880aSopenharmony_ci      IFS=$func_echo_infix_1_IFS
76899ca880aSopenharmony_ci      $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2
76999ca880aSopenharmony_ci      _G_prefix=$_G_indent
77099ca880aSopenharmony_ci    done
77199ca880aSopenharmony_ci    IFS=$func_echo_infix_1_IFS
77299ca880aSopenharmony_ci}
77399ca880aSopenharmony_ci
77499ca880aSopenharmony_ci
77599ca880aSopenharmony_ci# func_error ARG...
77699ca880aSopenharmony_ci# -----------------
77799ca880aSopenharmony_ci# Echo program name prefixed message to standard error.
77899ca880aSopenharmony_cifunc_error ()
77999ca880aSopenharmony_ci{
78099ca880aSopenharmony_ci    $debug_cmd
78199ca880aSopenharmony_ci
78299ca880aSopenharmony_ci    $require_term_colors
78399ca880aSopenharmony_ci
78499ca880aSopenharmony_ci    func_echo_infix_1 "  $tc_standout${tc_red}error$tc_reset" "$*" >&2
78599ca880aSopenharmony_ci}
78699ca880aSopenharmony_ci
78799ca880aSopenharmony_ci
78899ca880aSopenharmony_ci# func_fatal_error ARG...
78999ca880aSopenharmony_ci# -----------------------
79099ca880aSopenharmony_ci# Echo program name prefixed message to standard error, and exit.
79199ca880aSopenharmony_cifunc_fatal_error ()
79299ca880aSopenharmony_ci{
79399ca880aSopenharmony_ci    $debug_cmd
79499ca880aSopenharmony_ci
79599ca880aSopenharmony_ci    func_error "$*"
79699ca880aSopenharmony_ci    exit $EXIT_FAILURE
79799ca880aSopenharmony_ci}
79899ca880aSopenharmony_ci
79999ca880aSopenharmony_ci
80099ca880aSopenharmony_ci# func_grep EXPRESSION FILENAME
80199ca880aSopenharmony_ci# -----------------------------
80299ca880aSopenharmony_ci# Check whether EXPRESSION matches any line of FILENAME, without output.
80399ca880aSopenharmony_cifunc_grep ()
80499ca880aSopenharmony_ci{
80599ca880aSopenharmony_ci    $debug_cmd
80699ca880aSopenharmony_ci
80799ca880aSopenharmony_ci    $GREP "$1" "$2" >/dev/null 2>&1
80899ca880aSopenharmony_ci}
80999ca880aSopenharmony_ci
81099ca880aSopenharmony_ci
81199ca880aSopenharmony_ci# func_len STRING
81299ca880aSopenharmony_ci# ---------------
81399ca880aSopenharmony_ci# Set func_len_result to the length of STRING. STRING may not
81499ca880aSopenharmony_ci# start with a hyphen.
81599ca880aSopenharmony_ci  test -z "$_G_HAVE_XSI_OPS" \
81699ca880aSopenharmony_ci    && (eval 'x=a/b/c;
81799ca880aSopenharmony_ci      test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
81899ca880aSopenharmony_ci    && _G_HAVE_XSI_OPS=yes
81999ca880aSopenharmony_ci
82099ca880aSopenharmony_ciif test yes = "$_G_HAVE_XSI_OPS"; then
82199ca880aSopenharmony_ci  eval 'func_len ()
82299ca880aSopenharmony_ci  {
82399ca880aSopenharmony_ci    $debug_cmd
82499ca880aSopenharmony_ci
82599ca880aSopenharmony_ci    func_len_result=${#1}
82699ca880aSopenharmony_ci  }'
82799ca880aSopenharmony_cielse
82899ca880aSopenharmony_ci  func_len ()
82999ca880aSopenharmony_ci  {
83099ca880aSopenharmony_ci    $debug_cmd
83199ca880aSopenharmony_ci
83299ca880aSopenharmony_ci    func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
83399ca880aSopenharmony_ci  }
83499ca880aSopenharmony_cifi
83599ca880aSopenharmony_ci
83699ca880aSopenharmony_ci
83799ca880aSopenharmony_ci# func_mkdir_p DIRECTORY-PATH
83899ca880aSopenharmony_ci# ---------------------------
83999ca880aSopenharmony_ci# Make sure the entire path to DIRECTORY-PATH is available.
84099ca880aSopenharmony_cifunc_mkdir_p ()
84199ca880aSopenharmony_ci{
84299ca880aSopenharmony_ci    $debug_cmd
84399ca880aSopenharmony_ci
84499ca880aSopenharmony_ci    _G_directory_path=$1
84599ca880aSopenharmony_ci    _G_dir_list=
84699ca880aSopenharmony_ci
84799ca880aSopenharmony_ci    if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then
84899ca880aSopenharmony_ci
84999ca880aSopenharmony_ci      # Protect directory names starting with '-'
85099ca880aSopenharmony_ci      case $_G_directory_path in
85199ca880aSopenharmony_ci        -*) _G_directory_path=./$_G_directory_path ;;
85299ca880aSopenharmony_ci      esac
85399ca880aSopenharmony_ci
85499ca880aSopenharmony_ci      # While some portion of DIR does not yet exist...
85599ca880aSopenharmony_ci      while test ! -d "$_G_directory_path"; do
85699ca880aSopenharmony_ci        # ...make a list in topmost first order.  Use a colon delimited
85799ca880aSopenharmony_ci	# list incase some portion of path contains whitespace.
85899ca880aSopenharmony_ci        _G_dir_list=$_G_directory_path:$_G_dir_list
85999ca880aSopenharmony_ci
86099ca880aSopenharmony_ci        # If the last portion added has no slash in it, the list is done
86199ca880aSopenharmony_ci        case $_G_directory_path in */*) ;; *) break ;; esac
86299ca880aSopenharmony_ci
86399ca880aSopenharmony_ci        # ...otherwise throw away the child directory and loop
86499ca880aSopenharmony_ci        _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"`
86599ca880aSopenharmony_ci      done
86699ca880aSopenharmony_ci      _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'`
86799ca880aSopenharmony_ci
86899ca880aSopenharmony_ci      func_mkdir_p_IFS=$IFS; IFS=:
86999ca880aSopenharmony_ci      for _G_dir in $_G_dir_list; do
87099ca880aSopenharmony_ci	IFS=$func_mkdir_p_IFS
87199ca880aSopenharmony_ci        # mkdir can fail with a 'File exist' error if two processes
87299ca880aSopenharmony_ci        # try to create one of the directories concurrently.  Don't
87399ca880aSopenharmony_ci        # stop in that case!
87499ca880aSopenharmony_ci        $MKDIR "$_G_dir" 2>/dev/null || :
87599ca880aSopenharmony_ci      done
87699ca880aSopenharmony_ci      IFS=$func_mkdir_p_IFS
87799ca880aSopenharmony_ci
87899ca880aSopenharmony_ci      # Bail out if we (or some other process) failed to create a directory.
87999ca880aSopenharmony_ci      test -d "$_G_directory_path" || \
88099ca880aSopenharmony_ci        func_fatal_error "Failed to create '$1'"
88199ca880aSopenharmony_ci    fi
88299ca880aSopenharmony_ci}
88399ca880aSopenharmony_ci
88499ca880aSopenharmony_ci
88599ca880aSopenharmony_ci# func_mktempdir [BASENAME]
88699ca880aSopenharmony_ci# -------------------------
88799ca880aSopenharmony_ci# Make a temporary directory that won't clash with other running
88899ca880aSopenharmony_ci# libtool processes, and avoids race conditions if possible.  If
88999ca880aSopenharmony_ci# given, BASENAME is the basename for that directory.
89099ca880aSopenharmony_cifunc_mktempdir ()
89199ca880aSopenharmony_ci{
89299ca880aSopenharmony_ci    $debug_cmd
89399ca880aSopenharmony_ci
89499ca880aSopenharmony_ci    _G_template=${TMPDIR-/tmp}/${1-$progname}
89599ca880aSopenharmony_ci
89699ca880aSopenharmony_ci    if test : = "$opt_dry_run"; then
89799ca880aSopenharmony_ci      # Return a directory name, but don't create it in dry-run mode
89899ca880aSopenharmony_ci      _G_tmpdir=$_G_template-$$
89999ca880aSopenharmony_ci    else
90099ca880aSopenharmony_ci
90199ca880aSopenharmony_ci      # If mktemp works, use that first and foremost
90299ca880aSopenharmony_ci      _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null`
90399ca880aSopenharmony_ci
90499ca880aSopenharmony_ci      if test ! -d "$_G_tmpdir"; then
90599ca880aSopenharmony_ci        # Failing that, at least try and use $RANDOM to avoid a race
90699ca880aSopenharmony_ci        _G_tmpdir=$_G_template-${RANDOM-0}$$
90799ca880aSopenharmony_ci
90899ca880aSopenharmony_ci        func_mktempdir_umask=`umask`
90999ca880aSopenharmony_ci        umask 0077
91099ca880aSopenharmony_ci        $MKDIR "$_G_tmpdir"
91199ca880aSopenharmony_ci        umask $func_mktempdir_umask
91299ca880aSopenharmony_ci      fi
91399ca880aSopenharmony_ci
91499ca880aSopenharmony_ci      # If we're not in dry-run mode, bomb out on failure
91599ca880aSopenharmony_ci      test -d "$_G_tmpdir" || \
91699ca880aSopenharmony_ci        func_fatal_error "cannot create temporary directory '$_G_tmpdir'"
91799ca880aSopenharmony_ci    fi
91899ca880aSopenharmony_ci
91999ca880aSopenharmony_ci    $ECHO "$_G_tmpdir"
92099ca880aSopenharmony_ci}
92199ca880aSopenharmony_ci
92299ca880aSopenharmony_ci
92399ca880aSopenharmony_ci# func_normal_abspath PATH
92499ca880aSopenharmony_ci# ------------------------
92599ca880aSopenharmony_ci# Remove doubled-up and trailing slashes, "." path components,
92699ca880aSopenharmony_ci# and cancel out any ".." path components in PATH after making
92799ca880aSopenharmony_ci# it an absolute path.
92899ca880aSopenharmony_cifunc_normal_abspath ()
92999ca880aSopenharmony_ci{
93099ca880aSopenharmony_ci    $debug_cmd
93199ca880aSopenharmony_ci
93299ca880aSopenharmony_ci    # These SED scripts presuppose an absolute path with a trailing slash.
93399ca880aSopenharmony_ci    _G_pathcar='s|^/\([^/]*\).*$|\1|'
93499ca880aSopenharmony_ci    _G_pathcdr='s|^/[^/]*||'
93599ca880aSopenharmony_ci    _G_removedotparts=':dotsl
93699ca880aSopenharmony_ci		s|/\./|/|g
93799ca880aSopenharmony_ci		t dotsl
93899ca880aSopenharmony_ci		s|/\.$|/|'
93999ca880aSopenharmony_ci    _G_collapseslashes='s|/\{1,\}|/|g'
94099ca880aSopenharmony_ci    _G_finalslash='s|/*$|/|'
94199ca880aSopenharmony_ci
94299ca880aSopenharmony_ci    # Start from root dir and reassemble the path.
94399ca880aSopenharmony_ci    func_normal_abspath_result=
94499ca880aSopenharmony_ci    func_normal_abspath_tpath=$1
94599ca880aSopenharmony_ci    func_normal_abspath_altnamespace=
94699ca880aSopenharmony_ci    case $func_normal_abspath_tpath in
94799ca880aSopenharmony_ci      "")
94899ca880aSopenharmony_ci        # Empty path, that just means $cwd.
94999ca880aSopenharmony_ci        func_stripname '' '/' "`pwd`"
95099ca880aSopenharmony_ci        func_normal_abspath_result=$func_stripname_result
95199ca880aSopenharmony_ci        return
95299ca880aSopenharmony_ci        ;;
95399ca880aSopenharmony_ci      # The next three entries are used to spot a run of precisely
95499ca880aSopenharmony_ci      # two leading slashes without using negated character classes;
95599ca880aSopenharmony_ci      # we take advantage of case's first-match behaviour.
95699ca880aSopenharmony_ci      ///*)
95799ca880aSopenharmony_ci        # Unusual form of absolute path, do nothing.
95899ca880aSopenharmony_ci        ;;
95999ca880aSopenharmony_ci      //*)
96099ca880aSopenharmony_ci        # Not necessarily an ordinary path; POSIX reserves leading '//'
96199ca880aSopenharmony_ci        # and for example Cygwin uses it to access remote file shares
96299ca880aSopenharmony_ci        # over CIFS/SMB, so we conserve a leading double slash if found.
96399ca880aSopenharmony_ci        func_normal_abspath_altnamespace=/
96499ca880aSopenharmony_ci        ;;
96599ca880aSopenharmony_ci      /*)
96699ca880aSopenharmony_ci        # Absolute path, do nothing.
96799ca880aSopenharmony_ci        ;;
96899ca880aSopenharmony_ci      *)
96999ca880aSopenharmony_ci        # Relative path, prepend $cwd.
97099ca880aSopenharmony_ci        func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
97199ca880aSopenharmony_ci        ;;
97299ca880aSopenharmony_ci    esac
97399ca880aSopenharmony_ci
97499ca880aSopenharmony_ci    # Cancel out all the simple stuff to save iterations.  We also want
97599ca880aSopenharmony_ci    # the path to end with a slash for ease of parsing, so make sure
97699ca880aSopenharmony_ci    # there is one (and only one) here.
97799ca880aSopenharmony_ci    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
97899ca880aSopenharmony_ci          -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"`
97999ca880aSopenharmony_ci    while :; do
98099ca880aSopenharmony_ci      # Processed it all yet?
98199ca880aSopenharmony_ci      if test / = "$func_normal_abspath_tpath"; then
98299ca880aSopenharmony_ci        # If we ascended to the root using ".." the result may be empty now.
98399ca880aSopenharmony_ci        if test -z "$func_normal_abspath_result"; then
98499ca880aSopenharmony_ci          func_normal_abspath_result=/
98599ca880aSopenharmony_ci        fi
98699ca880aSopenharmony_ci        break
98799ca880aSopenharmony_ci      fi
98899ca880aSopenharmony_ci      func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
98999ca880aSopenharmony_ci          -e "$_G_pathcar"`
99099ca880aSopenharmony_ci      func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
99199ca880aSopenharmony_ci          -e "$_G_pathcdr"`
99299ca880aSopenharmony_ci      # Figure out what to do with it
99399ca880aSopenharmony_ci      case $func_normal_abspath_tcomponent in
99499ca880aSopenharmony_ci        "")
99599ca880aSopenharmony_ci          # Trailing empty path component, ignore it.
99699ca880aSopenharmony_ci          ;;
99799ca880aSopenharmony_ci        ..)
99899ca880aSopenharmony_ci          # Parent dir; strip last assembled component from result.
99999ca880aSopenharmony_ci          func_dirname "$func_normal_abspath_result"
100099ca880aSopenharmony_ci          func_normal_abspath_result=$func_dirname_result
100199ca880aSopenharmony_ci          ;;
100299ca880aSopenharmony_ci        *)
100399ca880aSopenharmony_ci          # Actual path component, append it.
100499ca880aSopenharmony_ci          func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent"
100599ca880aSopenharmony_ci          ;;
100699ca880aSopenharmony_ci      esac
100799ca880aSopenharmony_ci    done
100899ca880aSopenharmony_ci    # Restore leading double-slash if one was found on entry.
100999ca880aSopenharmony_ci    func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
101099ca880aSopenharmony_ci}
101199ca880aSopenharmony_ci
101299ca880aSopenharmony_ci
101399ca880aSopenharmony_ci# func_notquiet ARG...
101499ca880aSopenharmony_ci# --------------------
101599ca880aSopenharmony_ci# Echo program name prefixed message only when not in quiet mode.
101699ca880aSopenharmony_cifunc_notquiet ()
101799ca880aSopenharmony_ci{
101899ca880aSopenharmony_ci    $debug_cmd
101999ca880aSopenharmony_ci
102099ca880aSopenharmony_ci    $opt_quiet || func_echo ${1+"$@"}
102199ca880aSopenharmony_ci
102299ca880aSopenharmony_ci    # A bug in bash halts the script if the last line of a function
102399ca880aSopenharmony_ci    # fails when set -e is in force, so we need another command to
102499ca880aSopenharmony_ci    # work around that:
102599ca880aSopenharmony_ci    :
102699ca880aSopenharmony_ci}
102799ca880aSopenharmony_ci
102899ca880aSopenharmony_ci
102999ca880aSopenharmony_ci# func_relative_path SRCDIR DSTDIR
103099ca880aSopenharmony_ci# --------------------------------
103199ca880aSopenharmony_ci# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR.
103299ca880aSopenharmony_cifunc_relative_path ()
103399ca880aSopenharmony_ci{
103499ca880aSopenharmony_ci    $debug_cmd
103599ca880aSopenharmony_ci
103699ca880aSopenharmony_ci    func_relative_path_result=
103799ca880aSopenharmony_ci    func_normal_abspath "$1"
103899ca880aSopenharmony_ci    func_relative_path_tlibdir=$func_normal_abspath_result
103999ca880aSopenharmony_ci    func_normal_abspath "$2"
104099ca880aSopenharmony_ci    func_relative_path_tbindir=$func_normal_abspath_result
104199ca880aSopenharmony_ci
104299ca880aSopenharmony_ci    # Ascend the tree starting from libdir
104399ca880aSopenharmony_ci    while :; do
104499ca880aSopenharmony_ci      # check if we have found a prefix of bindir
104599ca880aSopenharmony_ci      case $func_relative_path_tbindir in
104699ca880aSopenharmony_ci        $func_relative_path_tlibdir)
104799ca880aSopenharmony_ci          # found an exact match
104899ca880aSopenharmony_ci          func_relative_path_tcancelled=
104999ca880aSopenharmony_ci          break
105099ca880aSopenharmony_ci          ;;
105199ca880aSopenharmony_ci        $func_relative_path_tlibdir*)
105299ca880aSopenharmony_ci          # found a matching prefix
105399ca880aSopenharmony_ci          func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
105499ca880aSopenharmony_ci          func_relative_path_tcancelled=$func_stripname_result
105599ca880aSopenharmony_ci          if test -z "$func_relative_path_result"; then
105699ca880aSopenharmony_ci            func_relative_path_result=.
105799ca880aSopenharmony_ci          fi
105899ca880aSopenharmony_ci          break
105999ca880aSopenharmony_ci          ;;
106099ca880aSopenharmony_ci        *)
106199ca880aSopenharmony_ci          func_dirname $func_relative_path_tlibdir
106299ca880aSopenharmony_ci          func_relative_path_tlibdir=$func_dirname_result
106399ca880aSopenharmony_ci          if test -z "$func_relative_path_tlibdir"; then
106499ca880aSopenharmony_ci            # Have to descend all the way to the root!
106599ca880aSopenharmony_ci            func_relative_path_result=../$func_relative_path_result
106699ca880aSopenharmony_ci            func_relative_path_tcancelled=$func_relative_path_tbindir
106799ca880aSopenharmony_ci            break
106899ca880aSopenharmony_ci          fi
106999ca880aSopenharmony_ci          func_relative_path_result=../$func_relative_path_result
107099ca880aSopenharmony_ci          ;;
107199ca880aSopenharmony_ci      esac
107299ca880aSopenharmony_ci    done
107399ca880aSopenharmony_ci
107499ca880aSopenharmony_ci    # Now calculate path; take care to avoid doubling-up slashes.
107599ca880aSopenharmony_ci    func_stripname '' '/' "$func_relative_path_result"
107699ca880aSopenharmony_ci    func_relative_path_result=$func_stripname_result
107799ca880aSopenharmony_ci    func_stripname '/' '/' "$func_relative_path_tcancelled"
107899ca880aSopenharmony_ci    if test -n "$func_stripname_result"; then
107999ca880aSopenharmony_ci      func_append func_relative_path_result "/$func_stripname_result"
108099ca880aSopenharmony_ci    fi
108199ca880aSopenharmony_ci
108299ca880aSopenharmony_ci    # Normalisation. If bindir is libdir, return '.' else relative path.
108399ca880aSopenharmony_ci    if test -n "$func_relative_path_result"; then
108499ca880aSopenharmony_ci      func_stripname './' '' "$func_relative_path_result"
108599ca880aSopenharmony_ci      func_relative_path_result=$func_stripname_result
108699ca880aSopenharmony_ci    fi
108799ca880aSopenharmony_ci
108899ca880aSopenharmony_ci    test -n "$func_relative_path_result" || func_relative_path_result=.
108999ca880aSopenharmony_ci
109099ca880aSopenharmony_ci    :
109199ca880aSopenharmony_ci}
109299ca880aSopenharmony_ci
109399ca880aSopenharmony_ci
109499ca880aSopenharmony_ci# func_quote ARG
109599ca880aSopenharmony_ci# --------------
109699ca880aSopenharmony_ci# Aesthetically quote one ARG, store the result into $func_quote_result.  Note
109799ca880aSopenharmony_ci# that we keep attention to performance here (so far O(N) complexity as long as
109899ca880aSopenharmony_ci# func_append is O(1)).
109999ca880aSopenharmony_cifunc_quote ()
110099ca880aSopenharmony_ci{
110199ca880aSopenharmony_ci    $debug_cmd
110299ca880aSopenharmony_ci
110399ca880aSopenharmony_ci    func_quote_result=$1
110499ca880aSopenharmony_ci
110599ca880aSopenharmony_ci    case $func_quote_result in
110699ca880aSopenharmony_ci      *[\\\`\"\$]*)
110799ca880aSopenharmony_ci        case $func_quote_result in
110899ca880aSopenharmony_ci          *[\[\*\?]*)
110999ca880aSopenharmony_ci            func_quote_result=`$ECHO "$func_quote_result" | $SED "$sed_quote_subst"`
111099ca880aSopenharmony_ci            return 0
111199ca880aSopenharmony_ci            ;;
111299ca880aSopenharmony_ci        esac
111399ca880aSopenharmony_ci
111499ca880aSopenharmony_ci        func_quote_old_IFS=$IFS
111599ca880aSopenharmony_ci        for _G_char in '\' '`' '"' '$'
111699ca880aSopenharmony_ci        do
111799ca880aSopenharmony_ci          # STATE($1) PREV($2) SEPARATOR($3)
111899ca880aSopenharmony_ci          set start "" ""
111999ca880aSopenharmony_ci          func_quote_result=dummy"$_G_char$func_quote_result$_G_char"dummy
112099ca880aSopenharmony_ci          IFS=$_G_char
112199ca880aSopenharmony_ci          for _G_part in $func_quote_result
112299ca880aSopenharmony_ci          do
112399ca880aSopenharmony_ci            case $1 in
112499ca880aSopenharmony_ci            quote)
112599ca880aSopenharmony_ci              func_append func_quote_result "$3$2"
112699ca880aSopenharmony_ci              set quote "$_G_part" "\\$_G_char"
112799ca880aSopenharmony_ci              ;;
112899ca880aSopenharmony_ci            start)
112999ca880aSopenharmony_ci              set first "" ""
113099ca880aSopenharmony_ci              func_quote_result=
113199ca880aSopenharmony_ci              ;;
113299ca880aSopenharmony_ci            first)
113399ca880aSopenharmony_ci              set quote "$_G_part" ""
113499ca880aSopenharmony_ci              ;;
113599ca880aSopenharmony_ci            esac
113699ca880aSopenharmony_ci          done
113799ca880aSopenharmony_ci          IFS=$func_quote_old_IFS
113899ca880aSopenharmony_ci        done
113999ca880aSopenharmony_ci        ;;
114099ca880aSopenharmony_ci      *) ;;
114199ca880aSopenharmony_ci    esac
114299ca880aSopenharmony_ci}
114399ca880aSopenharmony_ci
114499ca880aSopenharmony_ci
114599ca880aSopenharmony_ci# func_quote_for_eval ARG...
114699ca880aSopenharmony_ci# --------------------------
114799ca880aSopenharmony_ci# Aesthetically quote ARGs to be evaled later.
114899ca880aSopenharmony_ci# This function returns two values:
114999ca880aSopenharmony_ci#   i) func_quote_for_eval_result
115099ca880aSopenharmony_ci#      double-quoted, suitable for a subsequent eval
115199ca880aSopenharmony_ci#  ii) func_quote_for_eval_unquoted_result
115299ca880aSopenharmony_ci#      has all characters that are still active within double
115399ca880aSopenharmony_ci#      quotes backslashified.
115499ca880aSopenharmony_cifunc_quote_for_eval ()
115599ca880aSopenharmony_ci{
115699ca880aSopenharmony_ci    $debug_cmd
115799ca880aSopenharmony_ci
115899ca880aSopenharmony_ci    func_quote_for_eval_unquoted_result=
115999ca880aSopenharmony_ci    func_quote_for_eval_result=
116099ca880aSopenharmony_ci    while test 0 -lt $#; do
116199ca880aSopenharmony_ci      func_quote "$1"
116299ca880aSopenharmony_ci      _G_unquoted_arg=$func_quote_result
116399ca880aSopenharmony_ci      if test -n "$func_quote_for_eval_unquoted_result"; then
116499ca880aSopenharmony_ci	func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg"
116599ca880aSopenharmony_ci      else
116699ca880aSopenharmony_ci        func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg"
116799ca880aSopenharmony_ci      fi
116899ca880aSopenharmony_ci
116999ca880aSopenharmony_ci      case $_G_unquoted_arg in
117099ca880aSopenharmony_ci        # Double-quote args containing shell metacharacters to delay
117199ca880aSopenharmony_ci        # word splitting, command substitution and variable expansion
117299ca880aSopenharmony_ci        # for a subsequent eval.
117399ca880aSopenharmony_ci        # Many Bourne shells cannot handle close brackets correctly
117499ca880aSopenharmony_ci        # in scan sets, so we specify it separately.
117599ca880aSopenharmony_ci        *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
117699ca880aSopenharmony_ci          _G_quoted_arg=\"$_G_unquoted_arg\"
117799ca880aSopenharmony_ci          ;;
117899ca880aSopenharmony_ci        *)
117999ca880aSopenharmony_ci          _G_quoted_arg=$_G_unquoted_arg
118099ca880aSopenharmony_ci	  ;;
118199ca880aSopenharmony_ci      esac
118299ca880aSopenharmony_ci
118399ca880aSopenharmony_ci      if test -n "$func_quote_for_eval_result"; then
118499ca880aSopenharmony_ci	func_append func_quote_for_eval_result " $_G_quoted_arg"
118599ca880aSopenharmony_ci      else
118699ca880aSopenharmony_ci        func_append func_quote_for_eval_result "$_G_quoted_arg"
118799ca880aSopenharmony_ci      fi
118899ca880aSopenharmony_ci      shift
118999ca880aSopenharmony_ci    done
119099ca880aSopenharmony_ci}
119199ca880aSopenharmony_ci
119299ca880aSopenharmony_ci
119399ca880aSopenharmony_ci# func_quote_for_expand ARG
119499ca880aSopenharmony_ci# -------------------------
119599ca880aSopenharmony_ci# Aesthetically quote ARG to be evaled later; same as above,
119699ca880aSopenharmony_ci# but do not quote variable references.
119799ca880aSopenharmony_cifunc_quote_for_expand ()
119899ca880aSopenharmony_ci{
119999ca880aSopenharmony_ci    $debug_cmd
120099ca880aSopenharmony_ci
120199ca880aSopenharmony_ci    case $1 in
120299ca880aSopenharmony_ci      *[\\\`\"]*)
120399ca880aSopenharmony_ci	_G_arg=`$ECHO "$1" | $SED \
120499ca880aSopenharmony_ci	    -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;;
120599ca880aSopenharmony_ci      *)
120699ca880aSopenharmony_ci        _G_arg=$1 ;;
120799ca880aSopenharmony_ci    esac
120899ca880aSopenharmony_ci
120999ca880aSopenharmony_ci    case $_G_arg in
121099ca880aSopenharmony_ci      # Double-quote args containing shell metacharacters to delay
121199ca880aSopenharmony_ci      # word splitting and command substitution for a subsequent eval.
121299ca880aSopenharmony_ci      # Many Bourne shells cannot handle close brackets correctly
121399ca880aSopenharmony_ci      # in scan sets, so we specify it separately.
121499ca880aSopenharmony_ci      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
121599ca880aSopenharmony_ci        _G_arg=\"$_G_arg\"
121699ca880aSopenharmony_ci        ;;
121799ca880aSopenharmony_ci    esac
121899ca880aSopenharmony_ci
121999ca880aSopenharmony_ci    func_quote_for_expand_result=$_G_arg
122099ca880aSopenharmony_ci}
122199ca880aSopenharmony_ci
122299ca880aSopenharmony_ci
122399ca880aSopenharmony_ci# func_stripname PREFIX SUFFIX NAME
122499ca880aSopenharmony_ci# ---------------------------------
122599ca880aSopenharmony_ci# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result.
122699ca880aSopenharmony_ci# PREFIX and SUFFIX must not contain globbing or regex special
122799ca880aSopenharmony_ci# characters, hashes, percent signs, but SUFFIX may contain a leading
122899ca880aSopenharmony_ci# dot (in which case that matches only a dot).
122999ca880aSopenharmony_ciif test yes = "$_G_HAVE_XSI_OPS"; then
123099ca880aSopenharmony_ci  eval 'func_stripname ()
123199ca880aSopenharmony_ci  {
123299ca880aSopenharmony_ci    $debug_cmd
123399ca880aSopenharmony_ci
123499ca880aSopenharmony_ci    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
123599ca880aSopenharmony_ci    # positional parameters, so assign one to ordinary variable first.
123699ca880aSopenharmony_ci    func_stripname_result=$3
123799ca880aSopenharmony_ci    func_stripname_result=${func_stripname_result#"$1"}
123899ca880aSopenharmony_ci    func_stripname_result=${func_stripname_result%"$2"}
123999ca880aSopenharmony_ci  }'
124099ca880aSopenharmony_cielse
124199ca880aSopenharmony_ci  func_stripname ()
124299ca880aSopenharmony_ci  {
124399ca880aSopenharmony_ci    $debug_cmd
124499ca880aSopenharmony_ci
124599ca880aSopenharmony_ci    case $2 in
124699ca880aSopenharmony_ci      .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;;
124799ca880aSopenharmony_ci      *)  func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;;
124899ca880aSopenharmony_ci    esac
124999ca880aSopenharmony_ci  }
125099ca880aSopenharmony_cifi
125199ca880aSopenharmony_ci
125299ca880aSopenharmony_ci
125399ca880aSopenharmony_ci# func_show_eval CMD [FAIL_EXP]
125499ca880aSopenharmony_ci# -----------------------------
125599ca880aSopenharmony_ci# Unless opt_quiet is true, then output CMD.  Then, if opt_dryrun is
125699ca880aSopenharmony_ci# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
125799ca880aSopenharmony_ci# is given, then evaluate it.
125899ca880aSopenharmony_cifunc_show_eval ()
125999ca880aSopenharmony_ci{
126099ca880aSopenharmony_ci    $debug_cmd
126199ca880aSopenharmony_ci
126299ca880aSopenharmony_ci    _G_cmd=$1
126399ca880aSopenharmony_ci    _G_fail_exp=${2-':'}
126499ca880aSopenharmony_ci
126599ca880aSopenharmony_ci    func_quote_for_expand "$_G_cmd"
126699ca880aSopenharmony_ci    eval "func_notquiet $func_quote_for_expand_result"
126799ca880aSopenharmony_ci
126899ca880aSopenharmony_ci    $opt_dry_run || {
126999ca880aSopenharmony_ci      eval "$_G_cmd"
127099ca880aSopenharmony_ci      _G_status=$?
127199ca880aSopenharmony_ci      if test 0 -ne "$_G_status"; then
127299ca880aSopenharmony_ci	eval "(exit $_G_status); $_G_fail_exp"
127399ca880aSopenharmony_ci      fi
127499ca880aSopenharmony_ci    }
127599ca880aSopenharmony_ci}
127699ca880aSopenharmony_ci
127799ca880aSopenharmony_ci
127899ca880aSopenharmony_ci# func_show_eval_locale CMD [FAIL_EXP]
127999ca880aSopenharmony_ci# ------------------------------------
128099ca880aSopenharmony_ci# Unless opt_quiet is true, then output CMD.  Then, if opt_dryrun is
128199ca880aSopenharmony_ci# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
128299ca880aSopenharmony_ci# is given, then evaluate it.  Use the saved locale for evaluation.
128399ca880aSopenharmony_cifunc_show_eval_locale ()
128499ca880aSopenharmony_ci{
128599ca880aSopenharmony_ci    $debug_cmd
128699ca880aSopenharmony_ci
128799ca880aSopenharmony_ci    _G_cmd=$1
128899ca880aSopenharmony_ci    _G_fail_exp=${2-':'}
128999ca880aSopenharmony_ci
129099ca880aSopenharmony_ci    $opt_quiet || {
129199ca880aSopenharmony_ci      func_quote_for_expand "$_G_cmd"
129299ca880aSopenharmony_ci      eval "func_echo $func_quote_for_expand_result"
129399ca880aSopenharmony_ci    }
129499ca880aSopenharmony_ci
129599ca880aSopenharmony_ci    $opt_dry_run || {
129699ca880aSopenharmony_ci      eval "$_G_user_locale
129799ca880aSopenharmony_ci	    $_G_cmd"
129899ca880aSopenharmony_ci      _G_status=$?
129999ca880aSopenharmony_ci      eval "$_G_safe_locale"
130099ca880aSopenharmony_ci      if test 0 -ne "$_G_status"; then
130199ca880aSopenharmony_ci	eval "(exit $_G_status); $_G_fail_exp"
130299ca880aSopenharmony_ci      fi
130399ca880aSopenharmony_ci    }
130499ca880aSopenharmony_ci}
130599ca880aSopenharmony_ci
130699ca880aSopenharmony_ci
130799ca880aSopenharmony_ci# func_tr_sh
130899ca880aSopenharmony_ci# ----------
130999ca880aSopenharmony_ci# Turn $1 into a string suitable for a shell variable name.
131099ca880aSopenharmony_ci# Result is stored in $func_tr_sh_result.  All characters
131199ca880aSopenharmony_ci# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
131299ca880aSopenharmony_ci# if $1 begins with a digit, a '_' is prepended as well.
131399ca880aSopenharmony_cifunc_tr_sh ()
131499ca880aSopenharmony_ci{
131599ca880aSopenharmony_ci    $debug_cmd
131699ca880aSopenharmony_ci
131799ca880aSopenharmony_ci    case $1 in
131899ca880aSopenharmony_ci    [0-9]* | *[!a-zA-Z0-9_]*)
131999ca880aSopenharmony_ci      func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'`
132099ca880aSopenharmony_ci      ;;
132199ca880aSopenharmony_ci    * )
132299ca880aSopenharmony_ci      func_tr_sh_result=$1
132399ca880aSopenharmony_ci      ;;
132499ca880aSopenharmony_ci    esac
132599ca880aSopenharmony_ci}
132699ca880aSopenharmony_ci
132799ca880aSopenharmony_ci
132899ca880aSopenharmony_ci# func_verbose ARG...
132999ca880aSopenharmony_ci# -------------------
133099ca880aSopenharmony_ci# Echo program name prefixed message in verbose mode only.
133199ca880aSopenharmony_cifunc_verbose ()
133299ca880aSopenharmony_ci{
133399ca880aSopenharmony_ci    $debug_cmd
133499ca880aSopenharmony_ci
133599ca880aSopenharmony_ci    $opt_verbose && func_echo "$*"
133699ca880aSopenharmony_ci
133799ca880aSopenharmony_ci    :
133899ca880aSopenharmony_ci}
133999ca880aSopenharmony_ci
134099ca880aSopenharmony_ci
134199ca880aSopenharmony_ci# func_warn_and_continue ARG...
134299ca880aSopenharmony_ci# -----------------------------
134399ca880aSopenharmony_ci# Echo program name prefixed warning message to standard error.
134499ca880aSopenharmony_cifunc_warn_and_continue ()
134599ca880aSopenharmony_ci{
134699ca880aSopenharmony_ci    $debug_cmd
134799ca880aSopenharmony_ci
134899ca880aSopenharmony_ci    $require_term_colors
134999ca880aSopenharmony_ci
135099ca880aSopenharmony_ci    func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2
135199ca880aSopenharmony_ci}
135299ca880aSopenharmony_ci
135399ca880aSopenharmony_ci
135499ca880aSopenharmony_ci# func_warning CATEGORY ARG...
135599ca880aSopenharmony_ci# ----------------------------
135699ca880aSopenharmony_ci# Echo program name prefixed warning message to standard error. Warning
135799ca880aSopenharmony_ci# messages can be filtered according to CATEGORY, where this function
135899ca880aSopenharmony_ci# elides messages where CATEGORY is not listed in the global variable
135999ca880aSopenharmony_ci# 'opt_warning_types'.
136099ca880aSopenharmony_cifunc_warning ()
136199ca880aSopenharmony_ci{
136299ca880aSopenharmony_ci    $debug_cmd
136399ca880aSopenharmony_ci
136499ca880aSopenharmony_ci    # CATEGORY must be in the warning_categories list!
136599ca880aSopenharmony_ci    case " $warning_categories " in
136699ca880aSopenharmony_ci      *" $1 "*) ;;
136799ca880aSopenharmony_ci      *) func_internal_error "invalid warning category '$1'" ;;
136899ca880aSopenharmony_ci    esac
136999ca880aSopenharmony_ci
137099ca880aSopenharmony_ci    _G_category=$1
137199ca880aSopenharmony_ci    shift
137299ca880aSopenharmony_ci
137399ca880aSopenharmony_ci    case " $opt_warning_types " in
137499ca880aSopenharmony_ci      *" $_G_category "*) $warning_func ${1+"$@"} ;;
137599ca880aSopenharmony_ci    esac
137699ca880aSopenharmony_ci}
137799ca880aSopenharmony_ci
137899ca880aSopenharmony_ci
137999ca880aSopenharmony_ci# func_sort_ver VER1 VER2
138099ca880aSopenharmony_ci# -----------------------
138199ca880aSopenharmony_ci# 'sort -V' is not generally available.
138299ca880aSopenharmony_ci# Note this deviates from the version comparison in automake
138399ca880aSopenharmony_ci# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a
138499ca880aSopenharmony_ci# but this should suffice as we won't be specifying old
138599ca880aSopenharmony_ci# version formats or redundant trailing .0 in bootstrap.conf.
138699ca880aSopenharmony_ci# If we did want full compatibility then we should probably
138799ca880aSopenharmony_ci# use m4_version_compare from autoconf.
138899ca880aSopenharmony_cifunc_sort_ver ()
138999ca880aSopenharmony_ci{
139099ca880aSopenharmony_ci    $debug_cmd
139199ca880aSopenharmony_ci
139299ca880aSopenharmony_ci    printf '%s\n%s\n' "$1" "$2" \
139399ca880aSopenharmony_ci      | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n
139499ca880aSopenharmony_ci}
139599ca880aSopenharmony_ci
139699ca880aSopenharmony_ci# func_lt_ver PREV CURR
139799ca880aSopenharmony_ci# ---------------------
139899ca880aSopenharmony_ci# Return true if PREV and CURR are in the correct order according to
139999ca880aSopenharmony_ci# func_sort_ver, otherwise false.  Use it like this:
140099ca880aSopenharmony_ci#
140199ca880aSopenharmony_ci#  func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..."
140299ca880aSopenharmony_cifunc_lt_ver ()
140399ca880aSopenharmony_ci{
140499ca880aSopenharmony_ci    $debug_cmd
140599ca880aSopenharmony_ci
140699ca880aSopenharmony_ci    test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q`
140799ca880aSopenharmony_ci}
140899ca880aSopenharmony_ci
140999ca880aSopenharmony_ci
141099ca880aSopenharmony_ci# Local variables:
141199ca880aSopenharmony_ci# mode: shell-script
141299ca880aSopenharmony_ci# sh-indentation: 2
141399ca880aSopenharmony_ci# eval: (add-hook 'before-save-hook 'time-stamp)
141499ca880aSopenharmony_ci# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
141599ca880aSopenharmony_ci# time-stamp-time-zone: "UTC"
141699ca880aSopenharmony_ci# End:
141799ca880aSopenharmony_ci#! /bin/sh
141899ca880aSopenharmony_ci
141999ca880aSopenharmony_ci# Set a version string for this script.
142099ca880aSopenharmony_ciscriptversion=2014-01-07.03; # UTC
142199ca880aSopenharmony_ci
142299ca880aSopenharmony_ci# A portable, pluggable option parser for Bourne shell.
142399ca880aSopenharmony_ci# Written by Gary V. Vaughan, 2010
142499ca880aSopenharmony_ci
142599ca880aSopenharmony_ci# Copyright (C) 2010-2015 Free Software Foundation, Inc.
142699ca880aSopenharmony_ci# This is free software; see the source for copying conditions.  There is NO
142799ca880aSopenharmony_ci# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
142899ca880aSopenharmony_ci
142999ca880aSopenharmony_ci# This program is free software: you can redistribute it and/or modify
143099ca880aSopenharmony_ci# it under the terms of the GNU General Public License as published by
143199ca880aSopenharmony_ci# the Free Software Foundation, either version 3 of the License, or
143299ca880aSopenharmony_ci# (at your option) any later version.
143399ca880aSopenharmony_ci
143499ca880aSopenharmony_ci# This program is distributed in the hope that it will be useful,
143599ca880aSopenharmony_ci# but WITHOUT ANY WARRANTY; without even the implied warranty of
143699ca880aSopenharmony_ci# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
143799ca880aSopenharmony_ci# GNU General Public License for more details.
143899ca880aSopenharmony_ci
143999ca880aSopenharmony_ci# You should have received a copy of the GNU General Public License
144099ca880aSopenharmony_ci# along with this program.  If not, see <http://www.gnu.org/licenses/>.
144199ca880aSopenharmony_ci
144299ca880aSopenharmony_ci# Please report bugs or propose patches to gary@gnu.org.
144399ca880aSopenharmony_ci
144499ca880aSopenharmony_ci
144599ca880aSopenharmony_ci## ------ ##
144699ca880aSopenharmony_ci## Usage. ##
144799ca880aSopenharmony_ci## ------ ##
144899ca880aSopenharmony_ci
144999ca880aSopenharmony_ci# This file is a library for parsing options in your shell scripts along
145099ca880aSopenharmony_ci# with assorted other useful supporting features that you can make use
145199ca880aSopenharmony_ci# of too.
145299ca880aSopenharmony_ci#
145399ca880aSopenharmony_ci# For the simplest scripts you might need only:
145499ca880aSopenharmony_ci#
145599ca880aSopenharmony_ci#   #!/bin/sh
145699ca880aSopenharmony_ci#   . relative/path/to/funclib.sh
145799ca880aSopenharmony_ci#   . relative/path/to/options-parser
145899ca880aSopenharmony_ci#   scriptversion=1.0
145999ca880aSopenharmony_ci#   func_options ${1+"$@"}
146099ca880aSopenharmony_ci#   eval set dummy "$func_options_result"; shift
146199ca880aSopenharmony_ci#   ...rest of your script...
146299ca880aSopenharmony_ci#
146399ca880aSopenharmony_ci# In order for the '--version' option to work, you will need to have a
146499ca880aSopenharmony_ci# suitably formatted comment like the one at the top of this file
146599ca880aSopenharmony_ci# starting with '# Written by ' and ending with '# warranty; '.
146699ca880aSopenharmony_ci#
146799ca880aSopenharmony_ci# For '-h' and '--help' to work, you will also need a one line
146899ca880aSopenharmony_ci# description of your script's purpose in a comment directly above the
146999ca880aSopenharmony_ci# '# Written by ' line, like the one at the top of this file.
147099ca880aSopenharmony_ci#
147199ca880aSopenharmony_ci# The default options also support '--debug', which will turn on shell
147299ca880aSopenharmony_ci# execution tracing (see the comment above debug_cmd below for another
147399ca880aSopenharmony_ci# use), and '--verbose' and the func_verbose function to allow your script
147499ca880aSopenharmony_ci# to display verbose messages only when your user has specified
147599ca880aSopenharmony_ci# '--verbose'.
147699ca880aSopenharmony_ci#
147799ca880aSopenharmony_ci# After sourcing this file, you can plug processing for additional
147899ca880aSopenharmony_ci# options by amending the variables from the 'Configuration' section
147999ca880aSopenharmony_ci# below, and following the instructions in the 'Option parsing'
148099ca880aSopenharmony_ci# section further down.
148199ca880aSopenharmony_ci
148299ca880aSopenharmony_ci## -------------- ##
148399ca880aSopenharmony_ci## Configuration. ##
148499ca880aSopenharmony_ci## -------------- ##
148599ca880aSopenharmony_ci
148699ca880aSopenharmony_ci# You should override these variables in your script after sourcing this
148799ca880aSopenharmony_ci# file so that they reflect the customisations you have added to the
148899ca880aSopenharmony_ci# option parser.
148999ca880aSopenharmony_ci
149099ca880aSopenharmony_ci# The usage line for option parsing errors and the start of '-h' and
149199ca880aSopenharmony_ci# '--help' output messages. You can embed shell variables for delayed
149299ca880aSopenharmony_ci# expansion at the time the message is displayed, but you will need to
149399ca880aSopenharmony_ci# quote other shell meta-characters carefully to prevent them being
149499ca880aSopenharmony_ci# expanded when the contents are evaled.
149599ca880aSopenharmony_ciusage='$progpath [OPTION]...'
149699ca880aSopenharmony_ci
149799ca880aSopenharmony_ci# Short help message in response to '-h' and '--help'.  Add to this or
149899ca880aSopenharmony_ci# override it after sourcing this library to reflect the full set of
149999ca880aSopenharmony_ci# options your script accepts.
150099ca880aSopenharmony_ciusage_message="\
150199ca880aSopenharmony_ci       --debug        enable verbose shell tracing
150299ca880aSopenharmony_ci   -W, --warnings=CATEGORY
150399ca880aSopenharmony_ci                      report the warnings falling in CATEGORY [all]
150499ca880aSopenharmony_ci   -v, --verbose      verbosely report processing
150599ca880aSopenharmony_ci       --version      print version information and exit
150699ca880aSopenharmony_ci   -h, --help         print short or long help message and exit
150799ca880aSopenharmony_ci"
150899ca880aSopenharmony_ci
150999ca880aSopenharmony_ci# Additional text appended to 'usage_message' in response to '--help'.
151099ca880aSopenharmony_cilong_help_message="
151199ca880aSopenharmony_ciWarning categories include:
151299ca880aSopenharmony_ci       'all'          show all warnings
151399ca880aSopenharmony_ci       'none'         turn off all the warnings
151499ca880aSopenharmony_ci       'error'        warnings are treated as fatal errors"
151599ca880aSopenharmony_ci
151699ca880aSopenharmony_ci# Help message printed before fatal option parsing errors.
151799ca880aSopenharmony_cifatal_help="Try '\$progname --help' for more information."
151899ca880aSopenharmony_ci
151999ca880aSopenharmony_ci
152099ca880aSopenharmony_ci
152199ca880aSopenharmony_ci## ------------------------- ##
152299ca880aSopenharmony_ci## Hook function management. ##
152399ca880aSopenharmony_ci## ------------------------- ##
152499ca880aSopenharmony_ci
152599ca880aSopenharmony_ci# This section contains functions for adding, removing, and running hooks
152699ca880aSopenharmony_ci# to the main code.  A hook is just a named list of of function, that can
152799ca880aSopenharmony_ci# be run in order later on.
152899ca880aSopenharmony_ci
152999ca880aSopenharmony_ci# func_hookable FUNC_NAME
153099ca880aSopenharmony_ci# -----------------------
153199ca880aSopenharmony_ci# Declare that FUNC_NAME will run hooks added with
153299ca880aSopenharmony_ci# 'func_add_hook FUNC_NAME ...'.
153399ca880aSopenharmony_cifunc_hookable ()
153499ca880aSopenharmony_ci{
153599ca880aSopenharmony_ci    $debug_cmd
153699ca880aSopenharmony_ci
153799ca880aSopenharmony_ci    func_append hookable_fns " $1"
153899ca880aSopenharmony_ci}
153999ca880aSopenharmony_ci
154099ca880aSopenharmony_ci
154199ca880aSopenharmony_ci# func_add_hook FUNC_NAME HOOK_FUNC
154299ca880aSopenharmony_ci# ---------------------------------
154399ca880aSopenharmony_ci# Request that FUNC_NAME call HOOK_FUNC before it returns.  FUNC_NAME must
154499ca880aSopenharmony_ci# first have been declared "hookable" by a call to 'func_hookable'.
154599ca880aSopenharmony_cifunc_add_hook ()
154699ca880aSopenharmony_ci{
154799ca880aSopenharmony_ci    $debug_cmd
154899ca880aSopenharmony_ci
154999ca880aSopenharmony_ci    case " $hookable_fns " in
155099ca880aSopenharmony_ci      *" $1 "*) ;;
155199ca880aSopenharmony_ci      *) func_fatal_error "'$1' does not accept hook functions." ;;
155299ca880aSopenharmony_ci    esac
155399ca880aSopenharmony_ci
155499ca880aSopenharmony_ci    eval func_append ${1}_hooks '" $2"'
155599ca880aSopenharmony_ci}
155699ca880aSopenharmony_ci
155799ca880aSopenharmony_ci
155899ca880aSopenharmony_ci# func_remove_hook FUNC_NAME HOOK_FUNC
155999ca880aSopenharmony_ci# ------------------------------------
156099ca880aSopenharmony_ci# Remove HOOK_FUNC from the list of functions called by FUNC_NAME.
156199ca880aSopenharmony_cifunc_remove_hook ()
156299ca880aSopenharmony_ci{
156399ca880aSopenharmony_ci    $debug_cmd
156499ca880aSopenharmony_ci
156599ca880aSopenharmony_ci    eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`'
156699ca880aSopenharmony_ci}
156799ca880aSopenharmony_ci
156899ca880aSopenharmony_ci
156999ca880aSopenharmony_ci# func_run_hooks FUNC_NAME [ARG]...
157099ca880aSopenharmony_ci# ---------------------------------
157199ca880aSopenharmony_ci# Run all hook functions registered to FUNC_NAME.
157299ca880aSopenharmony_ci# It is assumed that the list of hook functions contains nothing more
157399ca880aSopenharmony_ci# than a whitespace-delimited list of legal shell function names, and
157499ca880aSopenharmony_ci# no effort is wasted trying to catch shell meta-characters or preserve
157599ca880aSopenharmony_ci# whitespace.
157699ca880aSopenharmony_cifunc_run_hooks ()
157799ca880aSopenharmony_ci{
157899ca880aSopenharmony_ci    $debug_cmd
157999ca880aSopenharmony_ci
158099ca880aSopenharmony_ci    case " $hookable_fns " in
158199ca880aSopenharmony_ci      *" $1 "*) ;;
158299ca880aSopenharmony_ci      *) func_fatal_error "'$1' does not support hook funcions.n" ;;
158399ca880aSopenharmony_ci    esac
158499ca880aSopenharmony_ci
158599ca880aSopenharmony_ci    eval _G_hook_fns=\$$1_hooks; shift
158699ca880aSopenharmony_ci
158799ca880aSopenharmony_ci    for _G_hook in $_G_hook_fns; do
158899ca880aSopenharmony_ci      eval $_G_hook '"$@"'
158999ca880aSopenharmony_ci
159099ca880aSopenharmony_ci      # store returned options list back into positional
159199ca880aSopenharmony_ci      # parameters for next 'cmd' execution.
159299ca880aSopenharmony_ci      eval _G_hook_result=\$${_G_hook}_result
159399ca880aSopenharmony_ci      eval set dummy "$_G_hook_result"; shift
159499ca880aSopenharmony_ci    done
159599ca880aSopenharmony_ci
159699ca880aSopenharmony_ci    func_quote_for_eval ${1+"$@"}
159799ca880aSopenharmony_ci    func_run_hooks_result=$func_quote_for_eval_result
159899ca880aSopenharmony_ci}
159999ca880aSopenharmony_ci
160099ca880aSopenharmony_ci
160199ca880aSopenharmony_ci
160299ca880aSopenharmony_ci## --------------- ##
160399ca880aSopenharmony_ci## Option parsing. ##
160499ca880aSopenharmony_ci## --------------- ##
160599ca880aSopenharmony_ci
160699ca880aSopenharmony_ci# In order to add your own option parsing hooks, you must accept the
160799ca880aSopenharmony_ci# full positional parameter list in your hook function, remove any
160899ca880aSopenharmony_ci# options that you action, and then pass back the remaining unprocessed
160999ca880aSopenharmony_ci# options in '<hooked_function_name>_result', escaped suitably for
161099ca880aSopenharmony_ci# 'eval'.  Like this:
161199ca880aSopenharmony_ci#
161299ca880aSopenharmony_ci#    my_options_prep ()
161399ca880aSopenharmony_ci#    {
161499ca880aSopenharmony_ci#        $debug_cmd
161599ca880aSopenharmony_ci#
161699ca880aSopenharmony_ci#        # Extend the existing usage message.
161799ca880aSopenharmony_ci#        usage_message=$usage_message'
161899ca880aSopenharmony_ci#      -s, --silent       don'\''t print informational messages
161999ca880aSopenharmony_ci#    '
162099ca880aSopenharmony_ci#
162199ca880aSopenharmony_ci#        func_quote_for_eval ${1+"$@"}
162299ca880aSopenharmony_ci#        my_options_prep_result=$func_quote_for_eval_result
162399ca880aSopenharmony_ci#    }
162499ca880aSopenharmony_ci#    func_add_hook func_options_prep my_options_prep
162599ca880aSopenharmony_ci#
162699ca880aSopenharmony_ci#
162799ca880aSopenharmony_ci#    my_silent_option ()
162899ca880aSopenharmony_ci#    {
162999ca880aSopenharmony_ci#        $debug_cmd
163099ca880aSopenharmony_ci#
163199ca880aSopenharmony_ci#        # Note that for efficiency, we parse as many options as we can
163299ca880aSopenharmony_ci#        # recognise in a loop before passing the remainder back to the
163399ca880aSopenharmony_ci#        # caller on the first unrecognised argument we encounter.
163499ca880aSopenharmony_ci#        while test $# -gt 0; do
163599ca880aSopenharmony_ci#          opt=$1; shift
163699ca880aSopenharmony_ci#          case $opt in
163799ca880aSopenharmony_ci#            --silent|-s) opt_silent=: ;;
163899ca880aSopenharmony_ci#            # Separate non-argument short options:
163999ca880aSopenharmony_ci#            -s*)         func_split_short_opt "$_G_opt"
164099ca880aSopenharmony_ci#                         set dummy "$func_split_short_opt_name" \
164199ca880aSopenharmony_ci#                             "-$func_split_short_opt_arg" ${1+"$@"}
164299ca880aSopenharmony_ci#                         shift
164399ca880aSopenharmony_ci#                         ;;
164499ca880aSopenharmony_ci#            *)            set dummy "$_G_opt" "$*"; shift; break ;;
164599ca880aSopenharmony_ci#          esac
164699ca880aSopenharmony_ci#        done
164799ca880aSopenharmony_ci#
164899ca880aSopenharmony_ci#        func_quote_for_eval ${1+"$@"}
164999ca880aSopenharmony_ci#        my_silent_option_result=$func_quote_for_eval_result
165099ca880aSopenharmony_ci#    }
165199ca880aSopenharmony_ci#    func_add_hook func_parse_options my_silent_option
165299ca880aSopenharmony_ci#
165399ca880aSopenharmony_ci#
165499ca880aSopenharmony_ci#    my_option_validation ()
165599ca880aSopenharmony_ci#    {
165699ca880aSopenharmony_ci#        $debug_cmd
165799ca880aSopenharmony_ci#
165899ca880aSopenharmony_ci#        $opt_silent && $opt_verbose && func_fatal_help "\
165999ca880aSopenharmony_ci#    '--silent' and '--verbose' options are mutually exclusive."
166099ca880aSopenharmony_ci#
166199ca880aSopenharmony_ci#        func_quote_for_eval ${1+"$@"}
166299ca880aSopenharmony_ci#        my_option_validation_result=$func_quote_for_eval_result
166399ca880aSopenharmony_ci#    }
166499ca880aSopenharmony_ci#    func_add_hook func_validate_options my_option_validation
166599ca880aSopenharmony_ci#
166699ca880aSopenharmony_ci# You'll alse need to manually amend $usage_message to reflect the extra
166799ca880aSopenharmony_ci# options you parse.  It's preferable to append if you can, so that
166899ca880aSopenharmony_ci# multiple option parsing hooks can be added safely.
166999ca880aSopenharmony_ci
167099ca880aSopenharmony_ci
167199ca880aSopenharmony_ci# func_options [ARG]...
167299ca880aSopenharmony_ci# ---------------------
167399ca880aSopenharmony_ci# All the functions called inside func_options are hookable. See the
167499ca880aSopenharmony_ci# individual implementations for details.
167599ca880aSopenharmony_cifunc_hookable func_options
167699ca880aSopenharmony_cifunc_options ()
167799ca880aSopenharmony_ci{
167899ca880aSopenharmony_ci    $debug_cmd
167999ca880aSopenharmony_ci
168099ca880aSopenharmony_ci    func_options_prep ${1+"$@"}
168199ca880aSopenharmony_ci    eval func_parse_options \
168299ca880aSopenharmony_ci        ${func_options_prep_result+"$func_options_prep_result"}
168399ca880aSopenharmony_ci    eval func_validate_options \
168499ca880aSopenharmony_ci        ${func_parse_options_result+"$func_parse_options_result"}
168599ca880aSopenharmony_ci
168699ca880aSopenharmony_ci    eval func_run_hooks func_options \
168799ca880aSopenharmony_ci        ${func_validate_options_result+"$func_validate_options_result"}
168899ca880aSopenharmony_ci
168999ca880aSopenharmony_ci    # save modified positional parameters for caller
169099ca880aSopenharmony_ci    func_options_result=$func_run_hooks_result
169199ca880aSopenharmony_ci}
169299ca880aSopenharmony_ci
169399ca880aSopenharmony_ci
169499ca880aSopenharmony_ci# func_options_prep [ARG]...
169599ca880aSopenharmony_ci# --------------------------
169699ca880aSopenharmony_ci# All initialisations required before starting the option parse loop.
169799ca880aSopenharmony_ci# Note that when calling hook functions, we pass through the list of
169899ca880aSopenharmony_ci# positional parameters.  If a hook function modifies that list, and
169999ca880aSopenharmony_ci# needs to propogate that back to rest of this script, then the complete
170099ca880aSopenharmony_ci# modified list must be put in 'func_run_hooks_result' before
170199ca880aSopenharmony_ci# returning.
170299ca880aSopenharmony_cifunc_hookable func_options_prep
170399ca880aSopenharmony_cifunc_options_prep ()
170499ca880aSopenharmony_ci{
170599ca880aSopenharmony_ci    $debug_cmd
170699ca880aSopenharmony_ci
170799ca880aSopenharmony_ci    # Option defaults:
170899ca880aSopenharmony_ci    opt_verbose=false
170999ca880aSopenharmony_ci    opt_warning_types=
171099ca880aSopenharmony_ci
171199ca880aSopenharmony_ci    func_run_hooks func_options_prep ${1+"$@"}
171299ca880aSopenharmony_ci
171399ca880aSopenharmony_ci    # save modified positional parameters for caller
171499ca880aSopenharmony_ci    func_options_prep_result=$func_run_hooks_result
171599ca880aSopenharmony_ci}
171699ca880aSopenharmony_ci
171799ca880aSopenharmony_ci
171899ca880aSopenharmony_ci# func_parse_options [ARG]...
171999ca880aSopenharmony_ci# ---------------------------
172099ca880aSopenharmony_ci# The main option parsing loop.
172199ca880aSopenharmony_cifunc_hookable func_parse_options
172299ca880aSopenharmony_cifunc_parse_options ()
172399ca880aSopenharmony_ci{
172499ca880aSopenharmony_ci    $debug_cmd
172599ca880aSopenharmony_ci
172699ca880aSopenharmony_ci    func_parse_options_result=
172799ca880aSopenharmony_ci
172899ca880aSopenharmony_ci    # this just eases exit handling
172999ca880aSopenharmony_ci    while test $# -gt 0; do
173099ca880aSopenharmony_ci      # Defer to hook functions for initial option parsing, so they
173199ca880aSopenharmony_ci      # get priority in the event of reusing an option name.
173299ca880aSopenharmony_ci      func_run_hooks func_parse_options ${1+"$@"}
173399ca880aSopenharmony_ci
173499ca880aSopenharmony_ci      # Adjust func_parse_options positional parameters to match
173599ca880aSopenharmony_ci      eval set dummy "$func_run_hooks_result"; shift
173699ca880aSopenharmony_ci
173799ca880aSopenharmony_ci      # Break out of the loop if we already parsed every option.
173899ca880aSopenharmony_ci      test $# -gt 0 || break
173999ca880aSopenharmony_ci
174099ca880aSopenharmony_ci      _G_opt=$1
174199ca880aSopenharmony_ci      shift
174299ca880aSopenharmony_ci      case $_G_opt in
174399ca880aSopenharmony_ci        --debug|-x)   debug_cmd='set -x'
174499ca880aSopenharmony_ci                      func_echo "enabling shell trace mode"
174599ca880aSopenharmony_ci                      $debug_cmd
174699ca880aSopenharmony_ci                      ;;
174799ca880aSopenharmony_ci
174899ca880aSopenharmony_ci        --no-warnings|--no-warning|--no-warn)
174999ca880aSopenharmony_ci                      set dummy --warnings none ${1+"$@"}
175099ca880aSopenharmony_ci                      shift
175199ca880aSopenharmony_ci		      ;;
175299ca880aSopenharmony_ci
175399ca880aSopenharmony_ci        --warnings|--warning|-W)
175499ca880aSopenharmony_ci                      test $# = 0 && func_missing_arg $_G_opt && break
175599ca880aSopenharmony_ci                      case " $warning_categories $1" in
175699ca880aSopenharmony_ci                        *" $1 "*)
175799ca880aSopenharmony_ci                          # trailing space prevents matching last $1 above
175899ca880aSopenharmony_ci                          func_append_uniq opt_warning_types " $1"
175999ca880aSopenharmony_ci                          ;;
176099ca880aSopenharmony_ci                        *all)
176199ca880aSopenharmony_ci                          opt_warning_types=$warning_categories
176299ca880aSopenharmony_ci                          ;;
176399ca880aSopenharmony_ci                        *none)
176499ca880aSopenharmony_ci                          opt_warning_types=none
176599ca880aSopenharmony_ci                          warning_func=:
176699ca880aSopenharmony_ci                          ;;
176799ca880aSopenharmony_ci                        *error)
176899ca880aSopenharmony_ci                          opt_warning_types=$warning_categories
176999ca880aSopenharmony_ci                          warning_func=func_fatal_error
177099ca880aSopenharmony_ci                          ;;
177199ca880aSopenharmony_ci                        *)
177299ca880aSopenharmony_ci                          func_fatal_error \
177399ca880aSopenharmony_ci                             "unsupported warning category: '$1'"
177499ca880aSopenharmony_ci                          ;;
177599ca880aSopenharmony_ci                      esac
177699ca880aSopenharmony_ci                      shift
177799ca880aSopenharmony_ci                      ;;
177899ca880aSopenharmony_ci
177999ca880aSopenharmony_ci        --verbose|-v) opt_verbose=: ;;
178099ca880aSopenharmony_ci        --version)    func_version ;;
178199ca880aSopenharmony_ci        -\?|-h)       func_usage ;;
178299ca880aSopenharmony_ci        --help)       func_help ;;
178399ca880aSopenharmony_ci
178499ca880aSopenharmony_ci	# Separate optargs to long options (plugins may need this):
178599ca880aSopenharmony_ci	--*=*)        func_split_equals "$_G_opt"
178699ca880aSopenharmony_ci	              set dummy "$func_split_equals_lhs" \
178799ca880aSopenharmony_ci                          "$func_split_equals_rhs" ${1+"$@"}
178899ca880aSopenharmony_ci                      shift
178999ca880aSopenharmony_ci                      ;;
179099ca880aSopenharmony_ci
179199ca880aSopenharmony_ci       # Separate optargs to short options:
179299ca880aSopenharmony_ci        -W*)
179399ca880aSopenharmony_ci                      func_split_short_opt "$_G_opt"
179499ca880aSopenharmony_ci                      set dummy "$func_split_short_opt_name" \
179599ca880aSopenharmony_ci                          "$func_split_short_opt_arg" ${1+"$@"}
179699ca880aSopenharmony_ci                      shift
179799ca880aSopenharmony_ci                      ;;
179899ca880aSopenharmony_ci
179999ca880aSopenharmony_ci        # Separate non-argument short options:
180099ca880aSopenharmony_ci        -\?*|-h*|-v*|-x*)
180199ca880aSopenharmony_ci                      func_split_short_opt "$_G_opt"
180299ca880aSopenharmony_ci                      set dummy "$func_split_short_opt_name" \
180399ca880aSopenharmony_ci                          "-$func_split_short_opt_arg" ${1+"$@"}
180499ca880aSopenharmony_ci                      shift
180599ca880aSopenharmony_ci                      ;;
180699ca880aSopenharmony_ci
180799ca880aSopenharmony_ci        --)           break ;;
180899ca880aSopenharmony_ci        -*)           func_fatal_help "unrecognised option: '$_G_opt'" ;;
180999ca880aSopenharmony_ci        *)            set dummy "$_G_opt" ${1+"$@"}; shift; break ;;
181099ca880aSopenharmony_ci      esac
181199ca880aSopenharmony_ci    done
181299ca880aSopenharmony_ci
181399ca880aSopenharmony_ci    # save modified positional parameters for caller
181499ca880aSopenharmony_ci    func_quote_for_eval ${1+"$@"}
181599ca880aSopenharmony_ci    func_parse_options_result=$func_quote_for_eval_result
181699ca880aSopenharmony_ci}
181799ca880aSopenharmony_ci
181899ca880aSopenharmony_ci
181999ca880aSopenharmony_ci# func_validate_options [ARG]...
182099ca880aSopenharmony_ci# ------------------------------
182199ca880aSopenharmony_ci# Perform any sanity checks on option settings and/or unconsumed
182299ca880aSopenharmony_ci# arguments.
182399ca880aSopenharmony_cifunc_hookable func_validate_options
182499ca880aSopenharmony_cifunc_validate_options ()
182599ca880aSopenharmony_ci{
182699ca880aSopenharmony_ci    $debug_cmd
182799ca880aSopenharmony_ci
182899ca880aSopenharmony_ci    # Display all warnings if -W was not given.
182999ca880aSopenharmony_ci    test -n "$opt_warning_types" || opt_warning_types=" $warning_categories"
183099ca880aSopenharmony_ci
183199ca880aSopenharmony_ci    func_run_hooks func_validate_options ${1+"$@"}
183299ca880aSopenharmony_ci
183399ca880aSopenharmony_ci    # Bail if the options were screwed!
183499ca880aSopenharmony_ci    $exit_cmd $EXIT_FAILURE
183599ca880aSopenharmony_ci
183699ca880aSopenharmony_ci    # save modified positional parameters for caller
183799ca880aSopenharmony_ci    func_validate_options_result=$func_run_hooks_result
183899ca880aSopenharmony_ci}
183999ca880aSopenharmony_ci
184099ca880aSopenharmony_ci
184199ca880aSopenharmony_ci
184299ca880aSopenharmony_ci## ----------------- ##
184399ca880aSopenharmony_ci## Helper functions. ##
184499ca880aSopenharmony_ci## ----------------- ##
184599ca880aSopenharmony_ci
184699ca880aSopenharmony_ci# This section contains the helper functions used by the rest of the
184799ca880aSopenharmony_ci# hookable option parser framework in ascii-betical order.
184899ca880aSopenharmony_ci
184999ca880aSopenharmony_ci
185099ca880aSopenharmony_ci# func_fatal_help ARG...
185199ca880aSopenharmony_ci# ----------------------
185299ca880aSopenharmony_ci# Echo program name prefixed message to standard error, followed by
185399ca880aSopenharmony_ci# a help hint, and exit.
185499ca880aSopenharmony_cifunc_fatal_help ()
185599ca880aSopenharmony_ci{
185699ca880aSopenharmony_ci    $debug_cmd
185799ca880aSopenharmony_ci
185899ca880aSopenharmony_ci    eval \$ECHO \""Usage: $usage"\"
185999ca880aSopenharmony_ci    eval \$ECHO \""$fatal_help"\"
186099ca880aSopenharmony_ci    func_error ${1+"$@"}
186199ca880aSopenharmony_ci    exit $EXIT_FAILURE
186299ca880aSopenharmony_ci}
186399ca880aSopenharmony_ci
186499ca880aSopenharmony_ci
186599ca880aSopenharmony_ci# func_help
186699ca880aSopenharmony_ci# ---------
186799ca880aSopenharmony_ci# Echo long help message to standard output and exit.
186899ca880aSopenharmony_cifunc_help ()
186999ca880aSopenharmony_ci{
187099ca880aSopenharmony_ci    $debug_cmd
187199ca880aSopenharmony_ci
187299ca880aSopenharmony_ci    func_usage_message
187399ca880aSopenharmony_ci    $ECHO "$long_help_message"
187499ca880aSopenharmony_ci    exit 0
187599ca880aSopenharmony_ci}
187699ca880aSopenharmony_ci
187799ca880aSopenharmony_ci
187899ca880aSopenharmony_ci# func_missing_arg ARGNAME
187999ca880aSopenharmony_ci# ------------------------
188099ca880aSopenharmony_ci# Echo program name prefixed message to standard error and set global
188199ca880aSopenharmony_ci# exit_cmd.
188299ca880aSopenharmony_cifunc_missing_arg ()
188399ca880aSopenharmony_ci{
188499ca880aSopenharmony_ci    $debug_cmd
188599ca880aSopenharmony_ci
188699ca880aSopenharmony_ci    func_error "Missing argument for '$1'."
188799ca880aSopenharmony_ci    exit_cmd=exit
188899ca880aSopenharmony_ci}
188999ca880aSopenharmony_ci
189099ca880aSopenharmony_ci
189199ca880aSopenharmony_ci# func_split_equals STRING
189299ca880aSopenharmony_ci# ------------------------
189399ca880aSopenharmony_ci# Set func_split_equals_lhs and func_split_equals_rhs shell variables after
189499ca880aSopenharmony_ci# splitting STRING at the '=' sign.
189599ca880aSopenharmony_citest -z "$_G_HAVE_XSI_OPS" \
189699ca880aSopenharmony_ci    && (eval 'x=a/b/c;
189799ca880aSopenharmony_ci      test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
189899ca880aSopenharmony_ci    && _G_HAVE_XSI_OPS=yes
189999ca880aSopenharmony_ci
190099ca880aSopenharmony_ciif test yes = "$_G_HAVE_XSI_OPS"
190199ca880aSopenharmony_cithen
190299ca880aSopenharmony_ci  # This is an XSI compatible shell, allowing a faster implementation...
190399ca880aSopenharmony_ci  eval 'func_split_equals ()
190499ca880aSopenharmony_ci  {
190599ca880aSopenharmony_ci      $debug_cmd
190699ca880aSopenharmony_ci
190799ca880aSopenharmony_ci      func_split_equals_lhs=${1%%=*}
190899ca880aSopenharmony_ci      func_split_equals_rhs=${1#*=}
190999ca880aSopenharmony_ci      test "x$func_split_equals_lhs" = "x$1" \
191099ca880aSopenharmony_ci        && func_split_equals_rhs=
191199ca880aSopenharmony_ci  }'
191299ca880aSopenharmony_cielse
191399ca880aSopenharmony_ci  # ...otherwise fall back to using expr, which is often a shell builtin.
191499ca880aSopenharmony_ci  func_split_equals ()
191599ca880aSopenharmony_ci  {
191699ca880aSopenharmony_ci      $debug_cmd
191799ca880aSopenharmony_ci
191899ca880aSopenharmony_ci      func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'`
191999ca880aSopenharmony_ci      func_split_equals_rhs=
192099ca880aSopenharmony_ci      test "x$func_split_equals_lhs" = "x$1" \
192199ca880aSopenharmony_ci        || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'`
192299ca880aSopenharmony_ci  }
192399ca880aSopenharmony_cifi #func_split_equals
192499ca880aSopenharmony_ci
192599ca880aSopenharmony_ci
192699ca880aSopenharmony_ci# func_split_short_opt SHORTOPT
192799ca880aSopenharmony_ci# -----------------------------
192899ca880aSopenharmony_ci# Set func_split_short_opt_name and func_split_short_opt_arg shell
192999ca880aSopenharmony_ci# variables after splitting SHORTOPT after the 2nd character.
193099ca880aSopenharmony_ciif test yes = "$_G_HAVE_XSI_OPS"
193199ca880aSopenharmony_cithen
193299ca880aSopenharmony_ci  # This is an XSI compatible shell, allowing a faster implementation...
193399ca880aSopenharmony_ci  eval 'func_split_short_opt ()
193499ca880aSopenharmony_ci  {
193599ca880aSopenharmony_ci      $debug_cmd
193699ca880aSopenharmony_ci
193799ca880aSopenharmony_ci      func_split_short_opt_arg=${1#??}
193899ca880aSopenharmony_ci      func_split_short_opt_name=${1%"$func_split_short_opt_arg"}
193999ca880aSopenharmony_ci  }'
194099ca880aSopenharmony_cielse
194199ca880aSopenharmony_ci  # ...otherwise fall back to using expr, which is often a shell builtin.
194299ca880aSopenharmony_ci  func_split_short_opt ()
194399ca880aSopenharmony_ci  {
194499ca880aSopenharmony_ci      $debug_cmd
194599ca880aSopenharmony_ci
194699ca880aSopenharmony_ci      func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'`
194799ca880aSopenharmony_ci      func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'`
194899ca880aSopenharmony_ci  }
194999ca880aSopenharmony_cifi #func_split_short_opt
195099ca880aSopenharmony_ci
195199ca880aSopenharmony_ci
195299ca880aSopenharmony_ci# func_usage
195399ca880aSopenharmony_ci# ----------
195499ca880aSopenharmony_ci# Echo short help message to standard output and exit.
195599ca880aSopenharmony_cifunc_usage ()
195699ca880aSopenharmony_ci{
195799ca880aSopenharmony_ci    $debug_cmd
195899ca880aSopenharmony_ci
195999ca880aSopenharmony_ci    func_usage_message
196099ca880aSopenharmony_ci    $ECHO "Run '$progname --help |${PAGER-more}' for full usage"
196199ca880aSopenharmony_ci    exit 0
196299ca880aSopenharmony_ci}
196399ca880aSopenharmony_ci
196499ca880aSopenharmony_ci
196599ca880aSopenharmony_ci# func_usage_message
196699ca880aSopenharmony_ci# ------------------
196799ca880aSopenharmony_ci# Echo short help message to standard output.
196899ca880aSopenharmony_cifunc_usage_message ()
196999ca880aSopenharmony_ci{
197099ca880aSopenharmony_ci    $debug_cmd
197199ca880aSopenharmony_ci
197299ca880aSopenharmony_ci    eval \$ECHO \""Usage: $usage"\"
197399ca880aSopenharmony_ci    echo
197499ca880aSopenharmony_ci    $SED -n 's|^# ||
197599ca880aSopenharmony_ci        /^Written by/{
197699ca880aSopenharmony_ci          x;p;x
197799ca880aSopenharmony_ci        }
197899ca880aSopenharmony_ci	h
197999ca880aSopenharmony_ci	/^Written by/q' < "$progpath"
198099ca880aSopenharmony_ci    echo
198199ca880aSopenharmony_ci    eval \$ECHO \""$usage_message"\"
198299ca880aSopenharmony_ci}
198399ca880aSopenharmony_ci
198499ca880aSopenharmony_ci
198599ca880aSopenharmony_ci# func_version
198699ca880aSopenharmony_ci# ------------
198799ca880aSopenharmony_ci# Echo version message to standard output and exit.
198899ca880aSopenharmony_cifunc_version ()
198999ca880aSopenharmony_ci{
199099ca880aSopenharmony_ci    $debug_cmd
199199ca880aSopenharmony_ci
199299ca880aSopenharmony_ci    printf '%s\n' "$progname $scriptversion"
199399ca880aSopenharmony_ci    $SED -n '
199499ca880aSopenharmony_ci        /(C)/!b go
199599ca880aSopenharmony_ci        :more
199699ca880aSopenharmony_ci        /\./!{
199799ca880aSopenharmony_ci          N
199899ca880aSopenharmony_ci          s|\n# | |
199999ca880aSopenharmony_ci          b more
200099ca880aSopenharmony_ci        }
200199ca880aSopenharmony_ci        :go
200299ca880aSopenharmony_ci        /^# Written by /,/# warranty; / {
200399ca880aSopenharmony_ci          s|^# ||
200499ca880aSopenharmony_ci          s|^# *$||
200599ca880aSopenharmony_ci          s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2|
200699ca880aSopenharmony_ci          p
200799ca880aSopenharmony_ci        }
200899ca880aSopenharmony_ci        /^# Written by / {
200999ca880aSopenharmony_ci          s|^# ||
201099ca880aSopenharmony_ci          p
201199ca880aSopenharmony_ci        }
201299ca880aSopenharmony_ci        /^warranty; /q' < "$progpath"
201399ca880aSopenharmony_ci
201499ca880aSopenharmony_ci    exit $?
201599ca880aSopenharmony_ci}
201699ca880aSopenharmony_ci
201799ca880aSopenharmony_ci
201899ca880aSopenharmony_ci# Local variables:
201999ca880aSopenharmony_ci# mode: shell-script
202099ca880aSopenharmony_ci# sh-indentation: 2
202199ca880aSopenharmony_ci# eval: (add-hook 'before-save-hook 'time-stamp)
202299ca880aSopenharmony_ci# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
202399ca880aSopenharmony_ci# time-stamp-time-zone: "UTC"
202499ca880aSopenharmony_ci# End:
202599ca880aSopenharmony_ci
202699ca880aSopenharmony_ci# Set a version string.
202799ca880aSopenharmony_ciscriptversion='(GNU libtool) 2.4.6'
202899ca880aSopenharmony_ci
202999ca880aSopenharmony_ci
203099ca880aSopenharmony_ci# func_echo ARG...
203199ca880aSopenharmony_ci# ----------------
203299ca880aSopenharmony_ci# Libtool also displays the current mode in messages, so override
203399ca880aSopenharmony_ci# funclib.sh func_echo with this custom definition.
203499ca880aSopenharmony_cifunc_echo ()
203599ca880aSopenharmony_ci{
203699ca880aSopenharmony_ci    $debug_cmd
203799ca880aSopenharmony_ci
203899ca880aSopenharmony_ci    _G_message=$*
203999ca880aSopenharmony_ci
204099ca880aSopenharmony_ci    func_echo_IFS=$IFS
204199ca880aSopenharmony_ci    IFS=$nl
204299ca880aSopenharmony_ci    for _G_line in $_G_message; do
204399ca880aSopenharmony_ci      IFS=$func_echo_IFS
204499ca880aSopenharmony_ci      $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line"
204599ca880aSopenharmony_ci    done
204699ca880aSopenharmony_ci    IFS=$func_echo_IFS
204799ca880aSopenharmony_ci}
204899ca880aSopenharmony_ci
204999ca880aSopenharmony_ci
205099ca880aSopenharmony_ci# func_warning ARG...
205199ca880aSopenharmony_ci# -------------------
205299ca880aSopenharmony_ci# Libtool warnings are not categorized, so override funclib.sh
205399ca880aSopenharmony_ci# func_warning with this simpler definition.
205499ca880aSopenharmony_cifunc_warning ()
205599ca880aSopenharmony_ci{
205699ca880aSopenharmony_ci    $debug_cmd
205799ca880aSopenharmony_ci
205899ca880aSopenharmony_ci    $warning_func ${1+"$@"}
205999ca880aSopenharmony_ci}
206099ca880aSopenharmony_ci
206199ca880aSopenharmony_ci
206299ca880aSopenharmony_ci## ---------------- ##
206399ca880aSopenharmony_ci## Options parsing. ##
206499ca880aSopenharmony_ci## ---------------- ##
206599ca880aSopenharmony_ci
206699ca880aSopenharmony_ci# Hook in the functions to make sure our own options are parsed during
206799ca880aSopenharmony_ci# the option parsing loop.
206899ca880aSopenharmony_ci
206999ca880aSopenharmony_ciusage='$progpath [OPTION]... [MODE-ARG]...'
207099ca880aSopenharmony_ci
207199ca880aSopenharmony_ci# Short help message in response to '-h'.
207299ca880aSopenharmony_ciusage_message="Options:
207399ca880aSopenharmony_ci       --config             show all configuration variables
207499ca880aSopenharmony_ci       --debug              enable verbose shell tracing
207599ca880aSopenharmony_ci   -n, --dry-run            display commands without modifying any files
207699ca880aSopenharmony_ci       --features           display basic configuration information and exit
207799ca880aSopenharmony_ci       --mode=MODE          use operation mode MODE
207899ca880aSopenharmony_ci       --no-warnings        equivalent to '-Wnone'
207999ca880aSopenharmony_ci       --preserve-dup-deps  don't remove duplicate dependency libraries
208099ca880aSopenharmony_ci       --quiet, --silent    don't print informational messages
208199ca880aSopenharmony_ci       --tag=TAG            use configuration variables from tag TAG
208299ca880aSopenharmony_ci   -v, --verbose            print more informational messages than default
208399ca880aSopenharmony_ci       --version            print version information
208499ca880aSopenharmony_ci   -W, --warnings=CATEGORY  report the warnings falling in CATEGORY [all]
208599ca880aSopenharmony_ci   -h, --help, --help-all   print short, long, or detailed help message
208699ca880aSopenharmony_ci"
208799ca880aSopenharmony_ci
208899ca880aSopenharmony_ci# Additional text appended to 'usage_message' in response to '--help'.
208999ca880aSopenharmony_cifunc_help ()
209099ca880aSopenharmony_ci{
209199ca880aSopenharmony_ci    $debug_cmd
209299ca880aSopenharmony_ci
209399ca880aSopenharmony_ci    func_usage_message
209499ca880aSopenharmony_ci    $ECHO "$long_help_message
209599ca880aSopenharmony_ci
209699ca880aSopenharmony_ciMODE must be one of the following:
209799ca880aSopenharmony_ci
209899ca880aSopenharmony_ci       clean           remove files from the build directory
209999ca880aSopenharmony_ci       compile         compile a source file into a libtool object
210099ca880aSopenharmony_ci       execute         automatically set library path, then run a program
210199ca880aSopenharmony_ci       finish          complete the installation of libtool libraries
210299ca880aSopenharmony_ci       install         install libraries or executables
210399ca880aSopenharmony_ci       link            create a library or an executable
210499ca880aSopenharmony_ci       uninstall       remove libraries from an installed directory
210599ca880aSopenharmony_ci
210699ca880aSopenharmony_ciMODE-ARGS vary depending on the MODE.  When passed as first option,
210799ca880aSopenharmony_ci'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that.
210899ca880aSopenharmony_ciTry '$progname --help --mode=MODE' for a more detailed description of MODE.
210999ca880aSopenharmony_ci
211099ca880aSopenharmony_ciWhen reporting a bug, please describe a test case to reproduce it and
211199ca880aSopenharmony_ciinclude the following information:
211299ca880aSopenharmony_ci
211399ca880aSopenharmony_ci       host-triplet:   $host
211499ca880aSopenharmony_ci       shell:          $SHELL
211599ca880aSopenharmony_ci       compiler:       $LTCC
211699ca880aSopenharmony_ci       compiler flags: $LTCFLAGS
211799ca880aSopenharmony_ci       linker:         $LD (gnu? $with_gnu_ld)
211899ca880aSopenharmony_ci       version:        $progname (GNU libtool) 2.4.6
211999ca880aSopenharmony_ci       automake:       `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
212099ca880aSopenharmony_ci       autoconf:       `($AUTOCONF --version) 2>/dev/null |$SED 1q`
212199ca880aSopenharmony_ci
212299ca880aSopenharmony_ciReport bugs to <bug-libtool@gnu.org>.
212399ca880aSopenharmony_ciGNU libtool home page: <http://www.gnu.org/software/libtool/>.
212499ca880aSopenharmony_ciGeneral help using GNU software: <http://www.gnu.org/gethelp/>."
212599ca880aSopenharmony_ci    exit 0
212699ca880aSopenharmony_ci}
212799ca880aSopenharmony_ci
212899ca880aSopenharmony_ci
212999ca880aSopenharmony_ci# func_lo2o OBJECT-NAME
213099ca880aSopenharmony_ci# ---------------------
213199ca880aSopenharmony_ci# Transform OBJECT-NAME from a '.lo' suffix to the platform specific
213299ca880aSopenharmony_ci# object suffix.
213399ca880aSopenharmony_ci
213499ca880aSopenharmony_cilo2o=s/\\.lo\$/.$objext/
213599ca880aSopenharmony_cio2lo=s/\\.$objext\$/.lo/
213699ca880aSopenharmony_ci
213799ca880aSopenharmony_ciif test yes = "$_G_HAVE_XSI_OPS"; then
213899ca880aSopenharmony_ci  eval 'func_lo2o ()
213999ca880aSopenharmony_ci  {
214099ca880aSopenharmony_ci    case $1 in
214199ca880aSopenharmony_ci      *.lo) func_lo2o_result=${1%.lo}.$objext ;;
214299ca880aSopenharmony_ci      *   ) func_lo2o_result=$1               ;;
214399ca880aSopenharmony_ci    esac
214499ca880aSopenharmony_ci  }'
214599ca880aSopenharmony_ci
214699ca880aSopenharmony_ci  # func_xform LIBOBJ-OR-SOURCE
214799ca880aSopenharmony_ci  # ---------------------------
214899ca880aSopenharmony_ci  # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise)
214999ca880aSopenharmony_ci  # suffix to a '.lo' libtool-object suffix.
215099ca880aSopenharmony_ci  eval 'func_xform ()
215199ca880aSopenharmony_ci  {
215299ca880aSopenharmony_ci    func_xform_result=${1%.*}.lo
215399ca880aSopenharmony_ci  }'
215499ca880aSopenharmony_cielse
215599ca880aSopenharmony_ci  # ...otherwise fall back to using sed.
215699ca880aSopenharmony_ci  func_lo2o ()
215799ca880aSopenharmony_ci  {
215899ca880aSopenharmony_ci    func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"`
215999ca880aSopenharmony_ci  }
216099ca880aSopenharmony_ci
216199ca880aSopenharmony_ci  func_xform ()
216299ca880aSopenharmony_ci  {
216399ca880aSopenharmony_ci    func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'`
216499ca880aSopenharmony_ci  }
216599ca880aSopenharmony_cifi
216699ca880aSopenharmony_ci
216799ca880aSopenharmony_ci
216899ca880aSopenharmony_ci# func_fatal_configuration ARG...
216999ca880aSopenharmony_ci# -------------------------------
217099ca880aSopenharmony_ci# Echo program name prefixed message to standard error, followed by
217199ca880aSopenharmony_ci# a configuration failure hint, and exit.
217299ca880aSopenharmony_cifunc_fatal_configuration ()
217399ca880aSopenharmony_ci{
217499ca880aSopenharmony_ci    func__fatal_error ${1+"$@"} \
217599ca880aSopenharmony_ci      "See the $PACKAGE documentation for more information." \
217699ca880aSopenharmony_ci      "Fatal configuration error."
217799ca880aSopenharmony_ci}
217899ca880aSopenharmony_ci
217999ca880aSopenharmony_ci
218099ca880aSopenharmony_ci# func_config
218199ca880aSopenharmony_ci# -----------
218299ca880aSopenharmony_ci# Display the configuration for all the tags in this script.
218399ca880aSopenharmony_cifunc_config ()
218499ca880aSopenharmony_ci{
218599ca880aSopenharmony_ci    re_begincf='^# ### BEGIN LIBTOOL'
218699ca880aSopenharmony_ci    re_endcf='^# ### END LIBTOOL'
218799ca880aSopenharmony_ci
218899ca880aSopenharmony_ci    # Default configuration.
218999ca880aSopenharmony_ci    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
219099ca880aSopenharmony_ci
219199ca880aSopenharmony_ci    # Now print the configurations for the tags.
219299ca880aSopenharmony_ci    for tagname in $taglist; do
219399ca880aSopenharmony_ci      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
219499ca880aSopenharmony_ci    done
219599ca880aSopenharmony_ci
219699ca880aSopenharmony_ci    exit $?
219799ca880aSopenharmony_ci}
219899ca880aSopenharmony_ci
219999ca880aSopenharmony_ci
220099ca880aSopenharmony_ci# func_features
220199ca880aSopenharmony_ci# -------------
220299ca880aSopenharmony_ci# Display the features supported by this script.
220399ca880aSopenharmony_cifunc_features ()
220499ca880aSopenharmony_ci{
220599ca880aSopenharmony_ci    echo "host: $host"
220699ca880aSopenharmony_ci    if test yes = "$build_libtool_libs"; then
220799ca880aSopenharmony_ci      echo "enable shared libraries"
220899ca880aSopenharmony_ci    else
220999ca880aSopenharmony_ci      echo "disable shared libraries"
221099ca880aSopenharmony_ci    fi
221199ca880aSopenharmony_ci    if test yes = "$build_old_libs"; then
221299ca880aSopenharmony_ci      echo "enable static libraries"
221399ca880aSopenharmony_ci    else
221499ca880aSopenharmony_ci      echo "disable static libraries"
221599ca880aSopenharmony_ci    fi
221699ca880aSopenharmony_ci
221799ca880aSopenharmony_ci    exit $?
221899ca880aSopenharmony_ci}
221999ca880aSopenharmony_ci
222099ca880aSopenharmony_ci
222199ca880aSopenharmony_ci# func_enable_tag TAGNAME
222299ca880aSopenharmony_ci# -----------------------
222399ca880aSopenharmony_ci# Verify that TAGNAME is valid, and either flag an error and exit, or
222499ca880aSopenharmony_ci# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
222599ca880aSopenharmony_ci# variable here.
222699ca880aSopenharmony_cifunc_enable_tag ()
222799ca880aSopenharmony_ci{
222899ca880aSopenharmony_ci    # Global variable:
222999ca880aSopenharmony_ci    tagname=$1
223099ca880aSopenharmony_ci
223199ca880aSopenharmony_ci    re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
223299ca880aSopenharmony_ci    re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
223399ca880aSopenharmony_ci    sed_extractcf=/$re_begincf/,/$re_endcf/p
223499ca880aSopenharmony_ci
223599ca880aSopenharmony_ci    # Validate tagname.
223699ca880aSopenharmony_ci    case $tagname in
223799ca880aSopenharmony_ci      *[!-_A-Za-z0-9,/]*)
223899ca880aSopenharmony_ci        func_fatal_error "invalid tag name: $tagname"
223999ca880aSopenharmony_ci        ;;
224099ca880aSopenharmony_ci    esac
224199ca880aSopenharmony_ci
224299ca880aSopenharmony_ci    # Don't test for the "default" C tag, as we know it's
224399ca880aSopenharmony_ci    # there but not specially marked.
224499ca880aSopenharmony_ci    case $tagname in
224599ca880aSopenharmony_ci        CC) ;;
224699ca880aSopenharmony_ci    *)
224799ca880aSopenharmony_ci        if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
224899ca880aSopenharmony_ci	  taglist="$taglist $tagname"
224999ca880aSopenharmony_ci
225099ca880aSopenharmony_ci	  # Evaluate the configuration.  Be careful to quote the path
225199ca880aSopenharmony_ci	  # and the sed script, to avoid splitting on whitespace, but
225299ca880aSopenharmony_ci	  # also don't use non-portable quotes within backquotes within
225399ca880aSopenharmony_ci	  # quotes we have to do it in 2 steps:
225499ca880aSopenharmony_ci	  extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
225599ca880aSopenharmony_ci	  eval "$extractedcf"
225699ca880aSopenharmony_ci        else
225799ca880aSopenharmony_ci	  func_error "ignoring unknown tag $tagname"
225899ca880aSopenharmony_ci        fi
225999ca880aSopenharmony_ci        ;;
226099ca880aSopenharmony_ci    esac
226199ca880aSopenharmony_ci}
226299ca880aSopenharmony_ci
226399ca880aSopenharmony_ci
226499ca880aSopenharmony_ci# func_check_version_match
226599ca880aSopenharmony_ci# ------------------------
226699ca880aSopenharmony_ci# Ensure that we are using m4 macros, and libtool script from the same
226799ca880aSopenharmony_ci# release of libtool.
226899ca880aSopenharmony_cifunc_check_version_match ()
226999ca880aSopenharmony_ci{
227099ca880aSopenharmony_ci    if test "$package_revision" != "$macro_revision"; then
227199ca880aSopenharmony_ci      if test "$VERSION" != "$macro_version"; then
227299ca880aSopenharmony_ci        if test -z "$macro_version"; then
227399ca880aSopenharmony_ci          cat >&2 <<_LT_EOF
227499ca880aSopenharmony_ci$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
227599ca880aSopenharmony_ci$progname: definition of this LT_INIT comes from an older release.
227699ca880aSopenharmony_ci$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
227799ca880aSopenharmony_ci$progname: and run autoconf again.
227899ca880aSopenharmony_ci_LT_EOF
227999ca880aSopenharmony_ci        else
228099ca880aSopenharmony_ci          cat >&2 <<_LT_EOF
228199ca880aSopenharmony_ci$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
228299ca880aSopenharmony_ci$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
228399ca880aSopenharmony_ci$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
228499ca880aSopenharmony_ci$progname: and run autoconf again.
228599ca880aSopenharmony_ci_LT_EOF
228699ca880aSopenharmony_ci        fi
228799ca880aSopenharmony_ci      else
228899ca880aSopenharmony_ci        cat >&2 <<_LT_EOF
228999ca880aSopenharmony_ci$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
229099ca880aSopenharmony_ci$progname: but the definition of this LT_INIT comes from revision $macro_revision.
229199ca880aSopenharmony_ci$progname: You should recreate aclocal.m4 with macros from revision $package_revision
229299ca880aSopenharmony_ci$progname: of $PACKAGE $VERSION and run autoconf again.
229399ca880aSopenharmony_ci_LT_EOF
229499ca880aSopenharmony_ci      fi
229599ca880aSopenharmony_ci
229699ca880aSopenharmony_ci      exit $EXIT_MISMATCH
229799ca880aSopenharmony_ci    fi
229899ca880aSopenharmony_ci}
229999ca880aSopenharmony_ci
230099ca880aSopenharmony_ci
230199ca880aSopenharmony_ci# libtool_options_prep [ARG]...
230299ca880aSopenharmony_ci# -----------------------------
230399ca880aSopenharmony_ci# Preparation for options parsed by libtool.
230499ca880aSopenharmony_cilibtool_options_prep ()
230599ca880aSopenharmony_ci{
230699ca880aSopenharmony_ci    $debug_mode
230799ca880aSopenharmony_ci
230899ca880aSopenharmony_ci    # Option defaults:
230999ca880aSopenharmony_ci    opt_config=false
231099ca880aSopenharmony_ci    opt_dlopen=
231199ca880aSopenharmony_ci    opt_dry_run=false
231299ca880aSopenharmony_ci    opt_help=false
231399ca880aSopenharmony_ci    opt_mode=
231499ca880aSopenharmony_ci    opt_preserve_dup_deps=false
231599ca880aSopenharmony_ci    opt_quiet=false
231699ca880aSopenharmony_ci
231799ca880aSopenharmony_ci    nonopt=
231899ca880aSopenharmony_ci    preserve_args=
231999ca880aSopenharmony_ci
232099ca880aSopenharmony_ci    # Shorthand for --mode=foo, only valid as the first argument
232199ca880aSopenharmony_ci    case $1 in
232299ca880aSopenharmony_ci    clean|clea|cle|cl)
232399ca880aSopenharmony_ci      shift; set dummy --mode clean ${1+"$@"}; shift
232499ca880aSopenharmony_ci      ;;
232599ca880aSopenharmony_ci    compile|compil|compi|comp|com|co|c)
232699ca880aSopenharmony_ci      shift; set dummy --mode compile ${1+"$@"}; shift
232799ca880aSopenharmony_ci      ;;
232899ca880aSopenharmony_ci    execute|execut|execu|exec|exe|ex|e)
232999ca880aSopenharmony_ci      shift; set dummy --mode execute ${1+"$@"}; shift
233099ca880aSopenharmony_ci      ;;
233199ca880aSopenharmony_ci    finish|finis|fini|fin|fi|f)
233299ca880aSopenharmony_ci      shift; set dummy --mode finish ${1+"$@"}; shift
233399ca880aSopenharmony_ci      ;;
233499ca880aSopenharmony_ci    install|instal|insta|inst|ins|in|i)
233599ca880aSopenharmony_ci      shift; set dummy --mode install ${1+"$@"}; shift
233699ca880aSopenharmony_ci      ;;
233799ca880aSopenharmony_ci    link|lin|li|l)
233899ca880aSopenharmony_ci      shift; set dummy --mode link ${1+"$@"}; shift
233999ca880aSopenharmony_ci      ;;
234099ca880aSopenharmony_ci    uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
234199ca880aSopenharmony_ci      shift; set dummy --mode uninstall ${1+"$@"}; shift
234299ca880aSopenharmony_ci      ;;
234399ca880aSopenharmony_ci    esac
234499ca880aSopenharmony_ci
234599ca880aSopenharmony_ci    # Pass back the list of options.
234699ca880aSopenharmony_ci    func_quote_for_eval ${1+"$@"}
234799ca880aSopenharmony_ci    libtool_options_prep_result=$func_quote_for_eval_result
234899ca880aSopenharmony_ci}
234999ca880aSopenharmony_cifunc_add_hook func_options_prep libtool_options_prep
235099ca880aSopenharmony_ci
235199ca880aSopenharmony_ci
235299ca880aSopenharmony_ci# libtool_parse_options [ARG]...
235399ca880aSopenharmony_ci# ---------------------------------
235499ca880aSopenharmony_ci# Provide handling for libtool specific options.
235599ca880aSopenharmony_cilibtool_parse_options ()
235699ca880aSopenharmony_ci{
235799ca880aSopenharmony_ci    $debug_cmd
235899ca880aSopenharmony_ci
235999ca880aSopenharmony_ci    # Perform our own loop to consume as many options as possible in
236099ca880aSopenharmony_ci    # each iteration.
236199ca880aSopenharmony_ci    while test $# -gt 0; do
236299ca880aSopenharmony_ci      _G_opt=$1
236399ca880aSopenharmony_ci      shift
236499ca880aSopenharmony_ci      case $_G_opt in
236599ca880aSopenharmony_ci        --dry-run|--dryrun|-n)
236699ca880aSopenharmony_ci                        opt_dry_run=:
236799ca880aSopenharmony_ci                        ;;
236899ca880aSopenharmony_ci
236999ca880aSopenharmony_ci        --config)       func_config ;;
237099ca880aSopenharmony_ci
237199ca880aSopenharmony_ci        --dlopen|-dlopen)
237299ca880aSopenharmony_ci                        opt_dlopen="${opt_dlopen+$opt_dlopen
237399ca880aSopenharmony_ci}$1"
237499ca880aSopenharmony_ci                        shift
237599ca880aSopenharmony_ci                        ;;
237699ca880aSopenharmony_ci
237799ca880aSopenharmony_ci        --preserve-dup-deps)
237899ca880aSopenharmony_ci                        opt_preserve_dup_deps=: ;;
237999ca880aSopenharmony_ci
238099ca880aSopenharmony_ci        --features)     func_features ;;
238199ca880aSopenharmony_ci
238299ca880aSopenharmony_ci        --finish)       set dummy --mode finish ${1+"$@"}; shift ;;
238399ca880aSopenharmony_ci
238499ca880aSopenharmony_ci        --help)         opt_help=: ;;
238599ca880aSopenharmony_ci
238699ca880aSopenharmony_ci        --help-all)     opt_help=': help-all' ;;
238799ca880aSopenharmony_ci
238899ca880aSopenharmony_ci        --mode)         test $# = 0 && func_missing_arg $_G_opt && break
238999ca880aSopenharmony_ci                        opt_mode=$1
239099ca880aSopenharmony_ci                        case $1 in
239199ca880aSopenharmony_ci                          # Valid mode arguments:
239299ca880aSopenharmony_ci                          clean|compile|execute|finish|install|link|relink|uninstall) ;;
239399ca880aSopenharmony_ci
239499ca880aSopenharmony_ci                          # Catch anything else as an error
239599ca880aSopenharmony_ci                          *) func_error "invalid argument for $_G_opt"
239699ca880aSopenharmony_ci                             exit_cmd=exit
239799ca880aSopenharmony_ci                             break
239899ca880aSopenharmony_ci                             ;;
239999ca880aSopenharmony_ci                        esac
240099ca880aSopenharmony_ci                        shift
240199ca880aSopenharmony_ci                        ;;
240299ca880aSopenharmony_ci
240399ca880aSopenharmony_ci        --no-silent|--no-quiet)
240499ca880aSopenharmony_ci                        opt_quiet=false
240599ca880aSopenharmony_ci                        func_append preserve_args " $_G_opt"
240699ca880aSopenharmony_ci                        ;;
240799ca880aSopenharmony_ci
240899ca880aSopenharmony_ci        --no-warnings|--no-warning|--no-warn)
240999ca880aSopenharmony_ci                        opt_warning=false
241099ca880aSopenharmony_ci                        func_append preserve_args " $_G_opt"
241199ca880aSopenharmony_ci                        ;;
241299ca880aSopenharmony_ci
241399ca880aSopenharmony_ci        --no-verbose)
241499ca880aSopenharmony_ci                        opt_verbose=false
241599ca880aSopenharmony_ci                        func_append preserve_args " $_G_opt"
241699ca880aSopenharmony_ci                        ;;
241799ca880aSopenharmony_ci
241899ca880aSopenharmony_ci        --silent|--quiet)
241999ca880aSopenharmony_ci                        opt_quiet=:
242099ca880aSopenharmony_ci                        opt_verbose=false
242199ca880aSopenharmony_ci                        func_append preserve_args " $_G_opt"
242299ca880aSopenharmony_ci                        ;;
242399ca880aSopenharmony_ci
242499ca880aSopenharmony_ci        --tag)          test $# = 0 && func_missing_arg $_G_opt && break
242599ca880aSopenharmony_ci                        opt_tag=$1
242699ca880aSopenharmony_ci                        func_append preserve_args " $_G_opt $1"
242799ca880aSopenharmony_ci                        func_enable_tag "$1"
242899ca880aSopenharmony_ci                        shift
242999ca880aSopenharmony_ci                        ;;
243099ca880aSopenharmony_ci
243199ca880aSopenharmony_ci        --verbose|-v)   opt_quiet=false
243299ca880aSopenharmony_ci                        opt_verbose=:
243399ca880aSopenharmony_ci                        func_append preserve_args " $_G_opt"
243499ca880aSopenharmony_ci                        ;;
243599ca880aSopenharmony_ci
243699ca880aSopenharmony_ci	# An option not handled by this hook function:
243799ca880aSopenharmony_ci        *)		set dummy "$_G_opt" ${1+"$@"};	shift; break  ;;
243899ca880aSopenharmony_ci      esac
243999ca880aSopenharmony_ci    done
244099ca880aSopenharmony_ci
244199ca880aSopenharmony_ci
244299ca880aSopenharmony_ci    # save modified positional parameters for caller
244399ca880aSopenharmony_ci    func_quote_for_eval ${1+"$@"}
244499ca880aSopenharmony_ci    libtool_parse_options_result=$func_quote_for_eval_result
244599ca880aSopenharmony_ci}
244699ca880aSopenharmony_cifunc_add_hook func_parse_options libtool_parse_options
244799ca880aSopenharmony_ci
244899ca880aSopenharmony_ci
244999ca880aSopenharmony_ci
245099ca880aSopenharmony_ci# libtool_validate_options [ARG]...
245199ca880aSopenharmony_ci# ---------------------------------
245299ca880aSopenharmony_ci# Perform any sanity checks on option settings and/or unconsumed
245399ca880aSopenharmony_ci# arguments.
245499ca880aSopenharmony_cilibtool_validate_options ()
245599ca880aSopenharmony_ci{
245699ca880aSopenharmony_ci    # save first non-option argument
245799ca880aSopenharmony_ci    if test 0 -lt $#; then
245899ca880aSopenharmony_ci      nonopt=$1
245999ca880aSopenharmony_ci      shift
246099ca880aSopenharmony_ci    fi
246199ca880aSopenharmony_ci
246299ca880aSopenharmony_ci    # preserve --debug
246399ca880aSopenharmony_ci    test : = "$debug_cmd" || func_append preserve_args " --debug"
246499ca880aSopenharmony_ci
246599ca880aSopenharmony_ci    case $host in
246699ca880aSopenharmony_ci      # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452
246799ca880aSopenharmony_ci      # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788
246899ca880aSopenharmony_ci      *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*)
246999ca880aSopenharmony_ci        # don't eliminate duplications in $postdeps and $predeps
247099ca880aSopenharmony_ci        opt_duplicate_compiler_generated_deps=:
247199ca880aSopenharmony_ci        ;;
247299ca880aSopenharmony_ci      *)
247399ca880aSopenharmony_ci        opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
247499ca880aSopenharmony_ci        ;;
247599ca880aSopenharmony_ci    esac
247699ca880aSopenharmony_ci
247799ca880aSopenharmony_ci    $opt_help || {
247899ca880aSopenharmony_ci      # Sanity checks first:
247999ca880aSopenharmony_ci      func_check_version_match
248099ca880aSopenharmony_ci
248199ca880aSopenharmony_ci      test yes != "$build_libtool_libs" \
248299ca880aSopenharmony_ci        && test yes != "$build_old_libs" \
248399ca880aSopenharmony_ci        && func_fatal_configuration "not configured to build any kind of library"
248499ca880aSopenharmony_ci
248599ca880aSopenharmony_ci      # Darwin sucks
248699ca880aSopenharmony_ci      eval std_shrext=\"$shrext_cmds\"
248799ca880aSopenharmony_ci
248899ca880aSopenharmony_ci      # Only execute mode is allowed to have -dlopen flags.
248999ca880aSopenharmony_ci      if test -n "$opt_dlopen" && test execute != "$opt_mode"; then
249099ca880aSopenharmony_ci        func_error "unrecognized option '-dlopen'"
249199ca880aSopenharmony_ci        $ECHO "$help" 1>&2
249299ca880aSopenharmony_ci        exit $EXIT_FAILURE
249399ca880aSopenharmony_ci      fi
249499ca880aSopenharmony_ci
249599ca880aSopenharmony_ci      # Change the help message to a mode-specific one.
249699ca880aSopenharmony_ci      generic_help=$help
249799ca880aSopenharmony_ci      help="Try '$progname --help --mode=$opt_mode' for more information."
249899ca880aSopenharmony_ci    }
249999ca880aSopenharmony_ci
250099ca880aSopenharmony_ci    # Pass back the unparsed argument list
250199ca880aSopenharmony_ci    func_quote_for_eval ${1+"$@"}
250299ca880aSopenharmony_ci    libtool_validate_options_result=$func_quote_for_eval_result
250399ca880aSopenharmony_ci}
250499ca880aSopenharmony_cifunc_add_hook func_validate_options libtool_validate_options
250599ca880aSopenharmony_ci
250699ca880aSopenharmony_ci
250799ca880aSopenharmony_ci# Process options as early as possible so that --help and --version
250899ca880aSopenharmony_ci# can return quickly.
250999ca880aSopenharmony_cifunc_options ${1+"$@"}
251099ca880aSopenharmony_cieval set dummy "$func_options_result"; shift
251199ca880aSopenharmony_ci
251299ca880aSopenharmony_ci
251399ca880aSopenharmony_ci
251499ca880aSopenharmony_ci## ----------- ##
251599ca880aSopenharmony_ci##    Main.    ##
251699ca880aSopenharmony_ci## ----------- ##
251799ca880aSopenharmony_ci
251899ca880aSopenharmony_cimagic='%%%MAGIC variable%%%'
251999ca880aSopenharmony_cimagic_exe='%%%MAGIC EXE variable%%%'
252099ca880aSopenharmony_ci
252199ca880aSopenharmony_ci# Global variables.
252299ca880aSopenharmony_ciextracted_archives=
252399ca880aSopenharmony_ciextracted_serial=0
252499ca880aSopenharmony_ci
252599ca880aSopenharmony_ci# If this variable is set in any of the actions, the command in it
252699ca880aSopenharmony_ci# will be execed at the end.  This prevents here-documents from being
252799ca880aSopenharmony_ci# left over by shells.
252899ca880aSopenharmony_ciexec_cmd=
252999ca880aSopenharmony_ci
253099ca880aSopenharmony_ci
253199ca880aSopenharmony_ci# A function that is used when there is no print builtin or printf.
253299ca880aSopenharmony_cifunc_fallback_echo ()
253399ca880aSopenharmony_ci{
253499ca880aSopenharmony_ci  eval 'cat <<_LTECHO_EOF
253599ca880aSopenharmony_ci$1
253699ca880aSopenharmony_ci_LTECHO_EOF'
253799ca880aSopenharmony_ci}
253899ca880aSopenharmony_ci
253999ca880aSopenharmony_ci# func_generated_by_libtool
254099ca880aSopenharmony_ci# True iff stdin has been generated by Libtool. This function is only
254199ca880aSopenharmony_ci# a basic sanity check; it will hardly flush out determined imposters.
254299ca880aSopenharmony_cifunc_generated_by_libtool_p ()
254399ca880aSopenharmony_ci{
254499ca880aSopenharmony_ci  $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
254599ca880aSopenharmony_ci}
254699ca880aSopenharmony_ci
254799ca880aSopenharmony_ci# func_lalib_p file
254899ca880aSopenharmony_ci# True iff FILE is a libtool '.la' library or '.lo' object file.
254999ca880aSopenharmony_ci# This function is only a basic sanity check; it will hardly flush out
255099ca880aSopenharmony_ci# determined imposters.
255199ca880aSopenharmony_cifunc_lalib_p ()
255299ca880aSopenharmony_ci{
255399ca880aSopenharmony_ci    test -f "$1" &&
255499ca880aSopenharmony_ci      $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p
255599ca880aSopenharmony_ci}
255699ca880aSopenharmony_ci
255799ca880aSopenharmony_ci# func_lalib_unsafe_p file
255899ca880aSopenharmony_ci# True iff FILE is a libtool '.la' library or '.lo' object file.
255999ca880aSopenharmony_ci# This function implements the same check as func_lalib_p without
256099ca880aSopenharmony_ci# resorting to external programs.  To this end, it redirects stdin and
256199ca880aSopenharmony_ci# closes it afterwards, without saving the original file descriptor.
256299ca880aSopenharmony_ci# As a safety measure, use it only where a negative result would be
256399ca880aSopenharmony_ci# fatal anyway.  Works if 'file' does not exist.
256499ca880aSopenharmony_cifunc_lalib_unsafe_p ()
256599ca880aSopenharmony_ci{
256699ca880aSopenharmony_ci    lalib_p=no
256799ca880aSopenharmony_ci    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
256899ca880aSopenharmony_ci	for lalib_p_l in 1 2 3 4
256999ca880aSopenharmony_ci	do
257099ca880aSopenharmony_ci	    read lalib_p_line
257199ca880aSopenharmony_ci	    case $lalib_p_line in
257299ca880aSopenharmony_ci		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
257399ca880aSopenharmony_ci	    esac
257499ca880aSopenharmony_ci	done
257599ca880aSopenharmony_ci	exec 0<&5 5<&-
257699ca880aSopenharmony_ci    fi
257799ca880aSopenharmony_ci    test yes = "$lalib_p"
257899ca880aSopenharmony_ci}
257999ca880aSopenharmony_ci
258099ca880aSopenharmony_ci# func_ltwrapper_script_p file
258199ca880aSopenharmony_ci# True iff FILE is a libtool wrapper script
258299ca880aSopenharmony_ci# This function is only a basic sanity check; it will hardly flush out
258399ca880aSopenharmony_ci# determined imposters.
258499ca880aSopenharmony_cifunc_ltwrapper_script_p ()
258599ca880aSopenharmony_ci{
258699ca880aSopenharmony_ci    test -f "$1" &&
258799ca880aSopenharmony_ci      $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p
258899ca880aSopenharmony_ci}
258999ca880aSopenharmony_ci
259099ca880aSopenharmony_ci# func_ltwrapper_executable_p file
259199ca880aSopenharmony_ci# True iff FILE is a libtool wrapper executable
259299ca880aSopenharmony_ci# This function is only a basic sanity check; it will hardly flush out
259399ca880aSopenharmony_ci# determined imposters.
259499ca880aSopenharmony_cifunc_ltwrapper_executable_p ()
259599ca880aSopenharmony_ci{
259699ca880aSopenharmony_ci    func_ltwrapper_exec_suffix=
259799ca880aSopenharmony_ci    case $1 in
259899ca880aSopenharmony_ci    *.exe) ;;
259999ca880aSopenharmony_ci    *) func_ltwrapper_exec_suffix=.exe ;;
260099ca880aSopenharmony_ci    esac
260199ca880aSopenharmony_ci    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
260299ca880aSopenharmony_ci}
260399ca880aSopenharmony_ci
260499ca880aSopenharmony_ci# func_ltwrapper_scriptname file
260599ca880aSopenharmony_ci# Assumes file is an ltwrapper_executable
260699ca880aSopenharmony_ci# uses $file to determine the appropriate filename for a
260799ca880aSopenharmony_ci# temporary ltwrapper_script.
260899ca880aSopenharmony_cifunc_ltwrapper_scriptname ()
260999ca880aSopenharmony_ci{
261099ca880aSopenharmony_ci    func_dirname_and_basename "$1" "" "."
261199ca880aSopenharmony_ci    func_stripname '' '.exe' "$func_basename_result"
261299ca880aSopenharmony_ci    func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper
261399ca880aSopenharmony_ci}
261499ca880aSopenharmony_ci
261599ca880aSopenharmony_ci# func_ltwrapper_p file
261699ca880aSopenharmony_ci# True iff FILE is a libtool wrapper script or wrapper executable
261799ca880aSopenharmony_ci# This function is only a basic sanity check; it will hardly flush out
261899ca880aSopenharmony_ci# determined imposters.
261999ca880aSopenharmony_cifunc_ltwrapper_p ()
262099ca880aSopenharmony_ci{
262199ca880aSopenharmony_ci    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
262299ca880aSopenharmony_ci}
262399ca880aSopenharmony_ci
262499ca880aSopenharmony_ci
262599ca880aSopenharmony_ci# func_execute_cmds commands fail_cmd
262699ca880aSopenharmony_ci# Execute tilde-delimited COMMANDS.
262799ca880aSopenharmony_ci# If FAIL_CMD is given, eval that upon failure.
262899ca880aSopenharmony_ci# FAIL_CMD may read-access the current command in variable CMD!
262999ca880aSopenharmony_cifunc_execute_cmds ()
263099ca880aSopenharmony_ci{
263199ca880aSopenharmony_ci    $debug_cmd
263299ca880aSopenharmony_ci
263399ca880aSopenharmony_ci    save_ifs=$IFS; IFS='~'
263499ca880aSopenharmony_ci    for cmd in $1; do
263599ca880aSopenharmony_ci      IFS=$sp$nl
263699ca880aSopenharmony_ci      eval cmd=\"$cmd\"
263799ca880aSopenharmony_ci      IFS=$save_ifs
263899ca880aSopenharmony_ci      func_show_eval "$cmd" "${2-:}"
263999ca880aSopenharmony_ci    done
264099ca880aSopenharmony_ci    IFS=$save_ifs
264199ca880aSopenharmony_ci}
264299ca880aSopenharmony_ci
264399ca880aSopenharmony_ci
264499ca880aSopenharmony_ci# func_source file
264599ca880aSopenharmony_ci# Source FILE, adding directory component if necessary.
264699ca880aSopenharmony_ci# Note that it is not necessary on cygwin/mingw to append a dot to
264799ca880aSopenharmony_ci# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
264899ca880aSopenharmony_ci# behavior happens only for exec(3), not for open(2)!  Also, sourcing
264999ca880aSopenharmony_ci# 'FILE.' does not work on cygwin managed mounts.
265099ca880aSopenharmony_cifunc_source ()
265199ca880aSopenharmony_ci{
265299ca880aSopenharmony_ci    $debug_cmd
265399ca880aSopenharmony_ci
265499ca880aSopenharmony_ci    case $1 in
265599ca880aSopenharmony_ci    */* | *\\*)	. "$1" ;;
265699ca880aSopenharmony_ci    *)		. "./$1" ;;
265799ca880aSopenharmony_ci    esac
265899ca880aSopenharmony_ci}
265999ca880aSopenharmony_ci
266099ca880aSopenharmony_ci
266199ca880aSopenharmony_ci# func_resolve_sysroot PATH
266299ca880aSopenharmony_ci# Replace a leading = in PATH with a sysroot.  Store the result into
266399ca880aSopenharmony_ci# func_resolve_sysroot_result
266499ca880aSopenharmony_cifunc_resolve_sysroot ()
266599ca880aSopenharmony_ci{
266699ca880aSopenharmony_ci  func_resolve_sysroot_result=$1
266799ca880aSopenharmony_ci  case $func_resolve_sysroot_result in
266899ca880aSopenharmony_ci  =*)
266999ca880aSopenharmony_ci    func_stripname '=' '' "$func_resolve_sysroot_result"
267099ca880aSopenharmony_ci    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
267199ca880aSopenharmony_ci    ;;
267299ca880aSopenharmony_ci  esac
267399ca880aSopenharmony_ci}
267499ca880aSopenharmony_ci
267599ca880aSopenharmony_ci# func_replace_sysroot PATH
267699ca880aSopenharmony_ci# If PATH begins with the sysroot, replace it with = and
267799ca880aSopenharmony_ci# store the result into func_replace_sysroot_result.
267899ca880aSopenharmony_cifunc_replace_sysroot ()
267999ca880aSopenharmony_ci{
268099ca880aSopenharmony_ci  case $lt_sysroot:$1 in
268199ca880aSopenharmony_ci  ?*:"$lt_sysroot"*)
268299ca880aSopenharmony_ci    func_stripname "$lt_sysroot" '' "$1"
268399ca880aSopenharmony_ci    func_replace_sysroot_result='='$func_stripname_result
268499ca880aSopenharmony_ci    ;;
268599ca880aSopenharmony_ci  *)
268699ca880aSopenharmony_ci    # Including no sysroot.
268799ca880aSopenharmony_ci    func_replace_sysroot_result=$1
268899ca880aSopenharmony_ci    ;;
268999ca880aSopenharmony_ci  esac
269099ca880aSopenharmony_ci}
269199ca880aSopenharmony_ci
269299ca880aSopenharmony_ci# func_infer_tag arg
269399ca880aSopenharmony_ci# Infer tagged configuration to use if any are available and
269499ca880aSopenharmony_ci# if one wasn't chosen via the "--tag" command line option.
269599ca880aSopenharmony_ci# Only attempt this if the compiler in the base compile
269699ca880aSopenharmony_ci# command doesn't match the default compiler.
269799ca880aSopenharmony_ci# arg is usually of the form 'gcc ...'
269899ca880aSopenharmony_cifunc_infer_tag ()
269999ca880aSopenharmony_ci{
270099ca880aSopenharmony_ci    $debug_cmd
270199ca880aSopenharmony_ci
270299ca880aSopenharmony_ci    if test -n "$available_tags" && test -z "$tagname"; then
270399ca880aSopenharmony_ci      CC_quoted=
270499ca880aSopenharmony_ci      for arg in $CC; do
270599ca880aSopenharmony_ci	func_append_quoted CC_quoted "$arg"
270699ca880aSopenharmony_ci      done
270799ca880aSopenharmony_ci      CC_expanded=`func_echo_all $CC`
270899ca880aSopenharmony_ci      CC_quoted_expanded=`func_echo_all $CC_quoted`
270999ca880aSopenharmony_ci      case $@ in
271099ca880aSopenharmony_ci      # Blanks in the command may have been stripped by the calling shell,
271199ca880aSopenharmony_ci      # but not from the CC environment variable when configure was run.
271299ca880aSopenharmony_ci      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
271399ca880aSopenharmony_ci      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
271499ca880aSopenharmony_ci      # Blanks at the start of $base_compile will cause this to fail
271599ca880aSopenharmony_ci      # if we don't check for them as well.
271699ca880aSopenharmony_ci      *)
271799ca880aSopenharmony_ci	for z in $available_tags; do
271899ca880aSopenharmony_ci	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
271999ca880aSopenharmony_ci	    # Evaluate the configuration.
272099ca880aSopenharmony_ci	    eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
272199ca880aSopenharmony_ci	    CC_quoted=
272299ca880aSopenharmony_ci	    for arg in $CC; do
272399ca880aSopenharmony_ci	      # Double-quote args containing other shell metacharacters.
272499ca880aSopenharmony_ci	      func_append_quoted CC_quoted "$arg"
272599ca880aSopenharmony_ci	    done
272699ca880aSopenharmony_ci	    CC_expanded=`func_echo_all $CC`
272799ca880aSopenharmony_ci	    CC_quoted_expanded=`func_echo_all $CC_quoted`
272899ca880aSopenharmony_ci	    case "$@ " in
272999ca880aSopenharmony_ci	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
273099ca880aSopenharmony_ci	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
273199ca880aSopenharmony_ci	      # The compiler in the base compile command matches
273299ca880aSopenharmony_ci	      # the one in the tagged configuration.
273399ca880aSopenharmony_ci	      # Assume this is the tagged configuration we want.
273499ca880aSopenharmony_ci	      tagname=$z
273599ca880aSopenharmony_ci	      break
273699ca880aSopenharmony_ci	      ;;
273799ca880aSopenharmony_ci	    esac
273899ca880aSopenharmony_ci	  fi
273999ca880aSopenharmony_ci	done
274099ca880aSopenharmony_ci	# If $tagname still isn't set, then no tagged configuration
274199ca880aSopenharmony_ci	# was found and let the user know that the "--tag" command
274299ca880aSopenharmony_ci	# line option must be used.
274399ca880aSopenharmony_ci	if test -z "$tagname"; then
274499ca880aSopenharmony_ci	  func_echo "unable to infer tagged configuration"
274599ca880aSopenharmony_ci	  func_fatal_error "specify a tag with '--tag'"
274699ca880aSopenharmony_ci#	else
274799ca880aSopenharmony_ci#	  func_verbose "using $tagname tagged configuration"
274899ca880aSopenharmony_ci	fi
274999ca880aSopenharmony_ci	;;
275099ca880aSopenharmony_ci      esac
275199ca880aSopenharmony_ci    fi
275299ca880aSopenharmony_ci}
275399ca880aSopenharmony_ci
275499ca880aSopenharmony_ci
275599ca880aSopenharmony_ci
275699ca880aSopenharmony_ci# func_write_libtool_object output_name pic_name nonpic_name
275799ca880aSopenharmony_ci# Create a libtool object file (analogous to a ".la" file),
275899ca880aSopenharmony_ci# but don't create it if we're doing a dry run.
275999ca880aSopenharmony_cifunc_write_libtool_object ()
276099ca880aSopenharmony_ci{
276199ca880aSopenharmony_ci    write_libobj=$1
276299ca880aSopenharmony_ci    if test yes = "$build_libtool_libs"; then
276399ca880aSopenharmony_ci      write_lobj=\'$2\'
276499ca880aSopenharmony_ci    else
276599ca880aSopenharmony_ci      write_lobj=none
276699ca880aSopenharmony_ci    fi
276799ca880aSopenharmony_ci
276899ca880aSopenharmony_ci    if test yes = "$build_old_libs"; then
276999ca880aSopenharmony_ci      write_oldobj=\'$3\'
277099ca880aSopenharmony_ci    else
277199ca880aSopenharmony_ci      write_oldobj=none
277299ca880aSopenharmony_ci    fi
277399ca880aSopenharmony_ci
277499ca880aSopenharmony_ci    $opt_dry_run || {
277599ca880aSopenharmony_ci      cat >${write_libobj}T <<EOF
277699ca880aSopenharmony_ci# $write_libobj - a libtool object file
277799ca880aSopenharmony_ci# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
277899ca880aSopenharmony_ci#
277999ca880aSopenharmony_ci# Please DO NOT delete this file!
278099ca880aSopenharmony_ci# It is necessary for linking the library.
278199ca880aSopenharmony_ci
278299ca880aSopenharmony_ci# Name of the PIC object.
278399ca880aSopenharmony_cipic_object=$write_lobj
278499ca880aSopenharmony_ci
278599ca880aSopenharmony_ci# Name of the non-PIC object
278699ca880aSopenharmony_cinon_pic_object=$write_oldobj
278799ca880aSopenharmony_ci
278899ca880aSopenharmony_ciEOF
278999ca880aSopenharmony_ci      $MV "${write_libobj}T" "$write_libobj"
279099ca880aSopenharmony_ci    }
279199ca880aSopenharmony_ci}
279299ca880aSopenharmony_ci
279399ca880aSopenharmony_ci
279499ca880aSopenharmony_ci##################################################
279599ca880aSopenharmony_ci# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
279699ca880aSopenharmony_ci##################################################
279799ca880aSopenharmony_ci
279899ca880aSopenharmony_ci# func_convert_core_file_wine_to_w32 ARG
279999ca880aSopenharmony_ci# Helper function used by file name conversion functions when $build is *nix,
280099ca880aSopenharmony_ci# and $host is mingw, cygwin, or some other w32 environment. Relies on a
280199ca880aSopenharmony_ci# correctly configured wine environment available, with the winepath program
280299ca880aSopenharmony_ci# in $build's $PATH.
280399ca880aSopenharmony_ci#
280499ca880aSopenharmony_ci# ARG is the $build file name to be converted to w32 format.
280599ca880aSopenharmony_ci# Result is available in $func_convert_core_file_wine_to_w32_result, and will
280699ca880aSopenharmony_ci# be empty on error (or when ARG is empty)
280799ca880aSopenharmony_cifunc_convert_core_file_wine_to_w32 ()
280899ca880aSopenharmony_ci{
280999ca880aSopenharmony_ci  $debug_cmd
281099ca880aSopenharmony_ci
281199ca880aSopenharmony_ci  func_convert_core_file_wine_to_w32_result=$1
281299ca880aSopenharmony_ci  if test -n "$1"; then
281399ca880aSopenharmony_ci    # Unfortunately, winepath does not exit with a non-zero error code, so we
281499ca880aSopenharmony_ci    # are forced to check the contents of stdout. On the other hand, if the
281599ca880aSopenharmony_ci    # command is not found, the shell will set an exit code of 127 and print
281699ca880aSopenharmony_ci    # *an error message* to stdout. So we must check for both error code of
281799ca880aSopenharmony_ci    # zero AND non-empty stdout, which explains the odd construction:
281899ca880aSopenharmony_ci    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
281999ca880aSopenharmony_ci    if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then
282099ca880aSopenharmony_ci      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
282199ca880aSopenharmony_ci        $SED -e "$sed_naive_backslashify"`
282299ca880aSopenharmony_ci    else
282399ca880aSopenharmony_ci      func_convert_core_file_wine_to_w32_result=
282499ca880aSopenharmony_ci    fi
282599ca880aSopenharmony_ci  fi
282699ca880aSopenharmony_ci}
282799ca880aSopenharmony_ci# end: func_convert_core_file_wine_to_w32
282899ca880aSopenharmony_ci
282999ca880aSopenharmony_ci
283099ca880aSopenharmony_ci# func_convert_core_path_wine_to_w32 ARG
283199ca880aSopenharmony_ci# Helper function used by path conversion functions when $build is *nix, and
283299ca880aSopenharmony_ci# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
283399ca880aSopenharmony_ci# configured wine environment available, with the winepath program in $build's
283499ca880aSopenharmony_ci# $PATH. Assumes ARG has no leading or trailing path separator characters.
283599ca880aSopenharmony_ci#
283699ca880aSopenharmony_ci# ARG is path to be converted from $build format to win32.
283799ca880aSopenharmony_ci# Result is available in $func_convert_core_path_wine_to_w32_result.
283899ca880aSopenharmony_ci# Unconvertible file (directory) names in ARG are skipped; if no directory names
283999ca880aSopenharmony_ci# are convertible, then the result may be empty.
284099ca880aSopenharmony_cifunc_convert_core_path_wine_to_w32 ()
284199ca880aSopenharmony_ci{
284299ca880aSopenharmony_ci  $debug_cmd
284399ca880aSopenharmony_ci
284499ca880aSopenharmony_ci  # unfortunately, winepath doesn't convert paths, only file names
284599ca880aSopenharmony_ci  func_convert_core_path_wine_to_w32_result=
284699ca880aSopenharmony_ci  if test -n "$1"; then
284799ca880aSopenharmony_ci    oldIFS=$IFS
284899ca880aSopenharmony_ci    IFS=:
284999ca880aSopenharmony_ci    for func_convert_core_path_wine_to_w32_f in $1; do
285099ca880aSopenharmony_ci      IFS=$oldIFS
285199ca880aSopenharmony_ci      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
285299ca880aSopenharmony_ci      if test -n "$func_convert_core_file_wine_to_w32_result"; then
285399ca880aSopenharmony_ci        if test -z "$func_convert_core_path_wine_to_w32_result"; then
285499ca880aSopenharmony_ci          func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result
285599ca880aSopenharmony_ci        else
285699ca880aSopenharmony_ci          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
285799ca880aSopenharmony_ci        fi
285899ca880aSopenharmony_ci      fi
285999ca880aSopenharmony_ci    done
286099ca880aSopenharmony_ci    IFS=$oldIFS
286199ca880aSopenharmony_ci  fi
286299ca880aSopenharmony_ci}
286399ca880aSopenharmony_ci# end: func_convert_core_path_wine_to_w32
286499ca880aSopenharmony_ci
286599ca880aSopenharmony_ci
286699ca880aSopenharmony_ci# func_cygpath ARGS...
286799ca880aSopenharmony_ci# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
286899ca880aSopenharmony_ci# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
286999ca880aSopenharmony_ci# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
287099ca880aSopenharmony_ci# (2), returns the Cygwin file name or path in func_cygpath_result (input
287199ca880aSopenharmony_ci# file name or path is assumed to be in w32 format, as previously converted
287299ca880aSopenharmony_ci# from $build's *nix or MSYS format). In case (3), returns the w32 file name
287399ca880aSopenharmony_ci# or path in func_cygpath_result (input file name or path is assumed to be in
287499ca880aSopenharmony_ci# Cygwin format). Returns an empty string on error.
287599ca880aSopenharmony_ci#
287699ca880aSopenharmony_ci# ARGS are passed to cygpath, with the last one being the file name or path to
287799ca880aSopenharmony_ci# be converted.
287899ca880aSopenharmony_ci#
287999ca880aSopenharmony_ci# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
288099ca880aSopenharmony_ci# environment variable; do not put it in $PATH.
288199ca880aSopenharmony_cifunc_cygpath ()
288299ca880aSopenharmony_ci{
288399ca880aSopenharmony_ci  $debug_cmd
288499ca880aSopenharmony_ci
288599ca880aSopenharmony_ci  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
288699ca880aSopenharmony_ci    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
288799ca880aSopenharmony_ci    if test "$?" -ne 0; then
288899ca880aSopenharmony_ci      # on failure, ensure result is empty
288999ca880aSopenharmony_ci      func_cygpath_result=
289099ca880aSopenharmony_ci    fi
289199ca880aSopenharmony_ci  else
289299ca880aSopenharmony_ci    func_cygpath_result=
289399ca880aSopenharmony_ci    func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'"
289499ca880aSopenharmony_ci  fi
289599ca880aSopenharmony_ci}
289699ca880aSopenharmony_ci#end: func_cygpath
289799ca880aSopenharmony_ci
289899ca880aSopenharmony_ci
289999ca880aSopenharmony_ci# func_convert_core_msys_to_w32 ARG
290099ca880aSopenharmony_ci# Convert file name or path ARG from MSYS format to w32 format.  Return
290199ca880aSopenharmony_ci# result in func_convert_core_msys_to_w32_result.
290299ca880aSopenharmony_cifunc_convert_core_msys_to_w32 ()
290399ca880aSopenharmony_ci{
290499ca880aSopenharmony_ci  $debug_cmd
290599ca880aSopenharmony_ci
290699ca880aSopenharmony_ci  # awkward: cmd appends spaces to result
290799ca880aSopenharmony_ci  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
290899ca880aSopenharmony_ci    $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"`
290999ca880aSopenharmony_ci}
291099ca880aSopenharmony_ci#end: func_convert_core_msys_to_w32
291199ca880aSopenharmony_ci
291299ca880aSopenharmony_ci
291399ca880aSopenharmony_ci# func_convert_file_check ARG1 ARG2
291499ca880aSopenharmony_ci# Verify that ARG1 (a file name in $build format) was converted to $host
291599ca880aSopenharmony_ci# format in ARG2. Otherwise, emit an error message, but continue (resetting
291699ca880aSopenharmony_ci# func_to_host_file_result to ARG1).
291799ca880aSopenharmony_cifunc_convert_file_check ()
291899ca880aSopenharmony_ci{
291999ca880aSopenharmony_ci  $debug_cmd
292099ca880aSopenharmony_ci
292199ca880aSopenharmony_ci  if test -z "$2" && test -n "$1"; then
292299ca880aSopenharmony_ci    func_error "Could not determine host file name corresponding to"
292399ca880aSopenharmony_ci    func_error "  '$1'"
292499ca880aSopenharmony_ci    func_error "Continuing, but uninstalled executables may not work."
292599ca880aSopenharmony_ci    # Fallback:
292699ca880aSopenharmony_ci    func_to_host_file_result=$1
292799ca880aSopenharmony_ci  fi
292899ca880aSopenharmony_ci}
292999ca880aSopenharmony_ci# end func_convert_file_check
293099ca880aSopenharmony_ci
293199ca880aSopenharmony_ci
293299ca880aSopenharmony_ci# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
293399ca880aSopenharmony_ci# Verify that FROM_PATH (a path in $build format) was converted to $host
293499ca880aSopenharmony_ci# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
293599ca880aSopenharmony_ci# func_to_host_file_result to a simplistic fallback value (see below).
293699ca880aSopenharmony_cifunc_convert_path_check ()
293799ca880aSopenharmony_ci{
293899ca880aSopenharmony_ci  $debug_cmd
293999ca880aSopenharmony_ci
294099ca880aSopenharmony_ci  if test -z "$4" && test -n "$3"; then
294199ca880aSopenharmony_ci    func_error "Could not determine the host path corresponding to"
294299ca880aSopenharmony_ci    func_error "  '$3'"
294399ca880aSopenharmony_ci    func_error "Continuing, but uninstalled executables may not work."
294499ca880aSopenharmony_ci    # Fallback.  This is a deliberately simplistic "conversion" and
294599ca880aSopenharmony_ci    # should not be "improved".  See libtool.info.
294699ca880aSopenharmony_ci    if test "x$1" != "x$2"; then
294799ca880aSopenharmony_ci      lt_replace_pathsep_chars="s|$1|$2|g"
294899ca880aSopenharmony_ci      func_to_host_path_result=`echo "$3" |
294999ca880aSopenharmony_ci        $SED -e "$lt_replace_pathsep_chars"`
295099ca880aSopenharmony_ci    else
295199ca880aSopenharmony_ci      func_to_host_path_result=$3
295299ca880aSopenharmony_ci    fi
295399ca880aSopenharmony_ci  fi
295499ca880aSopenharmony_ci}
295599ca880aSopenharmony_ci# end func_convert_path_check
295699ca880aSopenharmony_ci
295799ca880aSopenharmony_ci
295899ca880aSopenharmony_ci# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
295999ca880aSopenharmony_ci# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
296099ca880aSopenharmony_ci# and appending REPL if ORIG matches BACKPAT.
296199ca880aSopenharmony_cifunc_convert_path_front_back_pathsep ()
296299ca880aSopenharmony_ci{
296399ca880aSopenharmony_ci  $debug_cmd
296499ca880aSopenharmony_ci
296599ca880aSopenharmony_ci  case $4 in
296699ca880aSopenharmony_ci  $1 ) func_to_host_path_result=$3$func_to_host_path_result
296799ca880aSopenharmony_ci    ;;
296899ca880aSopenharmony_ci  esac
296999ca880aSopenharmony_ci  case $4 in
297099ca880aSopenharmony_ci  $2 ) func_append func_to_host_path_result "$3"
297199ca880aSopenharmony_ci    ;;
297299ca880aSopenharmony_ci  esac
297399ca880aSopenharmony_ci}
297499ca880aSopenharmony_ci# end func_convert_path_front_back_pathsep
297599ca880aSopenharmony_ci
297699ca880aSopenharmony_ci
297799ca880aSopenharmony_ci##################################################
297899ca880aSopenharmony_ci# $build to $host FILE NAME CONVERSION FUNCTIONS #
297999ca880aSopenharmony_ci##################################################
298099ca880aSopenharmony_ci# invoked via '$to_host_file_cmd ARG'
298199ca880aSopenharmony_ci#
298299ca880aSopenharmony_ci# In each case, ARG is the path to be converted from $build to $host format.
298399ca880aSopenharmony_ci# Result will be available in $func_to_host_file_result.
298499ca880aSopenharmony_ci
298599ca880aSopenharmony_ci
298699ca880aSopenharmony_ci# func_to_host_file ARG
298799ca880aSopenharmony_ci# Converts the file name ARG from $build format to $host format. Return result
298899ca880aSopenharmony_ci# in func_to_host_file_result.
298999ca880aSopenharmony_cifunc_to_host_file ()
299099ca880aSopenharmony_ci{
299199ca880aSopenharmony_ci  $debug_cmd
299299ca880aSopenharmony_ci
299399ca880aSopenharmony_ci  $to_host_file_cmd "$1"
299499ca880aSopenharmony_ci}
299599ca880aSopenharmony_ci# end func_to_host_file
299699ca880aSopenharmony_ci
299799ca880aSopenharmony_ci
299899ca880aSopenharmony_ci# func_to_tool_file ARG LAZY
299999ca880aSopenharmony_ci# converts the file name ARG from $build format to toolchain format. Return
300099ca880aSopenharmony_ci# result in func_to_tool_file_result.  If the conversion in use is listed
300199ca880aSopenharmony_ci# in (the comma separated) LAZY, no conversion takes place.
300299ca880aSopenharmony_cifunc_to_tool_file ()
300399ca880aSopenharmony_ci{
300499ca880aSopenharmony_ci  $debug_cmd
300599ca880aSopenharmony_ci
300699ca880aSopenharmony_ci  case ,$2, in
300799ca880aSopenharmony_ci    *,"$to_tool_file_cmd",*)
300899ca880aSopenharmony_ci      func_to_tool_file_result=$1
300999ca880aSopenharmony_ci      ;;
301099ca880aSopenharmony_ci    *)
301199ca880aSopenharmony_ci      $to_tool_file_cmd "$1"
301299ca880aSopenharmony_ci      func_to_tool_file_result=$func_to_host_file_result
301399ca880aSopenharmony_ci      ;;
301499ca880aSopenharmony_ci  esac
301599ca880aSopenharmony_ci}
301699ca880aSopenharmony_ci# end func_to_tool_file
301799ca880aSopenharmony_ci
301899ca880aSopenharmony_ci
301999ca880aSopenharmony_ci# func_convert_file_noop ARG
302099ca880aSopenharmony_ci# Copy ARG to func_to_host_file_result.
302199ca880aSopenharmony_cifunc_convert_file_noop ()
302299ca880aSopenharmony_ci{
302399ca880aSopenharmony_ci  func_to_host_file_result=$1
302499ca880aSopenharmony_ci}
302599ca880aSopenharmony_ci# end func_convert_file_noop
302699ca880aSopenharmony_ci
302799ca880aSopenharmony_ci
302899ca880aSopenharmony_ci# func_convert_file_msys_to_w32 ARG
302999ca880aSopenharmony_ci# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
303099ca880aSopenharmony_ci# conversion to w32 is not available inside the cwrapper.  Returns result in
303199ca880aSopenharmony_ci# func_to_host_file_result.
303299ca880aSopenharmony_cifunc_convert_file_msys_to_w32 ()
303399ca880aSopenharmony_ci{
303499ca880aSopenharmony_ci  $debug_cmd
303599ca880aSopenharmony_ci
303699ca880aSopenharmony_ci  func_to_host_file_result=$1
303799ca880aSopenharmony_ci  if test -n "$1"; then
303899ca880aSopenharmony_ci    func_convert_core_msys_to_w32 "$1"
303999ca880aSopenharmony_ci    func_to_host_file_result=$func_convert_core_msys_to_w32_result
304099ca880aSopenharmony_ci  fi
304199ca880aSopenharmony_ci  func_convert_file_check "$1" "$func_to_host_file_result"
304299ca880aSopenharmony_ci}
304399ca880aSopenharmony_ci# end func_convert_file_msys_to_w32
304499ca880aSopenharmony_ci
304599ca880aSopenharmony_ci
304699ca880aSopenharmony_ci# func_convert_file_cygwin_to_w32 ARG
304799ca880aSopenharmony_ci# Convert file name ARG from Cygwin to w32 format.  Returns result in
304899ca880aSopenharmony_ci# func_to_host_file_result.
304999ca880aSopenharmony_cifunc_convert_file_cygwin_to_w32 ()
305099ca880aSopenharmony_ci{
305199ca880aSopenharmony_ci  $debug_cmd
305299ca880aSopenharmony_ci
305399ca880aSopenharmony_ci  func_to_host_file_result=$1
305499ca880aSopenharmony_ci  if test -n "$1"; then
305599ca880aSopenharmony_ci    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
305699ca880aSopenharmony_ci    # LT_CYGPATH in this case.
305799ca880aSopenharmony_ci    func_to_host_file_result=`cygpath -m "$1"`
305899ca880aSopenharmony_ci  fi
305999ca880aSopenharmony_ci  func_convert_file_check "$1" "$func_to_host_file_result"
306099ca880aSopenharmony_ci}
306199ca880aSopenharmony_ci# end func_convert_file_cygwin_to_w32
306299ca880aSopenharmony_ci
306399ca880aSopenharmony_ci
306499ca880aSopenharmony_ci# func_convert_file_nix_to_w32 ARG
306599ca880aSopenharmony_ci# Convert file name ARG from *nix to w32 format.  Requires a wine environment
306699ca880aSopenharmony_ci# and a working winepath. Returns result in func_to_host_file_result.
306799ca880aSopenharmony_cifunc_convert_file_nix_to_w32 ()
306899ca880aSopenharmony_ci{
306999ca880aSopenharmony_ci  $debug_cmd
307099ca880aSopenharmony_ci
307199ca880aSopenharmony_ci  func_to_host_file_result=$1
307299ca880aSopenharmony_ci  if test -n "$1"; then
307399ca880aSopenharmony_ci    func_convert_core_file_wine_to_w32 "$1"
307499ca880aSopenharmony_ci    func_to_host_file_result=$func_convert_core_file_wine_to_w32_result
307599ca880aSopenharmony_ci  fi
307699ca880aSopenharmony_ci  func_convert_file_check "$1" "$func_to_host_file_result"
307799ca880aSopenharmony_ci}
307899ca880aSopenharmony_ci# end func_convert_file_nix_to_w32
307999ca880aSopenharmony_ci
308099ca880aSopenharmony_ci
308199ca880aSopenharmony_ci# func_convert_file_msys_to_cygwin ARG
308299ca880aSopenharmony_ci# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
308399ca880aSopenharmony_ci# Returns result in func_to_host_file_result.
308499ca880aSopenharmony_cifunc_convert_file_msys_to_cygwin ()
308599ca880aSopenharmony_ci{
308699ca880aSopenharmony_ci  $debug_cmd
308799ca880aSopenharmony_ci
308899ca880aSopenharmony_ci  func_to_host_file_result=$1
308999ca880aSopenharmony_ci  if test -n "$1"; then
309099ca880aSopenharmony_ci    func_convert_core_msys_to_w32 "$1"
309199ca880aSopenharmony_ci    func_cygpath -u "$func_convert_core_msys_to_w32_result"
309299ca880aSopenharmony_ci    func_to_host_file_result=$func_cygpath_result
309399ca880aSopenharmony_ci  fi
309499ca880aSopenharmony_ci  func_convert_file_check "$1" "$func_to_host_file_result"
309599ca880aSopenharmony_ci}
309699ca880aSopenharmony_ci# end func_convert_file_msys_to_cygwin
309799ca880aSopenharmony_ci
309899ca880aSopenharmony_ci
309999ca880aSopenharmony_ci# func_convert_file_nix_to_cygwin ARG
310099ca880aSopenharmony_ci# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
310199ca880aSopenharmony_ci# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
310299ca880aSopenharmony_ci# in func_to_host_file_result.
310399ca880aSopenharmony_cifunc_convert_file_nix_to_cygwin ()
310499ca880aSopenharmony_ci{
310599ca880aSopenharmony_ci  $debug_cmd
310699ca880aSopenharmony_ci
310799ca880aSopenharmony_ci  func_to_host_file_result=$1
310899ca880aSopenharmony_ci  if test -n "$1"; then
310999ca880aSopenharmony_ci    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
311099ca880aSopenharmony_ci    func_convert_core_file_wine_to_w32 "$1"
311199ca880aSopenharmony_ci    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
311299ca880aSopenharmony_ci    func_to_host_file_result=$func_cygpath_result
311399ca880aSopenharmony_ci  fi
311499ca880aSopenharmony_ci  func_convert_file_check "$1" "$func_to_host_file_result"
311599ca880aSopenharmony_ci}
311699ca880aSopenharmony_ci# end func_convert_file_nix_to_cygwin
311799ca880aSopenharmony_ci
311899ca880aSopenharmony_ci
311999ca880aSopenharmony_ci#############################################
312099ca880aSopenharmony_ci# $build to $host PATH CONVERSION FUNCTIONS #
312199ca880aSopenharmony_ci#############################################
312299ca880aSopenharmony_ci# invoked via '$to_host_path_cmd ARG'
312399ca880aSopenharmony_ci#
312499ca880aSopenharmony_ci# In each case, ARG is the path to be converted from $build to $host format.
312599ca880aSopenharmony_ci# The result will be available in $func_to_host_path_result.
312699ca880aSopenharmony_ci#
312799ca880aSopenharmony_ci# Path separators are also converted from $build format to $host format.  If
312899ca880aSopenharmony_ci# ARG begins or ends with a path separator character, it is preserved (but
312999ca880aSopenharmony_ci# converted to $host format) on output.
313099ca880aSopenharmony_ci#
313199ca880aSopenharmony_ci# All path conversion functions are named using the following convention:
313299ca880aSopenharmony_ci#   file name conversion function    : func_convert_file_X_to_Y ()
313399ca880aSopenharmony_ci#   path conversion function         : func_convert_path_X_to_Y ()
313499ca880aSopenharmony_ci# where, for any given $build/$host combination the 'X_to_Y' value is the
313599ca880aSopenharmony_ci# same.  If conversion functions are added for new $build/$host combinations,
313699ca880aSopenharmony_ci# the two new functions must follow this pattern, or func_init_to_host_path_cmd
313799ca880aSopenharmony_ci# will break.
313899ca880aSopenharmony_ci
313999ca880aSopenharmony_ci
314099ca880aSopenharmony_ci# func_init_to_host_path_cmd
314199ca880aSopenharmony_ci# Ensures that function "pointer" variable $to_host_path_cmd is set to the
314299ca880aSopenharmony_ci# appropriate value, based on the value of $to_host_file_cmd.
314399ca880aSopenharmony_cito_host_path_cmd=
314499ca880aSopenharmony_cifunc_init_to_host_path_cmd ()
314599ca880aSopenharmony_ci{
314699ca880aSopenharmony_ci  $debug_cmd
314799ca880aSopenharmony_ci
314899ca880aSopenharmony_ci  if test -z "$to_host_path_cmd"; then
314999ca880aSopenharmony_ci    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
315099ca880aSopenharmony_ci    to_host_path_cmd=func_convert_path_$func_stripname_result
315199ca880aSopenharmony_ci  fi
315299ca880aSopenharmony_ci}
315399ca880aSopenharmony_ci
315499ca880aSopenharmony_ci
315599ca880aSopenharmony_ci# func_to_host_path ARG
315699ca880aSopenharmony_ci# Converts the path ARG from $build format to $host format. Return result
315799ca880aSopenharmony_ci# in func_to_host_path_result.
315899ca880aSopenharmony_cifunc_to_host_path ()
315999ca880aSopenharmony_ci{
316099ca880aSopenharmony_ci  $debug_cmd
316199ca880aSopenharmony_ci
316299ca880aSopenharmony_ci  func_init_to_host_path_cmd
316399ca880aSopenharmony_ci  $to_host_path_cmd "$1"
316499ca880aSopenharmony_ci}
316599ca880aSopenharmony_ci# end func_to_host_path
316699ca880aSopenharmony_ci
316799ca880aSopenharmony_ci
316899ca880aSopenharmony_ci# func_convert_path_noop ARG
316999ca880aSopenharmony_ci# Copy ARG to func_to_host_path_result.
317099ca880aSopenharmony_cifunc_convert_path_noop ()
317199ca880aSopenharmony_ci{
317299ca880aSopenharmony_ci  func_to_host_path_result=$1
317399ca880aSopenharmony_ci}
317499ca880aSopenharmony_ci# end func_convert_path_noop
317599ca880aSopenharmony_ci
317699ca880aSopenharmony_ci
317799ca880aSopenharmony_ci# func_convert_path_msys_to_w32 ARG
317899ca880aSopenharmony_ci# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
317999ca880aSopenharmony_ci# conversion to w32 is not available inside the cwrapper.  Returns result in
318099ca880aSopenharmony_ci# func_to_host_path_result.
318199ca880aSopenharmony_cifunc_convert_path_msys_to_w32 ()
318299ca880aSopenharmony_ci{
318399ca880aSopenharmony_ci  $debug_cmd
318499ca880aSopenharmony_ci
318599ca880aSopenharmony_ci  func_to_host_path_result=$1
318699ca880aSopenharmony_ci  if test -n "$1"; then
318799ca880aSopenharmony_ci    # Remove leading and trailing path separator characters from ARG.  MSYS
318899ca880aSopenharmony_ci    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
318999ca880aSopenharmony_ci    # and winepath ignores them completely.
319099ca880aSopenharmony_ci    func_stripname : : "$1"
319199ca880aSopenharmony_ci    func_to_host_path_tmp1=$func_stripname_result
319299ca880aSopenharmony_ci    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
319399ca880aSopenharmony_ci    func_to_host_path_result=$func_convert_core_msys_to_w32_result
319499ca880aSopenharmony_ci    func_convert_path_check : ";" \
319599ca880aSopenharmony_ci      "$func_to_host_path_tmp1" "$func_to_host_path_result"
319699ca880aSopenharmony_ci    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
319799ca880aSopenharmony_ci  fi
319899ca880aSopenharmony_ci}
319999ca880aSopenharmony_ci# end func_convert_path_msys_to_w32
320099ca880aSopenharmony_ci
320199ca880aSopenharmony_ci
320299ca880aSopenharmony_ci# func_convert_path_cygwin_to_w32 ARG
320399ca880aSopenharmony_ci# Convert path ARG from Cygwin to w32 format.  Returns result in
320499ca880aSopenharmony_ci# func_to_host_file_result.
320599ca880aSopenharmony_cifunc_convert_path_cygwin_to_w32 ()
320699ca880aSopenharmony_ci{
320799ca880aSopenharmony_ci  $debug_cmd
320899ca880aSopenharmony_ci
320999ca880aSopenharmony_ci  func_to_host_path_result=$1
321099ca880aSopenharmony_ci  if test -n "$1"; then
321199ca880aSopenharmony_ci    # See func_convert_path_msys_to_w32:
321299ca880aSopenharmony_ci    func_stripname : : "$1"
321399ca880aSopenharmony_ci    func_to_host_path_tmp1=$func_stripname_result
321499ca880aSopenharmony_ci    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
321599ca880aSopenharmony_ci    func_convert_path_check : ";" \
321699ca880aSopenharmony_ci      "$func_to_host_path_tmp1" "$func_to_host_path_result"
321799ca880aSopenharmony_ci    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
321899ca880aSopenharmony_ci  fi
321999ca880aSopenharmony_ci}
322099ca880aSopenharmony_ci# end func_convert_path_cygwin_to_w32
322199ca880aSopenharmony_ci
322299ca880aSopenharmony_ci
322399ca880aSopenharmony_ci# func_convert_path_nix_to_w32 ARG
322499ca880aSopenharmony_ci# Convert path ARG from *nix to w32 format.  Requires a wine environment and
322599ca880aSopenharmony_ci# a working winepath.  Returns result in func_to_host_file_result.
322699ca880aSopenharmony_cifunc_convert_path_nix_to_w32 ()
322799ca880aSopenharmony_ci{
322899ca880aSopenharmony_ci  $debug_cmd
322999ca880aSopenharmony_ci
323099ca880aSopenharmony_ci  func_to_host_path_result=$1
323199ca880aSopenharmony_ci  if test -n "$1"; then
323299ca880aSopenharmony_ci    # See func_convert_path_msys_to_w32:
323399ca880aSopenharmony_ci    func_stripname : : "$1"
323499ca880aSopenharmony_ci    func_to_host_path_tmp1=$func_stripname_result
323599ca880aSopenharmony_ci    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
323699ca880aSopenharmony_ci    func_to_host_path_result=$func_convert_core_path_wine_to_w32_result
323799ca880aSopenharmony_ci    func_convert_path_check : ";" \
323899ca880aSopenharmony_ci      "$func_to_host_path_tmp1" "$func_to_host_path_result"
323999ca880aSopenharmony_ci    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
324099ca880aSopenharmony_ci  fi
324199ca880aSopenharmony_ci}
324299ca880aSopenharmony_ci# end func_convert_path_nix_to_w32
324399ca880aSopenharmony_ci
324499ca880aSopenharmony_ci
324599ca880aSopenharmony_ci# func_convert_path_msys_to_cygwin ARG
324699ca880aSopenharmony_ci# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
324799ca880aSopenharmony_ci# Returns result in func_to_host_file_result.
324899ca880aSopenharmony_cifunc_convert_path_msys_to_cygwin ()
324999ca880aSopenharmony_ci{
325099ca880aSopenharmony_ci  $debug_cmd
325199ca880aSopenharmony_ci
325299ca880aSopenharmony_ci  func_to_host_path_result=$1
325399ca880aSopenharmony_ci  if test -n "$1"; then
325499ca880aSopenharmony_ci    # See func_convert_path_msys_to_w32:
325599ca880aSopenharmony_ci    func_stripname : : "$1"
325699ca880aSopenharmony_ci    func_to_host_path_tmp1=$func_stripname_result
325799ca880aSopenharmony_ci    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
325899ca880aSopenharmony_ci    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
325999ca880aSopenharmony_ci    func_to_host_path_result=$func_cygpath_result
326099ca880aSopenharmony_ci    func_convert_path_check : : \
326199ca880aSopenharmony_ci      "$func_to_host_path_tmp1" "$func_to_host_path_result"
326299ca880aSopenharmony_ci    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
326399ca880aSopenharmony_ci  fi
326499ca880aSopenharmony_ci}
326599ca880aSopenharmony_ci# end func_convert_path_msys_to_cygwin
326699ca880aSopenharmony_ci
326799ca880aSopenharmony_ci
326899ca880aSopenharmony_ci# func_convert_path_nix_to_cygwin ARG
326999ca880aSopenharmony_ci# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
327099ca880aSopenharmony_ci# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
327199ca880aSopenharmony_ci# func_to_host_file_result.
327299ca880aSopenharmony_cifunc_convert_path_nix_to_cygwin ()
327399ca880aSopenharmony_ci{
327499ca880aSopenharmony_ci  $debug_cmd
327599ca880aSopenharmony_ci
327699ca880aSopenharmony_ci  func_to_host_path_result=$1
327799ca880aSopenharmony_ci  if test -n "$1"; then
327899ca880aSopenharmony_ci    # Remove leading and trailing path separator characters from
327999ca880aSopenharmony_ci    # ARG. msys behavior is inconsistent here, cygpath turns them
328099ca880aSopenharmony_ci    # into '.;' and ';.', and winepath ignores them completely.
328199ca880aSopenharmony_ci    func_stripname : : "$1"
328299ca880aSopenharmony_ci    func_to_host_path_tmp1=$func_stripname_result
328399ca880aSopenharmony_ci    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
328499ca880aSopenharmony_ci    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
328599ca880aSopenharmony_ci    func_to_host_path_result=$func_cygpath_result
328699ca880aSopenharmony_ci    func_convert_path_check : : \
328799ca880aSopenharmony_ci      "$func_to_host_path_tmp1" "$func_to_host_path_result"
328899ca880aSopenharmony_ci    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
328999ca880aSopenharmony_ci  fi
329099ca880aSopenharmony_ci}
329199ca880aSopenharmony_ci# end func_convert_path_nix_to_cygwin
329299ca880aSopenharmony_ci
329399ca880aSopenharmony_ci
329499ca880aSopenharmony_ci# func_dll_def_p FILE
329599ca880aSopenharmony_ci# True iff FILE is a Windows DLL '.def' file.
329699ca880aSopenharmony_ci# Keep in sync with _LT_DLL_DEF_P in libtool.m4
329799ca880aSopenharmony_cifunc_dll_def_p ()
329899ca880aSopenharmony_ci{
329999ca880aSopenharmony_ci  $debug_cmd
330099ca880aSopenharmony_ci
330199ca880aSopenharmony_ci  func_dll_def_p_tmp=`$SED -n \
330299ca880aSopenharmony_ci    -e 's/^[	 ]*//' \
330399ca880aSopenharmony_ci    -e '/^\(;.*\)*$/d' \
330499ca880aSopenharmony_ci    -e 's/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p' \
330599ca880aSopenharmony_ci    -e q \
330699ca880aSopenharmony_ci    "$1"`
330799ca880aSopenharmony_ci  test DEF = "$func_dll_def_p_tmp"
330899ca880aSopenharmony_ci}
330999ca880aSopenharmony_ci
331099ca880aSopenharmony_ci
331199ca880aSopenharmony_ci# func_mode_compile arg...
331299ca880aSopenharmony_cifunc_mode_compile ()
331399ca880aSopenharmony_ci{
331499ca880aSopenharmony_ci    $debug_cmd
331599ca880aSopenharmony_ci
331699ca880aSopenharmony_ci    # Get the compilation command and the source file.
331799ca880aSopenharmony_ci    base_compile=
331899ca880aSopenharmony_ci    srcfile=$nonopt  #  always keep a non-empty value in "srcfile"
331999ca880aSopenharmony_ci    suppress_opt=yes
332099ca880aSopenharmony_ci    suppress_output=
332199ca880aSopenharmony_ci    arg_mode=normal
332299ca880aSopenharmony_ci    libobj=
332399ca880aSopenharmony_ci    later=
332499ca880aSopenharmony_ci    pie_flag=
332599ca880aSopenharmony_ci
332699ca880aSopenharmony_ci    for arg
332799ca880aSopenharmony_ci    do
332899ca880aSopenharmony_ci      case $arg_mode in
332999ca880aSopenharmony_ci      arg  )
333099ca880aSopenharmony_ci	# do not "continue".  Instead, add this to base_compile
333199ca880aSopenharmony_ci	lastarg=$arg
333299ca880aSopenharmony_ci	arg_mode=normal
333399ca880aSopenharmony_ci	;;
333499ca880aSopenharmony_ci
333599ca880aSopenharmony_ci      target )
333699ca880aSopenharmony_ci	libobj=$arg
333799ca880aSopenharmony_ci	arg_mode=normal
333899ca880aSopenharmony_ci	continue
333999ca880aSopenharmony_ci	;;
334099ca880aSopenharmony_ci
334199ca880aSopenharmony_ci      normal )
334299ca880aSopenharmony_ci	# Accept any command-line options.
334399ca880aSopenharmony_ci	case $arg in
334499ca880aSopenharmony_ci	-o)
334599ca880aSopenharmony_ci	  test -n "$libobj" && \
334699ca880aSopenharmony_ci	    func_fatal_error "you cannot specify '-o' more than once"
334799ca880aSopenharmony_ci	  arg_mode=target
334899ca880aSopenharmony_ci	  continue
334999ca880aSopenharmony_ci	  ;;
335099ca880aSopenharmony_ci
335199ca880aSopenharmony_ci	-pie | -fpie | -fPIE)
335299ca880aSopenharmony_ci          func_append pie_flag " $arg"
335399ca880aSopenharmony_ci	  continue
335499ca880aSopenharmony_ci	  ;;
335599ca880aSopenharmony_ci
335699ca880aSopenharmony_ci	-shared | -static | -prefer-pic | -prefer-non-pic)
335799ca880aSopenharmony_ci	  func_append later " $arg"
335899ca880aSopenharmony_ci	  continue
335999ca880aSopenharmony_ci	  ;;
336099ca880aSopenharmony_ci
336199ca880aSopenharmony_ci	-no-suppress)
336299ca880aSopenharmony_ci	  suppress_opt=no
336399ca880aSopenharmony_ci	  continue
336499ca880aSopenharmony_ci	  ;;
336599ca880aSopenharmony_ci
336699ca880aSopenharmony_ci	-Xcompiler)
336799ca880aSopenharmony_ci	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
336899ca880aSopenharmony_ci	  continue      #  The current "srcfile" will either be retained or
336999ca880aSopenharmony_ci	  ;;            #  replaced later.  I would guess that would be a bug.
337099ca880aSopenharmony_ci
337199ca880aSopenharmony_ci	-Wc,*)
337299ca880aSopenharmony_ci	  func_stripname '-Wc,' '' "$arg"
337399ca880aSopenharmony_ci	  args=$func_stripname_result
337499ca880aSopenharmony_ci	  lastarg=
337599ca880aSopenharmony_ci	  save_ifs=$IFS; IFS=,
337699ca880aSopenharmony_ci	  for arg in $args; do
337799ca880aSopenharmony_ci	    IFS=$save_ifs
337899ca880aSopenharmony_ci	    func_append_quoted lastarg "$arg"
337999ca880aSopenharmony_ci	  done
338099ca880aSopenharmony_ci	  IFS=$save_ifs
338199ca880aSopenharmony_ci	  func_stripname ' ' '' "$lastarg"
338299ca880aSopenharmony_ci	  lastarg=$func_stripname_result
338399ca880aSopenharmony_ci
338499ca880aSopenharmony_ci	  # Add the arguments to base_compile.
338599ca880aSopenharmony_ci	  func_append base_compile " $lastarg"
338699ca880aSopenharmony_ci	  continue
338799ca880aSopenharmony_ci	  ;;
338899ca880aSopenharmony_ci
338999ca880aSopenharmony_ci	*)
339099ca880aSopenharmony_ci	  # Accept the current argument as the source file.
339199ca880aSopenharmony_ci	  # The previous "srcfile" becomes the current argument.
339299ca880aSopenharmony_ci	  #
339399ca880aSopenharmony_ci	  lastarg=$srcfile
339499ca880aSopenharmony_ci	  srcfile=$arg
339599ca880aSopenharmony_ci	  ;;
339699ca880aSopenharmony_ci	esac  #  case $arg
339799ca880aSopenharmony_ci	;;
339899ca880aSopenharmony_ci      esac    #  case $arg_mode
339999ca880aSopenharmony_ci
340099ca880aSopenharmony_ci      # Aesthetically quote the previous argument.
340199ca880aSopenharmony_ci      func_append_quoted base_compile "$lastarg"
340299ca880aSopenharmony_ci    done # for arg
340399ca880aSopenharmony_ci
340499ca880aSopenharmony_ci    case $arg_mode in
340599ca880aSopenharmony_ci    arg)
340699ca880aSopenharmony_ci      func_fatal_error "you must specify an argument for -Xcompile"
340799ca880aSopenharmony_ci      ;;
340899ca880aSopenharmony_ci    target)
340999ca880aSopenharmony_ci      func_fatal_error "you must specify a target with '-o'"
341099ca880aSopenharmony_ci      ;;
341199ca880aSopenharmony_ci    *)
341299ca880aSopenharmony_ci      # Get the name of the library object.
341399ca880aSopenharmony_ci      test -z "$libobj" && {
341499ca880aSopenharmony_ci	func_basename "$srcfile"
341599ca880aSopenharmony_ci	libobj=$func_basename_result
341699ca880aSopenharmony_ci      }
341799ca880aSopenharmony_ci      ;;
341899ca880aSopenharmony_ci    esac
341999ca880aSopenharmony_ci
342099ca880aSopenharmony_ci    # Recognize several different file suffixes.
342199ca880aSopenharmony_ci    # If the user specifies -o file.o, it is replaced with file.lo
342299ca880aSopenharmony_ci    case $libobj in
342399ca880aSopenharmony_ci    *.[cCFSifmso] | \
342499ca880aSopenharmony_ci    *.ada | *.adb | *.ads | *.asm | \
342599ca880aSopenharmony_ci    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
342699ca880aSopenharmony_ci    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
342799ca880aSopenharmony_ci      func_xform "$libobj"
342899ca880aSopenharmony_ci      libobj=$func_xform_result
342999ca880aSopenharmony_ci      ;;
343099ca880aSopenharmony_ci    esac
343199ca880aSopenharmony_ci
343299ca880aSopenharmony_ci    case $libobj in
343399ca880aSopenharmony_ci    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
343499ca880aSopenharmony_ci    *)
343599ca880aSopenharmony_ci      func_fatal_error "cannot determine name of library object from '$libobj'"
343699ca880aSopenharmony_ci      ;;
343799ca880aSopenharmony_ci    esac
343899ca880aSopenharmony_ci
343999ca880aSopenharmony_ci    func_infer_tag $base_compile
344099ca880aSopenharmony_ci
344199ca880aSopenharmony_ci    for arg in $later; do
344299ca880aSopenharmony_ci      case $arg in
344399ca880aSopenharmony_ci      -shared)
344499ca880aSopenharmony_ci	test yes = "$build_libtool_libs" \
344599ca880aSopenharmony_ci	  || func_fatal_configuration "cannot build a shared library"
344699ca880aSopenharmony_ci	build_old_libs=no
344799ca880aSopenharmony_ci	continue
344899ca880aSopenharmony_ci	;;
344999ca880aSopenharmony_ci
345099ca880aSopenharmony_ci      -static)
345199ca880aSopenharmony_ci	build_libtool_libs=no
345299ca880aSopenharmony_ci	build_old_libs=yes
345399ca880aSopenharmony_ci	continue
345499ca880aSopenharmony_ci	;;
345599ca880aSopenharmony_ci
345699ca880aSopenharmony_ci      -prefer-pic)
345799ca880aSopenharmony_ci	pic_mode=yes
345899ca880aSopenharmony_ci	continue
345999ca880aSopenharmony_ci	;;
346099ca880aSopenharmony_ci
346199ca880aSopenharmony_ci      -prefer-non-pic)
346299ca880aSopenharmony_ci	pic_mode=no
346399ca880aSopenharmony_ci	continue
346499ca880aSopenharmony_ci	;;
346599ca880aSopenharmony_ci      esac
346699ca880aSopenharmony_ci    done
346799ca880aSopenharmony_ci
346899ca880aSopenharmony_ci    func_quote_for_eval "$libobj"
346999ca880aSopenharmony_ci    test "X$libobj" != "X$func_quote_for_eval_result" \
347099ca880aSopenharmony_ci      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
347199ca880aSopenharmony_ci      && func_warning "libobj name '$libobj' may not contain shell special characters."
347299ca880aSopenharmony_ci    func_dirname_and_basename "$obj" "/" ""
347399ca880aSopenharmony_ci    objname=$func_basename_result
347499ca880aSopenharmony_ci    xdir=$func_dirname_result
347599ca880aSopenharmony_ci    lobj=$xdir$objdir/$objname
347699ca880aSopenharmony_ci
347799ca880aSopenharmony_ci    test -z "$base_compile" && \
347899ca880aSopenharmony_ci      func_fatal_help "you must specify a compilation command"
347999ca880aSopenharmony_ci
348099ca880aSopenharmony_ci    # Delete any leftover library objects.
348199ca880aSopenharmony_ci    if test yes = "$build_old_libs"; then
348299ca880aSopenharmony_ci      removelist="$obj $lobj $libobj ${libobj}T"
348399ca880aSopenharmony_ci    else
348499ca880aSopenharmony_ci      removelist="$lobj $libobj ${libobj}T"
348599ca880aSopenharmony_ci    fi
348699ca880aSopenharmony_ci
348799ca880aSopenharmony_ci    # On Cygwin there's no "real" PIC flag so we must build both object types
348899ca880aSopenharmony_ci    case $host_os in
348999ca880aSopenharmony_ci    cygwin* | mingw* | pw32* | os2* | cegcc*)
349099ca880aSopenharmony_ci      pic_mode=default
349199ca880aSopenharmony_ci      ;;
349299ca880aSopenharmony_ci    esac
349399ca880aSopenharmony_ci    if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then
349499ca880aSopenharmony_ci      # non-PIC code in shared libraries is not supported
349599ca880aSopenharmony_ci      pic_mode=default
349699ca880aSopenharmony_ci    fi
349799ca880aSopenharmony_ci
349899ca880aSopenharmony_ci    # Calculate the filename of the output object if compiler does
349999ca880aSopenharmony_ci    # not support -o with -c
350099ca880aSopenharmony_ci    if test no = "$compiler_c_o"; then
350199ca880aSopenharmony_ci      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext
350299ca880aSopenharmony_ci      lockfile=$output_obj.lock
350399ca880aSopenharmony_ci    else
350499ca880aSopenharmony_ci      output_obj=
350599ca880aSopenharmony_ci      need_locks=no
350699ca880aSopenharmony_ci      lockfile=
350799ca880aSopenharmony_ci    fi
350899ca880aSopenharmony_ci
350999ca880aSopenharmony_ci    # Lock this critical section if it is needed
351099ca880aSopenharmony_ci    # We use this script file to make the link, it avoids creating a new file
351199ca880aSopenharmony_ci    if test yes = "$need_locks"; then
351299ca880aSopenharmony_ci      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
351399ca880aSopenharmony_ci	func_echo "Waiting for $lockfile to be removed"
351499ca880aSopenharmony_ci	sleep 2
351599ca880aSopenharmony_ci      done
351699ca880aSopenharmony_ci    elif test warn = "$need_locks"; then
351799ca880aSopenharmony_ci      if test -f "$lockfile"; then
351899ca880aSopenharmony_ci	$ECHO "\
351999ca880aSopenharmony_ci*** ERROR, $lockfile exists and contains:
352099ca880aSopenharmony_ci`cat $lockfile 2>/dev/null`
352199ca880aSopenharmony_ci
352299ca880aSopenharmony_ciThis indicates that another process is trying to use the same
352399ca880aSopenharmony_citemporary object file, and libtool could not work around it because
352499ca880aSopenharmony_ciyour compiler does not support '-c' and '-o' together.  If you
352599ca880aSopenharmony_cirepeat this compilation, it may succeed, by chance, but you had better
352699ca880aSopenharmony_ciavoid parallel builds (make -j) in this platform, or get a better
352799ca880aSopenharmony_cicompiler."
352899ca880aSopenharmony_ci
352999ca880aSopenharmony_ci	$opt_dry_run || $RM $removelist
353099ca880aSopenharmony_ci	exit $EXIT_FAILURE
353199ca880aSopenharmony_ci      fi
353299ca880aSopenharmony_ci      func_append removelist " $output_obj"
353399ca880aSopenharmony_ci      $ECHO "$srcfile" > "$lockfile"
353499ca880aSopenharmony_ci    fi
353599ca880aSopenharmony_ci
353699ca880aSopenharmony_ci    $opt_dry_run || $RM $removelist
353799ca880aSopenharmony_ci    func_append removelist " $lockfile"
353899ca880aSopenharmony_ci    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
353999ca880aSopenharmony_ci
354099ca880aSopenharmony_ci    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
354199ca880aSopenharmony_ci    srcfile=$func_to_tool_file_result
354299ca880aSopenharmony_ci    func_quote_for_eval "$srcfile"
354399ca880aSopenharmony_ci    qsrcfile=$func_quote_for_eval_result
354499ca880aSopenharmony_ci
354599ca880aSopenharmony_ci    # Only build a PIC object if we are building libtool libraries.
354699ca880aSopenharmony_ci    if test yes = "$build_libtool_libs"; then
354799ca880aSopenharmony_ci      # Without this assignment, base_compile gets emptied.
354899ca880aSopenharmony_ci      fbsd_hideous_sh_bug=$base_compile
354999ca880aSopenharmony_ci
355099ca880aSopenharmony_ci      if test no != "$pic_mode"; then
355199ca880aSopenharmony_ci	command="$base_compile $qsrcfile $pic_flag"
355299ca880aSopenharmony_ci      else
355399ca880aSopenharmony_ci	# Don't build PIC code
355499ca880aSopenharmony_ci	command="$base_compile $qsrcfile"
355599ca880aSopenharmony_ci      fi
355699ca880aSopenharmony_ci
355799ca880aSopenharmony_ci      func_mkdir_p "$xdir$objdir"
355899ca880aSopenharmony_ci
355999ca880aSopenharmony_ci      if test -z "$output_obj"; then
356099ca880aSopenharmony_ci	# Place PIC objects in $objdir
356199ca880aSopenharmony_ci	func_append command " -o $lobj"
356299ca880aSopenharmony_ci      fi
356399ca880aSopenharmony_ci
356499ca880aSopenharmony_ci      func_show_eval_locale "$command"	\
356599ca880aSopenharmony_ci          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
356699ca880aSopenharmony_ci
356799ca880aSopenharmony_ci      if test warn = "$need_locks" &&
356899ca880aSopenharmony_ci	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
356999ca880aSopenharmony_ci	$ECHO "\
357099ca880aSopenharmony_ci*** ERROR, $lockfile contains:
357199ca880aSopenharmony_ci`cat $lockfile 2>/dev/null`
357299ca880aSopenharmony_ci
357399ca880aSopenharmony_cibut it should contain:
357499ca880aSopenharmony_ci$srcfile
357599ca880aSopenharmony_ci
357699ca880aSopenharmony_ciThis indicates that another process is trying to use the same
357799ca880aSopenharmony_citemporary object file, and libtool could not work around it because
357899ca880aSopenharmony_ciyour compiler does not support '-c' and '-o' together.  If you
357999ca880aSopenharmony_cirepeat this compilation, it may succeed, by chance, but you had better
358099ca880aSopenharmony_ciavoid parallel builds (make -j) in this platform, or get a better
358199ca880aSopenharmony_cicompiler."
358299ca880aSopenharmony_ci
358399ca880aSopenharmony_ci	$opt_dry_run || $RM $removelist
358499ca880aSopenharmony_ci	exit $EXIT_FAILURE
358599ca880aSopenharmony_ci      fi
358699ca880aSopenharmony_ci
358799ca880aSopenharmony_ci      # Just move the object if needed, then go on to compile the next one
358899ca880aSopenharmony_ci      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
358999ca880aSopenharmony_ci	func_show_eval '$MV "$output_obj" "$lobj"' \
359099ca880aSopenharmony_ci	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
359199ca880aSopenharmony_ci      fi
359299ca880aSopenharmony_ci
359399ca880aSopenharmony_ci      # Allow error messages only from the first compilation.
359499ca880aSopenharmony_ci      if test yes = "$suppress_opt"; then
359599ca880aSopenharmony_ci	suppress_output=' >/dev/null 2>&1'
359699ca880aSopenharmony_ci      fi
359799ca880aSopenharmony_ci    fi
359899ca880aSopenharmony_ci
359999ca880aSopenharmony_ci    # Only build a position-dependent object if we build old libraries.
360099ca880aSopenharmony_ci    if test yes = "$build_old_libs"; then
360199ca880aSopenharmony_ci      if test yes != "$pic_mode"; then
360299ca880aSopenharmony_ci	# Don't build PIC code
360399ca880aSopenharmony_ci	command="$base_compile $qsrcfile$pie_flag"
360499ca880aSopenharmony_ci      else
360599ca880aSopenharmony_ci	command="$base_compile $qsrcfile $pic_flag"
360699ca880aSopenharmony_ci      fi
360799ca880aSopenharmony_ci      if test yes = "$compiler_c_o"; then
360899ca880aSopenharmony_ci	func_append command " -o $obj"
360999ca880aSopenharmony_ci      fi
361099ca880aSopenharmony_ci
361199ca880aSopenharmony_ci      # Suppress compiler output if we already did a PIC compilation.
361299ca880aSopenharmony_ci      func_append command "$suppress_output"
361399ca880aSopenharmony_ci      func_show_eval_locale "$command" \
361499ca880aSopenharmony_ci        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
361599ca880aSopenharmony_ci
361699ca880aSopenharmony_ci      if test warn = "$need_locks" &&
361799ca880aSopenharmony_ci	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
361899ca880aSopenharmony_ci	$ECHO "\
361999ca880aSopenharmony_ci*** ERROR, $lockfile contains:
362099ca880aSopenharmony_ci`cat $lockfile 2>/dev/null`
362199ca880aSopenharmony_ci
362299ca880aSopenharmony_cibut it should contain:
362399ca880aSopenharmony_ci$srcfile
362499ca880aSopenharmony_ci
362599ca880aSopenharmony_ciThis indicates that another process is trying to use the same
362699ca880aSopenharmony_citemporary object file, and libtool could not work around it because
362799ca880aSopenharmony_ciyour compiler does not support '-c' and '-o' together.  If you
362899ca880aSopenharmony_cirepeat this compilation, it may succeed, by chance, but you had better
362999ca880aSopenharmony_ciavoid parallel builds (make -j) in this platform, or get a better
363099ca880aSopenharmony_cicompiler."
363199ca880aSopenharmony_ci
363299ca880aSopenharmony_ci	$opt_dry_run || $RM $removelist
363399ca880aSopenharmony_ci	exit $EXIT_FAILURE
363499ca880aSopenharmony_ci      fi
363599ca880aSopenharmony_ci
363699ca880aSopenharmony_ci      # Just move the object if needed
363799ca880aSopenharmony_ci      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
363899ca880aSopenharmony_ci	func_show_eval '$MV "$output_obj" "$obj"' \
363999ca880aSopenharmony_ci	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
364099ca880aSopenharmony_ci      fi
364199ca880aSopenharmony_ci    fi
364299ca880aSopenharmony_ci
364399ca880aSopenharmony_ci    $opt_dry_run || {
364499ca880aSopenharmony_ci      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
364599ca880aSopenharmony_ci
364699ca880aSopenharmony_ci      # Unlock the critical section if it was locked
364799ca880aSopenharmony_ci      if test no != "$need_locks"; then
364899ca880aSopenharmony_ci	removelist=$lockfile
364999ca880aSopenharmony_ci        $RM "$lockfile"
365099ca880aSopenharmony_ci      fi
365199ca880aSopenharmony_ci    }
365299ca880aSopenharmony_ci
365399ca880aSopenharmony_ci    exit $EXIT_SUCCESS
365499ca880aSopenharmony_ci}
365599ca880aSopenharmony_ci
365699ca880aSopenharmony_ci$opt_help || {
365799ca880aSopenharmony_ci  test compile = "$opt_mode" && func_mode_compile ${1+"$@"}
365899ca880aSopenharmony_ci}
365999ca880aSopenharmony_ci
366099ca880aSopenharmony_cifunc_mode_help ()
366199ca880aSopenharmony_ci{
366299ca880aSopenharmony_ci    # We need to display help for each of the modes.
366399ca880aSopenharmony_ci    case $opt_mode in
366499ca880aSopenharmony_ci      "")
366599ca880aSopenharmony_ci        # Generic help is extracted from the usage comments
366699ca880aSopenharmony_ci        # at the start of this file.
366799ca880aSopenharmony_ci        func_help
366899ca880aSopenharmony_ci        ;;
366999ca880aSopenharmony_ci
367099ca880aSopenharmony_ci      clean)
367199ca880aSopenharmony_ci        $ECHO \
367299ca880aSopenharmony_ci"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
367399ca880aSopenharmony_ci
367499ca880aSopenharmony_ciRemove files from the build directory.
367599ca880aSopenharmony_ci
367699ca880aSopenharmony_ciRM is the name of the program to use to delete files associated with each FILE
367799ca880aSopenharmony_ci(typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
367899ca880aSopenharmony_cito RM.
367999ca880aSopenharmony_ci
368099ca880aSopenharmony_ciIf FILE is a libtool library, object or program, all the files associated
368199ca880aSopenharmony_ciwith it are deleted. Otherwise, only FILE itself is deleted using RM."
368299ca880aSopenharmony_ci        ;;
368399ca880aSopenharmony_ci
368499ca880aSopenharmony_ci      compile)
368599ca880aSopenharmony_ci      $ECHO \
368699ca880aSopenharmony_ci"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
368799ca880aSopenharmony_ci
368899ca880aSopenharmony_ciCompile a source file into a libtool library object.
368999ca880aSopenharmony_ci
369099ca880aSopenharmony_ciThis mode accepts the following additional options:
369199ca880aSopenharmony_ci
369299ca880aSopenharmony_ci  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
369399ca880aSopenharmony_ci  -no-suppress      do not suppress compiler output for multiple passes
369499ca880aSopenharmony_ci  -prefer-pic       try to build PIC objects only
369599ca880aSopenharmony_ci  -prefer-non-pic   try to build non-PIC objects only
369699ca880aSopenharmony_ci  -shared           do not build a '.o' file suitable for static linking
369799ca880aSopenharmony_ci  -static           only build a '.o' file suitable for static linking
369899ca880aSopenharmony_ci  -Wc,FLAG          pass FLAG directly to the compiler
369999ca880aSopenharmony_ci
370099ca880aSopenharmony_ciCOMPILE-COMMAND is a command to be used in creating a 'standard' object file
370199ca880aSopenharmony_cifrom the given SOURCEFILE.
370299ca880aSopenharmony_ci
370399ca880aSopenharmony_ciThe output file name is determined by removing the directory component from
370499ca880aSopenharmony_ciSOURCEFILE, then substituting the C source code suffix '.c' with the
370599ca880aSopenharmony_cilibrary object suffix, '.lo'."
370699ca880aSopenharmony_ci        ;;
370799ca880aSopenharmony_ci
370899ca880aSopenharmony_ci      execute)
370999ca880aSopenharmony_ci        $ECHO \
371099ca880aSopenharmony_ci"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
371199ca880aSopenharmony_ci
371299ca880aSopenharmony_ciAutomatically set library path, then run a program.
371399ca880aSopenharmony_ci
371499ca880aSopenharmony_ciThis mode accepts the following additional options:
371599ca880aSopenharmony_ci
371699ca880aSopenharmony_ci  -dlopen FILE      add the directory containing FILE to the library path
371799ca880aSopenharmony_ci
371899ca880aSopenharmony_ciThis mode sets the library path environment variable according to '-dlopen'
371999ca880aSopenharmony_ciflags.
372099ca880aSopenharmony_ci
372199ca880aSopenharmony_ciIf any of the ARGS are libtool executable wrappers, then they are translated
372299ca880aSopenharmony_ciinto their corresponding uninstalled binary, and any of their required library
372399ca880aSopenharmony_cidirectories are added to the library path.
372499ca880aSopenharmony_ci
372599ca880aSopenharmony_ciThen, COMMAND is executed, with ARGS as arguments."
372699ca880aSopenharmony_ci        ;;
372799ca880aSopenharmony_ci
372899ca880aSopenharmony_ci      finish)
372999ca880aSopenharmony_ci        $ECHO \
373099ca880aSopenharmony_ci"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
373199ca880aSopenharmony_ci
373299ca880aSopenharmony_ciComplete the installation of libtool libraries.
373399ca880aSopenharmony_ci
373499ca880aSopenharmony_ciEach LIBDIR is a directory that contains libtool libraries.
373599ca880aSopenharmony_ci
373699ca880aSopenharmony_ciThe commands that this mode executes may require superuser privileges.  Use
373799ca880aSopenharmony_cithe '--dry-run' option if you just want to see what would be executed."
373899ca880aSopenharmony_ci        ;;
373999ca880aSopenharmony_ci
374099ca880aSopenharmony_ci      install)
374199ca880aSopenharmony_ci        $ECHO \
374299ca880aSopenharmony_ci"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
374399ca880aSopenharmony_ci
374499ca880aSopenharmony_ciInstall executables or libraries.
374599ca880aSopenharmony_ci
374699ca880aSopenharmony_ciINSTALL-COMMAND is the installation command.  The first component should be
374799ca880aSopenharmony_cieither the 'install' or 'cp' program.
374899ca880aSopenharmony_ci
374999ca880aSopenharmony_ciThe following components of INSTALL-COMMAND are treated specially:
375099ca880aSopenharmony_ci
375199ca880aSopenharmony_ci  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
375299ca880aSopenharmony_ci
375399ca880aSopenharmony_ciThe rest of the components are interpreted as arguments to that command (only
375499ca880aSopenharmony_ciBSD-compatible install options are recognized)."
375599ca880aSopenharmony_ci        ;;
375699ca880aSopenharmony_ci
375799ca880aSopenharmony_ci      link)
375899ca880aSopenharmony_ci        $ECHO \
375999ca880aSopenharmony_ci"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
376099ca880aSopenharmony_ci
376199ca880aSopenharmony_ciLink object files or libraries together to form another library, or to
376299ca880aSopenharmony_cicreate an executable program.
376399ca880aSopenharmony_ci
376499ca880aSopenharmony_ciLINK-COMMAND is a command using the C compiler that you would use to create
376599ca880aSopenharmony_cia program from several object files.
376699ca880aSopenharmony_ci
376799ca880aSopenharmony_ciThe following components of LINK-COMMAND are treated specially:
376899ca880aSopenharmony_ci
376999ca880aSopenharmony_ci  -all-static       do not do any dynamic linking at all
377099ca880aSopenharmony_ci  -avoid-version    do not add a version suffix if possible
377199ca880aSopenharmony_ci  -bindir BINDIR    specify path to binaries directory (for systems where
377299ca880aSopenharmony_ci                    libraries must be found in the PATH setting at runtime)
377399ca880aSopenharmony_ci  -dlopen FILE      '-dlpreopen' FILE if it cannot be dlopened at runtime
377499ca880aSopenharmony_ci  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
377599ca880aSopenharmony_ci  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
377699ca880aSopenharmony_ci  -export-symbols SYMFILE
377799ca880aSopenharmony_ci                    try to export only the symbols listed in SYMFILE
377899ca880aSopenharmony_ci  -export-symbols-regex REGEX
377999ca880aSopenharmony_ci                    try to export only the symbols matching REGEX
378099ca880aSopenharmony_ci  -LLIBDIR          search LIBDIR for required installed libraries
378199ca880aSopenharmony_ci  -lNAME            OUTPUT-FILE requires the installed library libNAME
378299ca880aSopenharmony_ci  -module           build a library that can dlopened
378399ca880aSopenharmony_ci  -no-fast-install  disable the fast-install mode
378499ca880aSopenharmony_ci  -no-install       link a not-installable executable
378599ca880aSopenharmony_ci  -no-undefined     declare that a library does not refer to external symbols
378699ca880aSopenharmony_ci  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
378799ca880aSopenharmony_ci  -objectlist FILE  use a list of object files found in FILE to specify objects
378899ca880aSopenharmony_ci  -os2dllname NAME  force a short DLL name on OS/2 (no effect on other OSes)
378999ca880aSopenharmony_ci  -precious-files-regex REGEX
379099ca880aSopenharmony_ci                    don't remove output files matching REGEX
379199ca880aSopenharmony_ci  -release RELEASE  specify package release information
379299ca880aSopenharmony_ci  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
379399ca880aSopenharmony_ci  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
379499ca880aSopenharmony_ci  -shared           only do dynamic linking of libtool libraries
379599ca880aSopenharmony_ci  -shrext SUFFIX    override the standard shared library file extension
379699ca880aSopenharmony_ci  -static           do not do any dynamic linking of uninstalled libtool libraries
379799ca880aSopenharmony_ci  -static-libtool-libs
379899ca880aSopenharmony_ci                    do not do any dynamic linking of libtool libraries
379999ca880aSopenharmony_ci  -version-info CURRENT[:REVISION[:AGE]]
380099ca880aSopenharmony_ci                    specify library version info [each variable defaults to 0]
380199ca880aSopenharmony_ci  -weak LIBNAME     declare that the target provides the LIBNAME interface
380299ca880aSopenharmony_ci  -Wc,FLAG
380399ca880aSopenharmony_ci  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
380499ca880aSopenharmony_ci  -Wl,FLAG
380599ca880aSopenharmony_ci  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
380699ca880aSopenharmony_ci  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
380799ca880aSopenharmony_ci
380899ca880aSopenharmony_ciAll other options (arguments beginning with '-') are ignored.
380999ca880aSopenharmony_ci
381099ca880aSopenharmony_ciEvery other argument is treated as a filename.  Files ending in '.la' are
381199ca880aSopenharmony_citreated as uninstalled libtool libraries, other files are standard or library
381299ca880aSopenharmony_ciobject files.
381399ca880aSopenharmony_ci
381499ca880aSopenharmony_ciIf the OUTPUT-FILE ends in '.la', then a libtool library is created,
381599ca880aSopenharmony_cionly library objects ('.lo' files) may be specified, and '-rpath' is
381699ca880aSopenharmony_cirequired, except when creating a convenience library.
381799ca880aSopenharmony_ci
381899ca880aSopenharmony_ciIf OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created
381999ca880aSopenharmony_ciusing 'ar' and 'ranlib', or on Windows using 'lib'.
382099ca880aSopenharmony_ci
382199ca880aSopenharmony_ciIf OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file
382299ca880aSopenharmony_ciis created, otherwise an executable program is created."
382399ca880aSopenharmony_ci        ;;
382499ca880aSopenharmony_ci
382599ca880aSopenharmony_ci      uninstall)
382699ca880aSopenharmony_ci        $ECHO \
382799ca880aSopenharmony_ci"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
382899ca880aSopenharmony_ci
382999ca880aSopenharmony_ciRemove libraries from an installation directory.
383099ca880aSopenharmony_ci
383199ca880aSopenharmony_ciRM is the name of the program to use to delete files associated with each FILE
383299ca880aSopenharmony_ci(typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
383399ca880aSopenharmony_cito RM.
383499ca880aSopenharmony_ci
383599ca880aSopenharmony_ciIf FILE is a libtool library, all the files associated with it are deleted.
383699ca880aSopenharmony_ciOtherwise, only FILE itself is deleted using RM."
383799ca880aSopenharmony_ci        ;;
383899ca880aSopenharmony_ci
383999ca880aSopenharmony_ci      *)
384099ca880aSopenharmony_ci        func_fatal_help "invalid operation mode '$opt_mode'"
384199ca880aSopenharmony_ci        ;;
384299ca880aSopenharmony_ci    esac
384399ca880aSopenharmony_ci
384499ca880aSopenharmony_ci    echo
384599ca880aSopenharmony_ci    $ECHO "Try '$progname --help' for more information about other modes."
384699ca880aSopenharmony_ci}
384799ca880aSopenharmony_ci
384899ca880aSopenharmony_ci# Now that we've collected a possible --mode arg, show help if necessary
384999ca880aSopenharmony_ciif $opt_help; then
385099ca880aSopenharmony_ci  if test : = "$opt_help"; then
385199ca880aSopenharmony_ci    func_mode_help
385299ca880aSopenharmony_ci  else
385399ca880aSopenharmony_ci    {
385499ca880aSopenharmony_ci      func_help noexit
385599ca880aSopenharmony_ci      for opt_mode in compile link execute install finish uninstall clean; do
385699ca880aSopenharmony_ci	func_mode_help
385799ca880aSopenharmony_ci      done
385899ca880aSopenharmony_ci    } | $SED -n '1p; 2,$s/^Usage:/  or: /p'
385999ca880aSopenharmony_ci    {
386099ca880aSopenharmony_ci      func_help noexit
386199ca880aSopenharmony_ci      for opt_mode in compile link execute install finish uninstall clean; do
386299ca880aSopenharmony_ci	echo
386399ca880aSopenharmony_ci	func_mode_help
386499ca880aSopenharmony_ci      done
386599ca880aSopenharmony_ci    } |
386699ca880aSopenharmony_ci    $SED '1d
386799ca880aSopenharmony_ci      /^When reporting/,/^Report/{
386899ca880aSopenharmony_ci	H
386999ca880aSopenharmony_ci	d
387099ca880aSopenharmony_ci      }
387199ca880aSopenharmony_ci      $x
387299ca880aSopenharmony_ci      /information about other modes/d
387399ca880aSopenharmony_ci      /more detailed .*MODE/d
387499ca880aSopenharmony_ci      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
387599ca880aSopenharmony_ci  fi
387699ca880aSopenharmony_ci  exit $?
387799ca880aSopenharmony_cifi
387899ca880aSopenharmony_ci
387999ca880aSopenharmony_ci
388099ca880aSopenharmony_ci# func_mode_execute arg...
388199ca880aSopenharmony_cifunc_mode_execute ()
388299ca880aSopenharmony_ci{
388399ca880aSopenharmony_ci    $debug_cmd
388499ca880aSopenharmony_ci
388599ca880aSopenharmony_ci    # The first argument is the command name.
388699ca880aSopenharmony_ci    cmd=$nonopt
388799ca880aSopenharmony_ci    test -z "$cmd" && \
388899ca880aSopenharmony_ci      func_fatal_help "you must specify a COMMAND"
388999ca880aSopenharmony_ci
389099ca880aSopenharmony_ci    # Handle -dlopen flags immediately.
389199ca880aSopenharmony_ci    for file in $opt_dlopen; do
389299ca880aSopenharmony_ci      test -f "$file" \
389399ca880aSopenharmony_ci	|| func_fatal_help "'$file' is not a file"
389499ca880aSopenharmony_ci
389599ca880aSopenharmony_ci      dir=
389699ca880aSopenharmony_ci      case $file in
389799ca880aSopenharmony_ci      *.la)
389899ca880aSopenharmony_ci	func_resolve_sysroot "$file"
389999ca880aSopenharmony_ci	file=$func_resolve_sysroot_result
390099ca880aSopenharmony_ci
390199ca880aSopenharmony_ci	# Check to see that this really is a libtool archive.
390299ca880aSopenharmony_ci	func_lalib_unsafe_p "$file" \
390399ca880aSopenharmony_ci	  || func_fatal_help "'$lib' is not a valid libtool archive"
390499ca880aSopenharmony_ci
390599ca880aSopenharmony_ci	# Read the libtool library.
390699ca880aSopenharmony_ci	dlname=
390799ca880aSopenharmony_ci	library_names=
390899ca880aSopenharmony_ci	func_source "$file"
390999ca880aSopenharmony_ci
391099ca880aSopenharmony_ci	# Skip this library if it cannot be dlopened.
391199ca880aSopenharmony_ci	if test -z "$dlname"; then
391299ca880aSopenharmony_ci	  # Warn if it was a shared library.
391399ca880aSopenharmony_ci	  test -n "$library_names" && \
391499ca880aSopenharmony_ci	    func_warning "'$file' was not linked with '-export-dynamic'"
391599ca880aSopenharmony_ci	  continue
391699ca880aSopenharmony_ci	fi
391799ca880aSopenharmony_ci
391899ca880aSopenharmony_ci	func_dirname "$file" "" "."
391999ca880aSopenharmony_ci	dir=$func_dirname_result
392099ca880aSopenharmony_ci
392199ca880aSopenharmony_ci	if test -f "$dir/$objdir/$dlname"; then
392299ca880aSopenharmony_ci	  func_append dir "/$objdir"
392399ca880aSopenharmony_ci	else
392499ca880aSopenharmony_ci	  if test ! -f "$dir/$dlname"; then
392599ca880aSopenharmony_ci	    func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'"
392699ca880aSopenharmony_ci	  fi
392799ca880aSopenharmony_ci	fi
392899ca880aSopenharmony_ci	;;
392999ca880aSopenharmony_ci
393099ca880aSopenharmony_ci      *.lo)
393199ca880aSopenharmony_ci	# Just add the directory containing the .lo file.
393299ca880aSopenharmony_ci	func_dirname "$file" "" "."
393399ca880aSopenharmony_ci	dir=$func_dirname_result
393499ca880aSopenharmony_ci	;;
393599ca880aSopenharmony_ci
393699ca880aSopenharmony_ci      *)
393799ca880aSopenharmony_ci	func_warning "'-dlopen' is ignored for non-libtool libraries and objects"
393899ca880aSopenharmony_ci	continue
393999ca880aSopenharmony_ci	;;
394099ca880aSopenharmony_ci      esac
394199ca880aSopenharmony_ci
394299ca880aSopenharmony_ci      # Get the absolute pathname.
394399ca880aSopenharmony_ci      absdir=`cd "$dir" && pwd`
394499ca880aSopenharmony_ci      test -n "$absdir" && dir=$absdir
394599ca880aSopenharmony_ci
394699ca880aSopenharmony_ci      # Now add the directory to shlibpath_var.
394799ca880aSopenharmony_ci      if eval "test -z \"\$$shlibpath_var\""; then
394899ca880aSopenharmony_ci	eval "$shlibpath_var=\"\$dir\""
394999ca880aSopenharmony_ci      else
395099ca880aSopenharmony_ci	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
395199ca880aSopenharmony_ci      fi
395299ca880aSopenharmony_ci    done
395399ca880aSopenharmony_ci
395499ca880aSopenharmony_ci    # This variable tells wrapper scripts just to set shlibpath_var
395599ca880aSopenharmony_ci    # rather than running their programs.
395699ca880aSopenharmony_ci    libtool_execute_magic=$magic
395799ca880aSopenharmony_ci
395899ca880aSopenharmony_ci    # Check if any of the arguments is a wrapper script.
395999ca880aSopenharmony_ci    args=
396099ca880aSopenharmony_ci    for file
396199ca880aSopenharmony_ci    do
396299ca880aSopenharmony_ci      case $file in
396399ca880aSopenharmony_ci      -* | *.la | *.lo ) ;;
396499ca880aSopenharmony_ci      *)
396599ca880aSopenharmony_ci	# Do a test to see if this is really a libtool program.
396699ca880aSopenharmony_ci	if func_ltwrapper_script_p "$file"; then
396799ca880aSopenharmony_ci	  func_source "$file"
396899ca880aSopenharmony_ci	  # Transform arg to wrapped name.
396999ca880aSopenharmony_ci	  file=$progdir/$program
397099ca880aSopenharmony_ci	elif func_ltwrapper_executable_p "$file"; then
397199ca880aSopenharmony_ci	  func_ltwrapper_scriptname "$file"
397299ca880aSopenharmony_ci	  func_source "$func_ltwrapper_scriptname_result"
397399ca880aSopenharmony_ci	  # Transform arg to wrapped name.
397499ca880aSopenharmony_ci	  file=$progdir/$program
397599ca880aSopenharmony_ci	fi
397699ca880aSopenharmony_ci	;;
397799ca880aSopenharmony_ci      esac
397899ca880aSopenharmony_ci      # Quote arguments (to preserve shell metacharacters).
397999ca880aSopenharmony_ci      func_append_quoted args "$file"
398099ca880aSopenharmony_ci    done
398199ca880aSopenharmony_ci
398299ca880aSopenharmony_ci    if $opt_dry_run; then
398399ca880aSopenharmony_ci      # Display what would be done.
398499ca880aSopenharmony_ci      if test -n "$shlibpath_var"; then
398599ca880aSopenharmony_ci	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
398699ca880aSopenharmony_ci	echo "export $shlibpath_var"
398799ca880aSopenharmony_ci      fi
398899ca880aSopenharmony_ci      $ECHO "$cmd$args"
398999ca880aSopenharmony_ci      exit $EXIT_SUCCESS
399099ca880aSopenharmony_ci    else
399199ca880aSopenharmony_ci      if test -n "$shlibpath_var"; then
399299ca880aSopenharmony_ci	# Export the shlibpath_var.
399399ca880aSopenharmony_ci	eval "export $shlibpath_var"
399499ca880aSopenharmony_ci      fi
399599ca880aSopenharmony_ci
399699ca880aSopenharmony_ci      # Restore saved environment variables
399799ca880aSopenharmony_ci      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
399899ca880aSopenharmony_ci      do
399999ca880aSopenharmony_ci	eval "if test \"\${save_$lt_var+set}\" = set; then
400099ca880aSopenharmony_ci                $lt_var=\$save_$lt_var; export $lt_var
400199ca880aSopenharmony_ci	      else
400299ca880aSopenharmony_ci		$lt_unset $lt_var
400399ca880aSopenharmony_ci	      fi"
400499ca880aSopenharmony_ci      done
400599ca880aSopenharmony_ci
400699ca880aSopenharmony_ci      # Now prepare to actually exec the command.
400799ca880aSopenharmony_ci      exec_cmd=\$cmd$args
400899ca880aSopenharmony_ci    fi
400999ca880aSopenharmony_ci}
401099ca880aSopenharmony_ci
401199ca880aSopenharmony_citest execute = "$opt_mode" && func_mode_execute ${1+"$@"}
401299ca880aSopenharmony_ci
401399ca880aSopenharmony_ci
401499ca880aSopenharmony_ci# func_mode_finish arg...
401599ca880aSopenharmony_cifunc_mode_finish ()
401699ca880aSopenharmony_ci{
401799ca880aSopenharmony_ci    $debug_cmd
401899ca880aSopenharmony_ci
401999ca880aSopenharmony_ci    libs=
402099ca880aSopenharmony_ci    libdirs=
402199ca880aSopenharmony_ci    admincmds=
402299ca880aSopenharmony_ci
402399ca880aSopenharmony_ci    for opt in "$nonopt" ${1+"$@"}
402499ca880aSopenharmony_ci    do
402599ca880aSopenharmony_ci      if test -d "$opt"; then
402699ca880aSopenharmony_ci	func_append libdirs " $opt"
402799ca880aSopenharmony_ci
402899ca880aSopenharmony_ci      elif test -f "$opt"; then
402999ca880aSopenharmony_ci	if func_lalib_unsafe_p "$opt"; then
403099ca880aSopenharmony_ci	  func_append libs " $opt"
403199ca880aSopenharmony_ci	else
403299ca880aSopenharmony_ci	  func_warning "'$opt' is not a valid libtool archive"
403399ca880aSopenharmony_ci	fi
403499ca880aSopenharmony_ci
403599ca880aSopenharmony_ci      else
403699ca880aSopenharmony_ci	func_fatal_error "invalid argument '$opt'"
403799ca880aSopenharmony_ci      fi
403899ca880aSopenharmony_ci    done
403999ca880aSopenharmony_ci
404099ca880aSopenharmony_ci    if test -n "$libs"; then
404199ca880aSopenharmony_ci      if test -n "$lt_sysroot"; then
404299ca880aSopenharmony_ci        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
404399ca880aSopenharmony_ci        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
404499ca880aSopenharmony_ci      else
404599ca880aSopenharmony_ci        sysroot_cmd=
404699ca880aSopenharmony_ci      fi
404799ca880aSopenharmony_ci
404899ca880aSopenharmony_ci      # Remove sysroot references
404999ca880aSopenharmony_ci      if $opt_dry_run; then
405099ca880aSopenharmony_ci        for lib in $libs; do
405199ca880aSopenharmony_ci          echo "removing references to $lt_sysroot and '=' prefixes from $lib"
405299ca880aSopenharmony_ci        done
405399ca880aSopenharmony_ci      else
405499ca880aSopenharmony_ci        tmpdir=`func_mktempdir`
405599ca880aSopenharmony_ci        for lib in $libs; do
405699ca880aSopenharmony_ci	  $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
405799ca880aSopenharmony_ci	    > $tmpdir/tmp-la
405899ca880aSopenharmony_ci	  mv -f $tmpdir/tmp-la $lib
405999ca880aSopenharmony_ci	done
406099ca880aSopenharmony_ci        ${RM}r "$tmpdir"
406199ca880aSopenharmony_ci      fi
406299ca880aSopenharmony_ci    fi
406399ca880aSopenharmony_ci
406499ca880aSopenharmony_ci    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
406599ca880aSopenharmony_ci      for libdir in $libdirs; do
406699ca880aSopenharmony_ci	if test -n "$finish_cmds"; then
406799ca880aSopenharmony_ci	  # Do each command in the finish commands.
406899ca880aSopenharmony_ci	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
406999ca880aSopenharmony_ci'"$cmd"'"'
407099ca880aSopenharmony_ci	fi
407199ca880aSopenharmony_ci	if test -n "$finish_eval"; then
407299ca880aSopenharmony_ci	  # Do the single finish_eval.
407399ca880aSopenharmony_ci	  eval cmds=\"$finish_eval\"
407499ca880aSopenharmony_ci	  $opt_dry_run || eval "$cmds" || func_append admincmds "
407599ca880aSopenharmony_ci       $cmds"
407699ca880aSopenharmony_ci	fi
407799ca880aSopenharmony_ci      done
407899ca880aSopenharmony_ci    fi
407999ca880aSopenharmony_ci
408099ca880aSopenharmony_ci    # Exit here if they wanted silent mode.
408199ca880aSopenharmony_ci    $opt_quiet && exit $EXIT_SUCCESS
408299ca880aSopenharmony_ci
408399ca880aSopenharmony_ci    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
408499ca880aSopenharmony_ci      echo "----------------------------------------------------------------------"
408599ca880aSopenharmony_ci      echo "Libraries have been installed in:"
408699ca880aSopenharmony_ci      for libdir in $libdirs; do
408799ca880aSopenharmony_ci	$ECHO "   $libdir"
408899ca880aSopenharmony_ci      done
408999ca880aSopenharmony_ci      echo
409099ca880aSopenharmony_ci      echo "If you ever happen to want to link against installed libraries"
409199ca880aSopenharmony_ci      echo "in a given directory, LIBDIR, you must either use libtool, and"
409299ca880aSopenharmony_ci      echo "specify the full pathname of the library, or use the '-LLIBDIR'"
409399ca880aSopenharmony_ci      echo "flag during linking and do at least one of the following:"
409499ca880aSopenharmony_ci      if test -n "$shlibpath_var"; then
409599ca880aSopenharmony_ci	echo "   - add LIBDIR to the '$shlibpath_var' environment variable"
409699ca880aSopenharmony_ci	echo "     during execution"
409799ca880aSopenharmony_ci      fi
409899ca880aSopenharmony_ci      if test -n "$runpath_var"; then
409999ca880aSopenharmony_ci	echo "   - add LIBDIR to the '$runpath_var' environment variable"
410099ca880aSopenharmony_ci	echo "     during linking"
410199ca880aSopenharmony_ci      fi
410299ca880aSopenharmony_ci      if test -n "$hardcode_libdir_flag_spec"; then
410399ca880aSopenharmony_ci	libdir=LIBDIR
410499ca880aSopenharmony_ci	eval flag=\"$hardcode_libdir_flag_spec\"
410599ca880aSopenharmony_ci
410699ca880aSopenharmony_ci	$ECHO "   - use the '$flag' linker flag"
410799ca880aSopenharmony_ci      fi
410899ca880aSopenharmony_ci      if test -n "$admincmds"; then
410999ca880aSopenharmony_ci	$ECHO "   - have your system administrator run these commands:$admincmds"
411099ca880aSopenharmony_ci      fi
411199ca880aSopenharmony_ci      if test -f /etc/ld.so.conf; then
411299ca880aSopenharmony_ci	echo "   - have your system administrator add LIBDIR to '/etc/ld.so.conf'"
411399ca880aSopenharmony_ci      fi
411499ca880aSopenharmony_ci      echo
411599ca880aSopenharmony_ci
411699ca880aSopenharmony_ci      echo "See any operating system documentation about shared libraries for"
411799ca880aSopenharmony_ci      case $host in
411899ca880aSopenharmony_ci	solaris2.[6789]|solaris2.1[0-9])
411999ca880aSopenharmony_ci	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
412099ca880aSopenharmony_ci	  echo "pages."
412199ca880aSopenharmony_ci	  ;;
412299ca880aSopenharmony_ci	*)
412399ca880aSopenharmony_ci	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
412499ca880aSopenharmony_ci	  ;;
412599ca880aSopenharmony_ci      esac
412699ca880aSopenharmony_ci      echo "----------------------------------------------------------------------"
412799ca880aSopenharmony_ci    fi
412899ca880aSopenharmony_ci    exit $EXIT_SUCCESS
412999ca880aSopenharmony_ci}
413099ca880aSopenharmony_ci
413199ca880aSopenharmony_citest finish = "$opt_mode" && func_mode_finish ${1+"$@"}
413299ca880aSopenharmony_ci
413399ca880aSopenharmony_ci
413499ca880aSopenharmony_ci# func_mode_install arg...
413599ca880aSopenharmony_cifunc_mode_install ()
413699ca880aSopenharmony_ci{
413799ca880aSopenharmony_ci    $debug_cmd
413899ca880aSopenharmony_ci
413999ca880aSopenharmony_ci    # There may be an optional sh(1) argument at the beginning of
414099ca880aSopenharmony_ci    # install_prog (especially on Windows NT).
414199ca880aSopenharmony_ci    if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" ||
414299ca880aSopenharmony_ci       # Allow the use of GNU shtool's install command.
414399ca880aSopenharmony_ci       case $nonopt in *shtool*) :;; *) false;; esac
414499ca880aSopenharmony_ci    then
414599ca880aSopenharmony_ci      # Aesthetically quote it.
414699ca880aSopenharmony_ci      func_quote_for_eval "$nonopt"
414799ca880aSopenharmony_ci      install_prog="$func_quote_for_eval_result "
414899ca880aSopenharmony_ci      arg=$1
414999ca880aSopenharmony_ci      shift
415099ca880aSopenharmony_ci    else
415199ca880aSopenharmony_ci      install_prog=
415299ca880aSopenharmony_ci      arg=$nonopt
415399ca880aSopenharmony_ci    fi
415499ca880aSopenharmony_ci
415599ca880aSopenharmony_ci    # The real first argument should be the name of the installation program.
415699ca880aSopenharmony_ci    # Aesthetically quote it.
415799ca880aSopenharmony_ci    func_quote_for_eval "$arg"
415899ca880aSopenharmony_ci    func_append install_prog "$func_quote_for_eval_result"
415999ca880aSopenharmony_ci    install_shared_prog=$install_prog
416099ca880aSopenharmony_ci    case " $install_prog " in
416199ca880aSopenharmony_ci      *[\\\ /]cp\ *) install_cp=: ;;
416299ca880aSopenharmony_ci      *) install_cp=false ;;
416399ca880aSopenharmony_ci    esac
416499ca880aSopenharmony_ci
416599ca880aSopenharmony_ci    # We need to accept at least all the BSD install flags.
416699ca880aSopenharmony_ci    dest=
416799ca880aSopenharmony_ci    files=
416899ca880aSopenharmony_ci    opts=
416999ca880aSopenharmony_ci    prev=
417099ca880aSopenharmony_ci    install_type=
417199ca880aSopenharmony_ci    isdir=false
417299ca880aSopenharmony_ci    stripme=
417399ca880aSopenharmony_ci    no_mode=:
417499ca880aSopenharmony_ci    for arg
417599ca880aSopenharmony_ci    do
417699ca880aSopenharmony_ci      arg2=
417799ca880aSopenharmony_ci      if test -n "$dest"; then
417899ca880aSopenharmony_ci	func_append files " $dest"
417999ca880aSopenharmony_ci	dest=$arg
418099ca880aSopenharmony_ci	continue
418199ca880aSopenharmony_ci      fi
418299ca880aSopenharmony_ci
418399ca880aSopenharmony_ci      case $arg in
418499ca880aSopenharmony_ci      -d) isdir=: ;;
418599ca880aSopenharmony_ci      -f)
418699ca880aSopenharmony_ci	if $install_cp; then :; else
418799ca880aSopenharmony_ci	  prev=$arg
418899ca880aSopenharmony_ci	fi
418999ca880aSopenharmony_ci	;;
419099ca880aSopenharmony_ci      -g | -m | -o)
419199ca880aSopenharmony_ci	prev=$arg
419299ca880aSopenharmony_ci	;;
419399ca880aSopenharmony_ci      -s)
419499ca880aSopenharmony_ci	stripme=" -s"
419599ca880aSopenharmony_ci	continue
419699ca880aSopenharmony_ci	;;
419799ca880aSopenharmony_ci      -*)
419899ca880aSopenharmony_ci	;;
419999ca880aSopenharmony_ci      *)
420099ca880aSopenharmony_ci	# If the previous option needed an argument, then skip it.
420199ca880aSopenharmony_ci	if test -n "$prev"; then
420299ca880aSopenharmony_ci	  if test X-m = "X$prev" && test -n "$install_override_mode"; then
420399ca880aSopenharmony_ci	    arg2=$install_override_mode
420499ca880aSopenharmony_ci	    no_mode=false
420599ca880aSopenharmony_ci	  fi
420699ca880aSopenharmony_ci	  prev=
420799ca880aSopenharmony_ci	else
420899ca880aSopenharmony_ci	  dest=$arg
420999ca880aSopenharmony_ci	  continue
421099ca880aSopenharmony_ci	fi
421199ca880aSopenharmony_ci	;;
421299ca880aSopenharmony_ci      esac
421399ca880aSopenharmony_ci
421499ca880aSopenharmony_ci      # Aesthetically quote the argument.
421599ca880aSopenharmony_ci      func_quote_for_eval "$arg"
421699ca880aSopenharmony_ci      func_append install_prog " $func_quote_for_eval_result"
421799ca880aSopenharmony_ci      if test -n "$arg2"; then
421899ca880aSopenharmony_ci	func_quote_for_eval "$arg2"
421999ca880aSopenharmony_ci      fi
422099ca880aSopenharmony_ci      func_append install_shared_prog " $func_quote_for_eval_result"
422199ca880aSopenharmony_ci    done
422299ca880aSopenharmony_ci
422399ca880aSopenharmony_ci    test -z "$install_prog" && \
422499ca880aSopenharmony_ci      func_fatal_help "you must specify an install program"
422599ca880aSopenharmony_ci
422699ca880aSopenharmony_ci    test -n "$prev" && \
422799ca880aSopenharmony_ci      func_fatal_help "the '$prev' option requires an argument"
422899ca880aSopenharmony_ci
422999ca880aSopenharmony_ci    if test -n "$install_override_mode" && $no_mode; then
423099ca880aSopenharmony_ci      if $install_cp; then :; else
423199ca880aSopenharmony_ci	func_quote_for_eval "$install_override_mode"
423299ca880aSopenharmony_ci	func_append install_shared_prog " -m $func_quote_for_eval_result"
423399ca880aSopenharmony_ci      fi
423499ca880aSopenharmony_ci    fi
423599ca880aSopenharmony_ci
423699ca880aSopenharmony_ci    if test -z "$files"; then
423799ca880aSopenharmony_ci      if test -z "$dest"; then
423899ca880aSopenharmony_ci	func_fatal_help "no file or destination specified"
423999ca880aSopenharmony_ci      else
424099ca880aSopenharmony_ci	func_fatal_help "you must specify a destination"
424199ca880aSopenharmony_ci      fi
424299ca880aSopenharmony_ci    fi
424399ca880aSopenharmony_ci
424499ca880aSopenharmony_ci    # Strip any trailing slash from the destination.
424599ca880aSopenharmony_ci    func_stripname '' '/' "$dest"
424699ca880aSopenharmony_ci    dest=$func_stripname_result
424799ca880aSopenharmony_ci
424899ca880aSopenharmony_ci    # Check to see that the destination is a directory.
424999ca880aSopenharmony_ci    test -d "$dest" && isdir=:
425099ca880aSopenharmony_ci    if $isdir; then
425199ca880aSopenharmony_ci      destdir=$dest
425299ca880aSopenharmony_ci      destname=
425399ca880aSopenharmony_ci    else
425499ca880aSopenharmony_ci      func_dirname_and_basename "$dest" "" "."
425599ca880aSopenharmony_ci      destdir=$func_dirname_result
425699ca880aSopenharmony_ci      destname=$func_basename_result
425799ca880aSopenharmony_ci
425899ca880aSopenharmony_ci      # Not a directory, so check to see that there is only one file specified.
425999ca880aSopenharmony_ci      set dummy $files; shift
426099ca880aSopenharmony_ci      test "$#" -gt 1 && \
426199ca880aSopenharmony_ci	func_fatal_help "'$dest' is not a directory"
426299ca880aSopenharmony_ci    fi
426399ca880aSopenharmony_ci    case $destdir in
426499ca880aSopenharmony_ci    [\\/]* | [A-Za-z]:[\\/]*) ;;
426599ca880aSopenharmony_ci    *)
426699ca880aSopenharmony_ci      for file in $files; do
426799ca880aSopenharmony_ci	case $file in
426899ca880aSopenharmony_ci	*.lo) ;;
426999ca880aSopenharmony_ci	*)
427099ca880aSopenharmony_ci	  func_fatal_help "'$destdir' must be an absolute directory name"
427199ca880aSopenharmony_ci	  ;;
427299ca880aSopenharmony_ci	esac
427399ca880aSopenharmony_ci      done
427499ca880aSopenharmony_ci      ;;
427599ca880aSopenharmony_ci    esac
427699ca880aSopenharmony_ci
427799ca880aSopenharmony_ci    # This variable tells wrapper scripts just to set variables rather
427899ca880aSopenharmony_ci    # than running their programs.
427999ca880aSopenharmony_ci    libtool_install_magic=$magic
428099ca880aSopenharmony_ci
428199ca880aSopenharmony_ci    staticlibs=
428299ca880aSopenharmony_ci    future_libdirs=
428399ca880aSopenharmony_ci    current_libdirs=
428499ca880aSopenharmony_ci    for file in $files; do
428599ca880aSopenharmony_ci
428699ca880aSopenharmony_ci      # Do each installation.
428799ca880aSopenharmony_ci      case $file in
428899ca880aSopenharmony_ci      *.$libext)
428999ca880aSopenharmony_ci	# Do the static libraries later.
429099ca880aSopenharmony_ci	func_append staticlibs " $file"
429199ca880aSopenharmony_ci	;;
429299ca880aSopenharmony_ci
429399ca880aSopenharmony_ci      *.la)
429499ca880aSopenharmony_ci	func_resolve_sysroot "$file"
429599ca880aSopenharmony_ci	file=$func_resolve_sysroot_result
429699ca880aSopenharmony_ci
429799ca880aSopenharmony_ci	# Check to see that this really is a libtool archive.
429899ca880aSopenharmony_ci	func_lalib_unsafe_p "$file" \
429999ca880aSopenharmony_ci	  || func_fatal_help "'$file' is not a valid libtool archive"
430099ca880aSopenharmony_ci
430199ca880aSopenharmony_ci	library_names=
430299ca880aSopenharmony_ci	old_library=
430399ca880aSopenharmony_ci	relink_command=
430499ca880aSopenharmony_ci	func_source "$file"
430599ca880aSopenharmony_ci
430699ca880aSopenharmony_ci	# Add the libdir to current_libdirs if it is the destination.
430799ca880aSopenharmony_ci	if test "X$destdir" = "X$libdir"; then
430899ca880aSopenharmony_ci	  case "$current_libdirs " in
430999ca880aSopenharmony_ci	  *" $libdir "*) ;;
431099ca880aSopenharmony_ci	  *) func_append current_libdirs " $libdir" ;;
431199ca880aSopenharmony_ci	  esac
431299ca880aSopenharmony_ci	else
431399ca880aSopenharmony_ci	  # Note the libdir as a future libdir.
431499ca880aSopenharmony_ci	  case "$future_libdirs " in
431599ca880aSopenharmony_ci	  *" $libdir "*) ;;
431699ca880aSopenharmony_ci	  *) func_append future_libdirs " $libdir" ;;
431799ca880aSopenharmony_ci	  esac
431899ca880aSopenharmony_ci	fi
431999ca880aSopenharmony_ci
432099ca880aSopenharmony_ci	func_dirname "$file" "/" ""
432199ca880aSopenharmony_ci	dir=$func_dirname_result
432299ca880aSopenharmony_ci	func_append dir "$objdir"
432399ca880aSopenharmony_ci
432499ca880aSopenharmony_ci	if test -n "$relink_command"; then
432599ca880aSopenharmony_ci	  # Determine the prefix the user has applied to our future dir.
432699ca880aSopenharmony_ci	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
432799ca880aSopenharmony_ci
432899ca880aSopenharmony_ci	  # Don't allow the user to place us outside of our expected
432999ca880aSopenharmony_ci	  # location b/c this prevents finding dependent libraries that
433099ca880aSopenharmony_ci	  # are installed to the same prefix.
433199ca880aSopenharmony_ci	  # At present, this check doesn't affect windows .dll's that
433299ca880aSopenharmony_ci	  # are installed into $libdir/../bin (currently, that works fine)
433399ca880aSopenharmony_ci	  # but it's something to keep an eye on.
433499ca880aSopenharmony_ci	  test "$inst_prefix_dir" = "$destdir" && \
433599ca880aSopenharmony_ci	    func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir"
433699ca880aSopenharmony_ci
433799ca880aSopenharmony_ci	  if test -n "$inst_prefix_dir"; then
433899ca880aSopenharmony_ci	    # Stick the inst_prefix_dir data into the link command.
433999ca880aSopenharmony_ci	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
434099ca880aSopenharmony_ci	  else
434199ca880aSopenharmony_ci	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
434299ca880aSopenharmony_ci	  fi
434399ca880aSopenharmony_ci
434499ca880aSopenharmony_ci	  func_warning "relinking '$file'"
434599ca880aSopenharmony_ci	  func_show_eval "$relink_command" \
434699ca880aSopenharmony_ci	    'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"'
434799ca880aSopenharmony_ci	fi
434899ca880aSopenharmony_ci
434999ca880aSopenharmony_ci	# See the names of the shared library.
435099ca880aSopenharmony_ci	set dummy $library_names; shift
435199ca880aSopenharmony_ci	if test -n "$1"; then
435299ca880aSopenharmony_ci	  realname=$1
435399ca880aSopenharmony_ci	  shift
435499ca880aSopenharmony_ci
435599ca880aSopenharmony_ci	  srcname=$realname
435699ca880aSopenharmony_ci	  test -n "$relink_command" && srcname=${realname}T
435799ca880aSopenharmony_ci
435899ca880aSopenharmony_ci	  # Install the shared library and build the symlinks.
435999ca880aSopenharmony_ci	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
436099ca880aSopenharmony_ci	      'exit $?'
436199ca880aSopenharmony_ci	  tstripme=$stripme
436299ca880aSopenharmony_ci	  case $host_os in
436399ca880aSopenharmony_ci	  cygwin* | mingw* | pw32* | cegcc*)
436499ca880aSopenharmony_ci	    case $realname in
436599ca880aSopenharmony_ci	    *.dll.a)
436699ca880aSopenharmony_ci	      tstripme=
436799ca880aSopenharmony_ci	      ;;
436899ca880aSopenharmony_ci	    esac
436999ca880aSopenharmony_ci	    ;;
437099ca880aSopenharmony_ci	  os2*)
437199ca880aSopenharmony_ci	    case $realname in
437299ca880aSopenharmony_ci	    *_dll.a)
437399ca880aSopenharmony_ci	      tstripme=
437499ca880aSopenharmony_ci	      ;;
437599ca880aSopenharmony_ci	    esac
437699ca880aSopenharmony_ci	    ;;
437799ca880aSopenharmony_ci	  esac
437899ca880aSopenharmony_ci	  if test -n "$tstripme" && test -n "$striplib"; then
437999ca880aSopenharmony_ci	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
438099ca880aSopenharmony_ci	  fi
438199ca880aSopenharmony_ci
438299ca880aSopenharmony_ci	  if test "$#" -gt 0; then
438399ca880aSopenharmony_ci	    # Delete the old symlinks, and create new ones.
438499ca880aSopenharmony_ci	    # Try 'ln -sf' first, because the 'ln' binary might depend on
438599ca880aSopenharmony_ci	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
438699ca880aSopenharmony_ci	    # so we also need to try rm && ln -s.
438799ca880aSopenharmony_ci	    for linkname
438899ca880aSopenharmony_ci	    do
438999ca880aSopenharmony_ci	      test "$linkname" != "$realname" \
439099ca880aSopenharmony_ci		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
439199ca880aSopenharmony_ci	    done
439299ca880aSopenharmony_ci	  fi
439399ca880aSopenharmony_ci
439499ca880aSopenharmony_ci	  # Do each command in the postinstall commands.
439599ca880aSopenharmony_ci	  lib=$destdir/$realname
439699ca880aSopenharmony_ci	  func_execute_cmds "$postinstall_cmds" 'exit $?'
439799ca880aSopenharmony_ci	fi
439899ca880aSopenharmony_ci
439999ca880aSopenharmony_ci	# Install the pseudo-library for information purposes.
440099ca880aSopenharmony_ci	func_basename "$file"
440199ca880aSopenharmony_ci	name=$func_basename_result
440299ca880aSopenharmony_ci	instname=$dir/${name}i
440399ca880aSopenharmony_ci	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
440499ca880aSopenharmony_ci
440599ca880aSopenharmony_ci	# Maybe install the static library, too.
440699ca880aSopenharmony_ci	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
440799ca880aSopenharmony_ci	;;
440899ca880aSopenharmony_ci
440999ca880aSopenharmony_ci      *.lo)
441099ca880aSopenharmony_ci	# Install (i.e. copy) a libtool object.
441199ca880aSopenharmony_ci
441299ca880aSopenharmony_ci	# Figure out destination file name, if it wasn't already specified.
441399ca880aSopenharmony_ci	if test -n "$destname"; then
441499ca880aSopenharmony_ci	  destfile=$destdir/$destname
441599ca880aSopenharmony_ci	else
441699ca880aSopenharmony_ci	  func_basename "$file"
441799ca880aSopenharmony_ci	  destfile=$func_basename_result
441899ca880aSopenharmony_ci	  destfile=$destdir/$destfile
441999ca880aSopenharmony_ci	fi
442099ca880aSopenharmony_ci
442199ca880aSopenharmony_ci	# Deduce the name of the destination old-style object file.
442299ca880aSopenharmony_ci	case $destfile in
442399ca880aSopenharmony_ci	*.lo)
442499ca880aSopenharmony_ci	  func_lo2o "$destfile"
442599ca880aSopenharmony_ci	  staticdest=$func_lo2o_result
442699ca880aSopenharmony_ci	  ;;
442799ca880aSopenharmony_ci	*.$objext)
442899ca880aSopenharmony_ci	  staticdest=$destfile
442999ca880aSopenharmony_ci	  destfile=
443099ca880aSopenharmony_ci	  ;;
443199ca880aSopenharmony_ci	*)
443299ca880aSopenharmony_ci	  func_fatal_help "cannot copy a libtool object to '$destfile'"
443399ca880aSopenharmony_ci	  ;;
443499ca880aSopenharmony_ci	esac
443599ca880aSopenharmony_ci
443699ca880aSopenharmony_ci	# Install the libtool object if requested.
443799ca880aSopenharmony_ci	test -n "$destfile" && \
443899ca880aSopenharmony_ci	  func_show_eval "$install_prog $file $destfile" 'exit $?'
443999ca880aSopenharmony_ci
444099ca880aSopenharmony_ci	# Install the old object if enabled.
444199ca880aSopenharmony_ci	if test yes = "$build_old_libs"; then
444299ca880aSopenharmony_ci	  # Deduce the name of the old-style object file.
444399ca880aSopenharmony_ci	  func_lo2o "$file"
444499ca880aSopenharmony_ci	  staticobj=$func_lo2o_result
444599ca880aSopenharmony_ci	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
444699ca880aSopenharmony_ci	fi
444799ca880aSopenharmony_ci	exit $EXIT_SUCCESS
444899ca880aSopenharmony_ci	;;
444999ca880aSopenharmony_ci
445099ca880aSopenharmony_ci      *)
445199ca880aSopenharmony_ci	# Figure out destination file name, if it wasn't already specified.
445299ca880aSopenharmony_ci	if test -n "$destname"; then
445399ca880aSopenharmony_ci	  destfile=$destdir/$destname
445499ca880aSopenharmony_ci	else
445599ca880aSopenharmony_ci	  func_basename "$file"
445699ca880aSopenharmony_ci	  destfile=$func_basename_result
445799ca880aSopenharmony_ci	  destfile=$destdir/$destfile
445899ca880aSopenharmony_ci	fi
445999ca880aSopenharmony_ci
446099ca880aSopenharmony_ci	# If the file is missing, and there is a .exe on the end, strip it
446199ca880aSopenharmony_ci	# because it is most likely a libtool script we actually want to
446299ca880aSopenharmony_ci	# install
446399ca880aSopenharmony_ci	stripped_ext=
446499ca880aSopenharmony_ci	case $file in
446599ca880aSopenharmony_ci	  *.exe)
446699ca880aSopenharmony_ci	    if test ! -f "$file"; then
446799ca880aSopenharmony_ci	      func_stripname '' '.exe' "$file"
446899ca880aSopenharmony_ci	      file=$func_stripname_result
446999ca880aSopenharmony_ci	      stripped_ext=.exe
447099ca880aSopenharmony_ci	    fi
447199ca880aSopenharmony_ci	    ;;
447299ca880aSopenharmony_ci	esac
447399ca880aSopenharmony_ci
447499ca880aSopenharmony_ci	# Do a test to see if this is really a libtool program.
447599ca880aSopenharmony_ci	case $host in
447699ca880aSopenharmony_ci	*cygwin* | *mingw*)
447799ca880aSopenharmony_ci	    if func_ltwrapper_executable_p "$file"; then
447899ca880aSopenharmony_ci	      func_ltwrapper_scriptname "$file"
447999ca880aSopenharmony_ci	      wrapper=$func_ltwrapper_scriptname_result
448099ca880aSopenharmony_ci	    else
448199ca880aSopenharmony_ci	      func_stripname '' '.exe' "$file"
448299ca880aSopenharmony_ci	      wrapper=$func_stripname_result
448399ca880aSopenharmony_ci	    fi
448499ca880aSopenharmony_ci	    ;;
448599ca880aSopenharmony_ci	*)
448699ca880aSopenharmony_ci	    wrapper=$file
448799ca880aSopenharmony_ci	    ;;
448899ca880aSopenharmony_ci	esac
448999ca880aSopenharmony_ci	if func_ltwrapper_script_p "$wrapper"; then
449099ca880aSopenharmony_ci	  notinst_deplibs=
449199ca880aSopenharmony_ci	  relink_command=
449299ca880aSopenharmony_ci
449399ca880aSopenharmony_ci	  func_source "$wrapper"
449499ca880aSopenharmony_ci
449599ca880aSopenharmony_ci	  # Check the variables that should have been set.
449699ca880aSopenharmony_ci	  test -z "$generated_by_libtool_version" && \
449799ca880aSopenharmony_ci	    func_fatal_error "invalid libtool wrapper script '$wrapper'"
449899ca880aSopenharmony_ci
449999ca880aSopenharmony_ci	  finalize=:
450099ca880aSopenharmony_ci	  for lib in $notinst_deplibs; do
450199ca880aSopenharmony_ci	    # Check to see that each library is installed.
450299ca880aSopenharmony_ci	    libdir=
450399ca880aSopenharmony_ci	    if test -f "$lib"; then
450499ca880aSopenharmony_ci	      func_source "$lib"
450599ca880aSopenharmony_ci	    fi
450699ca880aSopenharmony_ci	    libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'`
450799ca880aSopenharmony_ci	    if test -n "$libdir" && test ! -f "$libfile"; then
450899ca880aSopenharmony_ci	      func_warning "'$lib' has not been installed in '$libdir'"
450999ca880aSopenharmony_ci	      finalize=false
451099ca880aSopenharmony_ci	    fi
451199ca880aSopenharmony_ci	  done
451299ca880aSopenharmony_ci
451399ca880aSopenharmony_ci	  relink_command=
451499ca880aSopenharmony_ci	  func_source "$wrapper"
451599ca880aSopenharmony_ci
451699ca880aSopenharmony_ci	  outputname=
451799ca880aSopenharmony_ci	  if test no = "$fast_install" && test -n "$relink_command"; then
451899ca880aSopenharmony_ci	    $opt_dry_run || {
451999ca880aSopenharmony_ci	      if $finalize; then
452099ca880aSopenharmony_ci	        tmpdir=`func_mktempdir`
452199ca880aSopenharmony_ci		func_basename "$file$stripped_ext"
452299ca880aSopenharmony_ci		file=$func_basename_result
452399ca880aSopenharmony_ci	        outputname=$tmpdir/$file
452499ca880aSopenharmony_ci	        # Replace the output file specification.
452599ca880aSopenharmony_ci	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
452699ca880aSopenharmony_ci
452799ca880aSopenharmony_ci	        $opt_quiet || {
452899ca880aSopenharmony_ci	          func_quote_for_expand "$relink_command"
452999ca880aSopenharmony_ci		  eval "func_echo $func_quote_for_expand_result"
453099ca880aSopenharmony_ci	        }
453199ca880aSopenharmony_ci	        if eval "$relink_command"; then :
453299ca880aSopenharmony_ci	          else
453399ca880aSopenharmony_ci		  func_error "error: relink '$file' with the above command before installing it"
453499ca880aSopenharmony_ci		  $opt_dry_run || ${RM}r "$tmpdir"
453599ca880aSopenharmony_ci		  continue
453699ca880aSopenharmony_ci	        fi
453799ca880aSopenharmony_ci	        file=$outputname
453899ca880aSopenharmony_ci	      else
453999ca880aSopenharmony_ci	        func_warning "cannot relink '$file'"
454099ca880aSopenharmony_ci	      fi
454199ca880aSopenharmony_ci	    }
454299ca880aSopenharmony_ci	  else
454399ca880aSopenharmony_ci	    # Install the binary that we compiled earlier.
454499ca880aSopenharmony_ci	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
454599ca880aSopenharmony_ci	  fi
454699ca880aSopenharmony_ci	fi
454799ca880aSopenharmony_ci
454899ca880aSopenharmony_ci	# remove .exe since cygwin /usr/bin/install will append another
454999ca880aSopenharmony_ci	# one anyway
455099ca880aSopenharmony_ci	case $install_prog,$host in
455199ca880aSopenharmony_ci	*/usr/bin/install*,*cygwin*)
455299ca880aSopenharmony_ci	  case $file:$destfile in
455399ca880aSopenharmony_ci	  *.exe:*.exe)
455499ca880aSopenharmony_ci	    # this is ok
455599ca880aSopenharmony_ci	    ;;
455699ca880aSopenharmony_ci	  *.exe:*)
455799ca880aSopenharmony_ci	    destfile=$destfile.exe
455899ca880aSopenharmony_ci	    ;;
455999ca880aSopenharmony_ci	  *:*.exe)
456099ca880aSopenharmony_ci	    func_stripname '' '.exe' "$destfile"
456199ca880aSopenharmony_ci	    destfile=$func_stripname_result
456299ca880aSopenharmony_ci	    ;;
456399ca880aSopenharmony_ci	  esac
456499ca880aSopenharmony_ci	  ;;
456599ca880aSopenharmony_ci	esac
456699ca880aSopenharmony_ci	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
456799ca880aSopenharmony_ci	$opt_dry_run || if test -n "$outputname"; then
456899ca880aSopenharmony_ci	  ${RM}r "$tmpdir"
456999ca880aSopenharmony_ci	fi
457099ca880aSopenharmony_ci	;;
457199ca880aSopenharmony_ci      esac
457299ca880aSopenharmony_ci    done
457399ca880aSopenharmony_ci
457499ca880aSopenharmony_ci    for file in $staticlibs; do
457599ca880aSopenharmony_ci      func_basename "$file"
457699ca880aSopenharmony_ci      name=$func_basename_result
457799ca880aSopenharmony_ci
457899ca880aSopenharmony_ci      # Set up the ranlib parameters.
457999ca880aSopenharmony_ci      oldlib=$destdir/$name
458099ca880aSopenharmony_ci      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
458199ca880aSopenharmony_ci      tool_oldlib=$func_to_tool_file_result
458299ca880aSopenharmony_ci
458399ca880aSopenharmony_ci      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
458499ca880aSopenharmony_ci
458599ca880aSopenharmony_ci      if test -n "$stripme" && test -n "$old_striplib"; then
458699ca880aSopenharmony_ci	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
458799ca880aSopenharmony_ci      fi
458899ca880aSopenharmony_ci
458999ca880aSopenharmony_ci      # Do each command in the postinstall commands.
459099ca880aSopenharmony_ci      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
459199ca880aSopenharmony_ci    done
459299ca880aSopenharmony_ci
459399ca880aSopenharmony_ci    test -n "$future_libdirs" && \
459499ca880aSopenharmony_ci      func_warning "remember to run '$progname --finish$future_libdirs'"
459599ca880aSopenharmony_ci
459699ca880aSopenharmony_ci    if test -n "$current_libdirs"; then
459799ca880aSopenharmony_ci      # Maybe just do a dry run.
459899ca880aSopenharmony_ci      $opt_dry_run && current_libdirs=" -n$current_libdirs"
459999ca880aSopenharmony_ci      exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs'
460099ca880aSopenharmony_ci    else
460199ca880aSopenharmony_ci      exit $EXIT_SUCCESS
460299ca880aSopenharmony_ci    fi
460399ca880aSopenharmony_ci}
460499ca880aSopenharmony_ci
460599ca880aSopenharmony_citest install = "$opt_mode" && func_mode_install ${1+"$@"}
460699ca880aSopenharmony_ci
460799ca880aSopenharmony_ci
460899ca880aSopenharmony_ci# func_generate_dlsyms outputname originator pic_p
460999ca880aSopenharmony_ci# Extract symbols from dlprefiles and create ${outputname}S.o with
461099ca880aSopenharmony_ci# a dlpreopen symbol table.
461199ca880aSopenharmony_cifunc_generate_dlsyms ()
461299ca880aSopenharmony_ci{
461399ca880aSopenharmony_ci    $debug_cmd
461499ca880aSopenharmony_ci
461599ca880aSopenharmony_ci    my_outputname=$1
461699ca880aSopenharmony_ci    my_originator=$2
461799ca880aSopenharmony_ci    my_pic_p=${3-false}
461899ca880aSopenharmony_ci    my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'`
461999ca880aSopenharmony_ci    my_dlsyms=
462099ca880aSopenharmony_ci
462199ca880aSopenharmony_ci    if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
462299ca880aSopenharmony_ci      if test -n "$NM" && test -n "$global_symbol_pipe"; then
462399ca880aSopenharmony_ci	my_dlsyms=${my_outputname}S.c
462499ca880aSopenharmony_ci      else
462599ca880aSopenharmony_ci	func_error "not configured to extract global symbols from dlpreopened files"
462699ca880aSopenharmony_ci      fi
462799ca880aSopenharmony_ci    fi
462899ca880aSopenharmony_ci
462999ca880aSopenharmony_ci    if test -n "$my_dlsyms"; then
463099ca880aSopenharmony_ci      case $my_dlsyms in
463199ca880aSopenharmony_ci      "") ;;
463299ca880aSopenharmony_ci      *.c)
463399ca880aSopenharmony_ci	# Discover the nlist of each of the dlfiles.
463499ca880aSopenharmony_ci	nlist=$output_objdir/$my_outputname.nm
463599ca880aSopenharmony_ci
463699ca880aSopenharmony_ci	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
463799ca880aSopenharmony_ci
463899ca880aSopenharmony_ci	# Parse the name list into a source file.
463999ca880aSopenharmony_ci	func_verbose "creating $output_objdir/$my_dlsyms"
464099ca880aSopenharmony_ci
464199ca880aSopenharmony_ci	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
464299ca880aSopenharmony_ci/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */
464399ca880aSopenharmony_ci/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */
464499ca880aSopenharmony_ci
464599ca880aSopenharmony_ci#ifdef __cplusplus
464699ca880aSopenharmony_ciextern \"C\" {
464799ca880aSopenharmony_ci#endif
464899ca880aSopenharmony_ci
464999ca880aSopenharmony_ci#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
465099ca880aSopenharmony_ci#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
465199ca880aSopenharmony_ci#endif
465299ca880aSopenharmony_ci
465399ca880aSopenharmony_ci/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
465499ca880aSopenharmony_ci#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
465599ca880aSopenharmony_ci/* DATA imports from DLLs on WIN32 can't be const, because runtime
465699ca880aSopenharmony_ci   relocations are performed -- see ld's documentation on pseudo-relocs.  */
465799ca880aSopenharmony_ci# define LT_DLSYM_CONST
465899ca880aSopenharmony_ci#elif defined __osf__
465999ca880aSopenharmony_ci/* This system does not cope well with relocations in const data.  */
466099ca880aSopenharmony_ci# define LT_DLSYM_CONST
466199ca880aSopenharmony_ci#else
466299ca880aSopenharmony_ci# define LT_DLSYM_CONST const
466399ca880aSopenharmony_ci#endif
466499ca880aSopenharmony_ci
466599ca880aSopenharmony_ci#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
466699ca880aSopenharmony_ci
466799ca880aSopenharmony_ci/* External symbol declarations for the compiler. */\
466899ca880aSopenharmony_ci"
466999ca880aSopenharmony_ci
467099ca880aSopenharmony_ci	if test yes = "$dlself"; then
467199ca880aSopenharmony_ci	  func_verbose "generating symbol list for '$output'"
467299ca880aSopenharmony_ci
467399ca880aSopenharmony_ci	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
467499ca880aSopenharmony_ci
467599ca880aSopenharmony_ci	  # Add our own program objects to the symbol list.
467699ca880aSopenharmony_ci	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
467799ca880aSopenharmony_ci	  for progfile in $progfiles; do
467899ca880aSopenharmony_ci	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
467999ca880aSopenharmony_ci	    func_verbose "extracting global C symbols from '$func_to_tool_file_result'"
468099ca880aSopenharmony_ci	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
468199ca880aSopenharmony_ci	  done
468299ca880aSopenharmony_ci
468399ca880aSopenharmony_ci	  if test -n "$exclude_expsyms"; then
468499ca880aSopenharmony_ci	    $opt_dry_run || {
468599ca880aSopenharmony_ci	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
468699ca880aSopenharmony_ci	      eval '$MV "$nlist"T "$nlist"'
468799ca880aSopenharmony_ci	    }
468899ca880aSopenharmony_ci	  fi
468999ca880aSopenharmony_ci
469099ca880aSopenharmony_ci	  if test -n "$export_symbols_regex"; then
469199ca880aSopenharmony_ci	    $opt_dry_run || {
469299ca880aSopenharmony_ci	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
469399ca880aSopenharmony_ci	      eval '$MV "$nlist"T "$nlist"'
469499ca880aSopenharmony_ci	    }
469599ca880aSopenharmony_ci	  fi
469699ca880aSopenharmony_ci
469799ca880aSopenharmony_ci	  # Prepare the list of exported symbols
469899ca880aSopenharmony_ci	  if test -z "$export_symbols"; then
469999ca880aSopenharmony_ci	    export_symbols=$output_objdir/$outputname.exp
470099ca880aSopenharmony_ci	    $opt_dry_run || {
470199ca880aSopenharmony_ci	      $RM $export_symbols
470299ca880aSopenharmony_ci	      eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
470399ca880aSopenharmony_ci	      case $host in
470499ca880aSopenharmony_ci	      *cygwin* | *mingw* | *cegcc* )
470599ca880aSopenharmony_ci                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
470699ca880aSopenharmony_ci                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
470799ca880aSopenharmony_ci	        ;;
470899ca880aSopenharmony_ci	      esac
470999ca880aSopenharmony_ci	    }
471099ca880aSopenharmony_ci	  else
471199ca880aSopenharmony_ci	    $opt_dry_run || {
471299ca880aSopenharmony_ci	      eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
471399ca880aSopenharmony_ci	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
471499ca880aSopenharmony_ci	      eval '$MV "$nlist"T "$nlist"'
471599ca880aSopenharmony_ci	      case $host in
471699ca880aSopenharmony_ci	        *cygwin* | *mingw* | *cegcc* )
471799ca880aSopenharmony_ci	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
471899ca880aSopenharmony_ci	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
471999ca880aSopenharmony_ci	          ;;
472099ca880aSopenharmony_ci	      esac
472199ca880aSopenharmony_ci	    }
472299ca880aSopenharmony_ci	  fi
472399ca880aSopenharmony_ci	fi
472499ca880aSopenharmony_ci
472599ca880aSopenharmony_ci	for dlprefile in $dlprefiles; do
472699ca880aSopenharmony_ci	  func_verbose "extracting global C symbols from '$dlprefile'"
472799ca880aSopenharmony_ci	  func_basename "$dlprefile"
472899ca880aSopenharmony_ci	  name=$func_basename_result
472999ca880aSopenharmony_ci          case $host in
473099ca880aSopenharmony_ci	    *cygwin* | *mingw* | *cegcc* )
473199ca880aSopenharmony_ci	      # if an import library, we need to obtain dlname
473299ca880aSopenharmony_ci	      if func_win32_import_lib_p "$dlprefile"; then
473399ca880aSopenharmony_ci	        func_tr_sh "$dlprefile"
473499ca880aSopenharmony_ci	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
473599ca880aSopenharmony_ci	        dlprefile_dlbasename=
473699ca880aSopenharmony_ci	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
473799ca880aSopenharmony_ci	          # Use subshell, to avoid clobbering current variable values
473899ca880aSopenharmony_ci	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
473999ca880aSopenharmony_ci	          if test -n "$dlprefile_dlname"; then
474099ca880aSopenharmony_ci	            func_basename "$dlprefile_dlname"
474199ca880aSopenharmony_ci	            dlprefile_dlbasename=$func_basename_result
474299ca880aSopenharmony_ci	          else
474399ca880aSopenharmony_ci	            # no lafile. user explicitly requested -dlpreopen <import library>.
474499ca880aSopenharmony_ci	            $sharedlib_from_linklib_cmd "$dlprefile"
474599ca880aSopenharmony_ci	            dlprefile_dlbasename=$sharedlib_from_linklib_result
474699ca880aSopenharmony_ci	          fi
474799ca880aSopenharmony_ci	        fi
474899ca880aSopenharmony_ci	        $opt_dry_run || {
474999ca880aSopenharmony_ci	          if test -n "$dlprefile_dlbasename"; then
475099ca880aSopenharmony_ci	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
475199ca880aSopenharmony_ci	          else
475299ca880aSopenharmony_ci	            func_warning "Could not compute DLL name from $name"
475399ca880aSopenharmony_ci	            eval '$ECHO ": $name " >> "$nlist"'
475499ca880aSopenharmony_ci	          fi
475599ca880aSopenharmony_ci	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
475699ca880aSopenharmony_ci	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
475799ca880aSopenharmony_ci	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
475899ca880aSopenharmony_ci	        }
475999ca880aSopenharmony_ci	      else # not an import lib
476099ca880aSopenharmony_ci	        $opt_dry_run || {
476199ca880aSopenharmony_ci	          eval '$ECHO ": $name " >> "$nlist"'
476299ca880aSopenharmony_ci	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
476399ca880aSopenharmony_ci	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
476499ca880aSopenharmony_ci	        }
476599ca880aSopenharmony_ci	      fi
476699ca880aSopenharmony_ci	    ;;
476799ca880aSopenharmony_ci	    *)
476899ca880aSopenharmony_ci	      $opt_dry_run || {
476999ca880aSopenharmony_ci	        eval '$ECHO ": $name " >> "$nlist"'
477099ca880aSopenharmony_ci	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
477199ca880aSopenharmony_ci	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
477299ca880aSopenharmony_ci	      }
477399ca880aSopenharmony_ci	    ;;
477499ca880aSopenharmony_ci          esac
477599ca880aSopenharmony_ci	done
477699ca880aSopenharmony_ci
477799ca880aSopenharmony_ci	$opt_dry_run || {
477899ca880aSopenharmony_ci	  # Make sure we have at least an empty file.
477999ca880aSopenharmony_ci	  test -f "$nlist" || : > "$nlist"
478099ca880aSopenharmony_ci
478199ca880aSopenharmony_ci	  if test -n "$exclude_expsyms"; then
478299ca880aSopenharmony_ci	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
478399ca880aSopenharmony_ci	    $MV "$nlist"T "$nlist"
478499ca880aSopenharmony_ci	  fi
478599ca880aSopenharmony_ci
478699ca880aSopenharmony_ci	  # Try sorting and uniquifying the output.
478799ca880aSopenharmony_ci	  if $GREP -v "^: " < "$nlist" |
478899ca880aSopenharmony_ci	      if sort -k 3 </dev/null >/dev/null 2>&1; then
478999ca880aSopenharmony_ci		sort -k 3
479099ca880aSopenharmony_ci	      else
479199ca880aSopenharmony_ci		sort +2
479299ca880aSopenharmony_ci	      fi |
479399ca880aSopenharmony_ci	      uniq > "$nlist"S; then
479499ca880aSopenharmony_ci	    :
479599ca880aSopenharmony_ci	  else
479699ca880aSopenharmony_ci	    $GREP -v "^: " < "$nlist" > "$nlist"S
479799ca880aSopenharmony_ci	  fi
479899ca880aSopenharmony_ci
479999ca880aSopenharmony_ci	  if test -f "$nlist"S; then
480099ca880aSopenharmony_ci	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
480199ca880aSopenharmony_ci	  else
480299ca880aSopenharmony_ci	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
480399ca880aSopenharmony_ci	  fi
480499ca880aSopenharmony_ci
480599ca880aSopenharmony_ci	  func_show_eval '$RM "${nlist}I"'
480699ca880aSopenharmony_ci	  if test -n "$global_symbol_to_import"; then
480799ca880aSopenharmony_ci	    eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I'
480899ca880aSopenharmony_ci	  fi
480999ca880aSopenharmony_ci
481099ca880aSopenharmony_ci	  echo >> "$output_objdir/$my_dlsyms" "\
481199ca880aSopenharmony_ci
481299ca880aSopenharmony_ci/* The mapping between symbol names and symbols.  */
481399ca880aSopenharmony_citypedef struct {
481499ca880aSopenharmony_ci  const char *name;
481599ca880aSopenharmony_ci  void *address;
481699ca880aSopenharmony_ci} lt_dlsymlist;
481799ca880aSopenharmony_ciextern LT_DLSYM_CONST lt_dlsymlist
481899ca880aSopenharmony_cilt_${my_prefix}_LTX_preloaded_symbols[];\
481999ca880aSopenharmony_ci"
482099ca880aSopenharmony_ci
482199ca880aSopenharmony_ci	  if test -s "$nlist"I; then
482299ca880aSopenharmony_ci	    echo >> "$output_objdir/$my_dlsyms" "\
482399ca880aSopenharmony_cistatic void lt_syminit(void)
482499ca880aSopenharmony_ci{
482599ca880aSopenharmony_ci  LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols;
482699ca880aSopenharmony_ci  for (; symbol->name; ++symbol)
482799ca880aSopenharmony_ci    {"
482899ca880aSopenharmony_ci	    $SED 's/.*/      if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms"
482999ca880aSopenharmony_ci	    echo >> "$output_objdir/$my_dlsyms" "\
483099ca880aSopenharmony_ci    }
483199ca880aSopenharmony_ci}"
483299ca880aSopenharmony_ci	  fi
483399ca880aSopenharmony_ci	  echo >> "$output_objdir/$my_dlsyms" "\
483499ca880aSopenharmony_ciLT_DLSYM_CONST lt_dlsymlist
483599ca880aSopenharmony_cilt_${my_prefix}_LTX_preloaded_symbols[] =
483699ca880aSopenharmony_ci{ {\"$my_originator\", (void *) 0},"
483799ca880aSopenharmony_ci
483899ca880aSopenharmony_ci	  if test -s "$nlist"I; then
483999ca880aSopenharmony_ci	    echo >> "$output_objdir/$my_dlsyms" "\
484099ca880aSopenharmony_ci  {\"@INIT@\", (void *) &lt_syminit},"
484199ca880aSopenharmony_ci	  fi
484299ca880aSopenharmony_ci
484399ca880aSopenharmony_ci	  case $need_lib_prefix in
484499ca880aSopenharmony_ci	  no)
484599ca880aSopenharmony_ci	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
484699ca880aSopenharmony_ci	    ;;
484799ca880aSopenharmony_ci	  *)
484899ca880aSopenharmony_ci	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
484999ca880aSopenharmony_ci	    ;;
485099ca880aSopenharmony_ci	  esac
485199ca880aSopenharmony_ci	  echo >> "$output_objdir/$my_dlsyms" "\
485299ca880aSopenharmony_ci  {0, (void *) 0}
485399ca880aSopenharmony_ci};
485499ca880aSopenharmony_ci
485599ca880aSopenharmony_ci/* This works around a problem in FreeBSD linker */
485699ca880aSopenharmony_ci#ifdef FREEBSD_WORKAROUND
485799ca880aSopenharmony_cistatic const void *lt_preloaded_setup() {
485899ca880aSopenharmony_ci  return lt_${my_prefix}_LTX_preloaded_symbols;
485999ca880aSopenharmony_ci}
486099ca880aSopenharmony_ci#endif
486199ca880aSopenharmony_ci
486299ca880aSopenharmony_ci#ifdef __cplusplus
486399ca880aSopenharmony_ci}
486499ca880aSopenharmony_ci#endif\
486599ca880aSopenharmony_ci"
486699ca880aSopenharmony_ci	} # !$opt_dry_run
486799ca880aSopenharmony_ci
486899ca880aSopenharmony_ci	pic_flag_for_symtable=
486999ca880aSopenharmony_ci	case "$compile_command " in
487099ca880aSopenharmony_ci	*" -static "*) ;;
487199ca880aSopenharmony_ci	*)
487299ca880aSopenharmony_ci	  case $host in
487399ca880aSopenharmony_ci	  # compiling the symbol table file with pic_flag works around
487499ca880aSopenharmony_ci	  # a FreeBSD bug that causes programs to crash when -lm is
487599ca880aSopenharmony_ci	  # linked before any other PIC object.  But we must not use
487699ca880aSopenharmony_ci	  # pic_flag when linking with -static.  The problem exists in
487799ca880aSopenharmony_ci	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
487899ca880aSopenharmony_ci	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
487999ca880aSopenharmony_ci	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
488099ca880aSopenharmony_ci	  *-*-hpux*)
488199ca880aSopenharmony_ci	    pic_flag_for_symtable=" $pic_flag"  ;;
488299ca880aSopenharmony_ci	  *)
488399ca880aSopenharmony_ci	    $my_pic_p && pic_flag_for_symtable=" $pic_flag"
488499ca880aSopenharmony_ci	    ;;
488599ca880aSopenharmony_ci	  esac
488699ca880aSopenharmony_ci	  ;;
488799ca880aSopenharmony_ci	esac
488899ca880aSopenharmony_ci	symtab_cflags=
488999ca880aSopenharmony_ci	for arg in $LTCFLAGS; do
489099ca880aSopenharmony_ci	  case $arg in
489199ca880aSopenharmony_ci	  -pie | -fpie | -fPIE) ;;
489299ca880aSopenharmony_ci	  *) func_append symtab_cflags " $arg" ;;
489399ca880aSopenharmony_ci	  esac
489499ca880aSopenharmony_ci	done
489599ca880aSopenharmony_ci
489699ca880aSopenharmony_ci	# Now compile the dynamic symbol file.
489799ca880aSopenharmony_ci	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
489899ca880aSopenharmony_ci
489999ca880aSopenharmony_ci	# Clean up the generated files.
490099ca880aSopenharmony_ci	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"'
490199ca880aSopenharmony_ci
490299ca880aSopenharmony_ci	# Transform the symbol file into the correct name.
490399ca880aSopenharmony_ci	symfileobj=$output_objdir/${my_outputname}S.$objext
490499ca880aSopenharmony_ci	case $host in
490599ca880aSopenharmony_ci	*cygwin* | *mingw* | *cegcc* )
490699ca880aSopenharmony_ci	  if test -f "$output_objdir/$my_outputname.def"; then
490799ca880aSopenharmony_ci	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
490899ca880aSopenharmony_ci	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
490999ca880aSopenharmony_ci	  else
491099ca880aSopenharmony_ci	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
491199ca880aSopenharmony_ci	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
491299ca880aSopenharmony_ci	  fi
491399ca880aSopenharmony_ci	  ;;
491499ca880aSopenharmony_ci	*)
491599ca880aSopenharmony_ci	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
491699ca880aSopenharmony_ci	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
491799ca880aSopenharmony_ci	  ;;
491899ca880aSopenharmony_ci	esac
491999ca880aSopenharmony_ci	;;
492099ca880aSopenharmony_ci      *)
492199ca880aSopenharmony_ci	func_fatal_error "unknown suffix for '$my_dlsyms'"
492299ca880aSopenharmony_ci	;;
492399ca880aSopenharmony_ci      esac
492499ca880aSopenharmony_ci    else
492599ca880aSopenharmony_ci      # We keep going just in case the user didn't refer to
492699ca880aSopenharmony_ci      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
492799ca880aSopenharmony_ci      # really was required.
492899ca880aSopenharmony_ci
492999ca880aSopenharmony_ci      # Nullify the symbol file.
493099ca880aSopenharmony_ci      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
493199ca880aSopenharmony_ci      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
493299ca880aSopenharmony_ci    fi
493399ca880aSopenharmony_ci}
493499ca880aSopenharmony_ci
493599ca880aSopenharmony_ci# func_cygming_gnu_implib_p ARG
493699ca880aSopenharmony_ci# This predicate returns with zero status (TRUE) if
493799ca880aSopenharmony_ci# ARG is a GNU/binutils-style import library. Returns
493899ca880aSopenharmony_ci# with nonzero status (FALSE) otherwise.
493999ca880aSopenharmony_cifunc_cygming_gnu_implib_p ()
494099ca880aSopenharmony_ci{
494199ca880aSopenharmony_ci  $debug_cmd
494299ca880aSopenharmony_ci
494399ca880aSopenharmony_ci  func_to_tool_file "$1" func_convert_file_msys_to_w32
494499ca880aSopenharmony_ci  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
494599ca880aSopenharmony_ci  test -n "$func_cygming_gnu_implib_tmp"
494699ca880aSopenharmony_ci}
494799ca880aSopenharmony_ci
494899ca880aSopenharmony_ci# func_cygming_ms_implib_p ARG
494999ca880aSopenharmony_ci# This predicate returns with zero status (TRUE) if
495099ca880aSopenharmony_ci# ARG is an MS-style import library. Returns
495199ca880aSopenharmony_ci# with nonzero status (FALSE) otherwise.
495299ca880aSopenharmony_cifunc_cygming_ms_implib_p ()
495399ca880aSopenharmony_ci{
495499ca880aSopenharmony_ci  $debug_cmd
495599ca880aSopenharmony_ci
495699ca880aSopenharmony_ci  func_to_tool_file "$1" func_convert_file_msys_to_w32
495799ca880aSopenharmony_ci  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
495899ca880aSopenharmony_ci  test -n "$func_cygming_ms_implib_tmp"
495999ca880aSopenharmony_ci}
496099ca880aSopenharmony_ci
496199ca880aSopenharmony_ci# func_win32_libid arg
496299ca880aSopenharmony_ci# return the library type of file 'arg'
496399ca880aSopenharmony_ci#
496499ca880aSopenharmony_ci# Need a lot of goo to handle *both* DLLs and import libs
496599ca880aSopenharmony_ci# Has to be a shell function in order to 'eat' the argument
496699ca880aSopenharmony_ci# that is supplied when $file_magic_command is called.
496799ca880aSopenharmony_ci# Despite the name, also deal with 64 bit binaries.
496899ca880aSopenharmony_cifunc_win32_libid ()
496999ca880aSopenharmony_ci{
497099ca880aSopenharmony_ci  $debug_cmd
497199ca880aSopenharmony_ci
497299ca880aSopenharmony_ci  win32_libid_type=unknown
497399ca880aSopenharmony_ci  win32_fileres=`file -L $1 2>/dev/null`
497499ca880aSopenharmony_ci  case $win32_fileres in
497599ca880aSopenharmony_ci  *ar\ archive\ import\ library*) # definitely import
497699ca880aSopenharmony_ci    win32_libid_type="x86 archive import"
497799ca880aSopenharmony_ci    ;;
497899ca880aSopenharmony_ci  *ar\ archive*) # could be an import, or static
497999ca880aSopenharmony_ci    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
498099ca880aSopenharmony_ci    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
498199ca880aSopenharmony_ci       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
498299ca880aSopenharmony_ci      case $nm_interface in
498399ca880aSopenharmony_ci      "MS dumpbin")
498499ca880aSopenharmony_ci	if func_cygming_ms_implib_p "$1" ||
498599ca880aSopenharmony_ci	   func_cygming_gnu_implib_p "$1"
498699ca880aSopenharmony_ci	then
498799ca880aSopenharmony_ci	  win32_nmres=import
498899ca880aSopenharmony_ci	else
498999ca880aSopenharmony_ci	  win32_nmres=
499099ca880aSopenharmony_ci	fi
499199ca880aSopenharmony_ci	;;
499299ca880aSopenharmony_ci      *)
499399ca880aSopenharmony_ci	func_to_tool_file "$1" func_convert_file_msys_to_w32
499499ca880aSopenharmony_ci	win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
499599ca880aSopenharmony_ci	  $SED -n -e '
499699ca880aSopenharmony_ci	    1,100{
499799ca880aSopenharmony_ci		/ I /{
499899ca880aSopenharmony_ci		    s|.*|import|
499999ca880aSopenharmony_ci		    p
500099ca880aSopenharmony_ci		    q
500199ca880aSopenharmony_ci		}
500299ca880aSopenharmony_ci	    }'`
500399ca880aSopenharmony_ci	;;
500499ca880aSopenharmony_ci      esac
500599ca880aSopenharmony_ci      case $win32_nmres in
500699ca880aSopenharmony_ci      import*)  win32_libid_type="x86 archive import";;
500799ca880aSopenharmony_ci      *)        win32_libid_type="x86 archive static";;
500899ca880aSopenharmony_ci      esac
500999ca880aSopenharmony_ci    fi
501099ca880aSopenharmony_ci    ;;
501199ca880aSopenharmony_ci  *DLL*)
501299ca880aSopenharmony_ci    win32_libid_type="x86 DLL"
501399ca880aSopenharmony_ci    ;;
501499ca880aSopenharmony_ci  *executable*) # but shell scripts are "executable" too...
501599ca880aSopenharmony_ci    case $win32_fileres in
501699ca880aSopenharmony_ci    *MS\ Windows\ PE\ Intel*)
501799ca880aSopenharmony_ci      win32_libid_type="x86 DLL"
501899ca880aSopenharmony_ci      ;;
501999ca880aSopenharmony_ci    esac
502099ca880aSopenharmony_ci    ;;
502199ca880aSopenharmony_ci  esac
502299ca880aSopenharmony_ci  $ECHO "$win32_libid_type"
502399ca880aSopenharmony_ci}
502499ca880aSopenharmony_ci
502599ca880aSopenharmony_ci# func_cygming_dll_for_implib ARG
502699ca880aSopenharmony_ci#
502799ca880aSopenharmony_ci# Platform-specific function to extract the
502899ca880aSopenharmony_ci# name of the DLL associated with the specified
502999ca880aSopenharmony_ci# import library ARG.
503099ca880aSopenharmony_ci# Invoked by eval'ing the libtool variable
503199ca880aSopenharmony_ci#    $sharedlib_from_linklib_cmd
503299ca880aSopenharmony_ci# Result is available in the variable
503399ca880aSopenharmony_ci#    $sharedlib_from_linklib_result
503499ca880aSopenharmony_cifunc_cygming_dll_for_implib ()
503599ca880aSopenharmony_ci{
503699ca880aSopenharmony_ci  $debug_cmd
503799ca880aSopenharmony_ci
503899ca880aSopenharmony_ci  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
503999ca880aSopenharmony_ci}
504099ca880aSopenharmony_ci
504199ca880aSopenharmony_ci# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
504299ca880aSopenharmony_ci#
504399ca880aSopenharmony_ci# The is the core of a fallback implementation of a
504499ca880aSopenharmony_ci# platform-specific function to extract the name of the
504599ca880aSopenharmony_ci# DLL associated with the specified import library LIBNAME.
504699ca880aSopenharmony_ci#
504799ca880aSopenharmony_ci# SECTION_NAME is either .idata$6 or .idata$7, depending
504899ca880aSopenharmony_ci# on the platform and compiler that created the implib.
504999ca880aSopenharmony_ci#
505099ca880aSopenharmony_ci# Echos the name of the DLL associated with the
505199ca880aSopenharmony_ci# specified import library.
505299ca880aSopenharmony_cifunc_cygming_dll_for_implib_fallback_core ()
505399ca880aSopenharmony_ci{
505499ca880aSopenharmony_ci  $debug_cmd
505599ca880aSopenharmony_ci
505699ca880aSopenharmony_ci  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
505799ca880aSopenharmony_ci  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
505899ca880aSopenharmony_ci    $SED '/^Contents of section '"$match_literal"':/{
505999ca880aSopenharmony_ci      # Place marker at beginning of archive member dllname section
506099ca880aSopenharmony_ci      s/.*/====MARK====/
506199ca880aSopenharmony_ci      p
506299ca880aSopenharmony_ci      d
506399ca880aSopenharmony_ci    }
506499ca880aSopenharmony_ci    # These lines can sometimes be longer than 43 characters, but
506599ca880aSopenharmony_ci    # are always uninteresting
506699ca880aSopenharmony_ci    /:[	 ]*file format pe[i]\{,1\}-/d
506799ca880aSopenharmony_ci    /^In archive [^:]*:/d
506899ca880aSopenharmony_ci    # Ensure marker is printed
506999ca880aSopenharmony_ci    /^====MARK====/p
507099ca880aSopenharmony_ci    # Remove all lines with less than 43 characters
507199ca880aSopenharmony_ci    /^.\{43\}/!d
507299ca880aSopenharmony_ci    # From remaining lines, remove first 43 characters
507399ca880aSopenharmony_ci    s/^.\{43\}//' |
507499ca880aSopenharmony_ci    $SED -n '
507599ca880aSopenharmony_ci      # Join marker and all lines until next marker into a single line
507699ca880aSopenharmony_ci      /^====MARK====/ b para
507799ca880aSopenharmony_ci      H
507899ca880aSopenharmony_ci      $ b para
507999ca880aSopenharmony_ci      b
508099ca880aSopenharmony_ci      :para
508199ca880aSopenharmony_ci      x
508299ca880aSopenharmony_ci      s/\n//g
508399ca880aSopenharmony_ci      # Remove the marker
508499ca880aSopenharmony_ci      s/^====MARK====//
508599ca880aSopenharmony_ci      # Remove trailing dots and whitespace
508699ca880aSopenharmony_ci      s/[\. \t]*$//
508799ca880aSopenharmony_ci      # Print
508899ca880aSopenharmony_ci      /./p' |
508999ca880aSopenharmony_ci    # we now have a list, one entry per line, of the stringified
509099ca880aSopenharmony_ci    # contents of the appropriate section of all members of the
509199ca880aSopenharmony_ci    # archive that possess that section. Heuristic: eliminate
509299ca880aSopenharmony_ci    # all those that have a first or second character that is
509399ca880aSopenharmony_ci    # a '.' (that is, objdump's representation of an unprintable
509499ca880aSopenharmony_ci    # character.) This should work for all archives with less than
509599ca880aSopenharmony_ci    # 0x302f exports -- but will fail for DLLs whose name actually
509699ca880aSopenharmony_ci    # begins with a literal '.' or a single character followed by
509799ca880aSopenharmony_ci    # a '.'.
509899ca880aSopenharmony_ci    #
509999ca880aSopenharmony_ci    # Of those that remain, print the first one.
510099ca880aSopenharmony_ci    $SED -e '/^\./d;/^.\./d;q'
510199ca880aSopenharmony_ci}
510299ca880aSopenharmony_ci
510399ca880aSopenharmony_ci# func_cygming_dll_for_implib_fallback ARG
510499ca880aSopenharmony_ci# Platform-specific function to extract the
510599ca880aSopenharmony_ci# name of the DLL associated with the specified
510699ca880aSopenharmony_ci# import library ARG.
510799ca880aSopenharmony_ci#
510899ca880aSopenharmony_ci# This fallback implementation is for use when $DLLTOOL
510999ca880aSopenharmony_ci# does not support the --identify-strict option.
511099ca880aSopenharmony_ci# Invoked by eval'ing the libtool variable
511199ca880aSopenharmony_ci#    $sharedlib_from_linklib_cmd
511299ca880aSopenharmony_ci# Result is available in the variable
511399ca880aSopenharmony_ci#    $sharedlib_from_linklib_result
511499ca880aSopenharmony_cifunc_cygming_dll_for_implib_fallback ()
511599ca880aSopenharmony_ci{
511699ca880aSopenharmony_ci  $debug_cmd
511799ca880aSopenharmony_ci
511899ca880aSopenharmony_ci  if func_cygming_gnu_implib_p "$1"; then
511999ca880aSopenharmony_ci    # binutils import library
512099ca880aSopenharmony_ci    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
512199ca880aSopenharmony_ci  elif func_cygming_ms_implib_p "$1"; then
512299ca880aSopenharmony_ci    # ms-generated import library
512399ca880aSopenharmony_ci    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
512499ca880aSopenharmony_ci  else
512599ca880aSopenharmony_ci    # unknown
512699ca880aSopenharmony_ci    sharedlib_from_linklib_result=
512799ca880aSopenharmony_ci  fi
512899ca880aSopenharmony_ci}
512999ca880aSopenharmony_ci
513099ca880aSopenharmony_ci
513199ca880aSopenharmony_ci# func_extract_an_archive dir oldlib
513299ca880aSopenharmony_cifunc_extract_an_archive ()
513399ca880aSopenharmony_ci{
513499ca880aSopenharmony_ci    $debug_cmd
513599ca880aSopenharmony_ci
513699ca880aSopenharmony_ci    f_ex_an_ar_dir=$1; shift
513799ca880aSopenharmony_ci    f_ex_an_ar_oldlib=$1
513899ca880aSopenharmony_ci    if test yes = "$lock_old_archive_extraction"; then
513999ca880aSopenharmony_ci      lockfile=$f_ex_an_ar_oldlib.lock
514099ca880aSopenharmony_ci      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
514199ca880aSopenharmony_ci	func_echo "Waiting for $lockfile to be removed"
514299ca880aSopenharmony_ci	sleep 2
514399ca880aSopenharmony_ci      done
514499ca880aSopenharmony_ci    fi
514599ca880aSopenharmony_ci    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
514699ca880aSopenharmony_ci		   'stat=$?; rm -f "$lockfile"; exit $stat'
514799ca880aSopenharmony_ci    if test yes = "$lock_old_archive_extraction"; then
514899ca880aSopenharmony_ci      $opt_dry_run || rm -f "$lockfile"
514999ca880aSopenharmony_ci    fi
515099ca880aSopenharmony_ci    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
515199ca880aSopenharmony_ci     :
515299ca880aSopenharmony_ci    else
515399ca880aSopenharmony_ci      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
515499ca880aSopenharmony_ci    fi
515599ca880aSopenharmony_ci}
515699ca880aSopenharmony_ci
515799ca880aSopenharmony_ci
515899ca880aSopenharmony_ci# func_extract_archives gentop oldlib ...
515999ca880aSopenharmony_cifunc_extract_archives ()
516099ca880aSopenharmony_ci{
516199ca880aSopenharmony_ci    $debug_cmd
516299ca880aSopenharmony_ci
516399ca880aSopenharmony_ci    my_gentop=$1; shift
516499ca880aSopenharmony_ci    my_oldlibs=${1+"$@"}
516599ca880aSopenharmony_ci    my_oldobjs=
516699ca880aSopenharmony_ci    my_xlib=
516799ca880aSopenharmony_ci    my_xabs=
516899ca880aSopenharmony_ci    my_xdir=
516999ca880aSopenharmony_ci
517099ca880aSopenharmony_ci    for my_xlib in $my_oldlibs; do
517199ca880aSopenharmony_ci      # Extract the objects.
517299ca880aSopenharmony_ci      case $my_xlib in
517399ca880aSopenharmony_ci	[\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;;
517499ca880aSopenharmony_ci	*) my_xabs=`pwd`"/$my_xlib" ;;
517599ca880aSopenharmony_ci      esac
517699ca880aSopenharmony_ci      func_basename "$my_xlib"
517799ca880aSopenharmony_ci      my_xlib=$func_basename_result
517899ca880aSopenharmony_ci      my_xlib_u=$my_xlib
517999ca880aSopenharmony_ci      while :; do
518099ca880aSopenharmony_ci        case " $extracted_archives " in
518199ca880aSopenharmony_ci	*" $my_xlib_u "*)
518299ca880aSopenharmony_ci	  func_arith $extracted_serial + 1
518399ca880aSopenharmony_ci	  extracted_serial=$func_arith_result
518499ca880aSopenharmony_ci	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
518599ca880aSopenharmony_ci	*) break ;;
518699ca880aSopenharmony_ci	esac
518799ca880aSopenharmony_ci      done
518899ca880aSopenharmony_ci      extracted_archives="$extracted_archives $my_xlib_u"
518999ca880aSopenharmony_ci      my_xdir=$my_gentop/$my_xlib_u
519099ca880aSopenharmony_ci
519199ca880aSopenharmony_ci      func_mkdir_p "$my_xdir"
519299ca880aSopenharmony_ci
519399ca880aSopenharmony_ci      case $host in
519499ca880aSopenharmony_ci      *-darwin*)
519599ca880aSopenharmony_ci	func_verbose "Extracting $my_xabs"
519699ca880aSopenharmony_ci	# Do not bother doing anything if just a dry run
519799ca880aSopenharmony_ci	$opt_dry_run || {
519899ca880aSopenharmony_ci	  darwin_orig_dir=`pwd`
519999ca880aSopenharmony_ci	  cd $my_xdir || exit $?
520099ca880aSopenharmony_ci	  darwin_archive=$my_xabs
520199ca880aSopenharmony_ci	  darwin_curdir=`pwd`
520299ca880aSopenharmony_ci	  func_basename "$darwin_archive"
520399ca880aSopenharmony_ci	  darwin_base_archive=$func_basename_result
520499ca880aSopenharmony_ci	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
520599ca880aSopenharmony_ci	  if test -n "$darwin_arches"; then
520699ca880aSopenharmony_ci	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
520799ca880aSopenharmony_ci	    darwin_arch=
520899ca880aSopenharmony_ci	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
520999ca880aSopenharmony_ci	    for darwin_arch in  $darwin_arches; do
521099ca880aSopenharmony_ci	      func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch"
521199ca880aSopenharmony_ci	      $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive"
521299ca880aSopenharmony_ci	      cd "unfat-$$/$darwin_base_archive-$darwin_arch"
521399ca880aSopenharmony_ci	      func_extract_an_archive "`pwd`" "$darwin_base_archive"
521499ca880aSopenharmony_ci	      cd "$darwin_curdir"
521599ca880aSopenharmony_ci	      $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive"
521699ca880aSopenharmony_ci	    done # $darwin_arches
521799ca880aSopenharmony_ci            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
521899ca880aSopenharmony_ci	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u`
521999ca880aSopenharmony_ci	    darwin_file=
522099ca880aSopenharmony_ci	    darwin_files=
522199ca880aSopenharmony_ci	    for darwin_file in $darwin_filelist; do
522299ca880aSopenharmony_ci	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
522399ca880aSopenharmony_ci	      $LIPO -create -output "$darwin_file" $darwin_files
522499ca880aSopenharmony_ci	    done # $darwin_filelist
522599ca880aSopenharmony_ci	    $RM -rf unfat-$$
522699ca880aSopenharmony_ci	    cd "$darwin_orig_dir"
522799ca880aSopenharmony_ci	  else
522899ca880aSopenharmony_ci	    cd $darwin_orig_dir
522999ca880aSopenharmony_ci	    func_extract_an_archive "$my_xdir" "$my_xabs"
523099ca880aSopenharmony_ci	  fi # $darwin_arches
523199ca880aSopenharmony_ci	} # !$opt_dry_run
523299ca880aSopenharmony_ci	;;
523399ca880aSopenharmony_ci      *)
523499ca880aSopenharmony_ci        func_extract_an_archive "$my_xdir" "$my_xabs"
523599ca880aSopenharmony_ci	;;
523699ca880aSopenharmony_ci      esac
523799ca880aSopenharmony_ci      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
523899ca880aSopenharmony_ci    done
523999ca880aSopenharmony_ci
524099ca880aSopenharmony_ci    func_extract_archives_result=$my_oldobjs
524199ca880aSopenharmony_ci}
524299ca880aSopenharmony_ci
524399ca880aSopenharmony_ci
524499ca880aSopenharmony_ci# func_emit_wrapper [arg=no]
524599ca880aSopenharmony_ci#
524699ca880aSopenharmony_ci# Emit a libtool wrapper script on stdout.
524799ca880aSopenharmony_ci# Don't directly open a file because we may want to
524899ca880aSopenharmony_ci# incorporate the script contents within a cygwin/mingw
524999ca880aSopenharmony_ci# wrapper executable.  Must ONLY be called from within
525099ca880aSopenharmony_ci# func_mode_link because it depends on a number of variables
525199ca880aSopenharmony_ci# set therein.
525299ca880aSopenharmony_ci#
525399ca880aSopenharmony_ci# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
525499ca880aSopenharmony_ci# variable will take.  If 'yes', then the emitted script
525599ca880aSopenharmony_ci# will assume that the directory where it is stored is
525699ca880aSopenharmony_ci# the $objdir directory.  This is a cygwin/mingw-specific
525799ca880aSopenharmony_ci# behavior.
525899ca880aSopenharmony_cifunc_emit_wrapper ()
525999ca880aSopenharmony_ci{
526099ca880aSopenharmony_ci	func_emit_wrapper_arg1=${1-no}
526199ca880aSopenharmony_ci
526299ca880aSopenharmony_ci	$ECHO "\
526399ca880aSopenharmony_ci#! $SHELL
526499ca880aSopenharmony_ci
526599ca880aSopenharmony_ci# $output - temporary wrapper script for $objdir/$outputname
526699ca880aSopenharmony_ci# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
526799ca880aSopenharmony_ci#
526899ca880aSopenharmony_ci# The $output program cannot be directly executed until all the libtool
526999ca880aSopenharmony_ci# libraries that it depends on are installed.
527099ca880aSopenharmony_ci#
527199ca880aSopenharmony_ci# This wrapper script should never be moved out of the build directory.
527299ca880aSopenharmony_ci# If it is, it will not operate correctly.
527399ca880aSopenharmony_ci
527499ca880aSopenharmony_ci# Sed substitution that helps us do robust quoting.  It backslashifies
527599ca880aSopenharmony_ci# metacharacters that are still active within double-quoted strings.
527699ca880aSopenharmony_cised_quote_subst='$sed_quote_subst'
527799ca880aSopenharmony_ci
527899ca880aSopenharmony_ci# Be Bourne compatible
527999ca880aSopenharmony_ciif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
528099ca880aSopenharmony_ci  emulate sh
528199ca880aSopenharmony_ci  NULLCMD=:
528299ca880aSopenharmony_ci  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
528399ca880aSopenharmony_ci  # is contrary to our usage.  Disable this feature.
528499ca880aSopenharmony_ci  alias -g '\${1+\"\$@\"}'='\"\$@\"'
528599ca880aSopenharmony_ci  setopt NO_GLOB_SUBST
528699ca880aSopenharmony_cielse
528799ca880aSopenharmony_ci  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
528899ca880aSopenharmony_cifi
528999ca880aSopenharmony_ciBIN_SH=xpg4; export BIN_SH # for Tru64
529099ca880aSopenharmony_ciDUALCASE=1; export DUALCASE # for MKS sh
529199ca880aSopenharmony_ci
529299ca880aSopenharmony_ci# The HP-UX ksh and POSIX shell print the target directory to stdout
529399ca880aSopenharmony_ci# if CDPATH is set.
529499ca880aSopenharmony_ci(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
529599ca880aSopenharmony_ci
529699ca880aSopenharmony_cirelink_command=\"$relink_command\"
529799ca880aSopenharmony_ci
529899ca880aSopenharmony_ci# This environment variable determines our operation mode.
529999ca880aSopenharmony_ciif test \"\$libtool_install_magic\" = \"$magic\"; then
530099ca880aSopenharmony_ci  # install mode needs the following variables:
530199ca880aSopenharmony_ci  generated_by_libtool_version='$macro_version'
530299ca880aSopenharmony_ci  notinst_deplibs='$notinst_deplibs'
530399ca880aSopenharmony_cielse
530499ca880aSopenharmony_ci  # When we are sourced in execute mode, \$file and \$ECHO are already set.
530599ca880aSopenharmony_ci  if test \"\$libtool_execute_magic\" != \"$magic\"; then
530699ca880aSopenharmony_ci    file=\"\$0\""
530799ca880aSopenharmony_ci
530899ca880aSopenharmony_ci    func_quote "$ECHO"
530999ca880aSopenharmony_ci    qECHO=$func_quote_result
531099ca880aSopenharmony_ci    $ECHO "\
531199ca880aSopenharmony_ci
531299ca880aSopenharmony_ci# A function that is used when there is no print builtin or printf.
531399ca880aSopenharmony_cifunc_fallback_echo ()
531499ca880aSopenharmony_ci{
531599ca880aSopenharmony_ci  eval 'cat <<_LTECHO_EOF
531699ca880aSopenharmony_ci\$1
531799ca880aSopenharmony_ci_LTECHO_EOF'
531899ca880aSopenharmony_ci}
531999ca880aSopenharmony_ci    ECHO=\"$qECHO\"
532099ca880aSopenharmony_ci  fi
532199ca880aSopenharmony_ci
532299ca880aSopenharmony_ci# Very basic option parsing. These options are (a) specific to
532399ca880aSopenharmony_ci# the libtool wrapper, (b) are identical between the wrapper
532499ca880aSopenharmony_ci# /script/ and the wrapper /executable/ that is used only on
532599ca880aSopenharmony_ci# windows platforms, and (c) all begin with the string "--lt-"
532699ca880aSopenharmony_ci# (application programs are unlikely to have options that match
532799ca880aSopenharmony_ci# this pattern).
532899ca880aSopenharmony_ci#
532999ca880aSopenharmony_ci# There are only two supported options: --lt-debug and
533099ca880aSopenharmony_ci# --lt-dump-script. There is, deliberately, no --lt-help.
533199ca880aSopenharmony_ci#
533299ca880aSopenharmony_ci# The first argument to this parsing function should be the
533399ca880aSopenharmony_ci# script's $0 value, followed by "$@".
533499ca880aSopenharmony_cilt_option_debug=
533599ca880aSopenharmony_cifunc_parse_lt_options ()
533699ca880aSopenharmony_ci{
533799ca880aSopenharmony_ci  lt_script_arg0=\$0
533899ca880aSopenharmony_ci  shift
533999ca880aSopenharmony_ci  for lt_opt
534099ca880aSopenharmony_ci  do
534199ca880aSopenharmony_ci    case \"\$lt_opt\" in
534299ca880aSopenharmony_ci    --lt-debug) lt_option_debug=1 ;;
534399ca880aSopenharmony_ci    --lt-dump-script)
534499ca880aSopenharmony_ci        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
534599ca880aSopenharmony_ci        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
534699ca880aSopenharmony_ci        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
534799ca880aSopenharmony_ci        cat \"\$lt_dump_D/\$lt_dump_F\"
534899ca880aSopenharmony_ci        exit 0
534999ca880aSopenharmony_ci      ;;
535099ca880aSopenharmony_ci    --lt-*)
535199ca880aSopenharmony_ci        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
535299ca880aSopenharmony_ci        exit 1
535399ca880aSopenharmony_ci      ;;
535499ca880aSopenharmony_ci    esac
535599ca880aSopenharmony_ci  done
535699ca880aSopenharmony_ci
535799ca880aSopenharmony_ci  # Print the debug banner immediately:
535899ca880aSopenharmony_ci  if test -n \"\$lt_option_debug\"; then
535999ca880aSopenharmony_ci    echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2
536099ca880aSopenharmony_ci  fi
536199ca880aSopenharmony_ci}
536299ca880aSopenharmony_ci
536399ca880aSopenharmony_ci# Used when --lt-debug. Prints its arguments to stdout
536499ca880aSopenharmony_ci# (redirection is the responsibility of the caller)
536599ca880aSopenharmony_cifunc_lt_dump_args ()
536699ca880aSopenharmony_ci{
536799ca880aSopenharmony_ci  lt_dump_args_N=1;
536899ca880aSopenharmony_ci  for lt_arg
536999ca880aSopenharmony_ci  do
537099ca880aSopenharmony_ci    \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\"
537199ca880aSopenharmony_ci    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
537299ca880aSopenharmony_ci  done
537399ca880aSopenharmony_ci}
537499ca880aSopenharmony_ci
537599ca880aSopenharmony_ci# Core function for launching the target application
537699ca880aSopenharmony_cifunc_exec_program_core ()
537799ca880aSopenharmony_ci{
537899ca880aSopenharmony_ci"
537999ca880aSopenharmony_ci  case $host in
538099ca880aSopenharmony_ci  # Backslashes separate directories on plain windows
538199ca880aSopenharmony_ci  *-*-mingw | *-*-os2* | *-cegcc*)
538299ca880aSopenharmony_ci    $ECHO "\
538399ca880aSopenharmony_ci      if test -n \"\$lt_option_debug\"; then
538499ca880aSopenharmony_ci        \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2
538599ca880aSopenharmony_ci        func_lt_dump_args \${1+\"\$@\"} 1>&2
538699ca880aSopenharmony_ci      fi
538799ca880aSopenharmony_ci      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
538899ca880aSopenharmony_ci"
538999ca880aSopenharmony_ci    ;;
539099ca880aSopenharmony_ci
539199ca880aSopenharmony_ci  *)
539299ca880aSopenharmony_ci    $ECHO "\
539399ca880aSopenharmony_ci      if test -n \"\$lt_option_debug\"; then
539499ca880aSopenharmony_ci        \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2
539599ca880aSopenharmony_ci        func_lt_dump_args \${1+\"\$@\"} 1>&2
539699ca880aSopenharmony_ci      fi
539799ca880aSopenharmony_ci      exec \"\$progdir/\$program\" \${1+\"\$@\"}
539899ca880aSopenharmony_ci"
539999ca880aSopenharmony_ci    ;;
540099ca880aSopenharmony_ci  esac
540199ca880aSopenharmony_ci  $ECHO "\
540299ca880aSopenharmony_ci      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
540399ca880aSopenharmony_ci      exit 1
540499ca880aSopenharmony_ci}
540599ca880aSopenharmony_ci
540699ca880aSopenharmony_ci# A function to encapsulate launching the target application
540799ca880aSopenharmony_ci# Strips options in the --lt-* namespace from \$@ and
540899ca880aSopenharmony_ci# launches target application with the remaining arguments.
540999ca880aSopenharmony_cifunc_exec_program ()
541099ca880aSopenharmony_ci{
541199ca880aSopenharmony_ci  case \" \$* \" in
541299ca880aSopenharmony_ci  *\\ --lt-*)
541399ca880aSopenharmony_ci    for lt_wr_arg
541499ca880aSopenharmony_ci    do
541599ca880aSopenharmony_ci      case \$lt_wr_arg in
541699ca880aSopenharmony_ci      --lt-*) ;;
541799ca880aSopenharmony_ci      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
541899ca880aSopenharmony_ci      esac
541999ca880aSopenharmony_ci      shift
542099ca880aSopenharmony_ci    done ;;
542199ca880aSopenharmony_ci  esac
542299ca880aSopenharmony_ci  func_exec_program_core \${1+\"\$@\"}
542399ca880aSopenharmony_ci}
542499ca880aSopenharmony_ci
542599ca880aSopenharmony_ci  # Parse options
542699ca880aSopenharmony_ci  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
542799ca880aSopenharmony_ci
542899ca880aSopenharmony_ci  # Find the directory that this script lives in.
542999ca880aSopenharmony_ci  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
543099ca880aSopenharmony_ci  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
543199ca880aSopenharmony_ci
543299ca880aSopenharmony_ci  # Follow symbolic links until we get to the real thisdir.
543399ca880aSopenharmony_ci  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
543499ca880aSopenharmony_ci  while test -n \"\$file\"; do
543599ca880aSopenharmony_ci    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
543699ca880aSopenharmony_ci
543799ca880aSopenharmony_ci    # If there was a directory component, then change thisdir.
543899ca880aSopenharmony_ci    if test \"x\$destdir\" != \"x\$file\"; then
543999ca880aSopenharmony_ci      case \"\$destdir\" in
544099ca880aSopenharmony_ci      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
544199ca880aSopenharmony_ci      *) thisdir=\"\$thisdir/\$destdir\" ;;
544299ca880aSopenharmony_ci      esac
544399ca880aSopenharmony_ci    fi
544499ca880aSopenharmony_ci
544599ca880aSopenharmony_ci    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
544699ca880aSopenharmony_ci    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
544799ca880aSopenharmony_ci  done
544899ca880aSopenharmony_ci
544999ca880aSopenharmony_ci  # Usually 'no', except on cygwin/mingw when embedded into
545099ca880aSopenharmony_ci  # the cwrapper.
545199ca880aSopenharmony_ci  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
545299ca880aSopenharmony_ci  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
545399ca880aSopenharmony_ci    # special case for '.'
545499ca880aSopenharmony_ci    if test \"\$thisdir\" = \".\"; then
545599ca880aSopenharmony_ci      thisdir=\`pwd\`
545699ca880aSopenharmony_ci    fi
545799ca880aSopenharmony_ci    # remove .libs from thisdir
545899ca880aSopenharmony_ci    case \"\$thisdir\" in
545999ca880aSopenharmony_ci    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
546099ca880aSopenharmony_ci    $objdir )   thisdir=. ;;
546199ca880aSopenharmony_ci    esac
546299ca880aSopenharmony_ci  fi
546399ca880aSopenharmony_ci
546499ca880aSopenharmony_ci  # Try to get the absolute directory name.
546599ca880aSopenharmony_ci  absdir=\`cd \"\$thisdir\" && pwd\`
546699ca880aSopenharmony_ci  test -n \"\$absdir\" && thisdir=\"\$absdir\"
546799ca880aSopenharmony_ci"
546899ca880aSopenharmony_ci
546999ca880aSopenharmony_ci	if test yes = "$fast_install"; then
547099ca880aSopenharmony_ci	  $ECHO "\
547199ca880aSopenharmony_ci  program=lt-'$outputname'$exeext
547299ca880aSopenharmony_ci  progdir=\"\$thisdir/$objdir\"
547399ca880aSopenharmony_ci
547499ca880aSopenharmony_ci  if test ! -f \"\$progdir/\$program\" ||
547599ca880aSopenharmony_ci     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\
547699ca880aSopenharmony_ci       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
547799ca880aSopenharmony_ci
547899ca880aSopenharmony_ci    file=\"\$\$-\$program\"
547999ca880aSopenharmony_ci
548099ca880aSopenharmony_ci    if test ! -d \"\$progdir\"; then
548199ca880aSopenharmony_ci      $MKDIR \"\$progdir\"
548299ca880aSopenharmony_ci    else
548399ca880aSopenharmony_ci      $RM \"\$progdir/\$file\"
548499ca880aSopenharmony_ci    fi"
548599ca880aSopenharmony_ci
548699ca880aSopenharmony_ci	  $ECHO "\
548799ca880aSopenharmony_ci
548899ca880aSopenharmony_ci    # relink executable if necessary
548999ca880aSopenharmony_ci    if test -n \"\$relink_command\"; then
549099ca880aSopenharmony_ci      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
549199ca880aSopenharmony_ci      else
549299ca880aSopenharmony_ci	\$ECHO \"\$relink_command_output\" >&2
549399ca880aSopenharmony_ci	$RM \"\$progdir/\$file\"
549499ca880aSopenharmony_ci	exit 1
549599ca880aSopenharmony_ci      fi
549699ca880aSopenharmony_ci    fi
549799ca880aSopenharmony_ci
549899ca880aSopenharmony_ci    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
549999ca880aSopenharmony_ci    { $RM \"\$progdir/\$program\";
550099ca880aSopenharmony_ci      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
550199ca880aSopenharmony_ci    $RM \"\$progdir/\$file\"
550299ca880aSopenharmony_ci  fi"
550399ca880aSopenharmony_ci	else
550499ca880aSopenharmony_ci	  $ECHO "\
550599ca880aSopenharmony_ci  program='$outputname'
550699ca880aSopenharmony_ci  progdir=\"\$thisdir/$objdir\"
550799ca880aSopenharmony_ci"
550899ca880aSopenharmony_ci	fi
550999ca880aSopenharmony_ci
551099ca880aSopenharmony_ci	$ECHO "\
551199ca880aSopenharmony_ci
551299ca880aSopenharmony_ci  if test -f \"\$progdir/\$program\"; then"
551399ca880aSopenharmony_ci
551499ca880aSopenharmony_ci	# fixup the dll searchpath if we need to.
551599ca880aSopenharmony_ci	#
551699ca880aSopenharmony_ci	# Fix the DLL searchpath if we need to.  Do this before prepending
551799ca880aSopenharmony_ci	# to shlibpath, because on Windows, both are PATH and uninstalled
551899ca880aSopenharmony_ci	# libraries must come first.
551999ca880aSopenharmony_ci	if test -n "$dllsearchpath"; then
552099ca880aSopenharmony_ci	  $ECHO "\
552199ca880aSopenharmony_ci    # Add the dll search path components to the executable PATH
552299ca880aSopenharmony_ci    PATH=$dllsearchpath:\$PATH
552399ca880aSopenharmony_ci"
552499ca880aSopenharmony_ci	fi
552599ca880aSopenharmony_ci
552699ca880aSopenharmony_ci	# Export our shlibpath_var if we have one.
552799ca880aSopenharmony_ci	if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
552899ca880aSopenharmony_ci	  $ECHO "\
552999ca880aSopenharmony_ci    # Add our own library path to $shlibpath_var
553099ca880aSopenharmony_ci    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
553199ca880aSopenharmony_ci
553299ca880aSopenharmony_ci    # Some systems cannot cope with colon-terminated $shlibpath_var
553399ca880aSopenharmony_ci    # The second colon is a workaround for a bug in BeOS R4 sed
553499ca880aSopenharmony_ci    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
553599ca880aSopenharmony_ci
553699ca880aSopenharmony_ci    export $shlibpath_var
553799ca880aSopenharmony_ci"
553899ca880aSopenharmony_ci	fi
553999ca880aSopenharmony_ci
554099ca880aSopenharmony_ci	$ECHO "\
554199ca880aSopenharmony_ci    if test \"\$libtool_execute_magic\" != \"$magic\"; then
554299ca880aSopenharmony_ci      # Run the actual program with our arguments.
554399ca880aSopenharmony_ci      func_exec_program \${1+\"\$@\"}
554499ca880aSopenharmony_ci    fi
554599ca880aSopenharmony_ci  else
554699ca880aSopenharmony_ci    # The program doesn't exist.
554799ca880aSopenharmony_ci    \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2
554899ca880aSopenharmony_ci    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
554999ca880aSopenharmony_ci    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
555099ca880aSopenharmony_ci    exit 1
555199ca880aSopenharmony_ci  fi
555299ca880aSopenharmony_cifi\
555399ca880aSopenharmony_ci"
555499ca880aSopenharmony_ci}
555599ca880aSopenharmony_ci
555699ca880aSopenharmony_ci
555799ca880aSopenharmony_ci# func_emit_cwrapperexe_src
555899ca880aSopenharmony_ci# emit the source code for a wrapper executable on stdout
555999ca880aSopenharmony_ci# Must ONLY be called from within func_mode_link because
556099ca880aSopenharmony_ci# it depends on a number of variable set therein.
556199ca880aSopenharmony_cifunc_emit_cwrapperexe_src ()
556299ca880aSopenharmony_ci{
556399ca880aSopenharmony_ci	cat <<EOF
556499ca880aSopenharmony_ci
556599ca880aSopenharmony_ci/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
556699ca880aSopenharmony_ci   Generated by $PROGRAM (GNU $PACKAGE) $VERSION
556799ca880aSopenharmony_ci
556899ca880aSopenharmony_ci   The $output program cannot be directly executed until all the libtool
556999ca880aSopenharmony_ci   libraries that it depends on are installed.
557099ca880aSopenharmony_ci
557199ca880aSopenharmony_ci   This wrapper executable should never be moved out of the build directory.
557299ca880aSopenharmony_ci   If it is, it will not operate correctly.
557399ca880aSopenharmony_ci*/
557499ca880aSopenharmony_ciEOF
557599ca880aSopenharmony_ci	    cat <<"EOF"
557699ca880aSopenharmony_ci#ifdef _MSC_VER
557799ca880aSopenharmony_ci# define _CRT_SECURE_NO_DEPRECATE 1
557899ca880aSopenharmony_ci#endif
557999ca880aSopenharmony_ci#include <stdio.h>
558099ca880aSopenharmony_ci#include <stdlib.h>
558199ca880aSopenharmony_ci#ifdef _MSC_VER
558299ca880aSopenharmony_ci# include <direct.h>
558399ca880aSopenharmony_ci# include <process.h>
558499ca880aSopenharmony_ci# include <io.h>
558599ca880aSopenharmony_ci#else
558699ca880aSopenharmony_ci# include <unistd.h>
558799ca880aSopenharmony_ci# include <stdint.h>
558899ca880aSopenharmony_ci# ifdef __CYGWIN__
558999ca880aSopenharmony_ci#  include <io.h>
559099ca880aSopenharmony_ci# endif
559199ca880aSopenharmony_ci#endif
559299ca880aSopenharmony_ci#include <malloc.h>
559399ca880aSopenharmony_ci#include <stdarg.h>
559499ca880aSopenharmony_ci#include <assert.h>
559599ca880aSopenharmony_ci#include <string.h>
559699ca880aSopenharmony_ci#include <ctype.h>
559799ca880aSopenharmony_ci#include <errno.h>
559899ca880aSopenharmony_ci#include <fcntl.h>
559999ca880aSopenharmony_ci#include <sys/stat.h>
560099ca880aSopenharmony_ci
560199ca880aSopenharmony_ci#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
560299ca880aSopenharmony_ci
560399ca880aSopenharmony_ci/* declarations of non-ANSI functions */
560499ca880aSopenharmony_ci#if defined __MINGW32__
560599ca880aSopenharmony_ci# ifdef __STRICT_ANSI__
560699ca880aSopenharmony_ciint _putenv (const char *);
560799ca880aSopenharmony_ci# endif
560899ca880aSopenharmony_ci#elif defined __CYGWIN__
560999ca880aSopenharmony_ci# ifdef __STRICT_ANSI__
561099ca880aSopenharmony_cichar *realpath (const char *, char *);
561199ca880aSopenharmony_ciint putenv (char *);
561299ca880aSopenharmony_ciint setenv (const char *, const char *, int);
561399ca880aSopenharmony_ci# endif
561499ca880aSopenharmony_ci/* #elif defined other_platform || defined ... */
561599ca880aSopenharmony_ci#endif
561699ca880aSopenharmony_ci
561799ca880aSopenharmony_ci/* portability defines, excluding path handling macros */
561899ca880aSopenharmony_ci#if defined _MSC_VER
561999ca880aSopenharmony_ci# define setmode _setmode
562099ca880aSopenharmony_ci# define stat    _stat
562199ca880aSopenharmony_ci# define chmod   _chmod
562299ca880aSopenharmony_ci# define getcwd  _getcwd
562399ca880aSopenharmony_ci# define putenv  _putenv
562499ca880aSopenharmony_ci# define S_IXUSR _S_IEXEC
562599ca880aSopenharmony_ci#elif defined __MINGW32__
562699ca880aSopenharmony_ci# define setmode _setmode
562799ca880aSopenharmony_ci# define stat    _stat
562899ca880aSopenharmony_ci# define chmod   _chmod
562999ca880aSopenharmony_ci# define getcwd  _getcwd
563099ca880aSopenharmony_ci# define putenv  _putenv
563199ca880aSopenharmony_ci#elif defined __CYGWIN__
563299ca880aSopenharmony_ci# define HAVE_SETENV
563399ca880aSopenharmony_ci# define FOPEN_WB "wb"
563499ca880aSopenharmony_ci/* #elif defined other platforms ... */
563599ca880aSopenharmony_ci#endif
563699ca880aSopenharmony_ci
563799ca880aSopenharmony_ci#if defined PATH_MAX
563899ca880aSopenharmony_ci# define LT_PATHMAX PATH_MAX
563999ca880aSopenharmony_ci#elif defined MAXPATHLEN
564099ca880aSopenharmony_ci# define LT_PATHMAX MAXPATHLEN
564199ca880aSopenharmony_ci#else
564299ca880aSopenharmony_ci# define LT_PATHMAX 1024
564399ca880aSopenharmony_ci#endif
564499ca880aSopenharmony_ci
564599ca880aSopenharmony_ci#ifndef S_IXOTH
564699ca880aSopenharmony_ci# define S_IXOTH 0
564799ca880aSopenharmony_ci#endif
564899ca880aSopenharmony_ci#ifndef S_IXGRP
564999ca880aSopenharmony_ci# define S_IXGRP 0
565099ca880aSopenharmony_ci#endif
565199ca880aSopenharmony_ci
565299ca880aSopenharmony_ci/* path handling portability macros */
565399ca880aSopenharmony_ci#ifndef DIR_SEPARATOR
565499ca880aSopenharmony_ci# define DIR_SEPARATOR '/'
565599ca880aSopenharmony_ci# define PATH_SEPARATOR ':'
565699ca880aSopenharmony_ci#endif
565799ca880aSopenharmony_ci
565899ca880aSopenharmony_ci#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \
565999ca880aSopenharmony_ci  defined __OS2__
566099ca880aSopenharmony_ci# define HAVE_DOS_BASED_FILE_SYSTEM
566199ca880aSopenharmony_ci# define FOPEN_WB "wb"
566299ca880aSopenharmony_ci# ifndef DIR_SEPARATOR_2
566399ca880aSopenharmony_ci#  define DIR_SEPARATOR_2 '\\'
566499ca880aSopenharmony_ci# endif
566599ca880aSopenharmony_ci# ifndef PATH_SEPARATOR_2
566699ca880aSopenharmony_ci#  define PATH_SEPARATOR_2 ';'
566799ca880aSopenharmony_ci# endif
566899ca880aSopenharmony_ci#endif
566999ca880aSopenharmony_ci
567099ca880aSopenharmony_ci#ifndef DIR_SEPARATOR_2
567199ca880aSopenharmony_ci# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
567299ca880aSopenharmony_ci#else /* DIR_SEPARATOR_2 */
567399ca880aSopenharmony_ci# define IS_DIR_SEPARATOR(ch) \
567499ca880aSopenharmony_ci	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
567599ca880aSopenharmony_ci#endif /* DIR_SEPARATOR_2 */
567699ca880aSopenharmony_ci
567799ca880aSopenharmony_ci#ifndef PATH_SEPARATOR_2
567899ca880aSopenharmony_ci# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
567999ca880aSopenharmony_ci#else /* PATH_SEPARATOR_2 */
568099ca880aSopenharmony_ci# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
568199ca880aSopenharmony_ci#endif /* PATH_SEPARATOR_2 */
568299ca880aSopenharmony_ci
568399ca880aSopenharmony_ci#ifndef FOPEN_WB
568499ca880aSopenharmony_ci# define FOPEN_WB "w"
568599ca880aSopenharmony_ci#endif
568699ca880aSopenharmony_ci#ifndef _O_BINARY
568799ca880aSopenharmony_ci# define _O_BINARY 0
568899ca880aSopenharmony_ci#endif
568999ca880aSopenharmony_ci
569099ca880aSopenharmony_ci#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
569199ca880aSopenharmony_ci#define XFREE(stale) do { \
569299ca880aSopenharmony_ci  if (stale) { free (stale); stale = 0; } \
569399ca880aSopenharmony_ci} while (0)
569499ca880aSopenharmony_ci
569599ca880aSopenharmony_ci#if defined LT_DEBUGWRAPPER
569699ca880aSopenharmony_cistatic int lt_debug = 1;
569799ca880aSopenharmony_ci#else
569899ca880aSopenharmony_cistatic int lt_debug = 0;
569999ca880aSopenharmony_ci#endif
570099ca880aSopenharmony_ci
570199ca880aSopenharmony_ciconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
570299ca880aSopenharmony_ci
570399ca880aSopenharmony_civoid *xmalloc (size_t num);
570499ca880aSopenharmony_cichar *xstrdup (const char *string);
570599ca880aSopenharmony_ciconst char *base_name (const char *name);
570699ca880aSopenharmony_cichar *find_executable (const char *wrapper);
570799ca880aSopenharmony_cichar *chase_symlinks (const char *pathspec);
570899ca880aSopenharmony_ciint make_executable (const char *path);
570999ca880aSopenharmony_ciint check_executable (const char *path);
571099ca880aSopenharmony_cichar *strendzap (char *str, const char *pat);
571199ca880aSopenharmony_civoid lt_debugprintf (const char *file, int line, const char *fmt, ...);
571299ca880aSopenharmony_civoid lt_fatal (const char *file, int line, const char *message, ...);
571399ca880aSopenharmony_cistatic const char *nonnull (const char *s);
571499ca880aSopenharmony_cistatic const char *nonempty (const char *s);
571599ca880aSopenharmony_civoid lt_setenv (const char *name, const char *value);
571699ca880aSopenharmony_cichar *lt_extend_str (const char *orig_value, const char *add, int to_end);
571799ca880aSopenharmony_civoid lt_update_exe_path (const char *name, const char *value);
571899ca880aSopenharmony_civoid lt_update_lib_path (const char *name, const char *value);
571999ca880aSopenharmony_cichar **prepare_spawn (char **argv);
572099ca880aSopenharmony_civoid lt_dump_script (FILE *f);
572199ca880aSopenharmony_ciEOF
572299ca880aSopenharmony_ci
572399ca880aSopenharmony_ci	    cat <<EOF
572499ca880aSopenharmony_ci#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
572599ca880aSopenharmony_ci# define externally_visible volatile
572699ca880aSopenharmony_ci#else
572799ca880aSopenharmony_ci# define externally_visible __attribute__((externally_visible)) volatile
572899ca880aSopenharmony_ci#endif
572999ca880aSopenharmony_ciexternally_visible const char * MAGIC_EXE = "$magic_exe";
573099ca880aSopenharmony_ciconst char * LIB_PATH_VARNAME = "$shlibpath_var";
573199ca880aSopenharmony_ciEOF
573299ca880aSopenharmony_ci
573399ca880aSopenharmony_ci	    if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
573499ca880aSopenharmony_ci              func_to_host_path "$temp_rpath"
573599ca880aSopenharmony_ci	      cat <<EOF
573699ca880aSopenharmony_ciconst char * LIB_PATH_VALUE   = "$func_to_host_path_result";
573799ca880aSopenharmony_ciEOF
573899ca880aSopenharmony_ci	    else
573999ca880aSopenharmony_ci	      cat <<"EOF"
574099ca880aSopenharmony_ciconst char * LIB_PATH_VALUE   = "";
574199ca880aSopenharmony_ciEOF
574299ca880aSopenharmony_ci	    fi
574399ca880aSopenharmony_ci
574499ca880aSopenharmony_ci	    if test -n "$dllsearchpath"; then
574599ca880aSopenharmony_ci              func_to_host_path "$dllsearchpath:"
574699ca880aSopenharmony_ci	      cat <<EOF
574799ca880aSopenharmony_ciconst char * EXE_PATH_VARNAME = "PATH";
574899ca880aSopenharmony_ciconst char * EXE_PATH_VALUE   = "$func_to_host_path_result";
574999ca880aSopenharmony_ciEOF
575099ca880aSopenharmony_ci	    else
575199ca880aSopenharmony_ci	      cat <<"EOF"
575299ca880aSopenharmony_ciconst char * EXE_PATH_VARNAME = "";
575399ca880aSopenharmony_ciconst char * EXE_PATH_VALUE   = "";
575499ca880aSopenharmony_ciEOF
575599ca880aSopenharmony_ci	    fi
575699ca880aSopenharmony_ci
575799ca880aSopenharmony_ci	    if test yes = "$fast_install"; then
575899ca880aSopenharmony_ci	      cat <<EOF
575999ca880aSopenharmony_ciconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
576099ca880aSopenharmony_ciEOF
576199ca880aSopenharmony_ci	    else
576299ca880aSopenharmony_ci	      cat <<EOF
576399ca880aSopenharmony_ciconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
576499ca880aSopenharmony_ciEOF
576599ca880aSopenharmony_ci	    fi
576699ca880aSopenharmony_ci
576799ca880aSopenharmony_ci
576899ca880aSopenharmony_ci	    cat <<"EOF"
576999ca880aSopenharmony_ci
577099ca880aSopenharmony_ci#define LTWRAPPER_OPTION_PREFIX         "--lt-"
577199ca880aSopenharmony_ci
577299ca880aSopenharmony_cistatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
577399ca880aSopenharmony_cistatic const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
577499ca880aSopenharmony_cistatic const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
577599ca880aSopenharmony_ci
577699ca880aSopenharmony_ciint
577799ca880aSopenharmony_cimain (int argc, char *argv[])
577899ca880aSopenharmony_ci{
577999ca880aSopenharmony_ci  char **newargz;
578099ca880aSopenharmony_ci  int  newargc;
578199ca880aSopenharmony_ci  char *tmp_pathspec;
578299ca880aSopenharmony_ci  char *actual_cwrapper_path;
578399ca880aSopenharmony_ci  char *actual_cwrapper_name;
578499ca880aSopenharmony_ci  char *target_name;
578599ca880aSopenharmony_ci  char *lt_argv_zero;
578699ca880aSopenharmony_ci  int rval = 127;
578799ca880aSopenharmony_ci
578899ca880aSopenharmony_ci  int i;
578999ca880aSopenharmony_ci
579099ca880aSopenharmony_ci  program_name = (char *) xstrdup (base_name (argv[0]));
579199ca880aSopenharmony_ci  newargz = XMALLOC (char *, (size_t) argc + 1);
579299ca880aSopenharmony_ci
579399ca880aSopenharmony_ci  /* very simple arg parsing; don't want to rely on getopt
579499ca880aSopenharmony_ci   * also, copy all non cwrapper options to newargz, except
579599ca880aSopenharmony_ci   * argz[0], which is handled differently
579699ca880aSopenharmony_ci   */
579799ca880aSopenharmony_ci  newargc=0;
579899ca880aSopenharmony_ci  for (i = 1; i < argc; i++)
579999ca880aSopenharmony_ci    {
580099ca880aSopenharmony_ci      if (STREQ (argv[i], dumpscript_opt))
580199ca880aSopenharmony_ci	{
580299ca880aSopenharmony_ciEOF
580399ca880aSopenharmony_ci	    case $host in
580499ca880aSopenharmony_ci	      *mingw* | *cygwin* )
580599ca880aSopenharmony_ci		# make stdout use "unix" line endings
580699ca880aSopenharmony_ci		echo "          setmode(1,_O_BINARY);"
580799ca880aSopenharmony_ci		;;
580899ca880aSopenharmony_ci	      esac
580999ca880aSopenharmony_ci
581099ca880aSopenharmony_ci	    cat <<"EOF"
581199ca880aSopenharmony_ci	  lt_dump_script (stdout);
581299ca880aSopenharmony_ci	  return 0;
581399ca880aSopenharmony_ci	}
581499ca880aSopenharmony_ci      if (STREQ (argv[i], debug_opt))
581599ca880aSopenharmony_ci	{
581699ca880aSopenharmony_ci          lt_debug = 1;
581799ca880aSopenharmony_ci          continue;
581899ca880aSopenharmony_ci	}
581999ca880aSopenharmony_ci      if (STREQ (argv[i], ltwrapper_option_prefix))
582099ca880aSopenharmony_ci        {
582199ca880aSopenharmony_ci          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
582299ca880aSopenharmony_ci             namespace, but it is not one of the ones we know about and
582399ca880aSopenharmony_ci             have already dealt with, above (inluding dump-script), then
582499ca880aSopenharmony_ci             report an error. Otherwise, targets might begin to believe
582599ca880aSopenharmony_ci             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
582699ca880aSopenharmony_ci             namespace. The first time any user complains about this, we'll
582799ca880aSopenharmony_ci             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
582899ca880aSopenharmony_ci             or a configure.ac-settable value.
582999ca880aSopenharmony_ci           */
583099ca880aSopenharmony_ci          lt_fatal (__FILE__, __LINE__,
583199ca880aSopenharmony_ci		    "unrecognized %s option: '%s'",
583299ca880aSopenharmony_ci                    ltwrapper_option_prefix, argv[i]);
583399ca880aSopenharmony_ci        }
583499ca880aSopenharmony_ci      /* otherwise ... */
583599ca880aSopenharmony_ci      newargz[++newargc] = xstrdup (argv[i]);
583699ca880aSopenharmony_ci    }
583799ca880aSopenharmony_ci  newargz[++newargc] = NULL;
583899ca880aSopenharmony_ci
583999ca880aSopenharmony_ciEOF
584099ca880aSopenharmony_ci	    cat <<EOF
584199ca880aSopenharmony_ci  /* The GNU banner must be the first non-error debug message */
584299ca880aSopenharmony_ci  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE) $VERSION\n");
584399ca880aSopenharmony_ciEOF
584499ca880aSopenharmony_ci	    cat <<"EOF"
584599ca880aSopenharmony_ci  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
584699ca880aSopenharmony_ci  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
584799ca880aSopenharmony_ci
584899ca880aSopenharmony_ci  tmp_pathspec = find_executable (argv[0]);
584999ca880aSopenharmony_ci  if (tmp_pathspec == NULL)
585099ca880aSopenharmony_ci    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
585199ca880aSopenharmony_ci  lt_debugprintf (__FILE__, __LINE__,
585299ca880aSopenharmony_ci                  "(main) found exe (before symlink chase) at: %s\n",
585399ca880aSopenharmony_ci		  tmp_pathspec);
585499ca880aSopenharmony_ci
585599ca880aSopenharmony_ci  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
585699ca880aSopenharmony_ci  lt_debugprintf (__FILE__, __LINE__,
585799ca880aSopenharmony_ci                  "(main) found exe (after symlink chase) at: %s\n",
585899ca880aSopenharmony_ci		  actual_cwrapper_path);
585999ca880aSopenharmony_ci  XFREE (tmp_pathspec);
586099ca880aSopenharmony_ci
586199ca880aSopenharmony_ci  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
586299ca880aSopenharmony_ci  strendzap (actual_cwrapper_path, actual_cwrapper_name);
586399ca880aSopenharmony_ci
586499ca880aSopenharmony_ci  /* wrapper name transforms */
586599ca880aSopenharmony_ci  strendzap (actual_cwrapper_name, ".exe");
586699ca880aSopenharmony_ci  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
586799ca880aSopenharmony_ci  XFREE (actual_cwrapper_name);
586899ca880aSopenharmony_ci  actual_cwrapper_name = tmp_pathspec;
586999ca880aSopenharmony_ci  tmp_pathspec = 0;
587099ca880aSopenharmony_ci
587199ca880aSopenharmony_ci  /* target_name transforms -- use actual target program name; might have lt- prefix */
587299ca880aSopenharmony_ci  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
587399ca880aSopenharmony_ci  strendzap (target_name, ".exe");
587499ca880aSopenharmony_ci  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
587599ca880aSopenharmony_ci  XFREE (target_name);
587699ca880aSopenharmony_ci  target_name = tmp_pathspec;
587799ca880aSopenharmony_ci  tmp_pathspec = 0;
587899ca880aSopenharmony_ci
587999ca880aSopenharmony_ci  lt_debugprintf (__FILE__, __LINE__,
588099ca880aSopenharmony_ci		  "(main) libtool target name: %s\n",
588199ca880aSopenharmony_ci		  target_name);
588299ca880aSopenharmony_ciEOF
588399ca880aSopenharmony_ci
588499ca880aSopenharmony_ci	    cat <<EOF
588599ca880aSopenharmony_ci  newargz[0] =
588699ca880aSopenharmony_ci    XMALLOC (char, (strlen (actual_cwrapper_path) +
588799ca880aSopenharmony_ci		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
588899ca880aSopenharmony_ci  strcpy (newargz[0], actual_cwrapper_path);
588999ca880aSopenharmony_ci  strcat (newargz[0], "$objdir");
589099ca880aSopenharmony_ci  strcat (newargz[0], "/");
589199ca880aSopenharmony_ciEOF
589299ca880aSopenharmony_ci
589399ca880aSopenharmony_ci	    cat <<"EOF"
589499ca880aSopenharmony_ci  /* stop here, and copy so we don't have to do this twice */
589599ca880aSopenharmony_ci  tmp_pathspec = xstrdup (newargz[0]);
589699ca880aSopenharmony_ci
589799ca880aSopenharmony_ci  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
589899ca880aSopenharmony_ci  strcat (newargz[0], actual_cwrapper_name);
589999ca880aSopenharmony_ci
590099ca880aSopenharmony_ci  /* DO want the lt- prefix here if it exists, so use target_name */
590199ca880aSopenharmony_ci  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
590299ca880aSopenharmony_ci  XFREE (tmp_pathspec);
590399ca880aSopenharmony_ci  tmp_pathspec = NULL;
590499ca880aSopenharmony_ciEOF
590599ca880aSopenharmony_ci
590699ca880aSopenharmony_ci	    case $host_os in
590799ca880aSopenharmony_ci	      mingw*)
590899ca880aSopenharmony_ci	    cat <<"EOF"
590999ca880aSopenharmony_ci  {
591099ca880aSopenharmony_ci    char* p;
591199ca880aSopenharmony_ci    while ((p = strchr (newargz[0], '\\')) != NULL)
591299ca880aSopenharmony_ci      {
591399ca880aSopenharmony_ci	*p = '/';
591499ca880aSopenharmony_ci      }
591599ca880aSopenharmony_ci    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
591699ca880aSopenharmony_ci      {
591799ca880aSopenharmony_ci	*p = '/';
591899ca880aSopenharmony_ci      }
591999ca880aSopenharmony_ci  }
592099ca880aSopenharmony_ciEOF
592199ca880aSopenharmony_ci	    ;;
592299ca880aSopenharmony_ci	    esac
592399ca880aSopenharmony_ci
592499ca880aSopenharmony_ci	    cat <<"EOF"
592599ca880aSopenharmony_ci  XFREE (target_name);
592699ca880aSopenharmony_ci  XFREE (actual_cwrapper_path);
592799ca880aSopenharmony_ci  XFREE (actual_cwrapper_name);
592899ca880aSopenharmony_ci
592999ca880aSopenharmony_ci  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
593099ca880aSopenharmony_ci  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
593199ca880aSopenharmony_ci  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
593299ca880aSopenharmony_ci     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
593399ca880aSopenharmony_ci     because on Windows, both *_VARNAMEs are PATH but uninstalled
593499ca880aSopenharmony_ci     libraries must come first. */
593599ca880aSopenharmony_ci  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
593699ca880aSopenharmony_ci  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
593799ca880aSopenharmony_ci
593899ca880aSopenharmony_ci  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
593999ca880aSopenharmony_ci		  nonnull (lt_argv_zero));
594099ca880aSopenharmony_ci  for (i = 0; i < newargc; i++)
594199ca880aSopenharmony_ci    {
594299ca880aSopenharmony_ci      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
594399ca880aSopenharmony_ci		      i, nonnull (newargz[i]));
594499ca880aSopenharmony_ci    }
594599ca880aSopenharmony_ci
594699ca880aSopenharmony_ciEOF
594799ca880aSopenharmony_ci
594899ca880aSopenharmony_ci	    case $host_os in
594999ca880aSopenharmony_ci	      mingw*)
595099ca880aSopenharmony_ci		cat <<"EOF"
595199ca880aSopenharmony_ci  /* execv doesn't actually work on mingw as expected on unix */
595299ca880aSopenharmony_ci  newargz = prepare_spawn (newargz);
595399ca880aSopenharmony_ci  rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
595499ca880aSopenharmony_ci  if (rval == -1)
595599ca880aSopenharmony_ci    {
595699ca880aSopenharmony_ci      /* failed to start process */
595799ca880aSopenharmony_ci      lt_debugprintf (__FILE__, __LINE__,
595899ca880aSopenharmony_ci		      "(main) failed to launch target \"%s\": %s\n",
595999ca880aSopenharmony_ci		      lt_argv_zero, nonnull (strerror (errno)));
596099ca880aSopenharmony_ci      return 127;
596199ca880aSopenharmony_ci    }
596299ca880aSopenharmony_ci  return rval;
596399ca880aSopenharmony_ciEOF
596499ca880aSopenharmony_ci		;;
596599ca880aSopenharmony_ci	      *)
596699ca880aSopenharmony_ci		cat <<"EOF"
596799ca880aSopenharmony_ci  execv (lt_argv_zero, newargz);
596899ca880aSopenharmony_ci  return rval; /* =127, but avoids unused variable warning */
596999ca880aSopenharmony_ciEOF
597099ca880aSopenharmony_ci		;;
597199ca880aSopenharmony_ci	    esac
597299ca880aSopenharmony_ci
597399ca880aSopenharmony_ci	    cat <<"EOF"
597499ca880aSopenharmony_ci}
597599ca880aSopenharmony_ci
597699ca880aSopenharmony_civoid *
597799ca880aSopenharmony_cixmalloc (size_t num)
597899ca880aSopenharmony_ci{
597999ca880aSopenharmony_ci  void *p = (void *) malloc (num);
598099ca880aSopenharmony_ci  if (!p)
598199ca880aSopenharmony_ci    lt_fatal (__FILE__, __LINE__, "memory exhausted");
598299ca880aSopenharmony_ci
598399ca880aSopenharmony_ci  return p;
598499ca880aSopenharmony_ci}
598599ca880aSopenharmony_ci
598699ca880aSopenharmony_cichar *
598799ca880aSopenharmony_cixstrdup (const char *string)
598899ca880aSopenharmony_ci{
598999ca880aSopenharmony_ci  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
599099ca880aSopenharmony_ci			  string) : NULL;
599199ca880aSopenharmony_ci}
599299ca880aSopenharmony_ci
599399ca880aSopenharmony_ciconst char *
599499ca880aSopenharmony_cibase_name (const char *name)
599599ca880aSopenharmony_ci{
599699ca880aSopenharmony_ci  const char *base;
599799ca880aSopenharmony_ci
599899ca880aSopenharmony_ci#if defined HAVE_DOS_BASED_FILE_SYSTEM
599999ca880aSopenharmony_ci  /* Skip over the disk name in MSDOS pathnames. */
600099ca880aSopenharmony_ci  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
600199ca880aSopenharmony_ci    name += 2;
600299ca880aSopenharmony_ci#endif
600399ca880aSopenharmony_ci
600499ca880aSopenharmony_ci  for (base = name; *name; name++)
600599ca880aSopenharmony_ci    if (IS_DIR_SEPARATOR (*name))
600699ca880aSopenharmony_ci      base = name + 1;
600799ca880aSopenharmony_ci  return base;
600899ca880aSopenharmony_ci}
600999ca880aSopenharmony_ci
601099ca880aSopenharmony_ciint
601199ca880aSopenharmony_cicheck_executable (const char *path)
601299ca880aSopenharmony_ci{
601399ca880aSopenharmony_ci  struct stat st;
601499ca880aSopenharmony_ci
601599ca880aSopenharmony_ci  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
601699ca880aSopenharmony_ci                  nonempty (path));
601799ca880aSopenharmony_ci  if ((!path) || (!*path))
601899ca880aSopenharmony_ci    return 0;
601999ca880aSopenharmony_ci
602099ca880aSopenharmony_ci  if ((stat (path, &st) >= 0)
602199ca880aSopenharmony_ci      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
602299ca880aSopenharmony_ci    return 1;
602399ca880aSopenharmony_ci  else
602499ca880aSopenharmony_ci    return 0;
602599ca880aSopenharmony_ci}
602699ca880aSopenharmony_ci
602799ca880aSopenharmony_ciint
602899ca880aSopenharmony_cimake_executable (const char *path)
602999ca880aSopenharmony_ci{
603099ca880aSopenharmony_ci  int rval = 0;
603199ca880aSopenharmony_ci  struct stat st;
603299ca880aSopenharmony_ci
603399ca880aSopenharmony_ci  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
603499ca880aSopenharmony_ci                  nonempty (path));
603599ca880aSopenharmony_ci  if ((!path) || (!*path))
603699ca880aSopenharmony_ci    return 0;
603799ca880aSopenharmony_ci
603899ca880aSopenharmony_ci  if (stat (path, &st) >= 0)
603999ca880aSopenharmony_ci    {
604099ca880aSopenharmony_ci      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
604199ca880aSopenharmony_ci    }
604299ca880aSopenharmony_ci  return rval;
604399ca880aSopenharmony_ci}
604499ca880aSopenharmony_ci
604599ca880aSopenharmony_ci/* Searches for the full path of the wrapper.  Returns
604699ca880aSopenharmony_ci   newly allocated full path name if found, NULL otherwise
604799ca880aSopenharmony_ci   Does not chase symlinks, even on platforms that support them.
604899ca880aSopenharmony_ci*/
604999ca880aSopenharmony_cichar *
605099ca880aSopenharmony_cifind_executable (const char *wrapper)
605199ca880aSopenharmony_ci{
605299ca880aSopenharmony_ci  int has_slash = 0;
605399ca880aSopenharmony_ci  const char *p;
605499ca880aSopenharmony_ci  const char *p_next;
605599ca880aSopenharmony_ci  /* static buffer for getcwd */
605699ca880aSopenharmony_ci  char tmp[LT_PATHMAX + 1];
605799ca880aSopenharmony_ci  size_t tmp_len;
605899ca880aSopenharmony_ci  char *concat_name;
605999ca880aSopenharmony_ci
606099ca880aSopenharmony_ci  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
606199ca880aSopenharmony_ci                  nonempty (wrapper));
606299ca880aSopenharmony_ci
606399ca880aSopenharmony_ci  if ((wrapper == NULL) || (*wrapper == '\0'))
606499ca880aSopenharmony_ci    return NULL;
606599ca880aSopenharmony_ci
606699ca880aSopenharmony_ci  /* Absolute path? */
606799ca880aSopenharmony_ci#if defined HAVE_DOS_BASED_FILE_SYSTEM
606899ca880aSopenharmony_ci  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
606999ca880aSopenharmony_ci    {
607099ca880aSopenharmony_ci      concat_name = xstrdup (wrapper);
607199ca880aSopenharmony_ci      if (check_executable (concat_name))
607299ca880aSopenharmony_ci	return concat_name;
607399ca880aSopenharmony_ci      XFREE (concat_name);
607499ca880aSopenharmony_ci    }
607599ca880aSopenharmony_ci  else
607699ca880aSopenharmony_ci    {
607799ca880aSopenharmony_ci#endif
607899ca880aSopenharmony_ci      if (IS_DIR_SEPARATOR (wrapper[0]))
607999ca880aSopenharmony_ci	{
608099ca880aSopenharmony_ci	  concat_name = xstrdup (wrapper);
608199ca880aSopenharmony_ci	  if (check_executable (concat_name))
608299ca880aSopenharmony_ci	    return concat_name;
608399ca880aSopenharmony_ci	  XFREE (concat_name);
608499ca880aSopenharmony_ci	}
608599ca880aSopenharmony_ci#if defined HAVE_DOS_BASED_FILE_SYSTEM
608699ca880aSopenharmony_ci    }
608799ca880aSopenharmony_ci#endif
608899ca880aSopenharmony_ci
608999ca880aSopenharmony_ci  for (p = wrapper; *p; p++)
609099ca880aSopenharmony_ci    if (*p == '/')
609199ca880aSopenharmony_ci      {
609299ca880aSopenharmony_ci	has_slash = 1;
609399ca880aSopenharmony_ci	break;
609499ca880aSopenharmony_ci      }
609599ca880aSopenharmony_ci  if (!has_slash)
609699ca880aSopenharmony_ci    {
609799ca880aSopenharmony_ci      /* no slashes; search PATH */
609899ca880aSopenharmony_ci      const char *path = getenv ("PATH");
609999ca880aSopenharmony_ci      if (path != NULL)
610099ca880aSopenharmony_ci	{
610199ca880aSopenharmony_ci	  for (p = path; *p; p = p_next)
610299ca880aSopenharmony_ci	    {
610399ca880aSopenharmony_ci	      const char *q;
610499ca880aSopenharmony_ci	      size_t p_len;
610599ca880aSopenharmony_ci	      for (q = p; *q; q++)
610699ca880aSopenharmony_ci		if (IS_PATH_SEPARATOR (*q))
610799ca880aSopenharmony_ci		  break;
610899ca880aSopenharmony_ci	      p_len = (size_t) (q - p);
610999ca880aSopenharmony_ci	      p_next = (*q == '\0' ? q : q + 1);
611099ca880aSopenharmony_ci	      if (p_len == 0)
611199ca880aSopenharmony_ci		{
611299ca880aSopenharmony_ci		  /* empty path: current directory */
611399ca880aSopenharmony_ci		  if (getcwd (tmp, LT_PATHMAX) == NULL)
611499ca880aSopenharmony_ci		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
611599ca880aSopenharmony_ci                              nonnull (strerror (errno)));
611699ca880aSopenharmony_ci		  tmp_len = strlen (tmp);
611799ca880aSopenharmony_ci		  concat_name =
611899ca880aSopenharmony_ci		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
611999ca880aSopenharmony_ci		  memcpy (concat_name, tmp, tmp_len);
612099ca880aSopenharmony_ci		  concat_name[tmp_len] = '/';
612199ca880aSopenharmony_ci		  strcpy (concat_name + tmp_len + 1, wrapper);
612299ca880aSopenharmony_ci		}
612399ca880aSopenharmony_ci	      else
612499ca880aSopenharmony_ci		{
612599ca880aSopenharmony_ci		  concat_name =
612699ca880aSopenharmony_ci		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
612799ca880aSopenharmony_ci		  memcpy (concat_name, p, p_len);
612899ca880aSopenharmony_ci		  concat_name[p_len] = '/';
612999ca880aSopenharmony_ci		  strcpy (concat_name + p_len + 1, wrapper);
613099ca880aSopenharmony_ci		}
613199ca880aSopenharmony_ci	      if (check_executable (concat_name))
613299ca880aSopenharmony_ci		return concat_name;
613399ca880aSopenharmony_ci	      XFREE (concat_name);
613499ca880aSopenharmony_ci	    }
613599ca880aSopenharmony_ci	}
613699ca880aSopenharmony_ci      /* not found in PATH; assume curdir */
613799ca880aSopenharmony_ci    }
613899ca880aSopenharmony_ci  /* Relative path | not found in path: prepend cwd */
613999ca880aSopenharmony_ci  if (getcwd (tmp, LT_PATHMAX) == NULL)
614099ca880aSopenharmony_ci    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
614199ca880aSopenharmony_ci              nonnull (strerror (errno)));
614299ca880aSopenharmony_ci  tmp_len = strlen (tmp);
614399ca880aSopenharmony_ci  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
614499ca880aSopenharmony_ci  memcpy (concat_name, tmp, tmp_len);
614599ca880aSopenharmony_ci  concat_name[tmp_len] = '/';
614699ca880aSopenharmony_ci  strcpy (concat_name + tmp_len + 1, wrapper);
614799ca880aSopenharmony_ci
614899ca880aSopenharmony_ci  if (check_executable (concat_name))
614999ca880aSopenharmony_ci    return concat_name;
615099ca880aSopenharmony_ci  XFREE (concat_name);
615199ca880aSopenharmony_ci  return NULL;
615299ca880aSopenharmony_ci}
615399ca880aSopenharmony_ci
615499ca880aSopenharmony_cichar *
615599ca880aSopenharmony_cichase_symlinks (const char *pathspec)
615699ca880aSopenharmony_ci{
615799ca880aSopenharmony_ci#ifndef S_ISLNK
615899ca880aSopenharmony_ci  return xstrdup (pathspec);
615999ca880aSopenharmony_ci#else
616099ca880aSopenharmony_ci  char buf[LT_PATHMAX];
616199ca880aSopenharmony_ci  struct stat s;
616299ca880aSopenharmony_ci  char *tmp_pathspec = xstrdup (pathspec);
616399ca880aSopenharmony_ci  char *p;
616499ca880aSopenharmony_ci  int has_symlinks = 0;
616599ca880aSopenharmony_ci  while (strlen (tmp_pathspec) && !has_symlinks)
616699ca880aSopenharmony_ci    {
616799ca880aSopenharmony_ci      lt_debugprintf (__FILE__, __LINE__,
616899ca880aSopenharmony_ci		      "checking path component for symlinks: %s\n",
616999ca880aSopenharmony_ci		      tmp_pathspec);
617099ca880aSopenharmony_ci      if (lstat (tmp_pathspec, &s) == 0)
617199ca880aSopenharmony_ci	{
617299ca880aSopenharmony_ci	  if (S_ISLNK (s.st_mode) != 0)
617399ca880aSopenharmony_ci	    {
617499ca880aSopenharmony_ci	      has_symlinks = 1;
617599ca880aSopenharmony_ci	      break;
617699ca880aSopenharmony_ci	    }
617799ca880aSopenharmony_ci
617899ca880aSopenharmony_ci	  /* search backwards for last DIR_SEPARATOR */
617999ca880aSopenharmony_ci	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
618099ca880aSopenharmony_ci	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
618199ca880aSopenharmony_ci	    p--;
618299ca880aSopenharmony_ci	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
618399ca880aSopenharmony_ci	    {
618499ca880aSopenharmony_ci	      /* no more DIR_SEPARATORS left */
618599ca880aSopenharmony_ci	      break;
618699ca880aSopenharmony_ci	    }
618799ca880aSopenharmony_ci	  *p = '\0';
618899ca880aSopenharmony_ci	}
618999ca880aSopenharmony_ci      else
619099ca880aSopenharmony_ci	{
619199ca880aSopenharmony_ci	  lt_fatal (__FILE__, __LINE__,
619299ca880aSopenharmony_ci		    "error accessing file \"%s\": %s",
619399ca880aSopenharmony_ci		    tmp_pathspec, nonnull (strerror (errno)));
619499ca880aSopenharmony_ci	}
619599ca880aSopenharmony_ci    }
619699ca880aSopenharmony_ci  XFREE (tmp_pathspec);
619799ca880aSopenharmony_ci
619899ca880aSopenharmony_ci  if (!has_symlinks)
619999ca880aSopenharmony_ci    {
620099ca880aSopenharmony_ci      return xstrdup (pathspec);
620199ca880aSopenharmony_ci    }
620299ca880aSopenharmony_ci
620399ca880aSopenharmony_ci  tmp_pathspec = realpath (pathspec, buf);
620499ca880aSopenharmony_ci  if (tmp_pathspec == 0)
620599ca880aSopenharmony_ci    {
620699ca880aSopenharmony_ci      lt_fatal (__FILE__, __LINE__,
620799ca880aSopenharmony_ci		"could not follow symlinks for %s", pathspec);
620899ca880aSopenharmony_ci    }
620999ca880aSopenharmony_ci  return xstrdup (tmp_pathspec);
621099ca880aSopenharmony_ci#endif
621199ca880aSopenharmony_ci}
621299ca880aSopenharmony_ci
621399ca880aSopenharmony_cichar *
621499ca880aSopenharmony_cistrendzap (char *str, const char *pat)
621599ca880aSopenharmony_ci{
621699ca880aSopenharmony_ci  size_t len, patlen;
621799ca880aSopenharmony_ci
621899ca880aSopenharmony_ci  assert (str != NULL);
621999ca880aSopenharmony_ci  assert (pat != NULL);
622099ca880aSopenharmony_ci
622199ca880aSopenharmony_ci  len = strlen (str);
622299ca880aSopenharmony_ci  patlen = strlen (pat);
622399ca880aSopenharmony_ci
622499ca880aSopenharmony_ci  if (patlen <= len)
622599ca880aSopenharmony_ci    {
622699ca880aSopenharmony_ci      str += len - patlen;
622799ca880aSopenharmony_ci      if (STREQ (str, pat))
622899ca880aSopenharmony_ci	*str = '\0';
622999ca880aSopenharmony_ci    }
623099ca880aSopenharmony_ci  return str;
623199ca880aSopenharmony_ci}
623299ca880aSopenharmony_ci
623399ca880aSopenharmony_civoid
623499ca880aSopenharmony_cilt_debugprintf (const char *file, int line, const char *fmt, ...)
623599ca880aSopenharmony_ci{
623699ca880aSopenharmony_ci  va_list args;
623799ca880aSopenharmony_ci  if (lt_debug)
623899ca880aSopenharmony_ci    {
623999ca880aSopenharmony_ci      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
624099ca880aSopenharmony_ci      va_start (args, fmt);
624199ca880aSopenharmony_ci      (void) vfprintf (stderr, fmt, args);
624299ca880aSopenharmony_ci      va_end (args);
624399ca880aSopenharmony_ci    }
624499ca880aSopenharmony_ci}
624599ca880aSopenharmony_ci
624699ca880aSopenharmony_cistatic void
624799ca880aSopenharmony_cilt_error_core (int exit_status, const char *file,
624899ca880aSopenharmony_ci	       int line, const char *mode,
624999ca880aSopenharmony_ci	       const char *message, va_list ap)
625099ca880aSopenharmony_ci{
625199ca880aSopenharmony_ci  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
625299ca880aSopenharmony_ci  vfprintf (stderr, message, ap);
625399ca880aSopenharmony_ci  fprintf (stderr, ".\n");
625499ca880aSopenharmony_ci
625599ca880aSopenharmony_ci  if (exit_status >= 0)
625699ca880aSopenharmony_ci    exit (exit_status);
625799ca880aSopenharmony_ci}
625899ca880aSopenharmony_ci
625999ca880aSopenharmony_civoid
626099ca880aSopenharmony_cilt_fatal (const char *file, int line, const char *message, ...)
626199ca880aSopenharmony_ci{
626299ca880aSopenharmony_ci  va_list ap;
626399ca880aSopenharmony_ci  va_start (ap, message);
626499ca880aSopenharmony_ci  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
626599ca880aSopenharmony_ci  va_end (ap);
626699ca880aSopenharmony_ci}
626799ca880aSopenharmony_ci
626899ca880aSopenharmony_cistatic const char *
626999ca880aSopenharmony_cinonnull (const char *s)
627099ca880aSopenharmony_ci{
627199ca880aSopenharmony_ci  return s ? s : "(null)";
627299ca880aSopenharmony_ci}
627399ca880aSopenharmony_ci
627499ca880aSopenharmony_cistatic const char *
627599ca880aSopenharmony_cinonempty (const char *s)
627699ca880aSopenharmony_ci{
627799ca880aSopenharmony_ci  return (s && !*s) ? "(empty)" : nonnull (s);
627899ca880aSopenharmony_ci}
627999ca880aSopenharmony_ci
628099ca880aSopenharmony_civoid
628199ca880aSopenharmony_cilt_setenv (const char *name, const char *value)
628299ca880aSopenharmony_ci{
628399ca880aSopenharmony_ci  lt_debugprintf (__FILE__, __LINE__,
628499ca880aSopenharmony_ci		  "(lt_setenv) setting '%s' to '%s'\n",
628599ca880aSopenharmony_ci                  nonnull (name), nonnull (value));
628699ca880aSopenharmony_ci  {
628799ca880aSopenharmony_ci#ifdef HAVE_SETENV
628899ca880aSopenharmony_ci    /* always make a copy, for consistency with !HAVE_SETENV */
628999ca880aSopenharmony_ci    char *str = xstrdup (value);
629099ca880aSopenharmony_ci    setenv (name, str, 1);
629199ca880aSopenharmony_ci#else
629299ca880aSopenharmony_ci    size_t len = strlen (name) + 1 + strlen (value) + 1;
629399ca880aSopenharmony_ci    char *str = XMALLOC (char, len);
629499ca880aSopenharmony_ci    sprintf (str, "%s=%s", name, value);
629599ca880aSopenharmony_ci    if (putenv (str) != EXIT_SUCCESS)
629699ca880aSopenharmony_ci      {
629799ca880aSopenharmony_ci        XFREE (str);
629899ca880aSopenharmony_ci      }
629999ca880aSopenharmony_ci#endif
630099ca880aSopenharmony_ci  }
630199ca880aSopenharmony_ci}
630299ca880aSopenharmony_ci
630399ca880aSopenharmony_cichar *
630499ca880aSopenharmony_cilt_extend_str (const char *orig_value, const char *add, int to_end)
630599ca880aSopenharmony_ci{
630699ca880aSopenharmony_ci  char *new_value;
630799ca880aSopenharmony_ci  if (orig_value && *orig_value)
630899ca880aSopenharmony_ci    {
630999ca880aSopenharmony_ci      size_t orig_value_len = strlen (orig_value);
631099ca880aSopenharmony_ci      size_t add_len = strlen (add);
631199ca880aSopenharmony_ci      new_value = XMALLOC (char, add_len + orig_value_len + 1);
631299ca880aSopenharmony_ci      if (to_end)
631399ca880aSopenharmony_ci        {
631499ca880aSopenharmony_ci          strcpy (new_value, orig_value);
631599ca880aSopenharmony_ci          strcpy (new_value + orig_value_len, add);
631699ca880aSopenharmony_ci        }
631799ca880aSopenharmony_ci      else
631899ca880aSopenharmony_ci        {
631999ca880aSopenharmony_ci          strcpy (new_value, add);
632099ca880aSopenharmony_ci          strcpy (new_value + add_len, orig_value);
632199ca880aSopenharmony_ci        }
632299ca880aSopenharmony_ci    }
632399ca880aSopenharmony_ci  else
632499ca880aSopenharmony_ci    {
632599ca880aSopenharmony_ci      new_value = xstrdup (add);
632699ca880aSopenharmony_ci    }
632799ca880aSopenharmony_ci  return new_value;
632899ca880aSopenharmony_ci}
632999ca880aSopenharmony_ci
633099ca880aSopenharmony_civoid
633199ca880aSopenharmony_cilt_update_exe_path (const char *name, const char *value)
633299ca880aSopenharmony_ci{
633399ca880aSopenharmony_ci  lt_debugprintf (__FILE__, __LINE__,
633499ca880aSopenharmony_ci		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
633599ca880aSopenharmony_ci                  nonnull (name), nonnull (value));
633699ca880aSopenharmony_ci
633799ca880aSopenharmony_ci  if (name && *name && value && *value)
633899ca880aSopenharmony_ci    {
633999ca880aSopenharmony_ci      char *new_value = lt_extend_str (getenv (name), value, 0);
634099ca880aSopenharmony_ci      /* some systems can't cope with a ':'-terminated path #' */
634199ca880aSopenharmony_ci      size_t len = strlen (new_value);
634299ca880aSopenharmony_ci      while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
634399ca880aSopenharmony_ci        {
634499ca880aSopenharmony_ci          new_value[--len] = '\0';
634599ca880aSopenharmony_ci        }
634699ca880aSopenharmony_ci      lt_setenv (name, new_value);
634799ca880aSopenharmony_ci      XFREE (new_value);
634899ca880aSopenharmony_ci    }
634999ca880aSopenharmony_ci}
635099ca880aSopenharmony_ci
635199ca880aSopenharmony_civoid
635299ca880aSopenharmony_cilt_update_lib_path (const char *name, const char *value)
635399ca880aSopenharmony_ci{
635499ca880aSopenharmony_ci  lt_debugprintf (__FILE__, __LINE__,
635599ca880aSopenharmony_ci		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
635699ca880aSopenharmony_ci                  nonnull (name), nonnull (value));
635799ca880aSopenharmony_ci
635899ca880aSopenharmony_ci  if (name && *name && value && *value)
635999ca880aSopenharmony_ci    {
636099ca880aSopenharmony_ci      char *new_value = lt_extend_str (getenv (name), value, 0);
636199ca880aSopenharmony_ci      lt_setenv (name, new_value);
636299ca880aSopenharmony_ci      XFREE (new_value);
636399ca880aSopenharmony_ci    }
636499ca880aSopenharmony_ci}
636599ca880aSopenharmony_ci
636699ca880aSopenharmony_ciEOF
636799ca880aSopenharmony_ci	    case $host_os in
636899ca880aSopenharmony_ci	      mingw*)
636999ca880aSopenharmony_ci		cat <<"EOF"
637099ca880aSopenharmony_ci
637199ca880aSopenharmony_ci/* Prepares an argument vector before calling spawn().
637299ca880aSopenharmony_ci   Note that spawn() does not by itself call the command interpreter
637399ca880aSopenharmony_ci     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
637499ca880aSopenharmony_ci      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
637599ca880aSopenharmony_ci         GetVersionEx(&v);
637699ca880aSopenharmony_ci         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
637799ca880aSopenharmony_ci      }) ? "cmd.exe" : "command.com").
637899ca880aSopenharmony_ci   Instead it simply concatenates the arguments, separated by ' ', and calls
637999ca880aSopenharmony_ci   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
638099ca880aSopenharmony_ci   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
638199ca880aSopenharmony_ci   special way:
638299ca880aSopenharmony_ci   - Space and tab are interpreted as delimiters. They are not treated as
638399ca880aSopenharmony_ci     delimiters if they are surrounded by double quotes: "...".
638499ca880aSopenharmony_ci   - Unescaped double quotes are removed from the input. Their only effect is
638599ca880aSopenharmony_ci     that within double quotes, space and tab are treated like normal
638699ca880aSopenharmony_ci     characters.
638799ca880aSopenharmony_ci   - Backslashes not followed by double quotes are not special.
638899ca880aSopenharmony_ci   - But 2*n+1 backslashes followed by a double quote become
638999ca880aSopenharmony_ci     n backslashes followed by a double quote (n >= 0):
639099ca880aSopenharmony_ci       \" -> "
639199ca880aSopenharmony_ci       \\\" -> \"
639299ca880aSopenharmony_ci       \\\\\" -> \\"
639399ca880aSopenharmony_ci */
639499ca880aSopenharmony_ci#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
639599ca880aSopenharmony_ci#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
639699ca880aSopenharmony_cichar **
639799ca880aSopenharmony_ciprepare_spawn (char **argv)
639899ca880aSopenharmony_ci{
639999ca880aSopenharmony_ci  size_t argc;
640099ca880aSopenharmony_ci  char **new_argv;
640199ca880aSopenharmony_ci  size_t i;
640299ca880aSopenharmony_ci
640399ca880aSopenharmony_ci  /* Count number of arguments.  */
640499ca880aSopenharmony_ci  for (argc = 0; argv[argc] != NULL; argc++)
640599ca880aSopenharmony_ci    ;
640699ca880aSopenharmony_ci
640799ca880aSopenharmony_ci  /* Allocate new argument vector.  */
640899ca880aSopenharmony_ci  new_argv = XMALLOC (char *, argc + 1);
640999ca880aSopenharmony_ci
641099ca880aSopenharmony_ci  /* Put quoted arguments into the new argument vector.  */
641199ca880aSopenharmony_ci  for (i = 0; i < argc; i++)
641299ca880aSopenharmony_ci    {
641399ca880aSopenharmony_ci      const char *string = argv[i];
641499ca880aSopenharmony_ci
641599ca880aSopenharmony_ci      if (string[0] == '\0')
641699ca880aSopenharmony_ci	new_argv[i] = xstrdup ("\"\"");
641799ca880aSopenharmony_ci      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
641899ca880aSopenharmony_ci	{
641999ca880aSopenharmony_ci	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
642099ca880aSopenharmony_ci	  size_t length;
642199ca880aSopenharmony_ci	  unsigned int backslashes;
642299ca880aSopenharmony_ci	  const char *s;
642399ca880aSopenharmony_ci	  char *quoted_string;
642499ca880aSopenharmony_ci	  char *p;
642599ca880aSopenharmony_ci
642699ca880aSopenharmony_ci	  length = 0;
642799ca880aSopenharmony_ci	  backslashes = 0;
642899ca880aSopenharmony_ci	  if (quote_around)
642999ca880aSopenharmony_ci	    length++;
643099ca880aSopenharmony_ci	  for (s = string; *s != '\0'; s++)
643199ca880aSopenharmony_ci	    {
643299ca880aSopenharmony_ci	      char c = *s;
643399ca880aSopenharmony_ci	      if (c == '"')
643499ca880aSopenharmony_ci		length += backslashes + 1;
643599ca880aSopenharmony_ci	      length++;
643699ca880aSopenharmony_ci	      if (c == '\\')
643799ca880aSopenharmony_ci		backslashes++;
643899ca880aSopenharmony_ci	      else
643999ca880aSopenharmony_ci		backslashes = 0;
644099ca880aSopenharmony_ci	    }
644199ca880aSopenharmony_ci	  if (quote_around)
644299ca880aSopenharmony_ci	    length += backslashes + 1;
644399ca880aSopenharmony_ci
644499ca880aSopenharmony_ci	  quoted_string = XMALLOC (char, length + 1);
644599ca880aSopenharmony_ci
644699ca880aSopenharmony_ci	  p = quoted_string;
644799ca880aSopenharmony_ci	  backslashes = 0;
644899ca880aSopenharmony_ci	  if (quote_around)
644999ca880aSopenharmony_ci	    *p++ = '"';
645099ca880aSopenharmony_ci	  for (s = string; *s != '\0'; s++)
645199ca880aSopenharmony_ci	    {
645299ca880aSopenharmony_ci	      char c = *s;
645399ca880aSopenharmony_ci	      if (c == '"')
645499ca880aSopenharmony_ci		{
645599ca880aSopenharmony_ci		  unsigned int j;
645699ca880aSopenharmony_ci		  for (j = backslashes + 1; j > 0; j--)
645799ca880aSopenharmony_ci		    *p++ = '\\';
645899ca880aSopenharmony_ci		}
645999ca880aSopenharmony_ci	      *p++ = c;
646099ca880aSopenharmony_ci	      if (c == '\\')
646199ca880aSopenharmony_ci		backslashes++;
646299ca880aSopenharmony_ci	      else
646399ca880aSopenharmony_ci		backslashes = 0;
646499ca880aSopenharmony_ci	    }
646599ca880aSopenharmony_ci	  if (quote_around)
646699ca880aSopenharmony_ci	    {
646799ca880aSopenharmony_ci	      unsigned int j;
646899ca880aSopenharmony_ci	      for (j = backslashes; j > 0; j--)
646999ca880aSopenharmony_ci		*p++ = '\\';
647099ca880aSopenharmony_ci	      *p++ = '"';
647199ca880aSopenharmony_ci	    }
647299ca880aSopenharmony_ci	  *p = '\0';
647399ca880aSopenharmony_ci
647499ca880aSopenharmony_ci	  new_argv[i] = quoted_string;
647599ca880aSopenharmony_ci	}
647699ca880aSopenharmony_ci      else
647799ca880aSopenharmony_ci	new_argv[i] = (char *) string;
647899ca880aSopenharmony_ci    }
647999ca880aSopenharmony_ci  new_argv[argc] = NULL;
648099ca880aSopenharmony_ci
648199ca880aSopenharmony_ci  return new_argv;
648299ca880aSopenharmony_ci}
648399ca880aSopenharmony_ciEOF
648499ca880aSopenharmony_ci		;;
648599ca880aSopenharmony_ci	    esac
648699ca880aSopenharmony_ci
648799ca880aSopenharmony_ci            cat <<"EOF"
648899ca880aSopenharmony_civoid lt_dump_script (FILE* f)
648999ca880aSopenharmony_ci{
649099ca880aSopenharmony_ciEOF
649199ca880aSopenharmony_ci	    func_emit_wrapper yes |
649299ca880aSopenharmony_ci	      $SED -n -e '
649399ca880aSopenharmony_cis/^\(.\{79\}\)\(..*\)/\1\
649499ca880aSopenharmony_ci\2/
649599ca880aSopenharmony_cih
649699ca880aSopenharmony_cis/\([\\"]\)/\\\1/g
649799ca880aSopenharmony_cis/$/\\n/
649899ca880aSopenharmony_cis/\([^\n]*\).*/  fputs ("\1", f);/p
649999ca880aSopenharmony_cig
650099ca880aSopenharmony_ciD'
650199ca880aSopenharmony_ci            cat <<"EOF"
650299ca880aSopenharmony_ci}
650399ca880aSopenharmony_ciEOF
650499ca880aSopenharmony_ci}
650599ca880aSopenharmony_ci# end: func_emit_cwrapperexe_src
650699ca880aSopenharmony_ci
650799ca880aSopenharmony_ci# func_win32_import_lib_p ARG
650899ca880aSopenharmony_ci# True if ARG is an import lib, as indicated by $file_magic_cmd
650999ca880aSopenharmony_cifunc_win32_import_lib_p ()
651099ca880aSopenharmony_ci{
651199ca880aSopenharmony_ci    $debug_cmd
651299ca880aSopenharmony_ci
651399ca880aSopenharmony_ci    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
651499ca880aSopenharmony_ci    *import*) : ;;
651599ca880aSopenharmony_ci    *) false ;;
651699ca880aSopenharmony_ci    esac
651799ca880aSopenharmony_ci}
651899ca880aSopenharmony_ci
651999ca880aSopenharmony_ci# func_suncc_cstd_abi
652099ca880aSopenharmony_ci# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!!
652199ca880aSopenharmony_ci# Several compiler flags select an ABI that is incompatible with the
652299ca880aSopenharmony_ci# Cstd library. Avoid specifying it if any are in CXXFLAGS.
652399ca880aSopenharmony_cifunc_suncc_cstd_abi ()
652499ca880aSopenharmony_ci{
652599ca880aSopenharmony_ci    $debug_cmd
652699ca880aSopenharmony_ci
652799ca880aSopenharmony_ci    case " $compile_command " in
652899ca880aSopenharmony_ci    *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*)
652999ca880aSopenharmony_ci      suncc_use_cstd_abi=no
653099ca880aSopenharmony_ci      ;;
653199ca880aSopenharmony_ci    *)
653299ca880aSopenharmony_ci      suncc_use_cstd_abi=yes
653399ca880aSopenharmony_ci      ;;
653499ca880aSopenharmony_ci    esac
653599ca880aSopenharmony_ci}
653699ca880aSopenharmony_ci
653799ca880aSopenharmony_ci# func_mode_link arg...
653899ca880aSopenharmony_cifunc_mode_link ()
653999ca880aSopenharmony_ci{
654099ca880aSopenharmony_ci    $debug_cmd
654199ca880aSopenharmony_ci
654299ca880aSopenharmony_ci    case $host in
654399ca880aSopenharmony_ci    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
654499ca880aSopenharmony_ci      # It is impossible to link a dll without this setting, and
654599ca880aSopenharmony_ci      # we shouldn't force the makefile maintainer to figure out
654699ca880aSopenharmony_ci      # what system we are compiling for in order to pass an extra
654799ca880aSopenharmony_ci      # flag for every libtool invocation.
654899ca880aSopenharmony_ci      # allow_undefined=no
654999ca880aSopenharmony_ci
655099ca880aSopenharmony_ci      # FIXME: Unfortunately, there are problems with the above when trying
655199ca880aSopenharmony_ci      # to make a dll that has undefined symbols, in which case not
655299ca880aSopenharmony_ci      # even a static library is built.  For now, we need to specify
655399ca880aSopenharmony_ci      # -no-undefined on the libtool link line when we can be certain
655499ca880aSopenharmony_ci      # that all symbols are satisfied, otherwise we get a static library.
655599ca880aSopenharmony_ci      allow_undefined=yes
655699ca880aSopenharmony_ci      ;;
655799ca880aSopenharmony_ci    *)
655899ca880aSopenharmony_ci      allow_undefined=yes
655999ca880aSopenharmony_ci      ;;
656099ca880aSopenharmony_ci    esac
656199ca880aSopenharmony_ci    libtool_args=$nonopt
656299ca880aSopenharmony_ci    base_compile="$nonopt $@"
656399ca880aSopenharmony_ci    compile_command=$nonopt
656499ca880aSopenharmony_ci    finalize_command=$nonopt
656599ca880aSopenharmony_ci
656699ca880aSopenharmony_ci    compile_rpath=
656799ca880aSopenharmony_ci    finalize_rpath=
656899ca880aSopenharmony_ci    compile_shlibpath=
656999ca880aSopenharmony_ci    finalize_shlibpath=
657099ca880aSopenharmony_ci    convenience=
657199ca880aSopenharmony_ci    old_convenience=
657299ca880aSopenharmony_ci    deplibs=
657399ca880aSopenharmony_ci    old_deplibs=
657499ca880aSopenharmony_ci    compiler_flags=
657599ca880aSopenharmony_ci    linker_flags=
657699ca880aSopenharmony_ci    dllsearchpath=
657799ca880aSopenharmony_ci    lib_search_path=`pwd`
657899ca880aSopenharmony_ci    inst_prefix_dir=
657999ca880aSopenharmony_ci    new_inherited_linker_flags=
658099ca880aSopenharmony_ci
658199ca880aSopenharmony_ci    avoid_version=no
658299ca880aSopenharmony_ci    bindir=
658399ca880aSopenharmony_ci    dlfiles=
658499ca880aSopenharmony_ci    dlprefiles=
658599ca880aSopenharmony_ci    dlself=no
658699ca880aSopenharmony_ci    export_dynamic=no
658799ca880aSopenharmony_ci    export_symbols=
658899ca880aSopenharmony_ci    export_symbols_regex=
658999ca880aSopenharmony_ci    generated=
659099ca880aSopenharmony_ci    libobjs=
659199ca880aSopenharmony_ci    ltlibs=
659299ca880aSopenharmony_ci    module=no
659399ca880aSopenharmony_ci    no_install=no
659499ca880aSopenharmony_ci    objs=
659599ca880aSopenharmony_ci    os2dllname=
659699ca880aSopenharmony_ci    non_pic_objects=
659799ca880aSopenharmony_ci    precious_files_regex=
659899ca880aSopenharmony_ci    prefer_static_libs=no
659999ca880aSopenharmony_ci    preload=false
660099ca880aSopenharmony_ci    prev=
660199ca880aSopenharmony_ci    prevarg=
660299ca880aSopenharmony_ci    release=
660399ca880aSopenharmony_ci    rpath=
660499ca880aSopenharmony_ci    xrpath=
660599ca880aSopenharmony_ci    perm_rpath=
660699ca880aSopenharmony_ci    temp_rpath=
660799ca880aSopenharmony_ci    thread_safe=no
660899ca880aSopenharmony_ci    vinfo=
660999ca880aSopenharmony_ci    vinfo_number=no
661099ca880aSopenharmony_ci    weak_libs=
661199ca880aSopenharmony_ci    single_module=$wl-single_module
661299ca880aSopenharmony_ci    func_infer_tag $base_compile
661399ca880aSopenharmony_ci
661499ca880aSopenharmony_ci    # We need to know -static, to get the right output filenames.
661599ca880aSopenharmony_ci    for arg
661699ca880aSopenharmony_ci    do
661799ca880aSopenharmony_ci      case $arg in
661899ca880aSopenharmony_ci      -shared)
661999ca880aSopenharmony_ci	test yes != "$build_libtool_libs" \
662099ca880aSopenharmony_ci	  && func_fatal_configuration "cannot build a shared library"
662199ca880aSopenharmony_ci	build_old_libs=no
662299ca880aSopenharmony_ci	break
662399ca880aSopenharmony_ci	;;
662499ca880aSopenharmony_ci      -all-static | -static | -static-libtool-libs)
662599ca880aSopenharmony_ci	case $arg in
662699ca880aSopenharmony_ci	-all-static)
662799ca880aSopenharmony_ci	  if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then
662899ca880aSopenharmony_ci	    func_warning "complete static linking is impossible in this configuration"
662999ca880aSopenharmony_ci	  fi
663099ca880aSopenharmony_ci	  if test -n "$link_static_flag"; then
663199ca880aSopenharmony_ci	    dlopen_self=$dlopen_self_static
663299ca880aSopenharmony_ci	  fi
663399ca880aSopenharmony_ci	  prefer_static_libs=yes
663499ca880aSopenharmony_ci	  ;;
663599ca880aSopenharmony_ci	-static)
663699ca880aSopenharmony_ci	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
663799ca880aSopenharmony_ci	    dlopen_self=$dlopen_self_static
663899ca880aSopenharmony_ci	  fi
663999ca880aSopenharmony_ci	  prefer_static_libs=built
664099ca880aSopenharmony_ci	  ;;
664199ca880aSopenharmony_ci	-static-libtool-libs)
664299ca880aSopenharmony_ci	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
664399ca880aSopenharmony_ci	    dlopen_self=$dlopen_self_static
664499ca880aSopenharmony_ci	  fi
664599ca880aSopenharmony_ci	  prefer_static_libs=yes
664699ca880aSopenharmony_ci	  ;;
664799ca880aSopenharmony_ci	esac
664899ca880aSopenharmony_ci	build_libtool_libs=no
664999ca880aSopenharmony_ci	build_old_libs=yes
665099ca880aSopenharmony_ci	break
665199ca880aSopenharmony_ci	;;
665299ca880aSopenharmony_ci      esac
665399ca880aSopenharmony_ci    done
665499ca880aSopenharmony_ci
665599ca880aSopenharmony_ci    # See if our shared archives depend on static archives.
665699ca880aSopenharmony_ci    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
665799ca880aSopenharmony_ci
665899ca880aSopenharmony_ci    # Go through the arguments, transforming them on the way.
665999ca880aSopenharmony_ci    while test "$#" -gt 0; do
666099ca880aSopenharmony_ci      arg=$1
666199ca880aSopenharmony_ci      shift
666299ca880aSopenharmony_ci      func_quote_for_eval "$arg"
666399ca880aSopenharmony_ci      qarg=$func_quote_for_eval_unquoted_result
666499ca880aSopenharmony_ci      func_append libtool_args " $func_quote_for_eval_result"
666599ca880aSopenharmony_ci
666699ca880aSopenharmony_ci      # If the previous option needs an argument, assign it.
666799ca880aSopenharmony_ci      if test -n "$prev"; then
666899ca880aSopenharmony_ci	case $prev in
666999ca880aSopenharmony_ci	output)
667099ca880aSopenharmony_ci	  func_append compile_command " @OUTPUT@"
667199ca880aSopenharmony_ci	  func_append finalize_command " @OUTPUT@"
667299ca880aSopenharmony_ci	  ;;
667399ca880aSopenharmony_ci	esac
667499ca880aSopenharmony_ci
667599ca880aSopenharmony_ci	case $prev in
667699ca880aSopenharmony_ci	bindir)
667799ca880aSopenharmony_ci	  bindir=$arg
667899ca880aSopenharmony_ci	  prev=
667999ca880aSopenharmony_ci	  continue
668099ca880aSopenharmony_ci	  ;;
668199ca880aSopenharmony_ci	dlfiles|dlprefiles)
668299ca880aSopenharmony_ci	  $preload || {
668399ca880aSopenharmony_ci	    # Add the symbol object into the linking commands.
668499ca880aSopenharmony_ci	    func_append compile_command " @SYMFILE@"
668599ca880aSopenharmony_ci	    func_append finalize_command " @SYMFILE@"
668699ca880aSopenharmony_ci	    preload=:
668799ca880aSopenharmony_ci	  }
668899ca880aSopenharmony_ci	  case $arg in
668999ca880aSopenharmony_ci	  *.la | *.lo) ;;  # We handle these cases below.
669099ca880aSopenharmony_ci	  force)
669199ca880aSopenharmony_ci	    if test no = "$dlself"; then
669299ca880aSopenharmony_ci	      dlself=needless
669399ca880aSopenharmony_ci	      export_dynamic=yes
669499ca880aSopenharmony_ci	    fi
669599ca880aSopenharmony_ci	    prev=
669699ca880aSopenharmony_ci	    continue
669799ca880aSopenharmony_ci	    ;;
669899ca880aSopenharmony_ci	  self)
669999ca880aSopenharmony_ci	    if test dlprefiles = "$prev"; then
670099ca880aSopenharmony_ci	      dlself=yes
670199ca880aSopenharmony_ci	    elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then
670299ca880aSopenharmony_ci	      dlself=yes
670399ca880aSopenharmony_ci	    else
670499ca880aSopenharmony_ci	      dlself=needless
670599ca880aSopenharmony_ci	      export_dynamic=yes
670699ca880aSopenharmony_ci	    fi
670799ca880aSopenharmony_ci	    prev=
670899ca880aSopenharmony_ci	    continue
670999ca880aSopenharmony_ci	    ;;
671099ca880aSopenharmony_ci	  *)
671199ca880aSopenharmony_ci	    if test dlfiles = "$prev"; then
671299ca880aSopenharmony_ci	      func_append dlfiles " $arg"
671399ca880aSopenharmony_ci	    else
671499ca880aSopenharmony_ci	      func_append dlprefiles " $arg"
671599ca880aSopenharmony_ci	    fi
671699ca880aSopenharmony_ci	    prev=
671799ca880aSopenharmony_ci	    continue
671899ca880aSopenharmony_ci	    ;;
671999ca880aSopenharmony_ci	  esac
672099ca880aSopenharmony_ci	  ;;
672199ca880aSopenharmony_ci	expsyms)
672299ca880aSopenharmony_ci	  export_symbols=$arg
672399ca880aSopenharmony_ci	  test -f "$arg" \
672499ca880aSopenharmony_ci	    || func_fatal_error "symbol file '$arg' does not exist"
672599ca880aSopenharmony_ci	  prev=
672699ca880aSopenharmony_ci	  continue
672799ca880aSopenharmony_ci	  ;;
672899ca880aSopenharmony_ci	expsyms_regex)
672999ca880aSopenharmony_ci	  export_symbols_regex=$arg
673099ca880aSopenharmony_ci	  prev=
673199ca880aSopenharmony_ci	  continue
673299ca880aSopenharmony_ci	  ;;
673399ca880aSopenharmony_ci	framework)
673499ca880aSopenharmony_ci	  case $host in
673599ca880aSopenharmony_ci	    *-*-darwin*)
673699ca880aSopenharmony_ci	      case "$deplibs " in
673799ca880aSopenharmony_ci		*" $qarg.ltframework "*) ;;
673899ca880aSopenharmony_ci		*) func_append deplibs " $qarg.ltframework" # this is fixed later
673999ca880aSopenharmony_ci		   ;;
674099ca880aSopenharmony_ci	      esac
674199ca880aSopenharmony_ci	      ;;
674299ca880aSopenharmony_ci	  esac
674399ca880aSopenharmony_ci	  prev=
674499ca880aSopenharmony_ci	  continue
674599ca880aSopenharmony_ci	  ;;
674699ca880aSopenharmony_ci	inst_prefix)
674799ca880aSopenharmony_ci	  inst_prefix_dir=$arg
674899ca880aSopenharmony_ci	  prev=
674999ca880aSopenharmony_ci	  continue
675099ca880aSopenharmony_ci	  ;;
675199ca880aSopenharmony_ci	mllvm)
675299ca880aSopenharmony_ci	  # Clang does not use LLVM to link, so we can simply discard any
675399ca880aSopenharmony_ci	  # '-mllvm $arg' options when doing the link step.
675499ca880aSopenharmony_ci	  prev=
675599ca880aSopenharmony_ci	  continue
675699ca880aSopenharmony_ci	  ;;
675799ca880aSopenharmony_ci	objectlist)
675899ca880aSopenharmony_ci	  if test -f "$arg"; then
675999ca880aSopenharmony_ci	    save_arg=$arg
676099ca880aSopenharmony_ci	    moreargs=
676199ca880aSopenharmony_ci	    for fil in `cat "$save_arg"`
676299ca880aSopenharmony_ci	    do
676399ca880aSopenharmony_ci#	      func_append moreargs " $fil"
676499ca880aSopenharmony_ci	      arg=$fil
676599ca880aSopenharmony_ci	      # A libtool-controlled object.
676699ca880aSopenharmony_ci
676799ca880aSopenharmony_ci	      # Check to see that this really is a libtool object.
676899ca880aSopenharmony_ci	      if func_lalib_unsafe_p "$arg"; then
676999ca880aSopenharmony_ci		pic_object=
677099ca880aSopenharmony_ci		non_pic_object=
677199ca880aSopenharmony_ci
677299ca880aSopenharmony_ci		# Read the .lo file
677399ca880aSopenharmony_ci		func_source "$arg"
677499ca880aSopenharmony_ci
677599ca880aSopenharmony_ci		if test -z "$pic_object" ||
677699ca880aSopenharmony_ci		   test -z "$non_pic_object" ||
677799ca880aSopenharmony_ci		   test none = "$pic_object" &&
677899ca880aSopenharmony_ci		   test none = "$non_pic_object"; then
677999ca880aSopenharmony_ci		  func_fatal_error "cannot find name of object for '$arg'"
678099ca880aSopenharmony_ci		fi
678199ca880aSopenharmony_ci
678299ca880aSopenharmony_ci		# Extract subdirectory from the argument.
678399ca880aSopenharmony_ci		func_dirname "$arg" "/" ""
678499ca880aSopenharmony_ci		xdir=$func_dirname_result
678599ca880aSopenharmony_ci
678699ca880aSopenharmony_ci		if test none != "$pic_object"; then
678799ca880aSopenharmony_ci		  # Prepend the subdirectory the object is found in.
678899ca880aSopenharmony_ci		  pic_object=$xdir$pic_object
678999ca880aSopenharmony_ci
679099ca880aSopenharmony_ci		  if test dlfiles = "$prev"; then
679199ca880aSopenharmony_ci		    if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
679299ca880aSopenharmony_ci		      func_append dlfiles " $pic_object"
679399ca880aSopenharmony_ci		      prev=
679499ca880aSopenharmony_ci		      continue
679599ca880aSopenharmony_ci		    else
679699ca880aSopenharmony_ci		      # If libtool objects are unsupported, then we need to preload.
679799ca880aSopenharmony_ci		      prev=dlprefiles
679899ca880aSopenharmony_ci		    fi
679999ca880aSopenharmony_ci		  fi
680099ca880aSopenharmony_ci
680199ca880aSopenharmony_ci		  # CHECK ME:  I think I busted this.  -Ossama
680299ca880aSopenharmony_ci		  if test dlprefiles = "$prev"; then
680399ca880aSopenharmony_ci		    # Preload the old-style object.
680499ca880aSopenharmony_ci		    func_append dlprefiles " $pic_object"
680599ca880aSopenharmony_ci		    prev=
680699ca880aSopenharmony_ci		  fi
680799ca880aSopenharmony_ci
680899ca880aSopenharmony_ci		  # A PIC object.
680999ca880aSopenharmony_ci		  func_append libobjs " $pic_object"
681099ca880aSopenharmony_ci		  arg=$pic_object
681199ca880aSopenharmony_ci		fi
681299ca880aSopenharmony_ci
681399ca880aSopenharmony_ci		# Non-PIC object.
681499ca880aSopenharmony_ci		if test none != "$non_pic_object"; then
681599ca880aSopenharmony_ci		  # Prepend the subdirectory the object is found in.
681699ca880aSopenharmony_ci		  non_pic_object=$xdir$non_pic_object
681799ca880aSopenharmony_ci
681899ca880aSopenharmony_ci		  # A standard non-PIC object
681999ca880aSopenharmony_ci		  func_append non_pic_objects " $non_pic_object"
682099ca880aSopenharmony_ci		  if test -z "$pic_object" || test none = "$pic_object"; then
682199ca880aSopenharmony_ci		    arg=$non_pic_object
682299ca880aSopenharmony_ci		  fi
682399ca880aSopenharmony_ci		else
682499ca880aSopenharmony_ci		  # If the PIC object exists, use it instead.
682599ca880aSopenharmony_ci		  # $xdir was prepended to $pic_object above.
682699ca880aSopenharmony_ci		  non_pic_object=$pic_object
682799ca880aSopenharmony_ci		  func_append non_pic_objects " $non_pic_object"
682899ca880aSopenharmony_ci		fi
682999ca880aSopenharmony_ci	      else
683099ca880aSopenharmony_ci		# Only an error if not doing a dry-run.
683199ca880aSopenharmony_ci		if $opt_dry_run; then
683299ca880aSopenharmony_ci		  # Extract subdirectory from the argument.
683399ca880aSopenharmony_ci		  func_dirname "$arg" "/" ""
683499ca880aSopenharmony_ci		  xdir=$func_dirname_result
683599ca880aSopenharmony_ci
683699ca880aSopenharmony_ci		  func_lo2o "$arg"
683799ca880aSopenharmony_ci		  pic_object=$xdir$objdir/$func_lo2o_result
683899ca880aSopenharmony_ci		  non_pic_object=$xdir$func_lo2o_result
683999ca880aSopenharmony_ci		  func_append libobjs " $pic_object"
684099ca880aSopenharmony_ci		  func_append non_pic_objects " $non_pic_object"
684199ca880aSopenharmony_ci	        else
684299ca880aSopenharmony_ci		  func_fatal_error "'$arg' is not a valid libtool object"
684399ca880aSopenharmony_ci		fi
684499ca880aSopenharmony_ci	      fi
684599ca880aSopenharmony_ci	    done
684699ca880aSopenharmony_ci	  else
684799ca880aSopenharmony_ci	    func_fatal_error "link input file '$arg' does not exist"
684899ca880aSopenharmony_ci	  fi
684999ca880aSopenharmony_ci	  arg=$save_arg
685099ca880aSopenharmony_ci	  prev=
685199ca880aSopenharmony_ci	  continue
685299ca880aSopenharmony_ci	  ;;
685399ca880aSopenharmony_ci	os2dllname)
685499ca880aSopenharmony_ci	  os2dllname=$arg
685599ca880aSopenharmony_ci	  prev=
685699ca880aSopenharmony_ci	  continue
685799ca880aSopenharmony_ci	  ;;
685899ca880aSopenharmony_ci	precious_regex)
685999ca880aSopenharmony_ci	  precious_files_regex=$arg
686099ca880aSopenharmony_ci	  prev=
686199ca880aSopenharmony_ci	  continue
686299ca880aSopenharmony_ci	  ;;
686399ca880aSopenharmony_ci	release)
686499ca880aSopenharmony_ci	  release=-$arg
686599ca880aSopenharmony_ci	  prev=
686699ca880aSopenharmony_ci	  continue
686799ca880aSopenharmony_ci	  ;;
686899ca880aSopenharmony_ci	rpath | xrpath)
686999ca880aSopenharmony_ci	  # We need an absolute path.
687099ca880aSopenharmony_ci	  case $arg in
687199ca880aSopenharmony_ci	  [\\/]* | [A-Za-z]:[\\/]*) ;;
687299ca880aSopenharmony_ci	  *)
687399ca880aSopenharmony_ci	    func_fatal_error "only absolute run-paths are allowed"
687499ca880aSopenharmony_ci	    ;;
687599ca880aSopenharmony_ci	  esac
687699ca880aSopenharmony_ci	  if test rpath = "$prev"; then
687799ca880aSopenharmony_ci	    case "$rpath " in
687899ca880aSopenharmony_ci	    *" $arg "*) ;;
687999ca880aSopenharmony_ci	    *) func_append rpath " $arg" ;;
688099ca880aSopenharmony_ci	    esac
688199ca880aSopenharmony_ci	  else
688299ca880aSopenharmony_ci	    case "$xrpath " in
688399ca880aSopenharmony_ci	    *" $arg "*) ;;
688499ca880aSopenharmony_ci	    *) func_append xrpath " $arg" ;;
688599ca880aSopenharmony_ci	    esac
688699ca880aSopenharmony_ci	  fi
688799ca880aSopenharmony_ci	  prev=
688899ca880aSopenharmony_ci	  continue
688999ca880aSopenharmony_ci	  ;;
689099ca880aSopenharmony_ci	shrext)
689199ca880aSopenharmony_ci	  shrext_cmds=$arg
689299ca880aSopenharmony_ci	  prev=
689399ca880aSopenharmony_ci	  continue
689499ca880aSopenharmony_ci	  ;;
689599ca880aSopenharmony_ci	weak)
689699ca880aSopenharmony_ci	  func_append weak_libs " $arg"
689799ca880aSopenharmony_ci	  prev=
689899ca880aSopenharmony_ci	  continue
689999ca880aSopenharmony_ci	  ;;
690099ca880aSopenharmony_ci	xcclinker)
690199ca880aSopenharmony_ci	  func_append linker_flags " $qarg"
690299ca880aSopenharmony_ci	  func_append compiler_flags " $qarg"
690399ca880aSopenharmony_ci	  prev=
690499ca880aSopenharmony_ci	  func_append compile_command " $qarg"
690599ca880aSopenharmony_ci	  func_append finalize_command " $qarg"
690699ca880aSopenharmony_ci	  continue
690799ca880aSopenharmony_ci	  ;;
690899ca880aSopenharmony_ci	xcompiler)
690999ca880aSopenharmony_ci	  func_append compiler_flags " $qarg"
691099ca880aSopenharmony_ci	  prev=
691199ca880aSopenharmony_ci	  func_append compile_command " $qarg"
691299ca880aSopenharmony_ci	  func_append finalize_command " $qarg"
691399ca880aSopenharmony_ci	  continue
691499ca880aSopenharmony_ci	  ;;
691599ca880aSopenharmony_ci	xlinker)
691699ca880aSopenharmony_ci	  func_append linker_flags " $qarg"
691799ca880aSopenharmony_ci	  func_append compiler_flags " $wl$qarg"
691899ca880aSopenharmony_ci	  prev=
691999ca880aSopenharmony_ci	  func_append compile_command " $wl$qarg"
692099ca880aSopenharmony_ci	  func_append finalize_command " $wl$qarg"
692199ca880aSopenharmony_ci	  continue
692299ca880aSopenharmony_ci	  ;;
692399ca880aSopenharmony_ci	*)
692499ca880aSopenharmony_ci	  eval "$prev=\"\$arg\""
692599ca880aSopenharmony_ci	  prev=
692699ca880aSopenharmony_ci	  continue
692799ca880aSopenharmony_ci	  ;;
692899ca880aSopenharmony_ci	esac
692999ca880aSopenharmony_ci      fi # test -n "$prev"
693099ca880aSopenharmony_ci
693199ca880aSopenharmony_ci      prevarg=$arg
693299ca880aSopenharmony_ci
693399ca880aSopenharmony_ci      case $arg in
693499ca880aSopenharmony_ci      -all-static)
693599ca880aSopenharmony_ci	if test -n "$link_static_flag"; then
693699ca880aSopenharmony_ci	  # See comment for -static flag below, for more details.
693799ca880aSopenharmony_ci	  func_append compile_command " $link_static_flag"
693899ca880aSopenharmony_ci	  func_append finalize_command " $link_static_flag"
693999ca880aSopenharmony_ci	fi
694099ca880aSopenharmony_ci	continue
694199ca880aSopenharmony_ci	;;
694299ca880aSopenharmony_ci
694399ca880aSopenharmony_ci      -allow-undefined)
694499ca880aSopenharmony_ci	# FIXME: remove this flag sometime in the future.
694599ca880aSopenharmony_ci	func_fatal_error "'-allow-undefined' must not be used because it is the default"
694699ca880aSopenharmony_ci	;;
694799ca880aSopenharmony_ci
694899ca880aSopenharmony_ci      -avoid-version)
694999ca880aSopenharmony_ci	avoid_version=yes
695099ca880aSopenharmony_ci	continue
695199ca880aSopenharmony_ci	;;
695299ca880aSopenharmony_ci
695399ca880aSopenharmony_ci      -bindir)
695499ca880aSopenharmony_ci	prev=bindir
695599ca880aSopenharmony_ci	continue
695699ca880aSopenharmony_ci	;;
695799ca880aSopenharmony_ci
695899ca880aSopenharmony_ci      -dlopen)
695999ca880aSopenharmony_ci	prev=dlfiles
696099ca880aSopenharmony_ci	continue
696199ca880aSopenharmony_ci	;;
696299ca880aSopenharmony_ci
696399ca880aSopenharmony_ci      -dlpreopen)
696499ca880aSopenharmony_ci	prev=dlprefiles
696599ca880aSopenharmony_ci	continue
696699ca880aSopenharmony_ci	;;
696799ca880aSopenharmony_ci
696899ca880aSopenharmony_ci      -export-dynamic)
696999ca880aSopenharmony_ci	export_dynamic=yes
697099ca880aSopenharmony_ci	continue
697199ca880aSopenharmony_ci	;;
697299ca880aSopenharmony_ci
697399ca880aSopenharmony_ci      -export-symbols | -export-symbols-regex)
697499ca880aSopenharmony_ci	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
697599ca880aSopenharmony_ci	  func_fatal_error "more than one -exported-symbols argument is not allowed"
697699ca880aSopenharmony_ci	fi
697799ca880aSopenharmony_ci	if test X-export-symbols = "X$arg"; then
697899ca880aSopenharmony_ci	  prev=expsyms
697999ca880aSopenharmony_ci	else
698099ca880aSopenharmony_ci	  prev=expsyms_regex
698199ca880aSopenharmony_ci	fi
698299ca880aSopenharmony_ci	continue
698399ca880aSopenharmony_ci	;;
698499ca880aSopenharmony_ci
698599ca880aSopenharmony_ci      -framework)
698699ca880aSopenharmony_ci	prev=framework
698799ca880aSopenharmony_ci	continue
698899ca880aSopenharmony_ci	;;
698999ca880aSopenharmony_ci
699099ca880aSopenharmony_ci      -inst-prefix-dir)
699199ca880aSopenharmony_ci	prev=inst_prefix
699299ca880aSopenharmony_ci	continue
699399ca880aSopenharmony_ci	;;
699499ca880aSopenharmony_ci
699599ca880aSopenharmony_ci      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
699699ca880aSopenharmony_ci      # so, if we see these flags be careful not to treat them like -L
699799ca880aSopenharmony_ci      -L[A-Z][A-Z]*:*)
699899ca880aSopenharmony_ci	case $with_gcc/$host in
699999ca880aSopenharmony_ci	no/*-*-irix* | /*-*-irix*)
700099ca880aSopenharmony_ci	  func_append compile_command " $arg"
700199ca880aSopenharmony_ci	  func_append finalize_command " $arg"
700299ca880aSopenharmony_ci	  ;;
700399ca880aSopenharmony_ci	esac
700499ca880aSopenharmony_ci	continue
700599ca880aSopenharmony_ci	;;
700699ca880aSopenharmony_ci
700799ca880aSopenharmony_ci      -L*)
700899ca880aSopenharmony_ci	func_stripname "-L" '' "$arg"
700999ca880aSopenharmony_ci	if test -z "$func_stripname_result"; then
701099ca880aSopenharmony_ci	  if test "$#" -gt 0; then
701199ca880aSopenharmony_ci	    func_fatal_error "require no space between '-L' and '$1'"
701299ca880aSopenharmony_ci	  else
701399ca880aSopenharmony_ci	    func_fatal_error "need path for '-L' option"
701499ca880aSopenharmony_ci	  fi
701599ca880aSopenharmony_ci	fi
701699ca880aSopenharmony_ci	func_resolve_sysroot "$func_stripname_result"
701799ca880aSopenharmony_ci	dir=$func_resolve_sysroot_result
701899ca880aSopenharmony_ci	# We need an absolute path.
701999ca880aSopenharmony_ci	case $dir in
702099ca880aSopenharmony_ci	[\\/]* | [A-Za-z]:[\\/]*) ;;
702199ca880aSopenharmony_ci	*)
702299ca880aSopenharmony_ci	  absdir=`cd "$dir" && pwd`
702399ca880aSopenharmony_ci	  test -z "$absdir" && \
702499ca880aSopenharmony_ci	    func_fatal_error "cannot determine absolute directory name of '$dir'"
702599ca880aSopenharmony_ci	  dir=$absdir
702699ca880aSopenharmony_ci	  ;;
702799ca880aSopenharmony_ci	esac
702899ca880aSopenharmony_ci	case "$deplibs " in
702999ca880aSopenharmony_ci	*" -L$dir "* | *" $arg "*)
703099ca880aSopenharmony_ci	  # Will only happen for absolute or sysroot arguments
703199ca880aSopenharmony_ci	  ;;
703299ca880aSopenharmony_ci	*)
703399ca880aSopenharmony_ci	  # Preserve sysroot, but never include relative directories
703499ca880aSopenharmony_ci	  case $dir in
703599ca880aSopenharmony_ci	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
703699ca880aSopenharmony_ci	    *) func_append deplibs " -L$dir" ;;
703799ca880aSopenharmony_ci	  esac
703899ca880aSopenharmony_ci	  func_append lib_search_path " $dir"
703999ca880aSopenharmony_ci	  ;;
704099ca880aSopenharmony_ci	esac
704199ca880aSopenharmony_ci	case $host in
704299ca880aSopenharmony_ci	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
704399ca880aSopenharmony_ci	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
704499ca880aSopenharmony_ci	  case :$dllsearchpath: in
704599ca880aSopenharmony_ci	  *":$dir:"*) ;;
704699ca880aSopenharmony_ci	  ::) dllsearchpath=$dir;;
704799ca880aSopenharmony_ci	  *) func_append dllsearchpath ":$dir";;
704899ca880aSopenharmony_ci	  esac
704999ca880aSopenharmony_ci	  case :$dllsearchpath: in
705099ca880aSopenharmony_ci	  *":$testbindir:"*) ;;
705199ca880aSopenharmony_ci	  ::) dllsearchpath=$testbindir;;
705299ca880aSopenharmony_ci	  *) func_append dllsearchpath ":$testbindir";;
705399ca880aSopenharmony_ci	  esac
705499ca880aSopenharmony_ci	  ;;
705599ca880aSopenharmony_ci	esac
705699ca880aSopenharmony_ci	continue
705799ca880aSopenharmony_ci	;;
705899ca880aSopenharmony_ci
705999ca880aSopenharmony_ci      -l*)
706099ca880aSopenharmony_ci	if test X-lc = "X$arg" || test X-lm = "X$arg"; then
706199ca880aSopenharmony_ci	  case $host in
706299ca880aSopenharmony_ci	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
706399ca880aSopenharmony_ci	    # These systems don't actually have a C or math library (as such)
706499ca880aSopenharmony_ci	    continue
706599ca880aSopenharmony_ci	    ;;
706699ca880aSopenharmony_ci	  *-*-os2*)
706799ca880aSopenharmony_ci	    # These systems don't actually have a C library (as such)
706899ca880aSopenharmony_ci	    test X-lc = "X$arg" && continue
706999ca880aSopenharmony_ci	    ;;
707099ca880aSopenharmony_ci	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
707199ca880aSopenharmony_ci	    # Do not include libc due to us having libc/libc_r.
707299ca880aSopenharmony_ci	    test X-lc = "X$arg" && continue
707399ca880aSopenharmony_ci	    ;;
707499ca880aSopenharmony_ci	  *-*-rhapsody* | *-*-darwin1.[012])
707599ca880aSopenharmony_ci	    # Rhapsody C and math libraries are in the System framework
707699ca880aSopenharmony_ci	    func_append deplibs " System.ltframework"
707799ca880aSopenharmony_ci	    continue
707899ca880aSopenharmony_ci	    ;;
707999ca880aSopenharmony_ci	  *-*-sco3.2v5* | *-*-sco5v6*)
708099ca880aSopenharmony_ci	    # Causes problems with __ctype
708199ca880aSopenharmony_ci	    test X-lc = "X$arg" && continue
708299ca880aSopenharmony_ci	    ;;
708399ca880aSopenharmony_ci	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
708499ca880aSopenharmony_ci	    # Compiler inserts libc in the correct place for threads to work
708599ca880aSopenharmony_ci	    test X-lc = "X$arg" && continue
708699ca880aSopenharmony_ci	    ;;
708799ca880aSopenharmony_ci	  esac
708899ca880aSopenharmony_ci	elif test X-lc_r = "X$arg"; then
708999ca880aSopenharmony_ci	 case $host in
709099ca880aSopenharmony_ci	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
709199ca880aSopenharmony_ci	   # Do not include libc_r directly, use -pthread flag.
709299ca880aSopenharmony_ci	   continue
709399ca880aSopenharmony_ci	   ;;
709499ca880aSopenharmony_ci	 esac
709599ca880aSopenharmony_ci	fi
709699ca880aSopenharmony_ci	func_append deplibs " $arg"
709799ca880aSopenharmony_ci	continue
709899ca880aSopenharmony_ci	;;
709999ca880aSopenharmony_ci
710099ca880aSopenharmony_ci      -mllvm)
710199ca880aSopenharmony_ci	prev=mllvm
710299ca880aSopenharmony_ci	continue
710399ca880aSopenharmony_ci	;;
710499ca880aSopenharmony_ci
710599ca880aSopenharmony_ci      -module)
710699ca880aSopenharmony_ci	module=yes
710799ca880aSopenharmony_ci	continue
710899ca880aSopenharmony_ci	;;
710999ca880aSopenharmony_ci
711099ca880aSopenharmony_ci      # Tru64 UNIX uses -model [arg] to determine the layout of C++
711199ca880aSopenharmony_ci      # classes, name mangling, and exception handling.
711299ca880aSopenharmony_ci      # Darwin uses the -arch flag to determine output architecture.
711399ca880aSopenharmony_ci      -model|-arch|-isysroot|--sysroot)
711499ca880aSopenharmony_ci	func_append compiler_flags " $arg"
711599ca880aSopenharmony_ci	func_append compile_command " $arg"
711699ca880aSopenharmony_ci	func_append finalize_command " $arg"
711799ca880aSopenharmony_ci	prev=xcompiler
711899ca880aSopenharmony_ci	continue
711999ca880aSopenharmony_ci	;;
712099ca880aSopenharmony_ci
712199ca880aSopenharmony_ci      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
712299ca880aSopenharmony_ci      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
712399ca880aSopenharmony_ci	func_append compiler_flags " $arg"
712499ca880aSopenharmony_ci	func_append compile_command " $arg"
712599ca880aSopenharmony_ci	func_append finalize_command " $arg"
712699ca880aSopenharmony_ci	case "$new_inherited_linker_flags " in
712799ca880aSopenharmony_ci	    *" $arg "*) ;;
712899ca880aSopenharmony_ci	    * ) func_append new_inherited_linker_flags " $arg" ;;
712999ca880aSopenharmony_ci	esac
713099ca880aSopenharmony_ci	continue
713199ca880aSopenharmony_ci	;;
713299ca880aSopenharmony_ci
713399ca880aSopenharmony_ci      -multi_module)
713499ca880aSopenharmony_ci	single_module=$wl-multi_module
713599ca880aSopenharmony_ci	continue
713699ca880aSopenharmony_ci	;;
713799ca880aSopenharmony_ci
713899ca880aSopenharmony_ci      -no-fast-install)
713999ca880aSopenharmony_ci	fast_install=no
714099ca880aSopenharmony_ci	continue
714199ca880aSopenharmony_ci	;;
714299ca880aSopenharmony_ci
714399ca880aSopenharmony_ci      -no-install)
714499ca880aSopenharmony_ci	case $host in
714599ca880aSopenharmony_ci	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
714699ca880aSopenharmony_ci	  # The PATH hackery in wrapper scripts is required on Windows
714799ca880aSopenharmony_ci	  # and Darwin in order for the loader to find any dlls it needs.
714899ca880aSopenharmony_ci	  func_warning "'-no-install' is ignored for $host"
714999ca880aSopenharmony_ci	  func_warning "assuming '-no-fast-install' instead"
715099ca880aSopenharmony_ci	  fast_install=no
715199ca880aSopenharmony_ci	  ;;
715299ca880aSopenharmony_ci	*) no_install=yes ;;
715399ca880aSopenharmony_ci	esac
715499ca880aSopenharmony_ci	continue
715599ca880aSopenharmony_ci	;;
715699ca880aSopenharmony_ci
715799ca880aSopenharmony_ci      -no-undefined)
715899ca880aSopenharmony_ci	allow_undefined=no
715999ca880aSopenharmony_ci	continue
716099ca880aSopenharmony_ci	;;
716199ca880aSopenharmony_ci
716299ca880aSopenharmony_ci      -objectlist)
716399ca880aSopenharmony_ci	prev=objectlist
716499ca880aSopenharmony_ci	continue
716599ca880aSopenharmony_ci	;;
716699ca880aSopenharmony_ci
716799ca880aSopenharmony_ci      -os2dllname)
716899ca880aSopenharmony_ci	prev=os2dllname
716999ca880aSopenharmony_ci	continue
717099ca880aSopenharmony_ci	;;
717199ca880aSopenharmony_ci
717299ca880aSopenharmony_ci      -o) prev=output ;;
717399ca880aSopenharmony_ci
717499ca880aSopenharmony_ci      -precious-files-regex)
717599ca880aSopenharmony_ci	prev=precious_regex
717699ca880aSopenharmony_ci	continue
717799ca880aSopenharmony_ci	;;
717899ca880aSopenharmony_ci
717999ca880aSopenharmony_ci      -release)
718099ca880aSopenharmony_ci	prev=release
718199ca880aSopenharmony_ci	continue
718299ca880aSopenharmony_ci	;;
718399ca880aSopenharmony_ci
718499ca880aSopenharmony_ci      -rpath)
718599ca880aSopenharmony_ci	prev=rpath
718699ca880aSopenharmony_ci	continue
718799ca880aSopenharmony_ci	;;
718899ca880aSopenharmony_ci
718999ca880aSopenharmony_ci      -R)
719099ca880aSopenharmony_ci	prev=xrpath
719199ca880aSopenharmony_ci	continue
719299ca880aSopenharmony_ci	;;
719399ca880aSopenharmony_ci
719499ca880aSopenharmony_ci      -R*)
719599ca880aSopenharmony_ci	func_stripname '-R' '' "$arg"
719699ca880aSopenharmony_ci	dir=$func_stripname_result
719799ca880aSopenharmony_ci	# We need an absolute path.
719899ca880aSopenharmony_ci	case $dir in
719999ca880aSopenharmony_ci	[\\/]* | [A-Za-z]:[\\/]*) ;;
720099ca880aSopenharmony_ci	=*)
720199ca880aSopenharmony_ci	  func_stripname '=' '' "$dir"
720299ca880aSopenharmony_ci	  dir=$lt_sysroot$func_stripname_result
720399ca880aSopenharmony_ci	  ;;
720499ca880aSopenharmony_ci	*)
720599ca880aSopenharmony_ci	  func_fatal_error "only absolute run-paths are allowed"
720699ca880aSopenharmony_ci	  ;;
720799ca880aSopenharmony_ci	esac
720899ca880aSopenharmony_ci	case "$xrpath " in
720999ca880aSopenharmony_ci	*" $dir "*) ;;
721099ca880aSopenharmony_ci	*) func_append xrpath " $dir" ;;
721199ca880aSopenharmony_ci	esac
721299ca880aSopenharmony_ci	continue
721399ca880aSopenharmony_ci	;;
721499ca880aSopenharmony_ci
721599ca880aSopenharmony_ci      -shared)
721699ca880aSopenharmony_ci	# The effects of -shared are defined in a previous loop.
721799ca880aSopenharmony_ci	continue
721899ca880aSopenharmony_ci	;;
721999ca880aSopenharmony_ci
722099ca880aSopenharmony_ci      -shrext)
722199ca880aSopenharmony_ci	prev=shrext
722299ca880aSopenharmony_ci	continue
722399ca880aSopenharmony_ci	;;
722499ca880aSopenharmony_ci
722599ca880aSopenharmony_ci      -static | -static-libtool-libs)
722699ca880aSopenharmony_ci	# The effects of -static are defined in a previous loop.
722799ca880aSopenharmony_ci	# We used to do the same as -all-static on platforms that
722899ca880aSopenharmony_ci	# didn't have a PIC flag, but the assumption that the effects
722999ca880aSopenharmony_ci	# would be equivalent was wrong.  It would break on at least
723099ca880aSopenharmony_ci	# Digital Unix and AIX.
723199ca880aSopenharmony_ci	continue
723299ca880aSopenharmony_ci	;;
723399ca880aSopenharmony_ci
723499ca880aSopenharmony_ci      -thread-safe)
723599ca880aSopenharmony_ci	thread_safe=yes
723699ca880aSopenharmony_ci	continue
723799ca880aSopenharmony_ci	;;
723899ca880aSopenharmony_ci
723999ca880aSopenharmony_ci      -version-info)
724099ca880aSopenharmony_ci	prev=vinfo
724199ca880aSopenharmony_ci	continue
724299ca880aSopenharmony_ci	;;
724399ca880aSopenharmony_ci
724499ca880aSopenharmony_ci      -version-number)
724599ca880aSopenharmony_ci	prev=vinfo
724699ca880aSopenharmony_ci	vinfo_number=yes
724799ca880aSopenharmony_ci	continue
724899ca880aSopenharmony_ci	;;
724999ca880aSopenharmony_ci
725099ca880aSopenharmony_ci      -weak)
725199ca880aSopenharmony_ci        prev=weak
725299ca880aSopenharmony_ci	continue
725399ca880aSopenharmony_ci	;;
725499ca880aSopenharmony_ci
725599ca880aSopenharmony_ci      -Wc,*)
725699ca880aSopenharmony_ci	func_stripname '-Wc,' '' "$arg"
725799ca880aSopenharmony_ci	args=$func_stripname_result
725899ca880aSopenharmony_ci	arg=
725999ca880aSopenharmony_ci	save_ifs=$IFS; IFS=,
726099ca880aSopenharmony_ci	for flag in $args; do
726199ca880aSopenharmony_ci	  IFS=$save_ifs
726299ca880aSopenharmony_ci          func_quote_for_eval "$flag"
726399ca880aSopenharmony_ci	  func_append arg " $func_quote_for_eval_result"
726499ca880aSopenharmony_ci	  func_append compiler_flags " $func_quote_for_eval_result"
726599ca880aSopenharmony_ci	done
726699ca880aSopenharmony_ci	IFS=$save_ifs
726799ca880aSopenharmony_ci	func_stripname ' ' '' "$arg"
726899ca880aSopenharmony_ci	arg=$func_stripname_result
726999ca880aSopenharmony_ci	;;
727099ca880aSopenharmony_ci
727199ca880aSopenharmony_ci      -Wl,*)
727299ca880aSopenharmony_ci	func_stripname '-Wl,' '' "$arg"
727399ca880aSopenharmony_ci	args=$func_stripname_result
727499ca880aSopenharmony_ci	arg=
727599ca880aSopenharmony_ci	save_ifs=$IFS; IFS=,
727699ca880aSopenharmony_ci	for flag in $args; do
727799ca880aSopenharmony_ci	  IFS=$save_ifs
727899ca880aSopenharmony_ci          func_quote_for_eval "$flag"
727999ca880aSopenharmony_ci	  func_append arg " $wl$func_quote_for_eval_result"
728099ca880aSopenharmony_ci	  func_append compiler_flags " $wl$func_quote_for_eval_result"
728199ca880aSopenharmony_ci	  func_append linker_flags " $func_quote_for_eval_result"
728299ca880aSopenharmony_ci	done
728399ca880aSopenharmony_ci	IFS=$save_ifs
728499ca880aSopenharmony_ci	func_stripname ' ' '' "$arg"
728599ca880aSopenharmony_ci	arg=$func_stripname_result
728699ca880aSopenharmony_ci	;;
728799ca880aSopenharmony_ci
728899ca880aSopenharmony_ci      -Xcompiler)
728999ca880aSopenharmony_ci	prev=xcompiler
729099ca880aSopenharmony_ci	continue
729199ca880aSopenharmony_ci	;;
729299ca880aSopenharmony_ci
729399ca880aSopenharmony_ci      -Xlinker)
729499ca880aSopenharmony_ci	prev=xlinker
729599ca880aSopenharmony_ci	continue
729699ca880aSopenharmony_ci	;;
729799ca880aSopenharmony_ci
729899ca880aSopenharmony_ci      -XCClinker)
729999ca880aSopenharmony_ci	prev=xcclinker
730099ca880aSopenharmony_ci	continue
730199ca880aSopenharmony_ci	;;
730299ca880aSopenharmony_ci
730399ca880aSopenharmony_ci      # -msg_* for osf cc
730499ca880aSopenharmony_ci      -msg_*)
730599ca880aSopenharmony_ci	func_quote_for_eval "$arg"
730699ca880aSopenharmony_ci	arg=$func_quote_for_eval_result
730799ca880aSopenharmony_ci	;;
730899ca880aSopenharmony_ci
730999ca880aSopenharmony_ci      # Flags to be passed through unchanged, with rationale:
731099ca880aSopenharmony_ci      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
731199ca880aSopenharmony_ci      # -r[0-9][0-9]*        specify processor for the SGI compiler
731299ca880aSopenharmony_ci      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
731399ca880aSopenharmony_ci      # +DA*, +DD*           enable 64-bit mode for the HP compiler
731499ca880aSopenharmony_ci      # -q*                  compiler args for the IBM compiler
731599ca880aSopenharmony_ci      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
731699ca880aSopenharmony_ci      # -F/path              path to uninstalled frameworks, gcc on darwin
731799ca880aSopenharmony_ci      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
731899ca880aSopenharmony_ci      # -fstack-protector*   stack protector flags for GCC
731999ca880aSopenharmony_ci      # @file                GCC response files
732099ca880aSopenharmony_ci      # -tp=*                Portland pgcc target processor selection
732199ca880aSopenharmony_ci      # --sysroot=*          for sysroot support
732299ca880aSopenharmony_ci      # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
732399ca880aSopenharmony_ci      # -specs=*             GCC specs files
732499ca880aSopenharmony_ci      # -stdlib=*            select c++ std lib with clang
732599ca880aSopenharmony_ci      # -fsanitize=*         Clang/GCC memory and address sanitizer
732699ca880aSopenharmony_ci      # -fuse-ld=*           Linker select flags for GCC
732799ca880aSopenharmony_ci      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
732899ca880aSopenharmony_ci      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
732999ca880aSopenharmony_ci      -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
733099ca880aSopenharmony_ci      -specs=*|-fsanitize=*|-fuse-ld=*)
733199ca880aSopenharmony_ci        func_quote_for_eval "$arg"
733299ca880aSopenharmony_ci	arg=$func_quote_for_eval_result
733399ca880aSopenharmony_ci        func_append compile_command " $arg"
733499ca880aSopenharmony_ci        func_append finalize_command " $arg"
733599ca880aSopenharmony_ci        func_append compiler_flags " $arg"
733699ca880aSopenharmony_ci        continue
733799ca880aSopenharmony_ci        ;;
733899ca880aSopenharmony_ci
733999ca880aSopenharmony_ci      -Z*)
734099ca880aSopenharmony_ci        if test os2 = "`expr $host : '.*\(os2\)'`"; then
734199ca880aSopenharmony_ci          # OS/2 uses -Zxxx to specify OS/2-specific options
734299ca880aSopenharmony_ci	  compiler_flags="$compiler_flags $arg"
734399ca880aSopenharmony_ci	  func_append compile_command " $arg"
734499ca880aSopenharmony_ci	  func_append finalize_command " $arg"
734599ca880aSopenharmony_ci	  case $arg in
734699ca880aSopenharmony_ci	  -Zlinker | -Zstack)
734799ca880aSopenharmony_ci	    prev=xcompiler
734899ca880aSopenharmony_ci	    ;;
734999ca880aSopenharmony_ci	  esac
735099ca880aSopenharmony_ci	  continue
735199ca880aSopenharmony_ci        else
735299ca880aSopenharmony_ci	  # Otherwise treat like 'Some other compiler flag' below
735399ca880aSopenharmony_ci	  func_quote_for_eval "$arg"
735499ca880aSopenharmony_ci	  arg=$func_quote_for_eval_result
735599ca880aSopenharmony_ci        fi
735699ca880aSopenharmony_ci	;;
735799ca880aSopenharmony_ci
735899ca880aSopenharmony_ci      # Some other compiler flag.
735999ca880aSopenharmony_ci      -* | +*)
736099ca880aSopenharmony_ci        func_quote_for_eval "$arg"
736199ca880aSopenharmony_ci	arg=$func_quote_for_eval_result
736299ca880aSopenharmony_ci	;;
736399ca880aSopenharmony_ci
736499ca880aSopenharmony_ci      *.$objext)
736599ca880aSopenharmony_ci	# A standard object.
736699ca880aSopenharmony_ci	func_append objs " $arg"
736799ca880aSopenharmony_ci	;;
736899ca880aSopenharmony_ci
736999ca880aSopenharmony_ci      *.lo)
737099ca880aSopenharmony_ci	# A libtool-controlled object.
737199ca880aSopenharmony_ci
737299ca880aSopenharmony_ci	# Check to see that this really is a libtool object.
737399ca880aSopenharmony_ci	if func_lalib_unsafe_p "$arg"; then
737499ca880aSopenharmony_ci	  pic_object=
737599ca880aSopenharmony_ci	  non_pic_object=
737699ca880aSopenharmony_ci
737799ca880aSopenharmony_ci	  # Read the .lo file
737899ca880aSopenharmony_ci	  func_source "$arg"
737999ca880aSopenharmony_ci
738099ca880aSopenharmony_ci	  if test -z "$pic_object" ||
738199ca880aSopenharmony_ci	     test -z "$non_pic_object" ||
738299ca880aSopenharmony_ci	     test none = "$pic_object" &&
738399ca880aSopenharmony_ci	     test none = "$non_pic_object"; then
738499ca880aSopenharmony_ci	    func_fatal_error "cannot find name of object for '$arg'"
738599ca880aSopenharmony_ci	  fi
738699ca880aSopenharmony_ci
738799ca880aSopenharmony_ci	  # Extract subdirectory from the argument.
738899ca880aSopenharmony_ci	  func_dirname "$arg" "/" ""
738999ca880aSopenharmony_ci	  xdir=$func_dirname_result
739099ca880aSopenharmony_ci
739199ca880aSopenharmony_ci	  test none = "$pic_object" || {
739299ca880aSopenharmony_ci	    # Prepend the subdirectory the object is found in.
739399ca880aSopenharmony_ci	    pic_object=$xdir$pic_object
739499ca880aSopenharmony_ci
739599ca880aSopenharmony_ci	    if test dlfiles = "$prev"; then
739699ca880aSopenharmony_ci	      if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
739799ca880aSopenharmony_ci		func_append dlfiles " $pic_object"
739899ca880aSopenharmony_ci		prev=
739999ca880aSopenharmony_ci		continue
740099ca880aSopenharmony_ci	      else
740199ca880aSopenharmony_ci		# If libtool objects are unsupported, then we need to preload.
740299ca880aSopenharmony_ci		prev=dlprefiles
740399ca880aSopenharmony_ci	      fi
740499ca880aSopenharmony_ci	    fi
740599ca880aSopenharmony_ci
740699ca880aSopenharmony_ci	    # CHECK ME:  I think I busted this.  -Ossama
740799ca880aSopenharmony_ci	    if test dlprefiles = "$prev"; then
740899ca880aSopenharmony_ci	      # Preload the old-style object.
740999ca880aSopenharmony_ci	      func_append dlprefiles " $pic_object"
741099ca880aSopenharmony_ci	      prev=
741199ca880aSopenharmony_ci	    fi
741299ca880aSopenharmony_ci
741399ca880aSopenharmony_ci	    # A PIC object.
741499ca880aSopenharmony_ci	    func_append libobjs " $pic_object"
741599ca880aSopenharmony_ci	    arg=$pic_object
741699ca880aSopenharmony_ci	  }
741799ca880aSopenharmony_ci
741899ca880aSopenharmony_ci	  # Non-PIC object.
741999ca880aSopenharmony_ci	  if test none != "$non_pic_object"; then
742099ca880aSopenharmony_ci	    # Prepend the subdirectory the object is found in.
742199ca880aSopenharmony_ci	    non_pic_object=$xdir$non_pic_object
742299ca880aSopenharmony_ci
742399ca880aSopenharmony_ci	    # A standard non-PIC object
742499ca880aSopenharmony_ci	    func_append non_pic_objects " $non_pic_object"
742599ca880aSopenharmony_ci	    if test -z "$pic_object" || test none = "$pic_object"; then
742699ca880aSopenharmony_ci	      arg=$non_pic_object
742799ca880aSopenharmony_ci	    fi
742899ca880aSopenharmony_ci	  else
742999ca880aSopenharmony_ci	    # If the PIC object exists, use it instead.
743099ca880aSopenharmony_ci	    # $xdir was prepended to $pic_object above.
743199ca880aSopenharmony_ci	    non_pic_object=$pic_object
743299ca880aSopenharmony_ci	    func_append non_pic_objects " $non_pic_object"
743399ca880aSopenharmony_ci	  fi
743499ca880aSopenharmony_ci	else
743599ca880aSopenharmony_ci	  # Only an error if not doing a dry-run.
743699ca880aSopenharmony_ci	  if $opt_dry_run; then
743799ca880aSopenharmony_ci	    # Extract subdirectory from the argument.
743899ca880aSopenharmony_ci	    func_dirname "$arg" "/" ""
743999ca880aSopenharmony_ci	    xdir=$func_dirname_result
744099ca880aSopenharmony_ci
744199ca880aSopenharmony_ci	    func_lo2o "$arg"
744299ca880aSopenharmony_ci	    pic_object=$xdir$objdir/$func_lo2o_result
744399ca880aSopenharmony_ci	    non_pic_object=$xdir$func_lo2o_result
744499ca880aSopenharmony_ci	    func_append libobjs " $pic_object"
744599ca880aSopenharmony_ci	    func_append non_pic_objects " $non_pic_object"
744699ca880aSopenharmony_ci	  else
744799ca880aSopenharmony_ci	    func_fatal_error "'$arg' is not a valid libtool object"
744899ca880aSopenharmony_ci	  fi
744999ca880aSopenharmony_ci	fi
745099ca880aSopenharmony_ci	;;
745199ca880aSopenharmony_ci
745299ca880aSopenharmony_ci      *.$libext)
745399ca880aSopenharmony_ci	# An archive.
745499ca880aSopenharmony_ci	func_append deplibs " $arg"
745599ca880aSopenharmony_ci	func_append old_deplibs " $arg"
745699ca880aSopenharmony_ci	continue
745799ca880aSopenharmony_ci	;;
745899ca880aSopenharmony_ci
745999ca880aSopenharmony_ci      *.la)
746099ca880aSopenharmony_ci	# A libtool-controlled library.
746199ca880aSopenharmony_ci
746299ca880aSopenharmony_ci	func_resolve_sysroot "$arg"
746399ca880aSopenharmony_ci	if test dlfiles = "$prev"; then
746499ca880aSopenharmony_ci	  # This library was specified with -dlopen.
746599ca880aSopenharmony_ci	  func_append dlfiles " $func_resolve_sysroot_result"
746699ca880aSopenharmony_ci	  prev=
746799ca880aSopenharmony_ci	elif test dlprefiles = "$prev"; then
746899ca880aSopenharmony_ci	  # The library was specified with -dlpreopen.
746999ca880aSopenharmony_ci	  func_append dlprefiles " $func_resolve_sysroot_result"
747099ca880aSopenharmony_ci	  prev=
747199ca880aSopenharmony_ci	else
747299ca880aSopenharmony_ci	  func_append deplibs " $func_resolve_sysroot_result"
747399ca880aSopenharmony_ci	fi
747499ca880aSopenharmony_ci	continue
747599ca880aSopenharmony_ci	;;
747699ca880aSopenharmony_ci
747799ca880aSopenharmony_ci      # Some other compiler argument.
747899ca880aSopenharmony_ci      *)
747999ca880aSopenharmony_ci	# Unknown arguments in both finalize_command and compile_command need
748099ca880aSopenharmony_ci	# to be aesthetically quoted because they are evaled later.
748199ca880aSopenharmony_ci	func_quote_for_eval "$arg"
748299ca880aSopenharmony_ci	arg=$func_quote_for_eval_result
748399ca880aSopenharmony_ci	;;
748499ca880aSopenharmony_ci      esac # arg
748599ca880aSopenharmony_ci
748699ca880aSopenharmony_ci      # Now actually substitute the argument into the commands.
748799ca880aSopenharmony_ci      if test -n "$arg"; then
748899ca880aSopenharmony_ci	func_append compile_command " $arg"
748999ca880aSopenharmony_ci	func_append finalize_command " $arg"
749099ca880aSopenharmony_ci      fi
749199ca880aSopenharmony_ci    done # argument parsing loop
749299ca880aSopenharmony_ci
749399ca880aSopenharmony_ci    test -n "$prev" && \
749499ca880aSopenharmony_ci      func_fatal_help "the '$prevarg' option requires an argument"
749599ca880aSopenharmony_ci
749699ca880aSopenharmony_ci    if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then
749799ca880aSopenharmony_ci      eval arg=\"$export_dynamic_flag_spec\"
749899ca880aSopenharmony_ci      func_append compile_command " $arg"
749999ca880aSopenharmony_ci      func_append finalize_command " $arg"
750099ca880aSopenharmony_ci    fi
750199ca880aSopenharmony_ci
750299ca880aSopenharmony_ci    oldlibs=
750399ca880aSopenharmony_ci    # calculate the name of the file, without its directory
750499ca880aSopenharmony_ci    func_basename "$output"
750599ca880aSopenharmony_ci    outputname=$func_basename_result
750699ca880aSopenharmony_ci    libobjs_save=$libobjs
750799ca880aSopenharmony_ci
750899ca880aSopenharmony_ci    if test -n "$shlibpath_var"; then
750999ca880aSopenharmony_ci      # get the directories listed in $shlibpath_var
751099ca880aSopenharmony_ci      eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\`
751199ca880aSopenharmony_ci    else
751299ca880aSopenharmony_ci      shlib_search_path=
751399ca880aSopenharmony_ci    fi
751499ca880aSopenharmony_ci    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
751599ca880aSopenharmony_ci    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
751699ca880aSopenharmony_ci
751799ca880aSopenharmony_ci    # Definition is injected by LT_CONFIG during libtool generation.
751899ca880aSopenharmony_ci    func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH"
751999ca880aSopenharmony_ci
752099ca880aSopenharmony_ci    func_dirname "$output" "/" ""
752199ca880aSopenharmony_ci    output_objdir=$func_dirname_result$objdir
752299ca880aSopenharmony_ci    func_to_tool_file "$output_objdir/"
752399ca880aSopenharmony_ci    tool_output_objdir=$func_to_tool_file_result
752499ca880aSopenharmony_ci    # Create the object directory.
752599ca880aSopenharmony_ci    func_mkdir_p "$output_objdir"
752699ca880aSopenharmony_ci
752799ca880aSopenharmony_ci    # Determine the type of output
752899ca880aSopenharmony_ci    case $output in
752999ca880aSopenharmony_ci    "")
753099ca880aSopenharmony_ci      func_fatal_help "you must specify an output file"
753199ca880aSopenharmony_ci      ;;
753299ca880aSopenharmony_ci    *.$libext) linkmode=oldlib ;;
753399ca880aSopenharmony_ci    *.lo | *.$objext) linkmode=obj ;;
753499ca880aSopenharmony_ci    *.la) linkmode=lib ;;
753599ca880aSopenharmony_ci    *) linkmode=prog ;; # Anything else should be a program.
753699ca880aSopenharmony_ci    esac
753799ca880aSopenharmony_ci
753899ca880aSopenharmony_ci    specialdeplibs=
753999ca880aSopenharmony_ci
754099ca880aSopenharmony_ci    libs=
754199ca880aSopenharmony_ci    # Find all interdependent deplibs by searching for libraries
754299ca880aSopenharmony_ci    # that are linked more than once (e.g. -la -lb -la)
754399ca880aSopenharmony_ci    for deplib in $deplibs; do
754499ca880aSopenharmony_ci      if $opt_preserve_dup_deps; then
754599ca880aSopenharmony_ci	case "$libs " in
754699ca880aSopenharmony_ci	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
754799ca880aSopenharmony_ci	esac
754899ca880aSopenharmony_ci      fi
754999ca880aSopenharmony_ci      func_append libs " $deplib"
755099ca880aSopenharmony_ci    done
755199ca880aSopenharmony_ci
755299ca880aSopenharmony_ci    if test lib = "$linkmode"; then
755399ca880aSopenharmony_ci      libs="$predeps $libs $compiler_lib_search_path $postdeps"
755499ca880aSopenharmony_ci
755599ca880aSopenharmony_ci      # Compute libraries that are listed more than once in $predeps
755699ca880aSopenharmony_ci      # $postdeps and mark them as special (i.e., whose duplicates are
755799ca880aSopenharmony_ci      # not to be eliminated).
755899ca880aSopenharmony_ci      pre_post_deps=
755999ca880aSopenharmony_ci      if $opt_duplicate_compiler_generated_deps; then
756099ca880aSopenharmony_ci	for pre_post_dep in $predeps $postdeps; do
756199ca880aSopenharmony_ci	  case "$pre_post_deps " in
756299ca880aSopenharmony_ci	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
756399ca880aSopenharmony_ci	  esac
756499ca880aSopenharmony_ci	  func_append pre_post_deps " $pre_post_dep"
756599ca880aSopenharmony_ci	done
756699ca880aSopenharmony_ci      fi
756799ca880aSopenharmony_ci      pre_post_deps=
756899ca880aSopenharmony_ci    fi
756999ca880aSopenharmony_ci
757099ca880aSopenharmony_ci    deplibs=
757199ca880aSopenharmony_ci    newdependency_libs=
757299ca880aSopenharmony_ci    newlib_search_path=
757399ca880aSopenharmony_ci    need_relink=no # whether we're linking any uninstalled libtool libraries
757499ca880aSopenharmony_ci    notinst_deplibs= # not-installed libtool libraries
757599ca880aSopenharmony_ci    notinst_path= # paths that contain not-installed libtool libraries
757699ca880aSopenharmony_ci
757799ca880aSopenharmony_ci    case $linkmode in
757899ca880aSopenharmony_ci    lib)
757999ca880aSopenharmony_ci	passes="conv dlpreopen link"
758099ca880aSopenharmony_ci	for file in $dlfiles $dlprefiles; do
758199ca880aSopenharmony_ci	  case $file in
758299ca880aSopenharmony_ci	  *.la) ;;
758399ca880aSopenharmony_ci	  *)
758499ca880aSopenharmony_ci	    func_fatal_help "libraries can '-dlopen' only libtool libraries: $file"
758599ca880aSopenharmony_ci	    ;;
758699ca880aSopenharmony_ci	  esac
758799ca880aSopenharmony_ci	done
758899ca880aSopenharmony_ci	;;
758999ca880aSopenharmony_ci    prog)
759099ca880aSopenharmony_ci	compile_deplibs=
759199ca880aSopenharmony_ci	finalize_deplibs=
759299ca880aSopenharmony_ci	alldeplibs=false
759399ca880aSopenharmony_ci	newdlfiles=
759499ca880aSopenharmony_ci	newdlprefiles=
759599ca880aSopenharmony_ci	passes="conv scan dlopen dlpreopen link"
759699ca880aSopenharmony_ci	;;
759799ca880aSopenharmony_ci    *)  passes="conv"
759899ca880aSopenharmony_ci	;;
759999ca880aSopenharmony_ci    esac
760099ca880aSopenharmony_ci
760199ca880aSopenharmony_ci    for pass in $passes; do
760299ca880aSopenharmony_ci      # The preopen pass in lib mode reverses $deplibs; put it back here
760399ca880aSopenharmony_ci      # so that -L comes before libs that need it for instance...
760499ca880aSopenharmony_ci      if test lib,link = "$linkmode,$pass"; then
760599ca880aSopenharmony_ci	## FIXME: Find the place where the list is rebuilt in the wrong
760699ca880aSopenharmony_ci	##        order, and fix it there properly
760799ca880aSopenharmony_ci        tmp_deplibs=
760899ca880aSopenharmony_ci	for deplib in $deplibs; do
760999ca880aSopenharmony_ci	  tmp_deplibs="$deplib $tmp_deplibs"
761099ca880aSopenharmony_ci	done
761199ca880aSopenharmony_ci	deplibs=$tmp_deplibs
761299ca880aSopenharmony_ci      fi
761399ca880aSopenharmony_ci
761499ca880aSopenharmony_ci      if test lib,link = "$linkmode,$pass" ||
761599ca880aSopenharmony_ci	 test prog,scan = "$linkmode,$pass"; then
761699ca880aSopenharmony_ci	libs=$deplibs
761799ca880aSopenharmony_ci	deplibs=
761899ca880aSopenharmony_ci      fi
761999ca880aSopenharmony_ci      if test prog = "$linkmode"; then
762099ca880aSopenharmony_ci	case $pass in
762199ca880aSopenharmony_ci	dlopen) libs=$dlfiles ;;
762299ca880aSopenharmony_ci	dlpreopen) libs=$dlprefiles ;;
762399ca880aSopenharmony_ci	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
762499ca880aSopenharmony_ci	esac
762599ca880aSopenharmony_ci      fi
762699ca880aSopenharmony_ci      if test lib,dlpreopen = "$linkmode,$pass"; then
762799ca880aSopenharmony_ci	# Collect and forward deplibs of preopened libtool libs
762899ca880aSopenharmony_ci	for lib in $dlprefiles; do
762999ca880aSopenharmony_ci	  # Ignore non-libtool-libs
763099ca880aSopenharmony_ci	  dependency_libs=
763199ca880aSopenharmony_ci	  func_resolve_sysroot "$lib"
763299ca880aSopenharmony_ci	  case $lib in
763399ca880aSopenharmony_ci	  *.la)	func_source "$func_resolve_sysroot_result" ;;
763499ca880aSopenharmony_ci	  esac
763599ca880aSopenharmony_ci
763699ca880aSopenharmony_ci	  # Collect preopened libtool deplibs, except any this library
763799ca880aSopenharmony_ci	  # has declared as weak libs
763899ca880aSopenharmony_ci	  for deplib in $dependency_libs; do
763999ca880aSopenharmony_ci	    func_basename "$deplib"
764099ca880aSopenharmony_ci            deplib_base=$func_basename_result
764199ca880aSopenharmony_ci	    case " $weak_libs " in
764299ca880aSopenharmony_ci	    *" $deplib_base "*) ;;
764399ca880aSopenharmony_ci	    *) func_append deplibs " $deplib" ;;
764499ca880aSopenharmony_ci	    esac
764599ca880aSopenharmony_ci	  done
764699ca880aSopenharmony_ci	done
764799ca880aSopenharmony_ci	libs=$dlprefiles
764899ca880aSopenharmony_ci      fi
764999ca880aSopenharmony_ci      if test dlopen = "$pass"; then
765099ca880aSopenharmony_ci	# Collect dlpreopened libraries
765199ca880aSopenharmony_ci	save_deplibs=$deplibs
765299ca880aSopenharmony_ci	deplibs=
765399ca880aSopenharmony_ci      fi
765499ca880aSopenharmony_ci
765599ca880aSopenharmony_ci      for deplib in $libs; do
765699ca880aSopenharmony_ci	lib=
765799ca880aSopenharmony_ci	found=false
765899ca880aSopenharmony_ci	case $deplib in
765999ca880aSopenharmony_ci	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
766099ca880aSopenharmony_ci        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
766199ca880aSopenharmony_ci	  if test prog,link = "$linkmode,$pass"; then
766299ca880aSopenharmony_ci	    compile_deplibs="$deplib $compile_deplibs"
766399ca880aSopenharmony_ci	    finalize_deplibs="$deplib $finalize_deplibs"
766499ca880aSopenharmony_ci	  else
766599ca880aSopenharmony_ci	    func_append compiler_flags " $deplib"
766699ca880aSopenharmony_ci	    if test lib = "$linkmode"; then
766799ca880aSopenharmony_ci		case "$new_inherited_linker_flags " in
766899ca880aSopenharmony_ci		    *" $deplib "*) ;;
766999ca880aSopenharmony_ci		    * ) func_append new_inherited_linker_flags " $deplib" ;;
767099ca880aSopenharmony_ci		esac
767199ca880aSopenharmony_ci	    fi
767299ca880aSopenharmony_ci	  fi
767399ca880aSopenharmony_ci	  continue
767499ca880aSopenharmony_ci	  ;;
767599ca880aSopenharmony_ci	-l*)
767699ca880aSopenharmony_ci	  if test lib != "$linkmode" && test prog != "$linkmode"; then
767799ca880aSopenharmony_ci	    func_warning "'-l' is ignored for archives/objects"
767899ca880aSopenharmony_ci	    continue
767999ca880aSopenharmony_ci	  fi
768099ca880aSopenharmony_ci	  func_stripname '-l' '' "$deplib"
768199ca880aSopenharmony_ci	  name=$func_stripname_result
768299ca880aSopenharmony_ci	  if test lib = "$linkmode"; then
768399ca880aSopenharmony_ci	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
768499ca880aSopenharmony_ci	  else
768599ca880aSopenharmony_ci	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
768699ca880aSopenharmony_ci	  fi
768799ca880aSopenharmony_ci	  for searchdir in $searchdirs; do
768899ca880aSopenharmony_ci	    for search_ext in .la $std_shrext .so .a; do
768999ca880aSopenharmony_ci	      # Search the libtool library
769099ca880aSopenharmony_ci	      lib=$searchdir/lib$name$search_ext
769199ca880aSopenharmony_ci	      if test -f "$lib"; then
769299ca880aSopenharmony_ci		if test .la = "$search_ext"; then
769399ca880aSopenharmony_ci		  found=:
769499ca880aSopenharmony_ci		else
769599ca880aSopenharmony_ci		  found=false
769699ca880aSopenharmony_ci		fi
769799ca880aSopenharmony_ci		break 2
769899ca880aSopenharmony_ci	      fi
769999ca880aSopenharmony_ci	    done
770099ca880aSopenharmony_ci	  done
770199ca880aSopenharmony_ci	  if $found; then
770299ca880aSopenharmony_ci	    # deplib is a libtool library
770399ca880aSopenharmony_ci	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
770499ca880aSopenharmony_ci	    # We need to do some special things here, and not later.
770599ca880aSopenharmony_ci	    if test yes = "$allow_libtool_libs_with_static_runtimes"; then
770699ca880aSopenharmony_ci	      case " $predeps $postdeps " in
770799ca880aSopenharmony_ci	      *" $deplib "*)
770899ca880aSopenharmony_ci		if func_lalib_p "$lib"; then
770999ca880aSopenharmony_ci		  library_names=
771099ca880aSopenharmony_ci		  old_library=
771199ca880aSopenharmony_ci		  func_source "$lib"
771299ca880aSopenharmony_ci		  for l in $old_library $library_names; do
771399ca880aSopenharmony_ci		    ll=$l
771499ca880aSopenharmony_ci		  done
771599ca880aSopenharmony_ci		  if test "X$ll" = "X$old_library"; then # only static version available
771699ca880aSopenharmony_ci		    found=false
771799ca880aSopenharmony_ci		    func_dirname "$lib" "" "."
771899ca880aSopenharmony_ci		    ladir=$func_dirname_result
771999ca880aSopenharmony_ci		    lib=$ladir/$old_library
772099ca880aSopenharmony_ci		    if test prog,link = "$linkmode,$pass"; then
772199ca880aSopenharmony_ci		      compile_deplibs="$deplib $compile_deplibs"
772299ca880aSopenharmony_ci		      finalize_deplibs="$deplib $finalize_deplibs"
772399ca880aSopenharmony_ci		    else
772499ca880aSopenharmony_ci		      deplibs="$deplib $deplibs"
772599ca880aSopenharmony_ci		      test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
772699ca880aSopenharmony_ci		    fi
772799ca880aSopenharmony_ci		    continue
772899ca880aSopenharmony_ci		  fi
772999ca880aSopenharmony_ci		fi
773099ca880aSopenharmony_ci		;;
773199ca880aSopenharmony_ci	      *) ;;
773299ca880aSopenharmony_ci	      esac
773399ca880aSopenharmony_ci	    fi
773499ca880aSopenharmony_ci	  else
773599ca880aSopenharmony_ci	    # deplib doesn't seem to be a libtool library
773699ca880aSopenharmony_ci	    if test prog,link = "$linkmode,$pass"; then
773799ca880aSopenharmony_ci	      compile_deplibs="$deplib $compile_deplibs"
773899ca880aSopenharmony_ci	      finalize_deplibs="$deplib $finalize_deplibs"
773999ca880aSopenharmony_ci	    else
774099ca880aSopenharmony_ci	      deplibs="$deplib $deplibs"
774199ca880aSopenharmony_ci	      test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
774299ca880aSopenharmony_ci	    fi
774399ca880aSopenharmony_ci	    continue
774499ca880aSopenharmony_ci	  fi
774599ca880aSopenharmony_ci	  ;; # -l
774699ca880aSopenharmony_ci	*.ltframework)
774799ca880aSopenharmony_ci	  if test prog,link = "$linkmode,$pass"; then
774899ca880aSopenharmony_ci	    compile_deplibs="$deplib $compile_deplibs"
774999ca880aSopenharmony_ci	    finalize_deplibs="$deplib $finalize_deplibs"
775099ca880aSopenharmony_ci	  else
775199ca880aSopenharmony_ci	    deplibs="$deplib $deplibs"
775299ca880aSopenharmony_ci	    if test lib = "$linkmode"; then
775399ca880aSopenharmony_ci		case "$new_inherited_linker_flags " in
775499ca880aSopenharmony_ci		    *" $deplib "*) ;;
775599ca880aSopenharmony_ci		    * ) func_append new_inherited_linker_flags " $deplib" ;;
775699ca880aSopenharmony_ci		esac
775799ca880aSopenharmony_ci	    fi
775899ca880aSopenharmony_ci	  fi
775999ca880aSopenharmony_ci	  continue
776099ca880aSopenharmony_ci	  ;;
776199ca880aSopenharmony_ci	-L*)
776299ca880aSopenharmony_ci	  case $linkmode in
776399ca880aSopenharmony_ci	  lib)
776499ca880aSopenharmony_ci	    deplibs="$deplib $deplibs"
776599ca880aSopenharmony_ci	    test conv = "$pass" && continue
776699ca880aSopenharmony_ci	    newdependency_libs="$deplib $newdependency_libs"
776799ca880aSopenharmony_ci	    func_stripname '-L' '' "$deplib"
776899ca880aSopenharmony_ci	    func_resolve_sysroot "$func_stripname_result"
776999ca880aSopenharmony_ci	    func_append newlib_search_path " $func_resolve_sysroot_result"
777099ca880aSopenharmony_ci	    ;;
777199ca880aSopenharmony_ci	  prog)
777299ca880aSopenharmony_ci	    if test conv = "$pass"; then
777399ca880aSopenharmony_ci	      deplibs="$deplib $deplibs"
777499ca880aSopenharmony_ci	      continue
777599ca880aSopenharmony_ci	    fi
777699ca880aSopenharmony_ci	    if test scan = "$pass"; then
777799ca880aSopenharmony_ci	      deplibs="$deplib $deplibs"
777899ca880aSopenharmony_ci	    else
777999ca880aSopenharmony_ci	      compile_deplibs="$deplib $compile_deplibs"
778099ca880aSopenharmony_ci	      finalize_deplibs="$deplib $finalize_deplibs"
778199ca880aSopenharmony_ci	    fi
778299ca880aSopenharmony_ci	    func_stripname '-L' '' "$deplib"
778399ca880aSopenharmony_ci	    func_resolve_sysroot "$func_stripname_result"
778499ca880aSopenharmony_ci	    func_append newlib_search_path " $func_resolve_sysroot_result"
778599ca880aSopenharmony_ci	    ;;
778699ca880aSopenharmony_ci	  *)
778799ca880aSopenharmony_ci	    func_warning "'-L' is ignored for archives/objects"
778899ca880aSopenharmony_ci	    ;;
778999ca880aSopenharmony_ci	  esac # linkmode
779099ca880aSopenharmony_ci	  continue
779199ca880aSopenharmony_ci	  ;; # -L
779299ca880aSopenharmony_ci	-R*)
779399ca880aSopenharmony_ci	  if test link = "$pass"; then
779499ca880aSopenharmony_ci	    func_stripname '-R' '' "$deplib"
779599ca880aSopenharmony_ci	    func_resolve_sysroot "$func_stripname_result"
779699ca880aSopenharmony_ci	    dir=$func_resolve_sysroot_result
779799ca880aSopenharmony_ci	    # Make sure the xrpath contains only unique directories.
779899ca880aSopenharmony_ci	    case "$xrpath " in
779999ca880aSopenharmony_ci	    *" $dir "*) ;;
780099ca880aSopenharmony_ci	    *) func_append xrpath " $dir" ;;
780199ca880aSopenharmony_ci	    esac
780299ca880aSopenharmony_ci	  fi
780399ca880aSopenharmony_ci	  deplibs="$deplib $deplibs"
780499ca880aSopenharmony_ci	  continue
780599ca880aSopenharmony_ci	  ;;
780699ca880aSopenharmony_ci	*.la)
780799ca880aSopenharmony_ci	  func_resolve_sysroot "$deplib"
780899ca880aSopenharmony_ci	  lib=$func_resolve_sysroot_result
780999ca880aSopenharmony_ci	  ;;
781099ca880aSopenharmony_ci	*.$libext)
781199ca880aSopenharmony_ci	  if test conv = "$pass"; then
781299ca880aSopenharmony_ci	    deplibs="$deplib $deplibs"
781399ca880aSopenharmony_ci	    continue
781499ca880aSopenharmony_ci	  fi
781599ca880aSopenharmony_ci	  case $linkmode in
781699ca880aSopenharmony_ci	  lib)
781799ca880aSopenharmony_ci	    # Linking convenience modules into shared libraries is allowed,
781899ca880aSopenharmony_ci	    # but linking other static libraries is non-portable.
781999ca880aSopenharmony_ci	    case " $dlpreconveniencelibs " in
782099ca880aSopenharmony_ci	    *" $deplib "*) ;;
782199ca880aSopenharmony_ci	    *)
782299ca880aSopenharmony_ci	      valid_a_lib=false
782399ca880aSopenharmony_ci	      case $deplibs_check_method in
782499ca880aSopenharmony_ci		match_pattern*)
782599ca880aSopenharmony_ci		  set dummy $deplibs_check_method; shift
782699ca880aSopenharmony_ci		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
782799ca880aSopenharmony_ci		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
782899ca880aSopenharmony_ci		    | $EGREP "$match_pattern_regex" > /dev/null; then
782999ca880aSopenharmony_ci		    valid_a_lib=:
783099ca880aSopenharmony_ci		  fi
783199ca880aSopenharmony_ci		;;
783299ca880aSopenharmony_ci		pass_all)
783399ca880aSopenharmony_ci		  valid_a_lib=:
783499ca880aSopenharmony_ci		;;
783599ca880aSopenharmony_ci	      esac
783699ca880aSopenharmony_ci	      if $valid_a_lib; then
783799ca880aSopenharmony_ci		echo
783899ca880aSopenharmony_ci		$ECHO "*** Warning: Linking the shared library $output against the"
783999ca880aSopenharmony_ci		$ECHO "*** static library $deplib is not portable!"
784099ca880aSopenharmony_ci		deplibs="$deplib $deplibs"
784199ca880aSopenharmony_ci	      else
784299ca880aSopenharmony_ci		echo
784399ca880aSopenharmony_ci		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
784499ca880aSopenharmony_ci		echo "*** I have the capability to make that library automatically link in when"
784599ca880aSopenharmony_ci		echo "*** you link to this library.  But I can only do this if you have a"
784699ca880aSopenharmony_ci		echo "*** shared version of the library, which you do not appear to have"
784799ca880aSopenharmony_ci		echo "*** because the file extensions .$libext of this argument makes me believe"
784899ca880aSopenharmony_ci		echo "*** that it is just a static archive that I should not use here."
784999ca880aSopenharmony_ci	      fi
785099ca880aSopenharmony_ci	      ;;
785199ca880aSopenharmony_ci	    esac
785299ca880aSopenharmony_ci	    continue
785399ca880aSopenharmony_ci	    ;;
785499ca880aSopenharmony_ci	  prog)
785599ca880aSopenharmony_ci	    if test link != "$pass"; then
785699ca880aSopenharmony_ci	      deplibs="$deplib $deplibs"
785799ca880aSopenharmony_ci	    else
785899ca880aSopenharmony_ci	      compile_deplibs="$deplib $compile_deplibs"
785999ca880aSopenharmony_ci	      finalize_deplibs="$deplib $finalize_deplibs"
786099ca880aSopenharmony_ci	    fi
786199ca880aSopenharmony_ci	    continue
786299ca880aSopenharmony_ci	    ;;
786399ca880aSopenharmony_ci	  esac # linkmode
786499ca880aSopenharmony_ci	  ;; # *.$libext
786599ca880aSopenharmony_ci	*.lo | *.$objext)
786699ca880aSopenharmony_ci	  if test conv = "$pass"; then
786799ca880aSopenharmony_ci	    deplibs="$deplib $deplibs"
786899ca880aSopenharmony_ci	  elif test prog = "$linkmode"; then
786999ca880aSopenharmony_ci	    if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then
787099ca880aSopenharmony_ci	      # If there is no dlopen support or we're linking statically,
787199ca880aSopenharmony_ci	      # we need to preload.
787299ca880aSopenharmony_ci	      func_append newdlprefiles " $deplib"
787399ca880aSopenharmony_ci	      compile_deplibs="$deplib $compile_deplibs"
787499ca880aSopenharmony_ci	      finalize_deplibs="$deplib $finalize_deplibs"
787599ca880aSopenharmony_ci	    else
787699ca880aSopenharmony_ci	      func_append newdlfiles " $deplib"
787799ca880aSopenharmony_ci	    fi
787899ca880aSopenharmony_ci	  fi
787999ca880aSopenharmony_ci	  continue
788099ca880aSopenharmony_ci	  ;;
788199ca880aSopenharmony_ci	%DEPLIBS%)
788299ca880aSopenharmony_ci	  alldeplibs=:
788399ca880aSopenharmony_ci	  continue
788499ca880aSopenharmony_ci	  ;;
788599ca880aSopenharmony_ci	esac # case $deplib
788699ca880aSopenharmony_ci
788799ca880aSopenharmony_ci	$found || test -f "$lib" \
788899ca880aSopenharmony_ci	  || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'"
788999ca880aSopenharmony_ci
789099ca880aSopenharmony_ci	# Check to see that this really is a libtool archive.
789199ca880aSopenharmony_ci	func_lalib_unsafe_p "$lib" \
789299ca880aSopenharmony_ci	  || func_fatal_error "'$lib' is not a valid libtool archive"
789399ca880aSopenharmony_ci
789499ca880aSopenharmony_ci	func_dirname "$lib" "" "."
789599ca880aSopenharmony_ci	ladir=$func_dirname_result
789699ca880aSopenharmony_ci
789799ca880aSopenharmony_ci	dlname=
789899ca880aSopenharmony_ci	dlopen=
789999ca880aSopenharmony_ci	dlpreopen=
790099ca880aSopenharmony_ci	libdir=
790199ca880aSopenharmony_ci	library_names=
790299ca880aSopenharmony_ci	old_library=
790399ca880aSopenharmony_ci	inherited_linker_flags=
790499ca880aSopenharmony_ci	# If the library was installed with an old release of libtool,
790599ca880aSopenharmony_ci	# it will not redefine variables installed, or shouldnotlink
790699ca880aSopenharmony_ci	installed=yes
790799ca880aSopenharmony_ci	shouldnotlink=no
790899ca880aSopenharmony_ci	avoidtemprpath=
790999ca880aSopenharmony_ci
791099ca880aSopenharmony_ci
791199ca880aSopenharmony_ci	# Read the .la file
791299ca880aSopenharmony_ci	func_source "$lib"
791399ca880aSopenharmony_ci
791499ca880aSopenharmony_ci	# Convert "-framework foo" to "foo.ltframework"
791599ca880aSopenharmony_ci	if test -n "$inherited_linker_flags"; then
791699ca880aSopenharmony_ci	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
791799ca880aSopenharmony_ci	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
791899ca880aSopenharmony_ci	    case " $new_inherited_linker_flags " in
791999ca880aSopenharmony_ci	      *" $tmp_inherited_linker_flag "*) ;;
792099ca880aSopenharmony_ci	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
792199ca880aSopenharmony_ci	    esac
792299ca880aSopenharmony_ci	  done
792399ca880aSopenharmony_ci	fi
792499ca880aSopenharmony_ci	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
792599ca880aSopenharmony_ci	if test lib,link = "$linkmode,$pass" ||
792699ca880aSopenharmony_ci	   test prog,scan = "$linkmode,$pass" ||
792799ca880aSopenharmony_ci	   { test prog != "$linkmode" && test lib != "$linkmode"; }; then
792899ca880aSopenharmony_ci	  test -n "$dlopen" && func_append dlfiles " $dlopen"
792999ca880aSopenharmony_ci	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
793099ca880aSopenharmony_ci	fi
793199ca880aSopenharmony_ci
793299ca880aSopenharmony_ci	if test conv = "$pass"; then
793399ca880aSopenharmony_ci	  # Only check for convenience libraries
793499ca880aSopenharmony_ci	  deplibs="$lib $deplibs"
793599ca880aSopenharmony_ci	  if test -z "$libdir"; then
793699ca880aSopenharmony_ci	    if test -z "$old_library"; then
793799ca880aSopenharmony_ci	      func_fatal_error "cannot find name of link library for '$lib'"
793899ca880aSopenharmony_ci	    fi
793999ca880aSopenharmony_ci	    # It is a libtool convenience library, so add in its objects.
794099ca880aSopenharmony_ci	    func_append convenience " $ladir/$objdir/$old_library"
794199ca880aSopenharmony_ci	    func_append old_convenience " $ladir/$objdir/$old_library"
794299ca880aSopenharmony_ci	  elif test prog != "$linkmode" && test lib != "$linkmode"; then
794399ca880aSopenharmony_ci	    func_fatal_error "'$lib' is not a convenience library"
794499ca880aSopenharmony_ci	  fi
794599ca880aSopenharmony_ci	  tmp_libs=
794699ca880aSopenharmony_ci	  for deplib in $dependency_libs; do
794799ca880aSopenharmony_ci	    deplibs="$deplib $deplibs"
794899ca880aSopenharmony_ci	    if $opt_preserve_dup_deps; then
794999ca880aSopenharmony_ci	      case "$tmp_libs " in
795099ca880aSopenharmony_ci	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
795199ca880aSopenharmony_ci	      esac
795299ca880aSopenharmony_ci	    fi
795399ca880aSopenharmony_ci	    func_append tmp_libs " $deplib"
795499ca880aSopenharmony_ci	  done
795599ca880aSopenharmony_ci	  continue
795699ca880aSopenharmony_ci	fi # $pass = conv
795799ca880aSopenharmony_ci
795899ca880aSopenharmony_ci
795999ca880aSopenharmony_ci	# Get the name of the library we link against.
796099ca880aSopenharmony_ci	linklib=
796199ca880aSopenharmony_ci	if test -n "$old_library" &&
796299ca880aSopenharmony_ci	   { test yes = "$prefer_static_libs" ||
796399ca880aSopenharmony_ci	     test built,no = "$prefer_static_libs,$installed"; }; then
796499ca880aSopenharmony_ci	  linklib=$old_library
796599ca880aSopenharmony_ci	else
796699ca880aSopenharmony_ci	  for l in $old_library $library_names; do
796799ca880aSopenharmony_ci	    linklib=$l
796899ca880aSopenharmony_ci	  done
796999ca880aSopenharmony_ci	fi
797099ca880aSopenharmony_ci	if test -z "$linklib"; then
797199ca880aSopenharmony_ci	  func_fatal_error "cannot find name of link library for '$lib'"
797299ca880aSopenharmony_ci	fi
797399ca880aSopenharmony_ci
797499ca880aSopenharmony_ci	# This library was specified with -dlopen.
797599ca880aSopenharmony_ci	if test dlopen = "$pass"; then
797699ca880aSopenharmony_ci	  test -z "$libdir" \
797799ca880aSopenharmony_ci	    && func_fatal_error "cannot -dlopen a convenience library: '$lib'"
797899ca880aSopenharmony_ci	  if test -z "$dlname" ||
797999ca880aSopenharmony_ci	     test yes != "$dlopen_support" ||
798099ca880aSopenharmony_ci	     test no = "$build_libtool_libs"
798199ca880aSopenharmony_ci	  then
798299ca880aSopenharmony_ci	    # If there is no dlname, no dlopen support or we're linking
798399ca880aSopenharmony_ci	    # statically, we need to preload.  We also need to preload any
798499ca880aSopenharmony_ci	    # dependent libraries so libltdl's deplib preloader doesn't
798599ca880aSopenharmony_ci	    # bomb out in the load deplibs phase.
798699ca880aSopenharmony_ci	    func_append dlprefiles " $lib $dependency_libs"
798799ca880aSopenharmony_ci	  else
798899ca880aSopenharmony_ci	    func_append newdlfiles " $lib"
798999ca880aSopenharmony_ci	  fi
799099ca880aSopenharmony_ci	  continue
799199ca880aSopenharmony_ci	fi # $pass = dlopen
799299ca880aSopenharmony_ci
799399ca880aSopenharmony_ci	# We need an absolute path.
799499ca880aSopenharmony_ci	case $ladir in
799599ca880aSopenharmony_ci	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;;
799699ca880aSopenharmony_ci	*)
799799ca880aSopenharmony_ci	  abs_ladir=`cd "$ladir" && pwd`
799899ca880aSopenharmony_ci	  if test -z "$abs_ladir"; then
799999ca880aSopenharmony_ci	    func_warning "cannot determine absolute directory name of '$ladir'"
800099ca880aSopenharmony_ci	    func_warning "passing it literally to the linker, although it might fail"
800199ca880aSopenharmony_ci	    abs_ladir=$ladir
800299ca880aSopenharmony_ci	  fi
800399ca880aSopenharmony_ci	  ;;
800499ca880aSopenharmony_ci	esac
800599ca880aSopenharmony_ci	func_basename "$lib"
800699ca880aSopenharmony_ci	laname=$func_basename_result
800799ca880aSopenharmony_ci
800899ca880aSopenharmony_ci	# Find the relevant object directory and library name.
800999ca880aSopenharmony_ci	if test yes = "$installed"; then
801099ca880aSopenharmony_ci	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
801199ca880aSopenharmony_ci	    func_warning "library '$lib' was moved."
801299ca880aSopenharmony_ci	    dir=$ladir
801399ca880aSopenharmony_ci	    absdir=$abs_ladir
801499ca880aSopenharmony_ci	    libdir=$abs_ladir
801599ca880aSopenharmony_ci	  else
801699ca880aSopenharmony_ci	    dir=$lt_sysroot$libdir
801799ca880aSopenharmony_ci	    absdir=$lt_sysroot$libdir
801899ca880aSopenharmony_ci	  fi
801999ca880aSopenharmony_ci	  test yes = "$hardcode_automatic" && avoidtemprpath=yes
802099ca880aSopenharmony_ci	else
802199ca880aSopenharmony_ci	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
802299ca880aSopenharmony_ci	    dir=$ladir
802399ca880aSopenharmony_ci	    absdir=$abs_ladir
802499ca880aSopenharmony_ci	    # Remove this search path later
802599ca880aSopenharmony_ci	    func_append notinst_path " $abs_ladir"
802699ca880aSopenharmony_ci	  else
802799ca880aSopenharmony_ci	    dir=$ladir/$objdir
802899ca880aSopenharmony_ci	    absdir=$abs_ladir/$objdir
802999ca880aSopenharmony_ci	    # Remove this search path later
803099ca880aSopenharmony_ci	    func_append notinst_path " $abs_ladir"
803199ca880aSopenharmony_ci	  fi
803299ca880aSopenharmony_ci	fi # $installed = yes
803399ca880aSopenharmony_ci	func_stripname 'lib' '.la' "$laname"
803499ca880aSopenharmony_ci	name=$func_stripname_result
803599ca880aSopenharmony_ci
803699ca880aSopenharmony_ci	# This library was specified with -dlpreopen.
803799ca880aSopenharmony_ci	if test dlpreopen = "$pass"; then
803899ca880aSopenharmony_ci	  if test -z "$libdir" && test prog = "$linkmode"; then
803999ca880aSopenharmony_ci	    func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'"
804099ca880aSopenharmony_ci	  fi
804199ca880aSopenharmony_ci	  case $host in
804299ca880aSopenharmony_ci	    # special handling for platforms with PE-DLLs.
804399ca880aSopenharmony_ci	    *cygwin* | *mingw* | *cegcc* )
804499ca880aSopenharmony_ci	      # Linker will automatically link against shared library if both
804599ca880aSopenharmony_ci	      # static and shared are present.  Therefore, ensure we extract
804699ca880aSopenharmony_ci	      # symbols from the import library if a shared library is present
804799ca880aSopenharmony_ci	      # (otherwise, the dlopen module name will be incorrect).  We do
804899ca880aSopenharmony_ci	      # this by putting the import library name into $newdlprefiles.
804999ca880aSopenharmony_ci	      # We recover the dlopen module name by 'saving' the la file
805099ca880aSopenharmony_ci	      # name in a special purpose variable, and (later) extracting the
805199ca880aSopenharmony_ci	      # dlname from the la file.
805299ca880aSopenharmony_ci	      if test -n "$dlname"; then
805399ca880aSopenharmony_ci	        func_tr_sh "$dir/$linklib"
805499ca880aSopenharmony_ci	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
805599ca880aSopenharmony_ci	        func_append newdlprefiles " $dir/$linklib"
805699ca880aSopenharmony_ci	      else
805799ca880aSopenharmony_ci	        func_append newdlprefiles " $dir/$old_library"
805899ca880aSopenharmony_ci	        # Keep a list of preopened convenience libraries to check
805999ca880aSopenharmony_ci	        # that they are being used correctly in the link pass.
806099ca880aSopenharmony_ci	        test -z "$libdir" && \
806199ca880aSopenharmony_ci	          func_append dlpreconveniencelibs " $dir/$old_library"
806299ca880aSopenharmony_ci	      fi
806399ca880aSopenharmony_ci	    ;;
806499ca880aSopenharmony_ci	    * )
806599ca880aSopenharmony_ci	      # Prefer using a static library (so that no silly _DYNAMIC symbols
806699ca880aSopenharmony_ci	      # are required to link).
806799ca880aSopenharmony_ci	      if test -n "$old_library"; then
806899ca880aSopenharmony_ci	        func_append newdlprefiles " $dir/$old_library"
806999ca880aSopenharmony_ci	        # Keep a list of preopened convenience libraries to check
807099ca880aSopenharmony_ci	        # that they are being used correctly in the link pass.
807199ca880aSopenharmony_ci	        test -z "$libdir" && \
807299ca880aSopenharmony_ci	          func_append dlpreconveniencelibs " $dir/$old_library"
807399ca880aSopenharmony_ci	      # Otherwise, use the dlname, so that lt_dlopen finds it.
807499ca880aSopenharmony_ci	      elif test -n "$dlname"; then
807599ca880aSopenharmony_ci	        func_append newdlprefiles " $dir/$dlname"
807699ca880aSopenharmony_ci	      else
807799ca880aSopenharmony_ci	        func_append newdlprefiles " $dir/$linklib"
807899ca880aSopenharmony_ci	      fi
807999ca880aSopenharmony_ci	    ;;
808099ca880aSopenharmony_ci	  esac
808199ca880aSopenharmony_ci	fi # $pass = dlpreopen
808299ca880aSopenharmony_ci
808399ca880aSopenharmony_ci	if test -z "$libdir"; then
808499ca880aSopenharmony_ci	  # Link the convenience library
808599ca880aSopenharmony_ci	  if test lib = "$linkmode"; then
808699ca880aSopenharmony_ci	    deplibs="$dir/$old_library $deplibs"
808799ca880aSopenharmony_ci	  elif test prog,link = "$linkmode,$pass"; then
808899ca880aSopenharmony_ci	    compile_deplibs="$dir/$old_library $compile_deplibs"
808999ca880aSopenharmony_ci	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
809099ca880aSopenharmony_ci	  else
809199ca880aSopenharmony_ci	    deplibs="$lib $deplibs" # used for prog,scan pass
809299ca880aSopenharmony_ci	  fi
809399ca880aSopenharmony_ci	  continue
809499ca880aSopenharmony_ci	fi
809599ca880aSopenharmony_ci
809699ca880aSopenharmony_ci
809799ca880aSopenharmony_ci	if test prog = "$linkmode" && test link != "$pass"; then
809899ca880aSopenharmony_ci	  func_append newlib_search_path " $ladir"
809999ca880aSopenharmony_ci	  deplibs="$lib $deplibs"
810099ca880aSopenharmony_ci
810199ca880aSopenharmony_ci	  linkalldeplibs=false
810299ca880aSopenharmony_ci	  if test no != "$link_all_deplibs" || test -z "$library_names" ||
810399ca880aSopenharmony_ci	     test no = "$build_libtool_libs"; then
810499ca880aSopenharmony_ci	    linkalldeplibs=:
810599ca880aSopenharmony_ci	  fi
810699ca880aSopenharmony_ci
810799ca880aSopenharmony_ci	  tmp_libs=
810899ca880aSopenharmony_ci	  for deplib in $dependency_libs; do
810999ca880aSopenharmony_ci	    case $deplib in
811099ca880aSopenharmony_ci	    -L*) func_stripname '-L' '' "$deplib"
811199ca880aSopenharmony_ci	         func_resolve_sysroot "$func_stripname_result"
811299ca880aSopenharmony_ci	         func_append newlib_search_path " $func_resolve_sysroot_result"
811399ca880aSopenharmony_ci		 ;;
811499ca880aSopenharmony_ci	    esac
811599ca880aSopenharmony_ci	    # Need to link against all dependency_libs?
811699ca880aSopenharmony_ci	    if $linkalldeplibs; then
811799ca880aSopenharmony_ci	      deplibs="$deplib $deplibs"
811899ca880aSopenharmony_ci	    else
811999ca880aSopenharmony_ci	      # Need to hardcode shared library paths
812099ca880aSopenharmony_ci	      # or/and link against static libraries
812199ca880aSopenharmony_ci	      newdependency_libs="$deplib $newdependency_libs"
812299ca880aSopenharmony_ci	    fi
812399ca880aSopenharmony_ci	    if $opt_preserve_dup_deps; then
812499ca880aSopenharmony_ci	      case "$tmp_libs " in
812599ca880aSopenharmony_ci	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
812699ca880aSopenharmony_ci	      esac
812799ca880aSopenharmony_ci	    fi
812899ca880aSopenharmony_ci	    func_append tmp_libs " $deplib"
812999ca880aSopenharmony_ci	  done # for deplib
813099ca880aSopenharmony_ci	  continue
813199ca880aSopenharmony_ci	fi # $linkmode = prog...
813299ca880aSopenharmony_ci
813399ca880aSopenharmony_ci	if test prog,link = "$linkmode,$pass"; then
813499ca880aSopenharmony_ci	  if test -n "$library_names" &&
813599ca880aSopenharmony_ci	     { { test no = "$prefer_static_libs" ||
813699ca880aSopenharmony_ci	         test built,yes = "$prefer_static_libs,$installed"; } ||
813799ca880aSopenharmony_ci	       test -z "$old_library"; }; then
813899ca880aSopenharmony_ci	    # We need to hardcode the library path
813999ca880aSopenharmony_ci	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then
814099ca880aSopenharmony_ci	      # Make sure the rpath contains only unique directories.
814199ca880aSopenharmony_ci	      case $temp_rpath: in
814299ca880aSopenharmony_ci	      *"$absdir:"*) ;;
814399ca880aSopenharmony_ci	      *) func_append temp_rpath "$absdir:" ;;
814499ca880aSopenharmony_ci	      esac
814599ca880aSopenharmony_ci	    fi
814699ca880aSopenharmony_ci
814799ca880aSopenharmony_ci	    # Hardcode the library path.
814899ca880aSopenharmony_ci	    # Skip directories that are in the system default run-time
814999ca880aSopenharmony_ci	    # search path.
815099ca880aSopenharmony_ci	    case " $sys_lib_dlsearch_path " in
815199ca880aSopenharmony_ci	    *" $absdir "*) ;;
815299ca880aSopenharmony_ci	    *)
815399ca880aSopenharmony_ci	      case "$compile_rpath " in
815499ca880aSopenharmony_ci	      *" $absdir "*) ;;
815599ca880aSopenharmony_ci	      *) func_append compile_rpath " $absdir" ;;
815699ca880aSopenharmony_ci	      esac
815799ca880aSopenharmony_ci	      ;;
815899ca880aSopenharmony_ci	    esac
815999ca880aSopenharmony_ci	    case " $sys_lib_dlsearch_path " in
816099ca880aSopenharmony_ci	    *" $libdir "*) ;;
816199ca880aSopenharmony_ci	    *)
816299ca880aSopenharmony_ci	      case "$finalize_rpath " in
816399ca880aSopenharmony_ci	      *" $libdir "*) ;;
816499ca880aSopenharmony_ci	      *) func_append finalize_rpath " $libdir" ;;
816599ca880aSopenharmony_ci	      esac
816699ca880aSopenharmony_ci	      ;;
816799ca880aSopenharmony_ci	    esac
816899ca880aSopenharmony_ci	  fi # $linkmode,$pass = prog,link...
816999ca880aSopenharmony_ci
817099ca880aSopenharmony_ci	  if $alldeplibs &&
817199ca880aSopenharmony_ci	     { test pass_all = "$deplibs_check_method" ||
817299ca880aSopenharmony_ci	       { test yes = "$build_libtool_libs" &&
817399ca880aSopenharmony_ci		 test -n "$library_names"; }; }; then
817499ca880aSopenharmony_ci	    # We only need to search for static libraries
817599ca880aSopenharmony_ci	    continue
817699ca880aSopenharmony_ci	  fi
817799ca880aSopenharmony_ci	fi
817899ca880aSopenharmony_ci
817999ca880aSopenharmony_ci	link_static=no # Whether the deplib will be linked statically
818099ca880aSopenharmony_ci	use_static_libs=$prefer_static_libs
818199ca880aSopenharmony_ci	if test built = "$use_static_libs" && test yes = "$installed"; then
818299ca880aSopenharmony_ci	  use_static_libs=no
818399ca880aSopenharmony_ci	fi
818499ca880aSopenharmony_ci	if test -n "$library_names" &&
818599ca880aSopenharmony_ci	   { test no = "$use_static_libs" || test -z "$old_library"; }; then
818699ca880aSopenharmony_ci	  case $host in
818799ca880aSopenharmony_ci	  *cygwin* | *mingw* | *cegcc* | *os2*)
818899ca880aSopenharmony_ci	      # No point in relinking DLLs because paths are not encoded
818999ca880aSopenharmony_ci	      func_append notinst_deplibs " $lib"
819099ca880aSopenharmony_ci	      need_relink=no
819199ca880aSopenharmony_ci	    ;;
819299ca880aSopenharmony_ci	  *)
819399ca880aSopenharmony_ci	    if test no = "$installed"; then
819499ca880aSopenharmony_ci	      func_append notinst_deplibs " $lib"
819599ca880aSopenharmony_ci	      need_relink=yes
819699ca880aSopenharmony_ci	    fi
819799ca880aSopenharmony_ci	    ;;
819899ca880aSopenharmony_ci	  esac
819999ca880aSopenharmony_ci	  # This is a shared library
820099ca880aSopenharmony_ci
820199ca880aSopenharmony_ci	  # Warn about portability, can't link against -module's on some
820299ca880aSopenharmony_ci	  # systems (darwin).  Don't bleat about dlopened modules though!
820399ca880aSopenharmony_ci	  dlopenmodule=
820499ca880aSopenharmony_ci	  for dlpremoduletest in $dlprefiles; do
820599ca880aSopenharmony_ci	    if test "X$dlpremoduletest" = "X$lib"; then
820699ca880aSopenharmony_ci	      dlopenmodule=$dlpremoduletest
820799ca880aSopenharmony_ci	      break
820899ca880aSopenharmony_ci	    fi
820999ca880aSopenharmony_ci	  done
821099ca880aSopenharmony_ci	  if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then
821199ca880aSopenharmony_ci	    echo
821299ca880aSopenharmony_ci	    if test prog = "$linkmode"; then
821399ca880aSopenharmony_ci	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
821499ca880aSopenharmony_ci	    else
821599ca880aSopenharmony_ci	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
821699ca880aSopenharmony_ci	    fi
821799ca880aSopenharmony_ci	    $ECHO "*** $linklib is not portable!"
821899ca880aSopenharmony_ci	  fi
821999ca880aSopenharmony_ci	  if test lib = "$linkmode" &&
822099ca880aSopenharmony_ci	     test yes = "$hardcode_into_libs"; then
822199ca880aSopenharmony_ci	    # Hardcode the library path.
822299ca880aSopenharmony_ci	    # Skip directories that are in the system default run-time
822399ca880aSopenharmony_ci	    # search path.
822499ca880aSopenharmony_ci	    case " $sys_lib_dlsearch_path " in
822599ca880aSopenharmony_ci	    *" $absdir "*) ;;
822699ca880aSopenharmony_ci	    *)
822799ca880aSopenharmony_ci	      case "$compile_rpath " in
822899ca880aSopenharmony_ci	      *" $absdir "*) ;;
822999ca880aSopenharmony_ci	      *) func_append compile_rpath " $absdir" ;;
823099ca880aSopenharmony_ci	      esac
823199ca880aSopenharmony_ci	      ;;
823299ca880aSopenharmony_ci	    esac
823399ca880aSopenharmony_ci	    case " $sys_lib_dlsearch_path " in
823499ca880aSopenharmony_ci	    *" $libdir "*) ;;
823599ca880aSopenharmony_ci	    *)
823699ca880aSopenharmony_ci	      case "$finalize_rpath " in
823799ca880aSopenharmony_ci	      *" $libdir "*) ;;
823899ca880aSopenharmony_ci	      *) func_append finalize_rpath " $libdir" ;;
823999ca880aSopenharmony_ci	      esac
824099ca880aSopenharmony_ci	      ;;
824199ca880aSopenharmony_ci	    esac
824299ca880aSopenharmony_ci	  fi
824399ca880aSopenharmony_ci
824499ca880aSopenharmony_ci	  if test -n "$old_archive_from_expsyms_cmds"; then
824599ca880aSopenharmony_ci	    # figure out the soname
824699ca880aSopenharmony_ci	    set dummy $library_names
824799ca880aSopenharmony_ci	    shift
824899ca880aSopenharmony_ci	    realname=$1
824999ca880aSopenharmony_ci	    shift
825099ca880aSopenharmony_ci	    libname=`eval "\\$ECHO \"$libname_spec\""`
825199ca880aSopenharmony_ci	    # use dlname if we got it. it's perfectly good, no?
825299ca880aSopenharmony_ci	    if test -n "$dlname"; then
825399ca880aSopenharmony_ci	      soname=$dlname
825499ca880aSopenharmony_ci	    elif test -n "$soname_spec"; then
825599ca880aSopenharmony_ci	      # bleh windows
825699ca880aSopenharmony_ci	      case $host in
825799ca880aSopenharmony_ci	      *cygwin* | mingw* | *cegcc* | *os2*)
825899ca880aSopenharmony_ci	        func_arith $current - $age
825999ca880aSopenharmony_ci		major=$func_arith_result
826099ca880aSopenharmony_ci		versuffix=-$major
826199ca880aSopenharmony_ci		;;
826299ca880aSopenharmony_ci	      esac
826399ca880aSopenharmony_ci	      eval soname=\"$soname_spec\"
826499ca880aSopenharmony_ci	    else
826599ca880aSopenharmony_ci	      soname=$realname
826699ca880aSopenharmony_ci	    fi
826799ca880aSopenharmony_ci
826899ca880aSopenharmony_ci	    # Make a new name for the extract_expsyms_cmds to use
826999ca880aSopenharmony_ci	    soroot=$soname
827099ca880aSopenharmony_ci	    func_basename "$soroot"
827199ca880aSopenharmony_ci	    soname=$func_basename_result
827299ca880aSopenharmony_ci	    func_stripname 'lib' '.dll' "$soname"
827399ca880aSopenharmony_ci	    newlib=libimp-$func_stripname_result.a
827499ca880aSopenharmony_ci
827599ca880aSopenharmony_ci	    # If the library has no export list, then create one now
827699ca880aSopenharmony_ci	    if test -f "$output_objdir/$soname-def"; then :
827799ca880aSopenharmony_ci	    else
827899ca880aSopenharmony_ci	      func_verbose "extracting exported symbol list from '$soname'"
827999ca880aSopenharmony_ci	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
828099ca880aSopenharmony_ci	    fi
828199ca880aSopenharmony_ci
828299ca880aSopenharmony_ci	    # Create $newlib
828399ca880aSopenharmony_ci	    if test -f "$output_objdir/$newlib"; then :; else
828499ca880aSopenharmony_ci	      func_verbose "generating import library for '$soname'"
828599ca880aSopenharmony_ci	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
828699ca880aSopenharmony_ci	    fi
828799ca880aSopenharmony_ci	    # make sure the library variables are pointing to the new library
828899ca880aSopenharmony_ci	    dir=$output_objdir
828999ca880aSopenharmony_ci	    linklib=$newlib
829099ca880aSopenharmony_ci	  fi # test -n "$old_archive_from_expsyms_cmds"
829199ca880aSopenharmony_ci
829299ca880aSopenharmony_ci	  if test prog = "$linkmode" || test relink != "$opt_mode"; then
829399ca880aSopenharmony_ci	    add_shlibpath=
829499ca880aSopenharmony_ci	    add_dir=
829599ca880aSopenharmony_ci	    add=
829699ca880aSopenharmony_ci	    lib_linked=yes
829799ca880aSopenharmony_ci	    case $hardcode_action in
829899ca880aSopenharmony_ci	    immediate | unsupported)
829999ca880aSopenharmony_ci	      if test no = "$hardcode_direct"; then
830099ca880aSopenharmony_ci		add=$dir/$linklib
830199ca880aSopenharmony_ci		case $host in
830299ca880aSopenharmony_ci		  *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;;
830399ca880aSopenharmony_ci		  *-*-sysv4*uw2*) add_dir=-L$dir ;;
830499ca880aSopenharmony_ci		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
830599ca880aSopenharmony_ci		    *-*-unixware7*) add_dir=-L$dir ;;
830699ca880aSopenharmony_ci		  *-*-darwin* )
830799ca880aSopenharmony_ci		    # if the lib is a (non-dlopened) module then we cannot
830899ca880aSopenharmony_ci		    # link against it, someone is ignoring the earlier warnings
830999ca880aSopenharmony_ci		    if /usr/bin/file -L $add 2> /dev/null |
831099ca880aSopenharmony_ci			 $GREP ": [^:]* bundle" >/dev/null; then
831199ca880aSopenharmony_ci		      if test "X$dlopenmodule" != "X$lib"; then
831299ca880aSopenharmony_ci			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
831399ca880aSopenharmony_ci			if test -z "$old_library"; then
831499ca880aSopenharmony_ci			  echo
831599ca880aSopenharmony_ci			  echo "*** And there doesn't seem to be a static archive available"
831699ca880aSopenharmony_ci			  echo "*** The link will probably fail, sorry"
831799ca880aSopenharmony_ci			else
831899ca880aSopenharmony_ci			  add=$dir/$old_library
831999ca880aSopenharmony_ci			fi
832099ca880aSopenharmony_ci		      elif test -n "$old_library"; then
832199ca880aSopenharmony_ci			add=$dir/$old_library
832299ca880aSopenharmony_ci		      fi
832399ca880aSopenharmony_ci		    fi
832499ca880aSopenharmony_ci		esac
832599ca880aSopenharmony_ci	      elif test no = "$hardcode_minus_L"; then
832699ca880aSopenharmony_ci		case $host in
832799ca880aSopenharmony_ci		*-*-sunos*) add_shlibpath=$dir ;;
832899ca880aSopenharmony_ci		esac
832999ca880aSopenharmony_ci		add_dir=-L$dir
833099ca880aSopenharmony_ci		add=-l$name
833199ca880aSopenharmony_ci	      elif test no = "$hardcode_shlibpath_var"; then
833299ca880aSopenharmony_ci		add_shlibpath=$dir
833399ca880aSopenharmony_ci		add=-l$name
833499ca880aSopenharmony_ci	      else
833599ca880aSopenharmony_ci		lib_linked=no
833699ca880aSopenharmony_ci	      fi
833799ca880aSopenharmony_ci	      ;;
833899ca880aSopenharmony_ci	    relink)
833999ca880aSopenharmony_ci	      if test yes = "$hardcode_direct" &&
834099ca880aSopenharmony_ci	         test no = "$hardcode_direct_absolute"; then
834199ca880aSopenharmony_ci		add=$dir/$linklib
834299ca880aSopenharmony_ci	      elif test yes = "$hardcode_minus_L"; then
834399ca880aSopenharmony_ci		add_dir=-L$absdir
834499ca880aSopenharmony_ci		# Try looking first in the location we're being installed to.
834599ca880aSopenharmony_ci		if test -n "$inst_prefix_dir"; then
834699ca880aSopenharmony_ci		  case $libdir in
834799ca880aSopenharmony_ci		    [\\/]*)
834899ca880aSopenharmony_ci		      func_append add_dir " -L$inst_prefix_dir$libdir"
834999ca880aSopenharmony_ci		      ;;
835099ca880aSopenharmony_ci		  esac
835199ca880aSopenharmony_ci		fi
835299ca880aSopenharmony_ci		add=-l$name
835399ca880aSopenharmony_ci	      elif test yes = "$hardcode_shlibpath_var"; then
835499ca880aSopenharmony_ci		add_shlibpath=$dir
835599ca880aSopenharmony_ci		add=-l$name
835699ca880aSopenharmony_ci	      else
835799ca880aSopenharmony_ci		lib_linked=no
835899ca880aSopenharmony_ci	      fi
835999ca880aSopenharmony_ci	      ;;
836099ca880aSopenharmony_ci	    *) lib_linked=no ;;
836199ca880aSopenharmony_ci	    esac
836299ca880aSopenharmony_ci
836399ca880aSopenharmony_ci	    if test yes != "$lib_linked"; then
836499ca880aSopenharmony_ci	      func_fatal_configuration "unsupported hardcode properties"
836599ca880aSopenharmony_ci	    fi
836699ca880aSopenharmony_ci
836799ca880aSopenharmony_ci	    if test -n "$add_shlibpath"; then
836899ca880aSopenharmony_ci	      case :$compile_shlibpath: in
836999ca880aSopenharmony_ci	      *":$add_shlibpath:"*) ;;
837099ca880aSopenharmony_ci	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
837199ca880aSopenharmony_ci	      esac
837299ca880aSopenharmony_ci	    fi
837399ca880aSopenharmony_ci	    if test prog = "$linkmode"; then
837499ca880aSopenharmony_ci	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
837599ca880aSopenharmony_ci	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
837699ca880aSopenharmony_ci	    else
837799ca880aSopenharmony_ci	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
837899ca880aSopenharmony_ci	      test -n "$add" && deplibs="$add $deplibs"
837999ca880aSopenharmony_ci	      if test yes != "$hardcode_direct" &&
838099ca880aSopenharmony_ci		 test yes != "$hardcode_minus_L" &&
838199ca880aSopenharmony_ci		 test yes = "$hardcode_shlibpath_var"; then
838299ca880aSopenharmony_ci		case :$finalize_shlibpath: in
838399ca880aSopenharmony_ci		*":$libdir:"*) ;;
838499ca880aSopenharmony_ci		*) func_append finalize_shlibpath "$libdir:" ;;
838599ca880aSopenharmony_ci		esac
838699ca880aSopenharmony_ci	      fi
838799ca880aSopenharmony_ci	    fi
838899ca880aSopenharmony_ci	  fi
838999ca880aSopenharmony_ci
839099ca880aSopenharmony_ci	  if test prog = "$linkmode" || test relink = "$opt_mode"; then
839199ca880aSopenharmony_ci	    add_shlibpath=
839299ca880aSopenharmony_ci	    add_dir=
839399ca880aSopenharmony_ci	    add=
839499ca880aSopenharmony_ci	    # Finalize command for both is simple: just hardcode it.
839599ca880aSopenharmony_ci	    if test yes = "$hardcode_direct" &&
839699ca880aSopenharmony_ci	       test no = "$hardcode_direct_absolute"; then
839799ca880aSopenharmony_ci	      add=$libdir/$linklib
839899ca880aSopenharmony_ci	    elif test yes = "$hardcode_minus_L"; then
839999ca880aSopenharmony_ci	      add_dir=-L$libdir
840099ca880aSopenharmony_ci	      add=-l$name
840199ca880aSopenharmony_ci	    elif test yes = "$hardcode_shlibpath_var"; then
840299ca880aSopenharmony_ci	      case :$finalize_shlibpath: in
840399ca880aSopenharmony_ci	      *":$libdir:"*) ;;
840499ca880aSopenharmony_ci	      *) func_append finalize_shlibpath "$libdir:" ;;
840599ca880aSopenharmony_ci	      esac
840699ca880aSopenharmony_ci	      add=-l$name
840799ca880aSopenharmony_ci	    elif test yes = "$hardcode_automatic"; then
840899ca880aSopenharmony_ci	      if test -n "$inst_prefix_dir" &&
840999ca880aSopenharmony_ci		 test -f "$inst_prefix_dir$libdir/$linklib"; then
841099ca880aSopenharmony_ci		add=$inst_prefix_dir$libdir/$linklib
841199ca880aSopenharmony_ci	      else
841299ca880aSopenharmony_ci		add=$libdir/$linklib
841399ca880aSopenharmony_ci	      fi
841499ca880aSopenharmony_ci	    else
841599ca880aSopenharmony_ci	      # We cannot seem to hardcode it, guess we'll fake it.
841699ca880aSopenharmony_ci	      add_dir=-L$libdir
841799ca880aSopenharmony_ci	      # Try looking first in the location we're being installed to.
841899ca880aSopenharmony_ci	      if test -n "$inst_prefix_dir"; then
841999ca880aSopenharmony_ci		case $libdir in
842099ca880aSopenharmony_ci		  [\\/]*)
842199ca880aSopenharmony_ci		    func_append add_dir " -L$inst_prefix_dir$libdir"
842299ca880aSopenharmony_ci		    ;;
842399ca880aSopenharmony_ci		esac
842499ca880aSopenharmony_ci	      fi
842599ca880aSopenharmony_ci	      add=-l$name
842699ca880aSopenharmony_ci	    fi
842799ca880aSopenharmony_ci
842899ca880aSopenharmony_ci	    if test prog = "$linkmode"; then
842999ca880aSopenharmony_ci	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
843099ca880aSopenharmony_ci	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
843199ca880aSopenharmony_ci	    else
843299ca880aSopenharmony_ci	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
843399ca880aSopenharmony_ci	      test -n "$add" && deplibs="$add $deplibs"
843499ca880aSopenharmony_ci	    fi
843599ca880aSopenharmony_ci	  fi
843699ca880aSopenharmony_ci	elif test prog = "$linkmode"; then
843799ca880aSopenharmony_ci	  # Here we assume that one of hardcode_direct or hardcode_minus_L
843899ca880aSopenharmony_ci	  # is not unsupported.  This is valid on all known static and
843999ca880aSopenharmony_ci	  # shared platforms.
844099ca880aSopenharmony_ci	  if test unsupported != "$hardcode_direct"; then
844199ca880aSopenharmony_ci	    test -n "$old_library" && linklib=$old_library
844299ca880aSopenharmony_ci	    compile_deplibs="$dir/$linklib $compile_deplibs"
844399ca880aSopenharmony_ci	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
844499ca880aSopenharmony_ci	  else
844599ca880aSopenharmony_ci	    compile_deplibs="-l$name -L$dir $compile_deplibs"
844699ca880aSopenharmony_ci	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
844799ca880aSopenharmony_ci	  fi
844899ca880aSopenharmony_ci	elif test yes = "$build_libtool_libs"; then
844999ca880aSopenharmony_ci	  # Not a shared library
845099ca880aSopenharmony_ci	  if test pass_all != "$deplibs_check_method"; then
845199ca880aSopenharmony_ci	    # We're trying link a shared library against a static one
845299ca880aSopenharmony_ci	    # but the system doesn't support it.
845399ca880aSopenharmony_ci
845499ca880aSopenharmony_ci	    # Just print a warning and add the library to dependency_libs so
845599ca880aSopenharmony_ci	    # that the program can be linked against the static library.
845699ca880aSopenharmony_ci	    echo
845799ca880aSopenharmony_ci	    $ECHO "*** Warning: This system cannot link to static lib archive $lib."
845899ca880aSopenharmony_ci	    echo "*** I have the capability to make that library automatically link in when"
845999ca880aSopenharmony_ci	    echo "*** you link to this library.  But I can only do this if you have a"
846099ca880aSopenharmony_ci	    echo "*** shared version of the library, which you do not appear to have."
846199ca880aSopenharmony_ci	    if test yes = "$module"; then
846299ca880aSopenharmony_ci	      echo "*** But as you try to build a module library, libtool will still create "
846399ca880aSopenharmony_ci	      echo "*** a static module, that should work as long as the dlopening application"
846499ca880aSopenharmony_ci	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
846599ca880aSopenharmony_ci	      if test -z "$global_symbol_pipe"; then
846699ca880aSopenharmony_ci		echo
846799ca880aSopenharmony_ci		echo "*** However, this would only work if libtool was able to extract symbol"
846899ca880aSopenharmony_ci		echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
846999ca880aSopenharmony_ci		echo "*** not find such a program.  So, this module is probably useless."
847099ca880aSopenharmony_ci		echo "*** 'nm' from GNU binutils and a full rebuild may help."
847199ca880aSopenharmony_ci	      fi
847299ca880aSopenharmony_ci	      if test no = "$build_old_libs"; then
847399ca880aSopenharmony_ci		build_libtool_libs=module
847499ca880aSopenharmony_ci		build_old_libs=yes
847599ca880aSopenharmony_ci	      else
847699ca880aSopenharmony_ci		build_libtool_libs=no
847799ca880aSopenharmony_ci	      fi
847899ca880aSopenharmony_ci	    fi
847999ca880aSopenharmony_ci	  else
848099ca880aSopenharmony_ci	    deplibs="$dir/$old_library $deplibs"
848199ca880aSopenharmony_ci	    link_static=yes
848299ca880aSopenharmony_ci	  fi
848399ca880aSopenharmony_ci	fi # link shared/static library?
848499ca880aSopenharmony_ci
848599ca880aSopenharmony_ci	if test lib = "$linkmode"; then
848699ca880aSopenharmony_ci	  if test -n "$dependency_libs" &&
848799ca880aSopenharmony_ci	     { test yes != "$hardcode_into_libs" ||
848899ca880aSopenharmony_ci	       test yes = "$build_old_libs" ||
848999ca880aSopenharmony_ci	       test yes = "$link_static"; }; then
849099ca880aSopenharmony_ci	    # Extract -R from dependency_libs
849199ca880aSopenharmony_ci	    temp_deplibs=
849299ca880aSopenharmony_ci	    for libdir in $dependency_libs; do
849399ca880aSopenharmony_ci	      case $libdir in
849499ca880aSopenharmony_ci	      -R*) func_stripname '-R' '' "$libdir"
849599ca880aSopenharmony_ci	           temp_xrpath=$func_stripname_result
849699ca880aSopenharmony_ci		   case " $xrpath " in
849799ca880aSopenharmony_ci		   *" $temp_xrpath "*) ;;
849899ca880aSopenharmony_ci		   *) func_append xrpath " $temp_xrpath";;
849999ca880aSopenharmony_ci		   esac;;
850099ca880aSopenharmony_ci	      *) func_append temp_deplibs " $libdir";;
850199ca880aSopenharmony_ci	      esac
850299ca880aSopenharmony_ci	    done
850399ca880aSopenharmony_ci	    dependency_libs=$temp_deplibs
850499ca880aSopenharmony_ci	  fi
850599ca880aSopenharmony_ci
850699ca880aSopenharmony_ci	  func_append newlib_search_path " $absdir"
850799ca880aSopenharmony_ci	  # Link against this library
850899ca880aSopenharmony_ci	  test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
850999ca880aSopenharmony_ci	  # ... and its dependency_libs
851099ca880aSopenharmony_ci	  tmp_libs=
851199ca880aSopenharmony_ci	  for deplib in $dependency_libs; do
851299ca880aSopenharmony_ci	    newdependency_libs="$deplib $newdependency_libs"
851399ca880aSopenharmony_ci	    case $deplib in
851499ca880aSopenharmony_ci              -L*) func_stripname '-L' '' "$deplib"
851599ca880aSopenharmony_ci                   func_resolve_sysroot "$func_stripname_result";;
851699ca880aSopenharmony_ci              *) func_resolve_sysroot "$deplib" ;;
851799ca880aSopenharmony_ci            esac
851899ca880aSopenharmony_ci	    if $opt_preserve_dup_deps; then
851999ca880aSopenharmony_ci	      case "$tmp_libs " in
852099ca880aSopenharmony_ci	      *" $func_resolve_sysroot_result "*)
852199ca880aSopenharmony_ci                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
852299ca880aSopenharmony_ci	      esac
852399ca880aSopenharmony_ci	    fi
852499ca880aSopenharmony_ci	    func_append tmp_libs " $func_resolve_sysroot_result"
852599ca880aSopenharmony_ci	  done
852699ca880aSopenharmony_ci
852799ca880aSopenharmony_ci	  if test no != "$link_all_deplibs"; then
852899ca880aSopenharmony_ci	    # Add the search paths of all dependency libraries
852999ca880aSopenharmony_ci	    for deplib in $dependency_libs; do
853099ca880aSopenharmony_ci	      path=
853199ca880aSopenharmony_ci	      case $deplib in
853299ca880aSopenharmony_ci	      -L*) path=$deplib ;;
853399ca880aSopenharmony_ci	      *.la)
853499ca880aSopenharmony_ci	        func_resolve_sysroot "$deplib"
853599ca880aSopenharmony_ci	        deplib=$func_resolve_sysroot_result
853699ca880aSopenharmony_ci	        func_dirname "$deplib" "" "."
853799ca880aSopenharmony_ci		dir=$func_dirname_result
853899ca880aSopenharmony_ci		# We need an absolute path.
853999ca880aSopenharmony_ci		case $dir in
854099ca880aSopenharmony_ci		[\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;;
854199ca880aSopenharmony_ci		*)
854299ca880aSopenharmony_ci		  absdir=`cd "$dir" && pwd`
854399ca880aSopenharmony_ci		  if test -z "$absdir"; then
854499ca880aSopenharmony_ci		    func_warning "cannot determine absolute directory name of '$dir'"
854599ca880aSopenharmony_ci		    absdir=$dir
854699ca880aSopenharmony_ci		  fi
854799ca880aSopenharmony_ci		  ;;
854899ca880aSopenharmony_ci		esac
854999ca880aSopenharmony_ci		if $GREP "^installed=no" $deplib > /dev/null; then
855099ca880aSopenharmony_ci		case $host in
855199ca880aSopenharmony_ci		*-*-darwin*)
855299ca880aSopenharmony_ci		  depdepl=
855399ca880aSopenharmony_ci		  eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
855499ca880aSopenharmony_ci		  if test -n "$deplibrary_names"; then
855599ca880aSopenharmony_ci		    for tmp in $deplibrary_names; do
855699ca880aSopenharmony_ci		      depdepl=$tmp
855799ca880aSopenharmony_ci		    done
855899ca880aSopenharmony_ci		    if test -f "$absdir/$objdir/$depdepl"; then
855999ca880aSopenharmony_ci		      depdepl=$absdir/$objdir/$depdepl
856099ca880aSopenharmony_ci		      darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
856199ca880aSopenharmony_ci                      if test -z "$darwin_install_name"; then
856299ca880aSopenharmony_ci                          darwin_install_name=`$OTOOL64 -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
856399ca880aSopenharmony_ci                      fi
856499ca880aSopenharmony_ci		      func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl"
856599ca880aSopenharmony_ci		      func_append linker_flags " -dylib_file $darwin_install_name:$depdepl"
856699ca880aSopenharmony_ci		      path=
856799ca880aSopenharmony_ci		    fi
856899ca880aSopenharmony_ci		  fi
856999ca880aSopenharmony_ci		  ;;
857099ca880aSopenharmony_ci		*)
857199ca880aSopenharmony_ci		  path=-L$absdir/$objdir
857299ca880aSopenharmony_ci		  ;;
857399ca880aSopenharmony_ci		esac
857499ca880aSopenharmony_ci		else
857599ca880aSopenharmony_ci		  eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
857699ca880aSopenharmony_ci		  test -z "$libdir" && \
857799ca880aSopenharmony_ci		    func_fatal_error "'$deplib' is not a valid libtool archive"
857899ca880aSopenharmony_ci		  test "$absdir" != "$libdir" && \
857999ca880aSopenharmony_ci		    func_warning "'$deplib' seems to be moved"
858099ca880aSopenharmony_ci
858199ca880aSopenharmony_ci		  path=-L$absdir
858299ca880aSopenharmony_ci		fi
858399ca880aSopenharmony_ci		;;
858499ca880aSopenharmony_ci	      esac
858599ca880aSopenharmony_ci	      case " $deplibs " in
858699ca880aSopenharmony_ci	      *" $path "*) ;;
858799ca880aSopenharmony_ci	      *) deplibs="$path $deplibs" ;;
858899ca880aSopenharmony_ci	      esac
858999ca880aSopenharmony_ci	    done
859099ca880aSopenharmony_ci	  fi # link_all_deplibs != no
859199ca880aSopenharmony_ci	fi # linkmode = lib
859299ca880aSopenharmony_ci      done # for deplib in $libs
859399ca880aSopenharmony_ci      if test link = "$pass"; then
859499ca880aSopenharmony_ci	if test prog = "$linkmode"; then
859599ca880aSopenharmony_ci	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
859699ca880aSopenharmony_ci	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
859799ca880aSopenharmony_ci	else
859899ca880aSopenharmony_ci	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
859999ca880aSopenharmony_ci	fi
860099ca880aSopenharmony_ci      fi
860199ca880aSopenharmony_ci      dependency_libs=$newdependency_libs
860299ca880aSopenharmony_ci      if test dlpreopen = "$pass"; then
860399ca880aSopenharmony_ci	# Link the dlpreopened libraries before other libraries
860499ca880aSopenharmony_ci	for deplib in $save_deplibs; do
860599ca880aSopenharmony_ci	  deplibs="$deplib $deplibs"
860699ca880aSopenharmony_ci	done
860799ca880aSopenharmony_ci      fi
860899ca880aSopenharmony_ci      if test dlopen != "$pass"; then
860999ca880aSopenharmony_ci	test conv = "$pass" || {
861099ca880aSopenharmony_ci	  # Make sure lib_search_path contains only unique directories.
861199ca880aSopenharmony_ci	  lib_search_path=
861299ca880aSopenharmony_ci	  for dir in $newlib_search_path; do
861399ca880aSopenharmony_ci	    case "$lib_search_path " in
861499ca880aSopenharmony_ci	    *" $dir "*) ;;
861599ca880aSopenharmony_ci	    *) func_append lib_search_path " $dir" ;;
861699ca880aSopenharmony_ci	    esac
861799ca880aSopenharmony_ci	  done
861899ca880aSopenharmony_ci	  newlib_search_path=
861999ca880aSopenharmony_ci	}
862099ca880aSopenharmony_ci
862199ca880aSopenharmony_ci	if test prog,link = "$linkmode,$pass"; then
862299ca880aSopenharmony_ci	  vars="compile_deplibs finalize_deplibs"
862399ca880aSopenharmony_ci	else
862499ca880aSopenharmony_ci	  vars=deplibs
862599ca880aSopenharmony_ci	fi
862699ca880aSopenharmony_ci	for var in $vars dependency_libs; do
862799ca880aSopenharmony_ci	  # Add libraries to $var in reverse order
862899ca880aSopenharmony_ci	  eval tmp_libs=\"\$$var\"
862999ca880aSopenharmony_ci	  new_libs=
863099ca880aSopenharmony_ci	  for deplib in $tmp_libs; do
863199ca880aSopenharmony_ci	    # FIXME: Pedantically, this is the right thing to do, so
863299ca880aSopenharmony_ci	    #        that some nasty dependency loop isn't accidentally
863399ca880aSopenharmony_ci	    #        broken:
863499ca880aSopenharmony_ci	    #new_libs="$deplib $new_libs"
863599ca880aSopenharmony_ci	    # Pragmatically, this seems to cause very few problems in
863699ca880aSopenharmony_ci	    # practice:
863799ca880aSopenharmony_ci	    case $deplib in
863899ca880aSopenharmony_ci	    -L*) new_libs="$deplib $new_libs" ;;
863999ca880aSopenharmony_ci	    -R*) ;;
864099ca880aSopenharmony_ci	    *)
864199ca880aSopenharmony_ci	      # And here is the reason: when a library appears more
864299ca880aSopenharmony_ci	      # than once as an explicit dependence of a library, or
864399ca880aSopenharmony_ci	      # is implicitly linked in more than once by the
864499ca880aSopenharmony_ci	      # compiler, it is considered special, and multiple
864599ca880aSopenharmony_ci	      # occurrences thereof are not removed.  Compare this
864699ca880aSopenharmony_ci	      # with having the same library being listed as a
864799ca880aSopenharmony_ci	      # dependency of multiple other libraries: in this case,
864899ca880aSopenharmony_ci	      # we know (pedantically, we assume) the library does not
864999ca880aSopenharmony_ci	      # need to be listed more than once, so we keep only the
865099ca880aSopenharmony_ci	      # last copy.  This is not always right, but it is rare
865199ca880aSopenharmony_ci	      # enough that we require users that really mean to play
865299ca880aSopenharmony_ci	      # such unportable linking tricks to link the library
865399ca880aSopenharmony_ci	      # using -Wl,-lname, so that libtool does not consider it
865499ca880aSopenharmony_ci	      # for duplicate removal.
865599ca880aSopenharmony_ci	      case " $specialdeplibs " in
865699ca880aSopenharmony_ci	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
865799ca880aSopenharmony_ci	      *)
865899ca880aSopenharmony_ci		case " $new_libs " in
865999ca880aSopenharmony_ci		*" $deplib "*) ;;
866099ca880aSopenharmony_ci		*) new_libs="$deplib $new_libs" ;;
866199ca880aSopenharmony_ci		esac
866299ca880aSopenharmony_ci		;;
866399ca880aSopenharmony_ci	      esac
866499ca880aSopenharmony_ci	      ;;
866599ca880aSopenharmony_ci	    esac
866699ca880aSopenharmony_ci	  done
866799ca880aSopenharmony_ci	  tmp_libs=
866899ca880aSopenharmony_ci	  for deplib in $new_libs; do
866999ca880aSopenharmony_ci	    case $deplib in
867099ca880aSopenharmony_ci	    -L*)
867199ca880aSopenharmony_ci	      case " $tmp_libs " in
867299ca880aSopenharmony_ci	      *" $deplib "*) ;;
867399ca880aSopenharmony_ci	      *) func_append tmp_libs " $deplib" ;;
867499ca880aSopenharmony_ci	      esac
867599ca880aSopenharmony_ci	      ;;
867699ca880aSopenharmony_ci	    *) func_append tmp_libs " $deplib" ;;
867799ca880aSopenharmony_ci	    esac
867899ca880aSopenharmony_ci	  done
867999ca880aSopenharmony_ci	  eval $var=\"$tmp_libs\"
868099ca880aSopenharmony_ci	done # for var
868199ca880aSopenharmony_ci      fi
868299ca880aSopenharmony_ci
868399ca880aSopenharmony_ci      # Add Sun CC postdeps if required:
868499ca880aSopenharmony_ci      test CXX = "$tagname" && {
868599ca880aSopenharmony_ci        case $host_os in
868699ca880aSopenharmony_ci        linux*)
868799ca880aSopenharmony_ci          case `$CC -V 2>&1 | sed 5q` in
868899ca880aSopenharmony_ci          *Sun\ C*) # Sun C++ 5.9
868999ca880aSopenharmony_ci            func_suncc_cstd_abi
869099ca880aSopenharmony_ci
869199ca880aSopenharmony_ci            if test no != "$suncc_use_cstd_abi"; then
869299ca880aSopenharmony_ci              func_append postdeps ' -library=Cstd -library=Crun'
869399ca880aSopenharmony_ci            fi
869499ca880aSopenharmony_ci            ;;
869599ca880aSopenharmony_ci          esac
869699ca880aSopenharmony_ci          ;;
869799ca880aSopenharmony_ci
869899ca880aSopenharmony_ci        solaris*)
869999ca880aSopenharmony_ci          func_cc_basename "$CC"
870099ca880aSopenharmony_ci          case $func_cc_basename_result in
870199ca880aSopenharmony_ci          CC* | sunCC*)
870299ca880aSopenharmony_ci            func_suncc_cstd_abi
870399ca880aSopenharmony_ci
870499ca880aSopenharmony_ci            if test no != "$suncc_use_cstd_abi"; then
870599ca880aSopenharmony_ci              func_append postdeps ' -library=Cstd -library=Crun'
870699ca880aSopenharmony_ci            fi
870799ca880aSopenharmony_ci            ;;
870899ca880aSopenharmony_ci          esac
870999ca880aSopenharmony_ci          ;;
871099ca880aSopenharmony_ci        esac
871199ca880aSopenharmony_ci      }
871299ca880aSopenharmony_ci
871399ca880aSopenharmony_ci      # Last step: remove runtime libs from dependency_libs
871499ca880aSopenharmony_ci      # (they stay in deplibs)
871599ca880aSopenharmony_ci      tmp_libs=
871699ca880aSopenharmony_ci      for i in $dependency_libs; do
871799ca880aSopenharmony_ci	case " $predeps $postdeps $compiler_lib_search_path " in
871899ca880aSopenharmony_ci	*" $i "*)
871999ca880aSopenharmony_ci	  i=
872099ca880aSopenharmony_ci	  ;;
872199ca880aSopenharmony_ci	esac
872299ca880aSopenharmony_ci	if test -n "$i"; then
872399ca880aSopenharmony_ci	  func_append tmp_libs " $i"
872499ca880aSopenharmony_ci	fi
872599ca880aSopenharmony_ci      done
872699ca880aSopenharmony_ci      dependency_libs=$tmp_libs
872799ca880aSopenharmony_ci    done # for pass
872899ca880aSopenharmony_ci    if test prog = "$linkmode"; then
872999ca880aSopenharmony_ci      dlfiles=$newdlfiles
873099ca880aSopenharmony_ci    fi
873199ca880aSopenharmony_ci    if test prog = "$linkmode" || test lib = "$linkmode"; then
873299ca880aSopenharmony_ci      dlprefiles=$newdlprefiles
873399ca880aSopenharmony_ci    fi
873499ca880aSopenharmony_ci
873599ca880aSopenharmony_ci    case $linkmode in
873699ca880aSopenharmony_ci    oldlib)
873799ca880aSopenharmony_ci      if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
873899ca880aSopenharmony_ci	func_warning "'-dlopen' is ignored for archives"
873999ca880aSopenharmony_ci      fi
874099ca880aSopenharmony_ci
874199ca880aSopenharmony_ci      case " $deplibs" in
874299ca880aSopenharmony_ci      *\ -l* | *\ -L*)
874399ca880aSopenharmony_ci	func_warning "'-l' and '-L' are ignored for archives" ;;
874499ca880aSopenharmony_ci      esac
874599ca880aSopenharmony_ci
874699ca880aSopenharmony_ci      test -n "$rpath" && \
874799ca880aSopenharmony_ci	func_warning "'-rpath' is ignored for archives"
874899ca880aSopenharmony_ci
874999ca880aSopenharmony_ci      test -n "$xrpath" && \
875099ca880aSopenharmony_ci	func_warning "'-R' is ignored for archives"
875199ca880aSopenharmony_ci
875299ca880aSopenharmony_ci      test -n "$vinfo" && \
875399ca880aSopenharmony_ci	func_warning "'-version-info/-version-number' is ignored for archives"
875499ca880aSopenharmony_ci
875599ca880aSopenharmony_ci      test -n "$release" && \
875699ca880aSopenharmony_ci	func_warning "'-release' is ignored for archives"
875799ca880aSopenharmony_ci
875899ca880aSopenharmony_ci      test -n "$export_symbols$export_symbols_regex" && \
875999ca880aSopenharmony_ci	func_warning "'-export-symbols' is ignored for archives"
876099ca880aSopenharmony_ci
876199ca880aSopenharmony_ci      # Now set the variables for building old libraries.
876299ca880aSopenharmony_ci      build_libtool_libs=no
876399ca880aSopenharmony_ci      oldlibs=$output
876499ca880aSopenharmony_ci      func_append objs "$old_deplibs"
876599ca880aSopenharmony_ci      ;;
876699ca880aSopenharmony_ci
876799ca880aSopenharmony_ci    lib)
876899ca880aSopenharmony_ci      # Make sure we only generate libraries of the form 'libNAME.la'.
876999ca880aSopenharmony_ci      case $outputname in
877099ca880aSopenharmony_ci      lib*)
877199ca880aSopenharmony_ci	func_stripname 'lib' '.la' "$outputname"
877299ca880aSopenharmony_ci	name=$func_stripname_result
877399ca880aSopenharmony_ci	eval shared_ext=\"$shrext_cmds\"
877499ca880aSopenharmony_ci	eval libname=\"$libname_spec\"
877599ca880aSopenharmony_ci	;;
877699ca880aSopenharmony_ci      *)
877799ca880aSopenharmony_ci	test no = "$module" \
877899ca880aSopenharmony_ci	  && func_fatal_help "libtool library '$output' must begin with 'lib'"
877999ca880aSopenharmony_ci
878099ca880aSopenharmony_ci	if test no != "$need_lib_prefix"; then
878199ca880aSopenharmony_ci	  # Add the "lib" prefix for modules if required
878299ca880aSopenharmony_ci	  func_stripname '' '.la' "$outputname"
878399ca880aSopenharmony_ci	  name=$func_stripname_result
878499ca880aSopenharmony_ci	  eval shared_ext=\"$shrext_cmds\"
878599ca880aSopenharmony_ci	  eval libname=\"$libname_spec\"
878699ca880aSopenharmony_ci	else
878799ca880aSopenharmony_ci	  func_stripname '' '.la' "$outputname"
878899ca880aSopenharmony_ci	  libname=$func_stripname_result
878999ca880aSopenharmony_ci	fi
879099ca880aSopenharmony_ci	;;
879199ca880aSopenharmony_ci      esac
879299ca880aSopenharmony_ci
879399ca880aSopenharmony_ci      if test -n "$objs"; then
879499ca880aSopenharmony_ci	if test pass_all != "$deplibs_check_method"; then
879599ca880aSopenharmony_ci	  func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs"
879699ca880aSopenharmony_ci	else
879799ca880aSopenharmony_ci	  echo
879899ca880aSopenharmony_ci	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
879999ca880aSopenharmony_ci	  $ECHO "*** objects $objs is not portable!"
880099ca880aSopenharmony_ci	  func_append libobjs " $objs"
880199ca880aSopenharmony_ci	fi
880299ca880aSopenharmony_ci      fi
880399ca880aSopenharmony_ci
880499ca880aSopenharmony_ci      test no = "$dlself" \
880599ca880aSopenharmony_ci	|| func_warning "'-dlopen self' is ignored for libtool libraries"
880699ca880aSopenharmony_ci
880799ca880aSopenharmony_ci      set dummy $rpath
880899ca880aSopenharmony_ci      shift
880999ca880aSopenharmony_ci      test 1 -lt "$#" \
881099ca880aSopenharmony_ci	&& func_warning "ignoring multiple '-rpath's for a libtool library"
881199ca880aSopenharmony_ci
881299ca880aSopenharmony_ci      install_libdir=$1
881399ca880aSopenharmony_ci
881499ca880aSopenharmony_ci      oldlibs=
881599ca880aSopenharmony_ci      if test -z "$rpath"; then
881699ca880aSopenharmony_ci	if test yes = "$build_libtool_libs"; then
881799ca880aSopenharmony_ci	  # Building a libtool convenience library.
881899ca880aSopenharmony_ci	  # Some compilers have problems with a '.al' extension so
881999ca880aSopenharmony_ci	  # convenience libraries should have the same extension an
882099ca880aSopenharmony_ci	  # archive normally would.
882199ca880aSopenharmony_ci	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
882299ca880aSopenharmony_ci	  build_libtool_libs=convenience
882399ca880aSopenharmony_ci	  build_old_libs=yes
882499ca880aSopenharmony_ci	fi
882599ca880aSopenharmony_ci
882699ca880aSopenharmony_ci	test -n "$vinfo" && \
882799ca880aSopenharmony_ci	  func_warning "'-version-info/-version-number' is ignored for convenience libraries"
882899ca880aSopenharmony_ci
882999ca880aSopenharmony_ci	test -n "$release" && \
883099ca880aSopenharmony_ci	  func_warning "'-release' is ignored for convenience libraries"
883199ca880aSopenharmony_ci      else
883299ca880aSopenharmony_ci
883399ca880aSopenharmony_ci	# Parse the version information argument.
883499ca880aSopenharmony_ci	save_ifs=$IFS; IFS=:
883599ca880aSopenharmony_ci	set dummy $vinfo 0 0 0
883699ca880aSopenharmony_ci	shift
883799ca880aSopenharmony_ci	IFS=$save_ifs
883899ca880aSopenharmony_ci
883999ca880aSopenharmony_ci	test -n "$7" && \
884099ca880aSopenharmony_ci	  func_fatal_help "too many parameters to '-version-info'"
884199ca880aSopenharmony_ci
884299ca880aSopenharmony_ci	# convert absolute version numbers to libtool ages
884399ca880aSopenharmony_ci	# this retains compatibility with .la files and attempts
884499ca880aSopenharmony_ci	# to make the code below a bit more comprehensible
884599ca880aSopenharmony_ci
884699ca880aSopenharmony_ci	case $vinfo_number in
884799ca880aSopenharmony_ci	yes)
884899ca880aSopenharmony_ci	  number_major=$1
884999ca880aSopenharmony_ci	  number_minor=$2
885099ca880aSopenharmony_ci	  number_revision=$3
885199ca880aSopenharmony_ci	  #
885299ca880aSopenharmony_ci	  # There are really only two kinds -- those that
885399ca880aSopenharmony_ci	  # use the current revision as the major version
885499ca880aSopenharmony_ci	  # and those that subtract age and use age as
885599ca880aSopenharmony_ci	  # a minor version.  But, then there is irix
885699ca880aSopenharmony_ci	  # that has an extra 1 added just for fun
885799ca880aSopenharmony_ci	  #
885899ca880aSopenharmony_ci	  case $version_type in
885999ca880aSopenharmony_ci	  # correct linux to gnu/linux during the next big refactor
886099ca880aSopenharmony_ci	  darwin|freebsd-elf|linux|osf|windows|none)
886199ca880aSopenharmony_ci	    func_arith $number_major + $number_minor
886299ca880aSopenharmony_ci	    current=$func_arith_result
886399ca880aSopenharmony_ci	    age=$number_minor
886499ca880aSopenharmony_ci	    revision=$number_revision
886599ca880aSopenharmony_ci	    ;;
886699ca880aSopenharmony_ci	  freebsd-aout|qnx|sunos)
886799ca880aSopenharmony_ci	    current=$number_major
886899ca880aSopenharmony_ci	    revision=$number_minor
886999ca880aSopenharmony_ci	    age=0
887099ca880aSopenharmony_ci	    ;;
887199ca880aSopenharmony_ci	  irix|nonstopux)
887299ca880aSopenharmony_ci	    func_arith $number_major + $number_minor
887399ca880aSopenharmony_ci	    current=$func_arith_result
887499ca880aSopenharmony_ci	    age=$number_minor
887599ca880aSopenharmony_ci	    revision=$number_minor
887699ca880aSopenharmony_ci	    lt_irix_increment=no
887799ca880aSopenharmony_ci	    ;;
887899ca880aSopenharmony_ci	  esac
887999ca880aSopenharmony_ci	  ;;
888099ca880aSopenharmony_ci	no)
888199ca880aSopenharmony_ci	  current=$1
888299ca880aSopenharmony_ci	  revision=$2
888399ca880aSopenharmony_ci	  age=$3
888499ca880aSopenharmony_ci	  ;;
888599ca880aSopenharmony_ci	esac
888699ca880aSopenharmony_ci
888799ca880aSopenharmony_ci	# Check that each of the things are valid numbers.
888899ca880aSopenharmony_ci	case $current in
888999ca880aSopenharmony_ci	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
889099ca880aSopenharmony_ci	*)
889199ca880aSopenharmony_ci	  func_error "CURRENT '$current' must be a nonnegative integer"
889299ca880aSopenharmony_ci	  func_fatal_error "'$vinfo' is not valid version information"
889399ca880aSopenharmony_ci	  ;;
889499ca880aSopenharmony_ci	esac
889599ca880aSopenharmony_ci
889699ca880aSopenharmony_ci	case $revision in
889799ca880aSopenharmony_ci	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
889899ca880aSopenharmony_ci	*)
889999ca880aSopenharmony_ci	  func_error "REVISION '$revision' must be a nonnegative integer"
890099ca880aSopenharmony_ci	  func_fatal_error "'$vinfo' is not valid version information"
890199ca880aSopenharmony_ci	  ;;
890299ca880aSopenharmony_ci	esac
890399ca880aSopenharmony_ci
890499ca880aSopenharmony_ci	case $age in
890599ca880aSopenharmony_ci	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
890699ca880aSopenharmony_ci	*)
890799ca880aSopenharmony_ci	  func_error "AGE '$age' must be a nonnegative integer"
890899ca880aSopenharmony_ci	  func_fatal_error "'$vinfo' is not valid version information"
890999ca880aSopenharmony_ci	  ;;
891099ca880aSopenharmony_ci	esac
891199ca880aSopenharmony_ci
891299ca880aSopenharmony_ci	if test "$age" -gt "$current"; then
891399ca880aSopenharmony_ci	  func_error "AGE '$age' is greater than the current interface number '$current'"
891499ca880aSopenharmony_ci	  func_fatal_error "'$vinfo' is not valid version information"
891599ca880aSopenharmony_ci	fi
891699ca880aSopenharmony_ci
891799ca880aSopenharmony_ci	# Calculate the version variables.
891899ca880aSopenharmony_ci	major=
891999ca880aSopenharmony_ci	versuffix=
892099ca880aSopenharmony_ci	verstring=
892199ca880aSopenharmony_ci	case $version_type in
892299ca880aSopenharmony_ci	none) ;;
892399ca880aSopenharmony_ci
892499ca880aSopenharmony_ci	darwin)
892599ca880aSopenharmony_ci	  # Like Linux, but with the current version available in
892699ca880aSopenharmony_ci	  # verstring for coding it into the library header
892799ca880aSopenharmony_ci	  func_arith $current - $age
892899ca880aSopenharmony_ci	  major=.$func_arith_result
892999ca880aSopenharmony_ci	  versuffix=$major.$age.$revision
893099ca880aSopenharmony_ci	  # Darwin ld doesn't like 0 for these options...
893199ca880aSopenharmony_ci	  func_arith $current + 1
893299ca880aSopenharmony_ci	  minor_current=$func_arith_result
893399ca880aSopenharmony_ci	  xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
893499ca880aSopenharmony_ci	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
893599ca880aSopenharmony_ci          # On Darwin other compilers
893699ca880aSopenharmony_ci          case $CC in
893799ca880aSopenharmony_ci              nagfor*)
893899ca880aSopenharmony_ci                  verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
893999ca880aSopenharmony_ci                  ;;
894099ca880aSopenharmony_ci              *)
894199ca880aSopenharmony_ci                  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
894299ca880aSopenharmony_ci                  ;;
894399ca880aSopenharmony_ci          esac
894499ca880aSopenharmony_ci	  ;;
894599ca880aSopenharmony_ci
894699ca880aSopenharmony_ci	freebsd-aout)
894799ca880aSopenharmony_ci	  major=.$current
894899ca880aSopenharmony_ci	  versuffix=.$current.$revision
894999ca880aSopenharmony_ci	  ;;
895099ca880aSopenharmony_ci
895199ca880aSopenharmony_ci	freebsd-elf)
895299ca880aSopenharmony_ci	  func_arith $current - $age
895399ca880aSopenharmony_ci	  major=.$func_arith_result
895499ca880aSopenharmony_ci	  versuffix=$major.$age.$revision
895599ca880aSopenharmony_ci	  ;;
895699ca880aSopenharmony_ci
895799ca880aSopenharmony_ci	irix | nonstopux)
895899ca880aSopenharmony_ci	  if test no = "$lt_irix_increment"; then
895999ca880aSopenharmony_ci	    func_arith $current - $age
896099ca880aSopenharmony_ci	  else
896199ca880aSopenharmony_ci	    func_arith $current - $age + 1
896299ca880aSopenharmony_ci	  fi
896399ca880aSopenharmony_ci	  major=$func_arith_result
896499ca880aSopenharmony_ci
896599ca880aSopenharmony_ci	  case $version_type in
896699ca880aSopenharmony_ci	    nonstopux) verstring_prefix=nonstopux ;;
896799ca880aSopenharmony_ci	    *)         verstring_prefix=sgi ;;
896899ca880aSopenharmony_ci	  esac
896999ca880aSopenharmony_ci	  verstring=$verstring_prefix$major.$revision
897099ca880aSopenharmony_ci
897199ca880aSopenharmony_ci	  # Add in all the interfaces that we are compatible with.
897299ca880aSopenharmony_ci	  loop=$revision
897399ca880aSopenharmony_ci	  while test 0 -ne "$loop"; do
897499ca880aSopenharmony_ci	    func_arith $revision - $loop
897599ca880aSopenharmony_ci	    iface=$func_arith_result
897699ca880aSopenharmony_ci	    func_arith $loop - 1
897799ca880aSopenharmony_ci	    loop=$func_arith_result
897899ca880aSopenharmony_ci	    verstring=$verstring_prefix$major.$iface:$verstring
897999ca880aSopenharmony_ci	  done
898099ca880aSopenharmony_ci
898199ca880aSopenharmony_ci	  # Before this point, $major must not contain '.'.
898299ca880aSopenharmony_ci	  major=.$major
898399ca880aSopenharmony_ci	  versuffix=$major.$revision
898499ca880aSopenharmony_ci	  ;;
898599ca880aSopenharmony_ci
898699ca880aSopenharmony_ci	linux) # correct to gnu/linux during the next big refactor
898799ca880aSopenharmony_ci	  func_arith $current - $age
898899ca880aSopenharmony_ci	  major=.$func_arith_result
898999ca880aSopenharmony_ci	  versuffix=$major.$age.$revision
899099ca880aSopenharmony_ci	  ;;
899199ca880aSopenharmony_ci
899299ca880aSopenharmony_ci	osf)
899399ca880aSopenharmony_ci	  func_arith $current - $age
899499ca880aSopenharmony_ci	  major=.$func_arith_result
899599ca880aSopenharmony_ci	  versuffix=.$current.$age.$revision
899699ca880aSopenharmony_ci	  verstring=$current.$age.$revision
899799ca880aSopenharmony_ci
899899ca880aSopenharmony_ci	  # Add in all the interfaces that we are compatible with.
899999ca880aSopenharmony_ci	  loop=$age
900099ca880aSopenharmony_ci	  while test 0 -ne "$loop"; do
900199ca880aSopenharmony_ci	    func_arith $current - $loop
900299ca880aSopenharmony_ci	    iface=$func_arith_result
900399ca880aSopenharmony_ci	    func_arith $loop - 1
900499ca880aSopenharmony_ci	    loop=$func_arith_result
900599ca880aSopenharmony_ci	    verstring=$verstring:$iface.0
900699ca880aSopenharmony_ci	  done
900799ca880aSopenharmony_ci
900899ca880aSopenharmony_ci	  # Make executables depend on our current version.
900999ca880aSopenharmony_ci	  func_append verstring ":$current.0"
901099ca880aSopenharmony_ci	  ;;
901199ca880aSopenharmony_ci
901299ca880aSopenharmony_ci	qnx)
901399ca880aSopenharmony_ci	  major=.$current
901499ca880aSopenharmony_ci	  versuffix=.$current
901599ca880aSopenharmony_ci	  ;;
901699ca880aSopenharmony_ci
901799ca880aSopenharmony_ci	sco)
901899ca880aSopenharmony_ci	  major=.$current
901999ca880aSopenharmony_ci	  versuffix=.$current
902099ca880aSopenharmony_ci	  ;;
902199ca880aSopenharmony_ci
902299ca880aSopenharmony_ci	sunos)
902399ca880aSopenharmony_ci	  major=.$current
902499ca880aSopenharmony_ci	  versuffix=.$current.$revision
902599ca880aSopenharmony_ci	  ;;
902699ca880aSopenharmony_ci
902799ca880aSopenharmony_ci	windows)
902899ca880aSopenharmony_ci	  # Use '-' rather than '.', since we only want one
902999ca880aSopenharmony_ci	  # extension on DOS 8.3 file systems.
903099ca880aSopenharmony_ci	  func_arith $current - $age
903199ca880aSopenharmony_ci	  major=$func_arith_result
903299ca880aSopenharmony_ci	  versuffix=-$major
903399ca880aSopenharmony_ci	  ;;
903499ca880aSopenharmony_ci
903599ca880aSopenharmony_ci	*)
903699ca880aSopenharmony_ci	  func_fatal_configuration "unknown library version type '$version_type'"
903799ca880aSopenharmony_ci	  ;;
903899ca880aSopenharmony_ci	esac
903999ca880aSopenharmony_ci
904099ca880aSopenharmony_ci	# Clear the version info if we defaulted, and they specified a release.
904199ca880aSopenharmony_ci	if test -z "$vinfo" && test -n "$release"; then
904299ca880aSopenharmony_ci	  major=
904399ca880aSopenharmony_ci	  case $version_type in
904499ca880aSopenharmony_ci	  darwin)
904599ca880aSopenharmony_ci	    # we can't check for "0.0" in archive_cmds due to quoting
904699ca880aSopenharmony_ci	    # problems, so we reset it completely
904799ca880aSopenharmony_ci	    verstring=
904899ca880aSopenharmony_ci	    ;;
904999ca880aSopenharmony_ci	  *)
905099ca880aSopenharmony_ci	    verstring=0.0
905199ca880aSopenharmony_ci	    ;;
905299ca880aSopenharmony_ci	  esac
905399ca880aSopenharmony_ci	  if test no = "$need_version"; then
905499ca880aSopenharmony_ci	    versuffix=
905599ca880aSopenharmony_ci	  else
905699ca880aSopenharmony_ci	    versuffix=.0.0
905799ca880aSopenharmony_ci	  fi
905899ca880aSopenharmony_ci	fi
905999ca880aSopenharmony_ci
906099ca880aSopenharmony_ci	# Remove version info from name if versioning should be avoided
906199ca880aSopenharmony_ci	if test yes,no = "$avoid_version,$need_version"; then
906299ca880aSopenharmony_ci	  major=
906399ca880aSopenharmony_ci	  versuffix=
906499ca880aSopenharmony_ci	  verstring=
906599ca880aSopenharmony_ci	fi
906699ca880aSopenharmony_ci
906799ca880aSopenharmony_ci	# Check to see if the archive will have undefined symbols.
906899ca880aSopenharmony_ci	if test yes = "$allow_undefined"; then
906999ca880aSopenharmony_ci	  if test unsupported = "$allow_undefined_flag"; then
907099ca880aSopenharmony_ci	    if test yes = "$build_old_libs"; then
907199ca880aSopenharmony_ci	      func_warning "undefined symbols not allowed in $host shared libraries; building static only"
907299ca880aSopenharmony_ci	      build_libtool_libs=no
907399ca880aSopenharmony_ci	    else
907499ca880aSopenharmony_ci	      func_fatal_error "can't build $host shared library unless -no-undefined is specified"
907599ca880aSopenharmony_ci	    fi
907699ca880aSopenharmony_ci	  fi
907799ca880aSopenharmony_ci	else
907899ca880aSopenharmony_ci	  # Don't allow undefined symbols.
907999ca880aSopenharmony_ci	  allow_undefined_flag=$no_undefined_flag
908099ca880aSopenharmony_ci	fi
908199ca880aSopenharmony_ci
908299ca880aSopenharmony_ci      fi
908399ca880aSopenharmony_ci
908499ca880aSopenharmony_ci      func_generate_dlsyms "$libname" "$libname" :
908599ca880aSopenharmony_ci      func_append libobjs " $symfileobj"
908699ca880aSopenharmony_ci      test " " = "$libobjs" && libobjs=
908799ca880aSopenharmony_ci
908899ca880aSopenharmony_ci      if test relink != "$opt_mode"; then
908999ca880aSopenharmony_ci	# Remove our outputs, but don't remove object files since they
909099ca880aSopenharmony_ci	# may have been created when compiling PIC objects.
909199ca880aSopenharmony_ci	removelist=
909299ca880aSopenharmony_ci	tempremovelist=`$ECHO "$output_objdir/*"`
909399ca880aSopenharmony_ci	for p in $tempremovelist; do
909499ca880aSopenharmony_ci	  case $p in
909599ca880aSopenharmony_ci	    *.$objext | *.gcno)
909699ca880aSopenharmony_ci	       ;;
909799ca880aSopenharmony_ci	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*)
909899ca880aSopenharmony_ci	       if test -n "$precious_files_regex"; then
909999ca880aSopenharmony_ci		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
910099ca880aSopenharmony_ci		 then
910199ca880aSopenharmony_ci		   continue
910299ca880aSopenharmony_ci		 fi
910399ca880aSopenharmony_ci	       fi
910499ca880aSopenharmony_ci	       func_append removelist " $p"
910599ca880aSopenharmony_ci	       ;;
910699ca880aSopenharmony_ci	    *) ;;
910799ca880aSopenharmony_ci	  esac
910899ca880aSopenharmony_ci	done
910999ca880aSopenharmony_ci	test -n "$removelist" && \
911099ca880aSopenharmony_ci	  func_show_eval "${RM}r \$removelist"
911199ca880aSopenharmony_ci      fi
911299ca880aSopenharmony_ci
911399ca880aSopenharmony_ci      # Now set the variables for building old libraries.
911499ca880aSopenharmony_ci      if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then
911599ca880aSopenharmony_ci	func_append oldlibs " $output_objdir/$libname.$libext"
911699ca880aSopenharmony_ci
911799ca880aSopenharmony_ci	# Transform .lo files to .o files.
911899ca880aSopenharmony_ci	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP`
911999ca880aSopenharmony_ci      fi
912099ca880aSopenharmony_ci
912199ca880aSopenharmony_ci      # Eliminate all temporary directories.
912299ca880aSopenharmony_ci      #for path in $notinst_path; do
912399ca880aSopenharmony_ci      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
912499ca880aSopenharmony_ci      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
912599ca880aSopenharmony_ci      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
912699ca880aSopenharmony_ci      #done
912799ca880aSopenharmony_ci
912899ca880aSopenharmony_ci      if test -n "$xrpath"; then
912999ca880aSopenharmony_ci	# If the user specified any rpath flags, then add them.
913099ca880aSopenharmony_ci	temp_xrpath=
913199ca880aSopenharmony_ci	for libdir in $xrpath; do
913299ca880aSopenharmony_ci	  func_replace_sysroot "$libdir"
913399ca880aSopenharmony_ci	  func_append temp_xrpath " -R$func_replace_sysroot_result"
913499ca880aSopenharmony_ci	  case "$finalize_rpath " in
913599ca880aSopenharmony_ci	  *" $libdir "*) ;;
913699ca880aSopenharmony_ci	  *) func_append finalize_rpath " $libdir" ;;
913799ca880aSopenharmony_ci	  esac
913899ca880aSopenharmony_ci	done
913999ca880aSopenharmony_ci	if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then
914099ca880aSopenharmony_ci	  dependency_libs="$temp_xrpath $dependency_libs"
914199ca880aSopenharmony_ci	fi
914299ca880aSopenharmony_ci      fi
914399ca880aSopenharmony_ci
914499ca880aSopenharmony_ci      # Make sure dlfiles contains only unique files that won't be dlpreopened
914599ca880aSopenharmony_ci      old_dlfiles=$dlfiles
914699ca880aSopenharmony_ci      dlfiles=
914799ca880aSopenharmony_ci      for lib in $old_dlfiles; do
914899ca880aSopenharmony_ci	case " $dlprefiles $dlfiles " in
914999ca880aSopenharmony_ci	*" $lib "*) ;;
915099ca880aSopenharmony_ci	*) func_append dlfiles " $lib" ;;
915199ca880aSopenharmony_ci	esac
915299ca880aSopenharmony_ci      done
915399ca880aSopenharmony_ci
915499ca880aSopenharmony_ci      # Make sure dlprefiles contains only unique files
915599ca880aSopenharmony_ci      old_dlprefiles=$dlprefiles
915699ca880aSopenharmony_ci      dlprefiles=
915799ca880aSopenharmony_ci      for lib in $old_dlprefiles; do
915899ca880aSopenharmony_ci	case "$dlprefiles " in
915999ca880aSopenharmony_ci	*" $lib "*) ;;
916099ca880aSopenharmony_ci	*) func_append dlprefiles " $lib" ;;
916199ca880aSopenharmony_ci	esac
916299ca880aSopenharmony_ci      done
916399ca880aSopenharmony_ci
916499ca880aSopenharmony_ci      if test yes = "$build_libtool_libs"; then
916599ca880aSopenharmony_ci	if test -n "$rpath"; then
916699ca880aSopenharmony_ci	  case $host in
916799ca880aSopenharmony_ci	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
916899ca880aSopenharmony_ci	    # these systems don't actually have a c library (as such)!
916999ca880aSopenharmony_ci	    ;;
917099ca880aSopenharmony_ci	  *-*-rhapsody* | *-*-darwin1.[012])
917199ca880aSopenharmony_ci	    # Rhapsody C library is in the System framework
917299ca880aSopenharmony_ci	    func_append deplibs " System.ltframework"
917399ca880aSopenharmony_ci	    ;;
917499ca880aSopenharmony_ci	  *-*-netbsd*)
917599ca880aSopenharmony_ci	    # Don't link with libc until the a.out ld.so is fixed.
917699ca880aSopenharmony_ci	    ;;
917799ca880aSopenharmony_ci	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
917899ca880aSopenharmony_ci	    # Do not include libc due to us having libc/libc_r.
917999ca880aSopenharmony_ci	    ;;
918099ca880aSopenharmony_ci	  *-*-sco3.2v5* | *-*-sco5v6*)
918199ca880aSopenharmony_ci	    # Causes problems with __ctype
918299ca880aSopenharmony_ci	    ;;
918399ca880aSopenharmony_ci	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
918499ca880aSopenharmony_ci	    # Compiler inserts libc in the correct place for threads to work
918599ca880aSopenharmony_ci	    ;;
918699ca880aSopenharmony_ci	  *)
918799ca880aSopenharmony_ci	    # Add libc to deplibs on all other systems if necessary.
918899ca880aSopenharmony_ci	    if test yes = "$build_libtool_need_lc"; then
918999ca880aSopenharmony_ci	      func_append deplibs " -lc"
919099ca880aSopenharmony_ci	    fi
919199ca880aSopenharmony_ci	    ;;
919299ca880aSopenharmony_ci	  esac
919399ca880aSopenharmony_ci	fi
919499ca880aSopenharmony_ci
919599ca880aSopenharmony_ci	# Transform deplibs into only deplibs that can be linked in shared.
919699ca880aSopenharmony_ci	name_save=$name
919799ca880aSopenharmony_ci	libname_save=$libname
919899ca880aSopenharmony_ci	release_save=$release
919999ca880aSopenharmony_ci	versuffix_save=$versuffix
920099ca880aSopenharmony_ci	major_save=$major
920199ca880aSopenharmony_ci	# I'm not sure if I'm treating the release correctly.  I think
920299ca880aSopenharmony_ci	# release should show up in the -l (ie -lgmp5) so we don't want to
920399ca880aSopenharmony_ci	# add it in twice.  Is that correct?
920499ca880aSopenharmony_ci	release=
920599ca880aSopenharmony_ci	versuffix=
920699ca880aSopenharmony_ci	major=
920799ca880aSopenharmony_ci	newdeplibs=
920899ca880aSopenharmony_ci	droppeddeps=no
920999ca880aSopenharmony_ci	case $deplibs_check_method in
921099ca880aSopenharmony_ci	pass_all)
921199ca880aSopenharmony_ci	  # Don't check for shared/static.  Everything works.
921299ca880aSopenharmony_ci	  # This might be a little naive.  We might want to check
921399ca880aSopenharmony_ci	  # whether the library exists or not.  But this is on
921499ca880aSopenharmony_ci	  # osf3 & osf4 and I'm not really sure... Just
921599ca880aSopenharmony_ci	  # implementing what was already the behavior.
921699ca880aSopenharmony_ci	  newdeplibs=$deplibs
921799ca880aSopenharmony_ci	  ;;
921899ca880aSopenharmony_ci	test_compile)
921999ca880aSopenharmony_ci	  # This code stresses the "libraries are programs" paradigm to its
922099ca880aSopenharmony_ci	  # limits. Maybe even breaks it.  We compile a program, linking it
922199ca880aSopenharmony_ci	  # against the deplibs as a proxy for the library.  Then we can check
922299ca880aSopenharmony_ci	  # whether they linked in statically or dynamically with ldd.
922399ca880aSopenharmony_ci	  $opt_dry_run || $RM conftest.c
922499ca880aSopenharmony_ci	  cat > conftest.c <<EOF
922599ca880aSopenharmony_ci	  int main() { return 0; }
922699ca880aSopenharmony_ciEOF
922799ca880aSopenharmony_ci	  $opt_dry_run || $RM conftest
922899ca880aSopenharmony_ci	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
922999ca880aSopenharmony_ci	    ldd_output=`ldd conftest`
923099ca880aSopenharmony_ci	    for i in $deplibs; do
923199ca880aSopenharmony_ci	      case $i in
923299ca880aSopenharmony_ci	      -l*)
923399ca880aSopenharmony_ci		func_stripname -l '' "$i"
923499ca880aSopenharmony_ci		name=$func_stripname_result
923599ca880aSopenharmony_ci		if test yes = "$allow_libtool_libs_with_static_runtimes"; then
923699ca880aSopenharmony_ci		  case " $predeps $postdeps " in
923799ca880aSopenharmony_ci		  *" $i "*)
923899ca880aSopenharmony_ci		    func_append newdeplibs " $i"
923999ca880aSopenharmony_ci		    i=
924099ca880aSopenharmony_ci		    ;;
924199ca880aSopenharmony_ci		  esac
924299ca880aSopenharmony_ci		fi
924399ca880aSopenharmony_ci		if test -n "$i"; then
924499ca880aSopenharmony_ci		  libname=`eval "\\$ECHO \"$libname_spec\""`
924599ca880aSopenharmony_ci		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
924699ca880aSopenharmony_ci		  set dummy $deplib_matches; shift
924799ca880aSopenharmony_ci		  deplib_match=$1
924899ca880aSopenharmony_ci		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
924999ca880aSopenharmony_ci		    func_append newdeplibs " $i"
925099ca880aSopenharmony_ci		  else
925199ca880aSopenharmony_ci		    droppeddeps=yes
925299ca880aSopenharmony_ci		    echo
925399ca880aSopenharmony_ci		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
925499ca880aSopenharmony_ci		    echo "*** I have the capability to make that library automatically link in when"
925599ca880aSopenharmony_ci		    echo "*** you link to this library.  But I can only do this if you have a"
925699ca880aSopenharmony_ci		    echo "*** shared version of the library, which I believe you do not have"
925799ca880aSopenharmony_ci		    echo "*** because a test_compile did reveal that the linker did not use it for"
925899ca880aSopenharmony_ci		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
925999ca880aSopenharmony_ci		  fi
926099ca880aSopenharmony_ci		fi
926199ca880aSopenharmony_ci		;;
926299ca880aSopenharmony_ci	      *)
926399ca880aSopenharmony_ci		func_append newdeplibs " $i"
926499ca880aSopenharmony_ci		;;
926599ca880aSopenharmony_ci	      esac
926699ca880aSopenharmony_ci	    done
926799ca880aSopenharmony_ci	  else
926899ca880aSopenharmony_ci	    # Error occurred in the first compile.  Let's try to salvage
926999ca880aSopenharmony_ci	    # the situation: Compile a separate program for each library.
927099ca880aSopenharmony_ci	    for i in $deplibs; do
927199ca880aSopenharmony_ci	      case $i in
927299ca880aSopenharmony_ci	      -l*)
927399ca880aSopenharmony_ci		func_stripname -l '' "$i"
927499ca880aSopenharmony_ci		name=$func_stripname_result
927599ca880aSopenharmony_ci		$opt_dry_run || $RM conftest
927699ca880aSopenharmony_ci		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
927799ca880aSopenharmony_ci		  ldd_output=`ldd conftest`
927899ca880aSopenharmony_ci		  if test yes = "$allow_libtool_libs_with_static_runtimes"; then
927999ca880aSopenharmony_ci		    case " $predeps $postdeps " in
928099ca880aSopenharmony_ci		    *" $i "*)
928199ca880aSopenharmony_ci		      func_append newdeplibs " $i"
928299ca880aSopenharmony_ci		      i=
928399ca880aSopenharmony_ci		      ;;
928499ca880aSopenharmony_ci		    esac
928599ca880aSopenharmony_ci		  fi
928699ca880aSopenharmony_ci		  if test -n "$i"; then
928799ca880aSopenharmony_ci		    libname=`eval "\\$ECHO \"$libname_spec\""`
928899ca880aSopenharmony_ci		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
928999ca880aSopenharmony_ci		    set dummy $deplib_matches; shift
929099ca880aSopenharmony_ci		    deplib_match=$1
929199ca880aSopenharmony_ci		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
929299ca880aSopenharmony_ci		      func_append newdeplibs " $i"
929399ca880aSopenharmony_ci		    else
929499ca880aSopenharmony_ci		      droppeddeps=yes
929599ca880aSopenharmony_ci		      echo
929699ca880aSopenharmony_ci		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
929799ca880aSopenharmony_ci		      echo "*** I have the capability to make that library automatically link in when"
929899ca880aSopenharmony_ci		      echo "*** you link to this library.  But I can only do this if you have a"
929999ca880aSopenharmony_ci		      echo "*** shared version of the library, which you do not appear to have"
930099ca880aSopenharmony_ci		      echo "*** because a test_compile did reveal that the linker did not use this one"
930199ca880aSopenharmony_ci		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
930299ca880aSopenharmony_ci		    fi
930399ca880aSopenharmony_ci		  fi
930499ca880aSopenharmony_ci		else
930599ca880aSopenharmony_ci		  droppeddeps=yes
930699ca880aSopenharmony_ci		  echo
930799ca880aSopenharmony_ci		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
930899ca880aSopenharmony_ci		  echo "*** make it link in!  You will probably need to install it or some"
930999ca880aSopenharmony_ci		  echo "*** library that it depends on before this library will be fully"
931099ca880aSopenharmony_ci		  echo "*** functional.  Installing it before continuing would be even better."
931199ca880aSopenharmony_ci		fi
931299ca880aSopenharmony_ci		;;
931399ca880aSopenharmony_ci	      *)
931499ca880aSopenharmony_ci		func_append newdeplibs " $i"
931599ca880aSopenharmony_ci		;;
931699ca880aSopenharmony_ci	      esac
931799ca880aSopenharmony_ci	    done
931899ca880aSopenharmony_ci	  fi
931999ca880aSopenharmony_ci	  ;;
932099ca880aSopenharmony_ci	file_magic*)
932199ca880aSopenharmony_ci	  set dummy $deplibs_check_method; shift
932299ca880aSopenharmony_ci	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
932399ca880aSopenharmony_ci	  for a_deplib in $deplibs; do
932499ca880aSopenharmony_ci	    case $a_deplib in
932599ca880aSopenharmony_ci	    -l*)
932699ca880aSopenharmony_ci	      func_stripname -l '' "$a_deplib"
932799ca880aSopenharmony_ci	      name=$func_stripname_result
932899ca880aSopenharmony_ci	      if test yes = "$allow_libtool_libs_with_static_runtimes"; then
932999ca880aSopenharmony_ci		case " $predeps $postdeps " in
933099ca880aSopenharmony_ci		*" $a_deplib "*)
933199ca880aSopenharmony_ci		  func_append newdeplibs " $a_deplib"
933299ca880aSopenharmony_ci		  a_deplib=
933399ca880aSopenharmony_ci		  ;;
933499ca880aSopenharmony_ci		esac
933599ca880aSopenharmony_ci	      fi
933699ca880aSopenharmony_ci	      if test -n "$a_deplib"; then
933799ca880aSopenharmony_ci		libname=`eval "\\$ECHO \"$libname_spec\""`
933899ca880aSopenharmony_ci		if test -n "$file_magic_glob"; then
933999ca880aSopenharmony_ci		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
934099ca880aSopenharmony_ci		else
934199ca880aSopenharmony_ci		  libnameglob=$libname
934299ca880aSopenharmony_ci		fi
934399ca880aSopenharmony_ci		test yes = "$want_nocaseglob" && nocaseglob=`shopt -p nocaseglob`
934499ca880aSopenharmony_ci		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
934599ca880aSopenharmony_ci		  if test yes = "$want_nocaseglob"; then
934699ca880aSopenharmony_ci		    shopt -s nocaseglob
934799ca880aSopenharmony_ci		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
934899ca880aSopenharmony_ci		    $nocaseglob
934999ca880aSopenharmony_ci		  else
935099ca880aSopenharmony_ci		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
935199ca880aSopenharmony_ci		  fi
935299ca880aSopenharmony_ci		  for potent_lib in $potential_libs; do
935399ca880aSopenharmony_ci		      # Follow soft links.
935499ca880aSopenharmony_ci		      if ls -lLd "$potent_lib" 2>/dev/null |
935599ca880aSopenharmony_ci			 $GREP " -> " >/dev/null; then
935699ca880aSopenharmony_ci			continue
935799ca880aSopenharmony_ci		      fi
935899ca880aSopenharmony_ci		      # The statement above tries to avoid entering an
935999ca880aSopenharmony_ci		      # endless loop below, in case of cyclic links.
936099ca880aSopenharmony_ci		      # We might still enter an endless loop, since a link
936199ca880aSopenharmony_ci		      # loop can be closed while we follow links,
936299ca880aSopenharmony_ci		      # but so what?
936399ca880aSopenharmony_ci		      potlib=$potent_lib
936499ca880aSopenharmony_ci		      while test -h "$potlib" 2>/dev/null; do
936599ca880aSopenharmony_ci			potliblink=`ls -ld $potlib | $SED 's/.* -> //'`
936699ca880aSopenharmony_ci			case $potliblink in
936799ca880aSopenharmony_ci			[\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;;
936899ca880aSopenharmony_ci			*) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";;
936999ca880aSopenharmony_ci			esac
937099ca880aSopenharmony_ci		      done
937199ca880aSopenharmony_ci		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
937299ca880aSopenharmony_ci			 $SED -e 10q |
937399ca880aSopenharmony_ci			 $EGREP "$file_magic_regex" > /dev/null; then
937499ca880aSopenharmony_ci			func_append newdeplibs " $a_deplib"
937599ca880aSopenharmony_ci			a_deplib=
937699ca880aSopenharmony_ci			break 2
937799ca880aSopenharmony_ci		      fi
937899ca880aSopenharmony_ci		  done
937999ca880aSopenharmony_ci		done
938099ca880aSopenharmony_ci	      fi
938199ca880aSopenharmony_ci	      if test -n "$a_deplib"; then
938299ca880aSopenharmony_ci		droppeddeps=yes
938399ca880aSopenharmony_ci		echo
938499ca880aSopenharmony_ci		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
938599ca880aSopenharmony_ci		echo "*** I have the capability to make that library automatically link in when"
938699ca880aSopenharmony_ci		echo "*** you link to this library.  But I can only do this if you have a"
938799ca880aSopenharmony_ci		echo "*** shared version of the library, which you do not appear to have"
938899ca880aSopenharmony_ci		echo "*** because I did check the linker path looking for a file starting"
938999ca880aSopenharmony_ci		if test -z "$potlib"; then
939099ca880aSopenharmony_ci		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
939199ca880aSopenharmony_ci		else
939299ca880aSopenharmony_ci		  $ECHO "*** with $libname and none of the candidates passed a file format test"
939399ca880aSopenharmony_ci		  $ECHO "*** using a file magic. Last file checked: $potlib"
939499ca880aSopenharmony_ci		fi
939599ca880aSopenharmony_ci	      fi
939699ca880aSopenharmony_ci	      ;;
939799ca880aSopenharmony_ci	    *)
939899ca880aSopenharmony_ci	      # Add a -L argument.
939999ca880aSopenharmony_ci	      func_append newdeplibs " $a_deplib"
940099ca880aSopenharmony_ci	      ;;
940199ca880aSopenharmony_ci	    esac
940299ca880aSopenharmony_ci	  done # Gone through all deplibs.
940399ca880aSopenharmony_ci	  ;;
940499ca880aSopenharmony_ci	match_pattern*)
940599ca880aSopenharmony_ci	  set dummy $deplibs_check_method; shift
940699ca880aSopenharmony_ci	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
940799ca880aSopenharmony_ci	  for a_deplib in $deplibs; do
940899ca880aSopenharmony_ci	    case $a_deplib in
940999ca880aSopenharmony_ci	    -l*)
941099ca880aSopenharmony_ci	      func_stripname -l '' "$a_deplib"
941199ca880aSopenharmony_ci	      name=$func_stripname_result
941299ca880aSopenharmony_ci	      if test yes = "$allow_libtool_libs_with_static_runtimes"; then
941399ca880aSopenharmony_ci		case " $predeps $postdeps " in
941499ca880aSopenharmony_ci		*" $a_deplib "*)
941599ca880aSopenharmony_ci		  func_append newdeplibs " $a_deplib"
941699ca880aSopenharmony_ci		  a_deplib=
941799ca880aSopenharmony_ci		  ;;
941899ca880aSopenharmony_ci		esac
941999ca880aSopenharmony_ci	      fi
942099ca880aSopenharmony_ci	      if test -n "$a_deplib"; then
942199ca880aSopenharmony_ci		libname=`eval "\\$ECHO \"$libname_spec\""`
942299ca880aSopenharmony_ci		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
942399ca880aSopenharmony_ci		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
942499ca880aSopenharmony_ci		  for potent_lib in $potential_libs; do
942599ca880aSopenharmony_ci		    potlib=$potent_lib # see symlink-check above in file_magic test
942699ca880aSopenharmony_ci		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
942799ca880aSopenharmony_ci		       $EGREP "$match_pattern_regex" > /dev/null; then
942899ca880aSopenharmony_ci		      func_append newdeplibs " $a_deplib"
942999ca880aSopenharmony_ci		      a_deplib=
943099ca880aSopenharmony_ci		      break 2
943199ca880aSopenharmony_ci		    fi
943299ca880aSopenharmony_ci		  done
943399ca880aSopenharmony_ci		done
943499ca880aSopenharmony_ci	      fi
943599ca880aSopenharmony_ci	      if test -n "$a_deplib"; then
943699ca880aSopenharmony_ci		droppeddeps=yes
943799ca880aSopenharmony_ci		echo
943899ca880aSopenharmony_ci		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
943999ca880aSopenharmony_ci		echo "*** I have the capability to make that library automatically link in when"
944099ca880aSopenharmony_ci		echo "*** you link to this library.  But I can only do this if you have a"
944199ca880aSopenharmony_ci		echo "*** shared version of the library, which you do not appear to have"
944299ca880aSopenharmony_ci		echo "*** because I did check the linker path looking for a file starting"
944399ca880aSopenharmony_ci		if test -z "$potlib"; then
944499ca880aSopenharmony_ci		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
944599ca880aSopenharmony_ci		else
944699ca880aSopenharmony_ci		  $ECHO "*** with $libname and none of the candidates passed a file format test"
944799ca880aSopenharmony_ci		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
944899ca880aSopenharmony_ci		fi
944999ca880aSopenharmony_ci	      fi
945099ca880aSopenharmony_ci	      ;;
945199ca880aSopenharmony_ci	    *)
945299ca880aSopenharmony_ci	      # Add a -L argument.
945399ca880aSopenharmony_ci	      func_append newdeplibs " $a_deplib"
945499ca880aSopenharmony_ci	      ;;
945599ca880aSopenharmony_ci	    esac
945699ca880aSopenharmony_ci	  done # Gone through all deplibs.
945799ca880aSopenharmony_ci	  ;;
945899ca880aSopenharmony_ci	none | unknown | *)
945999ca880aSopenharmony_ci	  newdeplibs=
946099ca880aSopenharmony_ci	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
946199ca880aSopenharmony_ci	  if test yes = "$allow_libtool_libs_with_static_runtimes"; then
946299ca880aSopenharmony_ci	    for i in $predeps $postdeps; do
946399ca880aSopenharmony_ci	      # can't use Xsed below, because $i might contain '/'
946499ca880aSopenharmony_ci	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"`
946599ca880aSopenharmony_ci	    done
946699ca880aSopenharmony_ci	  fi
946799ca880aSopenharmony_ci	  case $tmp_deplibs in
946899ca880aSopenharmony_ci	  *[!\	\ ]*)
946999ca880aSopenharmony_ci	    echo
947099ca880aSopenharmony_ci	    if test none = "$deplibs_check_method"; then
947199ca880aSopenharmony_ci	      echo "*** Warning: inter-library dependencies are not supported in this platform."
947299ca880aSopenharmony_ci	    else
947399ca880aSopenharmony_ci	      echo "*** Warning: inter-library dependencies are not known to be supported."
947499ca880aSopenharmony_ci	    fi
947599ca880aSopenharmony_ci	    echo "*** All declared inter-library dependencies are being dropped."
947699ca880aSopenharmony_ci	    droppeddeps=yes
947799ca880aSopenharmony_ci	    ;;
947899ca880aSopenharmony_ci	  esac
947999ca880aSopenharmony_ci	  ;;
948099ca880aSopenharmony_ci	esac
948199ca880aSopenharmony_ci	versuffix=$versuffix_save
948299ca880aSopenharmony_ci	major=$major_save
948399ca880aSopenharmony_ci	release=$release_save
948499ca880aSopenharmony_ci	libname=$libname_save
948599ca880aSopenharmony_ci	name=$name_save
948699ca880aSopenharmony_ci
948799ca880aSopenharmony_ci	case $host in
948899ca880aSopenharmony_ci	*-*-rhapsody* | *-*-darwin1.[012])
948999ca880aSopenharmony_ci	  # On Rhapsody replace the C library with the System framework
949099ca880aSopenharmony_ci	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
949199ca880aSopenharmony_ci	  ;;
949299ca880aSopenharmony_ci	esac
949399ca880aSopenharmony_ci
949499ca880aSopenharmony_ci	if test yes = "$droppeddeps"; then
949599ca880aSopenharmony_ci	  if test yes = "$module"; then
949699ca880aSopenharmony_ci	    echo
949799ca880aSopenharmony_ci	    echo "*** Warning: libtool could not satisfy all declared inter-library"
949899ca880aSopenharmony_ci	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
949999ca880aSopenharmony_ci	    echo "*** a static module, that should work as long as the dlopening"
950099ca880aSopenharmony_ci	    echo "*** application is linked with the -dlopen flag."
950199ca880aSopenharmony_ci	    if test -z "$global_symbol_pipe"; then
950299ca880aSopenharmony_ci	      echo
950399ca880aSopenharmony_ci	      echo "*** However, this would only work if libtool was able to extract symbol"
950499ca880aSopenharmony_ci	      echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
950599ca880aSopenharmony_ci	      echo "*** not find such a program.  So, this module is probably useless."
950699ca880aSopenharmony_ci	      echo "*** 'nm' from GNU binutils and a full rebuild may help."
950799ca880aSopenharmony_ci	    fi
950899ca880aSopenharmony_ci	    if test no = "$build_old_libs"; then
950999ca880aSopenharmony_ci	      oldlibs=$output_objdir/$libname.$libext
951099ca880aSopenharmony_ci	      build_libtool_libs=module
951199ca880aSopenharmony_ci	      build_old_libs=yes
951299ca880aSopenharmony_ci	    else
951399ca880aSopenharmony_ci	      build_libtool_libs=no
951499ca880aSopenharmony_ci	    fi
951599ca880aSopenharmony_ci	  else
951699ca880aSopenharmony_ci	    echo "*** The inter-library dependencies that have been dropped here will be"
951799ca880aSopenharmony_ci	    echo "*** automatically added whenever a program is linked with this library"
951899ca880aSopenharmony_ci	    echo "*** or is declared to -dlopen it."
951999ca880aSopenharmony_ci
952099ca880aSopenharmony_ci	    if test no = "$allow_undefined"; then
952199ca880aSopenharmony_ci	      echo
952299ca880aSopenharmony_ci	      echo "*** Since this library must not contain undefined symbols,"
952399ca880aSopenharmony_ci	      echo "*** because either the platform does not support them or"
952499ca880aSopenharmony_ci	      echo "*** it was explicitly requested with -no-undefined,"
952599ca880aSopenharmony_ci	      echo "*** libtool will only create a static version of it."
952699ca880aSopenharmony_ci	      if test no = "$build_old_libs"; then
952799ca880aSopenharmony_ci		oldlibs=$output_objdir/$libname.$libext
952899ca880aSopenharmony_ci		build_libtool_libs=module
952999ca880aSopenharmony_ci		build_old_libs=yes
953099ca880aSopenharmony_ci	      else
953199ca880aSopenharmony_ci		build_libtool_libs=no
953299ca880aSopenharmony_ci	      fi
953399ca880aSopenharmony_ci	    fi
953499ca880aSopenharmony_ci	  fi
953599ca880aSopenharmony_ci	fi
953699ca880aSopenharmony_ci	# Done checking deplibs!
953799ca880aSopenharmony_ci	deplibs=$newdeplibs
953899ca880aSopenharmony_ci      fi
953999ca880aSopenharmony_ci      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
954099ca880aSopenharmony_ci      case $host in
954199ca880aSopenharmony_ci	*-*-darwin*)
954299ca880aSopenharmony_ci	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
954399ca880aSopenharmony_ci	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
954499ca880aSopenharmony_ci	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
954599ca880aSopenharmony_ci	  ;;
954699ca880aSopenharmony_ci      esac
954799ca880aSopenharmony_ci
954899ca880aSopenharmony_ci      # move library search paths that coincide with paths to not yet
954999ca880aSopenharmony_ci      # installed libraries to the beginning of the library search list
955099ca880aSopenharmony_ci      new_libs=
955199ca880aSopenharmony_ci      for path in $notinst_path; do
955299ca880aSopenharmony_ci	case " $new_libs " in
955399ca880aSopenharmony_ci	*" -L$path/$objdir "*) ;;
955499ca880aSopenharmony_ci	*)
955599ca880aSopenharmony_ci	  case " $deplibs " in
955699ca880aSopenharmony_ci	  *" -L$path/$objdir "*)
955799ca880aSopenharmony_ci	    func_append new_libs " -L$path/$objdir" ;;
955899ca880aSopenharmony_ci	  esac
955999ca880aSopenharmony_ci	  ;;
956099ca880aSopenharmony_ci	esac
956199ca880aSopenharmony_ci      done
956299ca880aSopenharmony_ci      for deplib in $deplibs; do
956399ca880aSopenharmony_ci	case $deplib in
956499ca880aSopenharmony_ci	-L*)
956599ca880aSopenharmony_ci	  case " $new_libs " in
956699ca880aSopenharmony_ci	  *" $deplib "*) ;;
956799ca880aSopenharmony_ci	  *) func_append new_libs " $deplib" ;;
956899ca880aSopenharmony_ci	  esac
956999ca880aSopenharmony_ci	  ;;
957099ca880aSopenharmony_ci	*) func_append new_libs " $deplib" ;;
957199ca880aSopenharmony_ci	esac
957299ca880aSopenharmony_ci      done
957399ca880aSopenharmony_ci      deplibs=$new_libs
957499ca880aSopenharmony_ci
957599ca880aSopenharmony_ci      # All the library-specific variables (install_libdir is set above).
957699ca880aSopenharmony_ci      library_names=
957799ca880aSopenharmony_ci      old_library=
957899ca880aSopenharmony_ci      dlname=
957999ca880aSopenharmony_ci
958099ca880aSopenharmony_ci      # Test again, we may have decided not to build it any more
958199ca880aSopenharmony_ci      if test yes = "$build_libtool_libs"; then
958299ca880aSopenharmony_ci	# Remove $wl instances when linking with ld.
958399ca880aSopenharmony_ci	# FIXME: should test the right _cmds variable.
958499ca880aSopenharmony_ci	case $archive_cmds in
958599ca880aSopenharmony_ci	  *\$LD\ *) wl= ;;
958699ca880aSopenharmony_ci        esac
958799ca880aSopenharmony_ci	if test yes = "$hardcode_into_libs"; then
958899ca880aSopenharmony_ci	  # Hardcode the library paths
958999ca880aSopenharmony_ci	  hardcode_libdirs=
959099ca880aSopenharmony_ci	  dep_rpath=
959199ca880aSopenharmony_ci	  rpath=$finalize_rpath
959299ca880aSopenharmony_ci	  test relink = "$opt_mode" || rpath=$compile_rpath$rpath
959399ca880aSopenharmony_ci	  for libdir in $rpath; do
959499ca880aSopenharmony_ci	    if test -n "$hardcode_libdir_flag_spec"; then
959599ca880aSopenharmony_ci	      if test -n "$hardcode_libdir_separator"; then
959699ca880aSopenharmony_ci		func_replace_sysroot "$libdir"
959799ca880aSopenharmony_ci		libdir=$func_replace_sysroot_result
959899ca880aSopenharmony_ci		if test -z "$hardcode_libdirs"; then
959999ca880aSopenharmony_ci		  hardcode_libdirs=$libdir
960099ca880aSopenharmony_ci		else
960199ca880aSopenharmony_ci		  # Just accumulate the unique libdirs.
960299ca880aSopenharmony_ci		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
960399ca880aSopenharmony_ci		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
960499ca880aSopenharmony_ci		    ;;
960599ca880aSopenharmony_ci		  *)
960699ca880aSopenharmony_ci		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
960799ca880aSopenharmony_ci		    ;;
960899ca880aSopenharmony_ci		  esac
960999ca880aSopenharmony_ci		fi
961099ca880aSopenharmony_ci	      else
961199ca880aSopenharmony_ci		eval flag=\"$hardcode_libdir_flag_spec\"
961299ca880aSopenharmony_ci		func_append dep_rpath " $flag"
961399ca880aSopenharmony_ci	      fi
961499ca880aSopenharmony_ci	    elif test -n "$runpath_var"; then
961599ca880aSopenharmony_ci	      case "$perm_rpath " in
961699ca880aSopenharmony_ci	      *" $libdir "*) ;;
961799ca880aSopenharmony_ci	      *) func_append perm_rpath " $libdir" ;;
961899ca880aSopenharmony_ci	      esac
961999ca880aSopenharmony_ci	    fi
962099ca880aSopenharmony_ci	  done
962199ca880aSopenharmony_ci	  # Substitute the hardcoded libdirs into the rpath.
962299ca880aSopenharmony_ci	  if test -n "$hardcode_libdir_separator" &&
962399ca880aSopenharmony_ci	     test -n "$hardcode_libdirs"; then
962499ca880aSopenharmony_ci	    libdir=$hardcode_libdirs
962599ca880aSopenharmony_ci	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
962699ca880aSopenharmony_ci	  fi
962799ca880aSopenharmony_ci	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
962899ca880aSopenharmony_ci	    # We should set the runpath_var.
962999ca880aSopenharmony_ci	    rpath=
963099ca880aSopenharmony_ci	    for dir in $perm_rpath; do
963199ca880aSopenharmony_ci	      func_append rpath "$dir:"
963299ca880aSopenharmony_ci	    done
963399ca880aSopenharmony_ci	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
963499ca880aSopenharmony_ci	  fi
963599ca880aSopenharmony_ci	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
963699ca880aSopenharmony_ci	fi
963799ca880aSopenharmony_ci
963899ca880aSopenharmony_ci	shlibpath=$finalize_shlibpath
963999ca880aSopenharmony_ci	test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath
964099ca880aSopenharmony_ci	if test -n "$shlibpath"; then
964199ca880aSopenharmony_ci	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
964299ca880aSopenharmony_ci	fi
964399ca880aSopenharmony_ci
964499ca880aSopenharmony_ci	# Get the real and link names of the library.
964599ca880aSopenharmony_ci	eval shared_ext=\"$shrext_cmds\"
964699ca880aSopenharmony_ci	eval library_names=\"$library_names_spec\"
964799ca880aSopenharmony_ci	set dummy $library_names
964899ca880aSopenharmony_ci	shift
964999ca880aSopenharmony_ci	realname=$1
965099ca880aSopenharmony_ci	shift
965199ca880aSopenharmony_ci
965299ca880aSopenharmony_ci	if test -n "$soname_spec"; then
965399ca880aSopenharmony_ci	  eval soname=\"$soname_spec\"
965499ca880aSopenharmony_ci	else
965599ca880aSopenharmony_ci	  soname=$realname
965699ca880aSopenharmony_ci	fi
965799ca880aSopenharmony_ci	if test -z "$dlname"; then
965899ca880aSopenharmony_ci	  dlname=$soname
965999ca880aSopenharmony_ci	fi
966099ca880aSopenharmony_ci
966199ca880aSopenharmony_ci	lib=$output_objdir/$realname
966299ca880aSopenharmony_ci	linknames=
966399ca880aSopenharmony_ci	for link
966499ca880aSopenharmony_ci	do
966599ca880aSopenharmony_ci	  func_append linknames " $link"
966699ca880aSopenharmony_ci	done
966799ca880aSopenharmony_ci
966899ca880aSopenharmony_ci	# Use standard objects if they are pic
966999ca880aSopenharmony_ci	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
967099ca880aSopenharmony_ci	test "X$libobjs" = "X " && libobjs=
967199ca880aSopenharmony_ci
967299ca880aSopenharmony_ci	delfiles=
967399ca880aSopenharmony_ci	if test -n "$export_symbols" && test -n "$include_expsyms"; then
967499ca880aSopenharmony_ci	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
967599ca880aSopenharmony_ci	  export_symbols=$output_objdir/$libname.uexp
967699ca880aSopenharmony_ci	  func_append delfiles " $export_symbols"
967799ca880aSopenharmony_ci	fi
967899ca880aSopenharmony_ci
967999ca880aSopenharmony_ci	orig_export_symbols=
968099ca880aSopenharmony_ci	case $host_os in
968199ca880aSopenharmony_ci	cygwin* | mingw* | cegcc*)
968299ca880aSopenharmony_ci	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
968399ca880aSopenharmony_ci	    # exporting using user supplied symfile
968499ca880aSopenharmony_ci	    func_dll_def_p "$export_symbols" || {
968599ca880aSopenharmony_ci	      # and it's NOT already a .def file. Must figure out
968699ca880aSopenharmony_ci	      # which of the given symbols are data symbols and tag
968799ca880aSopenharmony_ci	      # them as such. So, trigger use of export_symbols_cmds.
968899ca880aSopenharmony_ci	      # export_symbols gets reassigned inside the "prepare
968999ca880aSopenharmony_ci	      # the list of exported symbols" if statement, so the
969099ca880aSopenharmony_ci	      # include_expsyms logic still works.
969199ca880aSopenharmony_ci	      orig_export_symbols=$export_symbols
969299ca880aSopenharmony_ci	      export_symbols=
969399ca880aSopenharmony_ci	      always_export_symbols=yes
969499ca880aSopenharmony_ci	    }
969599ca880aSopenharmony_ci	  fi
969699ca880aSopenharmony_ci	  ;;
969799ca880aSopenharmony_ci	esac
969899ca880aSopenharmony_ci
969999ca880aSopenharmony_ci	# Prepare the list of exported symbols
970099ca880aSopenharmony_ci	if test -z "$export_symbols"; then
970199ca880aSopenharmony_ci	  if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then
970299ca880aSopenharmony_ci	    func_verbose "generating symbol list for '$libname.la'"
970399ca880aSopenharmony_ci	    export_symbols=$output_objdir/$libname.exp
970499ca880aSopenharmony_ci	    $opt_dry_run || $RM $export_symbols
970599ca880aSopenharmony_ci	    cmds=$export_symbols_cmds
970699ca880aSopenharmony_ci	    save_ifs=$IFS; IFS='~'
970799ca880aSopenharmony_ci	    for cmd1 in $cmds; do
970899ca880aSopenharmony_ci	      IFS=$save_ifs
970999ca880aSopenharmony_ci	      # Take the normal branch if the nm_file_list_spec branch
971099ca880aSopenharmony_ci	      # doesn't work or if tool conversion is not needed.
971199ca880aSopenharmony_ci	      case $nm_file_list_spec~$to_tool_file_cmd in
971299ca880aSopenharmony_ci		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
971399ca880aSopenharmony_ci		  try_normal_branch=yes
971499ca880aSopenharmony_ci		  eval cmd=\"$cmd1\"
971599ca880aSopenharmony_ci		  func_len " $cmd"
971699ca880aSopenharmony_ci		  len=$func_len_result
971799ca880aSopenharmony_ci		  ;;
971899ca880aSopenharmony_ci		*)
971999ca880aSopenharmony_ci		  try_normal_branch=no
972099ca880aSopenharmony_ci		  ;;
972199ca880aSopenharmony_ci	      esac
972299ca880aSopenharmony_ci	      if test yes = "$try_normal_branch" \
972399ca880aSopenharmony_ci		 && { test "$len" -lt "$max_cmd_len" \
972499ca880aSopenharmony_ci		      || test "$max_cmd_len" -le -1; }
972599ca880aSopenharmony_ci	      then
972699ca880aSopenharmony_ci		func_show_eval "$cmd" 'exit $?'
972799ca880aSopenharmony_ci		skipped_export=false
972899ca880aSopenharmony_ci	      elif test -n "$nm_file_list_spec"; then
972999ca880aSopenharmony_ci		func_basename "$output"
973099ca880aSopenharmony_ci		output_la=$func_basename_result
973199ca880aSopenharmony_ci		save_libobjs=$libobjs
973299ca880aSopenharmony_ci		save_output=$output
973399ca880aSopenharmony_ci		output=$output_objdir/$output_la.nm
973499ca880aSopenharmony_ci		func_to_tool_file "$output"
973599ca880aSopenharmony_ci		libobjs=$nm_file_list_spec$func_to_tool_file_result
973699ca880aSopenharmony_ci		func_append delfiles " $output"
973799ca880aSopenharmony_ci		func_verbose "creating $NM input file list: $output"
973899ca880aSopenharmony_ci		for obj in $save_libobjs; do
973999ca880aSopenharmony_ci		  func_to_tool_file "$obj"
974099ca880aSopenharmony_ci		  $ECHO "$func_to_tool_file_result"
974199ca880aSopenharmony_ci		done > "$output"
974299ca880aSopenharmony_ci		eval cmd=\"$cmd1\"
974399ca880aSopenharmony_ci		func_show_eval "$cmd" 'exit $?'
974499ca880aSopenharmony_ci		output=$save_output
974599ca880aSopenharmony_ci		libobjs=$save_libobjs
974699ca880aSopenharmony_ci		skipped_export=false
974799ca880aSopenharmony_ci	      else
974899ca880aSopenharmony_ci		# The command line is too long to execute in one step.
974999ca880aSopenharmony_ci		func_verbose "using reloadable object file for export list..."
975099ca880aSopenharmony_ci		skipped_export=:
975199ca880aSopenharmony_ci		# Break out early, otherwise skipped_export may be
975299ca880aSopenharmony_ci		# set to false by a later but shorter cmd.
975399ca880aSopenharmony_ci		break
975499ca880aSopenharmony_ci	      fi
975599ca880aSopenharmony_ci	    done
975699ca880aSopenharmony_ci	    IFS=$save_ifs
975799ca880aSopenharmony_ci	    if test -n "$export_symbols_regex" && test : != "$skipped_export"; then
975899ca880aSopenharmony_ci	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
975999ca880aSopenharmony_ci	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
976099ca880aSopenharmony_ci	    fi
976199ca880aSopenharmony_ci	  fi
976299ca880aSopenharmony_ci	fi
976399ca880aSopenharmony_ci
976499ca880aSopenharmony_ci	if test -n "$export_symbols" && test -n "$include_expsyms"; then
976599ca880aSopenharmony_ci	  tmp_export_symbols=$export_symbols
976699ca880aSopenharmony_ci	  test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
976799ca880aSopenharmony_ci	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
976899ca880aSopenharmony_ci	fi
976999ca880aSopenharmony_ci
977099ca880aSopenharmony_ci	if test : != "$skipped_export" && test -n "$orig_export_symbols"; then
977199ca880aSopenharmony_ci	  # The given exports_symbols file has to be filtered, so filter it.
977299ca880aSopenharmony_ci	  func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
977399ca880aSopenharmony_ci	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
977499ca880aSopenharmony_ci	  # 's' commands, which not all seds can handle. GNU sed should be fine
977599ca880aSopenharmony_ci	  # though. Also, the filter scales superlinearly with the number of
977699ca880aSopenharmony_ci	  # global variables. join(1) would be nice here, but unfortunately
977799ca880aSopenharmony_ci	  # isn't a blessed tool.
977899ca880aSopenharmony_ci	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
977999ca880aSopenharmony_ci	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
978099ca880aSopenharmony_ci	  export_symbols=$output_objdir/$libname.def
978199ca880aSopenharmony_ci	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
978299ca880aSopenharmony_ci	fi
978399ca880aSopenharmony_ci
978499ca880aSopenharmony_ci	tmp_deplibs=
978599ca880aSopenharmony_ci	for test_deplib in $deplibs; do
978699ca880aSopenharmony_ci	  case " $convenience " in
978799ca880aSopenharmony_ci	  *" $test_deplib "*) ;;
978899ca880aSopenharmony_ci	  *)
978999ca880aSopenharmony_ci	    func_append tmp_deplibs " $test_deplib"
979099ca880aSopenharmony_ci	    ;;
979199ca880aSopenharmony_ci	  esac
979299ca880aSopenharmony_ci	done
979399ca880aSopenharmony_ci	deplibs=$tmp_deplibs
979499ca880aSopenharmony_ci
979599ca880aSopenharmony_ci	if test -n "$convenience"; then
979699ca880aSopenharmony_ci	  if test -n "$whole_archive_flag_spec" &&
979799ca880aSopenharmony_ci	    test yes = "$compiler_needs_object" &&
979899ca880aSopenharmony_ci	    test -z "$libobjs"; then
979999ca880aSopenharmony_ci	    # extract the archives, so we have objects to list.
980099ca880aSopenharmony_ci	    # TODO: could optimize this to just extract one archive.
980199ca880aSopenharmony_ci	    whole_archive_flag_spec=
980299ca880aSopenharmony_ci	  fi
980399ca880aSopenharmony_ci	  if test -n "$whole_archive_flag_spec"; then
980499ca880aSopenharmony_ci	    save_libobjs=$libobjs
980599ca880aSopenharmony_ci	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
980699ca880aSopenharmony_ci	    test "X$libobjs" = "X " && libobjs=
980799ca880aSopenharmony_ci	  else
980899ca880aSopenharmony_ci	    gentop=$output_objdir/${outputname}x
980999ca880aSopenharmony_ci	    func_append generated " $gentop"
981099ca880aSopenharmony_ci
981199ca880aSopenharmony_ci	    func_extract_archives $gentop $convenience
981299ca880aSopenharmony_ci	    func_append libobjs " $func_extract_archives_result"
981399ca880aSopenharmony_ci	    test "X$libobjs" = "X " && libobjs=
981499ca880aSopenharmony_ci	  fi
981599ca880aSopenharmony_ci	fi
981699ca880aSopenharmony_ci
981799ca880aSopenharmony_ci	if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then
981899ca880aSopenharmony_ci	  eval flag=\"$thread_safe_flag_spec\"
981999ca880aSopenharmony_ci	  func_append linker_flags " $flag"
982099ca880aSopenharmony_ci	fi
982199ca880aSopenharmony_ci
982299ca880aSopenharmony_ci	# Make a backup of the uninstalled library when relinking
982399ca880aSopenharmony_ci	if test relink = "$opt_mode"; then
982499ca880aSopenharmony_ci	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
982599ca880aSopenharmony_ci	fi
982699ca880aSopenharmony_ci
982799ca880aSopenharmony_ci	# Do each of the archive commands.
982899ca880aSopenharmony_ci	if test yes = "$module" && test -n "$module_cmds"; then
982999ca880aSopenharmony_ci	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
983099ca880aSopenharmony_ci	    eval test_cmds=\"$module_expsym_cmds\"
983199ca880aSopenharmony_ci	    cmds=$module_expsym_cmds
983299ca880aSopenharmony_ci	  else
983399ca880aSopenharmony_ci	    eval test_cmds=\"$module_cmds\"
983499ca880aSopenharmony_ci	    cmds=$module_cmds
983599ca880aSopenharmony_ci	  fi
983699ca880aSopenharmony_ci	else
983799ca880aSopenharmony_ci	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
983899ca880aSopenharmony_ci	    eval test_cmds=\"$archive_expsym_cmds\"
983999ca880aSopenharmony_ci	    cmds=$archive_expsym_cmds
984099ca880aSopenharmony_ci	  else
984199ca880aSopenharmony_ci	    eval test_cmds=\"$archive_cmds\"
984299ca880aSopenharmony_ci	    cmds=$archive_cmds
984399ca880aSopenharmony_ci	  fi
984499ca880aSopenharmony_ci	fi
984599ca880aSopenharmony_ci
984699ca880aSopenharmony_ci	if test : != "$skipped_export" &&
984799ca880aSopenharmony_ci	   func_len " $test_cmds" &&
984899ca880aSopenharmony_ci	   len=$func_len_result &&
984999ca880aSopenharmony_ci	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
985099ca880aSopenharmony_ci	  :
985199ca880aSopenharmony_ci	else
985299ca880aSopenharmony_ci	  # The command line is too long to link in one step, link piecewise
985399ca880aSopenharmony_ci	  # or, if using GNU ld and skipped_export is not :, use a linker
985499ca880aSopenharmony_ci	  # script.
985599ca880aSopenharmony_ci
985699ca880aSopenharmony_ci	  # Save the value of $output and $libobjs because we want to
985799ca880aSopenharmony_ci	  # use them later.  If we have whole_archive_flag_spec, we
985899ca880aSopenharmony_ci	  # want to use save_libobjs as it was before
985999ca880aSopenharmony_ci	  # whole_archive_flag_spec was expanded, because we can't
986099ca880aSopenharmony_ci	  # assume the linker understands whole_archive_flag_spec.
986199ca880aSopenharmony_ci	  # This may have to be revisited, in case too many
986299ca880aSopenharmony_ci	  # convenience libraries get linked in and end up exceeding
986399ca880aSopenharmony_ci	  # the spec.
986499ca880aSopenharmony_ci	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
986599ca880aSopenharmony_ci	    save_libobjs=$libobjs
986699ca880aSopenharmony_ci	  fi
986799ca880aSopenharmony_ci	  save_output=$output
986899ca880aSopenharmony_ci	  func_basename "$output"
986999ca880aSopenharmony_ci	  output_la=$func_basename_result
987099ca880aSopenharmony_ci
987199ca880aSopenharmony_ci	  # Clear the reloadable object creation command queue and
987299ca880aSopenharmony_ci	  # initialize k to one.
987399ca880aSopenharmony_ci	  test_cmds=
987499ca880aSopenharmony_ci	  concat_cmds=
987599ca880aSopenharmony_ci	  objlist=
987699ca880aSopenharmony_ci	  last_robj=
987799ca880aSopenharmony_ci	  k=1
987899ca880aSopenharmony_ci
987999ca880aSopenharmony_ci	  if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then
988099ca880aSopenharmony_ci	    output=$output_objdir/$output_la.lnkscript
988199ca880aSopenharmony_ci	    func_verbose "creating GNU ld script: $output"
988299ca880aSopenharmony_ci	    echo 'INPUT (' > $output
988399ca880aSopenharmony_ci	    for obj in $save_libobjs
988499ca880aSopenharmony_ci	    do
988599ca880aSopenharmony_ci	      func_to_tool_file "$obj"
988699ca880aSopenharmony_ci	      $ECHO "$func_to_tool_file_result" >> $output
988799ca880aSopenharmony_ci	    done
988899ca880aSopenharmony_ci	    echo ')' >> $output
988999ca880aSopenharmony_ci	    func_append delfiles " $output"
989099ca880aSopenharmony_ci	    func_to_tool_file "$output"
989199ca880aSopenharmony_ci	    output=$func_to_tool_file_result
989299ca880aSopenharmony_ci	  elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then
989399ca880aSopenharmony_ci	    output=$output_objdir/$output_la.lnk
989499ca880aSopenharmony_ci	    func_verbose "creating linker input file list: $output"
989599ca880aSopenharmony_ci	    : > $output
989699ca880aSopenharmony_ci	    set x $save_libobjs
989799ca880aSopenharmony_ci	    shift
989899ca880aSopenharmony_ci	    firstobj=
989999ca880aSopenharmony_ci	    if test yes = "$compiler_needs_object"; then
990099ca880aSopenharmony_ci	      firstobj="$1 "
990199ca880aSopenharmony_ci	      shift
990299ca880aSopenharmony_ci	    fi
990399ca880aSopenharmony_ci	    for obj
990499ca880aSopenharmony_ci	    do
990599ca880aSopenharmony_ci	      func_to_tool_file "$obj"
990699ca880aSopenharmony_ci	      $ECHO "$func_to_tool_file_result" >> $output
990799ca880aSopenharmony_ci	    done
990899ca880aSopenharmony_ci	    func_append delfiles " $output"
990999ca880aSopenharmony_ci	    func_to_tool_file "$output"
991099ca880aSopenharmony_ci	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
991199ca880aSopenharmony_ci	  else
991299ca880aSopenharmony_ci	    if test -n "$save_libobjs"; then
991399ca880aSopenharmony_ci	      func_verbose "creating reloadable object files..."
991499ca880aSopenharmony_ci	      output=$output_objdir/$output_la-$k.$objext
991599ca880aSopenharmony_ci	      eval test_cmds=\"$reload_cmds\"
991699ca880aSopenharmony_ci	      func_len " $test_cmds"
991799ca880aSopenharmony_ci	      len0=$func_len_result
991899ca880aSopenharmony_ci	      len=$len0
991999ca880aSopenharmony_ci
992099ca880aSopenharmony_ci	      # Loop over the list of objects to be linked.
992199ca880aSopenharmony_ci	      for obj in $save_libobjs
992299ca880aSopenharmony_ci	      do
992399ca880aSopenharmony_ci		func_len " $obj"
992499ca880aSopenharmony_ci		func_arith $len + $func_len_result
992599ca880aSopenharmony_ci		len=$func_arith_result
992699ca880aSopenharmony_ci		if test -z "$objlist" ||
992799ca880aSopenharmony_ci		   test "$len" -lt "$max_cmd_len"; then
992899ca880aSopenharmony_ci		  func_append objlist " $obj"
992999ca880aSopenharmony_ci		else
993099ca880aSopenharmony_ci		  # The command $test_cmds is almost too long, add a
993199ca880aSopenharmony_ci		  # command to the queue.
993299ca880aSopenharmony_ci		  if test 1 -eq "$k"; then
993399ca880aSopenharmony_ci		    # The first file doesn't have a previous command to add.
993499ca880aSopenharmony_ci		    reload_objs=$objlist
993599ca880aSopenharmony_ci		    eval concat_cmds=\"$reload_cmds\"
993699ca880aSopenharmony_ci		  else
993799ca880aSopenharmony_ci		    # All subsequent reloadable object files will link in
993899ca880aSopenharmony_ci		    # the last one created.
993999ca880aSopenharmony_ci		    reload_objs="$objlist $last_robj"
994099ca880aSopenharmony_ci		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
994199ca880aSopenharmony_ci		  fi
994299ca880aSopenharmony_ci		  last_robj=$output_objdir/$output_la-$k.$objext
994399ca880aSopenharmony_ci		  func_arith $k + 1
994499ca880aSopenharmony_ci		  k=$func_arith_result
994599ca880aSopenharmony_ci		  output=$output_objdir/$output_la-$k.$objext
994699ca880aSopenharmony_ci		  objlist=" $obj"
994799ca880aSopenharmony_ci		  func_len " $last_robj"
994899ca880aSopenharmony_ci		  func_arith $len0 + $func_len_result
994999ca880aSopenharmony_ci		  len=$func_arith_result
995099ca880aSopenharmony_ci		fi
995199ca880aSopenharmony_ci	      done
995299ca880aSopenharmony_ci	      # Handle the remaining objects by creating one last
995399ca880aSopenharmony_ci	      # reloadable object file.  All subsequent reloadable object
995499ca880aSopenharmony_ci	      # files will link in the last one created.
995599ca880aSopenharmony_ci	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
995699ca880aSopenharmony_ci	      reload_objs="$objlist $last_robj"
995799ca880aSopenharmony_ci	      eval concat_cmds=\"\$concat_cmds$reload_cmds\"
995899ca880aSopenharmony_ci	      if test -n "$last_robj"; then
995999ca880aSopenharmony_ci	        eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
996099ca880aSopenharmony_ci	      fi
996199ca880aSopenharmony_ci	      func_append delfiles " $output"
996299ca880aSopenharmony_ci
996399ca880aSopenharmony_ci	    else
996499ca880aSopenharmony_ci	      output=
996599ca880aSopenharmony_ci	    fi
996699ca880aSopenharmony_ci
996799ca880aSopenharmony_ci	    ${skipped_export-false} && {
996899ca880aSopenharmony_ci	      func_verbose "generating symbol list for '$libname.la'"
996999ca880aSopenharmony_ci	      export_symbols=$output_objdir/$libname.exp
997099ca880aSopenharmony_ci	      $opt_dry_run || $RM $export_symbols
997199ca880aSopenharmony_ci	      libobjs=$output
997299ca880aSopenharmony_ci	      # Append the command to create the export file.
997399ca880aSopenharmony_ci	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
997499ca880aSopenharmony_ci	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
997599ca880aSopenharmony_ci	      if test -n "$last_robj"; then
997699ca880aSopenharmony_ci		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
997799ca880aSopenharmony_ci	      fi
997899ca880aSopenharmony_ci	    }
997999ca880aSopenharmony_ci
998099ca880aSopenharmony_ci	    test -n "$save_libobjs" &&
998199ca880aSopenharmony_ci	      func_verbose "creating a temporary reloadable object file: $output"
998299ca880aSopenharmony_ci
998399ca880aSopenharmony_ci	    # Loop through the commands generated above and execute them.
998499ca880aSopenharmony_ci	    save_ifs=$IFS; IFS='~'
998599ca880aSopenharmony_ci	    for cmd in $concat_cmds; do
998699ca880aSopenharmony_ci	      IFS=$save_ifs
998799ca880aSopenharmony_ci	      $opt_quiet || {
998899ca880aSopenharmony_ci		  func_quote_for_expand "$cmd"
998999ca880aSopenharmony_ci		  eval "func_echo $func_quote_for_expand_result"
999099ca880aSopenharmony_ci	      }
999199ca880aSopenharmony_ci	      $opt_dry_run || eval "$cmd" || {
999299ca880aSopenharmony_ci		lt_exit=$?
999399ca880aSopenharmony_ci
999499ca880aSopenharmony_ci		# Restore the uninstalled library and exit
999599ca880aSopenharmony_ci		if test relink = "$opt_mode"; then
999699ca880aSopenharmony_ci		  ( cd "$output_objdir" && \
999799ca880aSopenharmony_ci		    $RM "${realname}T" && \
999899ca880aSopenharmony_ci		    $MV "${realname}U" "$realname" )
999999ca880aSopenharmony_ci		fi
1000099ca880aSopenharmony_ci
1000199ca880aSopenharmony_ci		exit $lt_exit
1000299ca880aSopenharmony_ci	      }
1000399ca880aSopenharmony_ci	    done
1000499ca880aSopenharmony_ci	    IFS=$save_ifs
1000599ca880aSopenharmony_ci
1000699ca880aSopenharmony_ci	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
1000799ca880aSopenharmony_ci	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
1000899ca880aSopenharmony_ci	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
1000999ca880aSopenharmony_ci	    fi
1001099ca880aSopenharmony_ci	  fi
1001199ca880aSopenharmony_ci
1001299ca880aSopenharmony_ci          ${skipped_export-false} && {
1001399ca880aSopenharmony_ci	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
1001499ca880aSopenharmony_ci	      tmp_export_symbols=$export_symbols
1001599ca880aSopenharmony_ci	      test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
1001699ca880aSopenharmony_ci	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
1001799ca880aSopenharmony_ci	    fi
1001899ca880aSopenharmony_ci
1001999ca880aSopenharmony_ci	    if test -n "$orig_export_symbols"; then
1002099ca880aSopenharmony_ci	      # The given exports_symbols file has to be filtered, so filter it.
1002199ca880aSopenharmony_ci	      func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
1002299ca880aSopenharmony_ci	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
1002399ca880aSopenharmony_ci	      # 's' commands, which not all seds can handle. GNU sed should be fine
1002499ca880aSopenharmony_ci	      # though. Also, the filter scales superlinearly with the number of
1002599ca880aSopenharmony_ci	      # global variables. join(1) would be nice here, but unfortunately
1002699ca880aSopenharmony_ci	      # isn't a blessed tool.
1002799ca880aSopenharmony_ci	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
1002899ca880aSopenharmony_ci	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
1002999ca880aSopenharmony_ci	      export_symbols=$output_objdir/$libname.def
1003099ca880aSopenharmony_ci	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
1003199ca880aSopenharmony_ci	    fi
1003299ca880aSopenharmony_ci	  }
1003399ca880aSopenharmony_ci
1003499ca880aSopenharmony_ci	  libobjs=$output
1003599ca880aSopenharmony_ci	  # Restore the value of output.
1003699ca880aSopenharmony_ci	  output=$save_output
1003799ca880aSopenharmony_ci
1003899ca880aSopenharmony_ci	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
1003999ca880aSopenharmony_ci	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
1004099ca880aSopenharmony_ci	    test "X$libobjs" = "X " && libobjs=
1004199ca880aSopenharmony_ci	  fi
1004299ca880aSopenharmony_ci	  # Expand the library linking commands again to reset the
1004399ca880aSopenharmony_ci	  # value of $libobjs for piecewise linking.
1004499ca880aSopenharmony_ci
1004599ca880aSopenharmony_ci	  # Do each of the archive commands.
1004699ca880aSopenharmony_ci	  if test yes = "$module" && test -n "$module_cmds"; then
1004799ca880aSopenharmony_ci	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
1004899ca880aSopenharmony_ci	      cmds=$module_expsym_cmds
1004999ca880aSopenharmony_ci	    else
1005099ca880aSopenharmony_ci	      cmds=$module_cmds
1005199ca880aSopenharmony_ci	    fi
1005299ca880aSopenharmony_ci	  else
1005399ca880aSopenharmony_ci	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
1005499ca880aSopenharmony_ci	      cmds=$archive_expsym_cmds
1005599ca880aSopenharmony_ci	    else
1005699ca880aSopenharmony_ci	      cmds=$archive_cmds
1005799ca880aSopenharmony_ci	    fi
1005899ca880aSopenharmony_ci	  fi
1005999ca880aSopenharmony_ci	fi
1006099ca880aSopenharmony_ci
1006199ca880aSopenharmony_ci	if test -n "$delfiles"; then
1006299ca880aSopenharmony_ci	  # Append the command to remove temporary files to $cmds.
1006399ca880aSopenharmony_ci	  eval cmds=\"\$cmds~\$RM $delfiles\"
1006499ca880aSopenharmony_ci	fi
1006599ca880aSopenharmony_ci
1006699ca880aSopenharmony_ci	# Add any objects from preloaded convenience libraries
1006799ca880aSopenharmony_ci	if test -n "$dlprefiles"; then
1006899ca880aSopenharmony_ci	  gentop=$output_objdir/${outputname}x
1006999ca880aSopenharmony_ci	  func_append generated " $gentop"
1007099ca880aSopenharmony_ci
1007199ca880aSopenharmony_ci	  func_extract_archives $gentop $dlprefiles
1007299ca880aSopenharmony_ci	  func_append libobjs " $func_extract_archives_result"
1007399ca880aSopenharmony_ci	  test "X$libobjs" = "X " && libobjs=
1007499ca880aSopenharmony_ci	fi
1007599ca880aSopenharmony_ci
1007699ca880aSopenharmony_ci	save_ifs=$IFS; IFS='~'
1007799ca880aSopenharmony_ci	for cmd in $cmds; do
1007899ca880aSopenharmony_ci	  IFS=$sp$nl
1007999ca880aSopenharmony_ci	  eval cmd=\"$cmd\"
1008099ca880aSopenharmony_ci	  IFS=$save_ifs
1008199ca880aSopenharmony_ci	  $opt_quiet || {
1008299ca880aSopenharmony_ci	    func_quote_for_expand "$cmd"
1008399ca880aSopenharmony_ci	    eval "func_echo $func_quote_for_expand_result"
1008499ca880aSopenharmony_ci	  }
1008599ca880aSopenharmony_ci	  $opt_dry_run || eval "$cmd" || {
1008699ca880aSopenharmony_ci	    lt_exit=$?
1008799ca880aSopenharmony_ci
1008899ca880aSopenharmony_ci	    # Restore the uninstalled library and exit
1008999ca880aSopenharmony_ci	    if test relink = "$opt_mode"; then
1009099ca880aSopenharmony_ci	      ( cd "$output_objdir" && \
1009199ca880aSopenharmony_ci	        $RM "${realname}T" && \
1009299ca880aSopenharmony_ci		$MV "${realname}U" "$realname" )
1009399ca880aSopenharmony_ci	    fi
1009499ca880aSopenharmony_ci
1009599ca880aSopenharmony_ci	    exit $lt_exit
1009699ca880aSopenharmony_ci	  }
1009799ca880aSopenharmony_ci	done
1009899ca880aSopenharmony_ci	IFS=$save_ifs
1009999ca880aSopenharmony_ci
1010099ca880aSopenharmony_ci	# Restore the uninstalled library and exit
1010199ca880aSopenharmony_ci	if test relink = "$opt_mode"; then
1010299ca880aSopenharmony_ci	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
1010399ca880aSopenharmony_ci
1010499ca880aSopenharmony_ci	  if test -n "$convenience"; then
1010599ca880aSopenharmony_ci	    if test -z "$whole_archive_flag_spec"; then
1010699ca880aSopenharmony_ci	      func_show_eval '${RM}r "$gentop"'
1010799ca880aSopenharmony_ci	    fi
1010899ca880aSopenharmony_ci	  fi
1010999ca880aSopenharmony_ci
1011099ca880aSopenharmony_ci	  exit $EXIT_SUCCESS
1011199ca880aSopenharmony_ci	fi
1011299ca880aSopenharmony_ci
1011399ca880aSopenharmony_ci	# Create links to the real library.
1011499ca880aSopenharmony_ci	for linkname in $linknames; do
1011599ca880aSopenharmony_ci	  if test "$realname" != "$linkname"; then
1011699ca880aSopenharmony_ci	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
1011799ca880aSopenharmony_ci	  fi
1011899ca880aSopenharmony_ci	done
1011999ca880aSopenharmony_ci
1012099ca880aSopenharmony_ci	# If -module or -export-dynamic was specified, set the dlname.
1012199ca880aSopenharmony_ci	if test yes = "$module" || test yes = "$export_dynamic"; then
1012299ca880aSopenharmony_ci	  # On all known operating systems, these are identical.
1012399ca880aSopenharmony_ci	  dlname=$soname
1012499ca880aSopenharmony_ci	fi
1012599ca880aSopenharmony_ci      fi
1012699ca880aSopenharmony_ci      ;;
1012799ca880aSopenharmony_ci
1012899ca880aSopenharmony_ci    obj)
1012999ca880aSopenharmony_ci      if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
1013099ca880aSopenharmony_ci	func_warning "'-dlopen' is ignored for objects"
1013199ca880aSopenharmony_ci      fi
1013299ca880aSopenharmony_ci
1013399ca880aSopenharmony_ci      case " $deplibs" in
1013499ca880aSopenharmony_ci      *\ -l* | *\ -L*)
1013599ca880aSopenharmony_ci	func_warning "'-l' and '-L' are ignored for objects" ;;
1013699ca880aSopenharmony_ci      esac
1013799ca880aSopenharmony_ci
1013899ca880aSopenharmony_ci      test -n "$rpath" && \
1013999ca880aSopenharmony_ci	func_warning "'-rpath' is ignored for objects"
1014099ca880aSopenharmony_ci
1014199ca880aSopenharmony_ci      test -n "$xrpath" && \
1014299ca880aSopenharmony_ci	func_warning "'-R' is ignored for objects"
1014399ca880aSopenharmony_ci
1014499ca880aSopenharmony_ci      test -n "$vinfo" && \
1014599ca880aSopenharmony_ci	func_warning "'-version-info' is ignored for objects"
1014699ca880aSopenharmony_ci
1014799ca880aSopenharmony_ci      test -n "$release" && \
1014899ca880aSopenharmony_ci	func_warning "'-release' is ignored for objects"
1014999ca880aSopenharmony_ci
1015099ca880aSopenharmony_ci      case $output in
1015199ca880aSopenharmony_ci      *.lo)
1015299ca880aSopenharmony_ci	test -n "$objs$old_deplibs" && \
1015399ca880aSopenharmony_ci	  func_fatal_error "cannot build library object '$output' from non-libtool objects"
1015499ca880aSopenharmony_ci
1015599ca880aSopenharmony_ci	libobj=$output
1015699ca880aSopenharmony_ci	func_lo2o "$libobj"
1015799ca880aSopenharmony_ci	obj=$func_lo2o_result
1015899ca880aSopenharmony_ci	;;
1015999ca880aSopenharmony_ci      *)
1016099ca880aSopenharmony_ci	libobj=
1016199ca880aSopenharmony_ci	obj=$output
1016299ca880aSopenharmony_ci	;;
1016399ca880aSopenharmony_ci      esac
1016499ca880aSopenharmony_ci
1016599ca880aSopenharmony_ci      # Delete the old objects.
1016699ca880aSopenharmony_ci      $opt_dry_run || $RM $obj $libobj
1016799ca880aSopenharmony_ci
1016899ca880aSopenharmony_ci      # Objects from convenience libraries.  This assumes
1016999ca880aSopenharmony_ci      # single-version convenience libraries.  Whenever we create
1017099ca880aSopenharmony_ci      # different ones for PIC/non-PIC, this we'll have to duplicate
1017199ca880aSopenharmony_ci      # the extraction.
1017299ca880aSopenharmony_ci      reload_conv_objs=
1017399ca880aSopenharmony_ci      gentop=
1017499ca880aSopenharmony_ci      # if reload_cmds runs $LD directly, get rid of -Wl from
1017599ca880aSopenharmony_ci      # whole_archive_flag_spec and hope we can get by with turning comma
1017699ca880aSopenharmony_ci      # into space.
1017799ca880aSopenharmony_ci      case $reload_cmds in
1017899ca880aSopenharmony_ci        *\$LD[\ \$]*) wl= ;;
1017999ca880aSopenharmony_ci      esac
1018099ca880aSopenharmony_ci      if test -n "$convenience"; then
1018199ca880aSopenharmony_ci	if test -n "$whole_archive_flag_spec"; then
1018299ca880aSopenharmony_ci	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
1018399ca880aSopenharmony_ci	  test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
1018499ca880aSopenharmony_ci	  reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags
1018599ca880aSopenharmony_ci	else
1018699ca880aSopenharmony_ci	  gentop=$output_objdir/${obj}x
1018799ca880aSopenharmony_ci	  func_append generated " $gentop"
1018899ca880aSopenharmony_ci
1018999ca880aSopenharmony_ci	  func_extract_archives $gentop $convenience
1019099ca880aSopenharmony_ci	  reload_conv_objs="$reload_objs $func_extract_archives_result"
1019199ca880aSopenharmony_ci	fi
1019299ca880aSopenharmony_ci      fi
1019399ca880aSopenharmony_ci
1019499ca880aSopenharmony_ci      # If we're not building shared, we need to use non_pic_objs
1019599ca880aSopenharmony_ci      test yes = "$build_libtool_libs" || libobjs=$non_pic_objects
1019699ca880aSopenharmony_ci
1019799ca880aSopenharmony_ci      # Create the old-style object.
1019899ca880aSopenharmony_ci      reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs
1019999ca880aSopenharmony_ci
1020099ca880aSopenharmony_ci      output=$obj
1020199ca880aSopenharmony_ci      func_execute_cmds "$reload_cmds" 'exit $?'
1020299ca880aSopenharmony_ci
1020399ca880aSopenharmony_ci      # Exit if we aren't doing a library object file.
1020499ca880aSopenharmony_ci      if test -z "$libobj"; then
1020599ca880aSopenharmony_ci	if test -n "$gentop"; then
1020699ca880aSopenharmony_ci	  func_show_eval '${RM}r "$gentop"'
1020799ca880aSopenharmony_ci	fi
1020899ca880aSopenharmony_ci
1020999ca880aSopenharmony_ci	exit $EXIT_SUCCESS
1021099ca880aSopenharmony_ci      fi
1021199ca880aSopenharmony_ci
1021299ca880aSopenharmony_ci      test yes = "$build_libtool_libs" || {
1021399ca880aSopenharmony_ci	if test -n "$gentop"; then
1021499ca880aSopenharmony_ci	  func_show_eval '${RM}r "$gentop"'
1021599ca880aSopenharmony_ci	fi
1021699ca880aSopenharmony_ci
1021799ca880aSopenharmony_ci	# Create an invalid libtool object if no PIC, so that we don't
1021899ca880aSopenharmony_ci	# accidentally link it into a program.
1021999ca880aSopenharmony_ci	# $show "echo timestamp > $libobj"
1022099ca880aSopenharmony_ci	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
1022199ca880aSopenharmony_ci	exit $EXIT_SUCCESS
1022299ca880aSopenharmony_ci      }
1022399ca880aSopenharmony_ci
1022499ca880aSopenharmony_ci      if test -n "$pic_flag" || test default != "$pic_mode"; then
1022599ca880aSopenharmony_ci	# Only do commands if we really have different PIC objects.
1022699ca880aSopenharmony_ci	reload_objs="$libobjs $reload_conv_objs"
1022799ca880aSopenharmony_ci	output=$libobj
1022899ca880aSopenharmony_ci	func_execute_cmds "$reload_cmds" 'exit $?'
1022999ca880aSopenharmony_ci      fi
1023099ca880aSopenharmony_ci
1023199ca880aSopenharmony_ci      if test -n "$gentop"; then
1023299ca880aSopenharmony_ci	func_show_eval '${RM}r "$gentop"'
1023399ca880aSopenharmony_ci      fi
1023499ca880aSopenharmony_ci
1023599ca880aSopenharmony_ci      exit $EXIT_SUCCESS
1023699ca880aSopenharmony_ci      ;;
1023799ca880aSopenharmony_ci
1023899ca880aSopenharmony_ci    prog)
1023999ca880aSopenharmony_ci      case $host in
1024099ca880aSopenharmony_ci	*cygwin*) func_stripname '' '.exe' "$output"
1024199ca880aSopenharmony_ci	          output=$func_stripname_result.exe;;
1024299ca880aSopenharmony_ci      esac
1024399ca880aSopenharmony_ci      test -n "$vinfo" && \
1024499ca880aSopenharmony_ci	func_warning "'-version-info' is ignored for programs"
1024599ca880aSopenharmony_ci
1024699ca880aSopenharmony_ci      test -n "$release" && \
1024799ca880aSopenharmony_ci	func_warning "'-release' is ignored for programs"
1024899ca880aSopenharmony_ci
1024999ca880aSopenharmony_ci      $preload \
1025099ca880aSopenharmony_ci	&& test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \
1025199ca880aSopenharmony_ci	&& func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support."
1025299ca880aSopenharmony_ci
1025399ca880aSopenharmony_ci      case $host in
1025499ca880aSopenharmony_ci      *-*-rhapsody* | *-*-darwin1.[012])
1025599ca880aSopenharmony_ci	# On Rhapsody replace the C library is the System framework
1025699ca880aSopenharmony_ci	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
1025799ca880aSopenharmony_ci	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
1025899ca880aSopenharmony_ci	;;
1025999ca880aSopenharmony_ci      esac
1026099ca880aSopenharmony_ci
1026199ca880aSopenharmony_ci      case $host in
1026299ca880aSopenharmony_ci      *-*-darwin*)
1026399ca880aSopenharmony_ci	# Don't allow lazy linking, it breaks C++ global constructors
1026499ca880aSopenharmony_ci	# But is supposedly fixed on 10.4 or later (yay!).
1026599ca880aSopenharmony_ci	if test CXX = "$tagname"; then
1026699ca880aSopenharmony_ci	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
1026799ca880aSopenharmony_ci	    10.[0123])
1026899ca880aSopenharmony_ci	      func_append compile_command " $wl-bind_at_load"
1026999ca880aSopenharmony_ci	      func_append finalize_command " $wl-bind_at_load"
1027099ca880aSopenharmony_ci	    ;;
1027199ca880aSopenharmony_ci	  esac
1027299ca880aSopenharmony_ci	fi
1027399ca880aSopenharmony_ci	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
1027499ca880aSopenharmony_ci	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
1027599ca880aSopenharmony_ci	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
1027699ca880aSopenharmony_ci	;;
1027799ca880aSopenharmony_ci      esac
1027899ca880aSopenharmony_ci
1027999ca880aSopenharmony_ci
1028099ca880aSopenharmony_ci      # move library search paths that coincide with paths to not yet
1028199ca880aSopenharmony_ci      # installed libraries to the beginning of the library search list
1028299ca880aSopenharmony_ci      new_libs=
1028399ca880aSopenharmony_ci      for path in $notinst_path; do
1028499ca880aSopenharmony_ci	case " $new_libs " in
1028599ca880aSopenharmony_ci	*" -L$path/$objdir "*) ;;
1028699ca880aSopenharmony_ci	*)
1028799ca880aSopenharmony_ci	  case " $compile_deplibs " in
1028899ca880aSopenharmony_ci	  *" -L$path/$objdir "*)
1028999ca880aSopenharmony_ci	    func_append new_libs " -L$path/$objdir" ;;
1029099ca880aSopenharmony_ci	  esac
1029199ca880aSopenharmony_ci	  ;;
1029299ca880aSopenharmony_ci	esac
1029399ca880aSopenharmony_ci      done
1029499ca880aSopenharmony_ci      for deplib in $compile_deplibs; do
1029599ca880aSopenharmony_ci	case $deplib in
1029699ca880aSopenharmony_ci	-L*)
1029799ca880aSopenharmony_ci	  case " $new_libs " in
1029899ca880aSopenharmony_ci	  *" $deplib "*) ;;
1029999ca880aSopenharmony_ci	  *) func_append new_libs " $deplib" ;;
1030099ca880aSopenharmony_ci	  esac
1030199ca880aSopenharmony_ci	  ;;
1030299ca880aSopenharmony_ci	*) func_append new_libs " $deplib" ;;
1030399ca880aSopenharmony_ci	esac
1030499ca880aSopenharmony_ci      done
1030599ca880aSopenharmony_ci      compile_deplibs=$new_libs
1030699ca880aSopenharmony_ci
1030799ca880aSopenharmony_ci
1030899ca880aSopenharmony_ci      func_append compile_command " $compile_deplibs"
1030999ca880aSopenharmony_ci      func_append finalize_command " $finalize_deplibs"
1031099ca880aSopenharmony_ci
1031199ca880aSopenharmony_ci      if test -n "$rpath$xrpath"; then
1031299ca880aSopenharmony_ci	# If the user specified any rpath flags, then add them.
1031399ca880aSopenharmony_ci	for libdir in $rpath $xrpath; do
1031499ca880aSopenharmony_ci	  # This is the magic to use -rpath.
1031599ca880aSopenharmony_ci	  case "$finalize_rpath " in
1031699ca880aSopenharmony_ci	  *" $libdir "*) ;;
1031799ca880aSopenharmony_ci	  *) func_append finalize_rpath " $libdir" ;;
1031899ca880aSopenharmony_ci	  esac
1031999ca880aSopenharmony_ci	done
1032099ca880aSopenharmony_ci      fi
1032199ca880aSopenharmony_ci
1032299ca880aSopenharmony_ci      # Now hardcode the library paths
1032399ca880aSopenharmony_ci      rpath=
1032499ca880aSopenharmony_ci      hardcode_libdirs=
1032599ca880aSopenharmony_ci      for libdir in $compile_rpath $finalize_rpath; do
1032699ca880aSopenharmony_ci	if test -n "$hardcode_libdir_flag_spec"; then
1032799ca880aSopenharmony_ci	  if test -n "$hardcode_libdir_separator"; then
1032899ca880aSopenharmony_ci	    if test -z "$hardcode_libdirs"; then
1032999ca880aSopenharmony_ci	      hardcode_libdirs=$libdir
1033099ca880aSopenharmony_ci	    else
1033199ca880aSopenharmony_ci	      # Just accumulate the unique libdirs.
1033299ca880aSopenharmony_ci	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
1033399ca880aSopenharmony_ci	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
1033499ca880aSopenharmony_ci		;;
1033599ca880aSopenharmony_ci	      *)
1033699ca880aSopenharmony_ci		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
1033799ca880aSopenharmony_ci		;;
1033899ca880aSopenharmony_ci	      esac
1033999ca880aSopenharmony_ci	    fi
1034099ca880aSopenharmony_ci	  else
1034199ca880aSopenharmony_ci	    eval flag=\"$hardcode_libdir_flag_spec\"
1034299ca880aSopenharmony_ci	    func_append rpath " $flag"
1034399ca880aSopenharmony_ci	  fi
1034499ca880aSopenharmony_ci	elif test -n "$runpath_var"; then
1034599ca880aSopenharmony_ci	  case "$perm_rpath " in
1034699ca880aSopenharmony_ci	  *" $libdir "*) ;;
1034799ca880aSopenharmony_ci	  *) func_append perm_rpath " $libdir" ;;
1034899ca880aSopenharmony_ci	  esac
1034999ca880aSopenharmony_ci	fi
1035099ca880aSopenharmony_ci	case $host in
1035199ca880aSopenharmony_ci	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
1035299ca880aSopenharmony_ci	  testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'`
1035399ca880aSopenharmony_ci	  case :$dllsearchpath: in
1035499ca880aSopenharmony_ci	  *":$libdir:"*) ;;
1035599ca880aSopenharmony_ci	  ::) dllsearchpath=$libdir;;
1035699ca880aSopenharmony_ci	  *) func_append dllsearchpath ":$libdir";;
1035799ca880aSopenharmony_ci	  esac
1035899ca880aSopenharmony_ci	  case :$dllsearchpath: in
1035999ca880aSopenharmony_ci	  *":$testbindir:"*) ;;
1036099ca880aSopenharmony_ci	  ::) dllsearchpath=$testbindir;;
1036199ca880aSopenharmony_ci	  *) func_append dllsearchpath ":$testbindir";;
1036299ca880aSopenharmony_ci	  esac
1036399ca880aSopenharmony_ci	  ;;
1036499ca880aSopenharmony_ci	esac
1036599ca880aSopenharmony_ci      done
1036699ca880aSopenharmony_ci      # Substitute the hardcoded libdirs into the rpath.
1036799ca880aSopenharmony_ci      if test -n "$hardcode_libdir_separator" &&
1036899ca880aSopenharmony_ci	 test -n "$hardcode_libdirs"; then
1036999ca880aSopenharmony_ci	libdir=$hardcode_libdirs
1037099ca880aSopenharmony_ci	eval rpath=\" $hardcode_libdir_flag_spec\"
1037199ca880aSopenharmony_ci      fi
1037299ca880aSopenharmony_ci      compile_rpath=$rpath
1037399ca880aSopenharmony_ci
1037499ca880aSopenharmony_ci      rpath=
1037599ca880aSopenharmony_ci      hardcode_libdirs=
1037699ca880aSopenharmony_ci      for libdir in $finalize_rpath; do
1037799ca880aSopenharmony_ci	if test -n "$hardcode_libdir_flag_spec"; then
1037899ca880aSopenharmony_ci	  if test -n "$hardcode_libdir_separator"; then
1037999ca880aSopenharmony_ci	    if test -z "$hardcode_libdirs"; then
1038099ca880aSopenharmony_ci	      hardcode_libdirs=$libdir
1038199ca880aSopenharmony_ci	    else
1038299ca880aSopenharmony_ci	      # Just accumulate the unique libdirs.
1038399ca880aSopenharmony_ci	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
1038499ca880aSopenharmony_ci	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
1038599ca880aSopenharmony_ci		;;
1038699ca880aSopenharmony_ci	      *)
1038799ca880aSopenharmony_ci		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
1038899ca880aSopenharmony_ci		;;
1038999ca880aSopenharmony_ci	      esac
1039099ca880aSopenharmony_ci	    fi
1039199ca880aSopenharmony_ci	  else
1039299ca880aSopenharmony_ci	    eval flag=\"$hardcode_libdir_flag_spec\"
1039399ca880aSopenharmony_ci	    func_append rpath " $flag"
1039499ca880aSopenharmony_ci	  fi
1039599ca880aSopenharmony_ci	elif test -n "$runpath_var"; then
1039699ca880aSopenharmony_ci	  case "$finalize_perm_rpath " in
1039799ca880aSopenharmony_ci	  *" $libdir "*) ;;
1039899ca880aSopenharmony_ci	  *) func_append finalize_perm_rpath " $libdir" ;;
1039999ca880aSopenharmony_ci	  esac
1040099ca880aSopenharmony_ci	fi
1040199ca880aSopenharmony_ci      done
1040299ca880aSopenharmony_ci      # Substitute the hardcoded libdirs into the rpath.
1040399ca880aSopenharmony_ci      if test -n "$hardcode_libdir_separator" &&
1040499ca880aSopenharmony_ci	 test -n "$hardcode_libdirs"; then
1040599ca880aSopenharmony_ci	libdir=$hardcode_libdirs
1040699ca880aSopenharmony_ci	eval rpath=\" $hardcode_libdir_flag_spec\"
1040799ca880aSopenharmony_ci      fi
1040899ca880aSopenharmony_ci      finalize_rpath=$rpath
1040999ca880aSopenharmony_ci
1041099ca880aSopenharmony_ci      if test -n "$libobjs" && test yes = "$build_old_libs"; then
1041199ca880aSopenharmony_ci	# Transform all the library objects into standard objects.
1041299ca880aSopenharmony_ci	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
1041399ca880aSopenharmony_ci	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
1041499ca880aSopenharmony_ci      fi
1041599ca880aSopenharmony_ci
1041699ca880aSopenharmony_ci      func_generate_dlsyms "$outputname" "@PROGRAM@" false
1041799ca880aSopenharmony_ci
1041899ca880aSopenharmony_ci      # template prelinking step
1041999ca880aSopenharmony_ci      if test -n "$prelink_cmds"; then
1042099ca880aSopenharmony_ci	func_execute_cmds "$prelink_cmds" 'exit $?'
1042199ca880aSopenharmony_ci      fi
1042299ca880aSopenharmony_ci
1042399ca880aSopenharmony_ci      wrappers_required=:
1042499ca880aSopenharmony_ci      case $host in
1042599ca880aSopenharmony_ci      *cegcc* | *mingw32ce*)
1042699ca880aSopenharmony_ci        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
1042799ca880aSopenharmony_ci        wrappers_required=false
1042899ca880aSopenharmony_ci        ;;
1042999ca880aSopenharmony_ci      *cygwin* | *mingw* )
1043099ca880aSopenharmony_ci        test yes = "$build_libtool_libs" || wrappers_required=false
1043199ca880aSopenharmony_ci        ;;
1043299ca880aSopenharmony_ci      *)
1043399ca880aSopenharmony_ci        if test no = "$need_relink" || test yes != "$build_libtool_libs"; then
1043499ca880aSopenharmony_ci          wrappers_required=false
1043599ca880aSopenharmony_ci        fi
1043699ca880aSopenharmony_ci        ;;
1043799ca880aSopenharmony_ci      esac
1043899ca880aSopenharmony_ci      $wrappers_required || {
1043999ca880aSopenharmony_ci	# Replace the output file specification.
1044099ca880aSopenharmony_ci	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
1044199ca880aSopenharmony_ci	link_command=$compile_command$compile_rpath
1044299ca880aSopenharmony_ci
1044399ca880aSopenharmony_ci	# We have no uninstalled library dependencies, so finalize right now.
1044499ca880aSopenharmony_ci	exit_status=0
1044599ca880aSopenharmony_ci	func_show_eval "$link_command" 'exit_status=$?'
1044699ca880aSopenharmony_ci
1044799ca880aSopenharmony_ci	if test -n "$postlink_cmds"; then
1044899ca880aSopenharmony_ci	  func_to_tool_file "$output"
1044999ca880aSopenharmony_ci	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
1045099ca880aSopenharmony_ci	  func_execute_cmds "$postlink_cmds" 'exit $?'
1045199ca880aSopenharmony_ci	fi
1045299ca880aSopenharmony_ci
1045399ca880aSopenharmony_ci	# Delete the generated files.
1045499ca880aSopenharmony_ci	if test -f "$output_objdir/${outputname}S.$objext"; then
1045599ca880aSopenharmony_ci	  func_show_eval '$RM "$output_objdir/${outputname}S.$objext"'
1045699ca880aSopenharmony_ci	fi
1045799ca880aSopenharmony_ci
1045899ca880aSopenharmony_ci	exit $exit_status
1045999ca880aSopenharmony_ci      }
1046099ca880aSopenharmony_ci
1046199ca880aSopenharmony_ci      if test -n "$compile_shlibpath$finalize_shlibpath"; then
1046299ca880aSopenharmony_ci	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
1046399ca880aSopenharmony_ci      fi
1046499ca880aSopenharmony_ci      if test -n "$finalize_shlibpath"; then
1046599ca880aSopenharmony_ci	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
1046699ca880aSopenharmony_ci      fi
1046799ca880aSopenharmony_ci
1046899ca880aSopenharmony_ci      compile_var=
1046999ca880aSopenharmony_ci      finalize_var=
1047099ca880aSopenharmony_ci      if test -n "$runpath_var"; then
1047199ca880aSopenharmony_ci	if test -n "$perm_rpath"; then
1047299ca880aSopenharmony_ci	  # We should set the runpath_var.
1047399ca880aSopenharmony_ci	  rpath=
1047499ca880aSopenharmony_ci	  for dir in $perm_rpath; do
1047599ca880aSopenharmony_ci	    func_append rpath "$dir:"
1047699ca880aSopenharmony_ci	  done
1047799ca880aSopenharmony_ci	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
1047899ca880aSopenharmony_ci	fi
1047999ca880aSopenharmony_ci	if test -n "$finalize_perm_rpath"; then
1048099ca880aSopenharmony_ci	  # We should set the runpath_var.
1048199ca880aSopenharmony_ci	  rpath=
1048299ca880aSopenharmony_ci	  for dir in $finalize_perm_rpath; do
1048399ca880aSopenharmony_ci	    func_append rpath "$dir:"
1048499ca880aSopenharmony_ci	  done
1048599ca880aSopenharmony_ci	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
1048699ca880aSopenharmony_ci	fi
1048799ca880aSopenharmony_ci      fi
1048899ca880aSopenharmony_ci
1048999ca880aSopenharmony_ci      if test yes = "$no_install"; then
1049099ca880aSopenharmony_ci	# We don't need to create a wrapper script.
1049199ca880aSopenharmony_ci	link_command=$compile_var$compile_command$compile_rpath
1049299ca880aSopenharmony_ci	# Replace the output file specification.
1049399ca880aSopenharmony_ci	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
1049499ca880aSopenharmony_ci	# Delete the old output file.
1049599ca880aSopenharmony_ci	$opt_dry_run || $RM $output
1049699ca880aSopenharmony_ci	# Link the executable and exit
1049799ca880aSopenharmony_ci	func_show_eval "$link_command" 'exit $?'
1049899ca880aSopenharmony_ci
1049999ca880aSopenharmony_ci	if test -n "$postlink_cmds"; then
1050099ca880aSopenharmony_ci	  func_to_tool_file "$output"
1050199ca880aSopenharmony_ci	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
1050299ca880aSopenharmony_ci	  func_execute_cmds "$postlink_cmds" 'exit $?'
1050399ca880aSopenharmony_ci	fi
1050499ca880aSopenharmony_ci
1050599ca880aSopenharmony_ci	exit $EXIT_SUCCESS
1050699ca880aSopenharmony_ci      fi
1050799ca880aSopenharmony_ci
1050899ca880aSopenharmony_ci      case $hardcode_action,$fast_install in
1050999ca880aSopenharmony_ci        relink,*)
1051099ca880aSopenharmony_ci	  # Fast installation is not supported
1051199ca880aSopenharmony_ci	  link_command=$compile_var$compile_command$compile_rpath
1051299ca880aSopenharmony_ci	  relink_command=$finalize_var$finalize_command$finalize_rpath
1051399ca880aSopenharmony_ci
1051499ca880aSopenharmony_ci	  func_warning "this platform does not like uninstalled shared libraries"
1051599ca880aSopenharmony_ci	  func_warning "'$output' will be relinked during installation"
1051699ca880aSopenharmony_ci	  ;;
1051799ca880aSopenharmony_ci        *,yes)
1051899ca880aSopenharmony_ci	  link_command=$finalize_var$compile_command$finalize_rpath
1051999ca880aSopenharmony_ci	  relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
1052099ca880aSopenharmony_ci          ;;
1052199ca880aSopenharmony_ci	*,no)
1052299ca880aSopenharmony_ci	  link_command=$compile_var$compile_command$compile_rpath
1052399ca880aSopenharmony_ci	  relink_command=$finalize_var$finalize_command$finalize_rpath
1052499ca880aSopenharmony_ci          ;;
1052599ca880aSopenharmony_ci	*,needless)
1052699ca880aSopenharmony_ci	  link_command=$finalize_var$compile_command$finalize_rpath
1052799ca880aSopenharmony_ci	  relink_command=
1052899ca880aSopenharmony_ci          ;;
1052999ca880aSopenharmony_ci      esac
1053099ca880aSopenharmony_ci
1053199ca880aSopenharmony_ci      # Replace the output file specification.
1053299ca880aSopenharmony_ci      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
1053399ca880aSopenharmony_ci
1053499ca880aSopenharmony_ci      # Delete the old output files.
1053599ca880aSopenharmony_ci      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
1053699ca880aSopenharmony_ci
1053799ca880aSopenharmony_ci      func_show_eval "$link_command" 'exit $?'
1053899ca880aSopenharmony_ci
1053999ca880aSopenharmony_ci      if test -n "$postlink_cmds"; then
1054099ca880aSopenharmony_ci	func_to_tool_file "$output_objdir/$outputname"
1054199ca880aSopenharmony_ci	postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
1054299ca880aSopenharmony_ci	func_execute_cmds "$postlink_cmds" 'exit $?'
1054399ca880aSopenharmony_ci      fi
1054499ca880aSopenharmony_ci
1054599ca880aSopenharmony_ci      # Now create the wrapper script.
1054699ca880aSopenharmony_ci      func_verbose "creating $output"
1054799ca880aSopenharmony_ci
1054899ca880aSopenharmony_ci      # Quote the relink command for shipping.
1054999ca880aSopenharmony_ci      if test -n "$relink_command"; then
1055099ca880aSopenharmony_ci	# Preserve any variables that may affect compiler behavior
1055199ca880aSopenharmony_ci	for var in $variables_saved_for_relink; do
1055299ca880aSopenharmony_ci	  if eval test -z \"\${$var+set}\"; then
1055399ca880aSopenharmony_ci	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
1055499ca880aSopenharmony_ci	  elif eval var_value=\$$var; test -z "$var_value"; then
1055599ca880aSopenharmony_ci	    relink_command="$var=; export $var; $relink_command"
1055699ca880aSopenharmony_ci	  else
1055799ca880aSopenharmony_ci	    func_quote_for_eval "$var_value"
1055899ca880aSopenharmony_ci	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
1055999ca880aSopenharmony_ci	  fi
1056099ca880aSopenharmony_ci	done
1056199ca880aSopenharmony_ci	func_quote "(cd `pwd`; $relink_command)"
1056299ca880aSopenharmony_ci	relink_command=$func_quote_result
1056399ca880aSopenharmony_ci      fi
1056499ca880aSopenharmony_ci
1056599ca880aSopenharmony_ci      # Only actually do things if not in dry run mode.
1056699ca880aSopenharmony_ci      $opt_dry_run || {
1056799ca880aSopenharmony_ci	# win32 will think the script is a binary if it has
1056899ca880aSopenharmony_ci	# a .exe suffix, so we strip it off here.
1056999ca880aSopenharmony_ci	case $output in
1057099ca880aSopenharmony_ci	  *.exe) func_stripname '' '.exe' "$output"
1057199ca880aSopenharmony_ci	         output=$func_stripname_result ;;
1057299ca880aSopenharmony_ci	esac
1057399ca880aSopenharmony_ci	# test for cygwin because mv fails w/o .exe extensions
1057499ca880aSopenharmony_ci	case $host in
1057599ca880aSopenharmony_ci	  *cygwin*)
1057699ca880aSopenharmony_ci	    exeext=.exe
1057799ca880aSopenharmony_ci	    func_stripname '' '.exe' "$outputname"
1057899ca880aSopenharmony_ci	    outputname=$func_stripname_result ;;
1057999ca880aSopenharmony_ci	  *) exeext= ;;
1058099ca880aSopenharmony_ci	esac
1058199ca880aSopenharmony_ci	case $host in
1058299ca880aSopenharmony_ci	  *cygwin* | *mingw* )
1058399ca880aSopenharmony_ci	    func_dirname_and_basename "$output" "" "."
1058499ca880aSopenharmony_ci	    output_name=$func_basename_result
1058599ca880aSopenharmony_ci	    output_path=$func_dirname_result
1058699ca880aSopenharmony_ci	    cwrappersource=$output_path/$objdir/lt-$output_name.c
1058799ca880aSopenharmony_ci	    cwrapper=$output_path/$output_name.exe
1058899ca880aSopenharmony_ci	    $RM $cwrappersource $cwrapper
1058999ca880aSopenharmony_ci	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
1059099ca880aSopenharmony_ci
1059199ca880aSopenharmony_ci	    func_emit_cwrapperexe_src > $cwrappersource
1059299ca880aSopenharmony_ci
1059399ca880aSopenharmony_ci	    # The wrapper executable is built using the $host compiler,
1059499ca880aSopenharmony_ci	    # because it contains $host paths and files. If cross-
1059599ca880aSopenharmony_ci	    # compiling, it, like the target executable, must be
1059699ca880aSopenharmony_ci	    # executed on the $host or under an emulation environment.
1059799ca880aSopenharmony_ci	    $opt_dry_run || {
1059899ca880aSopenharmony_ci	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
1059999ca880aSopenharmony_ci	      $STRIP $cwrapper
1060099ca880aSopenharmony_ci	    }
1060199ca880aSopenharmony_ci
1060299ca880aSopenharmony_ci	    # Now, create the wrapper script for func_source use:
1060399ca880aSopenharmony_ci	    func_ltwrapper_scriptname $cwrapper
1060499ca880aSopenharmony_ci	    $RM $func_ltwrapper_scriptname_result
1060599ca880aSopenharmony_ci	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
1060699ca880aSopenharmony_ci	    $opt_dry_run || {
1060799ca880aSopenharmony_ci	      # note: this script will not be executed, so do not chmod.
1060899ca880aSopenharmony_ci	      if test "x$build" = "x$host"; then
1060999ca880aSopenharmony_ci		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
1061099ca880aSopenharmony_ci	      else
1061199ca880aSopenharmony_ci		func_emit_wrapper no > $func_ltwrapper_scriptname_result
1061299ca880aSopenharmony_ci	      fi
1061399ca880aSopenharmony_ci	    }
1061499ca880aSopenharmony_ci	  ;;
1061599ca880aSopenharmony_ci	  * )
1061699ca880aSopenharmony_ci	    $RM $output
1061799ca880aSopenharmony_ci	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
1061899ca880aSopenharmony_ci
1061999ca880aSopenharmony_ci	    func_emit_wrapper no > $output
1062099ca880aSopenharmony_ci	    chmod +x $output
1062199ca880aSopenharmony_ci	  ;;
1062299ca880aSopenharmony_ci	esac
1062399ca880aSopenharmony_ci      }
1062499ca880aSopenharmony_ci      exit $EXIT_SUCCESS
1062599ca880aSopenharmony_ci      ;;
1062699ca880aSopenharmony_ci    esac
1062799ca880aSopenharmony_ci
1062899ca880aSopenharmony_ci    # See if we need to build an old-fashioned archive.
1062999ca880aSopenharmony_ci    for oldlib in $oldlibs; do
1063099ca880aSopenharmony_ci
1063199ca880aSopenharmony_ci      case $build_libtool_libs in
1063299ca880aSopenharmony_ci        convenience)
1063399ca880aSopenharmony_ci	  oldobjs="$libobjs_save $symfileobj"
1063499ca880aSopenharmony_ci	  addlibs=$convenience
1063599ca880aSopenharmony_ci	  build_libtool_libs=no
1063699ca880aSopenharmony_ci	  ;;
1063799ca880aSopenharmony_ci	module)
1063899ca880aSopenharmony_ci	  oldobjs=$libobjs_save
1063999ca880aSopenharmony_ci	  addlibs=$old_convenience
1064099ca880aSopenharmony_ci	  build_libtool_libs=no
1064199ca880aSopenharmony_ci          ;;
1064299ca880aSopenharmony_ci	*)
1064399ca880aSopenharmony_ci	  oldobjs="$old_deplibs $non_pic_objects"
1064499ca880aSopenharmony_ci	  $preload && test -f "$symfileobj" \
1064599ca880aSopenharmony_ci	    && func_append oldobjs " $symfileobj"
1064699ca880aSopenharmony_ci	  addlibs=$old_convenience
1064799ca880aSopenharmony_ci	  ;;
1064899ca880aSopenharmony_ci      esac
1064999ca880aSopenharmony_ci
1065099ca880aSopenharmony_ci      if test -n "$addlibs"; then
1065199ca880aSopenharmony_ci	gentop=$output_objdir/${outputname}x
1065299ca880aSopenharmony_ci	func_append generated " $gentop"
1065399ca880aSopenharmony_ci
1065499ca880aSopenharmony_ci	func_extract_archives $gentop $addlibs
1065599ca880aSopenharmony_ci	func_append oldobjs " $func_extract_archives_result"
1065699ca880aSopenharmony_ci      fi
1065799ca880aSopenharmony_ci
1065899ca880aSopenharmony_ci      # Do each command in the archive commands.
1065999ca880aSopenharmony_ci      if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then
1066099ca880aSopenharmony_ci	cmds=$old_archive_from_new_cmds
1066199ca880aSopenharmony_ci      else
1066299ca880aSopenharmony_ci
1066399ca880aSopenharmony_ci	# Add any objects from preloaded convenience libraries
1066499ca880aSopenharmony_ci	if test -n "$dlprefiles"; then
1066599ca880aSopenharmony_ci	  gentop=$output_objdir/${outputname}x
1066699ca880aSopenharmony_ci	  func_append generated " $gentop"
1066799ca880aSopenharmony_ci
1066899ca880aSopenharmony_ci	  func_extract_archives $gentop $dlprefiles
1066999ca880aSopenharmony_ci	  func_append oldobjs " $func_extract_archives_result"
1067099ca880aSopenharmony_ci	fi
1067199ca880aSopenharmony_ci
1067299ca880aSopenharmony_ci	# POSIX demands no paths to be encoded in archives.  We have
1067399ca880aSopenharmony_ci	# to avoid creating archives with duplicate basenames if we
1067499ca880aSopenharmony_ci	# might have to extract them afterwards, e.g., when creating a
1067599ca880aSopenharmony_ci	# static archive out of a convenience library, or when linking
1067699ca880aSopenharmony_ci	# the entirety of a libtool archive into another (currently
1067799ca880aSopenharmony_ci	# not supported by libtool).
1067899ca880aSopenharmony_ci	if (for obj in $oldobjs
1067999ca880aSopenharmony_ci	    do
1068099ca880aSopenharmony_ci	      func_basename "$obj"
1068199ca880aSopenharmony_ci	      $ECHO "$func_basename_result"
1068299ca880aSopenharmony_ci	    done | sort | sort -uc >/dev/null 2>&1); then
1068399ca880aSopenharmony_ci	  :
1068499ca880aSopenharmony_ci	else
1068599ca880aSopenharmony_ci	  echo "copying selected object files to avoid basename conflicts..."
1068699ca880aSopenharmony_ci	  gentop=$output_objdir/${outputname}x
1068799ca880aSopenharmony_ci	  func_append generated " $gentop"
1068899ca880aSopenharmony_ci	  func_mkdir_p "$gentop"
1068999ca880aSopenharmony_ci	  save_oldobjs=$oldobjs
1069099ca880aSopenharmony_ci	  oldobjs=
1069199ca880aSopenharmony_ci	  counter=1
1069299ca880aSopenharmony_ci	  for obj in $save_oldobjs
1069399ca880aSopenharmony_ci	  do
1069499ca880aSopenharmony_ci	    func_basename "$obj"
1069599ca880aSopenharmony_ci	    objbase=$func_basename_result
1069699ca880aSopenharmony_ci	    case " $oldobjs " in
1069799ca880aSopenharmony_ci	    " ") oldobjs=$obj ;;
1069899ca880aSopenharmony_ci	    *[\ /]"$objbase "*)
1069999ca880aSopenharmony_ci	      while :; do
1070099ca880aSopenharmony_ci		# Make sure we don't pick an alternate name that also
1070199ca880aSopenharmony_ci		# overlaps.
1070299ca880aSopenharmony_ci		newobj=lt$counter-$objbase
1070399ca880aSopenharmony_ci		func_arith $counter + 1
1070499ca880aSopenharmony_ci		counter=$func_arith_result
1070599ca880aSopenharmony_ci		case " $oldobjs " in
1070699ca880aSopenharmony_ci		*[\ /]"$newobj "*) ;;
1070799ca880aSopenharmony_ci		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
1070899ca880aSopenharmony_ci		esac
1070999ca880aSopenharmony_ci	      done
1071099ca880aSopenharmony_ci	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
1071199ca880aSopenharmony_ci	      func_append oldobjs " $gentop/$newobj"
1071299ca880aSopenharmony_ci	      ;;
1071399ca880aSopenharmony_ci	    *) func_append oldobjs " $obj" ;;
1071499ca880aSopenharmony_ci	    esac
1071599ca880aSopenharmony_ci	  done
1071699ca880aSopenharmony_ci	fi
1071799ca880aSopenharmony_ci	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
1071899ca880aSopenharmony_ci	tool_oldlib=$func_to_tool_file_result
1071999ca880aSopenharmony_ci	eval cmds=\"$old_archive_cmds\"
1072099ca880aSopenharmony_ci
1072199ca880aSopenharmony_ci	func_len " $cmds"
1072299ca880aSopenharmony_ci	len=$func_len_result
1072399ca880aSopenharmony_ci	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
1072499ca880aSopenharmony_ci	  cmds=$old_archive_cmds
1072599ca880aSopenharmony_ci	elif test -n "$archiver_list_spec"; then
1072699ca880aSopenharmony_ci	  func_verbose "using command file archive linking..."
1072799ca880aSopenharmony_ci	  for obj in $oldobjs
1072899ca880aSopenharmony_ci	  do
1072999ca880aSopenharmony_ci	    func_to_tool_file "$obj"
1073099ca880aSopenharmony_ci	    $ECHO "$func_to_tool_file_result"
1073199ca880aSopenharmony_ci	  done > $output_objdir/$libname.libcmd
1073299ca880aSopenharmony_ci	  func_to_tool_file "$output_objdir/$libname.libcmd"
1073399ca880aSopenharmony_ci	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
1073499ca880aSopenharmony_ci	  cmds=$old_archive_cmds
1073599ca880aSopenharmony_ci	else
1073699ca880aSopenharmony_ci	  # the command line is too long to link in one step, link in parts
1073799ca880aSopenharmony_ci	  func_verbose "using piecewise archive linking..."
1073899ca880aSopenharmony_ci	  save_RANLIB=$RANLIB
1073999ca880aSopenharmony_ci	  RANLIB=:
1074099ca880aSopenharmony_ci	  objlist=
1074199ca880aSopenharmony_ci	  concat_cmds=
1074299ca880aSopenharmony_ci	  save_oldobjs=$oldobjs
1074399ca880aSopenharmony_ci	  oldobjs=
1074499ca880aSopenharmony_ci	  # Is there a better way of finding the last object in the list?
1074599ca880aSopenharmony_ci	  for obj in $save_oldobjs
1074699ca880aSopenharmony_ci	  do
1074799ca880aSopenharmony_ci	    last_oldobj=$obj
1074899ca880aSopenharmony_ci	  done
1074999ca880aSopenharmony_ci	  eval test_cmds=\"$old_archive_cmds\"
1075099ca880aSopenharmony_ci	  func_len " $test_cmds"
1075199ca880aSopenharmony_ci	  len0=$func_len_result
1075299ca880aSopenharmony_ci	  len=$len0
1075399ca880aSopenharmony_ci	  for obj in $save_oldobjs
1075499ca880aSopenharmony_ci	  do
1075599ca880aSopenharmony_ci	    func_len " $obj"
1075699ca880aSopenharmony_ci	    func_arith $len + $func_len_result
1075799ca880aSopenharmony_ci	    len=$func_arith_result
1075899ca880aSopenharmony_ci	    func_append objlist " $obj"
1075999ca880aSopenharmony_ci	    if test "$len" -lt "$max_cmd_len"; then
1076099ca880aSopenharmony_ci	      :
1076199ca880aSopenharmony_ci	    else
1076299ca880aSopenharmony_ci	      # the above command should be used before it gets too long
1076399ca880aSopenharmony_ci	      oldobjs=$objlist
1076499ca880aSopenharmony_ci	      if test "$obj" = "$last_oldobj"; then
1076599ca880aSopenharmony_ci		RANLIB=$save_RANLIB
1076699ca880aSopenharmony_ci	      fi
1076799ca880aSopenharmony_ci	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
1076899ca880aSopenharmony_ci	      eval concat_cmds=\"\$concat_cmds$old_archive_cmds\"
1076999ca880aSopenharmony_ci	      objlist=
1077099ca880aSopenharmony_ci	      len=$len0
1077199ca880aSopenharmony_ci	    fi
1077299ca880aSopenharmony_ci	  done
1077399ca880aSopenharmony_ci	  RANLIB=$save_RANLIB
1077499ca880aSopenharmony_ci	  oldobjs=$objlist
1077599ca880aSopenharmony_ci	  if test -z "$oldobjs"; then
1077699ca880aSopenharmony_ci	    eval cmds=\"\$concat_cmds\"
1077799ca880aSopenharmony_ci	  else
1077899ca880aSopenharmony_ci	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
1077999ca880aSopenharmony_ci	  fi
1078099ca880aSopenharmony_ci	fi
1078199ca880aSopenharmony_ci      fi
1078299ca880aSopenharmony_ci      func_execute_cmds "$cmds" 'exit $?'
1078399ca880aSopenharmony_ci    done
1078499ca880aSopenharmony_ci
1078599ca880aSopenharmony_ci    test -n "$generated" && \
1078699ca880aSopenharmony_ci      func_show_eval "${RM}r$generated"
1078799ca880aSopenharmony_ci
1078899ca880aSopenharmony_ci    # Now create the libtool archive.
1078999ca880aSopenharmony_ci    case $output in
1079099ca880aSopenharmony_ci    *.la)
1079199ca880aSopenharmony_ci      old_library=
1079299ca880aSopenharmony_ci      test yes = "$build_old_libs" && old_library=$libname.$libext
1079399ca880aSopenharmony_ci      func_verbose "creating $output"
1079499ca880aSopenharmony_ci
1079599ca880aSopenharmony_ci      # Preserve any variables that may affect compiler behavior
1079699ca880aSopenharmony_ci      for var in $variables_saved_for_relink; do
1079799ca880aSopenharmony_ci	if eval test -z \"\${$var+set}\"; then
1079899ca880aSopenharmony_ci	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
1079999ca880aSopenharmony_ci	elif eval var_value=\$$var; test -z "$var_value"; then
1080099ca880aSopenharmony_ci	  relink_command="$var=; export $var; $relink_command"
1080199ca880aSopenharmony_ci	else
1080299ca880aSopenharmony_ci	  func_quote_for_eval "$var_value"
1080399ca880aSopenharmony_ci	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
1080499ca880aSopenharmony_ci	fi
1080599ca880aSopenharmony_ci      done
1080699ca880aSopenharmony_ci      # Quote the link command for shipping.
1080799ca880aSopenharmony_ci      relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
1080899ca880aSopenharmony_ci      func_quote "$relink_command"
1080999ca880aSopenharmony_ci      relink_command=$func_quote_result
1081099ca880aSopenharmony_ci      if test yes = "$hardcode_automatic"; then
1081199ca880aSopenharmony_ci	relink_command=
1081299ca880aSopenharmony_ci      fi
1081399ca880aSopenharmony_ci
1081499ca880aSopenharmony_ci      # Only create the output if not a dry run.
1081599ca880aSopenharmony_ci      $opt_dry_run || {
1081699ca880aSopenharmony_ci	for installed in no yes; do
1081799ca880aSopenharmony_ci	  if test yes = "$installed"; then
1081899ca880aSopenharmony_ci	    if test -z "$install_libdir"; then
1081999ca880aSopenharmony_ci	      break
1082099ca880aSopenharmony_ci	    fi
1082199ca880aSopenharmony_ci	    output=$output_objdir/${outputname}i
1082299ca880aSopenharmony_ci	    # Replace all uninstalled libtool libraries with the installed ones
1082399ca880aSopenharmony_ci	    newdependency_libs=
1082499ca880aSopenharmony_ci	    for deplib in $dependency_libs; do
1082599ca880aSopenharmony_ci	      case $deplib in
1082699ca880aSopenharmony_ci	      *.la)
1082799ca880aSopenharmony_ci		func_basename "$deplib"
1082899ca880aSopenharmony_ci		name=$func_basename_result
1082999ca880aSopenharmony_ci		func_resolve_sysroot "$deplib"
1083099ca880aSopenharmony_ci		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
1083199ca880aSopenharmony_ci		test -z "$libdir" && \
1083299ca880aSopenharmony_ci		  func_fatal_error "'$deplib' is not a valid libtool archive"
1083399ca880aSopenharmony_ci		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
1083499ca880aSopenharmony_ci		;;
1083599ca880aSopenharmony_ci	      -L*)
1083699ca880aSopenharmony_ci		func_stripname -L '' "$deplib"
1083799ca880aSopenharmony_ci		func_replace_sysroot "$func_stripname_result"
1083899ca880aSopenharmony_ci		func_append newdependency_libs " -L$func_replace_sysroot_result"
1083999ca880aSopenharmony_ci		;;
1084099ca880aSopenharmony_ci	      -R*)
1084199ca880aSopenharmony_ci		func_stripname -R '' "$deplib"
1084299ca880aSopenharmony_ci		func_replace_sysroot "$func_stripname_result"
1084399ca880aSopenharmony_ci		func_append newdependency_libs " -R$func_replace_sysroot_result"
1084499ca880aSopenharmony_ci		;;
1084599ca880aSopenharmony_ci	      *) func_append newdependency_libs " $deplib" ;;
1084699ca880aSopenharmony_ci	      esac
1084799ca880aSopenharmony_ci	    done
1084899ca880aSopenharmony_ci	    dependency_libs=$newdependency_libs
1084999ca880aSopenharmony_ci	    newdlfiles=
1085099ca880aSopenharmony_ci
1085199ca880aSopenharmony_ci	    for lib in $dlfiles; do
1085299ca880aSopenharmony_ci	      case $lib in
1085399ca880aSopenharmony_ci	      *.la)
1085499ca880aSopenharmony_ci	        func_basename "$lib"
1085599ca880aSopenharmony_ci		name=$func_basename_result
1085699ca880aSopenharmony_ci		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
1085799ca880aSopenharmony_ci		test -z "$libdir" && \
1085899ca880aSopenharmony_ci		  func_fatal_error "'$lib' is not a valid libtool archive"
1085999ca880aSopenharmony_ci		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
1086099ca880aSopenharmony_ci		;;
1086199ca880aSopenharmony_ci	      *) func_append newdlfiles " $lib" ;;
1086299ca880aSopenharmony_ci	      esac
1086399ca880aSopenharmony_ci	    done
1086499ca880aSopenharmony_ci	    dlfiles=$newdlfiles
1086599ca880aSopenharmony_ci	    newdlprefiles=
1086699ca880aSopenharmony_ci	    for lib in $dlprefiles; do
1086799ca880aSopenharmony_ci	      case $lib in
1086899ca880aSopenharmony_ci	      *.la)
1086999ca880aSopenharmony_ci		# Only pass preopened files to the pseudo-archive (for
1087099ca880aSopenharmony_ci		# eventual linking with the app. that links it) if we
1087199ca880aSopenharmony_ci		# didn't already link the preopened objects directly into
1087299ca880aSopenharmony_ci		# the library:
1087399ca880aSopenharmony_ci		func_basename "$lib"
1087499ca880aSopenharmony_ci		name=$func_basename_result
1087599ca880aSopenharmony_ci		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
1087699ca880aSopenharmony_ci		test -z "$libdir" && \
1087799ca880aSopenharmony_ci		  func_fatal_error "'$lib' is not a valid libtool archive"
1087899ca880aSopenharmony_ci		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
1087999ca880aSopenharmony_ci		;;
1088099ca880aSopenharmony_ci	      esac
1088199ca880aSopenharmony_ci	    done
1088299ca880aSopenharmony_ci	    dlprefiles=$newdlprefiles
1088399ca880aSopenharmony_ci	  else
1088499ca880aSopenharmony_ci	    newdlfiles=
1088599ca880aSopenharmony_ci	    for lib in $dlfiles; do
1088699ca880aSopenharmony_ci	      case $lib in
1088799ca880aSopenharmony_ci		[\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
1088899ca880aSopenharmony_ci		*) abs=`pwd`"/$lib" ;;
1088999ca880aSopenharmony_ci	      esac
1089099ca880aSopenharmony_ci	      func_append newdlfiles " $abs"
1089199ca880aSopenharmony_ci	    done
1089299ca880aSopenharmony_ci	    dlfiles=$newdlfiles
1089399ca880aSopenharmony_ci	    newdlprefiles=
1089499ca880aSopenharmony_ci	    for lib in $dlprefiles; do
1089599ca880aSopenharmony_ci	      case $lib in
1089699ca880aSopenharmony_ci		[\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
1089799ca880aSopenharmony_ci		*) abs=`pwd`"/$lib" ;;
1089899ca880aSopenharmony_ci	      esac
1089999ca880aSopenharmony_ci	      func_append newdlprefiles " $abs"
1090099ca880aSopenharmony_ci	    done
1090199ca880aSopenharmony_ci	    dlprefiles=$newdlprefiles
1090299ca880aSopenharmony_ci	  fi
1090399ca880aSopenharmony_ci	  $RM $output
1090499ca880aSopenharmony_ci	  # place dlname in correct position for cygwin
1090599ca880aSopenharmony_ci	  # In fact, it would be nice if we could use this code for all target
1090699ca880aSopenharmony_ci	  # systems that can't hard-code library paths into their executables
1090799ca880aSopenharmony_ci	  # and that have no shared library path variable independent of PATH,
1090899ca880aSopenharmony_ci	  # but it turns out we can't easily determine that from inspecting
1090999ca880aSopenharmony_ci	  # libtool variables, so we have to hard-code the OSs to which it
1091099ca880aSopenharmony_ci	  # applies here; at the moment, that means platforms that use the PE
1091199ca880aSopenharmony_ci	  # object format with DLL files.  See the long comment at the top of
1091299ca880aSopenharmony_ci	  # tests/bindir.at for full details.
1091399ca880aSopenharmony_ci	  tdlname=$dlname
1091499ca880aSopenharmony_ci	  case $host,$output,$installed,$module,$dlname in
1091599ca880aSopenharmony_ci	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
1091699ca880aSopenharmony_ci	      # If a -bindir argument was supplied, place the dll there.
1091799ca880aSopenharmony_ci	      if test -n "$bindir"; then
1091899ca880aSopenharmony_ci		func_relative_path "$install_libdir" "$bindir"
1091999ca880aSopenharmony_ci		tdlname=$func_relative_path_result/$dlname
1092099ca880aSopenharmony_ci	      else
1092199ca880aSopenharmony_ci		# Otherwise fall back on heuristic.
1092299ca880aSopenharmony_ci		tdlname=../bin/$dlname
1092399ca880aSopenharmony_ci	      fi
1092499ca880aSopenharmony_ci	      ;;
1092599ca880aSopenharmony_ci	  esac
1092699ca880aSopenharmony_ci	  $ECHO > $output "\
1092799ca880aSopenharmony_ci# $outputname - a libtool library file
1092899ca880aSopenharmony_ci# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
1092999ca880aSopenharmony_ci#
1093099ca880aSopenharmony_ci# Please DO NOT delete this file!
1093199ca880aSopenharmony_ci# It is necessary for linking the library.
1093299ca880aSopenharmony_ci
1093399ca880aSopenharmony_ci# The name that we can dlopen(3).
1093499ca880aSopenharmony_cidlname='$tdlname'
1093599ca880aSopenharmony_ci
1093699ca880aSopenharmony_ci# Names of this library.
1093799ca880aSopenharmony_cilibrary_names='$library_names'
1093899ca880aSopenharmony_ci
1093999ca880aSopenharmony_ci# The name of the static archive.
1094099ca880aSopenharmony_ciold_library='$old_library'
1094199ca880aSopenharmony_ci
1094299ca880aSopenharmony_ci# Linker flags that cannot go in dependency_libs.
1094399ca880aSopenharmony_ciinherited_linker_flags='$new_inherited_linker_flags'
1094499ca880aSopenharmony_ci
1094599ca880aSopenharmony_ci# Libraries that this one depends upon.
1094699ca880aSopenharmony_cidependency_libs='$dependency_libs'
1094799ca880aSopenharmony_ci
1094899ca880aSopenharmony_ci# Names of additional weak libraries provided by this library
1094999ca880aSopenharmony_ciweak_library_names='$weak_libs'
1095099ca880aSopenharmony_ci
1095199ca880aSopenharmony_ci# Version information for $libname.
1095299ca880aSopenharmony_cicurrent=$current
1095399ca880aSopenharmony_ciage=$age
1095499ca880aSopenharmony_cirevision=$revision
1095599ca880aSopenharmony_ci
1095699ca880aSopenharmony_ci# Is this an already installed library?
1095799ca880aSopenharmony_ciinstalled=$installed
1095899ca880aSopenharmony_ci
1095999ca880aSopenharmony_ci# Should we warn about portability when linking against -modules?
1096099ca880aSopenharmony_cishouldnotlink=$module
1096199ca880aSopenharmony_ci
1096299ca880aSopenharmony_ci# Files to dlopen/dlpreopen
1096399ca880aSopenharmony_cidlopen='$dlfiles'
1096499ca880aSopenharmony_cidlpreopen='$dlprefiles'
1096599ca880aSopenharmony_ci
1096699ca880aSopenharmony_ci# Directory that this library needs to be installed in:
1096799ca880aSopenharmony_cilibdir='$install_libdir'"
1096899ca880aSopenharmony_ci	  if test no,yes = "$installed,$need_relink"; then
1096999ca880aSopenharmony_ci	    $ECHO >> $output "\
1097099ca880aSopenharmony_cirelink_command=\"$relink_command\""
1097199ca880aSopenharmony_ci	  fi
1097299ca880aSopenharmony_ci	done
1097399ca880aSopenharmony_ci      }
1097499ca880aSopenharmony_ci
1097599ca880aSopenharmony_ci      # Do a symbolic link so that the libtool archive can be found in
1097699ca880aSopenharmony_ci      # LD_LIBRARY_PATH before the program is installed.
1097799ca880aSopenharmony_ci      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
1097899ca880aSopenharmony_ci      ;;
1097999ca880aSopenharmony_ci    esac
1098099ca880aSopenharmony_ci    exit $EXIT_SUCCESS
1098199ca880aSopenharmony_ci}
1098299ca880aSopenharmony_ci
1098399ca880aSopenharmony_ciif test link = "$opt_mode" || test relink = "$opt_mode"; then
1098499ca880aSopenharmony_ci  func_mode_link ${1+"$@"}
1098599ca880aSopenharmony_cifi
1098699ca880aSopenharmony_ci
1098799ca880aSopenharmony_ci
1098899ca880aSopenharmony_ci# func_mode_uninstall arg...
1098999ca880aSopenharmony_cifunc_mode_uninstall ()
1099099ca880aSopenharmony_ci{
1099199ca880aSopenharmony_ci    $debug_cmd
1099299ca880aSopenharmony_ci
1099399ca880aSopenharmony_ci    RM=$nonopt
1099499ca880aSopenharmony_ci    files=
1099599ca880aSopenharmony_ci    rmforce=false
1099699ca880aSopenharmony_ci    exit_status=0
1099799ca880aSopenharmony_ci
1099899ca880aSopenharmony_ci    # This variable tells wrapper scripts just to set variables rather
1099999ca880aSopenharmony_ci    # than running their programs.
1100099ca880aSopenharmony_ci    libtool_install_magic=$magic
1100199ca880aSopenharmony_ci
1100299ca880aSopenharmony_ci    for arg
1100399ca880aSopenharmony_ci    do
1100499ca880aSopenharmony_ci      case $arg in
1100599ca880aSopenharmony_ci      -f) func_append RM " $arg"; rmforce=: ;;
1100699ca880aSopenharmony_ci      -*) func_append RM " $arg" ;;
1100799ca880aSopenharmony_ci      *) func_append files " $arg" ;;
1100899ca880aSopenharmony_ci      esac
1100999ca880aSopenharmony_ci    done
1101099ca880aSopenharmony_ci
1101199ca880aSopenharmony_ci    test -z "$RM" && \
1101299ca880aSopenharmony_ci      func_fatal_help "you must specify an RM program"
1101399ca880aSopenharmony_ci
1101499ca880aSopenharmony_ci    rmdirs=
1101599ca880aSopenharmony_ci
1101699ca880aSopenharmony_ci    for file in $files; do
1101799ca880aSopenharmony_ci      func_dirname "$file" "" "."
1101899ca880aSopenharmony_ci      dir=$func_dirname_result
1101999ca880aSopenharmony_ci      if test . = "$dir"; then
1102099ca880aSopenharmony_ci	odir=$objdir
1102199ca880aSopenharmony_ci      else
1102299ca880aSopenharmony_ci	odir=$dir/$objdir
1102399ca880aSopenharmony_ci      fi
1102499ca880aSopenharmony_ci      func_basename "$file"
1102599ca880aSopenharmony_ci      name=$func_basename_result
1102699ca880aSopenharmony_ci      test uninstall = "$opt_mode" && odir=$dir
1102799ca880aSopenharmony_ci
1102899ca880aSopenharmony_ci      # Remember odir for removal later, being careful to avoid duplicates
1102999ca880aSopenharmony_ci      if test clean = "$opt_mode"; then
1103099ca880aSopenharmony_ci	case " $rmdirs " in
1103199ca880aSopenharmony_ci	  *" $odir "*) ;;
1103299ca880aSopenharmony_ci	  *) func_append rmdirs " $odir" ;;
1103399ca880aSopenharmony_ci	esac
1103499ca880aSopenharmony_ci      fi
1103599ca880aSopenharmony_ci
1103699ca880aSopenharmony_ci      # Don't error if the file doesn't exist and rm -f was used.
1103799ca880aSopenharmony_ci      if { test -L "$file"; } >/dev/null 2>&1 ||
1103899ca880aSopenharmony_ci	 { test -h "$file"; } >/dev/null 2>&1 ||
1103999ca880aSopenharmony_ci	 test -f "$file"; then
1104099ca880aSopenharmony_ci	:
1104199ca880aSopenharmony_ci      elif test -d "$file"; then
1104299ca880aSopenharmony_ci	exit_status=1
1104399ca880aSopenharmony_ci	continue
1104499ca880aSopenharmony_ci      elif $rmforce; then
1104599ca880aSopenharmony_ci	continue
1104699ca880aSopenharmony_ci      fi
1104799ca880aSopenharmony_ci
1104899ca880aSopenharmony_ci      rmfiles=$file
1104999ca880aSopenharmony_ci
1105099ca880aSopenharmony_ci      case $name in
1105199ca880aSopenharmony_ci      *.la)
1105299ca880aSopenharmony_ci	# Possibly a libtool archive, so verify it.
1105399ca880aSopenharmony_ci	if func_lalib_p "$file"; then
1105499ca880aSopenharmony_ci	  func_source $dir/$name
1105599ca880aSopenharmony_ci
1105699ca880aSopenharmony_ci	  # Delete the libtool libraries and symlinks.
1105799ca880aSopenharmony_ci	  for n in $library_names; do
1105899ca880aSopenharmony_ci	    func_append rmfiles " $odir/$n"
1105999ca880aSopenharmony_ci	  done
1106099ca880aSopenharmony_ci	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
1106199ca880aSopenharmony_ci
1106299ca880aSopenharmony_ci	  case $opt_mode in
1106399ca880aSopenharmony_ci	  clean)
1106499ca880aSopenharmony_ci	    case " $library_names " in
1106599ca880aSopenharmony_ci	    *" $dlname "*) ;;
1106699ca880aSopenharmony_ci	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
1106799ca880aSopenharmony_ci	    esac
1106899ca880aSopenharmony_ci	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
1106999ca880aSopenharmony_ci	    ;;
1107099ca880aSopenharmony_ci	  uninstall)
1107199ca880aSopenharmony_ci	    if test -n "$library_names"; then
1107299ca880aSopenharmony_ci	      # Do each command in the postuninstall commands.
1107399ca880aSopenharmony_ci	      func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1'
1107499ca880aSopenharmony_ci	    fi
1107599ca880aSopenharmony_ci
1107699ca880aSopenharmony_ci	    if test -n "$old_library"; then
1107799ca880aSopenharmony_ci	      # Do each command in the old_postuninstall commands.
1107899ca880aSopenharmony_ci	      func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1'
1107999ca880aSopenharmony_ci	    fi
1108099ca880aSopenharmony_ci	    # FIXME: should reinstall the best remaining shared library.
1108199ca880aSopenharmony_ci	    ;;
1108299ca880aSopenharmony_ci	  esac
1108399ca880aSopenharmony_ci	fi
1108499ca880aSopenharmony_ci	;;
1108599ca880aSopenharmony_ci
1108699ca880aSopenharmony_ci      *.lo)
1108799ca880aSopenharmony_ci	# Possibly a libtool object, so verify it.
1108899ca880aSopenharmony_ci	if func_lalib_p "$file"; then
1108999ca880aSopenharmony_ci
1109099ca880aSopenharmony_ci	  # Read the .lo file
1109199ca880aSopenharmony_ci	  func_source $dir/$name
1109299ca880aSopenharmony_ci
1109399ca880aSopenharmony_ci	  # Add PIC object to the list of files to remove.
1109499ca880aSopenharmony_ci	  if test -n "$pic_object" && test none != "$pic_object"; then
1109599ca880aSopenharmony_ci	    func_append rmfiles " $dir/$pic_object"
1109699ca880aSopenharmony_ci	  fi
1109799ca880aSopenharmony_ci
1109899ca880aSopenharmony_ci	  # Add non-PIC object to the list of files to remove.
1109999ca880aSopenharmony_ci	  if test -n "$non_pic_object" && test none != "$non_pic_object"; then
1110099ca880aSopenharmony_ci	    func_append rmfiles " $dir/$non_pic_object"
1110199ca880aSopenharmony_ci	  fi
1110299ca880aSopenharmony_ci	fi
1110399ca880aSopenharmony_ci	;;
1110499ca880aSopenharmony_ci
1110599ca880aSopenharmony_ci      *)
1110699ca880aSopenharmony_ci	if test clean = "$opt_mode"; then
1110799ca880aSopenharmony_ci	  noexename=$name
1110899ca880aSopenharmony_ci	  case $file in
1110999ca880aSopenharmony_ci	  *.exe)
1111099ca880aSopenharmony_ci	    func_stripname '' '.exe' "$file"
1111199ca880aSopenharmony_ci	    file=$func_stripname_result
1111299ca880aSopenharmony_ci	    func_stripname '' '.exe' "$name"
1111399ca880aSopenharmony_ci	    noexename=$func_stripname_result
1111499ca880aSopenharmony_ci	    # $file with .exe has already been added to rmfiles,
1111599ca880aSopenharmony_ci	    # add $file without .exe
1111699ca880aSopenharmony_ci	    func_append rmfiles " $file"
1111799ca880aSopenharmony_ci	    ;;
1111899ca880aSopenharmony_ci	  esac
1111999ca880aSopenharmony_ci	  # Do a test to see if this is a libtool program.
1112099ca880aSopenharmony_ci	  if func_ltwrapper_p "$file"; then
1112199ca880aSopenharmony_ci	    if func_ltwrapper_executable_p "$file"; then
1112299ca880aSopenharmony_ci	      func_ltwrapper_scriptname "$file"
1112399ca880aSopenharmony_ci	      relink_command=
1112499ca880aSopenharmony_ci	      func_source $func_ltwrapper_scriptname_result
1112599ca880aSopenharmony_ci	      func_append rmfiles " $func_ltwrapper_scriptname_result"
1112699ca880aSopenharmony_ci	    else
1112799ca880aSopenharmony_ci	      relink_command=
1112899ca880aSopenharmony_ci	      func_source $dir/$noexename
1112999ca880aSopenharmony_ci	    fi
1113099ca880aSopenharmony_ci
1113199ca880aSopenharmony_ci	    # note $name still contains .exe if it was in $file originally
1113299ca880aSopenharmony_ci	    # as does the version of $file that was added into $rmfiles
1113399ca880aSopenharmony_ci	    func_append rmfiles " $odir/$name $odir/${name}S.$objext"
1113499ca880aSopenharmony_ci	    if test yes = "$fast_install" && test -n "$relink_command"; then
1113599ca880aSopenharmony_ci	      func_append rmfiles " $odir/lt-$name"
1113699ca880aSopenharmony_ci	    fi
1113799ca880aSopenharmony_ci	    if test "X$noexename" != "X$name"; then
1113899ca880aSopenharmony_ci	      func_append rmfiles " $odir/lt-$noexename.c"
1113999ca880aSopenharmony_ci	    fi
1114099ca880aSopenharmony_ci	  fi
1114199ca880aSopenharmony_ci	fi
1114299ca880aSopenharmony_ci	;;
1114399ca880aSopenharmony_ci      esac
1114499ca880aSopenharmony_ci      func_show_eval "$RM $rmfiles" 'exit_status=1'
1114599ca880aSopenharmony_ci    done
1114699ca880aSopenharmony_ci
1114799ca880aSopenharmony_ci    # Try to remove the $objdir's in the directories where we deleted files
1114899ca880aSopenharmony_ci    for dir in $rmdirs; do
1114999ca880aSopenharmony_ci      if test -d "$dir"; then
1115099ca880aSopenharmony_ci	func_show_eval "rmdir $dir >/dev/null 2>&1"
1115199ca880aSopenharmony_ci      fi
1115299ca880aSopenharmony_ci    done
1115399ca880aSopenharmony_ci
1115499ca880aSopenharmony_ci    exit $exit_status
1115599ca880aSopenharmony_ci}
1115699ca880aSopenharmony_ci
1115799ca880aSopenharmony_ciif test uninstall = "$opt_mode" || test clean = "$opt_mode"; then
1115899ca880aSopenharmony_ci  func_mode_uninstall ${1+"$@"}
1115999ca880aSopenharmony_cifi
1116099ca880aSopenharmony_ci
1116199ca880aSopenharmony_citest -z "$opt_mode" && {
1116299ca880aSopenharmony_ci  help=$generic_help
1116399ca880aSopenharmony_ci  func_fatal_help "you must specify a MODE"
1116499ca880aSopenharmony_ci}
1116599ca880aSopenharmony_ci
1116699ca880aSopenharmony_citest -z "$exec_cmd" && \
1116799ca880aSopenharmony_ci  func_fatal_help "invalid operation mode '$opt_mode'"
1116899ca880aSopenharmony_ci
1116999ca880aSopenharmony_ciif test -n "$exec_cmd"; then
1117099ca880aSopenharmony_ci  eval exec "$exec_cmd"
1117199ca880aSopenharmony_ci  exit $EXIT_FAILURE
1117299ca880aSopenharmony_cifi
1117399ca880aSopenharmony_ci
1117499ca880aSopenharmony_ciexit $exit_status
1117599ca880aSopenharmony_ci
1117699ca880aSopenharmony_ci
1117799ca880aSopenharmony_ci# The TAGs below are defined such that we never get into a situation
1117899ca880aSopenharmony_ci# where we disable both kinds of libraries.  Given conflicting
1117999ca880aSopenharmony_ci# choices, we go for a static library, that is the most portable,
1118099ca880aSopenharmony_ci# since we can't tell whether shared libraries were disabled because
1118199ca880aSopenharmony_ci# the user asked for that or because the platform doesn't support
1118299ca880aSopenharmony_ci# them.  This is particularly important on AIX, because we don't
1118399ca880aSopenharmony_ci# support having both static and shared libraries enabled at the same
1118499ca880aSopenharmony_ci# time on that platform, so we default to a shared-only configuration.
1118599ca880aSopenharmony_ci# If a disable-shared tag is given, we'll fallback to a static-only
1118699ca880aSopenharmony_ci# configuration.  But we'll never go from static-only to shared-only.
1118799ca880aSopenharmony_ci
1118899ca880aSopenharmony_ci# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
1118999ca880aSopenharmony_cibuild_libtool_libs=no
1119099ca880aSopenharmony_cibuild_old_libs=yes
1119199ca880aSopenharmony_ci# ### END LIBTOOL TAG CONFIG: disable-shared
1119299ca880aSopenharmony_ci
1119399ca880aSopenharmony_ci# ### BEGIN LIBTOOL TAG CONFIG: disable-static
1119499ca880aSopenharmony_cibuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
1119599ca880aSopenharmony_ci# ### END LIBTOOL TAG CONFIG: disable-static
1119699ca880aSopenharmony_ci
1119799ca880aSopenharmony_ci# Local Variables:
1119899ca880aSopenharmony_ci# mode:shell-script
1119999ca880aSopenharmony_ci# sh-indentation:2
1120099ca880aSopenharmony_ci# End:
11201