165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#! /bin/sh 265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Wrapper for compilers which do not understand '-c -o'. 365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichscriptversion=2012-10-14.11; # UTC 565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Copyright (C) 1999-2013 Free Software Foundation, Inc. 765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Written by Tom Tromey <tromey@cygnus.com>. 865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This program is free software; you can redistribute it and/or modify 1065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# it under the terms of the GNU General Public License as published by 1165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# the Free Software Foundation; either version 2, or (at your option) 1265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# any later version. 1365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 1465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This program is distributed in the hope that it will be useful, 1565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# but WITHOUT ANY WARRANTY; without even the implied warranty of 1665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# GNU General Public License for more details. 1865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 1965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# You should have received a copy of the GNU General Public License 2065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# along with this program. If not, see <http://www.gnu.org/licenses/>. 2165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 2265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# As a special exception to the GNU General Public License, if you 2365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# distribute this file as part of a program that contains a 2465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# configuration script generated by Autoconf, you may include it under 2565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# the same distribution terms that you use for the rest of that program. 2665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 2765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This file is maintained in Automake, please report 2865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# bugs to <bug-automake@gnu.org> or send patches to 2965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# <automake-patches@gnu.org>. 3065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 3165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichnl=' 3265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich' 3365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 3465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# We need space, tab and new line, in precisely that order. Quoting is 3565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# there to prevent tools from complaining about whitespace usage. 3665de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichIFS=" "" $nl" 3765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 3865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfile_conv= 3965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 4065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_file_conv build_file lazy 4165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Convert a $build file to $host form and store it in $file 4265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Currently only supports Windows hosts. If the determined conversion 4365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# type is listed in (the comma separated) LAZY, no conversion will 4465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# take place. 4565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_file_conv () 4665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 4765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich file=$1 4865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $file in 4965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich / | /[!/]*) # absolute file, and not a UNC file 5065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$file_conv"; then 5165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # lazily determine how to convert abs files 5265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case `uname -s` in 5365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich MINGW*) 5465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich file_conv=mingw 5565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 5665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich CYGWIN*) 5765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich file_conv=cygwin 5865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 5965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 6065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich file_conv=wine 6165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 6265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 6365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 6465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $file_conv/,$2, in 6565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *,$file_conv,*) 6665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 6765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich mingw/*) 6865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` 6965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 7065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cygwin/*) 7165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich file=`cygpath -m "$file" || echo "$file"` 7265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 7365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich wine/*) 7465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich file=`winepath -w "$file" || echo "$file"` 7565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 7665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 7765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 7865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 7965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 8065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 8165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_cl_dashL linkdir 8265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Make cl look for libraries in LINKDIR 8365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_cl_dashL () 8465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 8565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_file_conv "$1" 8665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$lib_path"; then 8765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lib_path=$file 8865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 8965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lib_path="$lib_path;$file" 9065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 9165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich linker_opts="$linker_opts -LIBPATH:$file" 9265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 9365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 9465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_cl_dashl library 9565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Do a library search-path lookup for cl 9665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_cl_dashl () 9765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 9865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lib=$1 9965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich found=no 10065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich save_IFS=$IFS 10165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich IFS=';' 10265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for dir in $lib_path $LIB 10365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich do 10465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich IFS=$save_IFS 10565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if $shared && test -f "$dir/$lib.dll.lib"; then 10665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich found=yes 10765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lib=$dir/$lib.dll.lib 10865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich break 10965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 11065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -f "$dir/$lib.lib"; then 11165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich found=yes 11265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lib=$dir/$lib.lib 11365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich break 11465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 11565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -f "$dir/lib$lib.a"; then 11665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich found=yes 11765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lib=$dir/lib$lib.a 11865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich break 11965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 12065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 12165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich IFS=$save_IFS 12265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 12365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$found" != yes; then 12465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lib=$lib.lib 12565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 12665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 12765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 12865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_cl_wrapper cl arg... 12965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Adjust compile command to suit cl 13065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_cl_wrapper () 13165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 13265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Assume a capable shell 13365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lib_path= 13465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shared=: 13565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich linker_opts= 13665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for arg 13765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich do 13865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$eat"; then 13965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eat= 14065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 14165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $1 in 14265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -o) 14365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # configure might choose to run compile as 'compile cc -o foo foo.c'. 14465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eat=1 14565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $2 in 14665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.o | *.[oO][bB][jJ]) 14765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_file_conv "$2" 14865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich set x "$@" -Fo"$file" 14965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 15065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 15165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 15265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_file_conv "$2" 15365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich set x "$@" -Fe"$file" 15465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 15565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 15665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 15765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 15865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -I) 15965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eat=1 16065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_file_conv "$2" mingw 16165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich set x "$@" -I"$file" 16265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 16365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 16465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -I*) 16565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_file_conv "${1#-I}" mingw 16665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich set x "$@" -I"$file" 16765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 16865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 16965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -l) 17065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eat=1 17165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_cl_dashl "$2" 17265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich set x "$@" "$lib" 17365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 17465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 17565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -l*) 17665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_cl_dashl "${1#-l}" 17765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich set x "$@" "$lib" 17865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 17965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 18065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -L) 18165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eat=1 18265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_cl_dashL "$2" 18365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 18465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -L*) 18565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_cl_dashL "${1#-L}" 18665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 18765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -static) 18865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shared=false 18965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 19065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -Wl,*) 19165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich arg=${1#-Wl,} 19265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich save_ifs="$IFS"; IFS=',' 19365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for flag in $arg; do 19465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich IFS="$save_ifs" 19565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich linker_opts="$linker_opts $flag" 19665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 19765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich IFS="$save_ifs" 19865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 19965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -Xlinker) 20065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eat=1 20165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich linker_opts="$linker_opts $2" 20265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 20365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -*) 20465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich set x "$@" "$1" 20565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 20665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 20765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) 20865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_file_conv "$1" 20965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich set x "$@" -Tp"$file" 21065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 21165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 21265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) 21365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_file_conv "$1" mingw 21465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich set x "$@" "$file" 21565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 21665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 21765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 21865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich set x "$@" "$1" 21965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 22065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 22165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 22265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 22365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 22465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 22565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$linker_opts"; then 22665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich linker_opts="-link$linker_opts" 22765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 22865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exec "$@" $linker_opts 22965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit 1 23065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 23165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 23265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevicheat= 23365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 23465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcase $1 in 23565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich '') 23665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "$0: No command. Try '$0 --help' for more information." 1>&2 23765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit 1; 23865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 23965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -h | --h*) 24065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat <<\EOF 24165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichUsage: compile [--help] [--version] PROGRAM [ARGS] 24265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 24365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichWrapper for compilers which do not understand '-c -o'. 24465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichRemove '-o dest.o' from ARGS, run PROGRAM with the remaining 24565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevicharguments, and rename the output as expected. 24665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 24765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichIf you are trying to build a whole package this is not the 24865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichright script to run: please start by reading the file 'INSTALL'. 24965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 25065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichReport bugs to <bug-automake@gnu.org>. 25165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF 25265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $? 25365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 25465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -v | --v*) 25565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "compile $scriptversion" 25665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $? 25765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 25865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) 25965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_cl_wrapper "$@" # Doesn't return... 26065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 26165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichesac 26265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 26365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichofile= 26465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcfile= 26565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 26665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfor arg 26765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdo 26865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$eat"; then 26965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eat= 27065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 27165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $1 in 27265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -o) 27365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # configure might choose to run compile as 'compile cc -o foo foo.c'. 27465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # So we strip '-o arg' only if arg is an object. 27565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eat=1 27665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $2 in 27765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.o | *.obj) 27865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ofile=$2 27965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 28065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 28165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich set x "$@" -o "$2" 28265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 28365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 28465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 28565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 28665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.c) 28765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cfile=$1 28865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich set x "$@" "$1" 28965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 29065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 29165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 29265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich set x "$@" "$1" 29365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 29465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 29565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 29665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 29765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 29865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdone 29965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 30065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test -z "$ofile" || test -z "$cfile"; then 30165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # If no '-o' option was seen then we might have been invoked from a 30265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # pattern rule where we don't need one. That is ok -- this is a 30365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # normal compilation that the losing compiler can handle. If no 30465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # '.c' file was seen then we are probably linking. That is also 30565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # ok. 30665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exec "$@" 30765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi 30865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 30965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Name of file we expect compiler to create. 31065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` 31165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 31265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Create the lock directory. 31365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Note: use '[/\\:.-]' here to ensure that we don't use the same name 31465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# that we are using for the .o file. Also, base the name on the expected 31565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# object file name, since that is what matters with a parallel build. 31665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d 31765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichwhile true; do 31865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if mkdir "$lockdir" >/dev/null 2>&1; then 31965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich break 32065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 32165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich sleep 1 32265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdone 32365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# FIXME: race condition here if user kills between mkdir and trap. 32465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichtrap "rmdir '$lockdir'; exit 1" 1 2 15 32565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 32665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Run the compile. 32765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich"$@" 32865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichret=$? 32965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 33065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test -f "$cofile"; then 33165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$cofile" = "$ofile" || mv "$cofile" "$ofile" 33265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichelif test -f "${cofile}bj"; then 33365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" 33465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi 33565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 33665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichrmdir "$lockdir" 33765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichexit $ret 33865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 33965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Local Variables: 34065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# mode: shell-script 34165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# sh-indentation: 2 34265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# eval: (add-hook 'write-file-hooks 'time-stamp) 34365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# time-stamp-start: "scriptversion=" 34465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# time-stamp-format: "%:y-%02m-%02d.%02H" 34565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# time-stamp-time-zone: "UTC" 34665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# time-stamp-end: "; # UTC" 34765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# End: 348