xref: /openbsd/gnu/usr.bin/binutils/configure (revision 2159047f)
1*2159047fSniklas#!/bin/sh
2*2159047fSniklas
3*2159047fSniklas### WARNING: this file contains embedded tabs.  Do not run untabify on this file.
4*2159047fSniklas
5*2159047fSniklas# Configuration script
6*2159047fSniklas# Copyright (C) 1988, 90, 91, 92, 93, 94 Free Software Foundation, Inc.
7*2159047fSniklas
8*2159047fSniklas# This program is free software; you can redistribute it and/or modify
9*2159047fSniklas# it under the terms of the GNU General Public License as published by
10*2159047fSniklas# the Free Software Foundation; either version 2 of the License, or
11*2159047fSniklas# (at your option) any later version.
12*2159047fSniklas#
13*2159047fSniklas# This program is distributed in the hope that it will be useful,
14*2159047fSniklas# but WITHOUT ANY WARRANTY; without even the implied warranty of
15*2159047fSniklas# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16*2159047fSniklas# GNU General Public License for more details.
17*2159047fSniklas#
18*2159047fSniklas# You should have received a copy of the GNU General Public License
19*2159047fSniklas# along with this program; if not, write to the Free Software
20*2159047fSniklas# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21*2159047fSniklas
22*2159047fSniklas# This file was originally written by K. Richard Pixley.
23*2159047fSniklas
24*2159047fSniklas#
25*2159047fSniklas# Shell script to create proper links to machine-dependent files in
26*2159047fSniklas# preparation for compilation.
27*2159047fSniklas#
28*2159047fSniklas# If configure succeeds, it leaves its status in config.status.
29*2159047fSniklas# If configure fails after disturbing the status quo,
30*2159047fSniklas#       config.status is removed.
31*2159047fSniklas#
32*2159047fSniklas
33*2159047fSniklasexport PATH || (echo "OOPS, this isn't sh.  Desperation time.  I will feed myself to sh."; sh $0 $argv; kill $$)
34*2159047fSniklas
35*2159047fSniklasremove=rm
36*2159047fSniklashard_link=ln
37*2159047fSniklassymbolic_link='ln -s'
38*2159047fSniklas
39*2159047fSniklas#for Test
40*2159047fSniklas#remove="echo rm"
41*2159047fSniklas#hard_link="echo ln"
42*2159047fSniklas#symbolic_link="echo ln -s"
43*2159047fSniklas
44*2159047fSniklas# clear some things potentially inherited from environment.
45*2159047fSniklas
46*2159047fSniklasMakefile=Makefile
47*2159047fSniklasMakefile_in=Makefile.in
48*2159047fSniklasarguments=$*
49*2159047fSniklasbuild_alias=
50*2159047fSniklascache_file=
51*2159047fSniklascache_file_option=
52*2159047fSniklasconfigdirs=
53*2159047fSniklasexec_prefix=
54*2159047fSniklasexec_prefixoption=
55*2159047fSniklasfatal=
56*2159047fSniklasfloating_point=default
57*2159047fSniklasgas=default
58*2159047fSniklashost_alias=NOHOST
59*2159047fSniklashost_makefile_frag=
60*2159047fSniklasmoveifchange=
61*2159047fSniklasnorecursion=
62*2159047fSniklasother_options=
63*2159047fSniklaspackage_makefile_frag=
64*2159047fSniklasprefix=/usr/local
65*2159047fSniklasprogname=
66*2159047fSniklasprogram_prefix=
67*2159047fSniklasprogram_prefixoption=
68*2159047fSniklasprogram_suffix=
69*2159047fSniklasprogram_suffixoption=
70*2159047fSniklasprogram_transform_name=
71*2159047fSniklasprogram_transform_nameoption=
72*2159047fSniklasredirect=">/dev/null"
73*2159047fSniklasremoving=
74*2159047fSniklassite=
75*2159047fSniklassite_makefile_frag=
76*2159047fSniklassite_option=
77*2159047fSniklassrcdir=
78*2159047fSniklassrctrigger=
79*2159047fSniklassubdirs=
80*2159047fSniklastarget_alias=NOTARGET
81*2159047fSniklastarget_makefile_frag=
82*2159047fSniklasundefs=NOUNDEFS
83*2159047fSniklasversion="$Revision: 1.1.1.1 $"
84*2159047fSniklasx11=default
85*2159047fSniklas
86*2159047fSniklas### we might need to use some other shell than /bin/sh for running subshells
87*2159047fSniklas#
88*2159047fSniklasconfig_shell=${CONFIG_SHELL-/bin/sh}
89*2159047fSniklas
90*2159047fSniklasNO_EDIT="This file was generated automatically by configure.  Do not edit."
91*2159047fSniklas
92*2159047fSniklas## this is a little touchy and won't always work, but...
93*2159047fSniklas##
94*2159047fSniklas## if the argv[0] starts with a slash then it is an absolute name that can (and
95*2159047fSniklas## must) be used as is.
96*2159047fSniklas##
97*2159047fSniklas## otherwise, if argv[0] has no slash in it, we can assume that it is on the
98*2159047fSniklas## path.  Since PATH might include "." we also add `pwd` to the end of PATH.
99*2159047fSniklas##
100*2159047fSniklas
101*2159047fSniklasprogname=$0
102*2159047fSniklas# if PWD already has a value, it is probably wrong.
103*2159047fSniklasif [ -n "$PWD" ]; then PWD=`pwd`; fi
104*2159047fSniklas
105*2159047fSniklascase "${progname}" in
106*2159047fSniklas/*) ;;
107*2159047fSniklas*/*) ;;
108*2159047fSniklas*)
109*2159047fSniklas        PATH=$PATH:${PWD=`pwd`} ; export PATH
110*2159047fSniklas        ;;
111*2159047fSniklasesac
112*2159047fSniklas
113*2159047fSniklas# Loop over all args
114*2159047fSniklas
115*2159047fSniklaswhile :
116*2159047fSniklasdo
117*2159047fSniklas
118*2159047fSniklas# Break out if there are no more args
119*2159047fSniklas	case $# in
120*2159047fSniklas	0)
121*2159047fSniklas		break
122*2159047fSniklas		;;
123*2159047fSniklas	esac
124*2159047fSniklas
125*2159047fSniklas# Get the first arg, and shuffle
126*2159047fSniklas	option=$1
127*2159047fSniklas	shift
128*2159047fSniklas
129*2159047fSniklas# Make all options have two hyphens
130*2159047fSniklas	orig_option=$option	# Save original for error messages
131*2159047fSniklas	case $option in
132*2159047fSniklas	--*) ;;
133*2159047fSniklas	-*) option=-$option ;;
134*2159047fSniklas	esac
135*2159047fSniklas
136*2159047fSniklas# Split out the argument for options that take them
137*2159047fSniklas	case $option in
138*2159047fSniklas	--*=*)
139*2159047fSniklas		optarg=`echo $option | sed -e 's/^[^=]*=//'`
140*2159047fSniklas		;;
141*2159047fSniklas# These options have mandatory values.  Since we didn't find an = sign,
142*2159047fSniklas# the value must be in the next argument
143*2159047fSniklas	--b* | --cache* | --ex* | --ho* | --pre* | --program-p* | --program-s* | --program-t* | --si* | --sr* | --ta* | --tm* | --x-*)
144*2159047fSniklas		optarg=$1
145*2159047fSniklas		shift
146*2159047fSniklas		;;
147*2159047fSniklas	esac
148*2159047fSniklas
149*2159047fSniklas# Now, process the options
150*2159047fSniklas	case $option in
151*2159047fSniklas
152*2159047fSniklas	--build* | --b*)
153*2159047fSniklas		case "$build_alias" in
154*2159047fSniklas		"") build_alias=$optarg ;;
155*2159047fSniklas		*) echo '***' Can only configure for one build machine at a time.  1>&2
156*2159047fSniklas		   fatal=yes
157*2159047fSniklas		   ;;
158*2159047fSniklas		esac
159*2159047fSniklas		;;
160*2159047fSniklas	--cache*)
161*2159047fSniklas		cache_file=$optarg
162*2159047fSniklas		;;
163*2159047fSniklas	--disable-*)
164*2159047fSniklas		enableopt=`echo ${option} | sed 's:^--disable-:enable_:;s:-:_:g'`
165*2159047fSniklas		eval $enableopt=no
166*2159047fSniklas		disableoptions="$disableoptions $option"
167*2159047fSniklas		;;
168*2159047fSniklas	--enable-*)
169*2159047fSniklas		case "$option" in
170*2159047fSniklas		*=*)	;;
171*2159047fSniklas		*)	optarg=yes ;;
172*2159047fSniklas		esac
173*2159047fSniklas
174*2159047fSniklas		enableopt=`echo ${option} | sed 's:^--::;s:=.*$::;s:-:_:g'`
175*2159047fSniklas		eval $enableopt="$optarg"
176*2159047fSniklas		enableoptions="$enableoptions $option"
177*2159047fSniklas		;;
178*2159047fSniklas	--exec-prefix* | --ex*)
179*2159047fSniklas		exec_prefix=$optarg
180*2159047fSniklas		exec_prefixoption="--exec-prefix=$optarg"
181*2159047fSniklas		;;
182*2159047fSniklas	--gas | --g*)
183*2159047fSniklas		gas=yes
184*2159047fSniklas		;;
185*2159047fSniklas	--help | --he*)
186*2159047fSniklas		fatal=yes
187*2159047fSniklas		;;
188*2159047fSniklas	--host* | --ho*)
189*2159047fSniklas		case $host_alias in
190*2159047fSniklas		NOHOST) host_alias=$optarg ;;
191*2159047fSniklas		*) echo '***' Can only configure for one host at a time.  1>&2
192*2159047fSniklas		   fatal=yes
193*2159047fSniklas		   ;;
194*2159047fSniklas		esac
195*2159047fSniklas		;;
196*2159047fSniklas	--nfp | --nf*)
197*2159047fSniklas		floating_point=no
198*2159047fSniklas		;;
199*2159047fSniklas	--norecursion | --no*)
200*2159047fSniklas		norecursion=yes
201*2159047fSniklas		;;
202*2159047fSniklas	--prefix* | --pre*)
203*2159047fSniklas		prefix=$optarg
204*2159047fSniklas		prefixoption="--prefix=$optarg"
205*2159047fSniklas		;;
206*2159047fSniklas	--program-prefix* | --program-p*)
207*2159047fSniklas		program_prefix=$optarg
208*2159047fSniklas		program_prefixoption="--program-prefix=$optarg"
209*2159047fSniklas		;;
210*2159047fSniklas	--program-suffix* | --program-s*)
211*2159047fSniklas		program_suffix=$optarg
212*2159047fSniklas		program_suffixoption="--program-suffix=$optarg"
213*2159047fSniklas		;;
214*2159047fSniklas	--program-transform-name* | --program-t*)
215*2159047fSniklas		# Double any backslashes or dollar signs in the argument
216*2159047fSniklas		program_transform_name="${program_transform_name} -e `echo ${optarg} | sed -e 's/\\\\/\\\\\\\\/g' -e 's/\\\$/$$/g'`"
217*2159047fSniklas		program_transform_nameoption="${program_transform_nameoption} --program-transform-name='$optarg'"
218*2159047fSniklas		;;
219*2159047fSniklas	--rm)
220*2159047fSniklas		removing=--rm
221*2159047fSniklas		;;
222*2159047fSniklas	--silent | --sil* | --quiet | --q*)
223*2159047fSniklas		redirect=">/dev/null"
224*2159047fSniklas		verbose=--silent
225*2159047fSniklas		;;
226*2159047fSniklas	--site* | --sit*)
227*2159047fSniklas		site=$optarg
228*2159047fSniklas		site_option="--site=$optarg"
229*2159047fSniklas		;;
230*2159047fSniklas	--srcdir*/ | --sr*/)
231*2159047fSniklas                # Remove trailing slashes.  Otherwise, when the file name gets
232*2159047fSniklas                # bolted into an object file as debug info, it has two slashes
233*2159047fSniklas                # in it.  Ordinarily this is ok, but emacs takes double slash
234*2159047fSniklas                # to mean "forget the first part".
235*2159047fSniklas		srcdir=`echo $optarg | sed -e 's:/$::'`
236*2159047fSniklas		;;
237*2159047fSniklas	--srcdir* | --sr*)
238*2159047fSniklas		srcdir=$optarg
239*2159047fSniklas		;;
240*2159047fSniklas	--target* | --ta*)
241*2159047fSniklas		case $target_alias in
242*2159047fSniklas		NOTARGET) target_alias=$optarg ;;
243*2159047fSniklas		*) echo '***' Can only configure for one target at a time.  1>&2
244*2159047fSniklas		   fatal=yes
245*2159047fSniklas		   ;;
246*2159047fSniklas		esac
247*2159047fSniklas		;;
248*2159047fSniklas	--tmpdir* | --tm*)
249*2159047fSniklas		TMPDIR=$optarg
250*2159047fSniklas		tmpdiroption="--tmpdir=$optarg"
251*2159047fSniklas		;;
252*2159047fSniklas	--verbose | --v | --verb*)
253*2159047fSniklas		redirect=
254*2159047fSniklas		verbose=--verbose
255*2159047fSniklas		;;
256*2159047fSniklas	--version | --V | --vers*)
257*2159047fSniklas		echo "This is Cygnus Configure version" `echo ${version} | sed 's/[ $:]//g'`
258*2159047fSniklas		exit 0
259*2159047fSniklas		;;
260*2159047fSniklas	--with-*)
261*2159047fSniklas		case "$option" in
262*2159047fSniklas		*=*)	;;
263*2159047fSniklas		*)	optarg=yes ;;
264*2159047fSniklas		esac
265*2159047fSniklas
266*2159047fSniklas		withopt=`echo ${option} | sed 's:^--::;s:=.*$::;s:-:_:g'`
267*2159047fSniklas		eval $withopt="$optarg"
268*2159047fSniklas		withoptions="$withoptions $option"
269*2159047fSniklas		;;
270*2159047fSniklas	--without-*)
271*2159047fSniklas		withopt=`echo ${option} | sed 's:^--::;s:out::;s:-:_:g'`
272*2159047fSniklas		eval $withopt=no
273*2159047fSniklas		withoutoptions="$withoutoptions $option"
274*2159047fSniklas		;;
275*2159047fSniklas	--x)	with_x=yes
276*2159047fSniklas		withoptions="$withoptions --with-x"
277*2159047fSniklas		;;
278*2159047fSniklas	--x-i* | --x-l*) other_options="$other_options $orig_option"
279*2159047fSniklas		;;
280*2159047fSniklas	--*)
281*2159047fSniklas		echo "configure: Unrecognized option: \"$orig_option\"; use --help for usage." >&2
282*2159047fSniklas		exit 1
283*2159047fSniklas		;;
284*2159047fSniklas	*)
285*2159047fSniklas		case $undefs in
286*2159047fSniklas		NOUNDEFS) undefs=$option ;;
287*2159047fSniklas		*) echo '***' Can only configure for one host and one target at a time.  1>&2
288*2159047fSniklas		   fatal=yes
289*2159047fSniklas		   ;;
290*2159047fSniklas		esac
291*2159047fSniklas		;;
292*2159047fSniklas	esac
293*2159047fSniklasdone
294*2159047fSniklas
295*2159047fSniklas# process host and target
296*2159047fSniklas
297*2159047fSniklas# Do some error checking and defaulting for the host and target type.
298*2159047fSniklas# The inputs are:
299*2159047fSniklas#    configure --host=HOST --target=TARGET UNDEFS
300*2159047fSniklas#
301*2159047fSniklas# The rules are:
302*2159047fSniklas# 1. You aren't allowed to specify --host, --target, and undefs at the
303*2159047fSniklas#    same time.
304*2159047fSniklas# 2. Host defaults to undefs.
305*2159047fSniklas# 3. If undefs is not specified, then host defaults to the current host,
306*2159047fSniklas#    as determined by config.guess.
307*2159047fSniklas# 4. Target defaults to undefs.
308*2159047fSniklas# 5. If undefs is not specified, then target defaults to host.
309*2159047fSniklas
310*2159047fSniklascase "${fatal}" in
311*2159047fSniklas"")
312*2159047fSniklas	# Make sure that host, target & undefs aren't all specified at the
313*2159047fSniklas	# same time.
314*2159047fSniklas	case $host_alias---$target_alias---$undefs in
315*2159047fSniklas	NOHOST---*---* | *---NOTARGET---* | *---*---NOUNDEFS)
316*2159047fSniklas		;;
317*2159047fSniklas	*) echo '***' Can only configure for one host and one target at a time.  1>&2
318*2159047fSniklas	   fatal=yes
319*2159047fSniklas	   break 2
320*2159047fSniklas		;;
321*2159047fSniklas	esac
322*2159047fSniklas
323*2159047fSniklas	# Now, do defaulting for host.
324*2159047fSniklas	case $host_alias in
325*2159047fSniklas	NOHOST)
326*2159047fSniklas		case $undefs in
327*2159047fSniklas		NOUNDEFS)
328*2159047fSniklas			# Neither --host option nor undefs were present.
329*2159047fSniklas			# Call config.guess.
330*2159047fSniklas			guesssys=`echo ${progname} | sed 's/configure$/config.guess/'`
331*2159047fSniklas			if host_alias=`${guesssys}`
332*2159047fSniklas			then
333*2159047fSniklas				# If the string we are going to use for
334*2159047fSniklas				# the target is a prefix of the string
335*2159047fSniklas				# we just guessed for the host, then
336*2159047fSniklas				# assume we are running native, and force
337*2159047fSniklas				# the same string for both target and host.
338*2159047fSniklas				case $target_alias in
339*2159047fSniklas				NOTARGET) ;;
340*2159047fSniklas				*)
341*2159047fSniklas					if expr $host_alias : $target_alias >/dev/null
342*2159047fSniklas					then
343*2159047fSniklas						host_alias=$target_alias
344*2159047fSniklas					fi
345*2159047fSniklas					;;
346*2159047fSniklas				esac
347*2159047fSniklas				echo "Configuring for a ${host_alias} host." 1>&2
348*2159047fSniklas				arguments="--host=$host_alias $arguments"
349*2159047fSniklas			else
350*2159047fSniklas				echo 'Config.guess failed to determine the host type.  You need to specify one.' 1>&2
351*2159047fSniklas				fatal=yes
352*2159047fSniklas			fi
353*2159047fSniklas			;;
354*2159047fSniklas		*)
355*2159047fSniklas			host_alias=$undefs
356*2159047fSniklas			;;
357*2159047fSniklas		esac
358*2159047fSniklas	esac
359*2159047fSniklas
360*2159047fSniklas	# Do defaulting for target.  If --target option isn't present, default
361*2159047fSniklas	# to undefs.  If undefs isn't present, default to host.
362*2159047fSniklas	case $target_alias in
363*2159047fSniklas	NOTARGET)
364*2159047fSniklas		case $undefs in
365*2159047fSniklas		NOUNDEFS)
366*2159047fSniklas			target_alias=$host_alias
367*2159047fSniklas			;;
368*2159047fSniklas		*)
369*2159047fSniklas			target_alias=$undefs
370*2159047fSniklas			;;
371*2159047fSniklas		esac
372*2159047fSniklas	esac
373*2159047fSniklas	;;
374*2159047fSniklas*) ;;
375*2159047fSniklasesac
376*2159047fSniklas
377*2159047fSniklasif [ -n "${fatal}" -o "${host_alias}" = "help" ] ; then
378*2159047fSniklas	exec 1>&2
379*2159047fSniklas	echo Usage: configure [OPTIONS] [HOST]
380*2159047fSniklas	echo
381*2159047fSniklas	echo Options: [defaults in brackets]
382*2159047fSniklas	echo ' --prefix=MYDIR		 install into MYDIR [/usr/local]'
383*2159047fSniklas	echo ' --exec-prefix=MYDIR	 install host-dependent files into MYDIR [/usr/local]'
384*2159047fSniklas	echo ' --help			 print this message [normal config]'
385*2159047fSniklas	echo ' --build=BUILD		 configure for building on BUILD [BUILD=HOST]'
386*2159047fSniklas	echo ' --host=HOST		 configure for HOST [determined via config.guess]'
387*2159047fSniklas	echo ' --norecursion		 configure this directory only [recurse]'
388*2159047fSniklas	echo ' --program-prefix=FOO	 prepend FOO to installed program names [""]'
389*2159047fSniklas	echo ' --program-suffix=FOO	 append FOO to installed program names [""]'
390*2159047fSniklas	echo ' --program-transform-name=P transform installed names by sed pattern P [""]'
391*2159047fSniklas	echo ' --site=SITE		 configure with site-specific makefile for SITE'
392*2159047fSniklas	echo ' --srcdir=DIR		 find the sources in DIR [. or ..]'
393*2159047fSniklas	echo ' --target=TARGET	 configure for TARGET [TARGET=HOST]'
394*2159047fSniklas	echo ' --tmpdir=TMPDIR	 create temporary files in TMPDIR [/tmp]'
395*2159047fSniklas	echo ' --nfp			 configure for software floating point [hard float]'
396*2159047fSniklas	echo ' --with-FOO, --with-FOO=BAR package FOO is available (parameter BAR)'
397*2159047fSniklas	echo ' --without-FOO		 package FOO is NOT available'
398*2159047fSniklas	echo ' --enable-FOO, --enable-FOO=BAR include feature FOO (parameter BAR)'
399*2159047fSniklas	echo ' --disable-FOO		 do not include feature FOO'
400*2159047fSniklas	echo
401*2159047fSniklas	echo 'Where HOST and TARGET are something like "sparc-sunos", "mips-sgi-irix5", etc.'
402*2159047fSniklas	echo
403*2159047fSniklas	if [ -r config.status ] ; then
404*2159047fSniklas		cat config.status
405*2159047fSniklas	fi
406*2159047fSniklas
407*2159047fSniklas	exit 1
408*2159047fSniklasfi
409*2159047fSniklas
410*2159047fSniklasconfigsub=`echo ${progname} | sed 's/configure$/config.sub/'`
411*2159047fSniklasmoveifchange=`echo ${progname} | sed 's/configure$/move-if-change/'`
412*2159047fSniklas
413*2159047fSniklas# this is a hack.  sun4 must always be a valid host alias or this will fail.
414*2159047fSniklasif ${configsub} sun4 >/dev/null 2>&1 ; then
415*2159047fSniklas        true
416*2159047fSniklaselse
417*2159047fSniklas        echo '***' cannot find config.sub.  1>&2
418*2159047fSniklas        exit 1
419*2159047fSniklasfi
420*2159047fSniklas
421*2159047fSniklastouch config.junk
422*2159047fSniklasif ${moveifchange} config.junk config.trash ; then
423*2159047fSniklas        true
424*2159047fSniklaselse
425*2159047fSniklas        echo '***' cannot find move-if-change.  1>&2
426*2159047fSniklas        exit 1
427*2159047fSniklasfi
428*2159047fSniklasrm -f config.junk config.trash
429*2159047fSniklas
430*2159047fSniklascase "${srcdir}" in
431*2159047fSniklas"")
432*2159047fSniklas        if [ -r configure.in ] ; then
433*2159047fSniklas                srcdir=.
434*2159047fSniklas        else
435*2159047fSniklas                if [ -r ${progname}.in ] ; then
436*2159047fSniklas                        srcdir=`echo ${progname} | sed 's:/configure$::'`
437*2159047fSniklas                else
438*2159047fSniklas                        echo '***' "Can't find configure.in.  Try using --srcdir=some_dir"  1>&2
439*2159047fSniklas                        exit 1
440*2159047fSniklas                fi
441*2159047fSniklas        fi
442*2159047fSniklas        ;;
443*2159047fSniklas*)
444*2159047fSniklas	# Set srcdir to "." if that's what it is.
445*2159047fSniklas	# This is important for multilib support.
446*2159047fSniklas	if [ ! -d ${srcdir} ] ; then
447*2159047fSniklas		echo "Invalid source directory ${srcdir}" >&2
448*2159047fSniklas		exit 1
449*2159047fSniklas	fi
450*2159047fSniklas	pwd=`pwd`
451*2159047fSniklas	srcpwd=`cd ${srcdir} ; pwd`
452*2159047fSniklas	if [ "${pwd}" = "${srcpwd}" ] ; then
453*2159047fSniklas		srcdir=.
454*2159047fSniklas	fi
455*2159047fSniklasesac
456*2159047fSniklas
457*2159047fSniklas### warn about some conflicting configurations.
458*2159047fSniklas
459*2159047fSniklascase "${srcdir}" in
460*2159047fSniklas".") ;;
461*2159047fSniklas*)
462*2159047fSniklas        if [ -f ${srcdir}/config.status ] ; then
463*2159047fSniklas                echo '***' Cannot configure here in \"${PWD=`pwd`}\" when \"${srcdir}\" is currently configured. 1>&2
464*2159047fSniklas                exit 1
465*2159047fSniklas        fi
466*2159047fSniklasesac
467*2159047fSniklas
468*2159047fSniklas# default exec_prefix
469*2159047fSniklascase "${exec_prefixoption}" in
470*2159047fSniklas"") exec_prefix="\$(prefix)" ;;
471*2159047fSniklas*) ;;
472*2159047fSniklasesac
473*2159047fSniklas
474*2159047fSniklas### break up ${srcdir}/configure.in.
475*2159047fSniklascase "`grep '^# per\-host:' ${srcdir}/configure.in`" in
476*2159047fSniklas"")
477*2159047fSniklas        echo '***' ${srcdir}/configure.in has no \"per-host:\" line. 1>&2
478*2159047fSniklas	# Check for a directory that's been converted to use autoconf since
479*2159047fSniklas	# it was last configured.
480*2159047fSniklas	if grep AC_OUTPUT ${srcdir}/configure.in >/dev/null ; then
481*2159047fSniklas	  echo '***' Hmm, looks like this directory has been autoconfiscated. 1>&2
482*2159047fSniklas	  if [ -r ${srcdir}/configure ] ; then
483*2159047fSniklas	    echo '***' Running the local configure script. 1>&2
484*2159047fSniklas	    case "${cache_file}" in
485*2159047fSniklas	    "") cache_file_option= ;;
486*2159047fSniklas	    *)  cache_file_option="--cache-file=${cache_file}" ;;
487*2159047fSniklas	    esac
488*2159047fSniklas	    srcdiroption="--srcdir=${srcdir}"
489*2159047fSniklas	    case "${build_alias}" in
490*2159047fSniklas	    "") buildopt= ;;
491*2159047fSniklas	    *)  buildopt="--build=${build_alias}" ;;
492*2159047fSniklas	    esac
493*2159047fSniklas	    eval exec ${config_shell} ${srcdir}/configure ${verbose} \
494*2159047fSniklas		${buildopt} --host=${host_alias} --target=${target_alias} \
495*2159047fSniklas		${prefixoption} ${tmpdiroption} ${exec_prefixoption} \
496*2159047fSniklas		${srcdiroption} \
497*2159047fSniklas		${program_prefixoption} ${program_suffixoption} \
498*2159047fSniklas		${program_transform_nameoption} ${site_option} \
499*2159047fSniklas		${withoptions} ${withoutoptions} \
500*2159047fSniklas		${enableoptions} ${disableoptions} \
501*2159047fSniklas		${cache_file_option} ${removing} ${other_options} ${redirect}
502*2159047fSniklas	  else
503*2159047fSniklas	    echo '***' There is no configure script present though. 1>&2
504*2159047fSniklas	  fi
505*2159047fSniklas	fi
506*2159047fSniklas        exit 1
507*2159047fSniklas        ;;
508*2159047fSniklas*) ;;
509*2159047fSniklasesac
510*2159047fSniklas
511*2159047fSniklascase "`grep '^# per\-target:' ${srcdir}/configure.in`" in
512*2159047fSniklas"")
513*2159047fSniklas        echo '***' ${srcdir}/configure.in has no \"per-target:\" line. 1>&2
514*2159047fSniklas        exit 1
515*2159047fSniklas        ;;
516*2159047fSniklas*) ;;
517*2159047fSniklasesac
518*2159047fSniklas
519*2159047fSniklascase "${TMPDIR}" in
520*2159047fSniklas"") TMPDIR=/tmp ; export TMPDIR ;;
521*2159047fSniklas*) ;;
522*2159047fSniklasesac
523*2159047fSniklas
524*2159047fSniklas# keep this filename short for &%*%$*# 14 char file names
525*2159047fSniklastmpfile=${TMPDIR}/cONf$$
526*2159047fSniklas# Note that under many versions of sh a trap handler for 0 will *override* any
527*2159047fSniklas# exit status you explicitly specify!  At this point, the only non-error exit
528*2159047fSniklas# is at the end of the script; these actions are duplicated there, minus
529*2159047fSniklas# the "exit 1".  Don't use "exit 0" anywhere after this without resetting the
530*2159047fSniklas# trap handler, or you'll lose.
531*2159047fSniklastrap "rm -f Makefile.tem ${tmpfile}.com ${tmpfile}.tgt ${tmpfile}.hst ${tmpfile}.pos; exit 1" 0 1 2 15
532*2159047fSniklas
533*2159047fSniklas# split ${srcdir}/configure.in into common, per-host, per-target,
534*2159047fSniklas# and post-target parts.  Post-target is optional.
535*2159047fSniklassed -e '/^# per\-host:/,$d' ${srcdir}/configure.in > ${tmpfile}.com
536*2159047fSniklassed -e '1,/^# per\-host:/d' -e '/^# per\-target:/,$d' ${srcdir}/configure.in > ${tmpfile}.hst
537*2159047fSniklasif grep '^# post-target:' ${srcdir}/configure.in >/dev/null ; then
538*2159047fSniklas  sed -e '1,/^# per\-target:/d' -e '/^# post\-target:/,$d' ${srcdir}/configure.in > ${tmpfile}.tgt
539*2159047fSniklas  sed -e '1,/^# post\-target:/d' ${srcdir}/configure.in > ${tmpfile}.pos
540*2159047fSniklaselse
541*2159047fSniklas  sed -e '1,/^# per\-target:/d' ${srcdir}/configure.in > ${tmpfile}.tgt
542*2159047fSniklas  echo >${tmpfile}.pos
543*2159047fSniklasfi
544*2159047fSniklas
545*2159047fSniklas### do common part of configure.in
546*2159047fSniklas
547*2159047fSniklas. ${tmpfile}.com
548*2159047fSniklas
549*2159047fSniklas# some sanity checks on configure.in
550*2159047fSniklascase "${srctrigger}" in
551*2159047fSniklas"")
552*2159047fSniklas        echo '***' srctrigger not set in ${PWD=`pwd`}/configure.in.  1>&2
553*2159047fSniklas        exit 1
554*2159047fSniklas        ;;
555*2159047fSniklas*) ;;
556*2159047fSniklasesac
557*2159047fSniklas
558*2159047fSniklascase "${build_alias}" in
559*2159047fSniklas"")
560*2159047fSniklas	if result=`${config_shell} ${configsub} ${host_alias}` ; then
561*2159047fSniklas	    build_cpu=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'`
562*2159047fSniklas	    build_vendor=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'`
563*2159047fSniklas	    build_os=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'`
564*2159047fSniklas	    build=${build_cpu}-${build_vendor}-${build_os}
565*2159047fSniklas	    build_alias=${host_alias}
566*2159047fSniklas	fi
567*2159047fSniklas	;;
568*2159047fSniklas*)
569*2159047fSniklas	if result=`${config_shell} ${configsub} ${build_alias}` ; then
570*2159047fSniklas	    buildopt="--build=${build_alias}"
571*2159047fSniklas	    build_cpu=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'`
572*2159047fSniklas	    build_vendor=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'`
573*2159047fSniklas	    build_os=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'`
574*2159047fSniklas	    build=${build_cpu}-${build_vendor}-${build_os}
575*2159047fSniklas	else
576*2159047fSniklas	    echo "Unrecognized build system name ${build_alias}." 1>&2
577*2159047fSniklas	    exit 1
578*2159047fSniklas	fi
579*2159047fSniklas	;;
580*2159047fSniklasesac
581*2159047fSniklas
582*2159047fSniklasif result=`${config_shell} ${configsub} ${host_alias}` ; then
583*2159047fSniklas    true
584*2159047fSniklaselse
585*2159047fSniklas    echo "Unrecognized host system name ${host_alias}." 1>&2
586*2159047fSniklas    exit 1
587*2159047fSniklasfi
588*2159047fSniklashost_cpu=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'`
589*2159047fSniklashost_vendor=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'`
590*2159047fSniklashost_os=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'`
591*2159047fSniklashost=${host_cpu}-${host_vendor}-${host_os}
592*2159047fSniklas
593*2159047fSniklas. ${tmpfile}.hst
594*2159047fSniklas
595*2159047fSniklasif result=`${config_shell} ${configsub} ${target_alias}` ; then
596*2159047fSniklas    true
597*2159047fSniklaselse
598*2159047fSniklas    echo "Unrecognized target system name ${target_alias}." 1>&2
599*2159047fSniklas    exit 1
600*2159047fSniklasfi
601*2159047fSniklastarget_cpu=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'`
602*2159047fSniklastarget_vendor=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'`
603*2159047fSniklastarget_os=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'`
604*2159047fSniklastarget=${target_cpu}-${target_vendor}-${target_os}
605*2159047fSniklas
606*2159047fSniklas. ${tmpfile}.tgt
607*2159047fSniklas
608*2159047fSniklas# Find the source files, if location was not specified.
609*2159047fSniklascase "${srcdir}" in
610*2159047fSniklas"")
611*2159047fSniklas        srcdirdefaulted=1
612*2159047fSniklas        srcdir=.
613*2159047fSniklas        if [ ! -r ${srctrigger} ] ; then
614*2159047fSniklas                srcdir=..
615*2159047fSniklas        fi
616*2159047fSniklas        ;;
617*2159047fSniklas*) ;;
618*2159047fSniklasesac
619*2159047fSniklas
620*2159047fSniklasif [ ! -r ${srcdir}/${srctrigger} ] ; then
621*2159047fSniklas        case "${srcdirdefaulted}" in
622*2159047fSniklas        "") echo '***' "${progname}: Can't find ${srcname} sources in ${PWD=`pwd`}/${srcdir}" 1>&2 ;;
623*2159047fSniklas        *)  echo '***' "${progname}: Can't find ${srcname} sources in ${PWD=`pwd`}/. or ${PWD=`pwd`}/.." 1>&2 ;;
624*2159047fSniklas        esac
625*2159047fSniklas
626*2159047fSniklas        echo '***' \(At least ${srctrigger} is missing.\) 1>&2
627*2159047fSniklas        exit 1
628*2159047fSniklasfi
629*2159047fSniklas
630*2159047fSniklas# Some systems (e.g., one of the i386-aix systems the gas testers are
631*2159047fSniklas# using) don't handle "\$" correctly, so don't use it here.
632*2159047fSniklastooldir='$(exec_prefix)'/${target_alias}
633*2159047fSniklas
634*2159047fSniklasif [ "${host_alias}" != "${target_alias}" ] ; then
635*2159047fSniklas    if [ "${program_prefixoption}" = "" ] ; then
636*2159047fSniklas        if [ "${program_suffixoption}" = "" ] ; then
637*2159047fSniklas            if [ "${program_transform_nameoption}" = "" ] ; then
638*2159047fSniklas                program_prefix=${target_alias}- ;
639*2159047fSniklas            fi
640*2159047fSniklas        fi
641*2159047fSniklas    fi
642*2159047fSniklasfi
643*2159047fSniklas
644*2159047fSniklas# Merge program_prefix and program_suffix onto program_transform_name.
645*2159047fSniklas# (program_suffix used to use $, but it's hard to preserve $ through both
646*2159047fSniklas# make and sh.)
647*2159047fSniklasif [ "${program_suffix}" != "" ] ; then
648*2159047fSniklas    program_transform_name="-e s,\\\\(.*\\\\),\\\\1${program_suffix}, ${program_transform_name}"
649*2159047fSniklasfi
650*2159047fSniklas
651*2159047fSniklasif [ "${program_prefix}" != "" ] ; then
652*2159047fSniklas    program_transform_name="-e s,^,${program_prefix}, ${program_transform_name}"
653*2159047fSniklasfi
654*2159047fSniklas
655*2159047fSniklas# If CC and CXX are not set in the environment, and the Makefile
656*2159047fSniklas# exists, try to extract them from it.  This is to handle running
657*2159047fSniklas# ./config.status by hand.
658*2159047fSniklasif [ -z "${CC}" -a -r Makefile ]; then
659*2159047fSniklas  sed -n -e ':loop
660*2159047fSniklas/\\$/ N
661*2159047fSniklas/\\$/ b loop
662*2159047fSniklass/\\\n//g
663*2159047fSniklas/^CC[ 	]*=/ s/CC[ 	]*=[ 	]*\(.*\)/\1/p' < Makefile > Makefile.cc
664*2159047fSniklas  CC=`tail -1 Makefile.cc`
665*2159047fSniklas  rm -f Makefile.cc
666*2159047fSniklasfi
667*2159047fSniklas
668*2159047fSniklasif [ -z "${CXX}" -a -r Makefile ]; then
669*2159047fSniklas  sed -n -e ':loop
670*2159047fSniklas/\\$/ N
671*2159047fSniklas/\\$/ b loop
672*2159047fSniklass/\\\n//g
673*2159047fSniklas/^CXX[ 	]*=/ s/CXX[ 	]*=[ 	]*\(.*\)/\1/p' < Makefile > Makefile.cc
674*2159047fSniklas  CXX=`tail -1 Makefile.cc`
675*2159047fSniklas  rm -f Makefile.cc
676*2159047fSniklasfi
677*2159047fSniklas
678*2159047fSniklasif [ "${build}" != "${host}" ]; then
679*2159047fSniklas  # If we are doing a Canadian Cross, in which the host and build systems
680*2159047fSniklas  # are not the same, we set reasonable default values for the tools.
681*2159047fSniklas
682*2159047fSniklas  tools="AR AR_FOR_TARGET AS AS_FOR_TARGET BISON CC_FOR_BUILD"
683*2159047fSniklas  tools="${tools} CC_FOR_TARGET CXX_FOR_TARGET HOST_PREFIX"
684*2159047fSniklas  tools="${tools} HOST_PREFIX_1 LD LD_FOR_TARGET LEX MAKEINFO NM"
685*2159047fSniklas  tools="${tools} NM_FOR_TARGET RANLIB RANLIB_FOR_TARGET"
686*2159047fSniklas
687*2159047fSniklas  for var in ${tools}; do
688*2159047fSniklas    if [ -z "`eval 'echo $'"${var}"`" -a -r Makefile ]; then
689*2159047fSniklas      sed -n -e ':loop
690*2159047fSniklas/\\$/ N
691*2159047fSniklas/\\$/ b loop
692*2159047fSniklass/\\\n//g
693*2159047fSniklas/^'"${var}"'[ 	]*=/ s/'"${var}"'[ 	]*=[ 	]*\(.*\)/\1/p' \
694*2159047fSniklas	< Makefile > Makefile.v
695*2159047fSniklas      t=`tail -1 Makefile.v`
696*2159047fSniklas      if [ -n "${t}" ]; then
697*2159047fSniklas	eval "${var}='${t}'"
698*2159047fSniklas      fi
699*2159047fSniklas      rm -f Makefile.v
700*2159047fSniklas    fi
701*2159047fSniklas  done
702*2159047fSniklas
703*2159047fSniklas  AR=${AR-${host_alias}-ar}
704*2159047fSniklas  AR_FOR_TARGET=${AR_FOR_TARGET-${target_alias}-ar}
705*2159047fSniklas  AS=${AS-${host_alias}-as}
706*2159047fSniklas  AS_FOR_TARGET=${AS_FOR_TARGET-${target_alias}-as}
707*2159047fSniklas  CC=${CC-${host_alias}-gcc}
708*2159047fSniklas  CXX=${CXX-${host_alias}-gcc}
709*2159047fSniklas  CC_FOR_BUILD=${CC_FOR_BUILD-gcc}
710*2159047fSniklas  CC_FOR_TARGET=${CC_FOR_TARGET-${target_alias}-gcc}
711*2159047fSniklas  CXX_FOR_TARGET=${CXX_FOR_TARGET-${target_alias}-gcc}
712*2159047fSniklas  HOST_PREFIX=${build_alias}-
713*2159047fSniklas  HOST_PREFIX_1=${build_alias}-
714*2159047fSniklas  LD=${LD-${host_alias}-ld}
715*2159047fSniklas  LD_FOR_TARGET=${LD_FOR_TARGET-${target_alias}-ld}
716*2159047fSniklas  MAKEINFO=${MAKEINFO-makeinfo}
717*2159047fSniklas  NM=${NM-${host_alias}-nm}
718*2159047fSniklas  NM_FOR_TARGET=${NM_FOR_TARGET-${target_alias}-nm}
719*2159047fSniklas  RANLIB=${RANLIB-${host_alias}-ranlib}
720*2159047fSniklas  RANLIB_FOR_TARGET=${RANLIB_FOR_TARGET-${target_alias}-ranlib}
721*2159047fSniklas
722*2159047fSniklas  if [ -z "${BISON}" ]; then
723*2159047fSniklas    IFS="${IFS= 	}"; save_ifs="$IFS"; IFS="${IFS}:"
724*2159047fSniklas    for dir in $PATH; do
725*2159047fSniklas      test -z "$dir" && dir=.
726*2159047fSniklas      if test -f $dir/byacc; then
727*2159047fSniklas	BISON=byacc
728*2159047fSniklas	break
729*2159047fSniklas      fi
730*2159047fSniklas      if test -f $dir/bison; then
731*2159047fSniklas	BISON=bison
732*2159047fSniklas	break
733*2159047fSniklas      fi
734*2159047fSniklas      if test -f $dir/yacc; then
735*2159047fSniklas	BISON=yacc
736*2159047fSniklas	break
737*2159047fSniklas      fi
738*2159047fSniklas    done
739*2159047fSniklas    IFS="$save_ifs"
740*2159047fSniklas    BISON=${BISON-bison}
741*2159047fSniklas  fi
742*2159047fSniklas
743*2159047fSniklas  if [ -z "${LEX}" ]; then
744*2159047fSniklas    IFS="${IFS= 	}"; save_ifs="$IFS"; IFS="${IFS}:"
745*2159047fSniklas    for dir in $PATH; do
746*2159047fSniklas      test -z "$dir" && dir=.
747*2159047fSniklas      if test -f $dir/flex; then
748*2159047fSniklas	LEX=flex
749*2159047fSniklas	break
750*2159047fSniklas      fi
751*2159047fSniklas      if test -f $dir/lex; then
752*2159047fSniklas	LEX=lex
753*2159047fSniklas	break
754*2159047fSniklas      fi
755*2159047fSniklas    done
756*2159047fSniklas    IFS="$save_ifs"
757*2159047fSniklas    LEX=${LEX-flex}
758*2159047fSniklas  fi
759*2159047fSniklas
760*2159047fSniklas  # Export variables which autoconf might try to set.
761*2159047fSniklas  export AS
762*2159047fSniklas  export AR
763*2159047fSniklas  export CC_FOR_BUILD
764*2159047fSniklas  export LD
765*2159047fSniklas  export NM
766*2159047fSniklas  export RANLIB
767*2159047fSniklaselse
768*2159047fSniklas  # If CC is still not set, try to get gcc.
769*2159047fSniklas  if [ -z "${CC}" ]; then
770*2159047fSniklas    IFS="${IFS= 	}"; save_ifs="$IFS"; IFS="${IFS}:"
771*2159047fSniklas    for dir in $PATH; do
772*2159047fSniklas      test -z "$dir" && dir=.
773*2159047fSniklas      if test -f $dir/gcc; then
774*2159047fSniklas	CC="gcc -O2"
775*2159047fSniklas	break
776*2159047fSniklas      fi
777*2159047fSniklas    done
778*2159047fSniklas    IFS="$save_ifs"
779*2159047fSniklas    CC=${CC-cc}
780*2159047fSniklas  fi
781*2159047fSniklas
782*2159047fSniklas  CXX=${CXX-"gcc"}
783*2159047fSniklasfi
784*2159047fSniklas
785*2159047fSniklasexport CC
786*2159047fSniklasexport CXX
787*2159047fSniklas
788*2159047fSniklasfor subdir in . ${subdirs} ; do
789*2159047fSniklas
790*2159047fSniklas    # ${subdir} is relative path from . to the directory we're currently
791*2159047fSniklas    # configuring.
792*2159047fSniklas    # ${invsubdir} is inverse of ${subdir), *with* trailing /, if needed.
793*2159047fSniklas    invsubdir=`echo ${subdir}/ | sed -e 's|\./||g' -e 's|[^/]*/|../|g'`
794*2159047fSniklas
795*2159047fSniklas    ### figure out what to do with srcdir
796*2159047fSniklas    case "${srcdir}" in
797*2159047fSniklas        ".")  # no -srcdir option.  We're building in place.
798*2159047fSniklas                makesrcdir=. ;;
799*2159047fSniklas        /*) # absolute path
800*2159047fSniklas                makesrcdir=`echo ${srcdir}/${subdir} | sed -e 's|/\.$||'`
801*2159047fSniklas                ;;
802*2159047fSniklas        *) # otherwise relative
803*2159047fSniklas                case "${subdir}" in
804*2159047fSniklas                .) makesrcdir=${srcdir} ;;
805*2159047fSniklas                *) makesrcdir=${invsubdir}${srcdir}/${subdir} ;;
806*2159047fSniklas                esac
807*2159047fSniklas                ;;
808*2159047fSniklas    esac
809*2159047fSniklas
810*2159047fSniklas    if [ "${subdir}/" != "./" ] ; then
811*2159047fSniklas        Makefile=${subdir}/Makefile
812*2159047fSniklas    fi
813*2159047fSniklas
814*2159047fSniklas    if [ ! -d ${subdir} ] ; then
815*2159047fSniklas        if mkdir ${subdir} ; then
816*2159047fSniklas                true
817*2159047fSniklas        else
818*2159047fSniklas                echo '***' "${progname}: could not make ${PWD=`pwd`}/${subdir}" 1>&2
819*2159047fSniklas                exit 1
820*2159047fSniklas        fi
821*2159047fSniklas    fi
822*2159047fSniklas
823*2159047fSniklas    case "${removing}" in
824*2159047fSniklas    "")
825*2159047fSniklas        case "${subdir}" in
826*2159047fSniklas        .) ;;
827*2159047fSniklas        *) eval echo Building in ${subdir} ${redirect} ;;
828*2159047fSniklas        esac
829*2159047fSniklas
830*2159047fSniklas        # FIXME Should this be done recursively ??? (Useful for e.g. gdbtest)
831*2159047fSniklas        # Set up the list of links to be made.
832*2159047fSniklas        # ${links} is the list of link names, and ${files} is the list of names to link to.
833*2159047fSniklas
834*2159047fSniklas        # Make the links.
835*2159047fSniklas        configlinks="${links}"
836*2159047fSniklas        if [ -r ${subdir}/config.status ] ; then
837*2159047fSniklas                mv -f ${subdir}/config.status ${subdir}/config.back
838*2159047fSniklas        fi
839*2159047fSniklas        while [ -n "${files}" ] ; do
840*2159047fSniklas                # set file to car of files, files to cdr of files
841*2159047fSniklas                set ${files}; file=$1; shift; files=$*
842*2159047fSniklas                set ${links}; link=$1; shift; links=$*
843*2159047fSniklas
844*2159047fSniklas                if [ ! -r ${srcdir}/${file} ] ; then
845*2159047fSniklas                        echo '***' "${progname}: cannot create a link \"${link}\"," 1>&2
846*2159047fSniklas                        echo '***' "since the file \"${srcdir}/${file}\" does not exist." 1>&2
847*2159047fSniklas                        exit 1
848*2159047fSniklas                fi
849*2159047fSniklas
850*2159047fSniklas                ${remove} -f ${link}
851*2159047fSniklas		# Make a symlink if possible, otherwise try a hard link
852*2159047fSniklas		if ${symbolic_link} ${srcdir}/${file} ${link} >/dev/null 2>&1 ; then
853*2159047fSniklas			true
854*2159047fSniklas		else
855*2159047fSniklas			# We need to re-remove the file because Lynx leaves a
856*2159047fSniklas			# very strange directory there when it fails an NFS symlink.
857*2159047fSniklas			${remove} -r -f ${link}
858*2159047fSniklas			${hard_link} ${srcdir}/${file} ${link}
859*2159047fSniklas		fi
860*2159047fSniklas                if [ ! -r ${link} ] ; then
861*2159047fSniklas                        echo '***' "${progname}: unable to link \"${link}\" to \"${srcdir}/${file}\"." 1>&2
862*2159047fSniklas                        exit 1
863*2159047fSniklas                fi
864*2159047fSniklas
865*2159047fSniklas                echo "Linked \"${link}\" to \"${srcdir}/${file}\"."
866*2159047fSniklas        done
867*2159047fSniklas
868*2159047fSniklas        # Create a .gdbinit file which runs the one in srcdir
869*2159047fSniklas        # and tells GDB to look there for source files.
870*2159047fSniklas
871*2159047fSniklas        if [ -r ${srcdir}/${subdir}/.gdbinit ] ; then
872*2159047fSniklas                case ${srcdir} in
873*2159047fSniklas                .) ;;
874*2159047fSniklas                *) cat > ${subdir}/.gdbinit <<EOF
875*2159047fSniklas# ${NO_EDIT}
876*2159047fSniklasdir ${makesrcdir}
877*2159047fSniklasdir .
878*2159047fSniklassource ${makesrcdir}/.gdbinit
879*2159047fSniklasEOF
880*2159047fSniklas                        ;;
881*2159047fSniklas                esac
882*2159047fSniklas        fi
883*2159047fSniklas
884*2159047fSniklas        # Install a makefile, and make it set VPATH
885*2159047fSniklas        # if necessary so that the sources are found.
886*2159047fSniklas        # Also change its value of srcdir.
887*2159047fSniklas        # NOTE: Makefile generation constitutes the majority of the time in configure.  Hence, this section has
888*2159047fSniklas        # been somewhat optimized and is perhaps a bit twisty.
889*2159047fSniklas
890*2159047fSniklas        # code is order so as to try to sed the smallest input files we know.
891*2159047fSniklas
892*2159047fSniklas        # the four makefile fragments MUST end up in the resulting Makefile in this order:
893*2159047fSniklas        # package, target, host, and site.  so do these separately because I don't trust the
894*2159047fSniklas        #  order of sed -e expressions.
895*2159047fSniklas
896*2159047fSniklas        if [ -f ${srcdir}/${subdir}/${Makefile_in} ] ; then
897*2159047fSniklas
898*2159047fSniklas            # Conditionalize for this site from "Makefile.in" (or whatever it's called) into Makefile.tem
899*2159047fSniklas            rm -f ${subdir}/Makefile.tem
900*2159047fSniklas              case "${site}" in
901*2159047fSniklas              "") cp ${srcdir}/${subdir}/${Makefile_in} ${subdir}/Makefile.tem ;;
902*2159047fSniklas              *)
903*2159047fSniklas                      site_makefile_frag=${srcdir}/config/ms-${site}
904*2159047fSniklas
905*2159047fSniklas                      if [ -f ${site_makefile_frag} ] ; then
906*2159047fSniklas                              sed -e "/^####/  r ${site_makefile_frag}" ${srcdir}/${subdir}/${Makefile_in} \
907*2159047fSniklas                                      > ${subdir}/Makefile.tem
908*2159047fSniklas                      else
909*2159047fSniklas                              cp ${srcdir}/${subdir}/${Makefile_in} ${subdir}/Makefile.tem
910*2159047fSniklas                              site_makefile_frag=
911*2159047fSniklas                      fi
912*2159047fSniklas                      ;;
913*2159047fSniklas            esac
914*2159047fSniklas            # working copy now in ${subdir}/Makefile.tem
915*2159047fSniklas
916*2159047fSniklas            # Conditionalize the makefile for this host.
917*2159047fSniklas            rm -f ${Makefile}
918*2159047fSniklas            case "${host_makefile_frag}" in
919*2159047fSniklas              "") mv ${subdir}/Makefile.tem ${Makefile} ;;
920*2159047fSniklas              *)
921*2159047fSniklas                      if [ ! -f ${host_makefile_frag} ] ; then
922*2159047fSniklas                              host_makefile_frag=${srcdir}/${host_makefile_frag}
923*2159047fSniklas                      fi
924*2159047fSniklas                      if [ -f ${host_makefile_frag} ] ; then
925*2159047fSniklas                              sed -e "/^####/  r ${host_makefile_frag}" ${subdir}/Makefile.tem > ${Makefile}
926*2159047fSniklas                      else
927*2159047fSniklas                              echo '***' Expected host makefile fragment \"${host_makefile_frag}\" 1>&2
928*2159047fSniklas                              echo '***' is missing in ${PWD=`pwd`}. 1>&2
929*2159047fSniklas                              mv ${subdir}/Makefile.tem ${Makefile}
930*2159047fSniklas                      fi
931*2159047fSniklas            esac
932*2159047fSniklas            # working copy now in ${Makefile}
933*2159047fSniklas
934*2159047fSniklas            # Conditionalize the makefile for this target.
935*2159047fSniklas            rm -f ${subdir}/Makefile.tem
936*2159047fSniklas            case "${target_makefile_frag}" in
937*2159047fSniklas              "") mv ${Makefile} ${subdir}/Makefile.tem ;;
938*2159047fSniklas              *)
939*2159047fSniklas                      if [ ! -f ${target_makefile_frag} ] ; then
940*2159047fSniklas                              target_makefile_frag=${srcdir}/${target_makefile_frag}
941*2159047fSniklas                      fi
942*2159047fSniklas                      if [ -f ${target_makefile_frag} ] ; then
943*2159047fSniklas                              sed -e "/^####/  r ${target_makefile_frag}" ${Makefile} > ${subdir}/Makefile.tem
944*2159047fSniklas                      else
945*2159047fSniklas                              mv ${Makefile} ${subdir}/Makefile.tem
946*2159047fSniklas                              target_makefile_frag=
947*2159047fSniklas                      fi
948*2159047fSniklas                      ;;
949*2159047fSniklas            esac
950*2159047fSniklas            # real copy now in ${subdir}/Makefile.tem
951*2159047fSniklas
952*2159047fSniklas            # Conditionalize the makefile for this package.
953*2159047fSniklas            rm -f ${Makefile}
954*2159047fSniklas            case "${package_makefile_frag}" in
955*2159047fSniklas              "") mv ${subdir}/Makefile.tem ${Makefile} ;;
956*2159047fSniklas              *)
957*2159047fSniklas                      if [ ! -f ${package_makefile_frag} ] ; then
958*2159047fSniklas                              package_makefile_frag=${srcdir}/${package_makefile_frag}
959*2159047fSniklas                      fi
960*2159047fSniklas                      if [ -f ${package_makefile_frag} ] ; then
961*2159047fSniklas                              sed -e "/^####/  r ${package_makefile_frag}" ${subdir}/Makefile.tem > ${Makefile}
962*2159047fSniklas			      rm -f ${subdir}/Makefile.tem
963*2159047fSniklas                      else
964*2159047fSniklas                              echo '***' Expected package makefile fragment \"${package_makefile_frag}\" 1>&2
965*2159047fSniklas                              echo '***' is missing in ${PWD=`pwd`}. 1>&2
966*2159047fSniklas                              mv ${subdir}/Makefile.tem ${Makefile}
967*2159047fSniklas                      fi
968*2159047fSniklas            esac
969*2159047fSniklas            # working copy now in ${Makefile}
970*2159047fSniklas
971*2159047fSniklas            mv ${Makefile} ${subdir}/Makefile.tem
972*2159047fSniklas
973*2159047fSniklas            # real copy now in ${subdir}/Makefile.tem
974*2159047fSniklas
975*2159047fSniklas            # prepend warning about editting, and a bunch of variables.
976*2159047fSniklas            rm -f ${Makefile}
977*2159047fSniklas            cat > ${Makefile} <<EOF
978*2159047fSniklas# ${NO_EDIT}
979*2159047fSniklasVPATH = ${makesrcdir}
980*2159047fSniklaslinks = ${configlinks}
981*2159047fSniklashost_alias = ${host_alias}
982*2159047fSniklashost_cpu = ${host_cpu}
983*2159047fSniklashost_vendor = ${host_vendor}
984*2159047fSniklashost_os = ${host_os}
985*2159047fSniklashost_canonical = ${host_cpu}-${host_vendor}-${host_os}
986*2159047fSniklastarget_alias = ${target_alias}
987*2159047fSniklastarget_cpu = ${target_cpu}
988*2159047fSniklastarget_vendor = ${target_vendor}
989*2159047fSniklastarget_os = ${target_os}
990*2159047fSniklastarget_canonical = ${target_cpu}-${target_vendor}-${target_os}
991*2159047fSniklasEOF
992*2159047fSniklas	    case "${build}" in
993*2159047fSniklas	      "") ;;
994*2159047fSniklas	      *)  cat >> ${Makefile} << EOF
995*2159047fSniklasbuild_alias = ${build_alias}
996*2159047fSniklasbuild_cpu = ${build_cpu}
997*2159047fSniklasbuild_vendor = ${build_vendor}
998*2159047fSniklasbuild_os = ${build_os}
999*2159047fSniklasbuild_canonical = ${build_cpu}-${build_vendor}-${build_os}
1000*2159047fSniklasEOF
1001*2159047fSniklas	    esac
1002*2159047fSniklas
1003*2159047fSniklas            case "${package_makefile_frag}" in
1004*2159047fSniklas              "") ;;
1005*2159047fSniklas              /*) echo package_makefile_frag = ${package_makefile_frag} >>${Makefile} ;;
1006*2159047fSniklas              *)  echo package_makefile_frag = ${invsubdir}${package_makefile_frag} >>${Makefile} ;;
1007*2159047fSniklas            esac
1008*2159047fSniklas
1009*2159047fSniklas            case "${target_makefile_frag}" in
1010*2159047fSniklas              "") ;;
1011*2159047fSniklas              /*) echo target_makefile_frag = ${target_makefile_frag} >>${Makefile} ;;
1012*2159047fSniklas              *)  echo target_makefile_frag = ${invsubdir}${target_makefile_frag} >>${Makefile} ;;
1013*2159047fSniklas            esac
1014*2159047fSniklas
1015*2159047fSniklas            case "${host_makefile_frag}" in
1016*2159047fSniklas              "") ;;
1017*2159047fSniklas              /*) echo host_makefile_frag = ${host_makefile_frag} >>${Makefile} ;;
1018*2159047fSniklas              *)  echo host_makefile_frag = ${invsubdir}${host_makefile_frag} >>${Makefile} ;;
1019*2159047fSniklas            esac
1020*2159047fSniklas
1021*2159047fSniklas            if [ "${site_makefile_frag}" != "" ] ; then
1022*2159047fSniklas                echo site_makefile_frag = ${invsubdir}${site_makefile_frag} >>${Makefile}
1023*2159047fSniklas            fi
1024*2159047fSniklas
1025*2159047fSniklas            # reset prefix, exec_prefix, srcdir, SUBDIRS, NONSUBDIRS,
1026*2159047fSniklas            # remove any form feeds.
1027*2159047fSniklas            if [ -z "${subdirs}" ]; then
1028*2159047fSniklas                rm -f ${subdir}/Makefile.tem2
1029*2159047fSniklas                sed -e "s:^SUBDIRS[ 	]*=.*$:SUBDIRS = ${configdirs}:" \
1030*2159047fSniklas                    -e "s:^NONSUBDIRS[ 	]*=.*$:NONSUBDIRS = ${noconfigdirs}:" \
1031*2159047fSniklas                    ${subdir}/Makefile.tem > ${subdir}/Makefile.tem2
1032*2159047fSniklas                rm -f ${subdir}/Makefile.tem
1033*2159047fSniklas                mv ${subdir}/Makefile.tem2 ${subdir}/Makefile.tem
1034*2159047fSniklas            fi
1035*2159047fSniklas            sed -e "s:^prefix[ 	]*=.*$:prefix = ${prefix}:" \
1036*2159047fSniklas                    -e "s:^exec_prefix[ 	]*=.*$:exec_prefix = ${exec_prefix}:" \
1037*2159047fSniklas		    -e "/^CC[ 	]*=/{
1038*2159047fSniklas			:loop1
1039*2159047fSniklas			/\\\\$/ N
1040*2159047fSniklas			/\\\\$/ b loop1
1041*2159047fSniklas			s/\\\\\\n//g
1042*2159047fSniklas			s%^CC[ 	]*=.*$%CC = ${CC}%
1043*2159047fSniklas			}" \
1044*2159047fSniklas		    -e "/^CXX[ 	]*=/{
1045*2159047fSniklas			:loop2
1046*2159047fSniklas			/\\\\$/ N
1047*2159047fSniklas			/\\\\$/ b loop2
1048*2159047fSniklas			s/\\\\\\n//g
1049*2159047fSniklas			s%^CXX[ 	]*=.*$%CXX = ${CXX}%
1050*2159047fSniklas			}" \
1051*2159047fSniklas		    -e "s:^SHELL[	 ]*=.*$:SHELL = ${config_shell}:" \
1052*2159047fSniklas                    -e "s:^srcdir[ 	]*=.*$:srcdir = ${makesrcdir}:" \
1053*2159047fSniklas                    -e "s///" \
1054*2159047fSniklas                    -e "s:^program_prefix[ 	]*=.*$:program_prefix = ${program_prefix}:" \
1055*2159047fSniklas                    -e "s:^program_suffix[ 	]*=.*$:program_suffix = ${program_suffix}:" \
1056*2159047fSniklas                    -e "s:^program_transform_name[ 	]*=.*$:program_transform_name = ${program_transform_name}:" \
1057*2159047fSniklas                    -e "s:^tooldir[ 	]*=.*$:tooldir = ${tooldir}:" \
1058*2159047fSniklas                    ${subdir}/Makefile.tem >> ${Makefile}
1059*2159047fSniklas
1060*2159047fSniklas	    # If this is a Canadian Cross, preset the values of many more
1061*2159047fSniklas	    # tools.
1062*2159047fSniklas	    if [ "${build}" != "${host}" ]; then
1063*2159047fSniklas		for var in ${tools}; do
1064*2159047fSniklas		    val=`eval 'echo $'"${var}"`
1065*2159047fSniklas		    sed -e "/^${var}[ 	]*=/{
1066*2159047fSniklas			   :loop1
1067*2159047fSniklas			   /\\\\$/ N
1068*2159047fSniklas			   /\\\\$/ b loop1
1069*2159047fSniklas			   s/\\\\\\n//g
1070*2159047fSniklas			   s%^${var}[ 	]*=.*$%${var} = ${val}%
1071*2159047fSniklas			   }" ${Makefile} > ${Makefile}.tem
1072*2159047fSniklas		    mv -f ${Makefile}.tem ${Makefile}
1073*2159047fSniklas		done
1074*2159047fSniklas	    fi
1075*2159047fSniklas
1076*2159047fSniklas            # final copy now in ${Makefile}
1077*2159047fSniklas
1078*2159047fSniklas        else
1079*2159047fSniklas           echo "No Makefile.in found in ${srcdir}/${subdir}, unable to configure" 1>&2
1080*2159047fSniklas        fi
1081*2159047fSniklas
1082*2159047fSniklas        rm -f ${subdir}/Makefile.tem
1083*2159047fSniklas
1084*2159047fSniklas        case "${host_makefile_frag}" in
1085*2159047fSniklas        "") using= ;;
1086*2159047fSniklas        *) using="and \"${host_makefile_frag}\"" ;;
1087*2159047fSniklas        esac
1088*2159047fSniklas
1089*2159047fSniklas        case "${target_makefile_frag}" in
1090*2159047fSniklas        "") ;;
1091*2159047fSniklas        *) using="${using} and \"${target_makefile_frag}\"" ;;
1092*2159047fSniklas        esac
1093*2159047fSniklas
1094*2159047fSniklas        case "${site_makefile_frag}" in
1095*2159047fSniklas        "") ;;
1096*2159047fSniklas        *) using="${using} and \"${site_makefile_frag}\"" ;;
1097*2159047fSniklas        esac
1098*2159047fSniklas
1099*2159047fSniklas        newusing=`echo "${using}" | sed 's/and/using/'`
1100*2159047fSniklas        using=${newusing}
1101*2159047fSniklas        echo "Created \"${Makefile}\" in" ${PWD=`pwd`} ${using}
1102*2159047fSniklas
1103*2159047fSniklas        . ${tmpfile}.pos
1104*2159047fSniklas
1105*2159047fSniklas        # describe the chosen configuration in config.status.
1106*2159047fSniklas        # Make that file a shellscript which will reestablish
1107*2159047fSniklas        # the same configuration.  Used in Makefiles to rebuild
1108*2159047fSniklas        # Makefiles.
1109*2159047fSniklas
1110*2159047fSniklas        case "${norecursion}" in
1111*2159047fSniklas        "") arguments="${arguments} --norecursion" ;;
1112*2159047fSniklas        *) ;;
1113*2159047fSniklas        esac
1114*2159047fSniklas
1115*2159047fSniklas        if [ ${subdir} = . ] ; then
1116*2159047fSniklas            echo "#!/bin/sh
1117*2159047fSniklas# ${NO_EDIT}
1118*2159047fSniklas# This directory was configured as follows:
1119*2159047fSniklas${progname}" ${arguments}  "
1120*2159047fSniklas# ${using}" > ${subdir}/config.new
1121*2159047fSniklas        else
1122*2159047fSniklas            echo "#!/bin/sh
1123*2159047fSniklas# ${NO_EDIT}
1124*2159047fSniklas# This directory was configured as follows:
1125*2159047fSniklascd ${invsubdir}
1126*2159047fSniklas${progname}" ${arguments}  "
1127*2159047fSniklas# ${using}" > ${subdir}/config.new
1128*2159047fSniklas        fi
1129*2159047fSniklas        chmod a+x ${subdir}/config.new
1130*2159047fSniklas        if [ -r ${subdir}/config.back ] ; then
1131*2159047fSniklas                mv -f ${subdir}/config.back ${subdir}/config.status
1132*2159047fSniklas        fi
1133*2159047fSniklas        ${moveifchange} ${subdir}/config.new ${subdir}/config.status
1134*2159047fSniklas        ;;
1135*2159047fSniklas
1136*2159047fSniklas    *)  rm -f ${Makefile} ${subdir}/config.status ${links} ;;
1137*2159047fSniklas    esac
1138*2159047fSniklasdone
1139*2159047fSniklas
1140*2159047fSniklas# If there are subdirectories, then recur.
1141*2159047fSniklasif [ -z "${norecursion}" -a -n "${configdirs}" ] ; then
1142*2159047fSniklas        for configdir in ${configdirs} ; do
1143*2159047fSniklas
1144*2159047fSniklas                if [ -d ${srcdir}/${configdir} ] ; then
1145*2159047fSniklas                        eval echo Configuring ${configdir}... ${redirect}
1146*2159047fSniklas                        case "${srcdir}" in
1147*2159047fSniklas                        ".") ;;
1148*2159047fSniklas                        *)
1149*2159047fSniklas                                if [ ! -d ./${configdir} ] ; then
1150*2159047fSniklas                                        if mkdir ./${configdir} ; then
1151*2159047fSniklas                                                true
1152*2159047fSniklas                                        else
1153*2159047fSniklas                                                echo '***' "${progname}: could not make ${PWD=`pwd`}/${configdir}" 1>&2
1154*2159047fSniklas                                                exit 1
1155*2159047fSniklas                                        fi
1156*2159047fSniklas                                fi
1157*2159047fSniklas                                ;;
1158*2159047fSniklas                        esac
1159*2159047fSniklas
1160*2159047fSniklas                        POPDIR=${PWD=`pwd`}
1161*2159047fSniklas                        cd ${configdir}
1162*2159047fSniklas
1163*2159047fSniklas### figure out what to do with srcdir
1164*2159047fSniklas                        case "${srcdir}" in
1165*2159047fSniklas                        ".") newsrcdir=${srcdir} ;; # no -srcdir option.  We're building in place.
1166*2159047fSniklas                        /*) # absolute path
1167*2159047fSniklas                                newsrcdir=${srcdir}/${configdir}
1168*2159047fSniklas                                srcdiroption="--srcdir=${newsrcdir}"
1169*2159047fSniklas                                ;;
1170*2159047fSniklas                        *) # otherwise relative
1171*2159047fSniklas                                newsrcdir=../${srcdir}/${configdir}
1172*2159047fSniklas                                srcdiroption="--srcdir=${newsrcdir}"
1173*2159047fSniklas                                ;;
1174*2159047fSniklas                        esac
1175*2159047fSniklas
1176*2159047fSniklas			# Handle --cache-file=../XXX
1177*2159047fSniklas			case "${cache_file}" in
1178*2159047fSniklas			"") # empty
1179*2159047fSniklas				;;
1180*2159047fSniklas			/*) # absolute path
1181*2159047fSniklas				cache_file_option="--cache-file=${cache_file}"
1182*2159047fSniklas				;;
1183*2159047fSniklas			*) # relative path
1184*2159047fSniklas				cache_file_option="--cache-file=../${cache_file}"
1185*2159047fSniklas				;;
1186*2159047fSniklas			esac
1187*2159047fSniklas
1188*2159047fSniklas### check for guested configure, otherwise fix possibly relative progname
1189*2159047fSniklas                        if [ -f ${newsrcdir}/configure ] ; then
1190*2159047fSniklas                                recprog=${newsrcdir}/configure
1191*2159047fSniklas                        elif [ -f ${newsrcdir}/configure.in ] ; then
1192*2159047fSniklas                                case "${progname}" in
1193*2159047fSniklas                                /*)     recprog=${progname} ;;
1194*2159047fSniklas                                *)      recprog=../${progname} ;;
1195*2159047fSniklas                                esac
1196*2159047fSniklas			else
1197*2159047fSniklas				eval echo No configuration information in ${configdir} ${redirect}
1198*2159047fSniklas				recprog=
1199*2159047fSniklas                        fi
1200*2159047fSniklas
1201*2159047fSniklas### The recursion line is here.
1202*2159047fSniklas			if [ ! -z "${recprog}" ] ; then
1203*2159047fSniklas	                        if eval ${config_shell} ${recprog} ${verbose} ${buildopt} --host=${host_alias} --target=${target_alias} \
1204*2159047fSniklas        	                        ${prefixoption} ${tmpdiroption} ${exec_prefixoption} \
1205*2159047fSniklas                	                ${srcdiroption} ${program_prefixoption} ${program_suffixoption} ${program_transform_nameoption} ${site_option} ${withoptions} ${withoutoptions} ${enableoptions} ${disableoptions} ${cache_file_option} ${removing} ${other_options} ${redirect} ; then
1206*2159047fSniklas	                                true
1207*2159047fSniklas        	                else
1208*2159047fSniklas					echo Configure in `pwd` failed, exiting. 1>&2
1209*2159047fSniklas                	                exit 1
1210*2159047fSniklas                        	fi
1211*2159047fSniklas			fi
1212*2159047fSniklas
1213*2159047fSniklas                        cd ${POPDIR}
1214*2159047fSniklas                fi
1215*2159047fSniklas        done
1216*2159047fSniklasfi
1217*2159047fSniklas
1218*2159047fSniklas# Perform the same cleanup as the trap handler, minus the "exit 1" of course,
1219*2159047fSniklas# and reset the trap handler.
1220*2159047fSniklasrm -f ${tmpfile}.com ${tmpfile}.tgt ${tmpfile}.hst ${tmpfile}.pos
1221*2159047fSniklastrap 0
1222*2159047fSniklas
1223*2159047fSniklasexit 0
1224*2159047fSniklas
1225*2159047fSniklas#
1226*2159047fSniklas# Local Variables:
1227*2159047fSniklas# fill-column: 131
1228*2159047fSniklas# End:
1229*2159047fSniklas#
1230*2159047fSniklas
1231*2159047fSniklas# end of configure
1232