lac : a85b723c7e67d46316e85e7422bd5088e9136042

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

Generated by git2html.