2 # Wrapper for compilers which do not understand '-c -o'. 
   4 scriptversion
=2012-10-14.11
; # UTC 
   6 # Copyright (C) 1999-2013 Free Software Foundation, Inc. 
   7 # Written by Tom Tromey <tromey@cygnus.com>. 
   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) 
  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. 
  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/>. 
  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. 
  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>. 
  34 # We need space, tab and new line, in precisely that order.  Quoting is 
  35 # there to prevent tools from complaining about whitespace usage. 
  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 
  49     / | /[!/]*) # absolute file, and not a UNC file 
  50       if test -z "$file_conv"; then 
  51         # lazily determine how to convert abs files 
  64       case $file_conv/,$2, in 
  68           file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` 
  71           file=`cygpath -m "$file" || echo "$file"` 
  74           file=`winepath -w "$file" || echo "$file"` 
  81 # func_cl_dashL linkdir 
  82 # Make cl look for libraries in LINKDIR 
  86   if test -z "$lib_path"; then 
  89     lib_path
="$lib_path;$file" 
  91   linker_opts
="$linker_opts -LIBPATH:$file" 
  94 # func_cl_dashl library 
  95 # Do a library search-path lookup for cl 
 102   for dir 
in $lib_path $LIB 
 105     if $shared && test -f "$dir/$lib.dll.lib"; then 
 107       lib
=$dir/$lib.dll.lib
 
 110     if test -f "$dir/$lib.lib"; then 
 115     if test -f "$dir/lib$lib.a"; then 
 123   if test "$found" != yes; then 
 128 # func_cl_wrapper cl arg... 
 129 # Adjust compile command to suit cl 
 132   # Assume a capable shell 
 138     if test -n "$eat"; then 
 143           # configure might choose to run compile as 'compile cc -o foo foo.c'. 
 146             *.o 
| *.
[oO
][bB
][jJ
]) 
 148               set x 
"$@" -Fo"$file" 
 153               set x 
"$@" -Fe"$file" 
 160           func_file_conv 
"$2" mingw
 
 165           func_file_conv 
"${1#-I}" mingw
 
 176           func_cl_dashl 
"${1#-l}" 
 185           func_cl_dashL 
"${1#-L}" 
 192           save_ifs
="$IFS"; IFS
=',' 
 195             linker_opts
="$linker_opts $flag" 
 201           linker_opts
="$linker_opts $2" 
 207         *.cc 
| *.CC 
| *.cxx 
| *.CXX 
| *.
[cC
]++) 
 209           set x 
"$@" -Tp"$file" 
 212         *.c 
| *.cpp 
| *.CPP 
| *.lib 
| *.LIB 
| *.Lib 
| *.OBJ 
| *.obj 
| *.
[oO
]) 
 213           func_file_conv 
"$1" mingw
 
 225   if test -n "$linker_opts"; then 
 226     linker_opts
="-link$linker_opts" 
 228   exec "$@" $linker_opts 
 236      echo "$0: No command.  Try '$0 --help' for more information." 1>&2 
 241 Usage
: compile 
[--help] [--version] PROGRAM 
[ARGS
] 
 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.
 
 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'.
 
 250 Report bugs to 
<bug
-automake@gnu.org
>.
 
 255     echo "compile $scriptversion" 
 258   cl 
| *[/\\]cl 
| cl.exe 
| *[/\\]cl.exe 
) 
 259     func_cl_wrapper 
"$@"      # Doesn't return... 
 268   if test -n "$eat"; then 
 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. 
 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 
 309 # Name of file we expect compiler to create. 
 310 cofile
=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` 
 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
 
 318   if mkdir "$lockdir" >/dev
/null 
2>&1; then 
 323 # FIXME: race condition here if user kills between mkdir and trap. 
 324 trap "rmdir '$lockdir'; exit 1" 1 2 15 
 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" 
 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"