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