1*00b67f09SDavid van Moolenbroek# ltmain.sh - Provide generalized library-building support services. 2*00b67f09SDavid van Moolenbroek# NOTE: Changing this file will not affect anything until you rerun ltconfig. 3*00b67f09SDavid van Moolenbroek# 4*00b67f09SDavid van Moolenbroek# Copyright (C) 1996-1999 Free Software Foundation, Inc. 5*00b67f09SDavid van Moolenbroek# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 6*00b67f09SDavid van Moolenbroek# 7*00b67f09SDavid van Moolenbroek# This program is free software; you can redistribute it and/or modify 8*00b67f09SDavid van Moolenbroek# it under the terms of the GNU General Public License as published by 9*00b67f09SDavid van Moolenbroek# the Free Software Foundation; either version 2 of the License, or 10*00b67f09SDavid van Moolenbroek# (at your option) any later version. 11*00b67f09SDavid van Moolenbroek# 12*00b67f09SDavid van Moolenbroek# This program is distributed in the hope that it will be useful, but 13*00b67f09SDavid van Moolenbroek# WITHOUT ANY WARRANTY; without even the implied warranty of 14*00b67f09SDavid van Moolenbroek# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15*00b67f09SDavid van Moolenbroek# General Public License for more details. 16*00b67f09SDavid van Moolenbroek# 17*00b67f09SDavid van Moolenbroek# You should have received a copy of the GNU General Public License 18*00b67f09SDavid van Moolenbroek# along with this program; if not, write to the Free Software 19*00b67f09SDavid van Moolenbroek# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 20*00b67f09SDavid van Moolenbroek# 21*00b67f09SDavid van Moolenbroek# As a special exception to the GNU General Public License, if you 22*00b67f09SDavid van Moolenbroek# distribute this file as part of a program that contains a 23*00b67f09SDavid van Moolenbroek# configuration script generated by Autoconf, you may include it under 24*00b67f09SDavid van Moolenbroek# the same distribution terms that you use for the rest of that program. 25*00b67f09SDavid van Moolenbroek 26*00b67f09SDavid van Moolenbroek# Check that we have a working $echo. 27*00b67f09SDavid van Moolenbroekif test "X$1" = X--no-reexec; then 28*00b67f09SDavid van Moolenbroek # Discard the --no-reexec flag, and continue. 29*00b67f09SDavid van Moolenbroek shift 30*00b67f09SDavid van Moolenbroekelif test "X$1" = X--fallback-echo; then 31*00b67f09SDavid van Moolenbroek # Avoid inline document here, it may be left over 32*00b67f09SDavid van Moolenbroek : 33*00b67f09SDavid van Moolenbroekelif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then 34*00b67f09SDavid van Moolenbroek # Yippee, $echo works! 35*00b67f09SDavid van Moolenbroek : 36*00b67f09SDavid van Moolenbroekelse 37*00b67f09SDavid van Moolenbroek # Restart under the correct shell, and then maybe $echo will work. 38*00b67f09SDavid van Moolenbroek exec $SHELL "$0" --no-reexec ${1+"$@"} 39*00b67f09SDavid van Moolenbroekfi 40*00b67f09SDavid van Moolenbroek 41*00b67f09SDavid van Moolenbroekif test "X$1" = X--fallback-echo; then 42*00b67f09SDavid van Moolenbroek # used as fallback echo 43*00b67f09SDavid van Moolenbroek shift 44*00b67f09SDavid van Moolenbroek cat <<EOF 45*00b67f09SDavid van Moolenbroek$* 46*00b67f09SDavid van MoolenbroekEOF 47*00b67f09SDavid van Moolenbroek exit 0 48*00b67f09SDavid van Moolenbroekfi 49*00b67f09SDavid van Moolenbroek 50*00b67f09SDavid van Moolenbroek# The name of this program. 51*00b67f09SDavid van Moolenbroekprogname=`$echo "$0" | sed 's%^.*/%%'` 52*00b67f09SDavid van Moolenbroekmodename="$progname" 53*00b67f09SDavid van Moolenbroek 54*00b67f09SDavid van Moolenbroek# Constants. 55*00b67f09SDavid van MoolenbroekPROGRAM=ltmain.sh 56*00b67f09SDavid van MoolenbroekPACKAGE=libtool 57*00b67f09SDavid van MoolenbroekVERSION=1.3.5 58*00b67f09SDavid van MoolenbroekTIMESTAMP=" (1.385.2.206 2000/05/27 11:12:27)" 59*00b67f09SDavid van Moolenbroek 60*00b67f09SDavid van Moolenbroekdefault_mode= 61*00b67f09SDavid van Moolenbroekhelp="Try \`$progname --help' for more information." 62*00b67f09SDavid van Moolenbroekmagic="%%%MAGIC variable%%%" 63*00b67f09SDavid van Moolenbroekmkdir="mkdir" 64*00b67f09SDavid van Moolenbroekmv="mv -f" 65*00b67f09SDavid van Moolenbroekrm="rm -f" 66*00b67f09SDavid van Moolenbroek 67*00b67f09SDavid van Moolenbroek# Sed substitution that helps us do robust quoting. It backslashifies 68*00b67f09SDavid van Moolenbroek# metacharacters that are still active within double-quoted strings. 69*00b67f09SDavid van MoolenbroekXsed='sed -e 1s/^X//' 70*00b67f09SDavid van Moolenbroeksed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' 71*00b67f09SDavid van MoolenbroekSP2NL='tr \040 \012' 72*00b67f09SDavid van MoolenbroekNL2SP='tr \015\012 \040\040' 73*00b67f09SDavid van Moolenbroek 74*00b67f09SDavid van Moolenbroek# NLS nuisances. 75*00b67f09SDavid van Moolenbroek# Only set LANG and LC_ALL to C if already set. 76*00b67f09SDavid van Moolenbroek# These must not be set unconditionally because not all systems understand 77*00b67f09SDavid van Moolenbroek# e.g. LANG=C (notably SCO). 78*00b67f09SDavid van Moolenbroek# We save the old values to restore during execute mode. 79*00b67f09SDavid van Moolenbroekif test "${LC_ALL+set}" = set; then 80*00b67f09SDavid van Moolenbroek save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL 81*00b67f09SDavid van Moolenbroekfi 82*00b67f09SDavid van Moolenbroekif test "${LANG+set}" = set; then 83*00b67f09SDavid van Moolenbroek save_LANG="$LANG"; LANG=C; export LANG 84*00b67f09SDavid van Moolenbroekfi 85*00b67f09SDavid van Moolenbroek 86*00b67f09SDavid van Moolenbroekif test "$LTCONFIG_VERSION" != "$VERSION"; then 87*00b67f09SDavid van Moolenbroek echo "$modename: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2 88*00b67f09SDavid van Moolenbroek echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 89*00b67f09SDavid van Moolenbroek exit 1 90*00b67f09SDavid van Moolenbroekfi 91*00b67f09SDavid van Moolenbroek 92*00b67f09SDavid van Moolenbroekif test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 93*00b67f09SDavid van Moolenbroek echo "$modename: not configured to build any kind of library" 1>&2 94*00b67f09SDavid van Moolenbroek echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 95*00b67f09SDavid van Moolenbroek exit 1 96*00b67f09SDavid van Moolenbroekfi 97*00b67f09SDavid van Moolenbroek 98*00b67f09SDavid van Moolenbroek# Global variables. 99*00b67f09SDavid van Moolenbroekmode=$default_mode 100*00b67f09SDavid van Moolenbroeknonopt= 101*00b67f09SDavid van Moolenbroekprev= 102*00b67f09SDavid van Moolenbroekprevopt= 103*00b67f09SDavid van Moolenbroekrun= 104*00b67f09SDavid van Moolenbroekshow="$echo" 105*00b67f09SDavid van Moolenbroekshow_help= 106*00b67f09SDavid van Moolenbroekexecute_dlfiles= 107*00b67f09SDavid van Moolenbroeklo2o="s/\\.lo\$/.${objext}/" 108*00b67f09SDavid van Moolenbroeko2lo="s/\\.${objext}\$/.lo/" 109*00b67f09SDavid van Moolenbroek 110*00b67f09SDavid van Moolenbroek# Parse our command line options once, thoroughly. 111*00b67f09SDavid van Moolenbroekwhile test $# -gt 0 112*00b67f09SDavid van Moolenbroekdo 113*00b67f09SDavid van Moolenbroek arg="$1" 114*00b67f09SDavid van Moolenbroek shift 115*00b67f09SDavid van Moolenbroek 116*00b67f09SDavid van Moolenbroek case "$arg" in 117*00b67f09SDavid van Moolenbroek -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; 118*00b67f09SDavid van Moolenbroek *) optarg= ;; 119*00b67f09SDavid van Moolenbroek esac 120*00b67f09SDavid van Moolenbroek 121*00b67f09SDavid van Moolenbroek # If the previous option needs an argument, assign it. 122*00b67f09SDavid van Moolenbroek if test -n "$prev"; then 123*00b67f09SDavid van Moolenbroek case "$prev" in 124*00b67f09SDavid van Moolenbroek execute_dlfiles) 125*00b67f09SDavid van Moolenbroek eval "$prev=\"\$$prev \$arg\"" 126*00b67f09SDavid van Moolenbroek ;; 127*00b67f09SDavid van Moolenbroek *) 128*00b67f09SDavid van Moolenbroek eval "$prev=\$arg" 129*00b67f09SDavid van Moolenbroek ;; 130*00b67f09SDavid van Moolenbroek esac 131*00b67f09SDavid van Moolenbroek 132*00b67f09SDavid van Moolenbroek prev= 133*00b67f09SDavid van Moolenbroek prevopt= 134*00b67f09SDavid van Moolenbroek continue 135*00b67f09SDavid van Moolenbroek fi 136*00b67f09SDavid van Moolenbroek 137*00b67f09SDavid van Moolenbroek # Have we seen a non-optional argument yet? 138*00b67f09SDavid van Moolenbroek case "$arg" in 139*00b67f09SDavid van Moolenbroek --help) 140*00b67f09SDavid van Moolenbroek show_help=yes 141*00b67f09SDavid van Moolenbroek ;; 142*00b67f09SDavid van Moolenbroek 143*00b67f09SDavid van Moolenbroek --version) 144*00b67f09SDavid van Moolenbroek echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" 145*00b67f09SDavid van Moolenbroek exit 0 146*00b67f09SDavid van Moolenbroek ;; 147*00b67f09SDavid van Moolenbroek 148*00b67f09SDavid van Moolenbroek --config) 149*00b67f09SDavid van Moolenbroek sed -e '1,/^### BEGIN LIBTOOL CONFIG/d' -e '/^### END LIBTOOL CONFIG/,$d' $0 150*00b67f09SDavid van Moolenbroek exit 0 151*00b67f09SDavid van Moolenbroek ;; 152*00b67f09SDavid van Moolenbroek 153*00b67f09SDavid van Moolenbroek --debug) 154*00b67f09SDavid van Moolenbroek echo "$progname: enabling shell trace mode" 155*00b67f09SDavid van Moolenbroek set -x 156*00b67f09SDavid van Moolenbroek ;; 157*00b67f09SDavid van Moolenbroek 158*00b67f09SDavid van Moolenbroek --dry-run | -n) 159*00b67f09SDavid van Moolenbroek run=: 160*00b67f09SDavid van Moolenbroek ;; 161*00b67f09SDavid van Moolenbroek 162*00b67f09SDavid van Moolenbroek --features) 163*00b67f09SDavid van Moolenbroek echo "host: $host" 164*00b67f09SDavid van Moolenbroek if test "$build_libtool_libs" = yes; then 165*00b67f09SDavid van Moolenbroek echo "enable shared libraries" 166*00b67f09SDavid van Moolenbroek else 167*00b67f09SDavid van Moolenbroek echo "disable shared libraries" 168*00b67f09SDavid van Moolenbroek fi 169*00b67f09SDavid van Moolenbroek if test "$build_old_libs" = yes; then 170*00b67f09SDavid van Moolenbroek echo "enable static libraries" 171*00b67f09SDavid van Moolenbroek else 172*00b67f09SDavid van Moolenbroek echo "disable static libraries" 173*00b67f09SDavid van Moolenbroek fi 174*00b67f09SDavid van Moolenbroek exit 0 175*00b67f09SDavid van Moolenbroek ;; 176*00b67f09SDavid van Moolenbroek 177*00b67f09SDavid van Moolenbroek --finish) mode="finish" ;; 178*00b67f09SDavid van Moolenbroek 179*00b67f09SDavid van Moolenbroek --mode) prevopt="--mode" prev=mode ;; 180*00b67f09SDavid van Moolenbroek --mode=*) mode="$optarg" ;; 181*00b67f09SDavid van Moolenbroek 182*00b67f09SDavid van Moolenbroek --quiet | --silent) 183*00b67f09SDavid van Moolenbroek show=: 184*00b67f09SDavid van Moolenbroek ;; 185*00b67f09SDavid van Moolenbroek 186*00b67f09SDavid van Moolenbroek -dlopen) 187*00b67f09SDavid van Moolenbroek prevopt="-dlopen" 188*00b67f09SDavid van Moolenbroek prev=execute_dlfiles 189*00b67f09SDavid van Moolenbroek ;; 190*00b67f09SDavid van Moolenbroek 191*00b67f09SDavid van Moolenbroek -*) 192*00b67f09SDavid van Moolenbroek $echo "$modename: unrecognized option \`$arg'" 1>&2 193*00b67f09SDavid van Moolenbroek $echo "$help" 1>&2 194*00b67f09SDavid van Moolenbroek exit 1 195*00b67f09SDavid van Moolenbroek ;; 196*00b67f09SDavid van Moolenbroek 197*00b67f09SDavid van Moolenbroek *) 198*00b67f09SDavid van Moolenbroek nonopt="$arg" 199*00b67f09SDavid van Moolenbroek break 200*00b67f09SDavid van Moolenbroek ;; 201*00b67f09SDavid van Moolenbroek esac 202*00b67f09SDavid van Moolenbroekdone 203*00b67f09SDavid van Moolenbroek 204*00b67f09SDavid van Moolenbroekif test -n "$prevopt"; then 205*00b67f09SDavid van Moolenbroek $echo "$modename: option \`$prevopt' requires an argument" 1>&2 206*00b67f09SDavid van Moolenbroek $echo "$help" 1>&2 207*00b67f09SDavid van Moolenbroek exit 1 208*00b67f09SDavid van Moolenbroekfi 209*00b67f09SDavid van Moolenbroek 210*00b67f09SDavid van Moolenbroekif test -z "$show_help"; then 211*00b67f09SDavid van Moolenbroek 212*00b67f09SDavid van Moolenbroek # Infer the operation mode. 213*00b67f09SDavid van Moolenbroek if test -z "$mode"; then 214*00b67f09SDavid van Moolenbroek case "$nonopt" in 215*00b67f09SDavid van Moolenbroek *cc | *++ | gcc* | *-gcc*) 216*00b67f09SDavid van Moolenbroek mode=link 217*00b67f09SDavid van Moolenbroek for arg 218*00b67f09SDavid van Moolenbroek do 219*00b67f09SDavid van Moolenbroek case "$arg" in 220*00b67f09SDavid van Moolenbroek -c) 221*00b67f09SDavid van Moolenbroek mode=compile 222*00b67f09SDavid van Moolenbroek break 223*00b67f09SDavid van Moolenbroek ;; 224*00b67f09SDavid van Moolenbroek esac 225*00b67f09SDavid van Moolenbroek done 226*00b67f09SDavid van Moolenbroek ;; 227*00b67f09SDavid van Moolenbroek *db | *dbx | *strace | *truss) 228*00b67f09SDavid van Moolenbroek mode=execute 229*00b67f09SDavid van Moolenbroek ;; 230*00b67f09SDavid van Moolenbroek *install*|cp|mv) 231*00b67f09SDavid van Moolenbroek mode=install 232*00b67f09SDavid van Moolenbroek ;; 233*00b67f09SDavid van Moolenbroek *rm) 234*00b67f09SDavid van Moolenbroek mode=uninstall 235*00b67f09SDavid van Moolenbroek ;; 236*00b67f09SDavid van Moolenbroek *) 237*00b67f09SDavid van Moolenbroek # If we have no mode, but dlfiles were specified, then do execute mode. 238*00b67f09SDavid van Moolenbroek test -n "$execute_dlfiles" && mode=execute 239*00b67f09SDavid van Moolenbroek 240*00b67f09SDavid van Moolenbroek # Just use the default operation mode. 241*00b67f09SDavid van Moolenbroek if test -z "$mode"; then 242*00b67f09SDavid van Moolenbroek if test -n "$nonopt"; then 243*00b67f09SDavid van Moolenbroek $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 244*00b67f09SDavid van Moolenbroek else 245*00b67f09SDavid van Moolenbroek $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 246*00b67f09SDavid van Moolenbroek fi 247*00b67f09SDavid van Moolenbroek fi 248*00b67f09SDavid van Moolenbroek ;; 249*00b67f09SDavid van Moolenbroek esac 250*00b67f09SDavid van Moolenbroek fi 251*00b67f09SDavid van Moolenbroek 252*00b67f09SDavid van Moolenbroek # Only execute mode is allowed to have -dlopen flags. 253*00b67f09SDavid van Moolenbroek if test -n "$execute_dlfiles" && test "$mode" != execute; then 254*00b67f09SDavid van Moolenbroek $echo "$modename: unrecognized option \`-dlopen'" 1>&2 255*00b67f09SDavid van Moolenbroek $echo "$help" 1>&2 256*00b67f09SDavid van Moolenbroek exit 1 257*00b67f09SDavid van Moolenbroek fi 258*00b67f09SDavid van Moolenbroek 259*00b67f09SDavid van Moolenbroek # Change the help message to a mode-specific one. 260*00b67f09SDavid van Moolenbroek generic_help="$help" 261*00b67f09SDavid van Moolenbroek help="Try \`$modename --help --mode=$mode' for more information." 262*00b67f09SDavid van Moolenbroek 263*00b67f09SDavid van Moolenbroek # These modes are in order of execution frequency so that they run quickly. 264*00b67f09SDavid van Moolenbroek case "$mode" in 265*00b67f09SDavid van Moolenbroek # libtool compile mode 266*00b67f09SDavid van Moolenbroek compile) 267*00b67f09SDavid van Moolenbroek modename="$modename: compile" 268*00b67f09SDavid van Moolenbroek # Get the compilation command and the source file. 269*00b67f09SDavid van Moolenbroek base_compile= 270*00b67f09SDavid van Moolenbroek lastarg= 271*00b67f09SDavid van Moolenbroek srcfile="$nonopt" 272*00b67f09SDavid van Moolenbroek suppress_output= 273*00b67f09SDavid van Moolenbroek 274*00b67f09SDavid van Moolenbroek user_target=no 275*00b67f09SDavid van Moolenbroek for arg 276*00b67f09SDavid van Moolenbroek do 277*00b67f09SDavid van Moolenbroek # Accept any command-line options. 278*00b67f09SDavid van Moolenbroek case "$arg" in 279*00b67f09SDavid van Moolenbroek -o) 280*00b67f09SDavid van Moolenbroek if test "$user_target" != "no"; then 281*00b67f09SDavid van Moolenbroek $echo "$modename: you cannot specify \`-o' more than once" 1>&2 282*00b67f09SDavid van Moolenbroek exit 1 283*00b67f09SDavid van Moolenbroek fi 284*00b67f09SDavid van Moolenbroek user_target=next 285*00b67f09SDavid van Moolenbroek ;; 286*00b67f09SDavid van Moolenbroek 287*00b67f09SDavid van Moolenbroek -static) 288*00b67f09SDavid van Moolenbroek build_old_libs=yes 289*00b67f09SDavid van Moolenbroek continue 290*00b67f09SDavid van Moolenbroek ;; 291*00b67f09SDavid van Moolenbroek esac 292*00b67f09SDavid van Moolenbroek 293*00b67f09SDavid van Moolenbroek case "$user_target" in 294*00b67f09SDavid van Moolenbroek next) 295*00b67f09SDavid van Moolenbroek # The next one is the -o target name 296*00b67f09SDavid van Moolenbroek user_target=yes 297*00b67f09SDavid van Moolenbroek continue 298*00b67f09SDavid van Moolenbroek ;; 299*00b67f09SDavid van Moolenbroek yes) 300*00b67f09SDavid van Moolenbroek # We got the output file 301*00b67f09SDavid van Moolenbroek user_target=set 302*00b67f09SDavid van Moolenbroek libobj="$arg" 303*00b67f09SDavid van Moolenbroek continue 304*00b67f09SDavid van Moolenbroek ;; 305*00b67f09SDavid van Moolenbroek esac 306*00b67f09SDavid van Moolenbroek 307*00b67f09SDavid van Moolenbroek # Accept the current argument as the source file. 308*00b67f09SDavid van Moolenbroek lastarg="$srcfile" 309*00b67f09SDavid van Moolenbroek srcfile="$arg" 310*00b67f09SDavid van Moolenbroek 311*00b67f09SDavid van Moolenbroek # Aesthetically quote the previous argument. 312*00b67f09SDavid van Moolenbroek 313*00b67f09SDavid van Moolenbroek # Backslashify any backslashes, double quotes, and dollar signs. 314*00b67f09SDavid van Moolenbroek # These are the only characters that are still specially 315*00b67f09SDavid van Moolenbroek # interpreted inside of double-quoted scrings. 316*00b67f09SDavid van Moolenbroek lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` 317*00b67f09SDavid van Moolenbroek 318*00b67f09SDavid van Moolenbroek # Double-quote args containing other shell metacharacters. 319*00b67f09SDavid van Moolenbroek # Many Bourne shells cannot handle close brackets correctly in scan 320*00b67f09SDavid van Moolenbroek # sets, so we specify it separately. 321*00b67f09SDavid van Moolenbroek case "$lastarg" in 322*00b67f09SDavid van Moolenbroek *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) 323*00b67f09SDavid van Moolenbroek lastarg="\"$lastarg\"" 324*00b67f09SDavid van Moolenbroek ;; 325*00b67f09SDavid van Moolenbroek esac 326*00b67f09SDavid van Moolenbroek 327*00b67f09SDavid van Moolenbroek # Add the previous argument to base_compile. 328*00b67f09SDavid van Moolenbroek if test -z "$base_compile"; then 329*00b67f09SDavid van Moolenbroek base_compile="$lastarg" 330*00b67f09SDavid van Moolenbroek else 331*00b67f09SDavid van Moolenbroek base_compile="$base_compile $lastarg" 332*00b67f09SDavid van Moolenbroek fi 333*00b67f09SDavid van Moolenbroek done 334*00b67f09SDavid van Moolenbroek 335*00b67f09SDavid van Moolenbroek case "$user_target" in 336*00b67f09SDavid van Moolenbroek set) 337*00b67f09SDavid van Moolenbroek ;; 338*00b67f09SDavid van Moolenbroek no) 339*00b67f09SDavid van Moolenbroek # Get the name of the library object. 340*00b67f09SDavid van Moolenbroek libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` 341*00b67f09SDavid van Moolenbroek ;; 342*00b67f09SDavid van Moolenbroek *) 343*00b67f09SDavid van Moolenbroek $echo "$modename: you must specify a target with \`-o'" 1>&2 344*00b67f09SDavid van Moolenbroek exit 1 345*00b67f09SDavid van Moolenbroek ;; 346*00b67f09SDavid van Moolenbroek esac 347*00b67f09SDavid van Moolenbroek 348*00b67f09SDavid van Moolenbroek # Recognize several different file suffixes. 349*00b67f09SDavid van Moolenbroek # If the user specifies -o file.o, it is replaced with file.lo 350*00b67f09SDavid van Moolenbroek xform='[cCFSfmso]' 351*00b67f09SDavid van Moolenbroek case "$libobj" in 352*00b67f09SDavid van Moolenbroek *.ada) xform=ada ;; 353*00b67f09SDavid van Moolenbroek *.adb) xform=adb ;; 354*00b67f09SDavid van Moolenbroek *.ads) xform=ads ;; 355*00b67f09SDavid van Moolenbroek *.asm) xform=asm ;; 356*00b67f09SDavid van Moolenbroek *.c++) xform=c++ ;; 357*00b67f09SDavid van Moolenbroek *.cc) xform=cc ;; 358*00b67f09SDavid van Moolenbroek *.cpp) xform=cpp ;; 359*00b67f09SDavid van Moolenbroek *.cxx) xform=cxx ;; 360*00b67f09SDavid van Moolenbroek *.f90) xform=f90 ;; 361*00b67f09SDavid van Moolenbroek *.for) xform=for ;; 362*00b67f09SDavid van Moolenbroek esac 363*00b67f09SDavid van Moolenbroek 364*00b67f09SDavid van Moolenbroek libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` 365*00b67f09SDavid van Moolenbroek 366*00b67f09SDavid van Moolenbroek case "$libobj" in 367*00b67f09SDavid van Moolenbroek *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; 368*00b67f09SDavid van Moolenbroek *) 369*00b67f09SDavid van Moolenbroek $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 370*00b67f09SDavid van Moolenbroek exit 1 371*00b67f09SDavid van Moolenbroek ;; 372*00b67f09SDavid van Moolenbroek esac 373*00b67f09SDavid van Moolenbroek 374*00b67f09SDavid van Moolenbroek if test -z "$base_compile"; then 375*00b67f09SDavid van Moolenbroek $echo "$modename: you must specify a compilation command" 1>&2 376*00b67f09SDavid van Moolenbroek $echo "$help" 1>&2 377*00b67f09SDavid van Moolenbroek exit 1 378*00b67f09SDavid van Moolenbroek fi 379*00b67f09SDavid van Moolenbroek 380*00b67f09SDavid van Moolenbroek # Delete any leftover library objects. 381*00b67f09SDavid van Moolenbroek if test "$build_old_libs" = yes; then 382*00b67f09SDavid van Moolenbroek removelist="$obj $libobj" 383*00b67f09SDavid van Moolenbroek else 384*00b67f09SDavid van Moolenbroek removelist="$libobj" 385*00b67f09SDavid van Moolenbroek fi 386*00b67f09SDavid van Moolenbroek 387*00b67f09SDavid van Moolenbroek $run $rm $removelist 388*00b67f09SDavid van Moolenbroek trap "$run $rm $removelist; exit 1" 1 2 15 389*00b67f09SDavid van Moolenbroek 390*00b67f09SDavid van Moolenbroek # Calculate the filename of the output object if compiler does 391*00b67f09SDavid van Moolenbroek # not support -o with -c 392*00b67f09SDavid van Moolenbroek if test "$compiler_c_o" = no; then 393*00b67f09SDavid van Moolenbroek output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\..*$%%'`.${objext} 394*00b67f09SDavid van Moolenbroek lockfile="$output_obj.lock" 395*00b67f09SDavid van Moolenbroek removelist="$removelist $output_obj $lockfile" 396*00b67f09SDavid van Moolenbroek trap "$run $rm $removelist; exit 1" 1 2 15 397*00b67f09SDavid van Moolenbroek else 398*00b67f09SDavid van Moolenbroek need_locks=no 399*00b67f09SDavid van Moolenbroek lockfile= 400*00b67f09SDavid van Moolenbroek fi 401*00b67f09SDavid van Moolenbroek 402*00b67f09SDavid van Moolenbroek # Lock this critical section if it is needed 403*00b67f09SDavid van Moolenbroek # We use this script file to make the link, it avoids creating a new file 404*00b67f09SDavid van Moolenbroek if test "$need_locks" = yes; then 405*00b67f09SDavid van Moolenbroek until ln "$0" "$lockfile" 2>/dev/null; do 406*00b67f09SDavid van Moolenbroek $show "Waiting for $lockfile to be removed" 407*00b67f09SDavid van Moolenbroek sleep 2 408*00b67f09SDavid van Moolenbroek done 409*00b67f09SDavid van Moolenbroek elif test "$need_locks" = warn; then 410*00b67f09SDavid van Moolenbroek if test -f "$lockfile"; then 411*00b67f09SDavid van Moolenbroek echo "\ 412*00b67f09SDavid van Moolenbroek*** ERROR, $lockfile exists and contains: 413*00b67f09SDavid van Moolenbroek`cat $lockfile 2>/dev/null` 414*00b67f09SDavid van Moolenbroek 415*00b67f09SDavid van MoolenbroekThis indicates that another process is trying to use the same 416*00b67f09SDavid van Moolenbroektemporary object file, and libtool could not work around it because 417*00b67f09SDavid van Moolenbroekyour compiler does not support \`-c' and \`-o' together. If you 418*00b67f09SDavid van Moolenbroekrepeat this compilation, it may succeed, by chance, but you had better 419*00b67f09SDavid van Moolenbroekavoid parallel builds (make -j) in this platform, or get a better 420*00b67f09SDavid van Moolenbroekcompiler." 421*00b67f09SDavid van Moolenbroek 422*00b67f09SDavid van Moolenbroek $run $rm $removelist 423*00b67f09SDavid van Moolenbroek exit 1 424*00b67f09SDavid van Moolenbroek fi 425*00b67f09SDavid van Moolenbroek echo $srcfile > "$lockfile" 426*00b67f09SDavid van Moolenbroek fi 427*00b67f09SDavid van Moolenbroek 428*00b67f09SDavid van Moolenbroek if test -n "$fix_srcfile_path"; then 429*00b67f09SDavid van Moolenbroek eval srcfile=\"$fix_srcfile_path\" 430*00b67f09SDavid van Moolenbroek fi 431*00b67f09SDavid van Moolenbroek 432*00b67f09SDavid van Moolenbroek # Only build a PIC object if we are building libtool libraries. 433*00b67f09SDavid van Moolenbroek if test "$build_libtool_libs" = yes; then 434*00b67f09SDavid van Moolenbroek # Without this assignment, base_compile gets emptied. 435*00b67f09SDavid van Moolenbroek fbsd_hideous_sh_bug=$base_compile 436*00b67f09SDavid van Moolenbroek 437*00b67f09SDavid van Moolenbroek # All platforms use -DPIC, to notify preprocessed assembler code. 438*00b67f09SDavid van Moolenbroek command="$base_compile $srcfile $pic_flag -DPIC" 439*00b67f09SDavid van Moolenbroek if test "$build_old_libs" = yes; then 440*00b67f09SDavid van Moolenbroek lo_libobj="$libobj" 441*00b67f09SDavid van Moolenbroek dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` 442*00b67f09SDavid van Moolenbroek if test "X$dir" = "X$libobj"; then 443*00b67f09SDavid van Moolenbroek dir="$objdir" 444*00b67f09SDavid van Moolenbroek else 445*00b67f09SDavid van Moolenbroek dir="$dir/$objdir" 446*00b67f09SDavid van Moolenbroek fi 447*00b67f09SDavid van Moolenbroek libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` 448*00b67f09SDavid van Moolenbroek 449*00b67f09SDavid van Moolenbroek if test -d "$dir"; then 450*00b67f09SDavid van Moolenbroek $show "$rm $libobj" 451*00b67f09SDavid van Moolenbroek $run $rm $libobj 452*00b67f09SDavid van Moolenbroek else 453*00b67f09SDavid van Moolenbroek $show "$mkdir $dir" 454*00b67f09SDavid van Moolenbroek $run $mkdir $dir 455*00b67f09SDavid van Moolenbroek status=$? 456*00b67f09SDavid van Moolenbroek if test $status -ne 0 && test ! -d $dir; then 457*00b67f09SDavid van Moolenbroek exit $status 458*00b67f09SDavid van Moolenbroek fi 459*00b67f09SDavid van Moolenbroek fi 460*00b67f09SDavid van Moolenbroek fi 461*00b67f09SDavid van Moolenbroek if test "$compiler_o_lo" = yes; then 462*00b67f09SDavid van Moolenbroek output_obj="$libobj" 463*00b67f09SDavid van Moolenbroek command="$command -o $output_obj" 464*00b67f09SDavid van Moolenbroek elif test "$compiler_c_o" = yes; then 465*00b67f09SDavid van Moolenbroek output_obj="$obj" 466*00b67f09SDavid van Moolenbroek command="$command -o $output_obj" 467*00b67f09SDavid van Moolenbroek fi 468*00b67f09SDavid van Moolenbroek 469*00b67f09SDavid van Moolenbroek $run $rm "$output_obj" 470*00b67f09SDavid van Moolenbroek $show "$command" 471*00b67f09SDavid van Moolenbroek if $run eval "$command"; then : 472*00b67f09SDavid van Moolenbroek else 473*00b67f09SDavid van Moolenbroek test -n "$output_obj" && $run $rm $removelist 474*00b67f09SDavid van Moolenbroek exit 1 475*00b67f09SDavid van Moolenbroek fi 476*00b67f09SDavid van Moolenbroek 477*00b67f09SDavid van Moolenbroek if test "$need_locks" = warn && 478*00b67f09SDavid van Moolenbroek test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then 479*00b67f09SDavid van Moolenbroek echo "\ 480*00b67f09SDavid van Moolenbroek*** ERROR, $lockfile contains: 481*00b67f09SDavid van Moolenbroek`cat $lockfile 2>/dev/null` 482*00b67f09SDavid van Moolenbroek 483*00b67f09SDavid van Moolenbroekbut it should contain: 484*00b67f09SDavid van Moolenbroek$srcfile 485*00b67f09SDavid van Moolenbroek 486*00b67f09SDavid van MoolenbroekThis indicates that another process is trying to use the same 487*00b67f09SDavid van Moolenbroektemporary object file, and libtool could not work around it because 488*00b67f09SDavid van Moolenbroekyour compiler does not support \`-c' and \`-o' together. If you 489*00b67f09SDavid van Moolenbroekrepeat this compilation, it may succeed, by chance, but you had better 490*00b67f09SDavid van Moolenbroekavoid parallel builds (make -j) in this platform, or get a better 491*00b67f09SDavid van Moolenbroekcompiler." 492*00b67f09SDavid van Moolenbroek 493*00b67f09SDavid van Moolenbroek $run $rm $removelist 494*00b67f09SDavid van Moolenbroek exit 1 495*00b67f09SDavid van Moolenbroek fi 496*00b67f09SDavid van Moolenbroek 497*00b67f09SDavid van Moolenbroek # Just move the object if needed, then go on to compile the next one 498*00b67f09SDavid van Moolenbroek if test x"$output_obj" != x"$libobj"; then 499*00b67f09SDavid van Moolenbroek $show "$mv $output_obj $libobj" 500*00b67f09SDavid van Moolenbroek if $run $mv $output_obj $libobj; then : 501*00b67f09SDavid van Moolenbroek else 502*00b67f09SDavid van Moolenbroek error=$? 503*00b67f09SDavid van Moolenbroek $run $rm $removelist 504*00b67f09SDavid van Moolenbroek exit $error 505*00b67f09SDavid van Moolenbroek fi 506*00b67f09SDavid van Moolenbroek fi 507*00b67f09SDavid van Moolenbroek 508*00b67f09SDavid van Moolenbroek # If we have no pic_flag, then copy the object into place and finish. 509*00b67f09SDavid van Moolenbroek if test -z "$pic_flag" && test "$build_old_libs" = yes; then 510*00b67f09SDavid van Moolenbroek # Rename the .lo from within objdir to obj 511*00b67f09SDavid van Moolenbroek if test -f $obj; then 512*00b67f09SDavid van Moolenbroek $show $rm $obj 513*00b67f09SDavid van Moolenbroek $run $rm $obj 514*00b67f09SDavid van Moolenbroek fi 515*00b67f09SDavid van Moolenbroek 516*00b67f09SDavid van Moolenbroek $show "$mv $libobj $obj" 517*00b67f09SDavid van Moolenbroek if $run $mv $libobj $obj; then : 518*00b67f09SDavid van Moolenbroek else 519*00b67f09SDavid van Moolenbroek error=$? 520*00b67f09SDavid van Moolenbroek $run $rm $removelist 521*00b67f09SDavid van Moolenbroek exit $error 522*00b67f09SDavid van Moolenbroek fi 523*00b67f09SDavid van Moolenbroek 524*00b67f09SDavid van Moolenbroek xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` 525*00b67f09SDavid van Moolenbroek if test "X$xdir" = "X$obj"; then 526*00b67f09SDavid van Moolenbroek xdir="." 527*00b67f09SDavid van Moolenbroek else 528*00b67f09SDavid van Moolenbroek xdir="$xdir" 529*00b67f09SDavid van Moolenbroek fi 530*00b67f09SDavid van Moolenbroek baseobj=`$echo "X$obj" | $Xsed -e "s%.*/%%"` 531*00b67f09SDavid van Moolenbroek libobj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` 532*00b67f09SDavid van Moolenbroek # Now arrange that obj and lo_libobj become the same file 533*00b67f09SDavid van Moolenbroek $show "(cd $xdir && $LN_S $baseobj $libobj)" 534*00b67f09SDavid van Moolenbroek if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then 535*00b67f09SDavid van Moolenbroek exit 0 536*00b67f09SDavid van Moolenbroek else 537*00b67f09SDavid van Moolenbroek error=$? 538*00b67f09SDavid van Moolenbroek $run $rm $removelist 539*00b67f09SDavid van Moolenbroek exit $error 540*00b67f09SDavid van Moolenbroek fi 541*00b67f09SDavid van Moolenbroek fi 542*00b67f09SDavid van Moolenbroek 543*00b67f09SDavid van Moolenbroek # Allow error messages only from the first compilation. 544*00b67f09SDavid van Moolenbroek suppress_output=' >/dev/null 2>&1' 545*00b67f09SDavid van Moolenbroek fi 546*00b67f09SDavid van Moolenbroek 547*00b67f09SDavid van Moolenbroek # Only build a position-dependent object if we build old libraries. 548*00b67f09SDavid van Moolenbroek if test "$build_old_libs" = yes; then 549*00b67f09SDavid van Moolenbroek command="$base_compile $srcfile" 550*00b67f09SDavid van Moolenbroek if test "$compiler_c_o" = yes; then 551*00b67f09SDavid van Moolenbroek command="$command -o $obj" 552*00b67f09SDavid van Moolenbroek output_obj="$obj" 553*00b67f09SDavid van Moolenbroek fi 554*00b67f09SDavid van Moolenbroek 555*00b67f09SDavid van Moolenbroek # Suppress compiler output if we already did a PIC compilation. 556*00b67f09SDavid van Moolenbroek command="$command$suppress_output" 557*00b67f09SDavid van Moolenbroek $run $rm "$output_obj" 558*00b67f09SDavid van Moolenbroek $show "$command" 559*00b67f09SDavid van Moolenbroek if $run eval "$command"; then : 560*00b67f09SDavid van Moolenbroek else 561*00b67f09SDavid van Moolenbroek $run $rm $removelist 562*00b67f09SDavid van Moolenbroek exit 1 563*00b67f09SDavid van Moolenbroek fi 564*00b67f09SDavid van Moolenbroek 565*00b67f09SDavid van Moolenbroek if test "$need_locks" = warn && 566*00b67f09SDavid van Moolenbroek test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then 567*00b67f09SDavid van Moolenbroek echo "\ 568*00b67f09SDavid van Moolenbroek*** ERROR, $lockfile contains: 569*00b67f09SDavid van Moolenbroek`cat $lockfile 2>/dev/null` 570*00b67f09SDavid van Moolenbroek 571*00b67f09SDavid van Moolenbroekbut it should contain: 572*00b67f09SDavid van Moolenbroek$srcfile 573*00b67f09SDavid van Moolenbroek 574*00b67f09SDavid van MoolenbroekThis indicates that another process is trying to use the same 575*00b67f09SDavid van Moolenbroektemporary object file, and libtool could not work around it because 576*00b67f09SDavid van Moolenbroekyour compiler does not support \`-c' and \`-o' together. If you 577*00b67f09SDavid van Moolenbroekrepeat this compilation, it may succeed, by chance, but you had better 578*00b67f09SDavid van Moolenbroekavoid parallel builds (make -j) in this platform, or get a better 579*00b67f09SDavid van Moolenbroekcompiler." 580*00b67f09SDavid van Moolenbroek 581*00b67f09SDavid van Moolenbroek $run $rm $removelist 582*00b67f09SDavid van Moolenbroek exit 1 583*00b67f09SDavid van Moolenbroek fi 584*00b67f09SDavid van Moolenbroek 585*00b67f09SDavid van Moolenbroek # Just move the object if needed 586*00b67f09SDavid van Moolenbroek if test x"$output_obj" != x"$obj"; then 587*00b67f09SDavid van Moolenbroek $show "$mv $output_obj $obj" 588*00b67f09SDavid van Moolenbroek if $run $mv $output_obj $obj; then : 589*00b67f09SDavid van Moolenbroek else 590*00b67f09SDavid van Moolenbroek error=$? 591*00b67f09SDavid van Moolenbroek $run $rm $removelist 592*00b67f09SDavid van Moolenbroek exit $error 593*00b67f09SDavid van Moolenbroek fi 594*00b67f09SDavid van Moolenbroek fi 595*00b67f09SDavid van Moolenbroek 596*00b67f09SDavid van Moolenbroek # Create an invalid libtool object if no PIC, so that we do not 597*00b67f09SDavid van Moolenbroek # accidentally link it into a program. 598*00b67f09SDavid van Moolenbroek if test "$build_libtool_libs" != yes; then 599*00b67f09SDavid van Moolenbroek $show "echo timestamp > $libobj" 600*00b67f09SDavid van Moolenbroek $run eval "echo timestamp > \$libobj" || exit $? 601*00b67f09SDavid van Moolenbroek else 602*00b67f09SDavid van Moolenbroek # Move the .lo from within objdir 603*00b67f09SDavid van Moolenbroek $show "$mv $libobj $lo_libobj" 604*00b67f09SDavid van Moolenbroek if $run $mv $libobj $lo_libobj; then : 605*00b67f09SDavid van Moolenbroek else 606*00b67f09SDavid van Moolenbroek error=$? 607*00b67f09SDavid van Moolenbroek $run $rm $removelist 608*00b67f09SDavid van Moolenbroek exit $error 609*00b67f09SDavid van Moolenbroek fi 610*00b67f09SDavid van Moolenbroek fi 611*00b67f09SDavid van Moolenbroek fi 612*00b67f09SDavid van Moolenbroek 613*00b67f09SDavid van Moolenbroek # Unlock the critical section if it was locked 614*00b67f09SDavid van Moolenbroek if test "$need_locks" != no; then 615*00b67f09SDavid van Moolenbroek $rm "$lockfile" 616*00b67f09SDavid van Moolenbroek fi 617*00b67f09SDavid van Moolenbroek 618*00b67f09SDavid van Moolenbroek exit 0 619*00b67f09SDavid van Moolenbroek ;; 620*00b67f09SDavid van Moolenbroek 621*00b67f09SDavid van Moolenbroek # libtool link mode 622*00b67f09SDavid van Moolenbroek link) 623*00b67f09SDavid van Moolenbroek modename="$modename: link" 624*00b67f09SDavid van Moolenbroek case "$host" in 625*00b67f09SDavid van Moolenbroek *-*-cygwin* | *-*-mingw* | *-*-os2*) 626*00b67f09SDavid van Moolenbroek # It is impossible to link a dll without this setting, and 627*00b67f09SDavid van Moolenbroek # we shouldn't force the makefile maintainer to figure out 628*00b67f09SDavid van Moolenbroek # which system we are compiling for in order to pass an extra 629*00b67f09SDavid van Moolenbroek # flag for every libtool invokation. 630*00b67f09SDavid van Moolenbroek # allow_undefined=no 631*00b67f09SDavid van Moolenbroek 632*00b67f09SDavid van Moolenbroek # FIXME: Unfortunately, there are problems with the above when trying 633*00b67f09SDavid van Moolenbroek # to make a dll which has undefined symbols, in which case not 634*00b67f09SDavid van Moolenbroek # even a static library is built. For now, we need to specify 635*00b67f09SDavid van Moolenbroek # -no-undefined on the libtool link line when we can be certain 636*00b67f09SDavid van Moolenbroek # that all symbols are satisfied, otherwise we get a static library. 637*00b67f09SDavid van Moolenbroek allow_undefined=yes 638*00b67f09SDavid van Moolenbroek 639*00b67f09SDavid van Moolenbroek # This is a source program that is used to create dlls on Windows 640*00b67f09SDavid van Moolenbroek # Don't remove nor modify the starting and closing comments 641*00b67f09SDavid van Moolenbroek# /* ltdll.c starts here */ 642*00b67f09SDavid van Moolenbroek# #define WIN32_LEAN_AND_MEAN 643*00b67f09SDavid van Moolenbroek# #include <windows.h> 644*00b67f09SDavid van Moolenbroek# #undef WIN32_LEAN_AND_MEAN 645*00b67f09SDavid van Moolenbroek# #include <stdio.h> 646*00b67f09SDavid van Moolenbroek# 647*00b67f09SDavid van Moolenbroek# #ifndef __CYGWIN__ 648*00b67f09SDavid van Moolenbroek# # ifdef __CYGWIN32__ 649*00b67f09SDavid van Moolenbroek# # define __CYGWIN__ __CYGWIN32__ 650*00b67f09SDavid van Moolenbroek# # endif 651*00b67f09SDavid van Moolenbroek# #endif 652*00b67f09SDavid van Moolenbroek# 653*00b67f09SDavid van Moolenbroek# #ifdef __cplusplus 654*00b67f09SDavid van Moolenbroek# extern "C" { 655*00b67f09SDavid van Moolenbroek# #endif 656*00b67f09SDavid van Moolenbroek# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); 657*00b67f09SDavid van Moolenbroek# #ifdef __cplusplus 658*00b67f09SDavid van Moolenbroek# } 659*00b67f09SDavid van Moolenbroek# #endif 660*00b67f09SDavid van Moolenbroek# 661*00b67f09SDavid van Moolenbroek# #ifdef __CYGWIN__ 662*00b67f09SDavid van Moolenbroek# #include <cygwin/cygwin_dll.h> 663*00b67f09SDavid van Moolenbroek# DECLARE_CYGWIN_DLL( DllMain ); 664*00b67f09SDavid van Moolenbroek# #endif 665*00b67f09SDavid van Moolenbroek# HINSTANCE __hDllInstance_base; 666*00b67f09SDavid van Moolenbroek# 667*00b67f09SDavid van Moolenbroek# BOOL APIENTRY 668*00b67f09SDavid van Moolenbroek# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) 669*00b67f09SDavid van Moolenbroek# { 670*00b67f09SDavid van Moolenbroek# __hDllInstance_base = hInst; 671*00b67f09SDavid van Moolenbroek# return TRUE; 672*00b67f09SDavid van Moolenbroek# } 673*00b67f09SDavid van Moolenbroek# /* ltdll.c ends here */ 674*00b67f09SDavid van Moolenbroek # This is a source program that is used to create import libraries 675*00b67f09SDavid van Moolenbroek # on Windows for dlls which lack them. Don't remove nor modify the 676*00b67f09SDavid van Moolenbroek # starting and closing comments 677*00b67f09SDavid van Moolenbroek# /* impgen.c starts here */ 678*00b67f09SDavid van Moolenbroek# /* Copyright (C) 1999 Free Software Foundation, Inc. 679*00b67f09SDavid van Moolenbroek# 680*00b67f09SDavid van Moolenbroek# This file is part of GNU libtool. 681*00b67f09SDavid van Moolenbroek# 682*00b67f09SDavid van Moolenbroek# This program is free software; you can redistribute it and/or modify 683*00b67f09SDavid van Moolenbroek# it under the terms of the GNU General Public License as published by 684*00b67f09SDavid van Moolenbroek# the Free Software Foundation; either version 2 of the License, or 685*00b67f09SDavid van Moolenbroek# (at your option) any later version. 686*00b67f09SDavid van Moolenbroek# 687*00b67f09SDavid van Moolenbroek# This program is distributed in the hope that it will be useful, 688*00b67f09SDavid van Moolenbroek# but WITHOUT ANY WARRANTY; without even the implied warranty of 689*00b67f09SDavid van Moolenbroek# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 690*00b67f09SDavid van Moolenbroek# GNU General Public License for more details. 691*00b67f09SDavid van Moolenbroek# 692*00b67f09SDavid van Moolenbroek# You should have received a copy of the GNU General Public License 693*00b67f09SDavid van Moolenbroek# along with this program; if not, write to the Free Software 694*00b67f09SDavid van Moolenbroek# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 695*00b67f09SDavid van Moolenbroek# */ 696*00b67f09SDavid van Moolenbroek# 697*00b67f09SDavid van Moolenbroek# #include <stdio.h> /* for printf() */ 698*00b67f09SDavid van Moolenbroek# #include <unistd.h> /* for open(), lseek(), read() */ 699*00b67f09SDavid van Moolenbroek# #include <fcntl.h> /* for O_RDONLY, O_BINARY */ 700*00b67f09SDavid van Moolenbroek# #include <string.h> /* for strdup() */ 701*00b67f09SDavid van Moolenbroek# 702*00b67f09SDavid van Moolenbroek# static unsigned int 703*00b67f09SDavid van Moolenbroek# pe_get16 (fd, offset) 704*00b67f09SDavid van Moolenbroek# int fd; 705*00b67f09SDavid van Moolenbroek# int offset; 706*00b67f09SDavid van Moolenbroek# { 707*00b67f09SDavid van Moolenbroek# unsigned char b[2]; 708*00b67f09SDavid van Moolenbroek# lseek (fd, offset, SEEK_SET); 709*00b67f09SDavid van Moolenbroek# read (fd, b, 2); 710*00b67f09SDavid van Moolenbroek# return b[0] + (b[1]<<8); 711*00b67f09SDavid van Moolenbroek# } 712*00b67f09SDavid van Moolenbroek# 713*00b67f09SDavid van Moolenbroek# static unsigned int 714*00b67f09SDavid van Moolenbroek# pe_get32 (fd, offset) 715*00b67f09SDavid van Moolenbroek# int fd; 716*00b67f09SDavid van Moolenbroek# int offset; 717*00b67f09SDavid van Moolenbroek# { 718*00b67f09SDavid van Moolenbroek# unsigned char b[4]; 719*00b67f09SDavid van Moolenbroek# lseek (fd, offset, SEEK_SET); 720*00b67f09SDavid van Moolenbroek# read (fd, b, 4); 721*00b67f09SDavid van Moolenbroek# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); 722*00b67f09SDavid van Moolenbroek# } 723*00b67f09SDavid van Moolenbroek# 724*00b67f09SDavid van Moolenbroek# static unsigned int 725*00b67f09SDavid van Moolenbroek# pe_as32 (ptr) 726*00b67f09SDavid van Moolenbroek# void *ptr; 727*00b67f09SDavid van Moolenbroek# { 728*00b67f09SDavid van Moolenbroek# unsigned char *b = ptr; 729*00b67f09SDavid van Moolenbroek# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); 730*00b67f09SDavid van Moolenbroek# } 731*00b67f09SDavid van Moolenbroek# 732*00b67f09SDavid van Moolenbroek# int 733*00b67f09SDavid van Moolenbroek# main (argc, argv) 734*00b67f09SDavid van Moolenbroek# int argc; 735*00b67f09SDavid van Moolenbroek# char *argv[]; 736*00b67f09SDavid van Moolenbroek# { 737*00b67f09SDavid van Moolenbroek# int dll; 738*00b67f09SDavid van Moolenbroek# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; 739*00b67f09SDavid van Moolenbroek# unsigned long export_rva, export_size, nsections, secptr, expptr; 740*00b67f09SDavid van Moolenbroek# unsigned long name_rvas, nexp; 741*00b67f09SDavid van Moolenbroek# unsigned char *expdata, *erva; 742*00b67f09SDavid van Moolenbroek# char *filename, *dll_name; 743*00b67f09SDavid van Moolenbroek# 744*00b67f09SDavid van Moolenbroek# filename = argv[1]; 745*00b67f09SDavid van Moolenbroek# 746*00b67f09SDavid van Moolenbroek# dll = open(filename, O_RDONLY|O_BINARY); 747*00b67f09SDavid van Moolenbroek# if (!dll) 748*00b67f09SDavid van Moolenbroek# return 1; 749*00b67f09SDavid van Moolenbroek# 750*00b67f09SDavid van Moolenbroek# dll_name = filename; 751*00b67f09SDavid van Moolenbroek# 752*00b67f09SDavid van Moolenbroek# for (i=0; filename[i]; i++) 753*00b67f09SDavid van Moolenbroek# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') 754*00b67f09SDavid van Moolenbroek# dll_name = filename + i +1; 755*00b67f09SDavid van Moolenbroek# 756*00b67f09SDavid van Moolenbroek# pe_header_offset = pe_get32 (dll, 0x3c); 757*00b67f09SDavid van Moolenbroek# opthdr_ofs = pe_header_offset + 4 + 20; 758*00b67f09SDavid van Moolenbroek# num_entries = pe_get32 (dll, opthdr_ofs + 92); 759*00b67f09SDavid van Moolenbroek# 760*00b67f09SDavid van Moolenbroek# if (num_entries < 1) /* no exports */ 761*00b67f09SDavid van Moolenbroek# return 1; 762*00b67f09SDavid van Moolenbroek# 763*00b67f09SDavid van Moolenbroek# export_rva = pe_get32 (dll, opthdr_ofs + 96); 764*00b67f09SDavid van Moolenbroek# export_size = pe_get32 (dll, opthdr_ofs + 100); 765*00b67f09SDavid van Moolenbroek# nsections = pe_get16 (dll, pe_header_offset + 4 +2); 766*00b67f09SDavid van Moolenbroek# secptr = (pe_header_offset + 4 + 20 + 767*00b67f09SDavid van Moolenbroek# pe_get16 (dll, pe_header_offset + 4 + 16)); 768*00b67f09SDavid van Moolenbroek# 769*00b67f09SDavid van Moolenbroek# expptr = 0; 770*00b67f09SDavid van Moolenbroek# for (i = 0; i < nsections; i++) 771*00b67f09SDavid van Moolenbroek# { 772*00b67f09SDavid van Moolenbroek# char sname[8]; 773*00b67f09SDavid van Moolenbroek# unsigned long secptr1 = secptr + 40 * i; 774*00b67f09SDavid van Moolenbroek# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); 775*00b67f09SDavid van Moolenbroek# unsigned long vsize = pe_get32 (dll, secptr1 + 16); 776*00b67f09SDavid van Moolenbroek# unsigned long fptr = pe_get32 (dll, secptr1 + 20); 777*00b67f09SDavid van Moolenbroek# lseek(dll, secptr1, SEEK_SET); 778*00b67f09SDavid van Moolenbroek# read(dll, sname, 8); 779*00b67f09SDavid van Moolenbroek# if (vaddr <= export_rva && vaddr+vsize > export_rva) 780*00b67f09SDavid van Moolenbroek# { 781*00b67f09SDavid van Moolenbroek# expptr = fptr + (export_rva - vaddr); 782*00b67f09SDavid van Moolenbroek# if (export_rva + export_size > vaddr + vsize) 783*00b67f09SDavid van Moolenbroek# export_size = vsize - (export_rva - vaddr); 784*00b67f09SDavid van Moolenbroek# break; 785*00b67f09SDavid van Moolenbroek# } 786*00b67f09SDavid van Moolenbroek# } 787*00b67f09SDavid van Moolenbroek# 788*00b67f09SDavid van Moolenbroek# expdata = (unsigned char*)malloc(export_size); 789*00b67f09SDavid van Moolenbroek# lseek (dll, expptr, SEEK_SET); 790*00b67f09SDavid van Moolenbroek# read (dll, expdata, export_size); 791*00b67f09SDavid van Moolenbroek# erva = expdata - export_rva; 792*00b67f09SDavid van Moolenbroek# 793*00b67f09SDavid van Moolenbroek# nexp = pe_as32 (expdata+24); 794*00b67f09SDavid van Moolenbroek# name_rvas = pe_as32 (expdata+32); 795*00b67f09SDavid van Moolenbroek# 796*00b67f09SDavid van Moolenbroek# printf ("EXPORTS\n"); 797*00b67f09SDavid van Moolenbroek# for (i = 0; i<nexp; i++) 798*00b67f09SDavid van Moolenbroek# { 799*00b67f09SDavid van Moolenbroek# unsigned long name_rva = pe_as32 (erva+name_rvas+i*4); 800*00b67f09SDavid van Moolenbroek# printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i); 801*00b67f09SDavid van Moolenbroek# } 802*00b67f09SDavid van Moolenbroek# 803*00b67f09SDavid van Moolenbroek# return 0; 804*00b67f09SDavid van Moolenbroek# } 805*00b67f09SDavid van Moolenbroek# /* impgen.c ends here */ 806*00b67f09SDavid van Moolenbroek ;; 807*00b67f09SDavid van Moolenbroek *) 808*00b67f09SDavid van Moolenbroek allow_undefined=yes 809*00b67f09SDavid van Moolenbroek ;; 810*00b67f09SDavid van Moolenbroek esac 811*00b67f09SDavid van Moolenbroek compile_command="$nonopt" 812*00b67f09SDavid van Moolenbroek finalize_command="$nonopt" 813*00b67f09SDavid van Moolenbroek 814*00b67f09SDavid van Moolenbroek compile_rpath= 815*00b67f09SDavid van Moolenbroek finalize_rpath= 816*00b67f09SDavid van Moolenbroek compile_shlibpath= 817*00b67f09SDavid van Moolenbroek finalize_shlibpath= 818*00b67f09SDavid van Moolenbroek convenience= 819*00b67f09SDavid van Moolenbroek old_convenience= 820*00b67f09SDavid van Moolenbroek deplibs= 821*00b67f09SDavid van Moolenbroek linkopts= 822*00b67f09SDavid van Moolenbroek 823*00b67f09SDavid van Moolenbroek if test -n "$shlibpath_var"; then 824*00b67f09SDavid van Moolenbroek # get the directories listed in $shlibpath_var 825*00b67f09SDavid van Moolenbroek eval lib_search_path=\`\$echo \"X \${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` 826*00b67f09SDavid van Moolenbroek else 827*00b67f09SDavid van Moolenbroek lib_search_path= 828*00b67f09SDavid van Moolenbroek fi 829*00b67f09SDavid van Moolenbroek # now prepend the system-specific ones 830*00b67f09SDavid van Moolenbroek eval lib_search_path=\"$sys_lib_search_path_spec\$lib_search_path\" 831*00b67f09SDavid van Moolenbroek eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 832*00b67f09SDavid van Moolenbroek 833*00b67f09SDavid van Moolenbroek avoid_version=no 834*00b67f09SDavid van Moolenbroek dlfiles= 835*00b67f09SDavid van Moolenbroek dlprefiles= 836*00b67f09SDavid van Moolenbroek dlself=no 837*00b67f09SDavid van Moolenbroek export_dynamic=no 838*00b67f09SDavid van Moolenbroek export_symbols= 839*00b67f09SDavid van Moolenbroek export_symbols_regex= 840*00b67f09SDavid van Moolenbroek generated= 841*00b67f09SDavid van Moolenbroek libobjs= 842*00b67f09SDavid van Moolenbroek link_against_libtool_libs= 843*00b67f09SDavid van Moolenbroek ltlibs= 844*00b67f09SDavid van Moolenbroek module=no 845*00b67f09SDavid van Moolenbroek objs= 846*00b67f09SDavid van Moolenbroek prefer_static_libs=no 847*00b67f09SDavid van Moolenbroek preload=no 848*00b67f09SDavid van Moolenbroek prev= 849*00b67f09SDavid van Moolenbroek prevarg= 850*00b67f09SDavid van Moolenbroek release= 851*00b67f09SDavid van Moolenbroek rpath= 852*00b67f09SDavid van Moolenbroek xrpath= 853*00b67f09SDavid van Moolenbroek perm_rpath= 854*00b67f09SDavid van Moolenbroek temp_rpath= 855*00b67f09SDavid van Moolenbroek thread_safe=no 856*00b67f09SDavid van Moolenbroek vinfo= 857*00b67f09SDavid van Moolenbroek 858*00b67f09SDavid van Moolenbroek # We need to know -static, to get the right output filenames. 859*00b67f09SDavid van Moolenbroek for arg 860*00b67f09SDavid van Moolenbroek do 861*00b67f09SDavid van Moolenbroek case "$arg" in 862*00b67f09SDavid van Moolenbroek -all-static | -static) 863*00b67f09SDavid van Moolenbroek if test "X$arg" = "X-all-static"; then 864*00b67f09SDavid van Moolenbroek if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 865*00b67f09SDavid van Moolenbroek $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 866*00b67f09SDavid van Moolenbroek fi 867*00b67f09SDavid van Moolenbroek if test -n "$link_static_flag"; then 868*00b67f09SDavid van Moolenbroek dlopen_self=$dlopen_self_static 869*00b67f09SDavid van Moolenbroek fi 870*00b67f09SDavid van Moolenbroek else 871*00b67f09SDavid van Moolenbroek if test -z "$pic_flag" && test -n "$link_static_flag"; then 872*00b67f09SDavid van Moolenbroek dlopen_self=$dlopen_self_static 873*00b67f09SDavid van Moolenbroek fi 874*00b67f09SDavid van Moolenbroek fi 875*00b67f09SDavid van Moolenbroek build_libtool_libs=no 876*00b67f09SDavid van Moolenbroek build_old_libs=yes 877*00b67f09SDavid van Moolenbroek prefer_static_libs=yes 878*00b67f09SDavid van Moolenbroek break 879*00b67f09SDavid van Moolenbroek ;; 880*00b67f09SDavid van Moolenbroek esac 881*00b67f09SDavid van Moolenbroek done 882*00b67f09SDavid van Moolenbroek 883*00b67f09SDavid van Moolenbroek # See if our shared archives depend on static archives. 884*00b67f09SDavid van Moolenbroek test -n "$old_archive_from_new_cmds" && build_old_libs=yes 885*00b67f09SDavid van Moolenbroek 886*00b67f09SDavid van Moolenbroek # Go through the arguments, transforming them on the way. 887*00b67f09SDavid van Moolenbroek while test $# -gt 0; do 888*00b67f09SDavid van Moolenbroek arg="$1" 889*00b67f09SDavid van Moolenbroek shift 890*00b67f09SDavid van Moolenbroek 891*00b67f09SDavid van Moolenbroek # If the previous option needs an argument, assign it. 892*00b67f09SDavid van Moolenbroek if test -n "$prev"; then 893*00b67f09SDavid van Moolenbroek case "$prev" in 894*00b67f09SDavid van Moolenbroek output) 895*00b67f09SDavid van Moolenbroek compile_command="$compile_command @OUTPUT@" 896*00b67f09SDavid van Moolenbroek finalize_command="$finalize_command @OUTPUT@" 897*00b67f09SDavid van Moolenbroek ;; 898*00b67f09SDavid van Moolenbroek esac 899*00b67f09SDavid van Moolenbroek 900*00b67f09SDavid van Moolenbroek case "$prev" in 901*00b67f09SDavid van Moolenbroek dlfiles|dlprefiles) 902*00b67f09SDavid van Moolenbroek if test "$preload" = no; then 903*00b67f09SDavid van Moolenbroek # Add the symbol object into the linking commands. 904*00b67f09SDavid van Moolenbroek compile_command="$compile_command @SYMFILE@" 905*00b67f09SDavid van Moolenbroek finalize_command="$finalize_command @SYMFILE@" 906*00b67f09SDavid van Moolenbroek preload=yes 907*00b67f09SDavid van Moolenbroek fi 908*00b67f09SDavid van Moolenbroek case "$arg" in 909*00b67f09SDavid van Moolenbroek *.la | *.lo) ;; # We handle these cases below. 910*00b67f09SDavid van Moolenbroek force) 911*00b67f09SDavid van Moolenbroek if test "$dlself" = no; then 912*00b67f09SDavid van Moolenbroek dlself=needless 913*00b67f09SDavid van Moolenbroek export_dynamic=yes 914*00b67f09SDavid van Moolenbroek fi 915*00b67f09SDavid van Moolenbroek prev= 916*00b67f09SDavid van Moolenbroek continue 917*00b67f09SDavid van Moolenbroek ;; 918*00b67f09SDavid van Moolenbroek self) 919*00b67f09SDavid van Moolenbroek if test "$prev" = dlprefiles; then 920*00b67f09SDavid van Moolenbroek dlself=yes 921*00b67f09SDavid van Moolenbroek elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 922*00b67f09SDavid van Moolenbroek dlself=yes 923*00b67f09SDavid van Moolenbroek else 924*00b67f09SDavid van Moolenbroek dlself=needless 925*00b67f09SDavid van Moolenbroek export_dynamic=yes 926*00b67f09SDavid van Moolenbroek fi 927*00b67f09SDavid van Moolenbroek prev= 928*00b67f09SDavid van Moolenbroek continue 929*00b67f09SDavid van Moolenbroek ;; 930*00b67f09SDavid van Moolenbroek *) 931*00b67f09SDavid van Moolenbroek if test "$prev" = dlfiles; then 932*00b67f09SDavid van Moolenbroek dlfiles="$dlfiles $arg" 933*00b67f09SDavid van Moolenbroek else 934*00b67f09SDavid van Moolenbroek dlprefiles="$dlprefiles $arg" 935*00b67f09SDavid van Moolenbroek fi 936*00b67f09SDavid van Moolenbroek prev= 937*00b67f09SDavid van Moolenbroek ;; 938*00b67f09SDavid van Moolenbroek esac 939*00b67f09SDavid van Moolenbroek ;; 940*00b67f09SDavid van Moolenbroek expsyms) 941*00b67f09SDavid van Moolenbroek export_symbols="$arg" 942*00b67f09SDavid van Moolenbroek if test ! -f "$arg"; then 943*00b67f09SDavid van Moolenbroek $echo "$modename: symbol file \`$arg' does not exist" 944*00b67f09SDavid van Moolenbroek exit 1 945*00b67f09SDavid van Moolenbroek fi 946*00b67f09SDavid van Moolenbroek prev= 947*00b67f09SDavid van Moolenbroek continue 948*00b67f09SDavid van Moolenbroek ;; 949*00b67f09SDavid van Moolenbroek expsyms_regex) 950*00b67f09SDavid van Moolenbroek export_symbols_regex="$arg" 951*00b67f09SDavid van Moolenbroek prev= 952*00b67f09SDavid van Moolenbroek continue 953*00b67f09SDavid van Moolenbroek ;; 954*00b67f09SDavid van Moolenbroek release) 955*00b67f09SDavid van Moolenbroek release="-$arg" 956*00b67f09SDavid van Moolenbroek prev= 957*00b67f09SDavid van Moolenbroek continue 958*00b67f09SDavid van Moolenbroek ;; 959*00b67f09SDavid van Moolenbroek rpath | xrpath) 960*00b67f09SDavid van Moolenbroek # We need an absolute path. 961*00b67f09SDavid van Moolenbroek case "$arg" in 962*00b67f09SDavid van Moolenbroek [\\/]* | [A-Za-z]:[\\/]*) ;; 963*00b67f09SDavid van Moolenbroek *) 964*00b67f09SDavid van Moolenbroek $echo "$modename: only absolute run-paths are allowed" 1>&2 965*00b67f09SDavid van Moolenbroek exit 1 966*00b67f09SDavid van Moolenbroek ;; 967*00b67f09SDavid van Moolenbroek esac 968*00b67f09SDavid van Moolenbroek if test "$prev" = rpath; then 969*00b67f09SDavid van Moolenbroek case "$rpath " in 970*00b67f09SDavid van Moolenbroek *" $arg "*) ;; 971*00b67f09SDavid van Moolenbroek *) rpath="$rpath $arg" ;; 972*00b67f09SDavid van Moolenbroek esac 973*00b67f09SDavid van Moolenbroek else 974*00b67f09SDavid van Moolenbroek case "$xrpath " in 975*00b67f09SDavid van Moolenbroek *" $arg "*) ;; 976*00b67f09SDavid van Moolenbroek *) xrpath="$xrpath $arg" ;; 977*00b67f09SDavid van Moolenbroek esac 978*00b67f09SDavid van Moolenbroek fi 979*00b67f09SDavid van Moolenbroek prev= 980*00b67f09SDavid van Moolenbroek continue 981*00b67f09SDavid van Moolenbroek ;; 982*00b67f09SDavid van Moolenbroek *) 983*00b67f09SDavid van Moolenbroek eval "$prev=\"\$arg\"" 984*00b67f09SDavid van Moolenbroek prev= 985*00b67f09SDavid van Moolenbroek continue 986*00b67f09SDavid van Moolenbroek ;; 987*00b67f09SDavid van Moolenbroek esac 988*00b67f09SDavid van Moolenbroek fi 989*00b67f09SDavid van Moolenbroek 990*00b67f09SDavid van Moolenbroek prevarg="$arg" 991*00b67f09SDavid van Moolenbroek 992*00b67f09SDavid van Moolenbroek case "$arg" in 993*00b67f09SDavid van Moolenbroek -all-static) 994*00b67f09SDavid van Moolenbroek if test -n "$link_static_flag"; then 995*00b67f09SDavid van Moolenbroek compile_command="$compile_command $link_static_flag" 996*00b67f09SDavid van Moolenbroek finalize_command="$finalize_command $link_static_flag" 997*00b67f09SDavid van Moolenbroek fi 998*00b67f09SDavid van Moolenbroek continue 999*00b67f09SDavid van Moolenbroek ;; 1000*00b67f09SDavid van Moolenbroek 1001*00b67f09SDavid van Moolenbroek -allow-undefined) 1002*00b67f09SDavid van Moolenbroek # FIXME: remove this flag sometime in the future. 1003*00b67f09SDavid van Moolenbroek $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 1004*00b67f09SDavid van Moolenbroek continue 1005*00b67f09SDavid van Moolenbroek ;; 1006*00b67f09SDavid van Moolenbroek 1007*00b67f09SDavid van Moolenbroek -avoid-version) 1008*00b67f09SDavid van Moolenbroek avoid_version=yes 1009*00b67f09SDavid van Moolenbroek continue 1010*00b67f09SDavid van Moolenbroek ;; 1011*00b67f09SDavid van Moolenbroek 1012*00b67f09SDavid van Moolenbroek -dlopen) 1013*00b67f09SDavid van Moolenbroek prev=dlfiles 1014*00b67f09SDavid van Moolenbroek continue 1015*00b67f09SDavid van Moolenbroek ;; 1016*00b67f09SDavid van Moolenbroek 1017*00b67f09SDavid van Moolenbroek -dlpreopen) 1018*00b67f09SDavid van Moolenbroek prev=dlprefiles 1019*00b67f09SDavid van Moolenbroek continue 1020*00b67f09SDavid van Moolenbroek ;; 1021*00b67f09SDavid van Moolenbroek 1022*00b67f09SDavid van Moolenbroek -export-dynamic) 1023*00b67f09SDavid van Moolenbroek export_dynamic=yes 1024*00b67f09SDavid van Moolenbroek continue 1025*00b67f09SDavid van Moolenbroek ;; 1026*00b67f09SDavid van Moolenbroek 1027*00b67f09SDavid van Moolenbroek -export-symbols | -export-symbols-regex) 1028*00b67f09SDavid van Moolenbroek if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 1029*00b67f09SDavid van Moolenbroek $echo "$modename: not more than one -exported-symbols argument allowed" 1030*00b67f09SDavid van Moolenbroek exit 1 1031*00b67f09SDavid van Moolenbroek fi 1032*00b67f09SDavid van Moolenbroek if test "X$arg" = "X-export-symbols"; then 1033*00b67f09SDavid van Moolenbroek prev=expsyms 1034*00b67f09SDavid van Moolenbroek else 1035*00b67f09SDavid van Moolenbroek prev=expsyms_regex 1036*00b67f09SDavid van Moolenbroek fi 1037*00b67f09SDavid van Moolenbroek continue 1038*00b67f09SDavid van Moolenbroek ;; 1039*00b67f09SDavid van Moolenbroek 1040*00b67f09SDavid van Moolenbroek -L*) 1041*00b67f09SDavid van Moolenbroek dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` 1042*00b67f09SDavid van Moolenbroek # We need an absolute path. 1043*00b67f09SDavid van Moolenbroek case "$dir" in 1044*00b67f09SDavid van Moolenbroek [\\/]* | [A-Za-z]:[\\/]*) ;; 1045*00b67f09SDavid van Moolenbroek *) 1046*00b67f09SDavid van Moolenbroek absdir=`cd "$dir" && pwd` 1047*00b67f09SDavid van Moolenbroek if test -z "$absdir"; then 1048*00b67f09SDavid van Moolenbroek $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 1049*00b67f09SDavid van Moolenbroek $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 1050*00b67f09SDavid van Moolenbroek absdir="$dir" 1051*00b67f09SDavid van Moolenbroek fi 1052*00b67f09SDavid van Moolenbroek dir="$absdir" 1053*00b67f09SDavid van Moolenbroek ;; 1054*00b67f09SDavid van Moolenbroek esac 1055*00b67f09SDavid van Moolenbroek case " $deplibs " in 1056*00b67f09SDavid van Moolenbroek *" $arg "*) ;; 1057*00b67f09SDavid van Moolenbroek *) deplibs="$deplibs $arg";; 1058*00b67f09SDavid van Moolenbroek esac 1059*00b67f09SDavid van Moolenbroek case " $lib_search_path " in 1060*00b67f09SDavid van Moolenbroek *" $dir "*) ;; 1061*00b67f09SDavid van Moolenbroek *) lib_search_path="$lib_search_path $dir";; 1062*00b67f09SDavid van Moolenbroek esac 1063*00b67f09SDavid van Moolenbroek case "$host" in 1064*00b67f09SDavid van Moolenbroek *-*-cygwin* | *-*-mingw* | *-*-os2*) 1065*00b67f09SDavid van Moolenbroek dllsearchdir=`cd "$dir" && pwd || echo "$dir"` 1066*00b67f09SDavid van Moolenbroek case ":$dllsearchpath:" in 1067*00b67f09SDavid van Moolenbroek ::) dllsearchpath="$dllsearchdir";; 1068*00b67f09SDavid van Moolenbroek *":$dllsearchdir:"*) ;; 1069*00b67f09SDavid van Moolenbroek *) dllsearchpath="$dllsearchpath:$dllsearchdir";; 1070*00b67f09SDavid van Moolenbroek esac 1071*00b67f09SDavid van Moolenbroek ;; 1072*00b67f09SDavid van Moolenbroek esac 1073*00b67f09SDavid van Moolenbroek ;; 1074*00b67f09SDavid van Moolenbroek 1075*00b67f09SDavid van Moolenbroek -l*) 1076*00b67f09SDavid van Moolenbroek if test "$arg" = "-lc"; then 1077*00b67f09SDavid van Moolenbroek case "$host" in 1078*00b67f09SDavid van Moolenbroek *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*) 1079*00b67f09SDavid van Moolenbroek # These systems don't actually have c library (as such) 1080*00b67f09SDavid van Moolenbroek continue 1081*00b67f09SDavid van Moolenbroek ;; 1082*00b67f09SDavid van Moolenbroek esac 1083*00b67f09SDavid van Moolenbroek elif test "$arg" = "-lm"; then 1084*00b67f09SDavid van Moolenbroek case "$host" in 1085*00b67f09SDavid van Moolenbroek *-*-cygwin* | *-*-beos*) 1086*00b67f09SDavid van Moolenbroek # These systems don't actually have math library (as such) 1087*00b67f09SDavid van Moolenbroek continue 1088*00b67f09SDavid van Moolenbroek ;; 1089*00b67f09SDavid van Moolenbroek esac 1090*00b67f09SDavid van Moolenbroek fi 1091*00b67f09SDavid van Moolenbroek deplibs="$deplibs $arg" 1092*00b67f09SDavid van Moolenbroek ;; 1093*00b67f09SDavid van Moolenbroek 1094*00b67f09SDavid van Moolenbroek -module) 1095*00b67f09SDavid van Moolenbroek module=yes 1096*00b67f09SDavid van Moolenbroek continue 1097*00b67f09SDavid van Moolenbroek ;; 1098*00b67f09SDavid van Moolenbroek 1099*00b67f09SDavid van Moolenbroek -no-undefined) 1100*00b67f09SDavid van Moolenbroek allow_undefined=no 1101*00b67f09SDavid van Moolenbroek continue 1102*00b67f09SDavid van Moolenbroek ;; 1103*00b67f09SDavid van Moolenbroek 1104*00b67f09SDavid van Moolenbroek -o) prev=output ;; 1105*00b67f09SDavid van Moolenbroek 1106*00b67f09SDavid van Moolenbroek -release) 1107*00b67f09SDavid van Moolenbroek prev=release 1108*00b67f09SDavid van Moolenbroek continue 1109*00b67f09SDavid van Moolenbroek ;; 1110*00b67f09SDavid van Moolenbroek 1111*00b67f09SDavid van Moolenbroek -rpath) 1112*00b67f09SDavid van Moolenbroek prev=rpath 1113*00b67f09SDavid van Moolenbroek continue 1114*00b67f09SDavid van Moolenbroek ;; 1115*00b67f09SDavid van Moolenbroek 1116*00b67f09SDavid van Moolenbroek -R) 1117*00b67f09SDavid van Moolenbroek prev=xrpath 1118*00b67f09SDavid van Moolenbroek continue 1119*00b67f09SDavid van Moolenbroek ;; 1120*00b67f09SDavid van Moolenbroek 1121*00b67f09SDavid van Moolenbroek -R*) 1122*00b67f09SDavid van Moolenbroek dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` 1123*00b67f09SDavid van Moolenbroek # We need an absolute path. 1124*00b67f09SDavid van Moolenbroek case "$dir" in 1125*00b67f09SDavid van Moolenbroek [\\/]* | [A-Za-z]:[\\/]*) ;; 1126*00b67f09SDavid van Moolenbroek *) 1127*00b67f09SDavid van Moolenbroek $echo "$modename: only absolute run-paths are allowed" 1>&2 1128*00b67f09SDavid van Moolenbroek exit 1 1129*00b67f09SDavid van Moolenbroek ;; 1130*00b67f09SDavid van Moolenbroek esac 1131*00b67f09SDavid van Moolenbroek case "$xrpath " in 1132*00b67f09SDavid van Moolenbroek *" $dir "*) ;; 1133*00b67f09SDavid van Moolenbroek *) xrpath="$xrpath $dir" ;; 1134*00b67f09SDavid van Moolenbroek esac 1135*00b67f09SDavid van Moolenbroek continue 1136*00b67f09SDavid van Moolenbroek ;; 1137*00b67f09SDavid van Moolenbroek 1138*00b67f09SDavid van Moolenbroek -static) 1139*00b67f09SDavid van Moolenbroek # If we have no pic_flag, then this is the same as -all-static. 1140*00b67f09SDavid van Moolenbroek if test -z "$pic_flag" && test -n "$link_static_flag"; then 1141*00b67f09SDavid van Moolenbroek compile_command="$compile_command $link_static_flag" 1142*00b67f09SDavid van Moolenbroek finalize_command="$finalize_command $link_static_flag" 1143*00b67f09SDavid van Moolenbroek fi 1144*00b67f09SDavid van Moolenbroek continue 1145*00b67f09SDavid van Moolenbroek ;; 1146*00b67f09SDavid van Moolenbroek 1147*00b67f09SDavid van Moolenbroek -thread-safe) 1148*00b67f09SDavid van Moolenbroek thread_safe=yes 1149*00b67f09SDavid van Moolenbroek continue 1150*00b67f09SDavid van Moolenbroek ;; 1151*00b67f09SDavid van Moolenbroek 1152*00b67f09SDavid van Moolenbroek -version-info) 1153*00b67f09SDavid van Moolenbroek prev=vinfo 1154*00b67f09SDavid van Moolenbroek continue 1155*00b67f09SDavid van Moolenbroek ;; 1156*00b67f09SDavid van Moolenbroek 1157*00b67f09SDavid van Moolenbroek # Some other compiler flag. 1158*00b67f09SDavid van Moolenbroek -* | +*) 1159*00b67f09SDavid van Moolenbroek # Unknown arguments in both finalize_command and compile_command need 1160*00b67f09SDavid van Moolenbroek # to be aesthetically quoted because they are evaled later. 1161*00b67f09SDavid van Moolenbroek arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1162*00b67f09SDavid van Moolenbroek case "$arg" in 1163*00b67f09SDavid van Moolenbroek *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) 1164*00b67f09SDavid van Moolenbroek arg="\"$arg\"" 1165*00b67f09SDavid van Moolenbroek ;; 1166*00b67f09SDavid van Moolenbroek esac 1167*00b67f09SDavid van Moolenbroek ;; 1168*00b67f09SDavid van Moolenbroek 1169*00b67f09SDavid van Moolenbroek *.o | *.obj | *.a | *.lib) 1170*00b67f09SDavid van Moolenbroek # A standard object. 1171*00b67f09SDavid van Moolenbroek objs="$objs $arg" 1172*00b67f09SDavid van Moolenbroek ;; 1173*00b67f09SDavid van Moolenbroek 1174*00b67f09SDavid van Moolenbroek *.lo) 1175*00b67f09SDavid van Moolenbroek # A library object. 1176*00b67f09SDavid van Moolenbroek if test "$prev" = dlfiles; then 1177*00b67f09SDavid van Moolenbroek dlfiles="$dlfiles $arg" 1178*00b67f09SDavid van Moolenbroek if test "$build_libtool_libs" = yes && test "$dlopen" = yes; then 1179*00b67f09SDavid van Moolenbroek prev= 1180*00b67f09SDavid van Moolenbroek continue 1181*00b67f09SDavid van Moolenbroek else 1182*00b67f09SDavid van Moolenbroek # If libtool objects are unsupported, then we need to preload. 1183*00b67f09SDavid van Moolenbroek prev=dlprefiles 1184*00b67f09SDavid van Moolenbroek fi 1185*00b67f09SDavid van Moolenbroek fi 1186*00b67f09SDavid van Moolenbroek 1187*00b67f09SDavid van Moolenbroek if test "$prev" = dlprefiles; then 1188*00b67f09SDavid van Moolenbroek # Preload the old-style object. 1189*00b67f09SDavid van Moolenbroek dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"` 1190*00b67f09SDavid van Moolenbroek prev= 1191*00b67f09SDavid van Moolenbroek fi 1192*00b67f09SDavid van Moolenbroek libobjs="$libobjs $arg" 1193*00b67f09SDavid van Moolenbroek ;; 1194*00b67f09SDavid van Moolenbroek 1195*00b67f09SDavid van Moolenbroek *.la) 1196*00b67f09SDavid van Moolenbroek # A libtool-controlled library. 1197*00b67f09SDavid van Moolenbroek 1198*00b67f09SDavid van Moolenbroek dlname= 1199*00b67f09SDavid van Moolenbroek libdir= 1200*00b67f09SDavid van Moolenbroek library_names= 1201*00b67f09SDavid van Moolenbroek old_library= 1202*00b67f09SDavid van Moolenbroek 1203*00b67f09SDavid van Moolenbroek # Check to see that this really is a libtool archive. 1204*00b67f09SDavid van Moolenbroek if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 1205*00b67f09SDavid van Moolenbroek else 1206*00b67f09SDavid van Moolenbroek $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2 1207*00b67f09SDavid van Moolenbroek exit 1 1208*00b67f09SDavid van Moolenbroek fi 1209*00b67f09SDavid van Moolenbroek 1210*00b67f09SDavid van Moolenbroek # If the library was installed with an old release of libtool, 1211*00b67f09SDavid van Moolenbroek # it will not redefine variable installed. 1212*00b67f09SDavid van Moolenbroek installed=yes 1213*00b67f09SDavid van Moolenbroek 1214*00b67f09SDavid van Moolenbroek # Read the .la file 1215*00b67f09SDavid van Moolenbroek # If there is no directory component, then add one. 1216*00b67f09SDavid van Moolenbroek case "$arg" in 1217*00b67f09SDavid van Moolenbroek */* | *\\*) . $arg ;; 1218*00b67f09SDavid van Moolenbroek *) . ./$arg ;; 1219*00b67f09SDavid van Moolenbroek esac 1220*00b67f09SDavid van Moolenbroek 1221*00b67f09SDavid van Moolenbroek # Get the name of the library we link against. 1222*00b67f09SDavid van Moolenbroek linklib= 1223*00b67f09SDavid van Moolenbroek for l in $old_library $library_names; do 1224*00b67f09SDavid van Moolenbroek linklib="$l" 1225*00b67f09SDavid van Moolenbroek done 1226*00b67f09SDavid van Moolenbroek 1227*00b67f09SDavid van Moolenbroek if test -z "$linklib"; then 1228*00b67f09SDavid van Moolenbroek $echo "$modename: cannot find name of link library for \`$arg'" 1>&2 1229*00b67f09SDavid van Moolenbroek exit 1 1230*00b67f09SDavid van Moolenbroek fi 1231*00b67f09SDavid van Moolenbroek 1232*00b67f09SDavid van Moolenbroek # Find the relevant object directory and library name. 1233*00b67f09SDavid van Moolenbroek name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'` 1234*00b67f09SDavid van Moolenbroek 1235*00b67f09SDavid van Moolenbroek if test "X$installed" = Xyes; then 1236*00b67f09SDavid van Moolenbroek dir="$libdir" 1237*00b67f09SDavid van Moolenbroek else 1238*00b67f09SDavid van Moolenbroek dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1239*00b67f09SDavid van Moolenbroek if test "X$dir" = "X$arg"; then 1240*00b67f09SDavid van Moolenbroek dir="$objdir" 1241*00b67f09SDavid van Moolenbroek else 1242*00b67f09SDavid van Moolenbroek dir="$dir/$objdir" 1243*00b67f09SDavid van Moolenbroek fi 1244*00b67f09SDavid van Moolenbroek fi 1245*00b67f09SDavid van Moolenbroek 1246*00b67f09SDavid van Moolenbroek if test -n "$dependency_libs"; then 1247*00b67f09SDavid van Moolenbroek # Extract -R and -L from dependency_libs 1248*00b67f09SDavid van Moolenbroek temp_deplibs= 1249*00b67f09SDavid van Moolenbroek for deplib in $dependency_libs; do 1250*00b67f09SDavid van Moolenbroek case "$deplib" in 1251*00b67f09SDavid van Moolenbroek -R*) temp_xrpath=`$echo "X$deplib" | $Xsed -e 's/^-R//'` 1252*00b67f09SDavid van Moolenbroek case " $rpath $xrpath " in 1253*00b67f09SDavid van Moolenbroek *" $temp_xrpath "*) ;; 1254*00b67f09SDavid van Moolenbroek *) xrpath="$xrpath $temp_xrpath";; 1255*00b67f09SDavid van Moolenbroek esac;; 1256*00b67f09SDavid van Moolenbroek -L*) case "$compile_command $temp_deplibs " in 1257*00b67f09SDavid van Moolenbroek *" $deplib "*) ;; 1258*00b67f09SDavid van Moolenbroek *) temp_deplibs="$temp_deplibs $deplib";; 1259*00b67f09SDavid van Moolenbroek esac 1260*00b67f09SDavid van Moolenbroek temp_dir=`$echo "X$deplib" | $Xsed -e 's/^-L//'` 1261*00b67f09SDavid van Moolenbroek case " $lib_search_path " in 1262*00b67f09SDavid van Moolenbroek *" $temp_dir "*) ;; 1263*00b67f09SDavid van Moolenbroek *) lib_search_path="$lib_search_path $temp_dir";; 1264*00b67f09SDavid van Moolenbroek esac 1265*00b67f09SDavid van Moolenbroek ;; 1266*00b67f09SDavid van Moolenbroek *) temp_deplibs="$temp_deplibs $deplib";; 1267*00b67f09SDavid van Moolenbroek esac 1268*00b67f09SDavid van Moolenbroek done 1269*00b67f09SDavid van Moolenbroek dependency_libs="$temp_deplibs" 1270*00b67f09SDavid van Moolenbroek fi 1271*00b67f09SDavid van Moolenbroek 1272*00b67f09SDavid van Moolenbroek if test -z "$libdir"; then 1273*00b67f09SDavid van Moolenbroek # It is a libtool convenience library, so add in its objects. 1274*00b67f09SDavid van Moolenbroek convenience="$convenience $dir/$old_library" 1275*00b67f09SDavid van Moolenbroek old_convenience="$old_convenience $dir/$old_library" 1276*00b67f09SDavid van Moolenbroek deplibs="$deplibs$dependency_libs" 1277*00b67f09SDavid van Moolenbroek compile_command="$compile_command $dir/$old_library$dependency_libs" 1278*00b67f09SDavid van Moolenbroek finalize_command="$finalize_command $dir/$old_library$dependency_libs" 1279*00b67f09SDavid van Moolenbroek continue 1280*00b67f09SDavid van Moolenbroek fi 1281*00b67f09SDavid van Moolenbroek 1282*00b67f09SDavid van Moolenbroek # This library was specified with -dlopen. 1283*00b67f09SDavid van Moolenbroek if test "$prev" = dlfiles; then 1284*00b67f09SDavid van Moolenbroek dlfiles="$dlfiles $arg" 1285*00b67f09SDavid van Moolenbroek if test -z "$dlname" || test "$dlopen" != yes || test "$build_libtool_libs" = no; then 1286*00b67f09SDavid van Moolenbroek # If there is no dlname, no dlopen support or we're linking statically, 1287*00b67f09SDavid van Moolenbroek # we need to preload. 1288*00b67f09SDavid van Moolenbroek prev=dlprefiles 1289*00b67f09SDavid van Moolenbroek else 1290*00b67f09SDavid van Moolenbroek # We should not create a dependency on this library, but we 1291*00b67f09SDavid van Moolenbroek # may need any libraries it requires. 1292*00b67f09SDavid van Moolenbroek compile_command="$compile_command$dependency_libs" 1293*00b67f09SDavid van Moolenbroek finalize_command="$finalize_command$dependency_libs" 1294*00b67f09SDavid van Moolenbroek prev= 1295*00b67f09SDavid van Moolenbroek continue 1296*00b67f09SDavid van Moolenbroek fi 1297*00b67f09SDavid van Moolenbroek fi 1298*00b67f09SDavid van Moolenbroek 1299*00b67f09SDavid van Moolenbroek # The library was specified with -dlpreopen. 1300*00b67f09SDavid van Moolenbroek if test "$prev" = dlprefiles; then 1301*00b67f09SDavid van Moolenbroek # Prefer using a static library (so that no silly _DYNAMIC symbols 1302*00b67f09SDavid van Moolenbroek # are required to link). 1303*00b67f09SDavid van Moolenbroek if test -n "$old_library"; then 1304*00b67f09SDavid van Moolenbroek dlprefiles="$dlprefiles $dir/$old_library" 1305*00b67f09SDavid van Moolenbroek else 1306*00b67f09SDavid van Moolenbroek dlprefiles="$dlprefiles $dir/$linklib" 1307*00b67f09SDavid van Moolenbroek fi 1308*00b67f09SDavid van Moolenbroek prev= 1309*00b67f09SDavid van Moolenbroek fi 1310*00b67f09SDavid van Moolenbroek 1311*00b67f09SDavid van Moolenbroek if test -n "$library_names" && 1312*00b67f09SDavid van Moolenbroek { test "$prefer_static_libs" = no || test -z "$old_library"; }; then 1313*00b67f09SDavid van Moolenbroek link_against_libtool_libs="$link_against_libtool_libs $arg" 1314*00b67f09SDavid van Moolenbroek if test -n "$shlibpath_var"; then 1315*00b67f09SDavid van Moolenbroek # Make sure the rpath contains only unique directories. 1316*00b67f09SDavid van Moolenbroek case "$temp_rpath " in 1317*00b67f09SDavid van Moolenbroek *" $dir "*) ;; 1318*00b67f09SDavid van Moolenbroek *) temp_rpath="$temp_rpath $dir" ;; 1319*00b67f09SDavid van Moolenbroek esac 1320*00b67f09SDavid van Moolenbroek fi 1321*00b67f09SDavid van Moolenbroek 1322*00b67f09SDavid van Moolenbroek # We need an absolute path. 1323*00b67f09SDavid van Moolenbroek case "$dir" in 1324*00b67f09SDavid van Moolenbroek [\\/] | [A-Za-z]:[\\/]*) absdir="$dir" ;; 1325*00b67f09SDavid van Moolenbroek *) 1326*00b67f09SDavid van Moolenbroek absdir=`cd "$dir" && pwd` 1327*00b67f09SDavid van Moolenbroek if test -z "$absdir"; then 1328*00b67f09SDavid van Moolenbroek $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 1329*00b67f09SDavid van Moolenbroek $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 1330*00b67f09SDavid van Moolenbroek absdir="$dir" 1331*00b67f09SDavid van Moolenbroek fi 1332*00b67f09SDavid van Moolenbroek ;; 1333*00b67f09SDavid van Moolenbroek esac 1334*00b67f09SDavid van Moolenbroek 1335*00b67f09SDavid van Moolenbroek # This is the magic to use -rpath. 1336*00b67f09SDavid van Moolenbroek # Skip directories that are in the system default run-time 1337*00b67f09SDavid van Moolenbroek # search path, unless they have been requested with -R. 1338*00b67f09SDavid van Moolenbroek case " $sys_lib_dlsearch_path " in 1339*00b67f09SDavid van Moolenbroek *" $absdir "*) ;; 1340*00b67f09SDavid van Moolenbroek *) 1341*00b67f09SDavid van Moolenbroek case "$compile_rpath " in 1342*00b67f09SDavid van Moolenbroek *" $absdir "*) ;; 1343*00b67f09SDavid van Moolenbroek *) compile_rpath="$compile_rpath $absdir" 1344*00b67f09SDavid van Moolenbroek esac 1345*00b67f09SDavid van Moolenbroek ;; 1346*00b67f09SDavid van Moolenbroek esac 1347*00b67f09SDavid van Moolenbroek 1348*00b67f09SDavid van Moolenbroek case " $sys_lib_dlsearch_path " in 1349*00b67f09SDavid van Moolenbroek *" $libdir "*) ;; 1350*00b67f09SDavid van Moolenbroek *) 1351*00b67f09SDavid van Moolenbroek case "$finalize_rpath " in 1352*00b67f09SDavid van Moolenbroek *" $libdir "*) ;; 1353*00b67f09SDavid van Moolenbroek *) finalize_rpath="$finalize_rpath $libdir" 1354*00b67f09SDavid van Moolenbroek esac 1355*00b67f09SDavid van Moolenbroek ;; 1356*00b67f09SDavid van Moolenbroek esac 1357*00b67f09SDavid van Moolenbroek 1358*00b67f09SDavid van Moolenbroek lib_linked=yes 1359*00b67f09SDavid van Moolenbroek case "$hardcode_action" in 1360*00b67f09SDavid van Moolenbroek immediate | unsupported) 1361*00b67f09SDavid van Moolenbroek if test "$hardcode_direct" = no; then 1362*00b67f09SDavid van Moolenbroek compile_command="$compile_command $dir/$linklib" 1363*00b67f09SDavid van Moolenbroek deplibs="$deplibs $dir/$linklib" 1364*00b67f09SDavid van Moolenbroek case "$host" in 1365*00b67f09SDavid van Moolenbroek *-*-cygwin* | *-*-mingw* | *-*-os2*) 1366*00b67f09SDavid van Moolenbroek dllsearchdir=`cd "$dir" && pwd || echo "$dir"` 1367*00b67f09SDavid van Moolenbroek if test -n "$dllsearchpath"; then 1368*00b67f09SDavid van Moolenbroek dllsearchpath="$dllsearchpath:$dllsearchdir" 1369*00b67f09SDavid van Moolenbroek else 1370*00b67f09SDavid van Moolenbroek dllsearchpath="$dllsearchdir" 1371*00b67f09SDavid van Moolenbroek fi 1372*00b67f09SDavid van Moolenbroek ;; 1373*00b67f09SDavid van Moolenbroek esac 1374*00b67f09SDavid van Moolenbroek elif test "$hardcode_minus_L" = no; then 1375*00b67f09SDavid van Moolenbroek case "$host" in 1376*00b67f09SDavid van Moolenbroek *-*-sunos*) 1377*00b67f09SDavid van Moolenbroek compile_shlibpath="$compile_shlibpath$dir:" 1378*00b67f09SDavid van Moolenbroek ;; 1379*00b67f09SDavid van Moolenbroek esac 1380*00b67f09SDavid van Moolenbroek case "$compile_command " in 1381*00b67f09SDavid van Moolenbroek *" -L$dir "*) ;; 1382*00b67f09SDavid van Moolenbroek *) compile_command="$compile_command -L$dir";; 1383*00b67f09SDavid van Moolenbroek esac 1384*00b67f09SDavid van Moolenbroek compile_command="$compile_command -l$name" 1385*00b67f09SDavid van Moolenbroek deplibs="$deplibs -L$dir -l$name" 1386*00b67f09SDavid van Moolenbroek elif test "$hardcode_shlibpath_var" = no; then 1387*00b67f09SDavid van Moolenbroek case ":$compile_shlibpath:" in 1388*00b67f09SDavid van Moolenbroek *":$dir:"*) ;; 1389*00b67f09SDavid van Moolenbroek *) compile_shlibpath="$compile_shlibpath$dir:";; 1390*00b67f09SDavid van Moolenbroek esac 1391*00b67f09SDavid van Moolenbroek compile_command="$compile_command -l$name" 1392*00b67f09SDavid van Moolenbroek deplibs="$deplibs -l$name" 1393*00b67f09SDavid van Moolenbroek else 1394*00b67f09SDavid van Moolenbroek lib_linked=no 1395*00b67f09SDavid van Moolenbroek fi 1396*00b67f09SDavid van Moolenbroek ;; 1397*00b67f09SDavid van Moolenbroek 1398*00b67f09SDavid van Moolenbroek relink) 1399*00b67f09SDavid van Moolenbroek if test "$hardcode_direct" = yes; then 1400*00b67f09SDavid van Moolenbroek compile_command="$compile_command $absdir/$linklib" 1401*00b67f09SDavid van Moolenbroek deplibs="$deplibs $absdir/$linklib" 1402*00b67f09SDavid van Moolenbroek elif test "$hardcode_minus_L" = yes; then 1403*00b67f09SDavid van Moolenbroek case "$compile_command " in 1404*00b67f09SDavid van Moolenbroek *" -L$absdir "*) ;; 1405*00b67f09SDavid van Moolenbroek *) compile_command="$compile_command -L$absdir";; 1406*00b67f09SDavid van Moolenbroek esac 1407*00b67f09SDavid van Moolenbroek compile_command="$compile_command -l$name" 1408*00b67f09SDavid van Moolenbroek deplibs="$deplibs -L$absdir -l$name" 1409*00b67f09SDavid van Moolenbroek elif test "$hardcode_shlibpath_var" = yes; then 1410*00b67f09SDavid van Moolenbroek case ":$compile_shlibpath:" in 1411*00b67f09SDavid van Moolenbroek *":$absdir:"*) ;; 1412*00b67f09SDavid van Moolenbroek *) compile_shlibpath="$compile_shlibpath$absdir:";; 1413*00b67f09SDavid van Moolenbroek esac 1414*00b67f09SDavid van Moolenbroek compile_command="$compile_command -l$name" 1415*00b67f09SDavid van Moolenbroek deplibs="$deplibs -l$name" 1416*00b67f09SDavid van Moolenbroek else 1417*00b67f09SDavid van Moolenbroek lib_linked=no 1418*00b67f09SDavid van Moolenbroek fi 1419*00b67f09SDavid van Moolenbroek ;; 1420*00b67f09SDavid van Moolenbroek 1421*00b67f09SDavid van Moolenbroek *) 1422*00b67f09SDavid van Moolenbroek lib_linked=no 1423*00b67f09SDavid van Moolenbroek ;; 1424*00b67f09SDavid van Moolenbroek esac 1425*00b67f09SDavid van Moolenbroek 1426*00b67f09SDavid van Moolenbroek if test "$lib_linked" != yes; then 1427*00b67f09SDavid van Moolenbroek $echo "$modename: configuration error: unsupported hardcode properties" 1428*00b67f09SDavid van Moolenbroek exit 1 1429*00b67f09SDavid van Moolenbroek fi 1430*00b67f09SDavid van Moolenbroek 1431*00b67f09SDavid van Moolenbroek # Finalize command for both is simple: just hardcode it. 1432*00b67f09SDavid van Moolenbroek if test "$hardcode_direct" = yes; then 1433*00b67f09SDavid van Moolenbroek finalize_command="$finalize_command $libdir/$linklib" 1434*00b67f09SDavid van Moolenbroek elif test "$hardcode_minus_L" = yes; then 1435*00b67f09SDavid van Moolenbroek case "$finalize_command " in 1436*00b67f09SDavid van Moolenbroek *" -L$libdir "*) ;; 1437*00b67f09SDavid van Moolenbroek *) finalize_command="$finalize_command -L$libdir";; 1438*00b67f09SDavid van Moolenbroek esac 1439*00b67f09SDavid van Moolenbroek finalize_command="$finalize_command -l$name" 1440*00b67f09SDavid van Moolenbroek elif test "$hardcode_shlibpath_var" = yes; then 1441*00b67f09SDavid van Moolenbroek case ":$finalize_shlibpath:" in 1442*00b67f09SDavid van Moolenbroek *":$libdir:"*) ;; 1443*00b67f09SDavid van Moolenbroek *) finalize_shlibpath="$finalize_shlibpath$libdir:";; 1444*00b67f09SDavid van Moolenbroek esac 1445*00b67f09SDavid van Moolenbroek finalize_command="$finalize_command -l$name" 1446*00b67f09SDavid van Moolenbroek else 1447*00b67f09SDavid van Moolenbroek # We cannot seem to hardcode it, guess we'll fake it. 1448*00b67f09SDavid van Moolenbroek case "$finalize_command " in 1449*00b67f09SDavid van Moolenbroek *" -L$dir "*) ;; 1450*00b67f09SDavid van Moolenbroek *) finalize_command="$finalize_command -L$libdir";; 1451*00b67f09SDavid van Moolenbroek esac 1452*00b67f09SDavid van Moolenbroek finalize_command="$finalize_command -l$name" 1453*00b67f09SDavid van Moolenbroek fi 1454*00b67f09SDavid van Moolenbroek else 1455*00b67f09SDavid van Moolenbroek # Transform directly to old archives if we don't build new libraries. 1456*00b67f09SDavid van Moolenbroek if test -n "$pic_flag" && test -z "$old_library"; then 1457*00b67f09SDavid van Moolenbroek $echo "$modename: cannot find static library for \`$arg'" 1>&2 1458*00b67f09SDavid van Moolenbroek exit 1 1459*00b67f09SDavid van Moolenbroek fi 1460*00b67f09SDavid van Moolenbroek 1461*00b67f09SDavid van Moolenbroek # Here we assume that one of hardcode_direct or hardcode_minus_L 1462*00b67f09SDavid van Moolenbroek # is not unsupported. This is valid on all known static and 1463*00b67f09SDavid van Moolenbroek # shared platforms. 1464*00b67f09SDavid van Moolenbroek if test "$hardcode_direct" != unsupported; then 1465*00b67f09SDavid van Moolenbroek test -n "$old_library" && linklib="$old_library" 1466*00b67f09SDavid van Moolenbroek compile_command="$compile_command $dir/$linklib" 1467*00b67f09SDavid van Moolenbroek finalize_command="$finalize_command $dir/$linklib" 1468*00b67f09SDavid van Moolenbroek else 1469*00b67f09SDavid van Moolenbroek case "$compile_command " in 1470*00b67f09SDavid van Moolenbroek *" -L$dir "*) ;; 1471*00b67f09SDavid van Moolenbroek *) compile_command="$compile_command -L$dir";; 1472*00b67f09SDavid van Moolenbroek esac 1473*00b67f09SDavid van Moolenbroek compile_command="$compile_command -l$name" 1474*00b67f09SDavid van Moolenbroek case "$finalize_command " in 1475*00b67f09SDavid van Moolenbroek *" -L$dir "*) ;; 1476*00b67f09SDavid van Moolenbroek *) finalize_command="$finalize_command -L$dir";; 1477*00b67f09SDavid van Moolenbroek esac 1478*00b67f09SDavid van Moolenbroek finalize_command="$finalize_command -l$name" 1479*00b67f09SDavid van Moolenbroek fi 1480*00b67f09SDavid van Moolenbroek fi 1481*00b67f09SDavid van Moolenbroek 1482*00b67f09SDavid van Moolenbroek # Add in any libraries that this one depends upon. 1483*00b67f09SDavid van Moolenbroek compile_command="$compile_command$dependency_libs" 1484*00b67f09SDavid van Moolenbroek finalize_command="$finalize_command$dependency_libs" 1485*00b67f09SDavid van Moolenbroek continue 1486*00b67f09SDavid van Moolenbroek ;; 1487*00b67f09SDavid van Moolenbroek 1488*00b67f09SDavid van Moolenbroek # Some other compiler argument. 1489*00b67f09SDavid van Moolenbroek *) 1490*00b67f09SDavid van Moolenbroek # Unknown arguments in both finalize_command and compile_command need 1491*00b67f09SDavid van Moolenbroek # to be aesthetically quoted because they are evaled later. 1492*00b67f09SDavid van Moolenbroek arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1493*00b67f09SDavid van Moolenbroek case "$arg" in 1494*00b67f09SDavid van Moolenbroek *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) 1495*00b67f09SDavid van Moolenbroek arg="\"$arg\"" 1496*00b67f09SDavid van Moolenbroek ;; 1497*00b67f09SDavid van Moolenbroek esac 1498*00b67f09SDavid van Moolenbroek ;; 1499*00b67f09SDavid van Moolenbroek esac 1500*00b67f09SDavid van Moolenbroek 1501*00b67f09SDavid van Moolenbroek # Now actually substitute the argument into the commands. 1502*00b67f09SDavid van Moolenbroek if test -n "$arg"; then 1503*00b67f09SDavid van Moolenbroek compile_command="$compile_command $arg" 1504*00b67f09SDavid van Moolenbroek finalize_command="$finalize_command $arg" 1505*00b67f09SDavid van Moolenbroek fi 1506*00b67f09SDavid van Moolenbroek done 1507*00b67f09SDavid van Moolenbroek 1508*00b67f09SDavid van Moolenbroek if test -n "$prev"; then 1509*00b67f09SDavid van Moolenbroek $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 1510*00b67f09SDavid van Moolenbroek $echo "$help" 1>&2 1511*00b67f09SDavid van Moolenbroek exit 1 1512*00b67f09SDavid van Moolenbroek fi 1513*00b67f09SDavid van Moolenbroek 1514*00b67f09SDavid van Moolenbroek if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 1515*00b67f09SDavid van Moolenbroek eval arg=\"$export_dynamic_flag_spec\" 1516*00b67f09SDavid van Moolenbroek compile_command="$compile_command $arg" 1517*00b67f09SDavid van Moolenbroek finalize_command="$finalize_command $arg" 1518*00b67f09SDavid van Moolenbroek fi 1519*00b67f09SDavid van Moolenbroek 1520*00b67f09SDavid van Moolenbroek oldlibs= 1521*00b67f09SDavid van Moolenbroek # calculate the name of the file, without its directory 1522*00b67f09SDavid van Moolenbroek outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` 1523*00b67f09SDavid van Moolenbroek libobjs_save="$libobjs" 1524*00b67f09SDavid van Moolenbroek 1525*00b67f09SDavid van Moolenbroek case "$output" in 1526*00b67f09SDavid van Moolenbroek "") 1527*00b67f09SDavid van Moolenbroek $echo "$modename: you must specify an output file" 1>&2 1528*00b67f09SDavid van Moolenbroek $echo "$help" 1>&2 1529*00b67f09SDavid van Moolenbroek exit 1 1530*00b67f09SDavid van Moolenbroek ;; 1531*00b67f09SDavid van Moolenbroek 1532*00b67f09SDavid van Moolenbroek *.a | *.lib) 1533*00b67f09SDavid van Moolenbroek if test -n "$link_against_libtool_libs"; then 1534*00b67f09SDavid van Moolenbroek $echo "$modename: error: cannot link libtool libraries into archives" 1>&2 1535*00b67f09SDavid van Moolenbroek exit 1 1536*00b67f09SDavid van Moolenbroek fi 1537*00b67f09SDavid van Moolenbroek 1538*00b67f09SDavid van Moolenbroek if test -n "$deplibs"; then 1539*00b67f09SDavid van Moolenbroek $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 1540*00b67f09SDavid van Moolenbroek fi 1541*00b67f09SDavid van Moolenbroek 1542*00b67f09SDavid van Moolenbroek if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 1543*00b67f09SDavid van Moolenbroek $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 1544*00b67f09SDavid van Moolenbroek fi 1545*00b67f09SDavid van Moolenbroek 1546*00b67f09SDavid van Moolenbroek if test -n "$rpath"; then 1547*00b67f09SDavid van Moolenbroek $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 1548*00b67f09SDavid van Moolenbroek fi 1549*00b67f09SDavid van Moolenbroek 1550*00b67f09SDavid van Moolenbroek if test -n "$xrpath"; then 1551*00b67f09SDavid van Moolenbroek $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 1552*00b67f09SDavid van Moolenbroek fi 1553*00b67f09SDavid van Moolenbroek 1554*00b67f09SDavid van Moolenbroek if test -n "$vinfo"; then 1555*00b67f09SDavid van Moolenbroek $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2 1556*00b67f09SDavid van Moolenbroek fi 1557*00b67f09SDavid van Moolenbroek 1558*00b67f09SDavid van Moolenbroek if test -n "$release"; then 1559*00b67f09SDavid van Moolenbroek $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 1560*00b67f09SDavid van Moolenbroek fi 1561*00b67f09SDavid van Moolenbroek 1562*00b67f09SDavid van Moolenbroek if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 1563*00b67f09SDavid van Moolenbroek $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 1564*00b67f09SDavid van Moolenbroek fi 1565*00b67f09SDavid van Moolenbroek 1566*00b67f09SDavid van Moolenbroek # Now set the variables for building old libraries. 1567*00b67f09SDavid van Moolenbroek build_libtool_libs=no 1568*00b67f09SDavid van Moolenbroek oldlibs="$output" 1569*00b67f09SDavid van Moolenbroek ;; 1570*00b67f09SDavid van Moolenbroek 1571*00b67f09SDavid van Moolenbroek *.la) 1572*00b67f09SDavid van Moolenbroek # Make sure we only generate libraries of the form `libNAME.la'. 1573*00b67f09SDavid van Moolenbroek case "$outputname" in 1574*00b67f09SDavid van Moolenbroek lib*) 1575*00b67f09SDavid van Moolenbroek name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 1576*00b67f09SDavid van Moolenbroek eval libname=\"$libname_spec\" 1577*00b67f09SDavid van Moolenbroek ;; 1578*00b67f09SDavid van Moolenbroek *) 1579*00b67f09SDavid van Moolenbroek if test "$module" = no; then 1580*00b67f09SDavid van Moolenbroek $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 1581*00b67f09SDavid van Moolenbroek $echo "$help" 1>&2 1582*00b67f09SDavid van Moolenbroek exit 1 1583*00b67f09SDavid van Moolenbroek fi 1584*00b67f09SDavid van Moolenbroek if test "$need_lib_prefix" != no; then 1585*00b67f09SDavid van Moolenbroek # Add the "lib" prefix for modules if required 1586*00b67f09SDavid van Moolenbroek name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 1587*00b67f09SDavid van Moolenbroek eval libname=\"$libname_spec\" 1588*00b67f09SDavid van Moolenbroek else 1589*00b67f09SDavid van Moolenbroek libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 1590*00b67f09SDavid van Moolenbroek fi 1591*00b67f09SDavid van Moolenbroek ;; 1592*00b67f09SDavid van Moolenbroek esac 1593*00b67f09SDavid van Moolenbroek 1594*00b67f09SDavid van Moolenbroek output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` 1595*00b67f09SDavid van Moolenbroek if test "X$output_objdir" = "X$output"; then 1596*00b67f09SDavid van Moolenbroek output_objdir="$objdir" 1597*00b67f09SDavid van Moolenbroek else 1598*00b67f09SDavid van Moolenbroek output_objdir="$output_objdir/$objdir" 1599*00b67f09SDavid van Moolenbroek fi 1600*00b67f09SDavid van Moolenbroek 1601*00b67f09SDavid van Moolenbroek if test -n "$objs"; then 1602*00b67f09SDavid van Moolenbroek $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1 1603*00b67f09SDavid van Moolenbroek exit 1 1604*00b67f09SDavid van Moolenbroek fi 1605*00b67f09SDavid van Moolenbroek 1606*00b67f09SDavid van Moolenbroek # How the heck are we supposed to write a wrapper for a shared library? 1607*00b67f09SDavid van Moolenbroek if test -n "$link_against_libtool_libs"; then 1608*00b67f09SDavid van Moolenbroek $echo "$modename: error: cannot link shared libraries into libtool libraries" 1>&2 1609*00b67f09SDavid van Moolenbroek exit 1 1610*00b67f09SDavid van Moolenbroek fi 1611*00b67f09SDavid van Moolenbroek 1612*00b67f09SDavid van Moolenbroek if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 1613*00b67f09SDavid van Moolenbroek $echo "$modename: warning: \`-dlopen' is ignored for libtool libraries" 1>&2 1614*00b67f09SDavid van Moolenbroek fi 1615*00b67f09SDavid van Moolenbroek 1616*00b67f09SDavid van Moolenbroek set dummy $rpath 1617*00b67f09SDavid van Moolenbroek if test $# -gt 2; then 1618*00b67f09SDavid van Moolenbroek $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 1619*00b67f09SDavid van Moolenbroek fi 1620*00b67f09SDavid van Moolenbroek install_libdir="$2" 1621*00b67f09SDavid van Moolenbroek 1622*00b67f09SDavid van Moolenbroek oldlibs= 1623*00b67f09SDavid van Moolenbroek if test -z "$rpath"; then 1624*00b67f09SDavid van Moolenbroek if test "$build_libtool_libs" = yes; then 1625*00b67f09SDavid van Moolenbroek # Building a libtool convenience library. 1626*00b67f09SDavid van Moolenbroek libext=al 1627*00b67f09SDavid van Moolenbroek oldlibs="$output_objdir/$libname.$libext $oldlibs" 1628*00b67f09SDavid van Moolenbroek build_libtool_libs=convenience 1629*00b67f09SDavid van Moolenbroek build_old_libs=yes 1630*00b67f09SDavid van Moolenbroek fi 1631*00b67f09SDavid van Moolenbroek dependency_libs="$deplibs" 1632*00b67f09SDavid van Moolenbroek 1633*00b67f09SDavid van Moolenbroek if test -n "$vinfo"; then 1634*00b67f09SDavid van Moolenbroek $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2 1635*00b67f09SDavid van Moolenbroek fi 1636*00b67f09SDavid van Moolenbroek 1637*00b67f09SDavid van Moolenbroek if test -n "$release"; then 1638*00b67f09SDavid van Moolenbroek $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 1639*00b67f09SDavid van Moolenbroek fi 1640*00b67f09SDavid van Moolenbroek else 1641*00b67f09SDavid van Moolenbroek 1642*00b67f09SDavid van Moolenbroek # Parse the version information argument. 1643*00b67f09SDavid van Moolenbroek IFS="${IFS= }"; save_ifs="$IFS"; IFS=':' 1644*00b67f09SDavid van Moolenbroek set dummy $vinfo 0 0 0 1645*00b67f09SDavid van Moolenbroek IFS="$save_ifs" 1646*00b67f09SDavid van Moolenbroek 1647*00b67f09SDavid van Moolenbroek if test -n "$8"; then 1648*00b67f09SDavid van Moolenbroek $echo "$modename: too many parameters to \`-version-info'" 1>&2 1649*00b67f09SDavid van Moolenbroek $echo "$help" 1>&2 1650*00b67f09SDavid van Moolenbroek exit 1 1651*00b67f09SDavid van Moolenbroek fi 1652*00b67f09SDavid van Moolenbroek 1653*00b67f09SDavid van Moolenbroek current="$2" 1654*00b67f09SDavid van Moolenbroek revision="$3" 1655*00b67f09SDavid van Moolenbroek age="$4" 1656*00b67f09SDavid van Moolenbroek 1657*00b67f09SDavid van Moolenbroek # Check that each of the things are valid numbers. 1658*00b67f09SDavid van Moolenbroek case "$current" in 1659*00b67f09SDavid van Moolenbroek 0 | [1-9] | [1-9][0-9]*) ;; 1660*00b67f09SDavid van Moolenbroek *) 1661*00b67f09SDavid van Moolenbroek $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 1662*00b67f09SDavid van Moolenbroek $echo "$modename: \`$vinfo' is not valid version information" 1>&2 1663*00b67f09SDavid van Moolenbroek exit 1 1664*00b67f09SDavid van Moolenbroek ;; 1665*00b67f09SDavid van Moolenbroek esac 1666*00b67f09SDavid van Moolenbroek 1667*00b67f09SDavid van Moolenbroek case "$revision" in 1668*00b67f09SDavid van Moolenbroek 0 | [1-9] | [1-9][0-9]*) ;; 1669*00b67f09SDavid van Moolenbroek *) 1670*00b67f09SDavid van Moolenbroek $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 1671*00b67f09SDavid van Moolenbroek $echo "$modename: \`$vinfo' is not valid version information" 1>&2 1672*00b67f09SDavid van Moolenbroek exit 1 1673*00b67f09SDavid van Moolenbroek ;; 1674*00b67f09SDavid van Moolenbroek esac 1675*00b67f09SDavid van Moolenbroek 1676*00b67f09SDavid van Moolenbroek case "$age" in 1677*00b67f09SDavid van Moolenbroek 0 | [1-9] | [1-9][0-9]*) ;; 1678*00b67f09SDavid van Moolenbroek *) 1679*00b67f09SDavid van Moolenbroek $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 1680*00b67f09SDavid van Moolenbroek $echo "$modename: \`$vinfo' is not valid version information" 1>&2 1681*00b67f09SDavid van Moolenbroek exit 1 1682*00b67f09SDavid van Moolenbroek ;; 1683*00b67f09SDavid van Moolenbroek esac 1684*00b67f09SDavid van Moolenbroek 1685*00b67f09SDavid van Moolenbroek if test $age -gt $current; then 1686*00b67f09SDavid van Moolenbroek $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 1687*00b67f09SDavid van Moolenbroek $echo "$modename: \`$vinfo' is not valid version information" 1>&2 1688*00b67f09SDavid van Moolenbroek exit 1 1689*00b67f09SDavid van Moolenbroek fi 1690*00b67f09SDavid van Moolenbroek 1691*00b67f09SDavid van Moolenbroek # Calculate the version variables. 1692*00b67f09SDavid van Moolenbroek major= 1693*00b67f09SDavid van Moolenbroek versuffix= 1694*00b67f09SDavid van Moolenbroek verstring= 1695*00b67f09SDavid van Moolenbroek case "$version_type" in 1696*00b67f09SDavid van Moolenbroek none) ;; 1697*00b67f09SDavid van Moolenbroek 1698*00b67f09SDavid van Moolenbroek irix) 1699*00b67f09SDavid van Moolenbroek major=`expr $current - $age + 1` 1700*00b67f09SDavid van Moolenbroek versuffix="$major.$revision" 1701*00b67f09SDavid van Moolenbroek verstring="sgi$major.$revision" 1702*00b67f09SDavid van Moolenbroek 1703*00b67f09SDavid van Moolenbroek # Add in all the interfaces that we are compatible with. 1704*00b67f09SDavid van Moolenbroek loop=$revision 1705*00b67f09SDavid van Moolenbroek while test $loop != 0; do 1706*00b67f09SDavid van Moolenbroek iface=`expr $revision - $loop` 1707*00b67f09SDavid van Moolenbroek loop=`expr $loop - 1` 1708*00b67f09SDavid van Moolenbroek verstring="sgi$major.$iface:$verstring" 1709*00b67f09SDavid van Moolenbroek done 1710*00b67f09SDavid van Moolenbroek ;; 1711*00b67f09SDavid van Moolenbroek 1712*00b67f09SDavid van Moolenbroek linux) 1713*00b67f09SDavid van Moolenbroek major=.`expr $current - $age` 1714*00b67f09SDavid van Moolenbroek versuffix="$major.$age.$revision" 1715*00b67f09SDavid van Moolenbroek ;; 1716*00b67f09SDavid van Moolenbroek 1717*00b67f09SDavid van Moolenbroek osf) 1718*00b67f09SDavid van Moolenbroek major=`expr $current - $age` 1719*00b67f09SDavid van Moolenbroek versuffix=".$current.$age.$revision" 1720*00b67f09SDavid van Moolenbroek verstring="$current.$age.$revision" 1721*00b67f09SDavid van Moolenbroek 1722*00b67f09SDavid van Moolenbroek # Add in all the interfaces that we are compatible with. 1723*00b67f09SDavid van Moolenbroek loop=$age 1724*00b67f09SDavid van Moolenbroek while test $loop != 0; do 1725*00b67f09SDavid van Moolenbroek iface=`expr $current - $loop` 1726*00b67f09SDavid van Moolenbroek loop=`expr $loop - 1` 1727*00b67f09SDavid van Moolenbroek verstring="$verstring:${iface}.0" 1728*00b67f09SDavid van Moolenbroek done 1729*00b67f09SDavid van Moolenbroek 1730*00b67f09SDavid van Moolenbroek # Make executables depend on our current version. 1731*00b67f09SDavid van Moolenbroek verstring="$verstring:${current}.0" 1732*00b67f09SDavid van Moolenbroek ;; 1733*00b67f09SDavid van Moolenbroek 1734*00b67f09SDavid van Moolenbroek sunos) 1735*00b67f09SDavid van Moolenbroek major=".$current" 1736*00b67f09SDavid van Moolenbroek versuffix=".$current.$revision" 1737*00b67f09SDavid van Moolenbroek ;; 1738*00b67f09SDavid van Moolenbroek 1739*00b67f09SDavid van Moolenbroek freebsd-aout) 1740*00b67f09SDavid van Moolenbroek major=".$current" 1741*00b67f09SDavid van Moolenbroek versuffix=".$current.$revision"; 1742*00b67f09SDavid van Moolenbroek ;; 1743*00b67f09SDavid van Moolenbroek 1744*00b67f09SDavid van Moolenbroek freebsd-elf) 1745*00b67f09SDavid van Moolenbroek major=".$current" 1746*00b67f09SDavid van Moolenbroek versuffix=".$current"; 1747*00b67f09SDavid van Moolenbroek ;; 1748*00b67f09SDavid van Moolenbroek 1749*00b67f09SDavid van Moolenbroek windows) 1750*00b67f09SDavid van Moolenbroek # Like Linux, but with '-' rather than '.', since we only 1751*00b67f09SDavid van Moolenbroek # want one extension on Windows 95. 1752*00b67f09SDavid van Moolenbroek major=`expr $current - $age` 1753*00b67f09SDavid van Moolenbroek versuffix="-$major-$age-$revision" 1754*00b67f09SDavid van Moolenbroek ;; 1755*00b67f09SDavid van Moolenbroek 1756*00b67f09SDavid van Moolenbroek *) 1757*00b67f09SDavid van Moolenbroek $echo "$modename: unknown library version type \`$version_type'" 1>&2 1758*00b67f09SDavid van Moolenbroek echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 1759*00b67f09SDavid van Moolenbroek exit 1 1760*00b67f09SDavid van Moolenbroek ;; 1761*00b67f09SDavid van Moolenbroek esac 1762*00b67f09SDavid van Moolenbroek 1763*00b67f09SDavid van Moolenbroek # Clear the version info if we defaulted, and they specified a release. 1764*00b67f09SDavid van Moolenbroek if test -z "$vinfo" && test -n "$release"; then 1765*00b67f09SDavid van Moolenbroek major= 1766*00b67f09SDavid van Moolenbroek verstring="0.0" 1767*00b67f09SDavid van Moolenbroek if test "$need_version" = no; then 1768*00b67f09SDavid van Moolenbroek versuffix= 1769*00b67f09SDavid van Moolenbroek else 1770*00b67f09SDavid van Moolenbroek versuffix=".0.0" 1771*00b67f09SDavid van Moolenbroek fi 1772*00b67f09SDavid van Moolenbroek fi 1773*00b67f09SDavid van Moolenbroek 1774*00b67f09SDavid van Moolenbroek # Remove version info from name if versioning should be avoided 1775*00b67f09SDavid van Moolenbroek if test "$avoid_version" = yes && test "$need_version" = no; then 1776*00b67f09SDavid van Moolenbroek major= 1777*00b67f09SDavid van Moolenbroek versuffix= 1778*00b67f09SDavid van Moolenbroek verstring="" 1779*00b67f09SDavid van Moolenbroek fi 1780*00b67f09SDavid van Moolenbroek 1781*00b67f09SDavid van Moolenbroek # Check to see if the archive will have undefined symbols. 1782*00b67f09SDavid van Moolenbroek if test "$allow_undefined" = yes; then 1783*00b67f09SDavid van Moolenbroek if test "$allow_undefined_flag" = unsupported; then 1784*00b67f09SDavid van Moolenbroek $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 1785*00b67f09SDavid van Moolenbroek build_libtool_libs=no 1786*00b67f09SDavid van Moolenbroek build_old_libs=yes 1787*00b67f09SDavid van Moolenbroek fi 1788*00b67f09SDavid van Moolenbroek else 1789*00b67f09SDavid van Moolenbroek # Don't allow undefined symbols. 1790*00b67f09SDavid van Moolenbroek allow_undefined_flag="$no_undefined_flag" 1791*00b67f09SDavid van Moolenbroek fi 1792*00b67f09SDavid van Moolenbroek 1793*00b67f09SDavid van Moolenbroek dependency_libs="$deplibs" 1794*00b67f09SDavid van Moolenbroek case "$host" in 1795*00b67f09SDavid van Moolenbroek *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*) 1796*00b67f09SDavid van Moolenbroek # these systems don't actually have a c library (as such)! 1797*00b67f09SDavid van Moolenbroek ;; 1798*00b67f09SDavid van Moolenbroek *-*-rhapsody*) 1799*00b67f09SDavid van Moolenbroek # rhapsody is a little odd... 1800*00b67f09SDavid van Moolenbroek deplibs="$deplibs -framework System" 1801*00b67f09SDavid van Moolenbroek ;; 1802*00b67f09SDavid van Moolenbroek *) 1803*00b67f09SDavid van Moolenbroek # Add libc to deplibs on all other systems. 1804*00b67f09SDavid van Moolenbroek deplibs="$deplibs -lc" 1805*00b67f09SDavid van Moolenbroek ;; 1806*00b67f09SDavid van Moolenbroek esac 1807*00b67f09SDavid van Moolenbroek fi 1808*00b67f09SDavid van Moolenbroek 1809*00b67f09SDavid van Moolenbroek # Create the output directory, or remove our outputs if we need to. 1810*00b67f09SDavid van Moolenbroek if test -d $output_objdir; then 1811*00b67f09SDavid van Moolenbroek $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*" 1812*00b67f09SDavid van Moolenbroek $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.* 1813*00b67f09SDavid van Moolenbroek else 1814*00b67f09SDavid van Moolenbroek $show "$mkdir $output_objdir" 1815*00b67f09SDavid van Moolenbroek $run $mkdir $output_objdir 1816*00b67f09SDavid van Moolenbroek status=$? 1817*00b67f09SDavid van Moolenbroek if test $status -ne 0 && test ! -d $output_objdir; then 1818*00b67f09SDavid van Moolenbroek exit $status 1819*00b67f09SDavid van Moolenbroek fi 1820*00b67f09SDavid van Moolenbroek fi 1821*00b67f09SDavid van Moolenbroek 1822*00b67f09SDavid van Moolenbroek # Now set the variables for building old libraries. 1823*00b67f09SDavid van Moolenbroek if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 1824*00b67f09SDavid van Moolenbroek oldlibs="$oldlibs $output_objdir/$libname.$libext" 1825*00b67f09SDavid van Moolenbroek 1826*00b67f09SDavid van Moolenbroek # Transform .lo files to .o files. 1827*00b67f09SDavid van Moolenbroek oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` 1828*00b67f09SDavid van Moolenbroek fi 1829*00b67f09SDavid van Moolenbroek 1830*00b67f09SDavid van Moolenbroek if test "$build_libtool_libs" = yes; then 1831*00b67f09SDavid van Moolenbroek # Transform deplibs into only deplibs that can be linked in shared. 1832*00b67f09SDavid van Moolenbroek name_save=$name 1833*00b67f09SDavid van Moolenbroek libname_save=$libname 1834*00b67f09SDavid van Moolenbroek release_save=$release 1835*00b67f09SDavid van Moolenbroek versuffix_save=$versuffix 1836*00b67f09SDavid van Moolenbroek major_save=$major 1837*00b67f09SDavid van Moolenbroek # I'm not sure if I'm treating the release correctly. I think 1838*00b67f09SDavid van Moolenbroek # release should show up in the -l (ie -lgmp5) so we don't want to 1839*00b67f09SDavid van Moolenbroek # add it in twice. Is that correct? 1840*00b67f09SDavid van Moolenbroek release="" 1841*00b67f09SDavid van Moolenbroek versuffix="" 1842*00b67f09SDavid van Moolenbroek major="" 1843*00b67f09SDavid van Moolenbroek newdeplibs= 1844*00b67f09SDavid van Moolenbroek droppeddeps=no 1845*00b67f09SDavid van Moolenbroek case "$deplibs_check_method" in 1846*00b67f09SDavid van Moolenbroek pass_all) 1847*00b67f09SDavid van Moolenbroek # Don't check for shared/static. Everything works. 1848*00b67f09SDavid van Moolenbroek # This might be a little naive. We might want to check 1849*00b67f09SDavid van Moolenbroek # whether the library exists or not. But this is on 1850*00b67f09SDavid van Moolenbroek # osf3 & osf4 and I'm not really sure... Just 1851*00b67f09SDavid van Moolenbroek # implementing what was already the behaviour. 1852*00b67f09SDavid van Moolenbroek newdeplibs=$deplibs 1853*00b67f09SDavid van Moolenbroek ;; 1854*00b67f09SDavid van Moolenbroek test_compile) 1855*00b67f09SDavid van Moolenbroek # This code stresses the "libraries are programs" paradigm to its 1856*00b67f09SDavid van Moolenbroek # limits. Maybe even breaks it. We compile a program, linking it 1857*00b67f09SDavid van Moolenbroek # against the deplibs as a proxy for the library. Then we can check 1858*00b67f09SDavid van Moolenbroek # whether they linked in statically or dynamically with ldd. 1859*00b67f09SDavid van Moolenbroek $rm conftest.c 1860*00b67f09SDavid van Moolenbroek cat > conftest.c <<EOF 1861*00b67f09SDavid van Moolenbroek int main() { return 0; } 1862*00b67f09SDavid van MoolenbroekEOF 1863*00b67f09SDavid van Moolenbroek $rm conftest 1864*00b67f09SDavid van Moolenbroek $CC -o conftest conftest.c $deplibs 1865*00b67f09SDavid van Moolenbroek if test $? -eq 0 ; then 1866*00b67f09SDavid van Moolenbroek ldd_output=`ldd conftest` 1867*00b67f09SDavid van Moolenbroek for i in $deplibs; do 1868*00b67f09SDavid van Moolenbroek name="`expr $i : '-l\(.*\)'`" 1869*00b67f09SDavid van Moolenbroek # If $name is empty we are operating on a -L argument. 1870*00b67f09SDavid van Moolenbroek if test "$name" != "" ; then 1871*00b67f09SDavid van Moolenbroek libname=`eval \\$echo \"$libname_spec\"` 1872*00b67f09SDavid van Moolenbroek deplib_matches=`eval \\$echo \"$library_names_spec\"` 1873*00b67f09SDavid van Moolenbroek set dummy $deplib_matches 1874*00b67f09SDavid van Moolenbroek deplib_match=$2 1875*00b67f09SDavid van Moolenbroek if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 1876*00b67f09SDavid van Moolenbroek newdeplibs="$newdeplibs $i" 1877*00b67f09SDavid van Moolenbroek else 1878*00b67f09SDavid van Moolenbroek droppeddeps=yes 1879*00b67f09SDavid van Moolenbroek echo 1880*00b67f09SDavid van Moolenbroek echo "*** Warning: This library needs some functionality provided by $i." 1881*00b67f09SDavid van Moolenbroek echo "*** I have the capability to make that library automatically link in when" 1882*00b67f09SDavid van Moolenbroek echo "*** you link to this library. But I can only do this if you have a" 1883*00b67f09SDavid van Moolenbroek echo "*** shared version of the library, which you do not appear to have." 1884*00b67f09SDavid van Moolenbroek fi 1885*00b67f09SDavid van Moolenbroek else 1886*00b67f09SDavid van Moolenbroek newdeplibs="$newdeplibs $i" 1887*00b67f09SDavid van Moolenbroek fi 1888*00b67f09SDavid van Moolenbroek done 1889*00b67f09SDavid van Moolenbroek else 1890*00b67f09SDavid van Moolenbroek # Error occured in the first compile. Let's try to salvage the situation: 1891*00b67f09SDavid van Moolenbroek # Compile a seperate program for each library. 1892*00b67f09SDavid van Moolenbroek for i in $deplibs; do 1893*00b67f09SDavid van Moolenbroek name="`expr $i : '-l\(.*\)'`" 1894*00b67f09SDavid van Moolenbroek # If $name is empty we are operating on a -L argument. 1895*00b67f09SDavid van Moolenbroek if test "$name" != "" ; then 1896*00b67f09SDavid van Moolenbroek $rm conftest 1897*00b67f09SDavid van Moolenbroek $CC -o conftest conftest.c $i 1898*00b67f09SDavid van Moolenbroek # Did it work? 1899*00b67f09SDavid van Moolenbroek if test $? -eq 0 ; then 1900*00b67f09SDavid van Moolenbroek ldd_output=`ldd conftest` 1901*00b67f09SDavid van Moolenbroek libname=`eval \\$echo \"$libname_spec\"` 1902*00b67f09SDavid van Moolenbroek deplib_matches=`eval \\$echo \"$library_names_spec\"` 1903*00b67f09SDavid van Moolenbroek set dummy $deplib_matches 1904*00b67f09SDavid van Moolenbroek deplib_match=$2 1905*00b67f09SDavid van Moolenbroek if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 1906*00b67f09SDavid van Moolenbroek newdeplibs="$newdeplibs $i" 1907*00b67f09SDavid van Moolenbroek else 1908*00b67f09SDavid van Moolenbroek droppeddeps=yes 1909*00b67f09SDavid van Moolenbroek echo 1910*00b67f09SDavid van Moolenbroek echo "*** Warning: This library needs some functionality provided by $i." 1911*00b67f09SDavid van Moolenbroek echo "*** I have the capability to make that library automatically link in when" 1912*00b67f09SDavid van Moolenbroek echo "*** you link to this library. But I can only do this if you have a" 1913*00b67f09SDavid van Moolenbroek echo "*** shared version of the library, which you do not appear to have." 1914*00b67f09SDavid van Moolenbroek fi 1915*00b67f09SDavid van Moolenbroek else 1916*00b67f09SDavid van Moolenbroek droppeddeps=yes 1917*00b67f09SDavid van Moolenbroek echo 1918*00b67f09SDavid van Moolenbroek echo "*** Warning! Library $i is needed by this library but I was not able to" 1919*00b67f09SDavid van Moolenbroek echo "*** make it link in! You will probably need to install it or some" 1920*00b67f09SDavid van Moolenbroek echo "*** library that it depends on before this library will be fully" 1921*00b67f09SDavid van Moolenbroek echo "*** functional. Installing it before continuing would be even better." 1922*00b67f09SDavid van Moolenbroek fi 1923*00b67f09SDavid van Moolenbroek else 1924*00b67f09SDavid van Moolenbroek newdeplibs="$newdeplibs $i" 1925*00b67f09SDavid van Moolenbroek fi 1926*00b67f09SDavid van Moolenbroek done 1927*00b67f09SDavid van Moolenbroek fi 1928*00b67f09SDavid van Moolenbroek ;; 1929*00b67f09SDavid van Moolenbroek file_magic*) 1930*00b67f09SDavid van Moolenbroek set dummy $deplibs_check_method 1931*00b67f09SDavid van Moolenbroek file_magic_regex="`expr \"$deplibs_check_method\" : \"$2 \(.*\)\"`" 1932*00b67f09SDavid van Moolenbroek for a_deplib in $deplibs; do 1933*00b67f09SDavid van Moolenbroek name="`expr $a_deplib : '-l\(.*\)'`" 1934*00b67f09SDavid van Moolenbroek # If $name is empty we are operating on a -L argument. 1935*00b67f09SDavid van Moolenbroek if test "$name" != "" ; then 1936*00b67f09SDavid van Moolenbroek libname=`eval \\$echo \"$libname_spec\"` 1937*00b67f09SDavid van Moolenbroek for i in $lib_search_path; do 1938*00b67f09SDavid van Moolenbroek potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 1939*00b67f09SDavid van Moolenbroek for potent_lib in $potential_libs; do 1940*00b67f09SDavid van Moolenbroek # Follow soft links. 1941*00b67f09SDavid van Moolenbroek if ls -lLd "$potent_lib" 2>/dev/null \ 1942*00b67f09SDavid van Moolenbroek | grep " -> " >/dev/null; then 1943*00b67f09SDavid van Moolenbroek continue 1944*00b67f09SDavid van Moolenbroek fi 1945*00b67f09SDavid van Moolenbroek # The statement above tries to avoid entering an 1946*00b67f09SDavid van Moolenbroek # endless loop below, in case of cyclic links. 1947*00b67f09SDavid van Moolenbroek # We might still enter an endless loop, since a link 1948*00b67f09SDavid van Moolenbroek # loop can be closed while we follow links, 1949*00b67f09SDavid van Moolenbroek # but so what? 1950*00b67f09SDavid van Moolenbroek potlib="$potent_lib" 1951*00b67f09SDavid van Moolenbroek while test -h "$potlib" 2>/dev/null; do 1952*00b67f09SDavid van Moolenbroek potliblink=`ls -ld $potlib | sed 's/.* -> //'` 1953*00b67f09SDavid van Moolenbroek case "$potliblink" in 1954*00b67f09SDavid van Moolenbroek [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 1955*00b67f09SDavid van Moolenbroek *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; 1956*00b67f09SDavid van Moolenbroek esac 1957*00b67f09SDavid van Moolenbroek done 1958*00b67f09SDavid van Moolenbroek if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ 1959*00b67f09SDavid van Moolenbroek | sed 10q \ 1960*00b67f09SDavid van Moolenbroek | egrep "$file_magic_regex" > /dev/null; then 1961*00b67f09SDavid van Moolenbroek newdeplibs="$newdeplibs $a_deplib" 1962*00b67f09SDavid van Moolenbroek a_deplib="" 1963*00b67f09SDavid van Moolenbroek break 2 1964*00b67f09SDavid van Moolenbroek fi 1965*00b67f09SDavid van Moolenbroek done 1966*00b67f09SDavid van Moolenbroek done 1967*00b67f09SDavid van Moolenbroek if test -n "$a_deplib" ; then 1968*00b67f09SDavid van Moolenbroek droppeddeps=yes 1969*00b67f09SDavid van Moolenbroek echo 1970*00b67f09SDavid van Moolenbroek echo "*** Warning: This library needs some functionality provided by $a_deplib." 1971*00b67f09SDavid van Moolenbroek echo "*** I have the capability to make that library automatically link in when" 1972*00b67f09SDavid van Moolenbroek echo "*** you link to this library. But I can only do this if you have a" 1973*00b67f09SDavid van Moolenbroek echo "*** shared version of the library, which you do not appear to have." 1974*00b67f09SDavid van Moolenbroek fi 1975*00b67f09SDavid van Moolenbroek else 1976*00b67f09SDavid van Moolenbroek # Add a -L argument. 1977*00b67f09SDavid van Moolenbroek newdeplibs="$newdeplibs $a_deplib" 1978*00b67f09SDavid van Moolenbroek fi 1979*00b67f09SDavid van Moolenbroek done # Gone through all deplibs. 1980*00b67f09SDavid van Moolenbroek ;; 1981*00b67f09SDavid van Moolenbroek none | unknown | *) 1982*00b67f09SDavid van Moolenbroek newdeplibs="" 1983*00b67f09SDavid van Moolenbroek if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ 1984*00b67f09SDavid van Moolenbroek -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' | 1985*00b67f09SDavid van Moolenbroek grep . >/dev/null; then 1986*00b67f09SDavid van Moolenbroek echo 1987*00b67f09SDavid van Moolenbroek if test "X$deplibs_check_method" = "Xnone"; then 1988*00b67f09SDavid van Moolenbroek echo "*** Warning: inter-library dependencies are not supported in this platform." 1989*00b67f09SDavid van Moolenbroek else 1990*00b67f09SDavid van Moolenbroek echo "*** Warning: inter-library dependencies are not known to be supported." 1991*00b67f09SDavid van Moolenbroek fi 1992*00b67f09SDavid van Moolenbroek echo "*** All declared inter-library dependencies are being dropped." 1993*00b67f09SDavid van Moolenbroek droppeddeps=yes 1994*00b67f09SDavid van Moolenbroek fi 1995*00b67f09SDavid van Moolenbroek ;; 1996*00b67f09SDavid van Moolenbroek esac 1997*00b67f09SDavid van Moolenbroek versuffix=$versuffix_save 1998*00b67f09SDavid van Moolenbroek major=$major_save 1999*00b67f09SDavid van Moolenbroek release=$release_save 2000*00b67f09SDavid van Moolenbroek libname=$libname_save 2001*00b67f09SDavid van Moolenbroek name=$name_save 2002*00b67f09SDavid van Moolenbroek 2003*00b67f09SDavid van Moolenbroek if test "$droppeddeps" = yes; then 2004*00b67f09SDavid van Moolenbroek if test "$module" = yes; then 2005*00b67f09SDavid van Moolenbroek echo 2006*00b67f09SDavid van Moolenbroek echo "*** Warning: libtool could not satisfy all declared inter-library" 2007*00b67f09SDavid van Moolenbroek echo "*** dependencies of module $libname. Therefore, libtool will create" 2008*00b67f09SDavid van Moolenbroek echo "*** a static module, that should work as long as the dlopening" 2009*00b67f09SDavid van Moolenbroek echo "*** application is linked with the -dlopen flag." 2010*00b67f09SDavid van Moolenbroek if test -z "$global_symbol_pipe"; then 2011*00b67f09SDavid van Moolenbroek echo 2012*00b67f09SDavid van Moolenbroek echo "*** However, this would only work if libtool was able to extract symbol" 2013*00b67f09SDavid van Moolenbroek echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 2014*00b67f09SDavid van Moolenbroek echo "*** not find such a program. So, this module is probably useless." 2015*00b67f09SDavid van Moolenbroek echo "*** \`nm' from GNU binutils and a full rebuild may help." 2016*00b67f09SDavid van Moolenbroek fi 2017*00b67f09SDavid van Moolenbroek if test "$build_old_libs" = no; then 2018*00b67f09SDavid van Moolenbroek oldlibs="$output_objdir/$libname.$libext" 2019*00b67f09SDavid van Moolenbroek build_libtool_libs=module 2020*00b67f09SDavid van Moolenbroek build_old_libs=yes 2021*00b67f09SDavid van Moolenbroek else 2022*00b67f09SDavid van Moolenbroek build_libtool_libs=no 2023*00b67f09SDavid van Moolenbroek fi 2024*00b67f09SDavid van Moolenbroek else 2025*00b67f09SDavid van Moolenbroek echo "*** The inter-library dependencies that have been dropped here will be" 2026*00b67f09SDavid van Moolenbroek echo "*** automatically added whenever a program is linked with this library" 2027*00b67f09SDavid van Moolenbroek echo "*** or is declared to -dlopen it." 2028*00b67f09SDavid van Moolenbroek fi 2029*00b67f09SDavid van Moolenbroek fi 2030*00b67f09SDavid van Moolenbroek # Done checking deplibs! 2031*00b67f09SDavid van Moolenbroek deplibs=$newdeplibs 2032*00b67f09SDavid van Moolenbroek fi 2033*00b67f09SDavid van Moolenbroek 2034*00b67f09SDavid van Moolenbroek # All the library-specific variables (install_libdir is set above). 2035*00b67f09SDavid van Moolenbroek library_names= 2036*00b67f09SDavid van Moolenbroek old_library= 2037*00b67f09SDavid van Moolenbroek dlname= 2038*00b67f09SDavid van Moolenbroek 2039*00b67f09SDavid van Moolenbroek # Test again, we may have decided not to build it any more 2040*00b67f09SDavid van Moolenbroek if test "$build_libtool_libs" = yes; then 2041*00b67f09SDavid van Moolenbroek # Get the real and link names of the library. 2042*00b67f09SDavid van Moolenbroek eval library_names=\"$library_names_spec\" 2043*00b67f09SDavid van Moolenbroek set dummy $library_names 2044*00b67f09SDavid van Moolenbroek realname="$2" 2045*00b67f09SDavid van Moolenbroek shift; shift 2046*00b67f09SDavid van Moolenbroek 2047*00b67f09SDavid van Moolenbroek if test -n "$soname_spec"; then 2048*00b67f09SDavid van Moolenbroek eval soname=\"$soname_spec\" 2049*00b67f09SDavid van Moolenbroek else 2050*00b67f09SDavid van Moolenbroek soname="$realname" 2051*00b67f09SDavid van Moolenbroek fi 2052*00b67f09SDavid van Moolenbroek 2053*00b67f09SDavid van Moolenbroek lib="$output_objdir/$realname" 2054*00b67f09SDavid van Moolenbroek for link 2055*00b67f09SDavid van Moolenbroek do 2056*00b67f09SDavid van Moolenbroek linknames="$linknames $link" 2057*00b67f09SDavid van Moolenbroek done 2058*00b67f09SDavid van Moolenbroek 2059*00b67f09SDavid van Moolenbroek # Ensure that we have .o objects for linkers which dislike .lo 2060*00b67f09SDavid van Moolenbroek # (e.g. aix) in case we are running --disable-static 2061*00b67f09SDavid van Moolenbroek for obj in $libobjs; do 2062*00b67f09SDavid van Moolenbroek xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` 2063*00b67f09SDavid van Moolenbroek if test "X$xdir" = "X$obj"; then 2064*00b67f09SDavid van Moolenbroek xdir="." 2065*00b67f09SDavid van Moolenbroek else 2066*00b67f09SDavid van Moolenbroek xdir="$xdir" 2067*00b67f09SDavid van Moolenbroek fi 2068*00b67f09SDavid van Moolenbroek baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` 2069*00b67f09SDavid van Moolenbroek oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` 2070*00b67f09SDavid van Moolenbroek if test ! -f $xdir/$oldobj; then 2071*00b67f09SDavid van Moolenbroek $show "(cd $xdir && ${LN_S} $baseobj $oldobj)" 2072*00b67f09SDavid van Moolenbroek $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $? 2073*00b67f09SDavid van Moolenbroek fi 2074*00b67f09SDavid van Moolenbroek done 2075*00b67f09SDavid van Moolenbroek 2076*00b67f09SDavid van Moolenbroek # Use standard objects if they are pic 2077*00b67f09SDavid van Moolenbroek test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 2078*00b67f09SDavid van Moolenbroek 2079*00b67f09SDavid van Moolenbroek # Prepare the list of exported symbols 2080*00b67f09SDavid van Moolenbroek if test -z "$export_symbols"; then 2081*00b67f09SDavid van Moolenbroek if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 2082*00b67f09SDavid van Moolenbroek $show "generating symbol list for \`$libname.la'" 2083*00b67f09SDavid van Moolenbroek export_symbols="$output_objdir/$libname.exp" 2084*00b67f09SDavid van Moolenbroek $run $rm $export_symbols 2085*00b67f09SDavid van Moolenbroek eval cmds=\"$export_symbols_cmds\" 2086*00b67f09SDavid van Moolenbroek IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 2087*00b67f09SDavid van Moolenbroek for cmd in $cmds; do 2088*00b67f09SDavid van Moolenbroek IFS="$save_ifs" 2089*00b67f09SDavid van Moolenbroek $show "$cmd" 2090*00b67f09SDavid van Moolenbroek $run eval "$cmd" || exit $? 2091*00b67f09SDavid van Moolenbroek done 2092*00b67f09SDavid van Moolenbroek IFS="$save_ifs" 2093*00b67f09SDavid van Moolenbroek if test -n "$export_symbols_regex"; then 2094*00b67f09SDavid van Moolenbroek $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" 2095*00b67f09SDavid van Moolenbroek $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 2096*00b67f09SDavid van Moolenbroek $show "$mv \"${export_symbols}T\" \"$export_symbols\"" 2097*00b67f09SDavid van Moolenbroek $run eval '$mv "${export_symbols}T" "$export_symbols"' 2098*00b67f09SDavid van Moolenbroek fi 2099*00b67f09SDavid van Moolenbroek fi 2100*00b67f09SDavid van Moolenbroek fi 2101*00b67f09SDavid van Moolenbroek 2102*00b67f09SDavid van Moolenbroek if test -n "$export_symbols" && test -n "$include_expsyms"; then 2103*00b67f09SDavid van Moolenbroek $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' 2104*00b67f09SDavid van Moolenbroek fi 2105*00b67f09SDavid van Moolenbroek 2106*00b67f09SDavid van Moolenbroek if test -n "$convenience"; then 2107*00b67f09SDavid van Moolenbroek if test -n "$whole_archive_flag_spec"; then 2108*00b67f09SDavid van Moolenbroek eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 2109*00b67f09SDavid van Moolenbroek else 2110*00b67f09SDavid van Moolenbroek gentop="$output_objdir/${outputname}x" 2111*00b67f09SDavid van Moolenbroek $show "${rm}r $gentop" 2112*00b67f09SDavid van Moolenbroek $run ${rm}r "$gentop" 2113*00b67f09SDavid van Moolenbroek $show "mkdir $gentop" 2114*00b67f09SDavid van Moolenbroek $run mkdir "$gentop" 2115*00b67f09SDavid van Moolenbroek status=$? 2116*00b67f09SDavid van Moolenbroek if test $status -ne 0 && test ! -d "$gentop"; then 2117*00b67f09SDavid van Moolenbroek exit $status 2118*00b67f09SDavid van Moolenbroek fi 2119*00b67f09SDavid van Moolenbroek generated="$generated $gentop" 2120*00b67f09SDavid van Moolenbroek 2121*00b67f09SDavid van Moolenbroek for xlib in $convenience; do 2122*00b67f09SDavid van Moolenbroek # Extract the objects. 2123*00b67f09SDavid van Moolenbroek case "$xlib" in 2124*00b67f09SDavid van Moolenbroek [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; 2125*00b67f09SDavid van Moolenbroek *) xabs=`pwd`"/$xlib" ;; 2126*00b67f09SDavid van Moolenbroek esac 2127*00b67f09SDavid van Moolenbroek xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` 2128*00b67f09SDavid van Moolenbroek xdir="$gentop/$xlib" 2129*00b67f09SDavid van Moolenbroek 2130*00b67f09SDavid van Moolenbroek $show "${rm}r $xdir" 2131*00b67f09SDavid van Moolenbroek $run ${rm}r "$xdir" 2132*00b67f09SDavid van Moolenbroek $show "mkdir $xdir" 2133*00b67f09SDavid van Moolenbroek $run mkdir "$xdir" 2134*00b67f09SDavid van Moolenbroek status=$? 2135*00b67f09SDavid van Moolenbroek if test $status -ne 0 && test ! -d "$xdir"; then 2136*00b67f09SDavid van Moolenbroek exit $status 2137*00b67f09SDavid van Moolenbroek fi 2138*00b67f09SDavid van Moolenbroek $show "(cd $xdir && $AR x $xabs)" 2139*00b67f09SDavid van Moolenbroek $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? 2140*00b67f09SDavid van Moolenbroek 2141*00b67f09SDavid van Moolenbroek libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` 2142*00b67f09SDavid van Moolenbroek done 2143*00b67f09SDavid van Moolenbroek fi 2144*00b67f09SDavid van Moolenbroek fi 2145*00b67f09SDavid van Moolenbroek 2146*00b67f09SDavid van Moolenbroek if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 2147*00b67f09SDavid van Moolenbroek eval flag=\"$thread_safe_flag_spec\" 2148*00b67f09SDavid van Moolenbroek linkopts="$linkopts $flag" 2149*00b67f09SDavid van Moolenbroek fi 2150*00b67f09SDavid van Moolenbroek 2151*00b67f09SDavid van Moolenbroek # Do each of the archive commands. 2152*00b67f09SDavid van Moolenbroek if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 2153*00b67f09SDavid van Moolenbroek eval cmds=\"$archive_expsym_cmds\" 2154*00b67f09SDavid van Moolenbroek else 2155*00b67f09SDavid van Moolenbroek eval cmds=\"$archive_cmds\" 2156*00b67f09SDavid van Moolenbroek fi 2157*00b67f09SDavid van Moolenbroek IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 2158*00b67f09SDavid van Moolenbroek for cmd in $cmds; do 2159*00b67f09SDavid van Moolenbroek IFS="$save_ifs" 2160*00b67f09SDavid van Moolenbroek $show "$cmd" 2161*00b67f09SDavid van Moolenbroek $run eval "$cmd" || exit $? 2162*00b67f09SDavid van Moolenbroek done 2163*00b67f09SDavid van Moolenbroek IFS="$save_ifs" 2164*00b67f09SDavid van Moolenbroek 2165*00b67f09SDavid van Moolenbroek # Create links to the real library. 2166*00b67f09SDavid van Moolenbroek for linkname in $linknames; do 2167*00b67f09SDavid van Moolenbroek if test "$realname" != "$linkname"; then 2168*00b67f09SDavid van Moolenbroek $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" 2169*00b67f09SDavid van Moolenbroek $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? 2170*00b67f09SDavid van Moolenbroek fi 2171*00b67f09SDavid van Moolenbroek done 2172*00b67f09SDavid van Moolenbroek 2173*00b67f09SDavid van Moolenbroek # If -module or -export-dynamic was specified, set the dlname. 2174*00b67f09SDavid van Moolenbroek if test "$module" = yes || test "$export_dynamic" = yes; then 2175*00b67f09SDavid van Moolenbroek # On all known operating systems, these are identical. 2176*00b67f09SDavid van Moolenbroek dlname="$soname" 2177*00b67f09SDavid van Moolenbroek fi 2178*00b67f09SDavid van Moolenbroek fi 2179*00b67f09SDavid van Moolenbroek ;; 2180*00b67f09SDavid van Moolenbroek 2181*00b67f09SDavid van Moolenbroek *.lo | *.o | *.obj) 2182*00b67f09SDavid van Moolenbroek if test -n "$link_against_libtool_libs"; then 2183*00b67f09SDavid van Moolenbroek $echo "$modename: error: cannot link libtool libraries into objects" 1>&2 2184*00b67f09SDavid van Moolenbroek exit 1 2185*00b67f09SDavid van Moolenbroek fi 2186*00b67f09SDavid van Moolenbroek 2187*00b67f09SDavid van Moolenbroek if test -n "$deplibs"; then 2188*00b67f09SDavid van Moolenbroek $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 2189*00b67f09SDavid van Moolenbroek fi 2190*00b67f09SDavid van Moolenbroek 2191*00b67f09SDavid van Moolenbroek if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 2192*00b67f09SDavid van Moolenbroek $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 2193*00b67f09SDavid van Moolenbroek fi 2194*00b67f09SDavid van Moolenbroek 2195*00b67f09SDavid van Moolenbroek if test -n "$rpath"; then 2196*00b67f09SDavid van Moolenbroek $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 2197*00b67f09SDavid van Moolenbroek fi 2198*00b67f09SDavid van Moolenbroek 2199*00b67f09SDavid van Moolenbroek if test -n "$xrpath"; then 2200*00b67f09SDavid van Moolenbroek $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 2201*00b67f09SDavid van Moolenbroek fi 2202*00b67f09SDavid van Moolenbroek 2203*00b67f09SDavid van Moolenbroek if test -n "$vinfo"; then 2204*00b67f09SDavid van Moolenbroek $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 2205*00b67f09SDavid van Moolenbroek fi 2206*00b67f09SDavid van Moolenbroek 2207*00b67f09SDavid van Moolenbroek if test -n "$release"; then 2208*00b67f09SDavid van Moolenbroek $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 2209*00b67f09SDavid van Moolenbroek fi 2210*00b67f09SDavid van Moolenbroek 2211*00b67f09SDavid van Moolenbroek case "$output" in 2212*00b67f09SDavid van Moolenbroek *.lo) 2213*00b67f09SDavid van Moolenbroek if test -n "$objs"; then 2214*00b67f09SDavid van Moolenbroek $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 2215*00b67f09SDavid van Moolenbroek exit 1 2216*00b67f09SDavid van Moolenbroek fi 2217*00b67f09SDavid van Moolenbroek libobj="$output" 2218*00b67f09SDavid van Moolenbroek obj=`$echo "X$output" | $Xsed -e "$lo2o"` 2219*00b67f09SDavid van Moolenbroek ;; 2220*00b67f09SDavid van Moolenbroek *) 2221*00b67f09SDavid van Moolenbroek libobj= 2222*00b67f09SDavid van Moolenbroek obj="$output" 2223*00b67f09SDavid van Moolenbroek ;; 2224*00b67f09SDavid van Moolenbroek esac 2225*00b67f09SDavid van Moolenbroek 2226*00b67f09SDavid van Moolenbroek # Delete the old objects. 2227*00b67f09SDavid van Moolenbroek $run $rm $obj $libobj 2228*00b67f09SDavid van Moolenbroek 2229*00b67f09SDavid van Moolenbroek # Objects from convenience libraries. This assumes 2230*00b67f09SDavid van Moolenbroek # single-version convenience libraries. Whenever we create 2231*00b67f09SDavid van Moolenbroek # different ones for PIC/non-PIC, this we'll have to duplicate 2232*00b67f09SDavid van Moolenbroek # the extraction. 2233*00b67f09SDavid van Moolenbroek reload_conv_objs= 2234*00b67f09SDavid van Moolenbroek gentop= 2235*00b67f09SDavid van Moolenbroek # reload_cmds runs $LD directly, so let us get rid of 2236*00b67f09SDavid van Moolenbroek # -Wl from whole_archive_flag_spec 2237*00b67f09SDavid van Moolenbroek wl= 2238*00b67f09SDavid van Moolenbroek 2239*00b67f09SDavid van Moolenbroek if test -n "$convenience"; then 2240*00b67f09SDavid van Moolenbroek if test -n "$whole_archive_flag_spec"; then 2241*00b67f09SDavid van Moolenbroek eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" 2242*00b67f09SDavid van Moolenbroek else 2243*00b67f09SDavid van Moolenbroek gentop="$output_objdir/${obj}x" 2244*00b67f09SDavid van Moolenbroek $show "${rm}r $gentop" 2245*00b67f09SDavid van Moolenbroek $run ${rm}r "$gentop" 2246*00b67f09SDavid van Moolenbroek $show "mkdir $gentop" 2247*00b67f09SDavid van Moolenbroek $run mkdir "$gentop" 2248*00b67f09SDavid van Moolenbroek status=$? 2249*00b67f09SDavid van Moolenbroek if test $status -ne 0 && test ! -d "$gentop"; then 2250*00b67f09SDavid van Moolenbroek exit $status 2251*00b67f09SDavid van Moolenbroek fi 2252*00b67f09SDavid van Moolenbroek generated="$generated $gentop" 2253*00b67f09SDavid van Moolenbroek 2254*00b67f09SDavid van Moolenbroek for xlib in $convenience; do 2255*00b67f09SDavid van Moolenbroek # Extract the objects. 2256*00b67f09SDavid van Moolenbroek case "$xlib" in 2257*00b67f09SDavid van Moolenbroek [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; 2258*00b67f09SDavid van Moolenbroek *) xabs=`pwd`"/$xlib" ;; 2259*00b67f09SDavid van Moolenbroek esac 2260*00b67f09SDavid van Moolenbroek xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` 2261*00b67f09SDavid van Moolenbroek xdir="$gentop/$xlib" 2262*00b67f09SDavid van Moolenbroek 2263*00b67f09SDavid van Moolenbroek $show "${rm}r $xdir" 2264*00b67f09SDavid van Moolenbroek $run ${rm}r "$xdir" 2265*00b67f09SDavid van Moolenbroek $show "mkdir $xdir" 2266*00b67f09SDavid van Moolenbroek $run mkdir "$xdir" 2267*00b67f09SDavid van Moolenbroek status=$? 2268*00b67f09SDavid van Moolenbroek if test $status -ne 0 && test ! -d "$xdir"; then 2269*00b67f09SDavid van Moolenbroek exit $status 2270*00b67f09SDavid van Moolenbroek fi 2271*00b67f09SDavid van Moolenbroek $show "(cd $xdir && $AR x $xabs)" 2272*00b67f09SDavid van Moolenbroek $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? 2273*00b67f09SDavid van Moolenbroek 2274*00b67f09SDavid van Moolenbroek reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` 2275*00b67f09SDavid van Moolenbroek done 2276*00b67f09SDavid van Moolenbroek fi 2277*00b67f09SDavid van Moolenbroek fi 2278*00b67f09SDavid van Moolenbroek 2279*00b67f09SDavid van Moolenbroek # Create the old-style object. 2280*00b67f09SDavid van Moolenbroek reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" 2281*00b67f09SDavid van Moolenbroek 2282*00b67f09SDavid van Moolenbroek output="$obj" 2283*00b67f09SDavid van Moolenbroek eval cmds=\"$reload_cmds\" 2284*00b67f09SDavid van Moolenbroek IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 2285*00b67f09SDavid van Moolenbroek for cmd in $cmds; do 2286*00b67f09SDavid van Moolenbroek IFS="$save_ifs" 2287*00b67f09SDavid van Moolenbroek $show "$cmd" 2288*00b67f09SDavid van Moolenbroek $run eval "$cmd" || exit $? 2289*00b67f09SDavid van Moolenbroek done 2290*00b67f09SDavid van Moolenbroek IFS="$save_ifs" 2291*00b67f09SDavid van Moolenbroek 2292*00b67f09SDavid van Moolenbroek # Exit if we aren't doing a library object file. 2293*00b67f09SDavid van Moolenbroek if test -z "$libobj"; then 2294*00b67f09SDavid van Moolenbroek if test -n "$gentop"; then 2295*00b67f09SDavid van Moolenbroek $show "${rm}r $gentop" 2296*00b67f09SDavid van Moolenbroek $run ${rm}r $gentop 2297*00b67f09SDavid van Moolenbroek fi 2298*00b67f09SDavid van Moolenbroek 2299*00b67f09SDavid van Moolenbroek exit 0 2300*00b67f09SDavid van Moolenbroek fi 2301*00b67f09SDavid van Moolenbroek 2302*00b67f09SDavid van Moolenbroek if test "$build_libtool_libs" != yes; then 2303*00b67f09SDavid van Moolenbroek if test -n "$gentop"; then 2304*00b67f09SDavid van Moolenbroek $show "${rm}r $gentop" 2305*00b67f09SDavid van Moolenbroek $run ${rm}r $gentop 2306*00b67f09SDavid van Moolenbroek fi 2307*00b67f09SDavid van Moolenbroek 2308*00b67f09SDavid van Moolenbroek # Create an invalid libtool object if no PIC, so that we don't 2309*00b67f09SDavid van Moolenbroek # accidentally link it into a program. 2310*00b67f09SDavid van Moolenbroek $show "echo timestamp > $libobj" 2311*00b67f09SDavid van Moolenbroek $run eval "echo timestamp > $libobj" || exit $? 2312*00b67f09SDavid van Moolenbroek exit 0 2313*00b67f09SDavid van Moolenbroek fi 2314*00b67f09SDavid van Moolenbroek 2315*00b67f09SDavid van Moolenbroek if test -n "$pic_flag"; then 2316*00b67f09SDavid van Moolenbroek # Only do commands if we really have different PIC objects. 2317*00b67f09SDavid van Moolenbroek reload_objs="$libobjs $reload_conv_objs" 2318*00b67f09SDavid van Moolenbroek output="$libobj" 2319*00b67f09SDavid van Moolenbroek eval cmds=\"$reload_cmds\" 2320*00b67f09SDavid van Moolenbroek IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 2321*00b67f09SDavid van Moolenbroek for cmd in $cmds; do 2322*00b67f09SDavid van Moolenbroek IFS="$save_ifs" 2323*00b67f09SDavid van Moolenbroek $show "$cmd" 2324*00b67f09SDavid van Moolenbroek $run eval "$cmd" || exit $? 2325*00b67f09SDavid van Moolenbroek done 2326*00b67f09SDavid van Moolenbroek IFS="$save_ifs" 2327*00b67f09SDavid van Moolenbroek else 2328*00b67f09SDavid van Moolenbroek # Just create a symlink. 2329*00b67f09SDavid van Moolenbroek $show $rm $libobj 2330*00b67f09SDavid van Moolenbroek $run $rm $libobj 2331*00b67f09SDavid van Moolenbroek xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` 2332*00b67f09SDavid van Moolenbroek if test "X$xdir" = "X$libobj"; then 2333*00b67f09SDavid van Moolenbroek xdir="." 2334*00b67f09SDavid van Moolenbroek else 2335*00b67f09SDavid van Moolenbroek xdir="$xdir" 2336*00b67f09SDavid van Moolenbroek fi 2337*00b67f09SDavid van Moolenbroek baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` 2338*00b67f09SDavid van Moolenbroek oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` 2339*00b67f09SDavid van Moolenbroek $show "(cd $xdir && $LN_S $oldobj $baseobj)" 2340*00b67f09SDavid van Moolenbroek $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $? 2341*00b67f09SDavid van Moolenbroek fi 2342*00b67f09SDavid van Moolenbroek 2343*00b67f09SDavid van Moolenbroek if test -n "$gentop"; then 2344*00b67f09SDavid van Moolenbroek $show "${rm}r $gentop" 2345*00b67f09SDavid van Moolenbroek $run ${rm}r $gentop 2346*00b67f09SDavid van Moolenbroek fi 2347*00b67f09SDavid van Moolenbroek 2348*00b67f09SDavid van Moolenbroek exit 0 2349*00b67f09SDavid van Moolenbroek ;; 2350*00b67f09SDavid van Moolenbroek 2351*00b67f09SDavid van Moolenbroek # Anything else should be a program. 2352*00b67f09SDavid van Moolenbroek *) 2353*00b67f09SDavid van Moolenbroek if test -n "$vinfo"; then 2354*00b67f09SDavid van Moolenbroek $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 2355*00b67f09SDavid van Moolenbroek fi 2356*00b67f09SDavid van Moolenbroek 2357*00b67f09SDavid van Moolenbroek if test -n "$release"; then 2358*00b67f09SDavid van Moolenbroek $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 2359*00b67f09SDavid van Moolenbroek fi 2360*00b67f09SDavid van Moolenbroek 2361*00b67f09SDavid van Moolenbroek if test "$preload" = yes; then 2362*00b67f09SDavid van Moolenbroek if test "$dlopen" = unknown && test "$dlopen_self" = unknown && 2363*00b67f09SDavid van Moolenbroek test "$dlopen_self_static" = unknown; then 2364*00b67f09SDavid van Moolenbroek $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." 2365*00b67f09SDavid van Moolenbroek fi 2366*00b67f09SDavid van Moolenbroek fi 2367*00b67f09SDavid van Moolenbroek 2368*00b67f09SDavid van Moolenbroek if test -n "$rpath$xrpath"; then 2369*00b67f09SDavid van Moolenbroek # If the user specified any rpath flags, then add them. 2370*00b67f09SDavid van Moolenbroek for libdir in $rpath $xrpath; do 2371*00b67f09SDavid van Moolenbroek # This is the magic to use -rpath. 2372*00b67f09SDavid van Moolenbroek case "$compile_rpath " in 2373*00b67f09SDavid van Moolenbroek *" $libdir "*) ;; 2374*00b67f09SDavid van Moolenbroek *) compile_rpath="$compile_rpath $libdir" ;; 2375*00b67f09SDavid van Moolenbroek esac 2376*00b67f09SDavid van Moolenbroek case "$finalize_rpath " in 2377*00b67f09SDavid van Moolenbroek *" $libdir "*) ;; 2378*00b67f09SDavid van Moolenbroek *) finalize_rpath="$finalize_rpath $libdir" ;; 2379*00b67f09SDavid van Moolenbroek esac 2380*00b67f09SDavid van Moolenbroek done 2381*00b67f09SDavid van Moolenbroek fi 2382*00b67f09SDavid van Moolenbroek 2383*00b67f09SDavid van Moolenbroek # Now hardcode the library paths 2384*00b67f09SDavid van Moolenbroek rpath= 2385*00b67f09SDavid van Moolenbroek hardcode_libdirs= 2386*00b67f09SDavid van Moolenbroek for libdir in $compile_rpath $finalize_rpath; do 2387*00b67f09SDavid van Moolenbroek if test -n "$hardcode_libdir_flag_spec"; then 2388*00b67f09SDavid van Moolenbroek if test -n "$hardcode_libdir_separator"; then 2389*00b67f09SDavid van Moolenbroek if test -z "$hardcode_libdirs"; then 2390*00b67f09SDavid van Moolenbroek hardcode_libdirs="$libdir" 2391*00b67f09SDavid van Moolenbroek else 2392*00b67f09SDavid van Moolenbroek # Just accumulate the unique libdirs. 2393*00b67f09SDavid van Moolenbroek case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in 2394*00b67f09SDavid van Moolenbroek *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 2395*00b67f09SDavid van Moolenbroek ;; 2396*00b67f09SDavid van Moolenbroek *) 2397*00b67f09SDavid van Moolenbroek hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 2398*00b67f09SDavid van Moolenbroek ;; 2399*00b67f09SDavid van Moolenbroek esac 2400*00b67f09SDavid van Moolenbroek fi 2401*00b67f09SDavid van Moolenbroek else 2402*00b67f09SDavid van Moolenbroek eval flag=\"$hardcode_libdir_flag_spec\" 2403*00b67f09SDavid van Moolenbroek rpath="$rpath $flag" 2404*00b67f09SDavid van Moolenbroek fi 2405*00b67f09SDavid van Moolenbroek elif test -n "$runpath_var"; then 2406*00b67f09SDavid van Moolenbroek case "$perm_rpath " in 2407*00b67f09SDavid van Moolenbroek *" $libdir "*) ;; 2408*00b67f09SDavid van Moolenbroek *) perm_rpath="$perm_rpath $libdir" ;; 2409*00b67f09SDavid van Moolenbroek esac 2410*00b67f09SDavid van Moolenbroek fi 2411*00b67f09SDavid van Moolenbroek done 2412*00b67f09SDavid van Moolenbroek # Substitute the hardcoded libdirs into the rpath. 2413*00b67f09SDavid van Moolenbroek if test -n "$hardcode_libdir_separator" && 2414*00b67f09SDavid van Moolenbroek test -n "$hardcode_libdirs"; then 2415*00b67f09SDavid van Moolenbroek libdir="$hardcode_libdirs" 2416*00b67f09SDavid van Moolenbroek eval rpath=\" $hardcode_libdir_flag_spec\" 2417*00b67f09SDavid van Moolenbroek fi 2418*00b67f09SDavid van Moolenbroek compile_rpath="$rpath" 2419*00b67f09SDavid van Moolenbroek 2420*00b67f09SDavid van Moolenbroek rpath= 2421*00b67f09SDavid van Moolenbroek hardcode_libdirs= 2422*00b67f09SDavid van Moolenbroek for libdir in $finalize_rpath; do 2423*00b67f09SDavid van Moolenbroek if test -n "$hardcode_libdir_flag_spec"; then 2424*00b67f09SDavid van Moolenbroek if test -n "$hardcode_libdir_separator"; then 2425*00b67f09SDavid van Moolenbroek if test -z "$hardcode_libdirs"; then 2426*00b67f09SDavid van Moolenbroek hardcode_libdirs="$libdir" 2427*00b67f09SDavid van Moolenbroek else 2428*00b67f09SDavid van Moolenbroek # Just accumulate the unique libdirs. 2429*00b67f09SDavid van Moolenbroek case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in 2430*00b67f09SDavid van Moolenbroek *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 2431*00b67f09SDavid van Moolenbroek ;; 2432*00b67f09SDavid van Moolenbroek *) 2433*00b67f09SDavid van Moolenbroek hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 2434*00b67f09SDavid van Moolenbroek ;; 2435*00b67f09SDavid van Moolenbroek esac 2436*00b67f09SDavid van Moolenbroek fi 2437*00b67f09SDavid van Moolenbroek else 2438*00b67f09SDavid van Moolenbroek eval flag=\"$hardcode_libdir_flag_spec\" 2439*00b67f09SDavid van Moolenbroek rpath="$rpath $flag" 2440*00b67f09SDavid van Moolenbroek fi 2441*00b67f09SDavid van Moolenbroek elif test -n "$runpath_var"; then 2442*00b67f09SDavid van Moolenbroek case "$finalize_perm_rpath " in 2443*00b67f09SDavid van Moolenbroek *" $libdir "*) ;; 2444*00b67f09SDavid van Moolenbroek *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; 2445*00b67f09SDavid van Moolenbroek esac 2446*00b67f09SDavid van Moolenbroek fi 2447*00b67f09SDavid van Moolenbroek done 2448*00b67f09SDavid van Moolenbroek # Substitute the hardcoded libdirs into the rpath. 2449*00b67f09SDavid van Moolenbroek if test -n "$hardcode_libdir_separator" && 2450*00b67f09SDavid van Moolenbroek test -n "$hardcode_libdirs"; then 2451*00b67f09SDavid van Moolenbroek libdir="$hardcode_libdirs" 2452*00b67f09SDavid van Moolenbroek eval rpath=\" $hardcode_libdir_flag_spec\" 2453*00b67f09SDavid van Moolenbroek fi 2454*00b67f09SDavid van Moolenbroek finalize_rpath="$rpath" 2455*00b67f09SDavid van Moolenbroek 2456*00b67f09SDavid van Moolenbroek output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` 2457*00b67f09SDavid van Moolenbroek if test "X$output_objdir" = "X$output"; then 2458*00b67f09SDavid van Moolenbroek output_objdir="$objdir" 2459*00b67f09SDavid van Moolenbroek else 2460*00b67f09SDavid van Moolenbroek output_objdir="$output_objdir/$objdir" 2461*00b67f09SDavid van Moolenbroek fi 2462*00b67f09SDavid van Moolenbroek 2463*00b67f09SDavid van Moolenbroek # Create the binary in the object directory, then wrap it. 2464*00b67f09SDavid van Moolenbroek if test ! -d $output_objdir; then 2465*00b67f09SDavid van Moolenbroek $show "$mkdir $output_objdir" 2466*00b67f09SDavid van Moolenbroek $run $mkdir $output_objdir 2467*00b67f09SDavid van Moolenbroek status=$? 2468*00b67f09SDavid van Moolenbroek if test $status -ne 0 && test ! -d $output_objdir; then 2469*00b67f09SDavid van Moolenbroek exit $status 2470*00b67f09SDavid van Moolenbroek fi 2471*00b67f09SDavid van Moolenbroek fi 2472*00b67f09SDavid van Moolenbroek 2473*00b67f09SDavid van Moolenbroek if test -n "$libobjs" && test "$build_old_libs" = yes; then 2474*00b67f09SDavid van Moolenbroek # Transform all the library objects into standard objects. 2475*00b67f09SDavid van Moolenbroek compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 2476*00b67f09SDavid van Moolenbroek finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 2477*00b67f09SDavid van Moolenbroek fi 2478*00b67f09SDavid van Moolenbroek 2479*00b67f09SDavid van Moolenbroek dlsyms= 2480*00b67f09SDavid van Moolenbroek if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 2481*00b67f09SDavid van Moolenbroek if test -n "$NM" && test -n "$global_symbol_pipe"; then 2482*00b67f09SDavid van Moolenbroek dlsyms="${outputname}S.c" 2483*00b67f09SDavid van Moolenbroek else 2484*00b67f09SDavid van Moolenbroek $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 2485*00b67f09SDavid van Moolenbroek fi 2486*00b67f09SDavid van Moolenbroek fi 2487*00b67f09SDavid van Moolenbroek 2488*00b67f09SDavid van Moolenbroek if test -n "$dlsyms"; then 2489*00b67f09SDavid van Moolenbroek case "$dlsyms" in 2490*00b67f09SDavid van Moolenbroek "") ;; 2491*00b67f09SDavid van Moolenbroek *.c) 2492*00b67f09SDavid van Moolenbroek # Discover the nlist of each of the dlfiles. 2493*00b67f09SDavid van Moolenbroek nlist="$output_objdir/${outputname}.nm" 2494*00b67f09SDavid van Moolenbroek 2495*00b67f09SDavid van Moolenbroek $show "$rm $nlist ${nlist}S ${nlist}T" 2496*00b67f09SDavid van Moolenbroek $run $rm "$nlist" "${nlist}S" "${nlist}T" 2497*00b67f09SDavid van Moolenbroek 2498*00b67f09SDavid van Moolenbroek # Parse the name list into a source file. 2499*00b67f09SDavid van Moolenbroek $show "creating $output_objdir/$dlsyms" 2500*00b67f09SDavid van Moolenbroek 2501*00b67f09SDavid van Moolenbroek test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ 2502*00b67f09SDavid van Moolenbroek/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ 2503*00b67f09SDavid van Moolenbroek/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ 2504*00b67f09SDavid van Moolenbroek 2505*00b67f09SDavid van Moolenbroek#ifdef __cplusplus 2506*00b67f09SDavid van Moolenbroekextern \"C\" { 2507*00b67f09SDavid van Moolenbroek#endif 2508*00b67f09SDavid van Moolenbroek 2509*00b67f09SDavid van Moolenbroek/* Prevent the only kind of declaration conflicts we can make. */ 2510*00b67f09SDavid van Moolenbroek#define lt_preloaded_symbols some_other_symbol 2511*00b67f09SDavid van Moolenbroek 2512*00b67f09SDavid van Moolenbroek/* External symbol declarations for the compiler. */\ 2513*00b67f09SDavid van Moolenbroek" 2514*00b67f09SDavid van Moolenbroek 2515*00b67f09SDavid van Moolenbroek if test "$dlself" = yes; then 2516*00b67f09SDavid van Moolenbroek $show "generating symbol list for \`$output'" 2517*00b67f09SDavid van Moolenbroek 2518*00b67f09SDavid van Moolenbroek test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" 2519*00b67f09SDavid van Moolenbroek 2520*00b67f09SDavid van Moolenbroek # Add our own program objects to the symbol list. 2521*00b67f09SDavid van Moolenbroek progfiles=`$echo "X$objs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 2522*00b67f09SDavid van Moolenbroek for arg in $progfiles; do 2523*00b67f09SDavid van Moolenbroek $show "extracting global C symbols from \`$arg'" 2524*00b67f09SDavid van Moolenbroek $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 2525*00b67f09SDavid van Moolenbroek done 2526*00b67f09SDavid van Moolenbroek 2527*00b67f09SDavid van Moolenbroek if test -n "$exclude_expsyms"; then 2528*00b67f09SDavid van Moolenbroek $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 2529*00b67f09SDavid van Moolenbroek $run eval '$mv "$nlist"T "$nlist"' 2530*00b67f09SDavid van Moolenbroek fi 2531*00b67f09SDavid van Moolenbroek 2532*00b67f09SDavid van Moolenbroek if test -n "$export_symbols_regex"; then 2533*00b67f09SDavid van Moolenbroek $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T' 2534*00b67f09SDavid van Moolenbroek $run eval '$mv "$nlist"T "$nlist"' 2535*00b67f09SDavid van Moolenbroek fi 2536*00b67f09SDavid van Moolenbroek 2537*00b67f09SDavid van Moolenbroek # Prepare the list of exported symbols 2538*00b67f09SDavid van Moolenbroek if test -z "$export_symbols"; then 2539*00b67f09SDavid van Moolenbroek export_symbols="$output_objdir/$output.exp" 2540*00b67f09SDavid van Moolenbroek $run $rm $export_symbols 2541*00b67f09SDavid van Moolenbroek $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 2542*00b67f09SDavid van Moolenbroek else 2543*00b67f09SDavid van Moolenbroek $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' 2544*00b67f09SDavid van Moolenbroek $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' 2545*00b67f09SDavid van Moolenbroek $run eval 'mv "$nlist"T "$nlist"' 2546*00b67f09SDavid van Moolenbroek fi 2547*00b67f09SDavid van Moolenbroek fi 2548*00b67f09SDavid van Moolenbroek 2549*00b67f09SDavid van Moolenbroek for arg in $dlprefiles; do 2550*00b67f09SDavid van Moolenbroek $show "extracting global C symbols from \`$arg'" 2551*00b67f09SDavid van Moolenbroek name=`echo "$arg" | sed -e 's%^.*/%%'` 2552*00b67f09SDavid van Moolenbroek $run eval 'echo ": $name " >> "$nlist"' 2553*00b67f09SDavid van Moolenbroek $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 2554*00b67f09SDavid van Moolenbroek done 2555*00b67f09SDavid van Moolenbroek 2556*00b67f09SDavid van Moolenbroek if test -z "$run"; then 2557*00b67f09SDavid van Moolenbroek # Make sure we have at least an empty file. 2558*00b67f09SDavid van Moolenbroek test -f "$nlist" || : > "$nlist" 2559*00b67f09SDavid van Moolenbroek 2560*00b67f09SDavid van Moolenbroek if test -n "$exclude_expsyms"; then 2561*00b67f09SDavid van Moolenbroek egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 2562*00b67f09SDavid van Moolenbroek $mv "$nlist"T "$nlist" 2563*00b67f09SDavid van Moolenbroek fi 2564*00b67f09SDavid van Moolenbroek 2565*00b67f09SDavid van Moolenbroek # Try sorting and uniquifying the output. 2566*00b67f09SDavid van Moolenbroek if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then 2567*00b67f09SDavid van Moolenbroek : 2568*00b67f09SDavid van Moolenbroek else 2569*00b67f09SDavid van Moolenbroek grep -v "^: " < "$nlist" > "$nlist"S 2570*00b67f09SDavid van Moolenbroek fi 2571*00b67f09SDavid van Moolenbroek 2572*00b67f09SDavid van Moolenbroek if test -f "$nlist"S; then 2573*00b67f09SDavid van Moolenbroek eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' 2574*00b67f09SDavid van Moolenbroek else 2575*00b67f09SDavid van Moolenbroek echo '/* NONE */' >> "$output_objdir/$dlsyms" 2576*00b67f09SDavid van Moolenbroek fi 2577*00b67f09SDavid van Moolenbroek 2578*00b67f09SDavid van Moolenbroek $echo >> "$output_objdir/$dlsyms" "\ 2579*00b67f09SDavid van Moolenbroek 2580*00b67f09SDavid van Moolenbroek#undef lt_preloaded_symbols 2581*00b67f09SDavid van Moolenbroek 2582*00b67f09SDavid van Moolenbroek#if defined (__STDC__) && __STDC__ 2583*00b67f09SDavid van Moolenbroek# define lt_ptr_t void * 2584*00b67f09SDavid van Moolenbroek#else 2585*00b67f09SDavid van Moolenbroek# define lt_ptr_t char * 2586*00b67f09SDavid van Moolenbroek# define const 2587*00b67f09SDavid van Moolenbroek#endif 2588*00b67f09SDavid van Moolenbroek 2589*00b67f09SDavid van Moolenbroek/* The mapping between symbol names and symbols. */ 2590*00b67f09SDavid van Moolenbroekconst struct { 2591*00b67f09SDavid van Moolenbroek const char *name; 2592*00b67f09SDavid van Moolenbroek lt_ptr_t address; 2593*00b67f09SDavid van Moolenbroek} 2594*00b67f09SDavid van Moolenbroeklt_preloaded_symbols[] = 2595*00b67f09SDavid van Moolenbroek{\ 2596*00b67f09SDavid van Moolenbroek" 2597*00b67f09SDavid van Moolenbroek 2598*00b67f09SDavid van Moolenbroek sed -n -e 's/^: \([^ ]*\) $/ {\"\1\", (lt_ptr_t) 0},/p' \ 2599*00b67f09SDavid van Moolenbroek -e 's/^. \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr_t) \&\2},/p' \ 2600*00b67f09SDavid van Moolenbroek < "$nlist" >> "$output_objdir/$dlsyms" 2601*00b67f09SDavid van Moolenbroek 2602*00b67f09SDavid van Moolenbroek $echo >> "$output_objdir/$dlsyms" "\ 2603*00b67f09SDavid van Moolenbroek {0, (lt_ptr_t) 0} 2604*00b67f09SDavid van Moolenbroek}; 2605*00b67f09SDavid van Moolenbroek 2606*00b67f09SDavid van Moolenbroek/* This works around a problem in FreeBSD linker */ 2607*00b67f09SDavid van Moolenbroek#ifdef FREEBSD_WORKAROUND 2608*00b67f09SDavid van Moolenbroekstatic const void *lt_preloaded_setup() { 2609*00b67f09SDavid van Moolenbroek return lt_preloaded_symbols; 2610*00b67f09SDavid van Moolenbroek} 2611*00b67f09SDavid van Moolenbroek#endif 2612*00b67f09SDavid van Moolenbroek 2613*00b67f09SDavid van Moolenbroek#ifdef __cplusplus 2614*00b67f09SDavid van Moolenbroek} 2615*00b67f09SDavid van Moolenbroek#endif\ 2616*00b67f09SDavid van Moolenbroek" 2617*00b67f09SDavid van Moolenbroek fi 2618*00b67f09SDavid van Moolenbroek 2619*00b67f09SDavid van Moolenbroek pic_flag_for_symtable= 2620*00b67f09SDavid van Moolenbroek case "$host" in 2621*00b67f09SDavid van Moolenbroek # compiling the symbol table file with pic_flag works around 2622*00b67f09SDavid van Moolenbroek # a FreeBSD bug that causes programs to crash when -lm is 2623*00b67f09SDavid van Moolenbroek # linked before any other PIC object. But we must not use 2624*00b67f09SDavid van Moolenbroek # pic_flag when linking with -static. The problem exists in 2625*00b67f09SDavid van Moolenbroek # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 2626*00b67f09SDavid van Moolenbroek *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 2627*00b67f09SDavid van Moolenbroek case "$compile_command " in 2628*00b67f09SDavid van Moolenbroek *" -static "*) ;; 2629*00b67f09SDavid van Moolenbroek *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";; 2630*00b67f09SDavid van Moolenbroek esac;; 2631*00b67f09SDavid van Moolenbroek *-*-hpux*) 2632*00b67f09SDavid van Moolenbroek case "$compile_command " in 2633*00b67f09SDavid van Moolenbroek *" -static "*) ;; 2634*00b67f09SDavid van Moolenbroek *) pic_flag_for_symtable=" $pic_flag -DPIC";; 2635*00b67f09SDavid van Moolenbroek esac 2636*00b67f09SDavid van Moolenbroek esac 2637*00b67f09SDavid van Moolenbroek 2638*00b67f09SDavid van Moolenbroek # Now compile the dynamic symbol file. 2639*00b67f09SDavid van Moolenbroek $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" 2640*00b67f09SDavid van Moolenbroek $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? 2641*00b67f09SDavid van Moolenbroek 2642*00b67f09SDavid van Moolenbroek # Clean up the generated files. 2643*00b67f09SDavid van Moolenbroek $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" 2644*00b67f09SDavid van Moolenbroek $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" 2645*00b67f09SDavid van Moolenbroek 2646*00b67f09SDavid van Moolenbroek # Transform the symbol file into the correct name. 2647*00b67f09SDavid van Moolenbroek compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` 2648*00b67f09SDavid van Moolenbroek finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` 2649*00b67f09SDavid van Moolenbroek ;; 2650*00b67f09SDavid van Moolenbroek *) 2651*00b67f09SDavid van Moolenbroek $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 2652*00b67f09SDavid van Moolenbroek exit 1 2653*00b67f09SDavid van Moolenbroek ;; 2654*00b67f09SDavid van Moolenbroek esac 2655*00b67f09SDavid van Moolenbroek else 2656*00b67f09SDavid van Moolenbroek # We keep going just in case the user didn't refer to 2657*00b67f09SDavid van Moolenbroek # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 2658*00b67f09SDavid van Moolenbroek # really was required. 2659*00b67f09SDavid van Moolenbroek 2660*00b67f09SDavid van Moolenbroek # Nullify the symbol file. 2661*00b67f09SDavid van Moolenbroek compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` 2662*00b67f09SDavid van Moolenbroek finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` 2663*00b67f09SDavid van Moolenbroek fi 2664*00b67f09SDavid van Moolenbroek 2665*00b67f09SDavid van Moolenbroek if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then 2666*00b67f09SDavid van Moolenbroek # Replace the output file specification. 2667*00b67f09SDavid van Moolenbroek compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 2668*00b67f09SDavid van Moolenbroek link_command="$compile_command$compile_rpath" 2669*00b67f09SDavid van Moolenbroek 2670*00b67f09SDavid van Moolenbroek # We have no uninstalled library dependencies, so finalize right now. 2671*00b67f09SDavid van Moolenbroek $show "$link_command" 2672*00b67f09SDavid van Moolenbroek $run eval "$link_command" 2673*00b67f09SDavid van Moolenbroek status=$? 2674*00b67f09SDavid van Moolenbroek 2675*00b67f09SDavid van Moolenbroek # Delete the generated files. 2676*00b67f09SDavid van Moolenbroek if test -n "$dlsyms"; then 2677*00b67f09SDavid van Moolenbroek $show "$rm $output_objdir/${outputname}S.${objext}" 2678*00b67f09SDavid van Moolenbroek $run $rm "$output_objdir/${outputname}S.${objext}" 2679*00b67f09SDavid van Moolenbroek fi 2680*00b67f09SDavid van Moolenbroek 2681*00b67f09SDavid van Moolenbroek exit $status 2682*00b67f09SDavid van Moolenbroek fi 2683*00b67f09SDavid van Moolenbroek 2684*00b67f09SDavid van Moolenbroek if test -n "$shlibpath_var"; then 2685*00b67f09SDavid van Moolenbroek # We should set the shlibpath_var 2686*00b67f09SDavid van Moolenbroek rpath= 2687*00b67f09SDavid van Moolenbroek for dir in $temp_rpath; do 2688*00b67f09SDavid van Moolenbroek case "$dir" in 2689*00b67f09SDavid van Moolenbroek [\\/]* | [A-Za-z]:[\\/]*) 2690*00b67f09SDavid van Moolenbroek # Absolute path. 2691*00b67f09SDavid van Moolenbroek rpath="$rpath$dir:" 2692*00b67f09SDavid van Moolenbroek ;; 2693*00b67f09SDavid van Moolenbroek *) 2694*00b67f09SDavid van Moolenbroek # Relative path: add a thisdir entry. 2695*00b67f09SDavid van Moolenbroek rpath="$rpath\$thisdir/$dir:" 2696*00b67f09SDavid van Moolenbroek ;; 2697*00b67f09SDavid van Moolenbroek esac 2698*00b67f09SDavid van Moolenbroek done 2699*00b67f09SDavid van Moolenbroek temp_rpath="$rpath" 2700*00b67f09SDavid van Moolenbroek fi 2701*00b67f09SDavid van Moolenbroek 2702*00b67f09SDavid van Moolenbroek if test -n "$compile_shlibpath$finalize_shlibpath"; then 2703*00b67f09SDavid van Moolenbroek compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 2704*00b67f09SDavid van Moolenbroek fi 2705*00b67f09SDavid van Moolenbroek if test -n "$finalize_shlibpath"; then 2706*00b67f09SDavid van Moolenbroek finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 2707*00b67f09SDavid van Moolenbroek fi 2708*00b67f09SDavid van Moolenbroek 2709*00b67f09SDavid van Moolenbroek compile_var= 2710*00b67f09SDavid van Moolenbroek finalize_var= 2711*00b67f09SDavid van Moolenbroek if test -n "$runpath_var"; then 2712*00b67f09SDavid van Moolenbroek if test -n "$perm_rpath"; then 2713*00b67f09SDavid van Moolenbroek # We should set the runpath_var. 2714*00b67f09SDavid van Moolenbroek rpath= 2715*00b67f09SDavid van Moolenbroek for dir in $perm_rpath; do 2716*00b67f09SDavid van Moolenbroek rpath="$rpath$dir:" 2717*00b67f09SDavid van Moolenbroek done 2718*00b67f09SDavid van Moolenbroek compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 2719*00b67f09SDavid van Moolenbroek fi 2720*00b67f09SDavid van Moolenbroek if test -n "$finalize_perm_rpath"; then 2721*00b67f09SDavid van Moolenbroek # We should set the runpath_var. 2722*00b67f09SDavid van Moolenbroek rpath= 2723*00b67f09SDavid van Moolenbroek for dir in $finalize_perm_rpath; do 2724*00b67f09SDavid van Moolenbroek rpath="$rpath$dir:" 2725*00b67f09SDavid van Moolenbroek done 2726*00b67f09SDavid van Moolenbroek finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 2727*00b67f09SDavid van Moolenbroek fi 2728*00b67f09SDavid van Moolenbroek fi 2729*00b67f09SDavid van Moolenbroek 2730*00b67f09SDavid van Moolenbroek if test "$hardcode_action" = relink; then 2731*00b67f09SDavid van Moolenbroek # Fast installation is not supported 2732*00b67f09SDavid van Moolenbroek link_command="$compile_var$compile_command$compile_rpath" 2733*00b67f09SDavid van Moolenbroek relink_command="$finalize_var$finalize_command$finalize_rpath" 2734*00b67f09SDavid van Moolenbroek 2735*00b67f09SDavid van Moolenbroek $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 2736*00b67f09SDavid van Moolenbroek $echo "$modename: \`$output' will be relinked during installation" 1>&2 2737*00b67f09SDavid van Moolenbroek else 2738*00b67f09SDavid van Moolenbroek if test "$fast_install" != no; then 2739*00b67f09SDavid van Moolenbroek link_command="$finalize_var$compile_command$finalize_rpath" 2740*00b67f09SDavid van Moolenbroek if test "$fast_install" = yes; then 2741*00b67f09SDavid van Moolenbroek relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` 2742*00b67f09SDavid van Moolenbroek else 2743*00b67f09SDavid van Moolenbroek # fast_install is set to needless 2744*00b67f09SDavid van Moolenbroek relink_command= 2745*00b67f09SDavid van Moolenbroek fi 2746*00b67f09SDavid van Moolenbroek else 2747*00b67f09SDavid van Moolenbroek link_command="$compile_var$compile_command$compile_rpath" 2748*00b67f09SDavid van Moolenbroek relink_command="$finalize_var$finalize_command$finalize_rpath" 2749*00b67f09SDavid van Moolenbroek fi 2750*00b67f09SDavid van Moolenbroek fi 2751*00b67f09SDavid van Moolenbroek 2752*00b67f09SDavid van Moolenbroek # Replace the output file specification. 2753*00b67f09SDavid van Moolenbroek link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 2754*00b67f09SDavid van Moolenbroek 2755*00b67f09SDavid van Moolenbroek # Delete the old output files. 2756*00b67f09SDavid van Moolenbroek $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname 2757*00b67f09SDavid van Moolenbroek 2758*00b67f09SDavid van Moolenbroek $show "$link_command" 2759*00b67f09SDavid van Moolenbroek $run eval "$link_command" || exit $? 2760*00b67f09SDavid van Moolenbroek 2761*00b67f09SDavid van Moolenbroek # Now create the wrapper script. 2762*00b67f09SDavid van Moolenbroek $show "creating $output" 2763*00b67f09SDavid van Moolenbroek 2764*00b67f09SDavid van Moolenbroek # Quote the relink command for shipping. 2765*00b67f09SDavid van Moolenbroek if test -n "$relink_command"; then 2766*00b67f09SDavid van Moolenbroek relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` 2767*00b67f09SDavid van Moolenbroek fi 2768*00b67f09SDavid van Moolenbroek 2769*00b67f09SDavid van Moolenbroek # Quote $echo for shipping. 2770*00b67f09SDavid van Moolenbroek if test "X$echo" = "X$SHELL $0 --fallback-echo"; then 2771*00b67f09SDavid van Moolenbroek case "$0" in 2772*00b67f09SDavid van Moolenbroek [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; 2773*00b67f09SDavid van Moolenbroek *) qecho="$SHELL `pwd`/$0 --fallback-echo";; 2774*00b67f09SDavid van Moolenbroek esac 2775*00b67f09SDavid van Moolenbroek qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` 2776*00b67f09SDavid van Moolenbroek else 2777*00b67f09SDavid van Moolenbroek qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` 2778*00b67f09SDavid van Moolenbroek fi 2779*00b67f09SDavid van Moolenbroek 2780*00b67f09SDavid van Moolenbroek # Only actually do things if our run command is non-null. 2781*00b67f09SDavid van Moolenbroek if test -z "$run"; then 2782*00b67f09SDavid van Moolenbroek # win32 will think the script is a binary if it has 2783*00b67f09SDavid van Moolenbroek # a .exe suffix, so we strip it off here. 2784*00b67f09SDavid van Moolenbroek case $output in 2785*00b67f09SDavid van Moolenbroek *.exe) output=`echo $output|sed 's,.exe$,,'` ;; 2786*00b67f09SDavid van Moolenbroek esac 2787*00b67f09SDavid van Moolenbroek $rm $output 2788*00b67f09SDavid van Moolenbroek trap "$rm $output; exit 1" 1 2 15 2789*00b67f09SDavid van Moolenbroek 2790*00b67f09SDavid van Moolenbroek $echo > $output "\ 2791*00b67f09SDavid van Moolenbroek#! $SHELL 2792*00b67f09SDavid van Moolenbroek 2793*00b67f09SDavid van Moolenbroek# $output - temporary wrapper script for $objdir/$outputname 2794*00b67f09SDavid van Moolenbroek# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 2795*00b67f09SDavid van Moolenbroek# 2796*00b67f09SDavid van Moolenbroek# The $output program cannot be directly executed until all the libtool 2797*00b67f09SDavid van Moolenbroek# libraries that it depends on are installed. 2798*00b67f09SDavid van Moolenbroek# 2799*00b67f09SDavid van Moolenbroek# This wrapper script should never be moved out of the build directory. 2800*00b67f09SDavid van Moolenbroek# If it is, it will not operate correctly. 2801*00b67f09SDavid van Moolenbroek 2802*00b67f09SDavid van Moolenbroek# Sed substitution that helps us do robust quoting. It backslashifies 2803*00b67f09SDavid van Moolenbroek# metacharacters that are still active within double-quoted strings. 2804*00b67f09SDavid van MoolenbroekXsed='sed -e 1s/^X//' 2805*00b67f09SDavid van Moolenbroeksed_quote_subst='$sed_quote_subst' 2806*00b67f09SDavid van Moolenbroek 2807*00b67f09SDavid van Moolenbroek# The HP-UX ksh and POSIX shell print the target directory to stdout 2808*00b67f09SDavid van Moolenbroek# if CDPATH is set. 2809*00b67f09SDavid van Moolenbroekif test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi 2810*00b67f09SDavid van Moolenbroek 2811*00b67f09SDavid van Moolenbroekrelink_command=\"$relink_command\" 2812*00b67f09SDavid van Moolenbroek 2813*00b67f09SDavid van Moolenbroek# This environment variable determines our operation mode. 2814*00b67f09SDavid van Moolenbroekif test \"\$libtool_install_magic\" = \"$magic\"; then 2815*00b67f09SDavid van Moolenbroek # install mode needs the following variable: 2816*00b67f09SDavid van Moolenbroek link_against_libtool_libs='$link_against_libtool_libs' 2817*00b67f09SDavid van Moolenbroekelse 2818*00b67f09SDavid van Moolenbroek # When we are sourced in execute mode, \$file and \$echo are already set. 2819*00b67f09SDavid van Moolenbroek if test \"\$libtool_execute_magic\" != \"$magic\"; then 2820*00b67f09SDavid van Moolenbroek echo=\"$qecho\" 2821*00b67f09SDavid van Moolenbroek file=\"\$0\" 2822*00b67f09SDavid van Moolenbroek # Make sure echo works. 2823*00b67f09SDavid van Moolenbroek if test \"X\$1\" = X--no-reexec; then 2824*00b67f09SDavid van Moolenbroek # Discard the --no-reexec flag, and continue. 2825*00b67f09SDavid van Moolenbroek shift 2826*00b67f09SDavid van Moolenbroek elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then 2827*00b67f09SDavid van Moolenbroek # Yippee, \$echo works! 2828*00b67f09SDavid van Moolenbroek : 2829*00b67f09SDavid van Moolenbroek else 2830*00b67f09SDavid van Moolenbroek # Restart under the correct shell, and then maybe \$echo will work. 2831*00b67f09SDavid van Moolenbroek exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} 2832*00b67f09SDavid van Moolenbroek fi 2833*00b67f09SDavid van Moolenbroek fi\ 2834*00b67f09SDavid van Moolenbroek" 2835*00b67f09SDavid van Moolenbroek $echo >> $output "\ 2836*00b67f09SDavid van Moolenbroek 2837*00b67f09SDavid van Moolenbroek # Find the directory that this script lives in. 2838*00b67f09SDavid van Moolenbroek thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` 2839*00b67f09SDavid van Moolenbroek test \"x\$thisdir\" = \"x\$file\" && thisdir=. 2840*00b67f09SDavid van Moolenbroek 2841*00b67f09SDavid van Moolenbroek # Follow symbolic links until we get to the real thisdir. 2842*00b67f09SDavid van Moolenbroek file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\` 2843*00b67f09SDavid van Moolenbroek while test -n \"\$file\"; do 2844*00b67f09SDavid van Moolenbroek destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` 2845*00b67f09SDavid van Moolenbroek 2846*00b67f09SDavid van Moolenbroek # If there was a directory component, then change thisdir. 2847*00b67f09SDavid van Moolenbroek if test \"x\$destdir\" != \"x\$file\"; then 2848*00b67f09SDavid van Moolenbroek case \"\$destdir\" in 2849*00b67f09SDavid van Moolenbroek [\\/]* | [A-Za-z]:[\\/]*) thisdir=\"\$destdir\" ;; 2850*00b67f09SDavid van Moolenbroek *) thisdir=\"\$thisdir/\$destdir\" ;; 2851*00b67f09SDavid van Moolenbroek esac 2852*00b67f09SDavid van Moolenbroek fi 2853*00b67f09SDavid van Moolenbroek 2854*00b67f09SDavid van Moolenbroek file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` 2855*00b67f09SDavid van Moolenbroek file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\` 2856*00b67f09SDavid van Moolenbroek done 2857*00b67f09SDavid van Moolenbroek 2858*00b67f09SDavid van Moolenbroek # Try to get the absolute directory name. 2859*00b67f09SDavid van Moolenbroek absdir=\`cd \"\$thisdir\" && pwd\` 2860*00b67f09SDavid van Moolenbroek test -n \"\$absdir\" && thisdir=\"\$absdir\" 2861*00b67f09SDavid van Moolenbroek" 2862*00b67f09SDavid van Moolenbroek 2863*00b67f09SDavid van Moolenbroek if test "$fast_install" = yes; then 2864*00b67f09SDavid van Moolenbroek echo >> $output "\ 2865*00b67f09SDavid van Moolenbroek program=lt-'$outputname' 2866*00b67f09SDavid van Moolenbroek progdir=\"\$thisdir/$objdir\" 2867*00b67f09SDavid van Moolenbroek 2868*00b67f09SDavid van Moolenbroek if test ! -f \"\$progdir/\$program\" || \\ 2869*00b67f09SDavid van Moolenbroek { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\ 2870*00b67f09SDavid van Moolenbroek test \"X\$file\" != \"X\$progdir/\$program\"; }; then 2871*00b67f09SDavid van Moolenbroek 2872*00b67f09SDavid van Moolenbroek file=\"\$\$-\$program\" 2873*00b67f09SDavid van Moolenbroek 2874*00b67f09SDavid van Moolenbroek if test ! -d \"\$progdir\"; then 2875*00b67f09SDavid van Moolenbroek $mkdir \"\$progdir\" 2876*00b67f09SDavid van Moolenbroek else 2877*00b67f09SDavid van Moolenbroek $rm \"\$progdir/\$file\" 2878*00b67f09SDavid van Moolenbroek fi" 2879*00b67f09SDavid van Moolenbroek 2880*00b67f09SDavid van Moolenbroek echo >> $output "\ 2881*00b67f09SDavid van Moolenbroek 2882*00b67f09SDavid van Moolenbroek # relink executable if necessary 2883*00b67f09SDavid van Moolenbroek if test -n \"\$relink_command\"; then 2884*00b67f09SDavid van Moolenbroek if (cd \"\$thisdir\" && eval \$relink_command); then : 2885*00b67f09SDavid van Moolenbroek else 2886*00b67f09SDavid van Moolenbroek $rm \"\$progdir/\$file\" 2887*00b67f09SDavid van Moolenbroek exit 1 2888*00b67f09SDavid van Moolenbroek fi 2889*00b67f09SDavid van Moolenbroek fi 2890*00b67f09SDavid van Moolenbroek 2891*00b67f09SDavid van Moolenbroek $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 2892*00b67f09SDavid van Moolenbroek { $rm \"\$progdir/\$program\"; 2893*00b67f09SDavid van Moolenbroek $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } 2894*00b67f09SDavid van Moolenbroek $rm \"\$progdir/\$file\" 2895*00b67f09SDavid van Moolenbroek fi" 2896*00b67f09SDavid van Moolenbroek else 2897*00b67f09SDavid van Moolenbroek echo >> $output "\ 2898*00b67f09SDavid van Moolenbroek program='$outputname' 2899*00b67f09SDavid van Moolenbroek progdir=\"\$thisdir/$objdir\" 2900*00b67f09SDavid van Moolenbroek" 2901*00b67f09SDavid van Moolenbroek fi 2902*00b67f09SDavid van Moolenbroek 2903*00b67f09SDavid van Moolenbroek echo >> $output "\ 2904*00b67f09SDavid van Moolenbroek 2905*00b67f09SDavid van Moolenbroek if test -f \"\$progdir/\$program\"; then" 2906*00b67f09SDavid van Moolenbroek 2907*00b67f09SDavid van Moolenbroek # Export our shlibpath_var if we have one. 2908*00b67f09SDavid van Moolenbroek if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 2909*00b67f09SDavid van Moolenbroek $echo >> $output "\ 2910*00b67f09SDavid van Moolenbroek # Add our own library path to $shlibpath_var 2911*00b67f09SDavid van Moolenbroek $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 2912*00b67f09SDavid van Moolenbroek 2913*00b67f09SDavid van Moolenbroek # Some systems cannot cope with colon-terminated $shlibpath_var 2914*00b67f09SDavid van Moolenbroek # The second colon is a workaround for a bug in BeOS R4 sed 2915*00b67f09SDavid van Moolenbroek $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` 2916*00b67f09SDavid van Moolenbroek 2917*00b67f09SDavid van Moolenbroek export $shlibpath_var 2918*00b67f09SDavid van Moolenbroek" 2919*00b67f09SDavid van Moolenbroek fi 2920*00b67f09SDavid van Moolenbroek 2921*00b67f09SDavid van Moolenbroek # fixup the dll searchpath if we need to. 2922*00b67f09SDavid van Moolenbroek if test -n "$dllsearchpath"; then 2923*00b67f09SDavid van Moolenbroek $echo >> $output "\ 2924*00b67f09SDavid van Moolenbroek # Add the dll search path components to the executable PATH 2925*00b67f09SDavid van Moolenbroek PATH=$dllsearchpath:\$PATH 2926*00b67f09SDavid van Moolenbroek" 2927*00b67f09SDavid van Moolenbroek fi 2928*00b67f09SDavid van Moolenbroek 2929*00b67f09SDavid van Moolenbroek $echo >> $output "\ 2930*00b67f09SDavid van Moolenbroek if test \"\$libtool_execute_magic\" != \"$magic\"; then 2931*00b67f09SDavid van Moolenbroek # Run the actual program with our arguments. 2932*00b67f09SDavid van Moolenbroek" 2933*00b67f09SDavid van Moolenbroek case $host in 2934*00b67f09SDavid van Moolenbroek # win32 systems need to use the prog path for dll 2935*00b67f09SDavid van Moolenbroek # lookup to work 2936*00b67f09SDavid van Moolenbroek *-*-cygwin*) 2937*00b67f09SDavid van Moolenbroek $echo >> $output "\ 2938*00b67f09SDavid van Moolenbroek exec \$progdir/\$program \${1+\"\$@\"} 2939*00b67f09SDavid van Moolenbroek" 2940*00b67f09SDavid van Moolenbroek ;; 2941*00b67f09SDavid van Moolenbroek 2942*00b67f09SDavid van Moolenbroek # Backslashes separate directories on plain windows 2943*00b67f09SDavid van Moolenbroek *-*-mingw | *-*-os2*) 2944*00b67f09SDavid van Moolenbroek $echo >> $output "\ 2945*00b67f09SDavid van Moolenbroek exec \$progdir\\\\\$program \${1+\"\$@\"} 2946*00b67f09SDavid van Moolenbroek" 2947*00b67f09SDavid van Moolenbroek ;; 2948*00b67f09SDavid van Moolenbroek 2949*00b67f09SDavid van Moolenbroek *) 2950*00b67f09SDavid van Moolenbroek $echo >> $output "\ 2951*00b67f09SDavid van Moolenbroek # Export the path to the program. 2952*00b67f09SDavid van Moolenbroek PATH=\"\$progdir:\$PATH\" 2953*00b67f09SDavid van Moolenbroek export PATH 2954*00b67f09SDavid van Moolenbroek 2955*00b67f09SDavid van Moolenbroek exec \$program \${1+\"\$@\"} 2956*00b67f09SDavid van Moolenbroek" 2957*00b67f09SDavid van Moolenbroek ;; 2958*00b67f09SDavid van Moolenbroek esac 2959*00b67f09SDavid van Moolenbroek $echo >> $output "\ 2960*00b67f09SDavid van Moolenbroek \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" 2961*00b67f09SDavid van Moolenbroek exit 1 2962*00b67f09SDavid van Moolenbroek fi 2963*00b67f09SDavid van Moolenbroek else 2964*00b67f09SDavid van Moolenbroek # The program doesn't exist. 2965*00b67f09SDavid van Moolenbroek \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 2966*00b67f09SDavid van Moolenbroek \$echo \"This script is just a wrapper for \$program.\" 1>&2 2967*00b67f09SDavid van Moolenbroek echo \"See the $PACKAGE documentation for more information.\" 1>&2 2968*00b67f09SDavid van Moolenbroek exit 1 2969*00b67f09SDavid van Moolenbroek fi 2970*00b67f09SDavid van Moolenbroekfi\ 2971*00b67f09SDavid van Moolenbroek" 2972*00b67f09SDavid van Moolenbroek chmod +x $output 2973*00b67f09SDavid van Moolenbroek fi 2974*00b67f09SDavid van Moolenbroek exit 0 2975*00b67f09SDavid van Moolenbroek ;; 2976*00b67f09SDavid van Moolenbroek esac 2977*00b67f09SDavid van Moolenbroek 2978*00b67f09SDavid van Moolenbroek # See if we need to build an old-fashioned archive. 2979*00b67f09SDavid van Moolenbroek for oldlib in $oldlibs; do 2980*00b67f09SDavid van Moolenbroek 2981*00b67f09SDavid van Moolenbroek if test "$build_libtool_libs" = convenience; then 2982*00b67f09SDavid van Moolenbroek oldobjs="$libobjs_save" 2983*00b67f09SDavid van Moolenbroek addlibs="$convenience" 2984*00b67f09SDavid van Moolenbroek build_libtool_libs=no 2985*00b67f09SDavid van Moolenbroek else 2986*00b67f09SDavid van Moolenbroek if test "$build_libtool_libs" = module; then 2987*00b67f09SDavid van Moolenbroek oldobjs="$libobjs_save" 2988*00b67f09SDavid van Moolenbroek build_libtool_libs=no 2989*00b67f09SDavid van Moolenbroek else 2990*00b67f09SDavid van Moolenbroek oldobjs="$objs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP` 2991*00b67f09SDavid van Moolenbroek fi 2992*00b67f09SDavid van Moolenbroek addlibs="$old_convenience" 2993*00b67f09SDavid van Moolenbroek fi 2994*00b67f09SDavid van Moolenbroek 2995*00b67f09SDavid van Moolenbroek if test -n "$addlibs"; then 2996*00b67f09SDavid van Moolenbroek gentop="$output_objdir/${outputname}x" 2997*00b67f09SDavid van Moolenbroek $show "${rm}r $gentop" 2998*00b67f09SDavid van Moolenbroek $run ${rm}r "$gentop" 2999*00b67f09SDavid van Moolenbroek $show "mkdir $gentop" 3000*00b67f09SDavid van Moolenbroek $run mkdir "$gentop" 3001*00b67f09SDavid van Moolenbroek status=$? 3002*00b67f09SDavid van Moolenbroek if test $status -ne 0 && test ! -d "$gentop"; then 3003*00b67f09SDavid van Moolenbroek exit $status 3004*00b67f09SDavid van Moolenbroek fi 3005*00b67f09SDavid van Moolenbroek generated="$generated $gentop" 3006*00b67f09SDavid van Moolenbroek 3007*00b67f09SDavid van Moolenbroek # Add in members from convenience archives. 3008*00b67f09SDavid van Moolenbroek for xlib in $addlibs; do 3009*00b67f09SDavid van Moolenbroek # Extract the objects. 3010*00b67f09SDavid van Moolenbroek case "$xlib" in 3011*00b67f09SDavid van Moolenbroek [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; 3012*00b67f09SDavid van Moolenbroek *) xabs=`pwd`"/$xlib" ;; 3013*00b67f09SDavid van Moolenbroek esac 3014*00b67f09SDavid van Moolenbroek xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` 3015*00b67f09SDavid van Moolenbroek xdir="$gentop/$xlib" 3016*00b67f09SDavid van Moolenbroek 3017*00b67f09SDavid van Moolenbroek $show "${rm}r $xdir" 3018*00b67f09SDavid van Moolenbroek $run ${rm}r "$xdir" 3019*00b67f09SDavid van Moolenbroek $show "mkdir $xdir" 3020*00b67f09SDavid van Moolenbroek $run mkdir "$xdir" 3021*00b67f09SDavid van Moolenbroek status=$? 3022*00b67f09SDavid van Moolenbroek if test $status -ne 0 && test ! -d "$xdir"; then 3023*00b67f09SDavid van Moolenbroek exit $status 3024*00b67f09SDavid van Moolenbroek fi 3025*00b67f09SDavid van Moolenbroek $show "(cd $xdir && $AR x $xabs)" 3026*00b67f09SDavid van Moolenbroek $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? 3027*00b67f09SDavid van Moolenbroek 3028*00b67f09SDavid van Moolenbroek oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` 3029*00b67f09SDavid van Moolenbroek done 3030*00b67f09SDavid van Moolenbroek fi 3031*00b67f09SDavid van Moolenbroek 3032*00b67f09SDavid van Moolenbroek # Do each command in the archive commands. 3033*00b67f09SDavid van Moolenbroek if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 3034*00b67f09SDavid van Moolenbroek eval cmds=\"$old_archive_from_new_cmds\" 3035*00b67f09SDavid van Moolenbroek else 3036*00b67f09SDavid van Moolenbroek # Ensure that we have .o objects in place in case we decided 3037*00b67f09SDavid van Moolenbroek # not to build a shared library, and have fallen back to building 3038*00b67f09SDavid van Moolenbroek # static libs even though --disable-static was passed! 3039*00b67f09SDavid van Moolenbroek for oldobj in $oldobjs; do 3040*00b67f09SDavid van Moolenbroek if test ! -f $oldobj; then 3041*00b67f09SDavid van Moolenbroek xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'` 3042*00b67f09SDavid van Moolenbroek if test "X$xdir" = "X$oldobj"; then 3043*00b67f09SDavid van Moolenbroek xdir="." 3044*00b67f09SDavid van Moolenbroek else 3045*00b67f09SDavid van Moolenbroek xdir="$xdir" 3046*00b67f09SDavid van Moolenbroek fi 3047*00b67f09SDavid van Moolenbroek baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'` 3048*00b67f09SDavid van Moolenbroek obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` 3049*00b67f09SDavid van Moolenbroek $show "(cd $xdir && ${LN_S} $obj $baseobj)" 3050*00b67f09SDavid van Moolenbroek $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $? 3051*00b67f09SDavid van Moolenbroek fi 3052*00b67f09SDavid van Moolenbroek done 3053*00b67f09SDavid van Moolenbroek 3054*00b67f09SDavid van Moolenbroek eval cmds=\"$old_archive_cmds\" 3055*00b67f09SDavid van Moolenbroek fi 3056*00b67f09SDavid van Moolenbroek IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 3057*00b67f09SDavid van Moolenbroek for cmd in $cmds; do 3058*00b67f09SDavid van Moolenbroek IFS="$save_ifs" 3059*00b67f09SDavid van Moolenbroek $show "$cmd" 3060*00b67f09SDavid van Moolenbroek $run eval "$cmd" || exit $? 3061*00b67f09SDavid van Moolenbroek done 3062*00b67f09SDavid van Moolenbroek IFS="$save_ifs" 3063*00b67f09SDavid van Moolenbroek done 3064*00b67f09SDavid van Moolenbroek 3065*00b67f09SDavid van Moolenbroek if test -n "$generated"; then 3066*00b67f09SDavid van Moolenbroek $show "${rm}r$generated" 3067*00b67f09SDavid van Moolenbroek $run ${rm}r$generated 3068*00b67f09SDavid van Moolenbroek fi 3069*00b67f09SDavid van Moolenbroek 3070*00b67f09SDavid van Moolenbroek # Now create the libtool archive. 3071*00b67f09SDavid van Moolenbroek case "$output" in 3072*00b67f09SDavid van Moolenbroek *.la) 3073*00b67f09SDavid van Moolenbroek old_library= 3074*00b67f09SDavid van Moolenbroek test "$build_old_libs" = yes && old_library="$libname.$libext" 3075*00b67f09SDavid van Moolenbroek $show "creating $output" 3076*00b67f09SDavid van Moolenbroek 3077*00b67f09SDavid van Moolenbroek if test -n "$xrpath"; then 3078*00b67f09SDavid van Moolenbroek temp_xrpath= 3079*00b67f09SDavid van Moolenbroek for libdir in $xrpath; do 3080*00b67f09SDavid van Moolenbroek temp_xrpath="$temp_xrpath -R$libdir" 3081*00b67f09SDavid van Moolenbroek done 3082*00b67f09SDavid van Moolenbroek dependency_libs="$temp_xrpath $dependency_libs" 3083*00b67f09SDavid van Moolenbroek fi 3084*00b67f09SDavid van Moolenbroek 3085*00b67f09SDavid van Moolenbroek # Only create the output if not a dry run. 3086*00b67f09SDavid van Moolenbroek if test -z "$run"; then 3087*00b67f09SDavid van Moolenbroek for installed in no yes; do 3088*00b67f09SDavid van Moolenbroek if test "$installed" = yes; then 3089*00b67f09SDavid van Moolenbroek if test -z "$install_libdir"; then 3090*00b67f09SDavid van Moolenbroek break 3091*00b67f09SDavid van Moolenbroek fi 3092*00b67f09SDavid van Moolenbroek output="$output_objdir/$outputname"i 3093*00b67f09SDavid van Moolenbroek fi 3094*00b67f09SDavid van Moolenbroek $rm $output 3095*00b67f09SDavid van Moolenbroek $echo > $output "\ 3096*00b67f09SDavid van Moolenbroek# $outputname - a libtool library file 3097*00b67f09SDavid van Moolenbroek# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 3098*00b67f09SDavid van Moolenbroek# 3099*00b67f09SDavid van Moolenbroek# Please DO NOT delete this file! 3100*00b67f09SDavid van Moolenbroek# It is necessary for linking the library. 3101*00b67f09SDavid van Moolenbroek 3102*00b67f09SDavid van Moolenbroek# The name that we can dlopen(3). 3103*00b67f09SDavid van Moolenbroekdlname='$dlname' 3104*00b67f09SDavid van Moolenbroek 3105*00b67f09SDavid van Moolenbroek# Names of this library. 3106*00b67f09SDavid van Moolenbroeklibrary_names='$library_names' 3107*00b67f09SDavid van Moolenbroek 3108*00b67f09SDavid van Moolenbroek# The name of the static archive. 3109*00b67f09SDavid van Moolenbroekold_library='$old_library' 3110*00b67f09SDavid van Moolenbroek 3111*00b67f09SDavid van Moolenbroek# Libraries that this one depends upon. 3112*00b67f09SDavid van Moolenbroekdependency_libs='$dependency_libs' 3113*00b67f09SDavid van Moolenbroek 3114*00b67f09SDavid van Moolenbroek# Version information for $libname. 3115*00b67f09SDavid van Moolenbroekcurrent=$current 3116*00b67f09SDavid van Moolenbroekage=$age 3117*00b67f09SDavid van Moolenbroekrevision=$revision 3118*00b67f09SDavid van Moolenbroek 3119*00b67f09SDavid van Moolenbroek# Is this an already installed library? 3120*00b67f09SDavid van Moolenbroekinstalled=$installed 3121*00b67f09SDavid van Moolenbroek 3122*00b67f09SDavid van Moolenbroek# Directory that this library needs to be installed in: 3123*00b67f09SDavid van Moolenbroeklibdir='$install_libdir'\ 3124*00b67f09SDavid van Moolenbroek" 3125*00b67f09SDavid van Moolenbroek done 3126*00b67f09SDavid van Moolenbroek fi 3127*00b67f09SDavid van Moolenbroek 3128*00b67f09SDavid van Moolenbroek # Do a symbolic link so that the libtool archive can be found in 3129*00b67f09SDavid van Moolenbroek # LD_LIBRARY_PATH before the program is installed. 3130*00b67f09SDavid van Moolenbroek $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" 3131*00b67f09SDavid van Moolenbroek $run eval "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" || exit $? 3132*00b67f09SDavid van Moolenbroek ;; 3133*00b67f09SDavid van Moolenbroek esac 3134*00b67f09SDavid van Moolenbroek exit 0 3135*00b67f09SDavid van Moolenbroek ;; 3136*00b67f09SDavid van Moolenbroek 3137*00b67f09SDavid van Moolenbroek # libtool install mode 3138*00b67f09SDavid van Moolenbroek install) 3139*00b67f09SDavid van Moolenbroek modename="$modename: install" 3140*00b67f09SDavid van Moolenbroek 3141*00b67f09SDavid van Moolenbroek # There may be an optional sh(1) argument at the beginning of 3142*00b67f09SDavid van Moolenbroek # install_prog (especially on Windows NT). 3143*00b67f09SDavid van Moolenbroek if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh; then 3144*00b67f09SDavid van Moolenbroek # Aesthetically quote it. 3145*00b67f09SDavid van Moolenbroek arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` 3146*00b67f09SDavid van Moolenbroek case "$arg" in 3147*00b67f09SDavid van Moolenbroek *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) 3148*00b67f09SDavid van Moolenbroek arg="\"$arg\"" 3149*00b67f09SDavid van Moolenbroek ;; 3150*00b67f09SDavid van Moolenbroek esac 3151*00b67f09SDavid van Moolenbroek install_prog="$arg " 3152*00b67f09SDavid van Moolenbroek arg="$1" 3153*00b67f09SDavid van Moolenbroek shift 3154*00b67f09SDavid van Moolenbroek else 3155*00b67f09SDavid van Moolenbroek install_prog= 3156*00b67f09SDavid van Moolenbroek arg="$nonopt" 3157*00b67f09SDavid van Moolenbroek fi 3158*00b67f09SDavid van Moolenbroek 3159*00b67f09SDavid van Moolenbroek # The real first argument should be the name of the installation program. 3160*00b67f09SDavid van Moolenbroek # Aesthetically quote it. 3161*00b67f09SDavid van Moolenbroek arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 3162*00b67f09SDavid van Moolenbroek case "$arg" in 3163*00b67f09SDavid van Moolenbroek *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) 3164*00b67f09SDavid van Moolenbroek arg="\"$arg\"" 3165*00b67f09SDavid van Moolenbroek ;; 3166*00b67f09SDavid van Moolenbroek esac 3167*00b67f09SDavid van Moolenbroek install_prog="$install_prog$arg" 3168*00b67f09SDavid van Moolenbroek 3169*00b67f09SDavid van Moolenbroek # We need to accept at least all the BSD install flags. 3170*00b67f09SDavid van Moolenbroek dest= 3171*00b67f09SDavid van Moolenbroek files= 3172*00b67f09SDavid van Moolenbroek opts= 3173*00b67f09SDavid van Moolenbroek prev= 3174*00b67f09SDavid van Moolenbroek install_type= 3175*00b67f09SDavid van Moolenbroek isdir=no 3176*00b67f09SDavid van Moolenbroek stripme= 3177*00b67f09SDavid van Moolenbroek for arg 3178*00b67f09SDavid van Moolenbroek do 3179*00b67f09SDavid van Moolenbroek if test -n "$dest"; then 3180*00b67f09SDavid van Moolenbroek files="$files $dest" 3181*00b67f09SDavid van Moolenbroek dest="$arg" 3182*00b67f09SDavid van Moolenbroek continue 3183*00b67f09SDavid van Moolenbroek fi 3184*00b67f09SDavid van Moolenbroek 3185*00b67f09SDavid van Moolenbroek case "$arg" in 3186*00b67f09SDavid van Moolenbroek -d) isdir=yes ;; 3187*00b67f09SDavid van Moolenbroek -f) prev="-f" ;; 3188*00b67f09SDavid van Moolenbroek -g) prev="-g" ;; 3189*00b67f09SDavid van Moolenbroek -m) prev="-m" ;; 3190*00b67f09SDavid van Moolenbroek -o) prev="-o" ;; 3191*00b67f09SDavid van Moolenbroek -s) 3192*00b67f09SDavid van Moolenbroek stripme=" -s" 3193*00b67f09SDavid van Moolenbroek continue 3194*00b67f09SDavid van Moolenbroek ;; 3195*00b67f09SDavid van Moolenbroek -*) ;; 3196*00b67f09SDavid van Moolenbroek 3197*00b67f09SDavid van Moolenbroek *) 3198*00b67f09SDavid van Moolenbroek # If the previous option needed an argument, then skip it. 3199*00b67f09SDavid van Moolenbroek if test -n "$prev"; then 3200*00b67f09SDavid van Moolenbroek prev= 3201*00b67f09SDavid van Moolenbroek else 3202*00b67f09SDavid van Moolenbroek dest="$arg" 3203*00b67f09SDavid van Moolenbroek continue 3204*00b67f09SDavid van Moolenbroek fi 3205*00b67f09SDavid van Moolenbroek ;; 3206*00b67f09SDavid van Moolenbroek esac 3207*00b67f09SDavid van Moolenbroek 3208*00b67f09SDavid van Moolenbroek # Aesthetically quote the argument. 3209*00b67f09SDavid van Moolenbroek arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 3210*00b67f09SDavid van Moolenbroek case "$arg" in 3211*00b67f09SDavid van Moolenbroek *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) 3212*00b67f09SDavid van Moolenbroek arg="\"$arg\"" 3213*00b67f09SDavid van Moolenbroek ;; 3214*00b67f09SDavid van Moolenbroek esac 3215*00b67f09SDavid van Moolenbroek install_prog="$install_prog $arg" 3216*00b67f09SDavid van Moolenbroek done 3217*00b67f09SDavid van Moolenbroek 3218*00b67f09SDavid van Moolenbroek if test -z "$install_prog"; then 3219*00b67f09SDavid van Moolenbroek $echo "$modename: you must specify an install program" 1>&2 3220*00b67f09SDavid van Moolenbroek $echo "$help" 1>&2 3221*00b67f09SDavid van Moolenbroek exit 1 3222*00b67f09SDavid van Moolenbroek fi 3223*00b67f09SDavid van Moolenbroek 3224*00b67f09SDavid van Moolenbroek if test -n "$prev"; then 3225*00b67f09SDavid van Moolenbroek $echo "$modename: the \`$prev' option requires an argument" 1>&2 3226*00b67f09SDavid van Moolenbroek $echo "$help" 1>&2 3227*00b67f09SDavid van Moolenbroek exit 1 3228*00b67f09SDavid van Moolenbroek fi 3229*00b67f09SDavid van Moolenbroek 3230*00b67f09SDavid van Moolenbroek if test -z "$files"; then 3231*00b67f09SDavid van Moolenbroek if test -z "$dest"; then 3232*00b67f09SDavid van Moolenbroek $echo "$modename: no file or destination specified" 1>&2 3233*00b67f09SDavid van Moolenbroek else 3234*00b67f09SDavid van Moolenbroek $echo "$modename: you must specify a destination" 1>&2 3235*00b67f09SDavid van Moolenbroek fi 3236*00b67f09SDavid van Moolenbroek $echo "$help" 1>&2 3237*00b67f09SDavid van Moolenbroek exit 1 3238*00b67f09SDavid van Moolenbroek fi 3239*00b67f09SDavid van Moolenbroek 3240*00b67f09SDavid van Moolenbroek # Strip any trailing slash from the destination. 3241*00b67f09SDavid van Moolenbroek dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` 3242*00b67f09SDavid van Moolenbroek 3243*00b67f09SDavid van Moolenbroek # Check to see that the destination is a directory. 3244*00b67f09SDavid van Moolenbroek test -d "$dest" && isdir=yes 3245*00b67f09SDavid van Moolenbroek if test "$isdir" = yes; then 3246*00b67f09SDavid van Moolenbroek destdir="$dest" 3247*00b67f09SDavid van Moolenbroek destname= 3248*00b67f09SDavid van Moolenbroek else 3249*00b67f09SDavid van Moolenbroek destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` 3250*00b67f09SDavid van Moolenbroek test "X$destdir" = "X$dest" && destdir=. 3251*00b67f09SDavid van Moolenbroek destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` 3252*00b67f09SDavid van Moolenbroek 3253*00b67f09SDavid van Moolenbroek # Not a directory, so check to see that there is only one file specified. 3254*00b67f09SDavid van Moolenbroek set dummy $files 3255*00b67f09SDavid van Moolenbroek if test $# -gt 2; then 3256*00b67f09SDavid van Moolenbroek $echo "$modename: \`$dest' is not a directory" 1>&2 3257*00b67f09SDavid van Moolenbroek $echo "$help" 1>&2 3258*00b67f09SDavid van Moolenbroek exit 1 3259*00b67f09SDavid van Moolenbroek fi 3260*00b67f09SDavid van Moolenbroek fi 3261*00b67f09SDavid van Moolenbroek case "$destdir" in 3262*00b67f09SDavid van Moolenbroek [\\/]* | [A-Za-z]:[\\/]*) ;; 3263*00b67f09SDavid van Moolenbroek *) 3264*00b67f09SDavid van Moolenbroek for file in $files; do 3265*00b67f09SDavid van Moolenbroek case "$file" in 3266*00b67f09SDavid van Moolenbroek *.lo) ;; 3267*00b67f09SDavid van Moolenbroek *) 3268*00b67f09SDavid van Moolenbroek $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 3269*00b67f09SDavid van Moolenbroek $echo "$help" 1>&2 3270*00b67f09SDavid van Moolenbroek exit 1 3271*00b67f09SDavid van Moolenbroek ;; 3272*00b67f09SDavid van Moolenbroek esac 3273*00b67f09SDavid van Moolenbroek done 3274*00b67f09SDavid van Moolenbroek ;; 3275*00b67f09SDavid van Moolenbroek esac 3276*00b67f09SDavid van Moolenbroek 3277*00b67f09SDavid van Moolenbroek # This variable tells wrapper scripts just to set variables rather 3278*00b67f09SDavid van Moolenbroek # than running their programs. 3279*00b67f09SDavid van Moolenbroek libtool_install_magic="$magic" 3280*00b67f09SDavid van Moolenbroek 3281*00b67f09SDavid van Moolenbroek staticlibs= 3282*00b67f09SDavid van Moolenbroek future_libdirs= 3283*00b67f09SDavid van Moolenbroek current_libdirs= 3284*00b67f09SDavid van Moolenbroek for file in $files; do 3285*00b67f09SDavid van Moolenbroek 3286*00b67f09SDavid van Moolenbroek # Do each installation. 3287*00b67f09SDavid van Moolenbroek case "$file" in 3288*00b67f09SDavid van Moolenbroek *.a | *.lib) 3289*00b67f09SDavid van Moolenbroek # Do the static libraries later. 3290*00b67f09SDavid van Moolenbroek staticlibs="$staticlibs $file" 3291*00b67f09SDavid van Moolenbroek ;; 3292*00b67f09SDavid van Moolenbroek 3293*00b67f09SDavid van Moolenbroek *.la) 3294*00b67f09SDavid van Moolenbroek # Check to see that this really is a libtool archive. 3295*00b67f09SDavid van Moolenbroek if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 3296*00b67f09SDavid van Moolenbroek else 3297*00b67f09SDavid van Moolenbroek $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 3298*00b67f09SDavid van Moolenbroek $echo "$help" 1>&2 3299*00b67f09SDavid van Moolenbroek exit 1 3300*00b67f09SDavid van Moolenbroek fi 3301*00b67f09SDavid van Moolenbroek 3302*00b67f09SDavid van Moolenbroek library_names= 3303*00b67f09SDavid van Moolenbroek old_library= 3304*00b67f09SDavid van Moolenbroek # If there is no directory component, then add one. 3305*00b67f09SDavid van Moolenbroek case "$file" in 3306*00b67f09SDavid van Moolenbroek */* | *\\*) . $file ;; 3307*00b67f09SDavid van Moolenbroek *) . ./$file ;; 3308*00b67f09SDavid van Moolenbroek esac 3309*00b67f09SDavid van Moolenbroek 3310*00b67f09SDavid van Moolenbroek # Add the libdir to current_libdirs if it is the destination. 3311*00b67f09SDavid van Moolenbroek if test "X$destdir" = "X$libdir"; then 3312*00b67f09SDavid van Moolenbroek case "$current_libdirs " in 3313*00b67f09SDavid van Moolenbroek *" $libdir "*) ;; 3314*00b67f09SDavid van Moolenbroek *) current_libdirs="$current_libdirs $libdir" ;; 3315*00b67f09SDavid van Moolenbroek esac 3316*00b67f09SDavid van Moolenbroek else 3317*00b67f09SDavid van Moolenbroek # Note the libdir as a future libdir. 3318*00b67f09SDavid van Moolenbroek case "$future_libdirs " in 3319*00b67f09SDavid van Moolenbroek *" $libdir "*) ;; 3320*00b67f09SDavid van Moolenbroek *) future_libdirs="$future_libdirs $libdir" ;; 3321*00b67f09SDavid van Moolenbroek esac 3322*00b67f09SDavid van Moolenbroek fi 3323*00b67f09SDavid van Moolenbroek 3324*00b67f09SDavid van Moolenbroek dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/" 3325*00b67f09SDavid van Moolenbroek test "X$dir" = "X$file/" && dir= 3326*00b67f09SDavid van Moolenbroek dir="$dir$objdir" 3327*00b67f09SDavid van Moolenbroek 3328*00b67f09SDavid van Moolenbroek # See the names of the shared library. 3329*00b67f09SDavid van Moolenbroek set dummy $library_names 3330*00b67f09SDavid van Moolenbroek if test -n "$2"; then 3331*00b67f09SDavid van Moolenbroek realname="$2" 3332*00b67f09SDavid van Moolenbroek shift 3333*00b67f09SDavid van Moolenbroek shift 3334*00b67f09SDavid van Moolenbroek 3335*00b67f09SDavid van Moolenbroek # Install the shared library and build the symlinks. 3336*00b67f09SDavid van Moolenbroek $show "$install_prog $dir/$realname $destdir/$realname" 3337*00b67f09SDavid van Moolenbroek $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $? 3338*00b67f09SDavid van Moolenbroek 3339*00b67f09SDavid van Moolenbroek if test $# -gt 0; then 3340*00b67f09SDavid van Moolenbroek # Delete the old symlinks, and create new ones. 3341*00b67f09SDavid van Moolenbroek for linkname 3342*00b67f09SDavid van Moolenbroek do 3343*00b67f09SDavid van Moolenbroek if test "$linkname" != "$realname"; then 3344*00b67f09SDavid van Moolenbroek $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" 3345*00b67f09SDavid van Moolenbroek $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" 3346*00b67f09SDavid van Moolenbroek fi 3347*00b67f09SDavid van Moolenbroek done 3348*00b67f09SDavid van Moolenbroek fi 3349*00b67f09SDavid van Moolenbroek 3350*00b67f09SDavid van Moolenbroek # Do each command in the postinstall commands. 3351*00b67f09SDavid van Moolenbroek lib="$destdir/$realname" 3352*00b67f09SDavid van Moolenbroek eval cmds=\"$postinstall_cmds\" 3353*00b67f09SDavid van Moolenbroek IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 3354*00b67f09SDavid van Moolenbroek for cmd in $cmds; do 3355*00b67f09SDavid van Moolenbroek IFS="$save_ifs" 3356*00b67f09SDavid van Moolenbroek $show "$cmd" 3357*00b67f09SDavid van Moolenbroek $run eval "$cmd" || exit $? 3358*00b67f09SDavid van Moolenbroek done 3359*00b67f09SDavid van Moolenbroek IFS="$save_ifs" 3360*00b67f09SDavid van Moolenbroek fi 3361*00b67f09SDavid van Moolenbroek 3362*00b67f09SDavid van Moolenbroek # Install the pseudo-library for information purposes. 3363*00b67f09SDavid van Moolenbroek name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 3364*00b67f09SDavid van Moolenbroek instname="$dir/$name"i 3365*00b67f09SDavid van Moolenbroek $show "$install_prog $instname $destdir/$name" 3366*00b67f09SDavid van Moolenbroek $run eval "$install_prog $instname $destdir/$name" || exit $? 3367*00b67f09SDavid van Moolenbroek 3368*00b67f09SDavid van Moolenbroek # Maybe install the static library, too. 3369*00b67f09SDavid van Moolenbroek test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 3370*00b67f09SDavid van Moolenbroek ;; 3371*00b67f09SDavid van Moolenbroek 3372*00b67f09SDavid van Moolenbroek *.lo) 3373*00b67f09SDavid van Moolenbroek # Install (i.e. copy) a libtool object. 3374*00b67f09SDavid van Moolenbroek 3375*00b67f09SDavid van Moolenbroek # Figure out destination file name, if it wasn't already specified. 3376*00b67f09SDavid van Moolenbroek if test -n "$destname"; then 3377*00b67f09SDavid van Moolenbroek destfile="$destdir/$destname" 3378*00b67f09SDavid van Moolenbroek else 3379*00b67f09SDavid van Moolenbroek destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 3380*00b67f09SDavid van Moolenbroek destfile="$destdir/$destfile" 3381*00b67f09SDavid van Moolenbroek fi 3382*00b67f09SDavid van Moolenbroek 3383*00b67f09SDavid van Moolenbroek # Deduce the name of the destination old-style object file. 3384*00b67f09SDavid van Moolenbroek case "$destfile" in 3385*00b67f09SDavid van Moolenbroek *.lo) 3386*00b67f09SDavid van Moolenbroek staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` 3387*00b67f09SDavid van Moolenbroek ;; 3388*00b67f09SDavid van Moolenbroek *.o | *.obj) 3389*00b67f09SDavid van Moolenbroek staticdest="$destfile" 3390*00b67f09SDavid van Moolenbroek destfile= 3391*00b67f09SDavid van Moolenbroek ;; 3392*00b67f09SDavid van Moolenbroek *) 3393*00b67f09SDavid van Moolenbroek $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 3394*00b67f09SDavid van Moolenbroek $echo "$help" 1>&2 3395*00b67f09SDavid van Moolenbroek exit 1 3396*00b67f09SDavid van Moolenbroek ;; 3397*00b67f09SDavid van Moolenbroek esac 3398*00b67f09SDavid van Moolenbroek 3399*00b67f09SDavid van Moolenbroek # Install the libtool object if requested. 3400*00b67f09SDavid van Moolenbroek if test -n "$destfile"; then 3401*00b67f09SDavid van Moolenbroek $show "$install_prog $file $destfile" 3402*00b67f09SDavid van Moolenbroek $run eval "$install_prog $file $destfile" || exit $? 3403*00b67f09SDavid van Moolenbroek fi 3404*00b67f09SDavid van Moolenbroek 3405*00b67f09SDavid van Moolenbroek # Install the old object if enabled. 3406*00b67f09SDavid van Moolenbroek if test "$build_old_libs" = yes; then 3407*00b67f09SDavid van Moolenbroek # Deduce the name of the old-style object file. 3408*00b67f09SDavid van Moolenbroek staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` 3409*00b67f09SDavid van Moolenbroek 3410*00b67f09SDavid van Moolenbroek $show "$install_prog $staticobj $staticdest" 3411*00b67f09SDavid van Moolenbroek $run eval "$install_prog \$staticobj \$staticdest" || exit $? 3412*00b67f09SDavid van Moolenbroek fi 3413*00b67f09SDavid van Moolenbroek exit 0 3414*00b67f09SDavid van Moolenbroek ;; 3415*00b67f09SDavid van Moolenbroek 3416*00b67f09SDavid van Moolenbroek *) 3417*00b67f09SDavid van Moolenbroek # Figure out destination file name, if it wasn't already specified. 3418*00b67f09SDavid van Moolenbroek if test -n "$destname"; then 3419*00b67f09SDavid van Moolenbroek destfile="$destdir/$destname" 3420*00b67f09SDavid van Moolenbroek else 3421*00b67f09SDavid van Moolenbroek destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 3422*00b67f09SDavid van Moolenbroek destfile="$destdir/$destfile" 3423*00b67f09SDavid van Moolenbroek fi 3424*00b67f09SDavid van Moolenbroek 3425*00b67f09SDavid van Moolenbroek # Do a test to see if this is really a libtool program. 3426*00b67f09SDavid van Moolenbroek if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 3427*00b67f09SDavid van Moolenbroek link_against_libtool_libs= 3428*00b67f09SDavid van Moolenbroek relink_command= 3429*00b67f09SDavid van Moolenbroek 3430*00b67f09SDavid van Moolenbroek # If there is no directory component, then add one. 3431*00b67f09SDavid van Moolenbroek case "$file" in 3432*00b67f09SDavid van Moolenbroek */* | *\\*) . $file ;; 3433*00b67f09SDavid van Moolenbroek *) . ./$file ;; 3434*00b67f09SDavid van Moolenbroek esac 3435*00b67f09SDavid van Moolenbroek 3436*00b67f09SDavid van Moolenbroek # Check the variables that should have been set. 3437*00b67f09SDavid van Moolenbroek if test -z "$link_against_libtool_libs"; then 3438*00b67f09SDavid van Moolenbroek $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2 3439*00b67f09SDavid van Moolenbroek exit 1 3440*00b67f09SDavid van Moolenbroek fi 3441*00b67f09SDavid van Moolenbroek 3442*00b67f09SDavid van Moolenbroek finalize=yes 3443*00b67f09SDavid van Moolenbroek for lib in $link_against_libtool_libs; do 3444*00b67f09SDavid van Moolenbroek # Check to see that each library is installed. 3445*00b67f09SDavid van Moolenbroek libdir= 3446*00b67f09SDavid van Moolenbroek if test -f "$lib"; then 3447*00b67f09SDavid van Moolenbroek # If there is no directory component, then add one. 3448*00b67f09SDavid van Moolenbroek case "$lib" in 3449*00b67f09SDavid van Moolenbroek */* | *\\*) . $lib ;; 3450*00b67f09SDavid van Moolenbroek *) . ./$lib ;; 3451*00b67f09SDavid van Moolenbroek esac 3452*00b67f09SDavid van Moolenbroek fi 3453*00b67f09SDavid van Moolenbroek libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`" 3454*00b67f09SDavid van Moolenbroek if test -n "$libdir" && test ! -f "$libfile"; then 3455*00b67f09SDavid van Moolenbroek $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 3456*00b67f09SDavid van Moolenbroek finalize=no 3457*00b67f09SDavid van Moolenbroek fi 3458*00b67f09SDavid van Moolenbroek done 3459*00b67f09SDavid van Moolenbroek 3460*00b67f09SDavid van Moolenbroek outputname= 3461*00b67f09SDavid van Moolenbroek if test "$fast_install" = no && test -n "$relink_command"; then 3462*00b67f09SDavid van Moolenbroek if test "$finalize" = yes && test -z "$run"; then 3463*00b67f09SDavid van Moolenbroek tmpdir="/tmp" 3464*00b67f09SDavid van Moolenbroek test -n "$TMPDIR" && tmpdir="$TMPDIR" 3465*00b67f09SDavid van Moolenbroek tmpdir="$tmpdir/libtool-$$" 3466*00b67f09SDavid van Moolenbroek if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : 3467*00b67f09SDavid van Moolenbroek else 3468*00b67f09SDavid van Moolenbroek $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 3469*00b67f09SDavid van Moolenbroek continue 3470*00b67f09SDavid van Moolenbroek fi 3471*00b67f09SDavid van Moolenbroek outputname="$tmpdir/$file" 3472*00b67f09SDavid van Moolenbroek # Replace the output file specification. 3473*00b67f09SDavid van Moolenbroek relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` 3474*00b67f09SDavid van Moolenbroek 3475*00b67f09SDavid van Moolenbroek $show "$relink_command" 3476*00b67f09SDavid van Moolenbroek if $run eval "$relink_command"; then : 3477*00b67f09SDavid van Moolenbroek else 3478*00b67f09SDavid van Moolenbroek $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 3479*00b67f09SDavid van Moolenbroek ${rm}r "$tmpdir" 3480*00b67f09SDavid van Moolenbroek continue 3481*00b67f09SDavid van Moolenbroek fi 3482*00b67f09SDavid van Moolenbroek file="$outputname" 3483*00b67f09SDavid van Moolenbroek else 3484*00b67f09SDavid van Moolenbroek $echo "$modename: warning: cannot relink \`$file'" 1>&2 3485*00b67f09SDavid van Moolenbroek fi 3486*00b67f09SDavid van Moolenbroek else 3487*00b67f09SDavid van Moolenbroek # Install the binary that we compiled earlier. 3488*00b67f09SDavid van Moolenbroek file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` 3489*00b67f09SDavid van Moolenbroek fi 3490*00b67f09SDavid van Moolenbroek fi 3491*00b67f09SDavid van Moolenbroek 3492*00b67f09SDavid van Moolenbroek $show "$install_prog$stripme $file $destfile" 3493*00b67f09SDavid van Moolenbroek $run eval "$install_prog\$stripme \$file \$destfile" || exit $? 3494*00b67f09SDavid van Moolenbroek test -n "$outputname" && ${rm}r "$tmpdir" 3495*00b67f09SDavid van Moolenbroek ;; 3496*00b67f09SDavid van Moolenbroek esac 3497*00b67f09SDavid van Moolenbroek done 3498*00b67f09SDavid van Moolenbroek 3499*00b67f09SDavid van Moolenbroek for file in $staticlibs; do 3500*00b67f09SDavid van Moolenbroek name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 3501*00b67f09SDavid van Moolenbroek 3502*00b67f09SDavid van Moolenbroek # Set up the ranlib parameters. 3503*00b67f09SDavid van Moolenbroek oldlib="$destdir/$name" 3504*00b67f09SDavid van Moolenbroek 3505*00b67f09SDavid van Moolenbroek $show "$install_prog $file $oldlib" 3506*00b67f09SDavid van Moolenbroek $run eval "$install_prog \$file \$oldlib" || exit $? 3507*00b67f09SDavid van Moolenbroek 3508*00b67f09SDavid van Moolenbroek # Do each command in the postinstall commands. 3509*00b67f09SDavid van Moolenbroek eval cmds=\"$old_postinstall_cmds\" 3510*00b67f09SDavid van Moolenbroek IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 3511*00b67f09SDavid van Moolenbroek for cmd in $cmds; do 3512*00b67f09SDavid van Moolenbroek IFS="$save_ifs" 3513*00b67f09SDavid van Moolenbroek $show "$cmd" 3514*00b67f09SDavid van Moolenbroek $run eval "$cmd" || exit $? 3515*00b67f09SDavid van Moolenbroek done 3516*00b67f09SDavid van Moolenbroek IFS="$save_ifs" 3517*00b67f09SDavid van Moolenbroek done 3518*00b67f09SDavid van Moolenbroek 3519*00b67f09SDavid van Moolenbroek if test -n "$future_libdirs"; then 3520*00b67f09SDavid van Moolenbroek $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 3521*00b67f09SDavid van Moolenbroek fi 3522*00b67f09SDavid van Moolenbroek 3523*00b67f09SDavid van Moolenbroek if test -n "$current_libdirs"; then 3524*00b67f09SDavid van Moolenbroek # Maybe just do a dry run. 3525*00b67f09SDavid van Moolenbroek test -n "$run" && current_libdirs=" -n$current_libdirs" 3526*00b67f09SDavid van Moolenbroek exec $SHELL $0 --finish$current_libdirs 3527*00b67f09SDavid van Moolenbroek exit 1 3528*00b67f09SDavid van Moolenbroek fi 3529*00b67f09SDavid van Moolenbroek 3530*00b67f09SDavid van Moolenbroek exit 0 3531*00b67f09SDavid van Moolenbroek ;; 3532*00b67f09SDavid van Moolenbroek 3533*00b67f09SDavid van Moolenbroek # libtool finish mode 3534*00b67f09SDavid van Moolenbroek finish) 3535*00b67f09SDavid van Moolenbroek modename="$modename: finish" 3536*00b67f09SDavid van Moolenbroek libdirs="$nonopt" 3537*00b67f09SDavid van Moolenbroek admincmds= 3538*00b67f09SDavid van Moolenbroek 3539*00b67f09SDavid van Moolenbroek if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 3540*00b67f09SDavid van Moolenbroek for dir 3541*00b67f09SDavid van Moolenbroek do 3542*00b67f09SDavid van Moolenbroek libdirs="$libdirs $dir" 3543*00b67f09SDavid van Moolenbroek done 3544*00b67f09SDavid van Moolenbroek 3545*00b67f09SDavid van Moolenbroek for libdir in $libdirs; do 3546*00b67f09SDavid van Moolenbroek if test -n "$finish_cmds"; then 3547*00b67f09SDavid van Moolenbroek # Do each command in the finish commands. 3548*00b67f09SDavid van Moolenbroek eval cmds=\"$finish_cmds\" 3549*00b67f09SDavid van Moolenbroek IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 3550*00b67f09SDavid van Moolenbroek for cmd in $cmds; do 3551*00b67f09SDavid van Moolenbroek IFS="$save_ifs" 3552*00b67f09SDavid van Moolenbroek $show "$cmd" 3553*00b67f09SDavid van Moolenbroek $run eval "$cmd" || admincmds="$admincmds 3554*00b67f09SDavid van Moolenbroek $cmd" 3555*00b67f09SDavid van Moolenbroek done 3556*00b67f09SDavid van Moolenbroek IFS="$save_ifs" 3557*00b67f09SDavid van Moolenbroek fi 3558*00b67f09SDavid van Moolenbroek if test -n "$finish_eval"; then 3559*00b67f09SDavid van Moolenbroek # Do the single finish_eval. 3560*00b67f09SDavid van Moolenbroek eval cmds=\"$finish_eval\" 3561*00b67f09SDavid van Moolenbroek $run eval "$cmds" || admincmds="$admincmds 3562*00b67f09SDavid van Moolenbroek $cmds" 3563*00b67f09SDavid van Moolenbroek fi 3564*00b67f09SDavid van Moolenbroek done 3565*00b67f09SDavid van Moolenbroek fi 3566*00b67f09SDavid van Moolenbroek 3567*00b67f09SDavid van Moolenbroek # Exit here if they wanted silent mode. 3568*00b67f09SDavid van Moolenbroek test "$show" = : && exit 0 3569*00b67f09SDavid van Moolenbroek 3570*00b67f09SDavid van Moolenbroek echo "----------------------------------------------------------------------" 3571*00b67f09SDavid van Moolenbroek echo "Libraries have been installed in:" 3572*00b67f09SDavid van Moolenbroek for libdir in $libdirs; do 3573*00b67f09SDavid van Moolenbroek echo " $libdir" 3574*00b67f09SDavid van Moolenbroek done 3575*00b67f09SDavid van Moolenbroek echo 3576*00b67f09SDavid van Moolenbroek echo "If you ever happen to want to link against installed libraries" 3577*00b67f09SDavid van Moolenbroek echo "in a given directory, LIBDIR, you must either use libtool, and" 3578*00b67f09SDavid van Moolenbroek echo "specify the full pathname of the library, or use \`-LLIBDIR'" 3579*00b67f09SDavid van Moolenbroek echo "flag during linking and do at least one of the following:" 3580*00b67f09SDavid van Moolenbroek if test -n "$shlibpath_var"; then 3581*00b67f09SDavid van Moolenbroek echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 3582*00b67f09SDavid van Moolenbroek echo " during execution" 3583*00b67f09SDavid van Moolenbroek fi 3584*00b67f09SDavid van Moolenbroek if test -n "$runpath_var"; then 3585*00b67f09SDavid van Moolenbroek echo " - add LIBDIR to the \`$runpath_var' environment variable" 3586*00b67f09SDavid van Moolenbroek echo " during linking" 3587*00b67f09SDavid van Moolenbroek fi 3588*00b67f09SDavid van Moolenbroek if test -n "$hardcode_libdir_flag_spec"; then 3589*00b67f09SDavid van Moolenbroek libdir=LIBDIR 3590*00b67f09SDavid van Moolenbroek eval flag=\"$hardcode_libdir_flag_spec\" 3591*00b67f09SDavid van Moolenbroek 3592*00b67f09SDavid van Moolenbroek echo " - use the \`$flag' linker flag" 3593*00b67f09SDavid van Moolenbroek fi 3594*00b67f09SDavid van Moolenbroek if test -n "$admincmds"; then 3595*00b67f09SDavid van Moolenbroek echo " - have your system administrator run these commands:$admincmds" 3596*00b67f09SDavid van Moolenbroek fi 3597*00b67f09SDavid van Moolenbroek if test -f /etc/ld.so.conf; then 3598*00b67f09SDavid van Moolenbroek echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 3599*00b67f09SDavid van Moolenbroek fi 3600*00b67f09SDavid van Moolenbroek echo 3601*00b67f09SDavid van Moolenbroek echo "See any operating system documentation about shared libraries for" 3602*00b67f09SDavid van Moolenbroek echo "more information, such as the ld(1) and ld.so(8) manual pages." 3603*00b67f09SDavid van Moolenbroek echo "----------------------------------------------------------------------" 3604*00b67f09SDavid van Moolenbroek exit 0 3605*00b67f09SDavid van Moolenbroek ;; 3606*00b67f09SDavid van Moolenbroek 3607*00b67f09SDavid van Moolenbroek # libtool execute mode 3608*00b67f09SDavid van Moolenbroek execute) 3609*00b67f09SDavid van Moolenbroek modename="$modename: execute" 3610*00b67f09SDavid van Moolenbroek 3611*00b67f09SDavid van Moolenbroek # The first argument is the command name. 3612*00b67f09SDavid van Moolenbroek cmd="$nonopt" 3613*00b67f09SDavid van Moolenbroek if test -z "$cmd"; then 3614*00b67f09SDavid van Moolenbroek $echo "$modename: you must specify a COMMAND" 1>&2 3615*00b67f09SDavid van Moolenbroek $echo "$help" 3616*00b67f09SDavid van Moolenbroek exit 1 3617*00b67f09SDavid van Moolenbroek fi 3618*00b67f09SDavid van Moolenbroek 3619*00b67f09SDavid van Moolenbroek # Handle -dlopen flags immediately. 3620*00b67f09SDavid van Moolenbroek for file in $execute_dlfiles; do 3621*00b67f09SDavid van Moolenbroek if test ! -f "$file"; then 3622*00b67f09SDavid van Moolenbroek $echo "$modename: \`$file' is not a file" 1>&2 3623*00b67f09SDavid van Moolenbroek $echo "$help" 1>&2 3624*00b67f09SDavid van Moolenbroek exit 1 3625*00b67f09SDavid van Moolenbroek fi 3626*00b67f09SDavid van Moolenbroek 3627*00b67f09SDavid van Moolenbroek dir= 3628*00b67f09SDavid van Moolenbroek case "$file" in 3629*00b67f09SDavid van Moolenbroek *.la) 3630*00b67f09SDavid van Moolenbroek # Check to see that this really is a libtool archive. 3631*00b67f09SDavid van Moolenbroek if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 3632*00b67f09SDavid van Moolenbroek else 3633*00b67f09SDavid van Moolenbroek $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 3634*00b67f09SDavid van Moolenbroek $echo "$help" 1>&2 3635*00b67f09SDavid van Moolenbroek exit 1 3636*00b67f09SDavid van Moolenbroek fi 3637*00b67f09SDavid van Moolenbroek 3638*00b67f09SDavid van Moolenbroek # Read the libtool library. 3639*00b67f09SDavid van Moolenbroek dlname= 3640*00b67f09SDavid van Moolenbroek library_names= 3641*00b67f09SDavid van Moolenbroek 3642*00b67f09SDavid van Moolenbroek # If there is no directory component, then add one. 3643*00b67f09SDavid van Moolenbroek case "$file" in 3644*00b67f09SDavid van Moolenbroek */* | *\\*) . $file ;; 3645*00b67f09SDavid van Moolenbroek *) . ./$file ;; 3646*00b67f09SDavid van Moolenbroek esac 3647*00b67f09SDavid van Moolenbroek 3648*00b67f09SDavid van Moolenbroek # Skip this library if it cannot be dlopened. 3649*00b67f09SDavid van Moolenbroek if test -z "$dlname"; then 3650*00b67f09SDavid van Moolenbroek # Warn if it was a shared library. 3651*00b67f09SDavid van Moolenbroek test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" 3652*00b67f09SDavid van Moolenbroek continue 3653*00b67f09SDavid van Moolenbroek fi 3654*00b67f09SDavid van Moolenbroek 3655*00b67f09SDavid van Moolenbroek dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 3656*00b67f09SDavid van Moolenbroek test "X$dir" = "X$file" && dir=. 3657*00b67f09SDavid van Moolenbroek 3658*00b67f09SDavid van Moolenbroek if test -f "$dir/$objdir/$dlname"; then 3659*00b67f09SDavid van Moolenbroek dir="$dir/$objdir" 3660*00b67f09SDavid van Moolenbroek else 3661*00b67f09SDavid van Moolenbroek $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 3662*00b67f09SDavid van Moolenbroek exit 1 3663*00b67f09SDavid van Moolenbroek fi 3664*00b67f09SDavid van Moolenbroek ;; 3665*00b67f09SDavid van Moolenbroek 3666*00b67f09SDavid van Moolenbroek *.lo) 3667*00b67f09SDavid van Moolenbroek # Just add the directory containing the .lo file. 3668*00b67f09SDavid van Moolenbroek dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 3669*00b67f09SDavid van Moolenbroek test "X$dir" = "X$file" && dir=. 3670*00b67f09SDavid van Moolenbroek ;; 3671*00b67f09SDavid van Moolenbroek 3672*00b67f09SDavid van Moolenbroek *) 3673*00b67f09SDavid van Moolenbroek $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 3674*00b67f09SDavid van Moolenbroek continue 3675*00b67f09SDavid van Moolenbroek ;; 3676*00b67f09SDavid van Moolenbroek esac 3677*00b67f09SDavid van Moolenbroek 3678*00b67f09SDavid van Moolenbroek # Get the absolute pathname. 3679*00b67f09SDavid van Moolenbroek absdir=`cd "$dir" && pwd` 3680*00b67f09SDavid van Moolenbroek test -n "$absdir" && dir="$absdir" 3681*00b67f09SDavid van Moolenbroek 3682*00b67f09SDavid van Moolenbroek # Now add the directory to shlibpath_var. 3683*00b67f09SDavid van Moolenbroek if eval "test -z \"\$$shlibpath_var\""; then 3684*00b67f09SDavid van Moolenbroek eval "$shlibpath_var=\"\$dir\"" 3685*00b67f09SDavid van Moolenbroek else 3686*00b67f09SDavid van Moolenbroek eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 3687*00b67f09SDavid van Moolenbroek fi 3688*00b67f09SDavid van Moolenbroek done 3689*00b67f09SDavid van Moolenbroek 3690*00b67f09SDavid van Moolenbroek # This variable tells wrapper scripts just to set shlibpath_var 3691*00b67f09SDavid van Moolenbroek # rather than running their programs. 3692*00b67f09SDavid van Moolenbroek libtool_execute_magic="$magic" 3693*00b67f09SDavid van Moolenbroek 3694*00b67f09SDavid van Moolenbroek # Check if any of the arguments is a wrapper script. 3695*00b67f09SDavid van Moolenbroek args= 3696*00b67f09SDavid van Moolenbroek for file 3697*00b67f09SDavid van Moolenbroek do 3698*00b67f09SDavid van Moolenbroek case "$file" in 3699*00b67f09SDavid van Moolenbroek -*) ;; 3700*00b67f09SDavid van Moolenbroek *) 3701*00b67f09SDavid van Moolenbroek # Do a test to see if this is really a libtool program. 3702*00b67f09SDavid van Moolenbroek if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 3703*00b67f09SDavid van Moolenbroek # If there is no directory component, then add one. 3704*00b67f09SDavid van Moolenbroek case "$file" in 3705*00b67f09SDavid van Moolenbroek */* | *\\*) . $file ;; 3706*00b67f09SDavid van Moolenbroek *) . ./$file ;; 3707*00b67f09SDavid van Moolenbroek esac 3708*00b67f09SDavid van Moolenbroek 3709*00b67f09SDavid van Moolenbroek # Transform arg to wrapped name. 3710*00b67f09SDavid van Moolenbroek file="$progdir/$program" 3711*00b67f09SDavid van Moolenbroek fi 3712*00b67f09SDavid van Moolenbroek ;; 3713*00b67f09SDavid van Moolenbroek esac 3714*00b67f09SDavid van Moolenbroek # Quote arguments (to preserve shell metacharacters). 3715*00b67f09SDavid van Moolenbroek file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` 3716*00b67f09SDavid van Moolenbroek args="$args \"$file\"" 3717*00b67f09SDavid van Moolenbroek done 3718*00b67f09SDavid van Moolenbroek 3719*00b67f09SDavid van Moolenbroek if test -z "$run"; then 3720*00b67f09SDavid van Moolenbroek if test -n "$shlibpath_var"; then 3721*00b67f09SDavid van Moolenbroek # Export the shlibpath_var. 3722*00b67f09SDavid van Moolenbroek eval "export $shlibpath_var" 3723*00b67f09SDavid van Moolenbroek fi 3724*00b67f09SDavid van Moolenbroek 3725*00b67f09SDavid van Moolenbroek # Restore saved enviroment variables 3726*00b67f09SDavid van Moolenbroek if test "${save_LC_ALL+set}" = set; then 3727*00b67f09SDavid van Moolenbroek LC_ALL="$save_LC_ALL"; export LC_ALL 3728*00b67f09SDavid van Moolenbroek fi 3729*00b67f09SDavid van Moolenbroek if test "${save_LANG+set}" = set; then 3730*00b67f09SDavid van Moolenbroek LANG="$save_LANG"; export LANG 3731*00b67f09SDavid van Moolenbroek fi 3732*00b67f09SDavid van Moolenbroek 3733*00b67f09SDavid van Moolenbroek # Now actually exec the command. 3734*00b67f09SDavid van Moolenbroek eval "exec \$cmd$args" 3735*00b67f09SDavid van Moolenbroek 3736*00b67f09SDavid van Moolenbroek $echo "$modename: cannot exec \$cmd$args" 3737*00b67f09SDavid van Moolenbroek exit 1 3738*00b67f09SDavid van Moolenbroek else 3739*00b67f09SDavid van Moolenbroek # Display what would be done. 3740*00b67f09SDavid van Moolenbroek if test -n "$shlibpath_var"; then 3741*00b67f09SDavid van Moolenbroek eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" 3742*00b67f09SDavid van Moolenbroek $echo "export $shlibpath_var" 3743*00b67f09SDavid van Moolenbroek fi 3744*00b67f09SDavid van Moolenbroek $echo "$cmd$args" 3745*00b67f09SDavid van Moolenbroek exit 0 3746*00b67f09SDavid van Moolenbroek fi 3747*00b67f09SDavid van Moolenbroek ;; 3748*00b67f09SDavid van Moolenbroek 3749*00b67f09SDavid van Moolenbroek # libtool uninstall mode 3750*00b67f09SDavid van Moolenbroek uninstall) 3751*00b67f09SDavid van Moolenbroek modename="$modename: uninstall" 3752*00b67f09SDavid van Moolenbroek rm="$nonopt" 3753*00b67f09SDavid van Moolenbroek files= 3754*00b67f09SDavid van Moolenbroek 3755*00b67f09SDavid van Moolenbroek for arg 3756*00b67f09SDavid van Moolenbroek do 3757*00b67f09SDavid van Moolenbroek case "$arg" in 3758*00b67f09SDavid van Moolenbroek -*) rm="$rm $arg" ;; 3759*00b67f09SDavid van Moolenbroek *) files="$files $arg" ;; 3760*00b67f09SDavid van Moolenbroek esac 3761*00b67f09SDavid van Moolenbroek done 3762*00b67f09SDavid van Moolenbroek 3763*00b67f09SDavid van Moolenbroek if test -z "$rm"; then 3764*00b67f09SDavid van Moolenbroek $echo "$modename: you must specify an RM program" 1>&2 3765*00b67f09SDavid van Moolenbroek $echo "$help" 1>&2 3766*00b67f09SDavid van Moolenbroek exit 1 3767*00b67f09SDavid van Moolenbroek fi 3768*00b67f09SDavid van Moolenbroek 3769*00b67f09SDavid van Moolenbroek for file in $files; do 3770*00b67f09SDavid van Moolenbroek dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 3771*00b67f09SDavid van Moolenbroek test "X$dir" = "X$file" && dir=. 3772*00b67f09SDavid van Moolenbroek name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 3773*00b67f09SDavid van Moolenbroek 3774*00b67f09SDavid van Moolenbroek rmfiles="$file" 3775*00b67f09SDavid van Moolenbroek 3776*00b67f09SDavid van Moolenbroek case "$name" in 3777*00b67f09SDavid van Moolenbroek *.la) 3778*00b67f09SDavid van Moolenbroek # Possibly a libtool archive, so verify it. 3779*00b67f09SDavid van Moolenbroek if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 3780*00b67f09SDavid van Moolenbroek . $dir/$name 3781*00b67f09SDavid van Moolenbroek 3782*00b67f09SDavid van Moolenbroek # Delete the libtool libraries and symlinks. 3783*00b67f09SDavid van Moolenbroek for n in $library_names; do 3784*00b67f09SDavid van Moolenbroek rmfiles="$rmfiles $dir/$n" 3785*00b67f09SDavid van Moolenbroek done 3786*00b67f09SDavid van Moolenbroek test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library" 3787*00b67f09SDavid van Moolenbroek 3788*00b67f09SDavid van Moolenbroek $show "$rm $rmfiles" 3789*00b67f09SDavid van Moolenbroek $run $rm $rmfiles 3790*00b67f09SDavid van Moolenbroek 3791*00b67f09SDavid van Moolenbroek if test -n "$library_names"; then 3792*00b67f09SDavid van Moolenbroek # Do each command in the postuninstall commands. 3793*00b67f09SDavid van Moolenbroek eval cmds=\"$postuninstall_cmds\" 3794*00b67f09SDavid van Moolenbroek IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 3795*00b67f09SDavid van Moolenbroek for cmd in $cmds; do 3796*00b67f09SDavid van Moolenbroek IFS="$save_ifs" 3797*00b67f09SDavid van Moolenbroek $show "$cmd" 3798*00b67f09SDavid van Moolenbroek $run eval "$cmd" 3799*00b67f09SDavid van Moolenbroek done 3800*00b67f09SDavid van Moolenbroek IFS="$save_ifs" 3801*00b67f09SDavid van Moolenbroek fi 3802*00b67f09SDavid van Moolenbroek 3803*00b67f09SDavid van Moolenbroek if test -n "$old_library"; then 3804*00b67f09SDavid van Moolenbroek # Do each command in the old_postuninstall commands. 3805*00b67f09SDavid van Moolenbroek eval cmds=\"$old_postuninstall_cmds\" 3806*00b67f09SDavid van Moolenbroek IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 3807*00b67f09SDavid van Moolenbroek for cmd in $cmds; do 3808*00b67f09SDavid van Moolenbroek IFS="$save_ifs" 3809*00b67f09SDavid van Moolenbroek $show "$cmd" 3810*00b67f09SDavid van Moolenbroek $run eval "$cmd" 3811*00b67f09SDavid van Moolenbroek done 3812*00b67f09SDavid van Moolenbroek IFS="$save_ifs" 3813*00b67f09SDavid van Moolenbroek fi 3814*00b67f09SDavid van Moolenbroek 3815*00b67f09SDavid van Moolenbroek # FIXME: should reinstall the best remaining shared library. 3816*00b67f09SDavid van Moolenbroek fi 3817*00b67f09SDavid van Moolenbroek ;; 3818*00b67f09SDavid van Moolenbroek 3819*00b67f09SDavid van Moolenbroek *.lo) 3820*00b67f09SDavid van Moolenbroek if test "$build_old_libs" = yes; then 3821*00b67f09SDavid van Moolenbroek oldobj=`$echo "X$name" | $Xsed -e "$lo2o"` 3822*00b67f09SDavid van Moolenbroek rmfiles="$rmfiles $dir/$oldobj" 3823*00b67f09SDavid van Moolenbroek fi 3824*00b67f09SDavid van Moolenbroek $show "$rm $rmfiles" 3825*00b67f09SDavid van Moolenbroek $run $rm $rmfiles 3826*00b67f09SDavid van Moolenbroek ;; 3827*00b67f09SDavid van Moolenbroek 3828*00b67f09SDavid van Moolenbroek *) 3829*00b67f09SDavid van Moolenbroek $show "$rm $rmfiles" 3830*00b67f09SDavid van Moolenbroek $run $rm $rmfiles 3831*00b67f09SDavid van Moolenbroek ;; 3832*00b67f09SDavid van Moolenbroek esac 3833*00b67f09SDavid van Moolenbroek done 3834*00b67f09SDavid van Moolenbroek exit 0 3835*00b67f09SDavid van Moolenbroek ;; 3836*00b67f09SDavid van Moolenbroek 3837*00b67f09SDavid van Moolenbroek "") 3838*00b67f09SDavid van Moolenbroek $echo "$modename: you must specify a MODE" 1>&2 3839*00b67f09SDavid van Moolenbroek $echo "$generic_help" 1>&2 3840*00b67f09SDavid van Moolenbroek exit 1 3841*00b67f09SDavid van Moolenbroek ;; 3842*00b67f09SDavid van Moolenbroek esac 3843*00b67f09SDavid van Moolenbroek 3844*00b67f09SDavid van Moolenbroek $echo "$modename: invalid operation mode \`$mode'" 1>&2 3845*00b67f09SDavid van Moolenbroek $echo "$generic_help" 1>&2 3846*00b67f09SDavid van Moolenbroek exit 1 3847*00b67f09SDavid van Moolenbroekfi # test -z "$show_help" 3848*00b67f09SDavid van Moolenbroek 3849*00b67f09SDavid van Moolenbroek# We need to display help for each of the modes. 3850*00b67f09SDavid van Moolenbroekcase "$mode" in 3851*00b67f09SDavid van Moolenbroek"") $echo \ 3852*00b67f09SDavid van Moolenbroek"Usage: $modename [OPTION]... [MODE-ARG]... 3853*00b67f09SDavid van Moolenbroek 3854*00b67f09SDavid van MoolenbroekProvide generalized library-building support services. 3855*00b67f09SDavid van Moolenbroek 3856*00b67f09SDavid van Moolenbroek --config show all configuration variables 3857*00b67f09SDavid van Moolenbroek --debug enable verbose shell tracing 3858*00b67f09SDavid van Moolenbroek-n, --dry-run display commands without modifying any files 3859*00b67f09SDavid van Moolenbroek --features display basic configuration information and exit 3860*00b67f09SDavid van Moolenbroek --finish same as \`--mode=finish' 3861*00b67f09SDavid van Moolenbroek --help display this help message and exit 3862*00b67f09SDavid van Moolenbroek --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] 3863*00b67f09SDavid van Moolenbroek --quiet same as \`--silent' 3864*00b67f09SDavid van Moolenbroek --silent don't print informational messages 3865*00b67f09SDavid van Moolenbroek --version print version information 3866*00b67f09SDavid van Moolenbroek 3867*00b67f09SDavid van MoolenbroekMODE must be one of the following: 3868*00b67f09SDavid van Moolenbroek 3869*00b67f09SDavid van Moolenbroek compile compile a source file into a libtool object 3870*00b67f09SDavid van Moolenbroek execute automatically set library path, then run a program 3871*00b67f09SDavid van Moolenbroek finish complete the installation of libtool libraries 3872*00b67f09SDavid van Moolenbroek install install libraries or executables 3873*00b67f09SDavid van Moolenbroek link create a library or an executable 3874*00b67f09SDavid van Moolenbroek uninstall remove libraries from an installed directory 3875*00b67f09SDavid van Moolenbroek 3876*00b67f09SDavid van MoolenbroekMODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for 3877*00b67f09SDavid van Moolenbroeka more detailed description of MODE." 3878*00b67f09SDavid van Moolenbroek exit 0 3879*00b67f09SDavid van Moolenbroek ;; 3880*00b67f09SDavid van Moolenbroek 3881*00b67f09SDavid van Moolenbroekcompile) 3882*00b67f09SDavid van Moolenbroek $echo \ 3883*00b67f09SDavid van Moolenbroek"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 3884*00b67f09SDavid van Moolenbroek 3885*00b67f09SDavid van MoolenbroekCompile a source file into a libtool library object. 3886*00b67f09SDavid van Moolenbroek 3887*00b67f09SDavid van MoolenbroekThis mode accepts the following additional options: 3888*00b67f09SDavid van Moolenbroek 3889*00b67f09SDavid van Moolenbroek -o OUTPUT-FILE set the output file name to OUTPUT-FILE 3890*00b67f09SDavid van Moolenbroek -static always build a \`.o' file suitable for static linking 3891*00b67f09SDavid van Moolenbroek 3892*00b67f09SDavid van MoolenbroekCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 3893*00b67f09SDavid van Moolenbroekfrom the given SOURCEFILE. 3894*00b67f09SDavid van Moolenbroek 3895*00b67f09SDavid van MoolenbroekThe output file name is determined by removing the directory component from 3896*00b67f09SDavid van MoolenbroekSOURCEFILE, then substituting the C source code suffix \`.c' with the 3897*00b67f09SDavid van Moolenbroeklibrary object suffix, \`.lo'." 3898*00b67f09SDavid van Moolenbroek ;; 3899*00b67f09SDavid van Moolenbroek 3900*00b67f09SDavid van Moolenbroekexecute) 3901*00b67f09SDavid van Moolenbroek $echo \ 3902*00b67f09SDavid van Moolenbroek"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... 3903*00b67f09SDavid van Moolenbroek 3904*00b67f09SDavid van MoolenbroekAutomatically set library path, then run a program. 3905*00b67f09SDavid van Moolenbroek 3906*00b67f09SDavid van MoolenbroekThis mode accepts the following additional options: 3907*00b67f09SDavid van Moolenbroek 3908*00b67f09SDavid van Moolenbroek -dlopen FILE add the directory containing FILE to the library path 3909*00b67f09SDavid van Moolenbroek 3910*00b67f09SDavid van MoolenbroekThis mode sets the library path environment variable according to \`-dlopen' 3911*00b67f09SDavid van Moolenbroekflags. 3912*00b67f09SDavid van Moolenbroek 3913*00b67f09SDavid van MoolenbroekIf any of the ARGS are libtool executable wrappers, then they are translated 3914*00b67f09SDavid van Moolenbroekinto their corresponding uninstalled binary, and any of their required library 3915*00b67f09SDavid van Moolenbroekdirectories are added to the library path. 3916*00b67f09SDavid van Moolenbroek 3917*00b67f09SDavid van MoolenbroekThen, COMMAND is executed, with ARGS as arguments." 3918*00b67f09SDavid van Moolenbroek ;; 3919*00b67f09SDavid van Moolenbroek 3920*00b67f09SDavid van Moolenbroekfinish) 3921*00b67f09SDavid van Moolenbroek $echo \ 3922*00b67f09SDavid van Moolenbroek"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... 3923*00b67f09SDavid van Moolenbroek 3924*00b67f09SDavid van MoolenbroekComplete the installation of libtool libraries. 3925*00b67f09SDavid van Moolenbroek 3926*00b67f09SDavid van MoolenbroekEach LIBDIR is a directory that contains libtool libraries. 3927*00b67f09SDavid van Moolenbroek 3928*00b67f09SDavid van MoolenbroekThe commands that this mode executes may require superuser privileges. Use 3929*00b67f09SDavid van Moolenbroekthe \`--dry-run' option if you just want to see what would be executed." 3930*00b67f09SDavid van Moolenbroek ;; 3931*00b67f09SDavid van Moolenbroek 3932*00b67f09SDavid van Moolenbroekinstall) 3933*00b67f09SDavid van Moolenbroek $echo \ 3934*00b67f09SDavid van Moolenbroek"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... 3935*00b67f09SDavid van Moolenbroek 3936*00b67f09SDavid van MoolenbroekInstall executables or libraries. 3937*00b67f09SDavid van Moolenbroek 3938*00b67f09SDavid van MoolenbroekINSTALL-COMMAND is the installation command. The first component should be 3939*00b67f09SDavid van Moolenbroekeither the \`install' or \`cp' program. 3940*00b67f09SDavid van Moolenbroek 3941*00b67f09SDavid van MoolenbroekThe rest of the components are interpreted as arguments to that command (only 3942*00b67f09SDavid van MoolenbroekBSD-compatible install options are recognized)." 3943*00b67f09SDavid van Moolenbroek ;; 3944*00b67f09SDavid van Moolenbroek 3945*00b67f09SDavid van Moolenbroeklink) 3946*00b67f09SDavid van Moolenbroek $echo \ 3947*00b67f09SDavid van Moolenbroek"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... 3948*00b67f09SDavid van Moolenbroek 3949*00b67f09SDavid van MoolenbroekLink object files or libraries together to form another library, or to 3950*00b67f09SDavid van Moolenbroekcreate an executable program. 3951*00b67f09SDavid van Moolenbroek 3952*00b67f09SDavid van MoolenbroekLINK-COMMAND is a command using the C compiler that you would use to create 3953*00b67f09SDavid van Moolenbroeka program from several object files. 3954*00b67f09SDavid van Moolenbroek 3955*00b67f09SDavid van MoolenbroekThe following components of LINK-COMMAND are treated specially: 3956*00b67f09SDavid van Moolenbroek 3957*00b67f09SDavid van Moolenbroek -all-static do not do any dynamic linking at all 3958*00b67f09SDavid van Moolenbroek -avoid-version do not add a version suffix if possible 3959*00b67f09SDavid van Moolenbroek -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 3960*00b67f09SDavid van Moolenbroek -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 3961*00b67f09SDavid van Moolenbroek -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 3962*00b67f09SDavid van Moolenbroek -export-symbols SYMFILE 3963*00b67f09SDavid van Moolenbroek try to export only the symbols listed in SYMFILE 3964*00b67f09SDavid van Moolenbroek -export-symbols-regex REGEX 3965*00b67f09SDavid van Moolenbroek try to export only the symbols matching REGEX 3966*00b67f09SDavid van Moolenbroek -LLIBDIR search LIBDIR for required installed libraries 3967*00b67f09SDavid van Moolenbroek -lNAME OUTPUT-FILE requires the installed library libNAME 3968*00b67f09SDavid van Moolenbroek -module build a library that can dlopened 3969*00b67f09SDavid van Moolenbroek -no-undefined declare that a library does not refer to external symbols 3970*00b67f09SDavid van Moolenbroek -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 3971*00b67f09SDavid van Moolenbroek -release RELEASE specify package release information 3972*00b67f09SDavid van Moolenbroek -rpath LIBDIR the created library will eventually be installed in LIBDIR 3973*00b67f09SDavid van Moolenbroek -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 3974*00b67f09SDavid van Moolenbroek -static do not do any dynamic linking of libtool libraries 3975*00b67f09SDavid van Moolenbroek -version-info CURRENT[:REVISION[:AGE]] 3976*00b67f09SDavid van Moolenbroek specify library version info [each variable defaults to 0] 3977*00b67f09SDavid van Moolenbroek 3978*00b67f09SDavid van MoolenbroekAll other options (arguments beginning with \`-') are ignored. 3979*00b67f09SDavid van Moolenbroek 3980*00b67f09SDavid van MoolenbroekEvery other argument is treated as a filename. Files ending in \`.la' are 3981*00b67f09SDavid van Moolenbroektreated as uninstalled libtool libraries, other files are standard or library 3982*00b67f09SDavid van Moolenbroekobject files. 3983*00b67f09SDavid van Moolenbroek 3984*00b67f09SDavid van MoolenbroekIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 3985*00b67f09SDavid van Moolenbroekonly library objects (\`.lo' files) may be specified, and \`-rpath' is 3986*00b67f09SDavid van Moolenbroekrequired, except when creating a convenience library. 3987*00b67f09SDavid van Moolenbroek 3988*00b67f09SDavid van MoolenbroekIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 3989*00b67f09SDavid van Moolenbroekusing \`ar' and \`ranlib', or on Windows using \`lib'. 3990*00b67f09SDavid van Moolenbroek 3991*00b67f09SDavid van MoolenbroekIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 3992*00b67f09SDavid van Moolenbroekis created, otherwise an executable program is created." 3993*00b67f09SDavid van Moolenbroek ;; 3994*00b67f09SDavid van Moolenbroek 3995*00b67f09SDavid van Moolenbroekuninstall) 3996*00b67f09SDavid van Moolenbroek $echo \ 3997*00b67f09SDavid van Moolenbroek"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 3998*00b67f09SDavid van Moolenbroek 3999*00b67f09SDavid van MoolenbroekRemove libraries from an installation directory. 4000*00b67f09SDavid van Moolenbroek 4001*00b67f09SDavid van MoolenbroekRM is the name of the program to use to delete files associated with each FILE 4002*00b67f09SDavid van Moolenbroek(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 4003*00b67f09SDavid van Moolenbroekto RM. 4004*00b67f09SDavid van Moolenbroek 4005*00b67f09SDavid van MoolenbroekIf FILE is a libtool library, all the files associated with it are deleted. 4006*00b67f09SDavid van MoolenbroekOtherwise, only FILE itself is deleted using RM." 4007*00b67f09SDavid van Moolenbroek ;; 4008*00b67f09SDavid van Moolenbroek 4009*00b67f09SDavid van Moolenbroek*) 4010*00b67f09SDavid van Moolenbroek $echo "$modename: invalid operation mode \`$mode'" 1>&2 4011*00b67f09SDavid van Moolenbroek $echo "$help" 1>&2 4012*00b67f09SDavid van Moolenbroek exit 1 4013*00b67f09SDavid van Moolenbroek ;; 4014*00b67f09SDavid van Moolenbroekesac 4015*00b67f09SDavid van Moolenbroek 4016*00b67f09SDavid van Moolenbroekecho 4017*00b67f09SDavid van Moolenbroek$echo "Try \`$modename --help' for more information about other modes." 4018*00b67f09SDavid van Moolenbroek 4019*00b67f09SDavid van Moolenbroekexit 0 4020*00b67f09SDavid van Moolenbroek 4021*00b67f09SDavid van Moolenbroek# Local Variables: 4022*00b67f09SDavid van Moolenbroek# mode:shell-script 4023*00b67f09SDavid van Moolenbroek# sh-indentation:2 4024*00b67f09SDavid van Moolenbroek# End: 4025