Annotation of sql/sqlite/libltdl/config/compile, revision 1.1
1.1 ! moko 1: #! /bin/sh
! 2: # Wrapper for compilers which do not understand `-c -o'.
! 3:
! 4: scriptversion=2010-11-15.09; # UTC
! 5:
! 6: # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009, 2010 Free Software
! 7: # Foundation, Inc.
! 8: # Written by Tom Tromey <tromey@cygnus.com>.
! 9: #
! 10: # This program is free software; you can redistribute it and/or modify
! 11: # it under the terms of the GNU General Public License as published by
! 12: # the Free Software Foundation; either version 2, or (at your option)
! 13: # any later version.
! 14: #
! 15: # This program is distributed in the hope that it will be useful,
! 16: # but WITHOUT ANY WARRANTY; without even the implied warranty of
! 17: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! 18: # GNU General Public License for more details.
! 19: #
! 20: # You should have received a copy of the GNU General Public License
! 21: # along with this program. If not, see <http://www.gnu.org/licenses/>.
! 22:
! 23: # As a special exception to the GNU General Public License, if you
! 24: # distribute this file as part of a program that contains a
! 25: # configuration script generated by Autoconf, you may include it under
! 26: # the same distribution terms that you use for the rest of that program.
! 27:
! 28: # This file is maintained in Automake, please report
! 29: # bugs to <bug-automake@gnu.org> or send patches to
! 30: # <automake-patches@gnu.org>.
! 31:
! 32: nl='
! 33: '
! 34:
! 35: # We need space, tab and new line, in precisely that order. Quoting is
! 36: # there to prevent tools from complaining about whitespace usage.
! 37: IFS=" "" $nl"
! 38:
! 39: file_conv=
! 40:
! 41: # func_file_conv build_file lazy
! 42: # Convert a $build file to $host form and store it in $file
! 43: # Currently only supports Win32 hosts. If the determined conversion
! 44: # type is listed in (the comma separated) LAZY, no conversion will
! 45: # take place.
! 46: func_file_conv ()
! 47: {
! 48: file=$1
! 49: case $file in
! 50: / | /[!/]*) # absolute file, and not a UNC file
! 51: if test -z "$file_conv"; then
! 52: # lazily determine how to convert abs files
! 53: case `uname -s` in
! 54: MINGW*)
! 55: file_conv=mingw
! 56: ;;
! 57: CYGWIN*)
! 58: file_conv=cygwin
! 59: ;;
! 60: *)
! 61: file_conv=wine
! 62: ;;
! 63: esac
! 64: fi
! 65: case $file_conv/,$2, in
! 66: *,$file_conv,*)
! 67: ;;
! 68: mingw/*)
! 69: file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
! 70: ;;
! 71: cygwin/*)
! 72: file=`cygpath -m "$file" || echo "$file"`
! 73: ;;
! 74: wine/*)
! 75: file=`winepath -w "$file" || echo "$file"`
! 76: ;;
! 77: esac
! 78: ;;
! 79: esac
! 80: }
! 81:
! 82: # func_cl_wrapper cl arg...
! 83: # Adjust compile command to suit cl
! 84: func_cl_wrapper ()
! 85: {
! 86: # Assume a capable shell
! 87: lib_path=
! 88: shared=:
! 89: linker_opts=
! 90: for arg
! 91: do
! 92: if test -n "$eat"; then
! 93: eat=
! 94: else
! 95: case $1 in
! 96: -o)
! 97: # configure might choose to run compile as `compile cc -o foo foo.c'.
! 98: eat=1
! 99: case $2 in
! 100: *.o | *.[oO][bB][jJ])
! 101: func_file_conv "$2"
! 102: set x "$@" -Fo"$file"
! 103: shift
! 104: ;;
! 105: *)
! 106: func_file_conv "$2"
! 107: set x "$@" -Fe"$file"
! 108: shift
! 109: ;;
! 110: esac
! 111: ;;
! 112: -I*)
! 113: func_file_conv "${1#-I}" mingw
! 114: set x "$@" -I"$file"
! 115: shift
! 116: ;;
! 117: -l*)
! 118: lib=${1#-l}
! 119: found=no
! 120: save_IFS=$IFS
! 121: IFS=';'
! 122: for dir in $lib_path $LIB
! 123: do
! 124: IFS=$save_IFS
! 125: if $shared && test -f "$dir/$lib.dll.lib"; then
! 126: found=yes
! 127: set x "$@" "$dir/$lib.dll.lib"
! 128: break
! 129: fi
! 130: if test -f "$dir/$lib.lib"; then
! 131: found=yes
! 132: set x "$@" "$dir/$lib.lib"
! 133: break
! 134: fi
! 135: done
! 136: IFS=$save_IFS
! 137:
! 138: test "$found" != yes && set x "$@" "$lib.lib"
! 139: shift
! 140: ;;
! 141: -L*)
! 142: func_file_conv "${1#-L}"
! 143: if test -z "$lib_path"; then
! 144: lib_path=$file
! 145: else
! 146: lib_path="$lib_path;$file"
! 147: fi
! 148: linker_opts="$linker_opts -LIBPATH:$file"
! 149: ;;
! 150: -static)
! 151: shared=false
! 152: ;;
! 153: -Wl,*)
! 154: arg=${1#-Wl,}
! 155: save_ifs="$IFS"; IFS=','
! 156: for flag in $arg; do
! 157: IFS="$save_ifs"
! 158: linker_opts="$linker_opts $flag"
! 159: done
! 160: IFS="$save_ifs"
! 161: ;;
! 162: -Xlinker)
! 163: eat=1
! 164: linker_opts="$linker_opts $2"
! 165: ;;
! 166: -*)
! 167: set x "$@" "$1"
! 168: shift
! 169: ;;
! 170: *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
! 171: func_file_conv "$1"
! 172: set x "$@" -Tp"$file"
! 173: shift
! 174: ;;
! 175: *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
! 176: func_file_conv "$1" mingw
! 177: set x "$@" "$file"
! 178: shift
! 179: ;;
! 180: *)
! 181: set x "$@" "$1"
! 182: shift
! 183: ;;
! 184: esac
! 185: fi
! 186: shift
! 187: done
! 188: if test -n "$linker_opts"; then
! 189: linker_opts="-link$linker_opts"
! 190: fi
! 191: exec "$@" $linker_opts
! 192: exit 1
! 193: }
! 194:
! 195: eat=
! 196:
! 197: case $1 in
! 198: '')
! 199: echo "$0: No command. Try \`$0 --help' for more information." 1>&2
! 200: exit 1;
! 201: ;;
! 202: -h | --h*)
! 203: cat <<\EOF
! 204: Usage: compile [--help] [--version] PROGRAM [ARGS]
! 205:
! 206: Wrapper for compilers which do not understand `-c -o'.
! 207: Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
! 208: arguments, and rename the output as expected.
! 209:
! 210: If you are trying to build a whole package this is not the
! 211: right script to run: please start by reading the file `INSTALL'.
! 212:
! 213: Report bugs to <bug-automake@gnu.org>.
! 214: EOF
! 215: exit $?
! 216: ;;
! 217: -v | --v*)
! 218: echo "compile $scriptversion"
! 219: exit $?
! 220: ;;
! 221: cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
! 222: func_cl_wrapper "$@" # Doesn't return...
! 223: ;;
! 224: esac
! 225:
! 226: ofile=
! 227: cfile=
! 228:
! 229: for arg
! 230: do
! 231: if test -n "$eat"; then
! 232: eat=
! 233: else
! 234: case $1 in
! 235: -o)
! 236: # configure might choose to run compile as `compile cc -o foo foo.c'.
! 237: # So we strip `-o arg' only if arg is an object.
! 238: eat=1
! 239: case $2 in
! 240: *.o | *.obj)
! 241: ofile=$2
! 242: ;;
! 243: *)
! 244: set x "$@" -o "$2"
! 245: shift
! 246: ;;
! 247: esac
! 248: ;;
! 249: *.c)
! 250: cfile=$1
! 251: set x "$@" "$1"
! 252: shift
! 253: ;;
! 254: *)
! 255: set x "$@" "$1"
! 256: shift
! 257: ;;
! 258: esac
! 259: fi
! 260: shift
! 261: done
! 262:
! 263: if test -z "$ofile" || test -z "$cfile"; then
! 264: # If no `-o' option was seen then we might have been invoked from a
! 265: # pattern rule where we don't need one. That is ok -- this is a
! 266: # normal compilation that the losing compiler can handle. If no
! 267: # `.c' file was seen then we are probably linking. That is also
! 268: # ok.
! 269: exec "$@"
! 270: fi
! 271:
! 272: # Name of file we expect compiler to create.
! 273: cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
! 274:
! 275: # Create the lock directory.
! 276: # Note: use `[/\\:.-]' here to ensure that we don't use the same name
! 277: # that we are using for the .o file. Also, base the name on the expected
! 278: # object file name, since that is what matters with a parallel build.
! 279: lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
! 280: while true; do
! 281: if mkdir "$lockdir" >/dev/null 2>&1; then
! 282: break
! 283: fi
! 284: sleep 1
! 285: done
! 286: # FIXME: race condition here if user kills between mkdir and trap.
! 287: trap "rmdir '$lockdir'; exit 1" 1 2 15
! 288:
! 289: # Run the compile.
! 290: "$@"
! 291: ret=$?
! 292:
! 293: if test -f "$cofile"; then
! 294: test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
! 295: elif test -f "${cofile}bj"; then
! 296: test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
! 297: fi
! 298:
! 299: rmdir "$lockdir"
! 300: exit $ret
! 301:
! 302: # Local Variables:
! 303: # mode: shell-script
! 304: # sh-indentation: 2
! 305: # eval: (add-hook 'write-file-hooks 'time-stamp)
! 306: # time-stamp-start: "scriptversion="
! 307: # time-stamp-format: "%:y-%02m-%02d.%02H"
! 308: # time-stamp-time-zone: "UTC"
! 309: # time-stamp-end: "; # UTC"
! 310: # End:
E-mail: