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 *) <_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