112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#! /bin/sh
212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Wrapper for compilers which do not understand '-c -o'.
312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala
412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialascriptversion=2012-10-14.11; # UTC
512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala
612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Copyright (C) 1999-2013 Free Software Foundation, Inc.
712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Written by Tom Tromey <tromey@cygnus.com>.
812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#
912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# This program is free software; you can redistribute it and/or modify
1012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# it under the terms of the GNU General Public License as published by
1112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# the Free Software Foundation; either version 2, or (at your option)
1212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# any later version.
1312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#
1412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# This program is distributed in the hope that it will be useful,
1512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# but WITHOUT ANY WARRANTY; without even the implied warranty of
1612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# GNU General Public License for more details.
1812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#
1912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# You should have received a copy of the GNU General Public License
2012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# along with this program.  If not, see <http://www.gnu.org/licenses/>.
2112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala
2212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# As a special exception to the GNU General Public License, if you
2312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# distribute this file as part of a program that contains a
2412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# configuration script generated by Autoconf, you may include it under
2512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# the same distribution terms that you use for the rest of that program.
2612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala
2712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# This file is maintained in Automake, please report
2812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# bugs to <bug-automake@gnu.org> or send patches to
2912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# <automake-patches@gnu.org>.
3012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala
3112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialanl='
3212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala'
3312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala
3412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# We need space, tab and new line, in precisely that order.  Quoting is
3512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# there to prevent tools from complaining about whitespace usage.
3612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaIFS=" ""	$nl"
3712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala
3812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafile_conv=
3912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala
4012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_file_conv build_file lazy
4112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Convert a $build file to $host form and store it in $file
4212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Currently only supports Windows hosts. If the determined conversion
4312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# type is listed in (the comma separated) LAZY, no conversion will
4412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# take place.
4512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_file_conv ()
4612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{
4712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  file=$1
4812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  case $file in
4912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala    / | /[!/]*) # absolute file, and not a UNC file
5012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala      if test -z "$file_conv"; then
5112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	# lazily determine how to convert abs files
5212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	case `uname -s` in
5312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  MINGW*)
5412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	    file_conv=mingw
5512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	    ;;
5612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  CYGWIN*)
5712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	    file_conv=cygwin
5812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	    ;;
5912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  *)
6012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	    file_conv=wine
6112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	    ;;
6212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	esac
6312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala      fi
6412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala      case $file_conv/,$2, in
6512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	*,$file_conv,*)
6612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  ;;
6712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	mingw/*)
6812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
6912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  ;;
7012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	cygwin/*)
7112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  file=`cygpath -m "$file" || echo "$file"`
7212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  ;;
7312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	wine/*)
7412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  file=`winepath -w "$file" || echo "$file"`
7512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  ;;
7612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala      esac
7712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala      ;;
7812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  esac
7912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala}
8012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala
8112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_cl_dashL linkdir
8212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Make cl look for libraries in LINKDIR
8312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_cl_dashL ()
8412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{
8512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  func_file_conv "$1"
8612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  if test -z "$lib_path"; then
8712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala    lib_path=$file
8812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  else
8912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala    lib_path="$lib_path;$file"
9012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  fi
9112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  linker_opts="$linker_opts -LIBPATH:$file"
9212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala}
9312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala
9412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_cl_dashl library
9512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Do a library search-path lookup for cl
9612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_cl_dashl ()
9712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{
9812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  lib=$1
9912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  found=no
10012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  save_IFS=$IFS
10112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  IFS=';'
10212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  for dir in $lib_path $LIB
10312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  do
10412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala    IFS=$save_IFS
10512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala    if $shared && test -f "$dir/$lib.dll.lib"; then
10612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala      found=yes
10712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala      lib=$dir/$lib.dll.lib
10812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala      break
10912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala    fi
11012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala    if test -f "$dir/$lib.lib"; then
11112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala      found=yes
11212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala      lib=$dir/$lib.lib
11312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala      break
11412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala    fi
11512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala    if test -f "$dir/lib$lib.a"; then
11612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala      found=yes
11712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala      lib=$dir/lib$lib.a
11812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala      break
11912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala    fi
12012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  done
12112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  IFS=$save_IFS
12212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala
12312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  if test "$found" != yes; then
12412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala    lib=$lib.lib
12512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  fi
12612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala}
12712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala
12812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_cl_wrapper cl arg...
12912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Adjust compile command to suit cl
13012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_cl_wrapper ()
13112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{
13212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  # Assume a capable shell
13312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  lib_path=
13412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  shared=:
13512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  linker_opts=
13612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  for arg
13712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  do
13812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala    if test -n "$eat"; then
13912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala      eat=
14012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala    else
14112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala      case $1 in
14212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	-o)
14312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  # configure might choose to run compile as 'compile cc -o foo foo.c'.
14412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  eat=1
14512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  case $2 in
14612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	    *.o | *.[oO][bB][jJ])
14712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	      func_file_conv "$2"
14812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	      set x "$@" -Fo"$file"
14912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	      shift
15012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	      ;;
15112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	    *)
15212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	      func_file_conv "$2"
15312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	      set x "$@" -Fe"$file"
15412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	      shift
15512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	      ;;
15612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  esac
15712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  ;;
15812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	-I)
15912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  eat=1
16012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  func_file_conv "$2" mingw
16112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  set x "$@" -I"$file"
16212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  shift
16312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  ;;
16412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	-I*)
16512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  func_file_conv "${1#-I}" mingw
16612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  set x "$@" -I"$file"
16712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  shift
16812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  ;;
16912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	-l)
17012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  eat=1
17112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  func_cl_dashl "$2"
17212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  set x "$@" "$lib"
17312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  shift
17412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  ;;
17512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	-l*)
17612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  func_cl_dashl "${1#-l}"
17712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  set x "$@" "$lib"
17812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  shift
17912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  ;;
18012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	-L)
18112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  eat=1
18212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  func_cl_dashL "$2"
18312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  ;;
18412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	-L*)
18512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  func_cl_dashL "${1#-L}"
18612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  ;;
18712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	-static)
18812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  shared=false
18912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  ;;
19012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	-Wl,*)
19112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  arg=${1#-Wl,}
19212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  save_ifs="$IFS"; IFS=','
19312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  for flag in $arg; do
19412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	    IFS="$save_ifs"
19512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	    linker_opts="$linker_opts $flag"
19612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  done
19712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  IFS="$save_ifs"
19812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  ;;
19912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	-Xlinker)
20012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  eat=1
20112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  linker_opts="$linker_opts $2"
20212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  ;;
20312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	-*)
20412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  set x "$@" "$1"
20512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  shift
20612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  ;;
20712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
20812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  func_file_conv "$1"
20912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  set x "$@" -Tp"$file"
21012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  shift
21112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  ;;
21212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
21312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  func_file_conv "$1" mingw
21412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  set x "$@" "$file"
21512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  shift
21612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  ;;
21712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	*)
21812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  set x "$@" "$1"
21912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  shift
22012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  ;;
22112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala      esac
22212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala    fi
22312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala    shift
22412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  done
22512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  if test -n "$linker_opts"; then
22612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala    linker_opts="-link$linker_opts"
22712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  fi
22812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  exec "$@" $linker_opts
22912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  exit 1
23012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala}
23112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala
23212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaeat=
23312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala
23412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialacase $1 in
23512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  '')
23612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
23712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala     exit 1;
23812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala     ;;
23912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  -h | --h*)
24012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala    cat <<\EOF
24112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaUsage: compile [--help] [--version] PROGRAM [ARGS]
24212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala
24312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaWrapper for compilers which do not understand '-c -o'.
24412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaRemove '-o dest.o' from ARGS, run PROGRAM with the remaining
24512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaarguments, and rename the output as expected.
24612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala
24712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaIf you are trying to build a whole package this is not the
24812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaright script to run: please start by reading the file 'INSTALL'.
24912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala
25012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaReport bugs to <bug-automake@gnu.org>.
25112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEOF
25212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala    exit $?
25312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala    ;;
25412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  -v | --v*)
25512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala    echo "compile $scriptversion"
25612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala    exit $?
25712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala    ;;
25812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
25912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala    func_cl_wrapper "$@"      # Doesn't return...
26012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala    ;;
26112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaesac
26212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala
26312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaofile=
26412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialacfile=
26512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala
26612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafor arg
26712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialado
26812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  if test -n "$eat"; then
26912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala    eat=
27012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  else
27112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala    case $1 in
27212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala      -o)
27312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	# configure might choose to run compile as 'compile cc -o foo foo.c'.
27412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	# So we strip '-o arg' only if arg is an object.
27512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	eat=1
27612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	case $2 in
27712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  *.o | *.obj)
27812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	    ofile=$2
27912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	    ;;
28012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	  *)
28112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	    set x "$@" -o "$2"
28212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	    shift
28312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	    ;;
28412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	esac
28512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	;;
28612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala      *.c)
28712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	cfile=$1
28812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	set x "$@" "$1"
28912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	shift
29012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	;;
29112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala      *)
29212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	set x "$@" "$1"
29312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	shift
29412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala	;;
29512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala    esac
29612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  fi
29712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  shift
29812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialadone
29912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala
30012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaif test -z "$ofile" || test -z "$cfile"; then
30112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  # If no '-o' option was seen then we might have been invoked from a
30212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  # pattern rule where we don't need one.  That is ok -- this is a
30312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  # normal compilation that the losing compiler can handle.  If no
30412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  # '.c' file was seen then we are probably linking.  That is also
30512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  # ok.
30612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  exec "$@"
30712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafi
30812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala
30912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Name of file we expect compiler to create.
31012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialacofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
31112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala
31212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Create the lock directory.
31312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Note: use '[/\\:.-]' here to ensure that we don't use the same name
31412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# that we are using for the .o file.  Also, base the name on the expected
31512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# object file name, since that is what matters with a parallel build.
31612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialalockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
31712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialawhile true; do
31812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  if mkdir "$lockdir" >/dev/null 2>&1; then
31912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala    break
32012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  fi
32112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  sleep 1
32212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialadone
32312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# FIXME: race condition here if user kills between mkdir and trap.
32412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialatrap "rmdir '$lockdir'; exit 1" 1 2 15
32512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala
32612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Run the compile.
32712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala"$@"
32812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaret=$?
32912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala
33012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaif test -f "$cofile"; then
33112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
33212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaelif test -f "${cofile}bj"; then
33312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
33412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafi
33512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala
33612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialarmdir "$lockdir"
33712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaexit $ret
33812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala
33912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Local Variables:
34012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# mode: shell-script
34112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# sh-indentation: 2
34212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# eval: (add-hook 'write-file-hooks 'time-stamp)
34312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# time-stamp-start: "scriptversion="
34412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# time-stamp-format: "%:y-%02m-%02d.%02H"
34512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# time-stamp-time-zone: "UTC"
34612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# time-stamp-end: "; # UTC"
34712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# End:
348