📄 ltmain.sh
字号:
# Generated from ltmain.m4sh.# ltmain.sh (GNU libtool) 2.2.4# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.# This is free software; see the source for copying conditions. There is NO# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.# GNU Libtool is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2 of the License, or# (at your option) any later version.## As a special exception to the GNU General Public License,# if you distribute this file as part of a program or library that# is built using GNU Libtool, you may include this file under the# same distribution terms that you use for the rest of that program.## GNU Libtool is distributed in the hope that it will be useful, but# WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU# General Public License for more details.## You should have received a copy of the GNU General Public License# along with GNU Libtool; see the file COPYING. If not, a copy# can be downloaded from http://www.gnu.org/licenses/gpl.html,# or obtained by writing to the Free Software Foundation, Inc.,# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.# Usage: $progname [OPTION]... [MODE-ARG]...## Provide generalized library-building support services.## --config show all configuration variables# --debug enable verbose shell tracing# -n, --dry-run display commands without modifying any files# --features display basic configuration information and exit# --mode=MODE use operation mode MODE# --preserve-dup-deps don't remove duplicate dependency libraries# --quiet, --silent don't print informational messages# --tag=TAG use configuration variables from tag TAG# -v, --verbose print informational messages (default)# --version print version information# -h, --help print short or long help message## MODE must be one of the following:## clean remove files from the build directory# compile compile a source file into a libtool object# execute automatically set library path, then run a program# finish complete the installation of libtool libraries# install install libraries or executables# link create a library or an executable# uninstall remove libraries from an installed directory## MODE-ARGS vary depending on the MODE.# Try `$progname --help --mode=MODE' for a more detailed description of MODE.## When reporting a bug, please describe a test case to reproduce it and# include the following information:## host-triplet: $host# shell: $SHELL# compiler: $LTCC# compiler flags: $LTCFLAGS# linker: $LD (gnu? $with_gnu_ld)# $progname: (GNU libtool) 2.2.4# automake: $automake_version# autoconf: $autoconf_version## Report bugs to <bug-libtool@gnu.org>.PROGRAM=ltmain.shPACKAGE=libtoolVERSION=2.2.4TIMESTAMP=""package_revision=1.2976# Be Bourne compatibleif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBSTelse case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esacfiBIN_SH=xpg4; export BIN_SH # for Tru64DUALCASE=1; export DUALCASE # for MKS sh# NLS nuisances: We save the old values to restore during execute mode.# Only set LANG and LC_ALL to C if already set.# These must not be set unconditionally because not all systems understand# e.g. LANG=C (notably SCO).lt_user_locale=lt_safe_locale=for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGESdo eval "if test \"\${$lt_var+set}\" = set; then save_$lt_var=\$$lt_var $lt_var=C export $lt_var lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" fi"done$lt_unset CDPATH: ${CP="cp -f"}: ${ECHO="echo"}: ${EGREP="/usr/bin/grep -E"}: ${FGREP="/usr/bin/grep -F"}: ${GREP="/usr/bin/grep"}: ${LN_S="ln -s"}: ${MAKE="make"}: ${MKDIR="mkdir"}: ${MV="mv -f"}: ${RM="rm -f"}: ${SED="/opt/local/bin/gsed"}: ${SHELL="${CONFIG_SHELL-/bin/sh}"}: ${Xsed="$SED -e 1s/^X//"}# Global variables:EXIT_SUCCESS=0EXIT_FAILURE=1EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing.EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake.exit_status=$EXIT_SUCCESS# Make sure IFS has a sensible defaultlt_nl=''IFS=" $lt_nl"dirname="s,/[^/]*$,,"basename="s,^.*/,,"# func_dirname_and_basename file append nondir_replacement# perform func_basename and func_dirname in a single function# call:# dirname: Compute the dirname of FILE. If nonempty,# add APPEND to the result, otherwise set result# to NONDIR_REPLACEMENT.# value returned in "$func_dirname_result"# basename: Compute filename of FILE.# value retuned in "$func_basename_result"# Implementation must be kept synchronized with func_dirname# and func_basename. For efficiency, we do not delegate to# those functions but instead duplicate the functionality here.func_dirname_and_basename (){ # Extract subdirectory from the argument. func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`}# Generated shell functions inserted here.# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh# is ksh but when the shell is invoked as "sh" and the current value of# the _XPG environment variable is not equal to 1 (one), the special# positional parameter $0, within a function call, is the name of the# function.progpath="$0"# The name of this program:# In the unlikely event $progname began with a '-', it would play havoc with# func_echo (imagine progname=-n), so we prepend ./ in that case:func_dirname_and_basename "$progpath"progname=$func_basename_resultcase $progname in -*) progname=./$progname ;;esac# Make sure we have an absolute path for reexecution:case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=$func_dirname_result progdir=`cd "$progdir" && pwd` progpath="$progdir/$progname" ;; *) save_IFS="$IFS" IFS=: for progdir in $PATH; do IFS="$save_IFS" test -x "$progdir/$progname" && break done IFS="$save_IFS" test -n "$progdir" || progdir=`pwd` progpath="$progdir/$progname" ;;esac# Sed substitution that helps us do robust quoting. It backslashifies# metacharacters that are still active within double-quoted strings.Xsed="${SED}"' -e 1s/^X//'sed_quote_subst='s/\([`"$\\]\)/\\\1/g'# Same as above, but do not quote variable references.double_quote_subst='s/\(["`\\]\)/\\\1/g'# Re-`\' parameter expansions in output of double_quote_subst that were# `\'-ed in input to the same. If an odd number of `\' preceded a '$'# in input to double_quote_subst, that '$' was protected from expansion.# Since each input `\' is now two `\'s, look for any number of runs of# four `\'s followed by two `\'s and then a '$'. `\' that '$'.bs='\\'bs2='\\\\'bs4='\\\\\\\\'dollar='\$'sed_double_backslash="\ s/$bs4/&\\/g s/^$bs2$dollar/$bs&/ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g s/\n//g"# Standard options:opt_dry_run=falseopt_help=falseopt_quiet=falseopt_verbose=falseopt_warning=:# func_echo arg...# Echo program name prefixed message, along with the current mode# name if it has been set yet.func_echo (){ $ECHO "$progname${mode+: }$mode: $*"}# func_verbose arg...# Echo program name prefixed message in verbose mode only.func_verbose (){ $opt_verbose && func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: :}# func_error arg...# Echo program name prefixed message to standard error.func_error (){ $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2}# func_warning arg...# Echo program name prefixed warning message to standard error.func_warning (){ $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 # bash bug again: :}# func_fatal_error arg...# Echo program name prefixed message to standard error, and exit.func_fatal_error (){ func_error ${1+"$@"} exit $EXIT_FAILURE}# func_fatal_help arg...# Echo program name prefixed message to standard error, followed by# a help hint, and exit.func_fatal_help (){ func_error ${1+"$@"} func_fatal_error "$help"}help="Try \`$progname --help' for more information." ## default# func_grep expression filename# Check whether EXPRESSION matches any line of FILENAME, without output.func_grep (){ $GREP "$1" "$2" >/dev/null 2>&1}# func_mkdir_p directory-path# Make sure the entire path to DIRECTORY-PATH is available.func_mkdir_p (){ my_directory_path="$1" my_dir_list= if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then # Protect directory names starting with `-' case $my_directory_path in -*) my_directory_path="./$my_directory_path" ;; esac # While some portion of DIR does not yet exist... while test ! -d "$my_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. my_dir_list="$my_directory_path:$my_dir_list" # If the last portion added has no slash in it, the list is done case $my_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` done my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` save_mkdir_p_IFS="$IFS"; IFS=':' for my_dir in $my_dir_list; do IFS="$save_mkdir_p_IFS" # mkdir can fail with a `File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$my_dir" 2>/dev/null || : done IFS="$save_mkdir_p_IFS" # Bail out if we (or some other process) failed to create a directory. test -d "$my_directory_path" || \ func_fatal_error "Failed to create \`$1'" fi}# func_mktempdir [string]# Make a temporary directory that won't clash with other running# libtool processes, and avoids race conditions if possible. If# given, STRING is the basename for that directory.func_mktempdir (){ my_template="${TMPDIR-/tmp}/${1-$progname}" if test "$opt_dry_run" = ":"; then # Return a directory name, but don't create it in dry-run mode my_tmpdir="${my_template}-$$" else # If mktemp works, use that first and foremost my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` if test ! -d "$my_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race my_tmpdir="${my_template}-${RANDOM-0}$$" save_mktempdir_umask=`umask` umask 0077 $MKDIR "$my_tmpdir" umask $save_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$my_tmpdir" || \ func_fatal_error "cannot create temporary directory \`$my_tmpdir'" fi $ECHO "X$my_tmpdir" | $Xsed}# func_quote_for_eval arg# Aesthetically quote ARG to be evaled later.# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT# is double-quoted, suitable for a subsequent eval, whereas# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters# which are still active within double quotes backslashified.func_quote_for_eval (){ case $1 in *[\\\`\"\$]*) func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; *) func_quote_for_eval_unquoted_result="$1" ;; esac case $func_quote_for_eval_unquoted_result in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and and variable # expansion for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" ;; *) func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" esac}# func_quote_for_expand arg# Aesthetically quote ARG to be evaled later; same as above,# but do not quote variable references.func_quote_for_expand (){ case $1 in *[\\\`\"]*) my_arg=`$ECHO "X$1" | $Xsed \ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; *) my_arg="$1" ;; esac case $my_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") my_arg="\"$my_arg\"" ;; esac func_quote_for_expand_result="$my_arg"}# func_show_eval cmd [fail_exp]# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP# is given, then evaluate it.func_show_eval (){ my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$my_cmd" my_status=$? if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -