fix last patch
[external/binutils.git] / configure.in
1 ##############################################################################
2
3 ## This file is a shell script fragment that supplies the information
4 ## necessary to tailor a template configure script into the configure
5 ## script appropriate for this directory.  For more information, check
6 ## any existing configure script.  
7
8 ## Be warned, there are two types of configure.in files.  There are those
9 ## used by Autoconf, which are macros which are expanded into a configure
10 ## script by autoconf.  The other sort, of which this is one, is executed
11 ## by Cygnus configure.  
12
13 ## For more information on these two systems, check out the documentation
14 ## for 'Autoconf' (autoconf.texi) and 'Configure' (configure.texi).  
15
16 ##############################################################################
17
18 ### To add a new directory to the tree, first choose whether it is a target
19 ### or a host dependent tool.  Then put it into the appropriate list
20 ### (library or tools, host or target), doing a dependency sort.  For
21 ### example, gdb requires that byacc (or bison) be built first, so it is in
22 ### the ${host_tools} list after byacc and bison.  
23
24
25 # these libraries are used by various programs built for the host environment
26 #
27 host_libs="mmalloc libiberty opcodes bfd readline gash tcl tk tclX"
28
29 if [ "${enable_gdbgui}" = "yes" ] ; then
30         host_libs="${host_libs} libgui"
31 fi
32
33 # these tools are built for the host environment
34 #
35 host_tools="texinfo byacc flex bison binutils ld gas gcc gdb make patch
36             prms send-pr gprof gdbtest tgas etc expect dejagnu sim
37             m4 autoconf ispell grep diff rcs cvs fileutils shellutils
38             textutils wdiff find emacs emacs19 uudecode hello tar gzip indent
39             recode release sed utils guile perl"
40
41
42 # these libraries are built for the target environment, and are built after
43 # the host libraries and the host tools (which may be a cross compiler)
44 #
45 target_libs="target-libiberty target-libgloss target-newlib target-libio target-librx target-libstdc++ target-libg++"
46
47
48 # these tools are built using the target libs, and are intended to run only
49 # in the target environment
50 #
51 # note: any program that *uses* libraries that are in the "target_libs"
52 # list belongs in this list.  those programs are also very likely
53 # candidates for the "native_only" list which follows
54 #
55 target_tools="target-examples target-groff"
56
57 ################################################################################
58
59 ## These two lists are of directories that are to be removed from the
60 ## ${configdirs} list for either cross-compilations or for native-
61 ## compilations.  For example, it doesn't make that much sense to
62 ## cross-compile Emacs, nor is it terribly useful to compile target-libiberty in
63 ## a native environment.  
64
65 # directories to be built in the native environment only
66 #
67 native_only="autoconf cvs emacs emacs19 fileutils find grep gzip hello
68              indent ispell m4 rcs recode sed shellutils tar textutils gash
69              uudecode wdiff gprof target-groff guile perl"
70
71 # directories to be built in a cross environment only
72 #
73 cross_only="target-libiberty target-libgloss target-newlib"
74
75 ## All tools belong in one of the four categories, and are assigned above
76 ## We assign ${configdirs} this way to remove all embedded newlines.  This
77 ## is important because configure will choke if they ever get through.
78 ## ${configdirs} is directories we build using the host tools.
79 ## ${target_configdirs} is directories we build using the target tools.
80 #
81 configdirs=`echo ${host_libs} ${host_tools}`
82 target_configdirs=`echo ${target_libs} ${target_tools}`
83
84 ################################################################################
85
86 srctrigger=move-if-change
87 srcname="gnu development package"
88
89 # This gets set non-empty for some net releases of packages.
90 appdirs=""
91
92 # per-host:
93
94 # Work in distributions that contain no compiler tools, like Autoconf.
95 if [ -d ${srcdir}/config ]; then
96 case "${host}" in
97   m68k-hp-hpux*)          host_makefile_frag=config/mh-hp300 ;;
98   m68k-apollo-sysv*)      host_makefile_frag=config/mh-apollo68 ;;
99   m68k-apollo-bsd*)       host_makefile_frag=config/mh-a68bsd ;;
100   m68k-*-linux*)          host_makefile_frag=config/mh-linux ;;
101   m88k-dg-dgux*)          host_makefile_frag=config/mh-dgux ;;
102   m88k-harris-cxux*)      host_makefile_frag=config/mh-cxux ;;
103   m88k-motorola-sysv*)    host_makefile_frag=config/mh-delta88;;
104   mips*-dec-ultrix*)      host_makefile_frag=config/mh-decstation ;;
105   mips*-nec-sysv4*)       host_makefile_frag=config/mh-necv4 ;;
106   mips*-sgi-irix[56]*)    host_makefile_frag=config/mh-irix5 ;;
107   mips*-sgi-irix4*)       host_makefile_frag=config/mh-irix4 ;;
108   mips*-sgi-irix3*)       host_makefile_frag=config/mh-sysv ;;
109   mips*-*-sysv4*)         host_makefile_frag=config/mh-sysv4 ;;
110   mips*-*-sysv*)          host_makefile_frag=config/mh-riscos ;;
111   i[345]86-ncr-sysv4.3)   host_makefile_frag=config/mh-ncrsvr43 ;;
112   i[345]86-ncr-sysv4*)    host_makefile_frag=config/mh-ncr3000 ;;
113   i[345]86-*-sco3.2v5*)   host_makefile_frag=config/mh-sysv ;;
114   i[345]86-*-sco*)        host_makefile_frag=config/mh-sco ;;
115   i[345]86-*-isc*)        host_makefile_frag=config/mh-sysv ;;
116   i[345]86-*-linux*)      host_makefile_frag=config/mh-linux ;;
117   i[345]86-*-solaris2*)   host_makefile_frag=config/mh-sysv4 ;;
118   i[345]86-*-aix*)        host_makefile_frag=config/mh-aix386 ;;
119   i[345]86-*-go32*)       host_makefile_frag=config/mh-go32 ;;
120   vax-*-ultrix2*)         host_makefile_frag=config/mh-vaxult2 ;;
121   *-*-solaris2*)          host_makefile_frag=config/mh-solaris ;;
122   m68k-sun-sunos*)        host_makefile_frag=config/mh-sun3 ;;
123   *-hp-hpux[78]*)         host_makefile_frag=config/mh-hpux8 ;;
124   *-hp-hpux*)             host_makefile_frag=config/mh-hpux ;;
125   *-*-hiux*)              host_makefile_frag=config/mh-hpux ;;
126   rs6000-*-lynxos*)       host_makefile_frag=config/mh-lynxrs6k ;;
127   *-*-lynxos*)            host_makefile_frag=config/mh-lynxos ;;
128   *-*-sysv4*)             host_makefile_frag=config/mh-sysv4 ;;
129   *-*-sysv*)              host_makefile_frag=config/mh-sysv ;;
130 esac
131 fi
132
133 # If we aren't going to be using gcc, see if we can extract a definition
134 # of CC from the fragment.
135 if [ -z "${CC}" -a "${build}" = "${host}" ]; then
136   IFS="${IFS=   }"; save_ifs="$IFS"; IFS="${IFS}:"
137   found=
138   for dir in $PATH; do
139     test -z "$dir" && dir=.
140     if test -f $dir/gcc; then
141       found=yes
142       break
143     fi
144   done
145   IFS="$save_ifs"
146   if [ -z "${found}" -a -n "${host_makefile_frag}" -a -f "${srcdir}/${host_makefile_frag}" ]; then
147     xx=`sed -n -e 's/^[         ]*CC[   ]*=[    ]*\(.*\)$/\1/p' < ${srcdir}/${host_makefile_frag}`
148     if [ -n "${xx}" ] ; then
149       CC=$xx
150     fi
151   fi
152 fi
153
154 # We default to --with-shared on platforms where -fpic is meaningless.
155 # Well, we don't yet, but we will.
156 if false && [ "${host}" = "${target}" ] && [ x${enable_shared} = x ]; then
157   case "${target}" in
158     alpha-dec-osf*)     enable_shared=yes ;;
159     mips-sgi-irix5*)    enable_shared=yes ;;
160     *)                  enable_shared=no ;;
161   esac
162 fi
163
164 case "${enable_shared}" in
165   yes) shared=yes ;;
166   no) shared=no ;;
167   "") shared=no ;;
168   *) shared=yes ;;
169 esac
170
171 if [ x${shared} = xyes ]; then
172   waugh=
173   case "${host}" in
174     hppa*)              waugh=config/mh-papic ;;
175     i[345]86-*)         waugh=config/mh-x86pic ;;
176     sparc64-*)          waugh=config/mh-sparcpic ;;
177     *)                  waugh=config/mh-${host_cpu}pic ;;
178   esac
179   if [ -f ${srcdir}/${waugh} ]; then
180     if [ -n "${host_makefile_frag}" ] ; then
181       cat ${srcdir}/${host_makefile_frag} > mh-frag
182       cat ${srcdir}/${waugh} >> mh-frag
183       host_makefile_frag=mh-frag
184     else
185       host_makefile_frag=${waugh}
186     fi
187   fi
188 fi
189
190 # per-target:
191
192 case "${target}" in
193   v810*)                target_makefile_frag=config/mt-v810 ;;
194   i[345]86-*-netware*)  target_makefile_frag=config/mt-netware ;;
195   powerpc-*-netware*)   target_makefile_frag=config/mt-netware ;;
196 esac
197
198 skipdirs=
199 gasdir=gas
200 use_gnu_ld=
201 use_gnu_as=
202
203 # some tools are so dependent upon X11 that if we're not building with X, 
204 # it's not even worth trying to configure, much less build, that tool.
205
206 case ${with_x} in
207   yes | "")  # the default value for this tree is that X11 is available
208         ;;
209   no)
210         skipdirs="${skipdirs} tk gash"
211         ;;
212   *)
213         echo "*** bad value \"${with_x}\" for -with-x flag; ignored" 1>&2
214         ;;
215 esac
216
217 # Some tools are only suitable for building in a "native" situation.
218 # Those are added when we have a host==target configuration.  For cross
219 # toolchains, we add some directories that should only be useful in a
220 # cross-compiler.
221
222 is_cross_compiler=
223
224 if [ x"${host}" = x"${target}" ] ; then
225         # when doing a native toolchain, don't build the targets
226         # that are in the 'cross only' list
227         skipdirs="${skipdirs} ${cross_only}"
228         is_cross_compiler=no
229         target_subdir=.
230 else
231         # similarly, don't build the targets in the 'native only' 
232         # list when building a cross compiler
233         skipdirs="${skipdirs} ${native_only}"
234         is_cross_compiler=yes
235         target_subdir=${target_alias}
236         if [ ! -d ${target_subdir} ] ; then
237             if mkdir ${target_subdir} ; then true
238             else
239                 echo "'*** could not make ${PWD=`pwd`}/${target_subdir}" 1>&2
240                 exit 1
241             fi
242         fi
243 fi      
244
245 copy_dirs=
246
247 # Handle --with-headers=XXX.  The contents of the named directory are
248 # copied to $(tooldir)/sys-include.
249 if [ x"${with_headers}" != x ]; then
250   if [ x${is_cross_compiler} = xno ]; then
251     echo 1>&2 '***' --with-headers is only supported when cross compiling
252     exit 1
253   fi
254   case "${exec_prefixoption}" in
255   "") x=${prefix} ;;
256   *) x=${exec_prefix} ;;
257   esac
258   copy_dirs="${copy_dirs} ${with_headers} $x/${target_alias}/sys-include"
259 fi
260
261 # Handle --with-libs=XXX.  Multiple directories are permitted.  The
262 # contents are copied to $(tooldir)/lib.
263 if [ x"${with_libs}" != x ]; then
264   if [ x${is_cross_compiler} = xno ]; then
265     echo 1>&2 '***' --with-libs is only supported when cross compiling
266     exit 1
267   fi
268   # Copy the libraries in reverse order, so that files in the first named
269   # library override files in subsequent libraries.
270   case "${exec_prefixoption}" in
271   "") x=${prefix} ;;
272   *) x=${exec_prefix} ;;
273   esac
274   for l in ${with_libs}; do
275     copy_dirs="$l $x/${target_alias}/lib ${copy_dirs}"
276   done
277 fi
278
279 # If both --with-headers and --with-libs are specified, default to
280 # --without-newlib.
281 if [ x"${with_headers}" != x ] && [ x"${with_libs}" != x ]; then
282   if [ x"${with_newlib}" = x ]; then
283     with_newlib=no
284   fi
285 fi
286
287 # Recognize --with-newlib/--without-newlib.
288 if [ x${with_newlib} = xno ]; then
289   skipdirs="${skipdirs} target-newlib"
290 elif [ x${with_newlib} = xyes ]; then
291   skipdirs=`echo " ${skipdirs} " | sed -e 's/ target-newlib / /'`
292 fi
293
294 # Default to using --with-stabs for certain targets.
295 if [ x${with_stabs} = x ]; then
296   case "${target}" in
297   mips*-*-* | alpha*-*-osf* | i[345]86*-*-sysv4* | i[345]86*-*-unixware*)
298     with_stabs=yes;
299     withoptions="${withoptions} --with-stabs"
300     ;;
301   esac
302 fi
303
304 # Handle ${copy_dirs}
305 set fnord ${copy_dirs}
306 shift
307 while [ $# != 0 ]; do
308   if [ -f $2/COPIED ] && [ x"`cat $2/COPIED`" = x"$1" ]; then
309     :
310   else
311     echo Copying $1 to $2
312
313     # Use the install script to create the directory and all required
314     # parent directories.
315     if [ -d $2 ]; then
316       :
317     else
318       echo >config.temp
319       ${srcdir}/install.sh -c -m 644 config.temp $2/COPIED
320     fi
321
322     # Copy the directory, assuming we have tar.
323     # FIXME: Should we use B in the second tar?  Not all systems support it.
324     (cd $1; tar -cf - .) | (cd $2; tar -xpf -)
325
326     # It is the responsibility of the user to correctly adjust all
327     # symlinks.  If somebody can figure out how to handle them correctly
328     # here, feel free to add the code.
329
330     echo $1 > $2/COPIED
331   fi
332   shift; shift
333 done
334
335 # Configure extra directories which are host specific
336
337 case "${host}" in
338         i[345]86-*-go32*)
339           configdirs="$configdirs dosrel" ;;
340 esac
341
342 # Remove more programs from consideration, based on the host or 
343 # target this usually means that a port of the program doesn't
344 # exist yet.
345
346 noconfigdirs=""
347
348 case "${host}" in
349   i[345]86-*-vsta)
350     noconfigdirs="tcl expect dejagnu make texinfo bison patch flex byacc send-pr gprof uudecode dejagnu diff guile perl"
351     ;;
352   i[345]86-*-go32)
353     noconfigdirs="tcl tk expect dejagnu make texinfo bison patch flex byacc send-pr gprof uudecode dejagnu diff guile perl"
354         ;;
355   *-*-cygwin32)
356      noconfigdirs="patch diff make tk tcl expect dejagnu cvs autoconf texinfo bison send-pr gprof rcs guile perl"
357     ;;
358   ppc*-*-pe)
359      noconfigdirs="patch diff  make tk tcl expect dejagnu cvs autoconf texinfo bison send-pr gprof rcs guile perl"
360     ;;
361 esac
362
363
364 case "${target}" in
365   *-*-netware)
366     noconfigdirs="$noconfigdirs target-libg++ target-libstdc++ target-librx target-newlib target-libiberty"
367     ;;
368   *-*-vxworks*)
369     noconfigdirs="$noconfigdirs target-newlib"
370     ;;
371   alpha-dec-osf*)
372     # ld works, but does not support shared libraries.  emacs doesn't
373     # work.  newlib is not 64 bit ready.  I'm not sure about fileutils or grep.
374     # gas doesn't generate exception information.
375     noconfigdirs="$noconfigdirs gas ld emacs fileutils grep target-newlib"
376     ;;
377   alpha*-*-*)
378     # newlib is not 64 bit ready
379     noconfigdirs="$noconfigdirs target-newlib"
380     ;;
381 # start-sanitize-arc
382   arc-*-*)
383     ;;
384 # end-sanitize-arc
385   arm-*-pe*)
386     ;;
387   arm-*-riscix*)
388     noconfigdirs="$noconfigdirs ld"
389     ;;
390   h8300*-*-* | \
391   h8500-*-*)
392     noconfigdirs="$noconfigdirs target-libg++ target-libstdc++ target-libio target-librx"
393     ;;
394   hppa*-*-*elf* | \
395   hppa*-*-lites*)
396     # Do configure ld/binutils/gas for this case.
397     ;;
398   hppa*-*-*)
399     # HP's C compiler doesn't handle Emacs correctly (but on BSD and Mach
400     # cc is gcc, and on any system a user should be able to link cc to
401     # whatever they want.  FIXME, emacs emacs19).
402     case "${CC}" in
403         "" | cc*) noconfigdirs="$noconfigdirs emacs emacs19" ;;
404         *) ;;
405     esac
406     noconfigdirs="$noconfigdirs ld shellutils"
407     ;;
408   i[345]86-*-go32)
409     # but don't build gdb
410     noconfigdirs="$noconfigdirs gdb target-libg++ target-libstdc++ target-libio target-librx"
411     ;;
412   *-*-cygwin32)
413
414     # make/glob's configure uses some AC_TRY_RUN type tests
415     target_configdirs="$target_configdirs target-winsup"
416     noconfigdirs="$noconfigdirs tcl tk expect make"
417     # always build newlib.
418     skipdirs=`echo " ${skipdirs} " | sed -e 's/ target-newlib / /'`
419
420     # Can't build gdb for cygwin32 if not native.
421     case "${host}:${build}" in
422       *-*-cygwin32 | *-*-cygwin32:*-*-cygwin32) ;; # keep gdb
423       *) noconfigdirs="$noconfigdirs gdb"
424     esac
425
426     ;;    
427   i[345]86-*-pe)
428     noconfigdirs="$noconfigdirs target-libg++ target-libstdc++ target-libio target-librx"
429     ;;
430   i[345]86-*-sco3.2v5*)
431     # The linker does not yet know about weak symbols in COFF,
432     # and is not configured to handle mixed ELF and COFF.
433     noconfigdirs="$noconfigdirs gprof ld"
434     ;;
435   i[345]86-*-sco*)
436     noconfigdirs="$noconfigdirs gprof"
437     ;;
438   i[345]86-*-solaris2*)
439     # The linker does static linking correctly, but the Solaris C library
440     # has bugs such that some important functions won't work when statically
441     # linked.  (See man pages for getpwuid, for example.)
442     noconfigdirs="$noconfigdirs ld"
443     ;;
444   i[345]86-*-sysv4*)
445     # The SYSV4 C compiler doesn't handle Emacs correctly
446     case "${CC}" in
447         "" | cc*) noconfigdirs="$noconfigdirs emacs emacs19" ;;
448         *) ;;
449     esac
450     # but that's okay since emacs doesn't work anyway
451     noconfigdirs="$noconfigdirs emacs emacs19"
452     ;;
453   powerpc-*-aix*)
454     # copied from rs6000-*-* entry
455     noconfigdirs="$noconfigdirs gprof cvs"
456     ;;
457   powerpc*-*-winnt* | powerpc*-*-pe* | ppc*-*-pe)
458     target_configdirs="$target_configdirs target-winsup"
459     noconfigdirs="$noconfigdirs gdb tcl tk make expect"
460     # always build newlib.
461     skipdirs=`echo " ${skipdirs} " | sed -e 's/ target-newlib / /'`
462     ;;
463   rs6000-*-lynxos*)
464     # The CVS server code doesn't work on the RS/6000
465     # Newlib makes problems for libg++ in crosses.
466     noconfigdirs="$noconfigdirs target-newlib gprof cvs"
467     ;;
468   rs6000-*-*)
469     noconfigdirs="$noconfigdirs gprof"
470     ;;
471   m68k-apollo-*)
472     noconfigdirs="$noconfigdirs ld binutils gprof"
473     ;;
474   mips*-*-irix5*)
475     # The GNU linker does not support shared libraries.
476     # emacs is emacs 18, which does not work on Irix 5 (emacs19 does work)
477     noconfigdirs="$noconfigdirs ld gprof emacs"
478     ;;
479   mips*-dec-bsd*)
480     noconfigdirs="$noconfigdirs gprof"
481     ;;
482   mips*-*-bsd*)
483     noconfigdirs="$noconfigdirs gprof"
484     ;;
485   mips*-*-*)
486     noconfigdirs="$noconfigdirs gprof"
487     ;;
488   romp-*-*)
489     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes"
490     ;;
491   sh-*-*)
492     case "${host}" in
493       i[345]86-*-vsta) ;; # don't add gprof back in
494       i[345]86-*-go32) ;; # don't add gprof back in
495       *) skipdirs=`echo " ${skipdirs} " | sed -e 's/ gprof / /'` ;;
496     esac
497     ;;
498   sparc-*-sunos4*)
499     if [ x${is_cross_compiler} != xno ] ; then
500            noconfigdirs="$noconfigdirs gdb gdbtest target-newlib"
501     else
502            use_gnu_ld=no
503     fi
504     ;;
505   v810-*-*)
506     noconfigdirs="$noconfigdirs bfd binutils gas gcc gdb ld target-libio target-libg++ target-libstdc++ opcodes"
507     ;;
508   vax-*-vms)
509     noconfigdirs="$noconfigdirs bfd binutils gdb ld target-newlib opcodes"
510     ;;
511   vax-*-*)
512     noconfigdirs="$noconfigdirs target-newlib"
513     ;;
514   *-*-lynxos*)
515     # Newlib makes problems for libg++ in crosses.
516     noconfigdirs="$noconfigdirs target-newlib"
517     ;; 
518   *-*-macos* | \
519   *-*-mpw*)
520     # Macs want a resource compiler.
521     configdirs="$configdirs grez"
522     ;;    
523 esac
524
525 # targets that need a second pass
526 case "${target}" in
527   *-gm-magic*)
528     noconfigdirs="$noconfigdirs libgloss"
529     ;;
530 esac
531
532 # If we are building a Canadian Cross, discard tools that can not be built
533 # using a cross compiler.  FIXME: These tools should be fixed.
534 if [ "${build}" != "${host}" ]; then
535   noconfigdirs="$noconfigdirs expect dejagnu make texinfo diff"
536 fi
537
538 # Make sure we don't let GNU ld be added if we didn't want it.
539 if [ x$with_gnu_ld = xno ]; then
540   use_gnu_ld=no
541   noconfigdirs="$noconfigdirs ld"
542 fi
543
544 # Make sure we don't let GNU as be added if we didn't want it.
545 if [ x$with_gnu_as = xno ]; then
546   use_gnu_as=no
547   noconfigdirs="$noconfigdirs gas"
548 fi
549
550 # Remove the entries in $skipdirs and $noconfigdirs from $configdirs and
551 # $target_configdirs.
552 # If we have the source for $noconfigdirs entries, add them to $notsupp.
553
554 notsupp=""
555 for dir in . $skipdirs $noconfigdirs ; do
556   dirname=`echo $dir | sed -e s/target-//g`
557   if [ $dir != . ]  && echo " ${configdirs} " | grep " ${dir} " >/dev/null 2>&1; then
558     configdirs=`echo " ${configdirs} " | sed -e "s/ ${dir} / /"`
559     if [ -r $srcdir/$dirname/configure ] \
560         || [ -r $srcdir/$dirname/configure.in ]; then
561       if echo " ${skipdirs} " | grep " ${dir} " >/dev/null 2>&1; then
562         true
563       else
564         notsupp="$notsupp $dir"
565       fi
566     fi
567   fi
568   if [ $dir != . ]  && echo " ${target_configdirs} " | grep " ${dir} " >/dev/null 2>&1; then
569     target_configdirs=`echo " ${target_configdirs} " | sed -e "s/ ${dir} / /"`
570     if [ -r $srcdir/$dirname/configure ] \
571         || [ -r $srcdir/$dirname/configure.in ]; then
572       if echo " ${skipdirs} " | grep " ${dir} " >/dev/null 2>&1; then
573         true
574       else
575         notsupp="$notsupp $dir"
576       fi
577     fi
578   fi
579 done
580
581 # Sometimes the tools are distributed with libiberty but with no other
582 # libraries.  In that case, we don't want to build target-libiberty.
583 if [ -n "${target_configdirs}" ]; then
584   others=
585   for i in `echo ${target_configdirs} | sed -e s/target-//g` ; do
586     if [ "$i" != "libiberty" ]; then
587       if [ -r $srcdir/$i/configure ] || [ -r $srcdir/$i/configure.in ]; then
588         others=yes;
589         break;
590       fi
591     fi
592   done
593   if [ -z "${others}" ]; then
594     target_configdirs=
595   fi
596 fi
597
598 # Deconfigure all subdirectories, in case we are changing the
599 # configuration from one where a subdirectory is supported to one where it
600 # is not.
601 if [ -z "${norecursion}" -a -n "${configdirs}" ]; then
602   for i in `echo ${configdirs} | sed -e s/target-//g` ; do
603     rm -f $i/Makefile
604   done
605 fi
606 if [ -z "${norecursion}" -a -n "${target_configdirs}" ]; then
607   for i in `echo ${target_configdirs} | sed -e s/target-//g` ; do
608     rm -f ${target_subdir}/$i/Makefile
609   done
610 fi
611
612 # Produce a warning message for the subdirs we can't configure.
613 # This isn't especially interesting in the Cygnus tree, but in the individual
614 # FSF releases, it's important to let people know when their machine isn't
615 # supported by the one or two programs in a package.
616
617 if [ -n "${notsupp}" ] && [ -z "${norecursion}" ]; then
618   # If $appdirs is non-empty, at least one of those directories must still
619   # be configured, or we error out.  (E.g., if the gas release supports a
620   # specified target in some subdirs but not the gas subdir, we shouldn't
621   # pretend that all is well.)
622   if [ -n "$appdirs" ]; then
623     for dir in $appdirs ; do
624       if [ -r $dir/Makefile.in ]; then
625         if echo " ${configdirs} " | grep " ${dir} " >/dev/null 2>&1; then
626           appdirs=""
627           break
628         fi
629         if echo " ${target_configdirs} " | grep " ${dir} " >/dev/null 2>&1; then
630           appdirs=""
631           break
632         fi
633       fi
634     done
635     if [ -n "$appdirs" ]; then
636       echo "*** This configuration is not supported by this package." 1>&2
637       exit 1
638     fi
639   fi
640   # Okay, some application will build, or we don't care to check.  Still
641   # notify of subdirs not getting built.
642   echo "*** This configuration is not supported in the following subdirectories:" 1>&2
643   echo "    ${notsupp}" 1>&2
644   echo "    (Any other directories should still work fine.)" 1>&2
645 fi
646
647 # Set with_gnu_as and with_gnu_ld as appropriate.
648 #
649 # This is done by determining whether or not the appropriate directory
650 # is available, and by checking whether or not specific configurations
651 # have requested that this magic not happen.
652
653 # The command line options always override the explicit settings in 
654 # configure.in, and the settings in configure.in override this magic.
655 #
656 # If the default for a toolchain is to use GNU as and ld, and you don't 
657 # want to do that, then you should use the --without-gnu-as and
658 # --without-gnu-ld options for the configure script.
659
660 if [ x${use_gnu_as} = x ] ; then
661   if [ x${with_gnu_as} != xno ] && echo " ${configdirs} " | grep " ${gasdir} " > /dev/null 2>&1 && [ -d ${srcdir}/${gasdir} ] ; then
662     with_gnu_as=yes
663     withoptions="$withoptions --with-gnu-as"
664   fi
665 fi
666
667 if [ x${use_gnu_ld} = x ] ; then
668   if [ x${with_gnu_ld} != xno ] && echo " ${configdirs} " | grep " ld " > /dev/null 2>&1 && [ -d ${srcdir}/ld ] ; then
669     with_gnu_ld=yes
670     withoptions="$withoptions --with-gnu-ld"
671   fi
672 fi
673
674 if [ x${shared} = xyes ]; then
675   case "${target}" in
676     hppa*)              target_makefile_frag=config/mt-papic ;;
677     i[345]86-*)         target_makefile_frag=config/mt-x86pic ;;
678     *)                  target_makefile_frag=config/mt-${target_cpu}pic ;;
679   esac
680 fi
681
682 # post-target:
683
684 # Make sure that the compiler is able to generate an executable.  If it
685 # can't, we are probably in trouble.  We don't care whether we can run the
686 # executable--we might be using a cross compiler--we only care whether it
687 # can be created.  At this point the main configure script has set CC.
688 echo "int main () { return 0; }" > conftest.c
689 ${CC} -o conftest ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} conftest.c
690 if [ $? = 0 ] && [ -s conftest ]; then
691   :
692 else
693   echo 1>&2 "*** The command '${CC} -o conftest ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} conftest.c' failed."
694   echo 1>&2 "*** You must set the environment variable CC to a working compiler."
695   rm -f conftest*
696   exit 1
697 fi
698 rm -f conftest*
699
700 # The Solaris /usr/ucb/cc compiler does not appear to work.
701 case "${host}" in
702   sparc-sun-solaris2*)
703       CCBASE="`echo ${CC-cc} | sed 's/ .*$//'`"
704       if [ "`/usr/bin/which $CCBASE`" = "/usr/ucb/cc" ] ; then
705           could_use=
706           [ -d /opt/SUNWspro/bin ] && could_use="/opt/SUNWspro/bin"
707           if [ -d /opt/cygnus/bin ] ; then
708               if [ "$could_use" = "" ] ; then
709                   could_use="/opt/cygnus/bin"
710               else
711                   could_use="$could_use or /opt/cygnus/bin"
712               fi
713           fi
714         if [ "$could_use" = "" ] ; then
715             echo "Warning: compilation may fail because you're using"
716             echo "/usr/ucb/cc.  You should change your PATH or CC "
717             echo "variable and rerun configure."
718         else
719             echo "Warning: compilation may fail because you're using"
720             echo "/usr/ucb/cc, when you should use the C compiler from"
721             echo "$could_use.  You should change your"
722             echo "PATH or CC variable and rerun configure."
723         fi
724       fi
725   ;;
726 esac
727
728 # If --enable-shared was set, we must set LD_LIBRARY_PATH so that the
729 # binutils tools will find libbfd.so.
730 if [ "${shared}" = "yes" ]; then
731   sed -e 's/^SET_LIB_PATH[      ]*=.*$/SET_LIB_PATH = $(REALLY_SET_LIB_PATH)/' \
732       Makefile > Makefile.tem
733   rm -f Makefile
734   mv -f Makefile.tem Makefile
735
736   case "${host}" in
737   *-*-hpux*)
738     sed -e 's/RPATH_ENVVAR[     ]*=.*$/RPATH_ENVVAR = SHLIB_PATH/' \
739         Makefile > Makefile.tem
740     rm -f Makefile
741     mv -f Makefile.tem Makefile
742     ;;
743   esac
744 fi
745
746 # Record target_configdirs and the configure arguments in Makefile.
747 target_configdirs=`echo "${target_configdirs}" | sed -e 's/target-//g'`
748 targargs=`echo "${arguments}" | \
749         sed -e 's/--norecursion//' \
750             -e 's/--cache[a-z-]*=[^     ]*//' \
751             -e 's/--ho[a-z-]*=[^        ]*//' \
752             -e 's/--ta[a-z-]*=[^        ]*//'`
753
754 # Passing a --with-cross-host argument lets the target libraries know
755 # whether they are being built with a cross-compiler or being built
756 # native.  However, it would be better to use other mechanisms to make the
757 # sorts of decisions they want to make on this basis.  Please consider
758 # this option to be deprecated.  FIXME.
759 if [ x${is_cross_compiler} = xyes ]; then
760   targargs="--with-cross-host=${host_alias} ${targargs}"
761 fi
762
763 targargs="--host=${target_alias} ${targargs}"
764 sed -e "s:^TARGET_CONFIGDIRS[   ]*=.*$:TARGET_CONFIGDIRS = ${target_configdirs}:" \
765     -e "s%^CONFIG_ARGUMENTS[    ]*=.*$%CONFIG_ARGUMENTS = ${targargs}%" \
766     -e "s%^TARGET_SUBDIR[       ]*=.*$%TARGET_SUBDIR = ${target_subdir}%" \
767        Makefile > Makefile.tem
768 rm -f Makefile
769 mv -f Makefile.tem Makefile
770
771 #
772 # Local Variables:
773 # fill-column: 131
774 # End:
775 #