source: ThirdParty/Glpk/branches/autotools-update/glpk_config_files/compile

Last change on this file was 4051, checked in by stefan, 5 months ago

add COIN-OR version of glpk config files

  • adapt captureConfigFiles to store them in dir glpk_config_files
  • adapt get.Glpk to copy them from glpk_config_files
  • rename glpk-4.65_config.patch to glpk_config.patch, as everything is 4.65 specific here anyway
  • Property svn:executable set to *
File size: 8.4 KB
Line 
1#! /bin/sh
2# Wrapper for compilers which do not understand '-c -o'.
3
4scriptversion=2018-03-07.03; # UTC
5
6# Copyright (C) 1999-2018 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 <https://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
31nl='
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.
36IFS=" ""        $nl"
37
38file_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.
45func_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* | MSYS* )
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
83func_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
96func_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
130func_cl_wrapper ()
131{
132  # Assume a capable shell
133  lib_path=
134  shared=:
135  linker_opts=
136  outfile=
137  implib=
138  linking=1
139  for arg
140  do
141    if test -n "$eat"; then
142      eat=
143    else
144      case $1 in
145        -o)
146          # configure might choose to run compile as 'compile cc -o foo foo.c'.
147          eat=1
148          case $2 in
149            *.o | *.[oO][bB][jJ])
150              func_file_conv "$2"
151              set x "$@" -Fo"$file"
152              shift
153              outfile="$file"
154              ;;
155            *)
156              func_file_conv "$2"
157              set x "$@" -Fe"$file"
158              shift
159              outfile="$file"
160              ;;
161          esac
162          ;;
163        -I)
164          eat=1
165          func_file_conv "$2" mingw
166          set x "$@" -I"$file"
167          shift
168          ;;
169        -I*)
170          func_file_conv "${1#-I}" mingw
171          set x "$@" -I"$file"
172          shift
173          ;;
174        -l)
175          eat=1
176          func_cl_dashl "$2"
177          set x "$@" "$lib"
178          shift
179          ;;
180        -l*)
181          func_cl_dashl "${1#-l}"
182          set x "$@" "$lib"
183          shift
184          ;;
185        -L)
186          eat=1
187          func_cl_dashL "$2"
188          ;;
189        -L*)
190          func_cl_dashL "${1#-L}"
191          ;;
192        -static)
193          shared=false
194          ;;
195        -Wl,*)
196          arg=${1#-Wl,}
197          save_ifs="$IFS"; IFS=','
198          for flag in $arg; do
199            IFS="$save_ifs"
200            linker_opts="$linker_opts $flag"
201            case "$flag" in -IMPLIB:*) implib=${flag#-IMPLIB:} ;; esac
202          done
203          IFS="$save_ifs"
204          ;;
205        -Xlinker)
206          eat=1
207          linker_opts="$linker_opts $2"
208          ;;
209        -*)
210          set x "$@" "$1"
211          shift
212          ;;
213        *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
214          func_file_conv "$1"
215          set x "$@" -Tp"$file"
216          shift
217          ;;
218        *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
219          func_file_conv "$1" mingw
220          set x "$@" "$file"
221          shift
222          ;;
223        -c)
224          linking=0
225          set x "$@" "$1"
226          shift
227          ;;
228        *)
229          set x "$@" "$1"
230          shift
231          ;;
232      esac
233    fi
234    shift
235  done
236  if test -n "$linker_opts"; then
237    linker_opts="-link$linker_opts"
238  fi
239  # remove old $implib, so we can distinguish between generated and not-generated implib below
240  if test -n "$implib" && test -f "$implib" ; then rm "$implib" ; fi
241
242  # add path to MSVC link in front on PATH if we seem to link (check isn't so accurate, but some false-positives shouldn't matter)
243  # compiler will call the link it finds in the PATH, and we don't want it to use MSYS' /bin/link
244  # we assume that MSVC link is in same directory as cl and that cl is found in PATH
245  if test "$linking" = 1 && comppath=`which cl 2>/dev/null` ; then
246    comppath=`dirname "$comppath"`
247    #echo "Adding $comppath to front of PATH"
248    PATH="$comppath:$PATH"
249  fi
250
251  #echo "compile: $@ $linker_opts"
252  "$@" $linker_opts || exit $?
253
254  # if -implib got lost or ignored, then the lib should be named ${outfile/.dll/.lib} and we rename that file
255  if test -n "$implib" && test ! -f "$implib" ; then
256    echo "compile: mv ${outfile/.dll/.lib} $implib"
257    mv "${outfile/.dll/.lib}" "$implib"
258  fi
259
260  exit 0
261}
262
263eat=
264
265case $1 in
266  '')
267     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
268     exit 1;
269     ;;
270  -h | --h*)
271    cat <<\EOF
272Usage: compile [--help] [--version] PROGRAM [ARGS]
273
274Wrapper for compilers which do not understand '-c -o'.
275Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
276arguments, and rename the output as expected.
277
278If you are trying to build a whole package this is not the
279right script to run: please start by reading the file 'INSTALL'.
280
281Report bugs to <bug-automake@gnu.org>.
282EOF
283    exit $?
284    ;;
285  -v | --v*)
286    echo "compile $scriptversion"
287    exit $?
288    ;;
289  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
290  icl | *[/\\]icl | icl.exe | *[/\\]icl.exe | \
291  ifort | *[/\\]ifort | ifort.exe | *[/\\]ifort.exe )
292    func_cl_wrapper "$@"      # Doesn't return...
293    ;;
294esac
295
296ofile=
297cfile=
298
299for arg
300do
301  if test -n "$eat"; then
302    eat=
303  else
304    case $1 in
305      -o)
306        # configure might choose to run compile as 'compile cc -o foo foo.c'.
307        # So we strip '-o arg' only if arg is an object.
308        eat=1
309        case $2 in
310          *.o | *.obj)
311            ofile=$2
312            ;;
313          *)
314            set x "$@" -o "$2"
315            shift
316            ;;
317        esac
318        ;;
319      *.c)
320        cfile=$1
321        set x "$@" "$1"
322        shift
323        ;;
324      *)
325        set x "$@" "$1"
326        shift
327        ;;
328    esac
329  fi
330  shift
331done
332
333if test -z "$ofile" || test -z "$cfile"; then
334  # If no '-o' option was seen then we might have been invoked from a
335  # pattern rule where we don't need one.  That is ok -- this is a
336  # normal compilation that the losing compiler can handle.  If no
337  # '.c' file was seen then we are probably linking.  That is also
338  # ok.
339  exec "$@"
340fi
341
342# Name of file we expect compiler to create.
343cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
344
345# Create the lock directory.
346# Note: use '[/\\:.-]' here to ensure that we don't use the same name
347# that we are using for the .o file.  Also, base the name on the expected
348# object file name, since that is what matters with a parallel build.
349lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
350while true; do
351  if mkdir "$lockdir" >/dev/null 2>&1; then
352    break
353  fi
354  sleep 1
355done
356# FIXME: race condition here if user kills between mkdir and trap.
357trap "rmdir '$lockdir'; exit 1" 1 2 15
358
359# Run the compile.
360"$@"
361ret=$?
362
363if test -f "$cofile"; then
364  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
365elif test -f "${cofile}bj"; then
366  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
367fi
368
369rmdir "$lockdir"
370exit $ret
371
372# Local Variables:
373# mode: shell-script
374# sh-indentation: 2
375# eval: (add-hook 'before-save-hook 'time-stamp)
376# time-stamp-start: "scriptversion="
377# time-stamp-format: "%:y-%02m-%02d.%02H"
378# time-stamp-time-zone: "UTC0"
379# time-stamp-end: "; # UTC"
380# End:
Note: See TracBrowser for help on using the repository browser.