OSDN Git Service

* expr.c (init_expr_once): Don't use start/end_sequence.
[pf3gnuchains/gcc-fork.git] / gcc / configure.in
1 # configure.in for GCC
2 # Process this file with autoconf to generate a configuration script.
3
4 # Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
5
6 #This file is part of GCC.
7
8 #GCC is free software; you can redistribute it and/or modify it under
9 #the terms of the GNU General Public License as published by the Free
10 #Software Foundation; either version 2, or (at your option) any later
11 #version.
12
13 #GCC is distributed in the hope that it will be useful, but WITHOUT
14 #ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 #FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
16 #for more details.
17
18 #You should have received a copy of the GNU General Public License
19 #along with GCC; see the file COPYING.  If not, write to the Free
20 #Software Foundation, 59 Temple Place - Suite 330, Boston, MA
21 #02111-1307, USA.
22
23 # Initialization and defaults
24 AC_PREREQ(2.13)
25 AC_INIT(tree.c)
26 AC_CONFIG_HEADER(auto-host.h:config.in)
27
28 remove=rm
29 hard_link=ln
30 symbolic_link='ln -s'
31 copy=cp
32
33 # Check for bogus environment variables.
34 # Test if LIBRARY_PATH contains the notation for the current directory
35 # since this would lead to problems installing/building glibc.
36 # LIBRARY_PATH contains the current directory if one of the following
37 # is true:
38 # - one of the terminals (":" and ";") is the first or last sign
39 # - two terminals occur directly after each other
40 # - the path contains an element with a dot in it
41 AC_MSG_CHECKING(LIBRARY_PATH variable)
42 changequote(,)dnl
43 case ${LIBRARY_PATH} in
44   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
45     library_path_setting="contains current directory"
46     ;;
47   *)
48     library_path_setting="ok"
49     ;;
50 esac
51 changequote([,])dnl
52 AC_MSG_RESULT($library_path_setting)
53 if test "$library_path_setting" != "ok"; then
54 AC_MSG_ERROR([
55 *** LIBRARY_PATH shouldn't contain the current directory when
56 *** building gcc. Please change the environment variable
57 *** and run configure again.])
58 fi
59
60 # Test if GCC_EXEC_PREFIX contains the notation for the current directory
61 # since this would lead to problems installing/building glibc.
62 # GCC_EXEC_PREFIX contains the current directory if one of the following
63 # is true:
64 # - one of the terminals (":" and ";") is the first or last sign
65 # - two terminals occur directly after each other
66 # - the path contains an element with a dot in it
67 AC_MSG_CHECKING(GCC_EXEC_PREFIX variable)
68 changequote(,)dnl
69 case ${GCC_EXEC_PREFIX} in
70   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
71     gcc_exec_prefix_setting="contains current directory"
72     ;;
73   *)
74     gcc_exec_prefix_setting="ok"
75     ;;
76 esac
77 changequote([,])dnl
78 AC_MSG_RESULT($gcc_exec_prefix_setting)
79 if test "$gcc_exec_prefix_setting" != "ok"; then
80 AC_MSG_ERROR([
81 *** GCC_EXEC_PREFIX shouldn't contain the current directory when
82 *** building gcc. Please change the environment variable
83 *** and run configure again.])
84 fi
85
86 # Check for additional parameters
87
88 # With GNU ld
89 AC_ARG_WITH(gnu-ld,
90 [  --with-gnu-ld           arrange to work with GNU ld.],
91 gnu_ld_flag="$with_gnu_ld",
92 gnu_ld_flag=no)
93
94 # With pre-defined ld
95 AC_ARG_WITH(ld,
96 [  --with-ld               arrange to use the specified ld (full pathname)],
97 DEFAULT_LINKER="$with_ld")
98 if test x"${DEFAULT_LINKER+set}" = x"set"; then
99   if test ! -x "$DEFAULT_LINKER"; then
100     AC_MSG_WARN([cannot execute: $DEFAULT_LINKER: check --with-ld or env. var. DEFAULT_LINKER])
101   elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
102     gnu_ld_flag=yes
103   fi
104   AC_DEFINE_UNQUOTED(DEFAULT_LINKER,"$DEFAULT_LINKER",
105         [Define to enable the use of a default linker.])
106 fi
107
108 # With GNU as
109 AC_ARG_WITH(gnu-as,
110 [  --with-gnu-as           arrange to work with GNU as],
111 gas_flag="$with_gnu_as",
112 gas_flag=no)
113
114 AC_ARG_WITH(as,
115 [  --with-as               arrange to use the specified as (full pathname)],
116 DEFAULT_ASSEMBLER="$with_as")
117 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
118   if test ! -x "$DEFAULT_ASSEMBLER"; then
119     AC_MSG_WARN([cannot execute: $DEFAULT_ASSEMBLER: check --with-as or env. var. DEFAULT_ASSEMBLER])
120   elif $DEFAULT_ASSEMBLER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
121     gas_flag=yes
122   fi
123   AC_DEFINE_UNQUOTED(DEFAULT_ASSEMBLER,"$DEFAULT_ASSEMBLER",
124         [Define to enable the use of a default assembler.])
125 fi
126
127 # With stabs
128 AC_ARG_WITH(stabs,
129 [  --with-stabs            arrange to use stabs instead of host debug format],
130 stabs="$with_stabs",
131 stabs=no)
132
133 # With ELF
134 AC_ARG_WITH(elf,
135 [  --with-elf              arrange to use ELF instead of host debug format],
136 elf="$with_elf",
137 elf=no)
138
139 # Specify the local prefix
140 local_prefix=
141 AC_ARG_WITH(local-prefix,
142 [  --with-local-prefix=DIR specifies directory to put local include],
143 [case "${withval}" in
144 yes)    AC_MSG_ERROR(bad value ${withval} given for local include directory prefix) ;;
145 no)     ;;
146 *)      local_prefix=$with_local_prefix ;;
147 esac])
148
149 # Default local prefix if it is empty
150 if test x$local_prefix = x; then
151         local_prefix=/usr/local
152 fi
153
154 # Don't set gcc_gxx_include_dir to gxx_include_dir since that's only
155 # passed in by the toplevel make and thus we'd get different behavior
156 # depending on where we built the sources.
157 gcc_gxx_include_dir=
158 # Specify the g++ header file directory
159 AC_ARG_WITH(gxx-include-dir,
160 [  --with-gxx-include-dir=DIR
161                           specifies directory to put g++ header files],
162 [case "${withval}" in
163 yes)    AC_MSG_ERROR(bad value ${withval} given for g++ include directory) ;;
164 no)     ;;
165 *)      gcc_gxx_include_dir=$with_gxx_include_dir ;;
166 esac])
167
168 if test x${gcc_gxx_include_dir} = x; then
169   if test x${enable_version_specific_runtime_libs} = xyes; then
170     gcc_gxx_include_dir='${libsubdir}/include/g++'
171   else
172     topsrcdir=${srcdir}/.. . ${srcdir}/../config.if
173 changequote(<<, >>)dnl
174     gcc_gxx_include_dir="\$(libsubdir)/\$(unlibsubdir)/..\`echo \$(exec_prefix) | sed -e 's|^\$(prefix)||' -e 's|/[^/]*|/..|g'\`/include/"${libstdcxx_incdir}
175 changequote([, ])dnl
176   fi
177 fi
178
179 # Determine whether or not multilibs are enabled.
180 AC_ARG_ENABLE(multilib,
181 [  --enable-multilib       enable library support for multiple ABIs],
182 [], [enable_multilib=yes])
183 AC_SUBST(enable_multilib)
184
185 # Enable expensive internal checks
186 AC_ARG_ENABLE(checking,
187 [  --enable-checking[=LIST]
188                           enable expensive run-time checks.  With LIST,
189                           enable only specific categories of checks.
190                           Categories are: misc,tree,rtl,rtlflag,gc,gcac;
191                           default is misc,tree,gc,rtlflag],
192 [ac_checking=
193 ac_tree_checking=
194 ac_rtl_checking=
195 ac_rtlflag_checking=
196 ac_gc_checking=
197 ac_gc_always_collect=
198 case "${enableval}" in
199 yes)    ac_checking=1 ; ac_tree_checking=1 ; ac_gc_checking=1 ;
200         ac_rtlflag_checking=1 ;;
201 no)     ;;
202 *)      IFS="${IFS=     }"; ac_save_IFS="$IFS"; IFS="$IFS,"
203         set fnord $enableval; shift
204         IFS="$ac_save_IFS"
205         for check
206         do
207                 case $check in
208                 misc)   ac_checking=1 ;;
209                 tree)   ac_tree_checking=1 ;;
210                 rtlflag)        ac_rtlflag_checking=1 ;;
211                 rtl)    ac_rtl_checking=1 ;;
212                 gc)     ac_gc_checking=1 ;;
213                 gcac)   ac_gc_always_collect=1 ;;
214                 *)      AC_MSG_ERROR(unknown check category $check) ;;
215                 esac
216         done
217         ;;
218 esac
219 ], 
220 # Enable some checks by default for development versions of GCC
221 [ac_checking=1; ac_tree_checking=1; ac_gc_checking=1; ac_rtlflag_checking=1;])
222 if test x$ac_checking != x ; then
223   AC_DEFINE(ENABLE_CHECKING, 1,
224 [Define if you want more run-time sanity checks.  This one gets a grab
225    bag of miscellaneous but relatively cheap checks.])
226 fi
227 if test x$ac_tree_checking != x ; then
228   AC_DEFINE(ENABLE_TREE_CHECKING, 1,
229 [Define if you want all operations on trees (the basic data
230    structure of the front ends) to be checked for dynamic type safety
231    at runtime.  This is moderately expensive.])
232 fi
233 if test x$ac_rtl_checking != x ; then
234   AC_DEFINE(ENABLE_RTL_CHECKING, 1,
235 [Define if you want all operations on RTL (the basic data structure
236    of the optimizer and back end) to be checked for dynamic type safety
237    at runtime.  This is quite expensive.])
238 fi
239 if test x$ac_rtlflag_checking != x ; then
240   AC_DEFINE(ENABLE_RTL_FLAG_CHECKING, 1,
241 [Define if you want RTL flag accesses to be checked against the RTL
242    codes that are supported for each access macro.  This is relatively
243    cheap.])
244 fi
245 if test x$ac_gc_checking != x ; then
246   AC_DEFINE(ENABLE_GC_CHECKING, 1,
247 [Define if you want the garbage collector to do object poisoning and
248    other memory allocation checks.  This is quite expensive.])
249 fi
250 if test x$ac_gc_always_collect != x ; then
251   AC_DEFINE(ENABLE_GC_ALWAYS_COLLECT, 1,
252 [Define if you want the garbage collector to operate in maximally
253    paranoid mode, validating the entire heap and collecting garbage at
254    every opportunity.  This is extremely expensive.])
255 fi
256
257
258 AC_ARG_ENABLE(cpp,
259 [  --disable-cpp           don't provide a user-visible C preprocessor],
260 [], [enable_cpp=yes])
261
262 AC_ARG_WITH(cpp_install_dir,
263 [  --with-cpp-install-dir=DIR
264                           install the user visible C preprocessor in DIR
265                           (relative to PREFIX) as well as PREFIX/bin],
266 [if test x$withval = xyes; then
267   AC_MSG_ERROR([option --with-cpp-install-dir requires an argument])
268 elif test x$withval != xno; then
269   cpp_install_dir=$withval
270 fi])
271
272 # Enable Multibyte Characters for C/C++
273 AC_ARG_ENABLE(c-mbchar,
274 [  --enable-c-mbchar       enable multibyte characters for C and C++],
275 if test x$enable_c_mbchar != xno; then
276   AC_DEFINE(MULTIBYTE_CHARS, 1,
277   [Define if you want the C and C++ compilers to support multibyte
278    character sets for source code.])
279 fi)
280   
281 # Enable threads
282 # Pass with no value to take the default
283 # Pass with a value to specify a thread package
284 AC_ARG_ENABLE(threads,
285 [  --enable-threads        enable thread usage for target GCC
286   --enable-threads=LIB    use LIB thread package for target GCC],,
287 enable_threads='')
288
289 enable_threads_flag=$enable_threads
290 # Check if a valid thread package
291 case x${enable_threads_flag} in
292         x | xno)
293                 # No threads
294                 target_thread_file='single'
295                 ;;
296         xyes)
297                 # default
298                 target_thread_file=''
299                 ;;
300         xdecosf1 | xirix | xmach | xos2 | xposix | xpthreads | xsingle | \
301         xsolaris | xwin32 | xdce | xrtems| xvxworks | xaix)
302                 target_thread_file=$enable_threads_flag
303                 ;;
304         *)
305                 echo "$enable_threads is an unknown thread package" 1>&2
306                 exit 1
307                 ;;
308 esac
309
310 AC_ARG_ENABLE(objc-gc,
311 [  --enable-objc-gc       enable the use of Boehm's garbage collector with
312                           the GNU Objective-C runtime],
313 if test x$enable_objc_gc = xno; then
314         objc_boehm_gc=''
315 else
316         objc_boehm_gc=1
317 fi,
318 objc_boehm_gc='')
319
320 AC_ARG_WITH(dwarf2,
321 [  --with-dwarf2           force the default debug format to be DWARF 2],
322 dwarf2="$with_dwarf2",
323 dwarf2=no)
324
325 AC_ARG_ENABLE(shared,
326 [  --disable-shared        don't provide a shared libgcc],
327 [
328   case $enable_shared in
329   yes | no) ;;
330   *)
331     enable_shared=no
332     IFS="${IFS=         }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
333     for pkg in $enableval; do
334       if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
335         enable_shared=yes
336       fi
337     done
338     IFS="$ac_save_ifs"
339     ;;
340   esac
341 ], [enable_shared=yes])
342 AC_SUBST(enable_shared)
343
344 # Determine the host, build, and target systems
345 AC_CANONICAL_SYSTEM
346
347 # Set program_transform_name
348 AC_ARG_PROGRAM
349
350 # Find the native compiler
351 AC_PROG_CC
352 AC_PROG_CC_C_O
353 # autoconf is lame and doesn't give us any substitution variable for this.
354 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
355   NO_MINUS_C_MINUS_O=yes
356 else
357   OUTPUT_OPTION='-o $@'
358 fi
359 AC_SUBST(NO_MINUS_C_MINUS_O)
360 AC_SUBST(OUTPUT_OPTION)
361
362 # See if GNAT has been installed
363 gcc_AC_PROG_GNAT
364
365 AC_CACHE_CHECK(whether ${CC-cc} accepts -Wno-long-long,
366 ac_cv_prog_cc_no_long_long,
367 [save_CFLAGS="$CFLAGS"
368 CFLAGS="-Wno-long-long"
369 AC_TRY_COMPILE(,,ac_cv_prog_cc_no_long_long=yes,
370                ac_cv_prog_cc_no_long_long=no)
371 CFLAGS="$save_CFLAGS"])
372
373 if test x$have_gnat != xno ; then 
374 AC_CACHE_CHECK(whether ${ADAC} accepts -Wno-long-long,
375 ac_cv_prog_adac_no_long_long,
376 [cat >conftest.adb <<EOF
377 procedure conftest is begin null; end conftest;
378 EOF
379 if $ADAC -Wno-long-long -c conftest.adb 1>&5 2>&5 ; then
380   ac_cv_prog_adac_no_long_long=yes
381 else
382   ac_cv_prog_adac_no_long_long=no
383 fi
384 rm -f conftest*])
385 else
386   ac_cv_prog_adac_no_long_long=yes
387 fi
388
389 strict1_warn=
390 if test $ac_cv_prog_cc_no_long_long = yes && \
391     test $ac_cv_prog_adac_no_long_long = yes ; then
392   strict1_warn="-pedantic -Wno-long-long"
393 fi
394 AC_SUBST(strict1_warn)
395
396 AC_PROG_CPP
397 AC_C_INLINE
398 gcc_AC_C_VOLATILE
399
400 gcc_AC_C_LONG_DOUBLE
401 gcc_AC_C_LONG_LONG
402 gcc_AC_C__BOOL
403
404 # sizeof(char) is 1 by definition.
405 gcc_AC_COMPILE_CHECK_SIZEOF(short)
406 gcc_AC_COMPILE_CHECK_SIZEOF(int)
407 gcc_AC_COMPILE_CHECK_SIZEOF(long)
408 if test $ac_cv_c_long_long = yes; then
409   gcc_AC_COMPILE_CHECK_SIZEOF(long long)
410 fi
411 if test $ac_cv_c___int64 = yes; then
412   gcc_AC_COMPILE_CHECK_SIZEOF(__int64)
413 fi
414
415 gcc_AC_C_CHARSET
416
417 # If the native compiler is GCC, we can enable warnings even in stage1.  
418 # That's useful for people building cross-compilers, or just running a
419 # quick `make'.
420 warn_cflags=
421 if test "x$GCC" = "xyes"; then
422   warn_cflags='$(GCC_WARN_CFLAGS)'
423 fi
424 AC_SUBST(warn_cflags)
425
426 # Stage specific cflags for build.
427 stage1_cflags=
428 case $build in
429 vax-*-*)
430   if test x$GCC = xyes
431   then
432     stage1_cflags="-Wa,-J"
433   else
434     stage1_cflags="-J"
435   fi
436   ;;
437 powerpc-*-darwin*)
438   # The spiffy cpp-precomp chokes on some legitimate constructs in GCC
439   # sources; use -no-cpp-precomp to get to GNU cpp.
440   # Apple's GCC has bugs in designated initializer handling, so disable
441   # that too.
442   stage1_cflags="-no-cpp-precomp -DHAVE_DESIGNATED_INITIALIZERS=0"
443   ;;
444 esac
445 AC_SUBST(stage1_cflags)
446
447 AC_PROG_MAKE_SET
448
449 AC_MSG_CHECKING([whether a default assembler was specified])
450 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
451     if test x"$gas_flag" = x"no"; then
452         AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER)])
453     else
454         AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)])
455     fi
456 else
457     AC_MSG_RESULT(no)
458 fi
459
460 AC_MSG_CHECKING([whether a default linker was specified])
461 if test x"${DEFAULT_LINKER+set}" = x"set"; then
462     if test x"$gnu_ld_flag" = x"no"; then
463         AC_MSG_RESULT([yes ($DEFAULT_LINKER)])
464     else
465         AC_MSG_RESULT([yes ($DEFAULT_LINKER - GNU ld)])
466     fi
467 else
468     AC_MSG_RESULT(no)
469 fi
470
471 AC_MSG_CHECKING(for GNU C library)
472 AC_CACHE_VAL(gcc_cv_glibc,
473 [AC_TRY_COMPILE(
474   [#include <features.h>],[
475 #if ! (defined __GLIBC__ || defined __GNU_LIBRARY__)
476 #error Not a GNU C library system
477 #endif], 
478   [gcc_cv_glibc=yes], 
479   gcc_cv_glibc=no)])
480 AC_MSG_RESULT($gcc_cv_glibc)
481 if test $gcc_cv_glibc = yes; then
482   AC_DEFINE(_GNU_SOURCE, 1, [Always define this when using the GNU C Library])
483 fi
484
485 # Find some useful tools
486 AC_PROG_AWK
487 gcc_AC_PROG_LN
488 gcc_AC_PROG_LN_S
489 AC_PROG_RANLIB
490 gcc_AC_PROG_INSTALL
491
492 AC_HEADER_STDC
493 AC_HEADER_TIME
494 gcc_AC_HEADER_STDBOOL
495 gcc_AC_HEADER_STRING
496 AC_HEADER_SYS_WAIT
497 AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h \
498                  fcntl.h unistd.h sys/file.h sys/time.h \
499                  sys/resource.h sys/param.h sys/times.h sys/stat.h \
500                  direct.h malloc.h langinfo.h)
501
502 # Check for thread headers.
503 AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
504 AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
505
506 # These tests can't be done till we know if we have limits.h.
507 gcc_AC_C_CHAR_BIT
508 gcc_AC_C_COMPILE_ENDIAN
509 gcc_AC_C_FLOAT_FORMAT
510
511 # See if we have the mktemp command.
512 AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
513
514 # Do we have a single-tree copy of texinfo?
515 if test -f $srcdir/../texinfo/Makefile.in; then
516   MAKEINFO='$(objdir)/../texinfo/makeinfo/makeinfo'
517   gcc_cv_prog_makeinfo_modern=yes
518   AC_MSG_RESULT([Using makeinfo from the unified source tree.])
519 else
520   # See if makeinfo has been installed and is modern enough
521   # that we can use it.
522   gcc_AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
523   [GNU texinfo.* \([0-9][0-9.]*\)],
524   [4.[1-9]*])
525 fi
526
527 if test $gcc_cv_prog_makeinfo_modern = no; then
528   AC_MSG_WARN([
529 *** Makeinfo is missing or too old.
530 *** Info documentation will not be built.])
531   BUILD_INFO=
532 else
533   BUILD_INFO=info               AC_SUBST(BUILD_INFO)
534 fi
535
536 # Is pod2man recent enough to regenerate manpages?
537 AC_MSG_CHECKING([for recent Pod::Man])
538 if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
539   AC_MSG_RESULT(yes)
540   GENERATED_MANPAGES=generated-manpages         AC_SUBST(GENERATED_MANPAGES)
541 else
542   AC_MSG_RESULT(no)
543   GENERATED_MANPAGES=
544 fi
545
546 # How about lex?
547 dnl Don't use AC_PROG_LEX; we insist on flex.
548 dnl LEXLIB is not useful in gcc.
549 if test -f $srcdir/../flex/skel.c; then
550   FLEX='$(objdir)/../flex/flex'
551 else
552   AC_CHECK_PROG(FLEX, flex, flex, false)
553 fi
554
555 # Bison?
556 # The -L switch is so bison can find its skeleton file.
557 if test -f $srcdir/../bison/bison.simple; then
558   BISON='$(objdir)/../bison/bison -L $(srcdir)/../bison/'
559 else
560   AC_CHECK_PROG(BISON, bison, bison, false)
561 fi
562
563 # These libraries may be used by collect2.
564 # We may need a special search path to get them linked.
565 AC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs,
566 [save_LIBS="$LIBS"
567 for libs in '' -lld -lmld \
568                 '-L/usr/lib/cmplrs/cc2.11 -lmld' \
569                 '-L/usr/lib/cmplrs/cc3.11 -lmld'
570 do
571         LIBS="$libs"
572         AC_TRY_LINK_FUNC(ldopen,
573                 [gcc_cv_collect2_libs="$libs"; break])
574 done
575 LIBS="$save_LIBS"
576 test -z "$gcc_cv_collect2_libs" && gcc_cv_collect2_libs='none required'])
577 case $gcc_cv_collect2_libs in
578         "none required")        ;;
579         *)      COLLECT2_LIBS=$gcc_cv_collect2_libs ;;
580 esac
581 AC_SUBST(COLLECT2_LIBS)
582
583 # When building Ada code on Alpha, we need exc_resume which is usually in
584 # -lexc.  So test for it.
585 save_LIBS="$LIBS"
586 LIBS=
587 AC_SEARCH_LIBS(exc_resume, exc)
588 GNAT_LIBEXC="$LIBS"
589 LIBS="$save_LIBS"
590 AC_SUBST(GNAT_LIBEXC)
591
592 # See if the stage1 system preprocessor understands the ANSI C
593 # preprocessor stringification operator.  (Used by symcat.h.)
594 AC_C_STRINGIZE
595
596 # Use <inttypes.h> only if it exists,
597 # doesn't clash with <sys/types.h>, and declares intmax_t.
598 AC_MSG_CHECKING(for inttypes.h)
599 AC_CACHE_VAL(gcc_cv_header_inttypes_h,
600 [AC_TRY_COMPILE(
601   [#include <sys/types.h>
602 #include <inttypes.h>],
603   [intmax_t i = -1;],
604   [gcc_cv_header_inttypes_h=yes],
605   gcc_cv_header_inttypes_h=no)])
606 AC_MSG_RESULT($gcc_cv_header_inttypes_h)
607 if test $gcc_cv_header_inttypes_h = yes; then
608   AC_DEFINE(HAVE_INTTYPES_H, 1,
609         [Define if you have a working <inttypes.h> header file.])
610 fi
611
612 dnl Disabled until we have a complete test for buggy enum bitfields.
613 dnl gcc_AC_C_ENUM_BF_UNSIGNED
614
615 AC_CHECK_FUNCS(times clock dup2 kill getrlimit setrlimit atoll atoq \
616         sysconf strsignal putc_unlocked fputc_unlocked fputs_unlocked \
617         fwrite_unlocked fprintf_unlocked getrusage nl_langinfo lstat)
618
619 AC_CHECK_TYPE(ssize_t, int)
620
621 # Try to determine the array type of the second argument of getgroups
622 # for the target system (int or gid_t).
623 AC_TYPE_GETGROUPS
624 if test "${target}" = "${build}"; then
625   TARGET_GETGROUPS_T=$ac_cv_type_getgroups
626 else
627   case "${target}" in
628         # This condition may need some tweaking.  It should include all
629         # targets where the array type of the second argument of getgroups
630         # is int and the type of gid_t is not equivalent to int.
631         *-*-sunos* | *-*-ultrix*)
632                 TARGET_GETGROUPS_T=int
633                 ;;
634         *)
635                 TARGET_GETGROUPS_T=gid_t
636                 ;;
637   esac
638 fi
639 AC_SUBST(TARGET_GETGROUPS_T)
640
641 gcc_AC_FUNC_PRINTF_PTR
642
643 case "${host}" in
644 *-*-uwin*)
645   AC_MSG_ERROR([
646 *** UWIN may not be used as a host platform because
647 *** linking with posix.dll is not allowed by the GNU GPL])
648   ;;
649 *-*-*vms*)
650   # Under VMS, vfork works very different than on Unix. The standard test 
651   # won't work, and it isn't easily adaptable. It makes more sense to
652   # just force it.
653   ac_cv_func_vfork_works=yes
654   ;;
655 esac
656 AC_FUNC_VFORK
657 AC_FUNC_MMAP_ANYWHERE
658 AC_FUNC_MMAP_FILE
659
660 AM_ICONV
661
662 # We will need to find libiberty.h and ansidecl.h
663 saved_CFLAGS="$CFLAGS"
664 CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include"
665 gcc_AC_CHECK_DECLS(getenv atol sbrk abort atof getcwd getwd \
666         strsignal putc_unlocked fputs_unlocked fwrite_unlocked \
667         fprintf_unlocked strstr errno \
668         malloc realloc calloc free basename getopt clock, , ,[
669 #include "ansidecl.h"
670 #include "system.h"])
671
672 gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
673 #include "ansidecl.h"
674 #include "system.h"
675 #ifdef HAVE_SYS_RESOURCE_H
676 #include <sys/resource.h>
677 #endif
678 ])
679
680 gcc_AC_CHECK_DECLS(times, , ,[
681 #include "ansidecl.h"
682 #include "system.h"
683 #ifdef HAVE_SYS_TIMES_H
684 #include <sys/times.h>
685 #endif
686 ])
687
688 # More time-related stuff.
689 AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
690 AC_TRY_COMPILE([
691 #include "ansidecl.h"
692 #include "system.h"
693 #ifdef HAVE_SYS_TIMES_H
694 #include <sys/times.h>
695 #endif
696 ], [struct tms tms;], ac_cv_struct_tms=yes, ac_cv_struct_tms=no)])
697 if test $ac_cv_struct_tms = yes; then
698   AC_DEFINE(HAVE_STRUCT_TMS, 1,
699   [Define if <sys/times.h> defines struct tms.])
700 fi
701
702 # use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
703 # revisit after autoconf 2.50.
704 AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
705 AC_TRY_COMPILE([
706 #include "ansidecl.h"
707 #include "system.h"
708 ], [clock_t x;], gcc_cv_type_clock_t=yes, gcc_cv_type_clock_t=no)])
709 if test $gcc_cv_type_clock_t = yes; then
710   AC_DEFINE(HAVE_CLOCK_T, 1,
711   [Define if <time.h> defines clock_t.])
712 fi
713
714 # Restore CFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
715 CFLAGS="$saved_CFLAGS"
716
717 # mkdir takes a single argument on some systems. 
718 gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
719
720 # File extensions
721 manext='.1'
722 objext='.o'
723 AC_SUBST(manext)
724 AC_SUBST(objext)
725
726 build_xm_file=
727 build_xm_defines=
728 build_install_headers_dir=install-headers-tar
729 build_exeext=
730 host_xm_file=
731 host_xm_defines=
732 host_xmake_file=
733 host_truncate_target=
734 host_exeext=
735
736 # Decode the host machine, then the target machine.
737 # For the host machine, we save the xm_file variable as host_xm_file;
738 # then we decode the target machine and forget everything else
739 # that came from the host machine.
740 for machine in $build $host $target; do
741         . ${srcdir}/config.gcc
742 done
743
744 extra_objs="${host_extra_objs} ${extra_objs}"
745
746 # Default the target-machine variables that were not explicitly set.
747 if test x"$tm_file" = x
748 then tm_file=$cpu_type/$cpu_type.h; fi
749
750 if test x"$extra_headers" = x
751 then extra_headers=; fi
752
753 if test x$md_file = x
754 then md_file=$cpu_type/$cpu_type.md; fi
755
756 if test x$out_file = x
757 then out_file=$cpu_type/$cpu_type.c; fi
758
759 if test x"$tmake_file" = x
760 then tmake_file=$cpu_type/t-$cpu_type
761 fi
762
763 if test x"$dwarf2" = xyes
764 then tm_file="$tm_file tm-dwarf2.h"
765 fi
766
767 if test x$float_format = x
768 then float_format=i64
769 fi
770
771 if test $float_format = none
772 then float_h_file=Makefile.in
773 else float_h_file=float-$float_format.h
774 fi
775
776 # Handle cpp installation.
777 if test x$enable_cpp != xno
778 then
779   tmake_file="$tmake_file t-install-cpp"
780 fi
781
782 # Say what files are being used for the output code and MD file.
783 echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
784 echo "Using \`$srcdir/config/$md_file' as machine description file."
785
786 # If any of the xm_file variables contain nonexistent files, warn
787 # about them and drop them.
788
789 bx=
790 for x in $build_xm_file; do
791   if    test -f $srcdir/config/$x
792   then      bx="$bx $x"
793   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
794   fi
795 done
796 build_xm_file="$bx"
797
798 hx=
799 for x in $host_xm_file; do
800   if    test -f $srcdir/config/$x
801   then      hx="$hx $x"
802   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
803   fi
804 done
805 host_xm_file="$hx"
806
807 tx=
808 for x in $xm_file; do
809   if    test -f $srcdir/config/$x
810   then      tx="$tx $x"
811   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
812   fi
813 done
814 xm_file="$tx"
815
816 count=a
817 for f in $tm_file; do
818         count=${count}x
819 done
820 if test $count = ax; then
821         echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
822 else
823         echo "Using the following target machine macro files:"
824         for f in $tm_file; do
825                 echo "  $srcdir/config/$f"
826         done
827 fi
828
829 count=a
830 for f in $host_xm_file; do
831         count=${count}x
832 done
833 if test $count = a; then
834         :
835 elif test $count = ax; then
836         echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
837 else
838         echo "Using the following host machine macro files:"
839         for f in $host_xm_file; do
840                 echo "  $srcdir/config/$f"
841         done
842 fi
843
844 if test "$host_xm_file" != "$build_xm_file"; then
845         count=a
846         for f in $build_xm_file; do
847                 count=${count}x
848         done
849         if test $count = a; then
850                 :
851         elif test $count = ax; then
852                 echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
853         else
854                 echo "Using the following build machine macro files:"
855                 for f in $build_xm_file; do
856                         echo "  $srcdir/config/$f"
857                 done
858         fi
859 fi
860
861 if test x$thread_file = x; then
862         if test x$target_thread_file != x; then
863                 thread_file=$target_thread_file
864         else
865                 thread_file='single'
866         fi
867 fi
868
869 # auto-host.h is the file containing items generated by autoconf and is
870 # the first file included by config.h.
871 # If host=build, it is correct to have hconfig include auto-host.h
872 # as well.  If host!=build, we are in error and need to do more 
873 # work to find out the build config parameters.
874 if test x$host = x$build
875 then
876         build_auto=auto-host.h
877         FORBUILD=..
878 else
879         # We create a subdir, then run autoconf in the subdir.
880         # To prevent recursion we set host and build for the new
881         # invocation of configure to the build for this invocation
882         # of configure. 
883         tempdir=build.$$
884         rm -rf $tempdir
885         mkdir $tempdir
886         cd $tempdir
887         case ${srcdir} in
888         /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
889         *) realsrcdir=../${srcdir};;
890         esac
891         saved_CFLAGS="${CFLAGS}"
892         CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
893         ${realsrcdir}/configure \
894                 --target=$target_alias --host=$build_alias --build=$build_alias
895         CFLAGS="${saved_CFLAGS}"
896
897         # We just finished tests for the build machine, so rename
898         # the file auto-build.h in the gcc directory.
899         mv auto-host.h ../auto-build.h
900         cd ..
901         rm -rf $tempdir
902         build_auto=auto-build.h
903         FORBUILD=../$build
904 fi
905 AC_SUBST(FORBUILD)
906
907 tm_file="${tm_file} defaults.h"
908 host_xm_file="auto-host.h ansidecl.h ${host_xm_file} ${tm_file}"
909 build_xm_file="${build_auto} ansidecl.h ${build_xm_file} ${tm_file}"
910 xm_file="ansidecl.h ${xm_file} ${tm_file}"
911
912 # Truncate the target if necessary
913 if test x$host_truncate_target != x; then
914         target=`echo $target | sed -e 's/\(..............\).*/\1/'`
915 fi
916
917 # Get the version trigger filename from the toplevel
918 if test "${with_gcc_version_trigger+set}" = set; then
919         gcc_version_trigger=$with_gcc_version_trigger
920 else
921         gcc_version_trigger=${srcdir}/version.c
922 fi
923 changequote(,)dnl
924 gcc_version_full=`grep version_string ${gcc_version_trigger} | sed -e 's/.*"\([^"]*\)".*/\1/'`
925 gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
926
927 # Compile in configure arguments.
928 if test -f configargs.h ; then
929         # Being re-configured.
930         gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'`
931         gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
932 else
933         gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
934 fi
935 cat > configargs.h <<EOF
936 /* Generated automatically. */
937 static const char configuration_arguments[] = "$gcc_config_arguments";
938 static const char thread_model[] = "$thread_file";
939 EOF
940 changequote([,])dnl
941
942 # Internationalization
943 PACKAGE=gcc
944 VERSION="$gcc_version"
945 AC_SUBST(PACKAGE)
946 AC_SUBST(VERSION)
947
948 # Enable NLS support by default
949 AC_ARG_ENABLE(nls,
950   [  --enable-nls            use Native Language Support (default)],
951   , enable_nls=yes)
952
953 # if cross compiling, disable NLS support.
954 # It's not worth the trouble, at least for now.
955
956 if test "${build}" != "${host}" && test "x$enable_nls" = "xyes"; then
957   AC_MSG_WARN(Disabling NLS support for canadian cross compiler.)
958   enable_nls=no
959 fi
960
961 AM_GNU_GETTEXT
962
963 # Windows32 Registry support for specifying GCC installation paths.
964 AC_ARG_ENABLE(win32-registry,
965 [  --disable-win32-registry
966                           disable lookup of installation paths in the
967                           Registry on Windows hosts
968   --enable-win32-registry enable registry lookup (default)
969   --enable-win32-registry=KEY
970                           use KEY instead of GCC version as the last portion
971                           of the registry key],,)
972 case $host_os in
973         win32 | pe | cygwin* | mingw32* | uwin*)
974 AC_MSG_CHECKING(whether windows registry support is requested)
975 if test "x$enable_win32_registry" != xno; then
976   AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
977 [Define to 1 if installation paths should be looked up in Windows32
978    Registry. Ignored on non windows32 hosts.])
979   AC_MSG_RESULT(yes)
980   AC_SEARCH_LIBS(RegOpenKeyExA, advapi32)
981 else
982   AC_MSG_RESULT(no)
983 fi
984
985 # Check if user specified a different registry key.
986 case "x${enable_win32_registry}" in
987 x | xyes)
988   # default.
989   gcc_cv_win32_registry_key="$VERSION"
990   ;;
991 xno)
992   # no registry lookup.
993   gcc_cv_win32_registry_key=''
994   ;;
995 *)
996   # user-specified key.
997   gcc_cv_win32_registry_key="$enable_win32_registry"
998   ;;
999 esac
1000
1001 if test "x$enable_win32_registry" != xno; then
1002   AC_MSG_CHECKING(registry key on windows hosts)
1003   AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$gcc_cv_win32_registry_key",
1004         [Define to be the last portion of registry key on windows hosts.])
1005   AC_MSG_RESULT($gcc_cv_win32_registry_key)
1006 fi
1007 ;;
1008 esac
1009
1010 # Get an absolute path to the GCC top-level source directory
1011 holddir=`${PWDCMD-pwd}`
1012 cd $srcdir
1013 topdir=`${PWDCMD-pwd}`
1014 cd $holddir
1015
1016 # Conditionalize the makefile for this host machine.
1017 # Make-host contains the concatenation of all host makefile fragments
1018 # [there can be more than one].  This file is built by configure.frag.
1019 host_overrides=Make-host
1020 dep_host_xmake_file=
1021 for f in .. ${host_xmake_file}
1022 do
1023         if test -f ${srcdir}/config/$f
1024         then
1025                 dep_host_xmake_file="${dep_host_xmake_file} ${srcdir}/config/$f"
1026         fi
1027 done
1028
1029 # Conditionalize the makefile for this target machine.
1030 # Make-target contains the concatenation of all host makefile fragments
1031 # [there can be more than one].  This file is built by configure.frag.
1032 target_overrides=Make-target
1033 dep_tmake_file=
1034 for f in .. ${tmake_file}
1035 do
1036         if test -f ${srcdir}/config/$f
1037         then
1038                 dep_tmake_file="${dep_tmake_file} ${srcdir}/config/$f"
1039         fi
1040 done
1041
1042 # If the host doesn't support symlinks, modify CC in
1043 # FLAGS_TO_PASS so CC="stage1/xgcc -Bstage1/" works.
1044 # Otherwise, we can use "CC=$(CC)".
1045 rm -f symtest.tem
1046 if $symbolic_link $srcdir/gcc.c symtest.tem 2>/dev/null
1047 then
1048         cc_set_by_configure="\$(CC)"
1049         quoted_cc_set_by_configure="\$(CC)"
1050         stage_prefix_set_by_configure="\$(STAGE_PREFIX)"
1051         quoted_stage_prefix_set_by_configure="\$(STAGE_PREFIX)"
1052 else
1053         rm -f symtest.tem
1054         if cp -p $srcdir/gcc.c symtest.tem 2>/dev/null
1055         then
1056                 symbolic_link="cp -p"
1057         else
1058                 symbolic_link="cp"
1059         fi
1060         cc_set_by_configure="\`case '\$(CC)' in stage*) echo '\$(CC)' | sed -e 's|stage|../stage|g';; *) echo '\$(CC)';; esac\`"
1061         quoted_cc_set_by_configure="\\\`case '\\\$(CC)' in stage*) echo '\\\$(CC)' | sed -e 's|stage|../stage|g';; *) echo '\\\$(CC)';; esac\\\`"
1062         stage_prefix_set_by_configure="\`case '\$(STAGE_PREFIX)' in stage*) echo '\$(STAGE_PREFIX)' | sed -e 's|stage|../stage|g';; *) echo '\$(STAGE_PREFIX)';; esac\`"
1063         quoted_stage_prefix_set_by_configure="\\\`case '\\\$(STAGE_PREFIX)' in stage*) echo '\\\$(STAGE_PREFIX)' | sed -e 's|stage|../stage|g';; *) echo '\\\$(STAGE_PREFIX)';; esac\\\`"
1064 fi
1065 rm -f symtest.tem
1066
1067 out_object_file=`basename $out_file .c`.o
1068
1069 tm_file_list=
1070 for f in $tm_file; do
1071   case $f in
1072     ansidecl.h )
1073        tm_file_list="${tm_file_list} \$(srcdir)/../include/ansidecl.h" ;;
1074     defaults.h )
1075        tm_file_list="${tm_file_list} $f" ;;
1076     *) tm_file_list="${tm_file_list} \$(srcdir)/config/$f" ;;
1077   esac
1078 done
1079
1080 tm_p_file_list=
1081 for f in $tm_p_file; do
1082     tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f"
1083 done
1084
1085 host_xm_file_list=
1086 for f in $host_xm_file; do
1087   case $f in
1088     ansidecl.h )
1089        host_xm_file_list="${host_xm_file_list} \$(srcdir)/../include/ansidecl.h" ;;
1090     auto-host.h | defaults.h )
1091        host_xm_file_list="${host_xm_file_list} $f" ;;
1092     *) host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f" ;;
1093   esac
1094 done
1095
1096 build_xm_file_list=
1097 for f in $build_xm_file; do
1098   case $f in
1099     ansidecl.h )
1100        build_xm_file_list="${build_xm_file_list} \$(srcdir)/../include/ansidecl.h" ;;
1101     auto-build.h | auto-host.h | defaults.h )
1102        build_xm_file_list="${build_xm_file_list} $f" ;;
1103     *) build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f" ;;
1104   esac
1105 done
1106
1107 # Define macro CROSS_COMPILE in compilation if this is a cross-compiler.
1108 # Also use all.cross instead of all.internal and adjust SYSTEM_HEADER_DIR.
1109 CROSS=                                          AC_SUBST(CROSS)
1110 ALL=all.internal                                AC_SUBST(ALL)
1111 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' AC_SUBST(SYSTEM_HEADER_DIR)
1112 if test x$host != x$target
1113 then
1114         CROSS="-DCROSS_COMPILE"
1115         ALL=all.cross
1116         SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)'
1117 fi
1118
1119 # If this is a cross-compiler that does not
1120 # have its own set of headers then define
1121 # inhibit_libc
1122
1123 # If this is using newlib, then define inhibit_libc in LIBGCC2_CFLAGS.
1124 # This prevents libgcc2 from containing any code which requires libc
1125 # support.
1126 inhibit_libc=
1127 if [test x$host != x$target] && [test x$with_headers = x]; then
1128        inhibit_libc=-Dinhibit_libc
1129 else
1130        if [test x$with_newlib = xyes]; then
1131                inhibit_libc=-Dinhibit_libc
1132        fi
1133 fi
1134 AC_SUBST(inhibit_libc)
1135
1136 # When building gcc with a cross-compiler, we need to adjust things so
1137 # that the generator programs are still built with the native compiler.
1138 # Also, we cannot run fixincludes or fix-header.
1139 # Note that the terminology here is wrong; it should be BUILD_* throughout.
1140 # FIXME.
1141
1142 # These are the normal (build=host) settings:
1143 HOST_PREFIX=                    AC_SUBST(HOST_PREFIX)
1144 HOST_PREFIX_1=ignore-           AC_SUBST(HOST_PREFIX_1)
1145 HOST_CC='$(CC)'                 AC_SUBST(HOST_CC)
1146 HOST_CFLAGS='$(ALL_CFLAGS)'     AC_SUBST(HOST_CFLAGS)
1147
1148 STMP_FIXINC=stmp-fixinc         AC_SUBST(STMP_FIXINC)
1149 STMP_FIXPROTO=stmp-fixproto     AC_SUBST(STMP_FIXPROTO)
1150
1151 # And these apply if build != host.
1152 if test x$build != x$host
1153 then
1154     HOST_PREFIX=build-
1155     HOST_PREFIX_1=build-
1156     HOST_CC='$(CC_FOR_BUILD)'
1157     HOST_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD) $(XCFLAGS)'
1158
1159     STMP_FIXINC=
1160     STMP_FIXPROTO=
1161 fi
1162
1163 # Expand extra_headers to include complete path.
1164 # This substitutes for lots of t-* files.
1165 extra_headers_list=
1166 if test "x$extra_headers" = x
1167 then true
1168 else
1169         # Prepend ${srcdir}/config/${cpu_type}/ to every entry in extra_headers.
1170         for file in $extra_headers;
1171         do
1172                 extra_headers_list="${extra_headers_list} \$(srcdir)/config/${cpu_type}/${file}"
1173         done
1174 fi
1175
1176 if test x$use_collect2 = xno; then
1177         use_collect2=
1178 fi
1179
1180 # Add a definition of USE_COLLECT2 if system wants one.
1181 if test x$use_collect2 != x
1182 then
1183         host_xm_defines="${host_xm_defines} USE_COLLECT2"
1184         xm_defines="${xm_defines} USE_COLLECT2"
1185 fi
1186
1187 # If we have gas in the build tree, make a link to it.
1188 if test -f ../gas/Makefile; then
1189         rm -f as; $symbolic_link ../gas/as-new$host_exeext as$host_exeext 2>/dev/null
1190 fi
1191
1192 # If we have nm and objdump in the build tree, make a link to them.
1193 if test -f ../binutils/Makefile; then
1194         rm -f nm; $symbolic_link ../binutils/nm-new$host_exeext nm$host_exeext 2>/dev/null
1195         rm -f objdump; $symbolic_link ../binutils/objdump$host_exeext objdump$host_exeext 2>/dev/null
1196 fi
1197
1198 # If we have ld in the build tree, make a link to it.
1199 if test -f ../ld/Makefile; then
1200         rm -f collect-ld; $symbolic_link ../ld/ld-new$host_exeext collect-ld$host_exeext 2>/dev/null
1201 fi
1202
1203 # Figure out what assembler we will be using.
1204 AC_MSG_CHECKING(what assembler to use)
1205 gcc_cv_as=
1206 gcc_cv_gas_major_version=
1207 gcc_cv_gas_minor_version=
1208 gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
1209 gcc_cv_as_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
1210 if test -x "$DEFAULT_ASSEMBLER"; then
1211         gcc_cv_as="$DEFAULT_ASSEMBLER"
1212 elif test -x "$AS"; then
1213         gcc_cv_as="$AS"
1214 elif test -x as$host_exeext; then
1215         # Build using assembler in the current directory.
1216         gcc_cv_as=./as$host_exeext
1217 elif test -f $gcc_cv_as_gas_srcdir/configure.in -a -f ../gas/Makefile; then
1218         # Single tree build which includes gas.
1219         for f in $gcc_cv_as_bfd_srcdir/configure $gcc_cv_as_gas_srcdir/configure $gcc_cv_as_gas_srcdir/configure.in $gcc_cv_as_gas_srcdir/Makefile.in
1220         do
1221 changequote(,)dnl
1222                 gcc_cv_gas_version=`grep '^VERSION=[0-9]*\.[0-9]*' $f`
1223 changequote([,])dnl
1224                 if test x$gcc_cv_gas_version != x; then
1225                         break
1226                 fi
1227         done
1228 changequote(,)dnl
1229         gcc_cv_gas_major_version=`expr "$gcc_cv_gas_version" : "VERSION=\([0-9]*\)"`
1230         gcc_cv_gas_minor_version=`expr "$gcc_cv_gas_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
1231         gcc_cv_gas_patch_version=`expr "$gcc_cv_gas_version" : "VERSION=[0-9]*\.[0-9]*\.\([0-9]*\)"`
1232 changequote([,])dnl
1233 fi
1234
1235 if test "x$gcc_cv_as" = x; then
1236         # Search the same directories that the installed compiler will
1237         # search.  Else we may find the wrong assembler and lose.  If we
1238         # do not find a suitable assembler binary, then try the user's
1239         # path.
1240         #
1241         # Also note we have to check MD_EXEC_PREFIX before checking the
1242         # user's path.  Unfortunately, there is no good way to get at the
1243         # value of MD_EXEC_PREFIX here.  So we do a brute force search
1244         # through all the known MD_EXEC_PREFIX values.  Ugh.  This needs
1245         # to be fixed as part of the make/configure rewrite too.
1246
1247         if test "x$exec_prefix" = xNONE; then
1248                 if test "x$prefix" = xNONE; then
1249                         test_prefix=/usr/local
1250                 else
1251                         test_prefix=$prefix
1252                 fi
1253         else
1254                 test_prefix=$exec_prefix
1255         fi
1256
1257         # If the loop below does not find an assembler, then use whatever
1258         # one we can find in the users's path.
1259         # user's path.
1260         if test "x$program_prefix" != xNONE; then
1261                 gcc_cv_as=${program_prefix}as$host_exeext
1262         else
1263                 gcc_cv_as=`echo as | sed ${program_transform_name}`$host_exeext
1264         fi
1265
1266         test_dirs="$test_prefix/lib/gcc-lib/$target_alias/$gcc_version \
1267                    $test_prefix/lib/gcc-lib/$target_alias \
1268                    /usr/lib/gcc/$target_alias/$gcc_version \
1269                    /usr/lib/gcc/$target_alias \
1270                    $test_prefix/$target_alias/bin/$target_alias/$gcc_version \
1271                    $test_prefix/$target_alias/bin"
1272
1273         if test x$host = x$target; then
1274             test_dirs="$test_dirs \
1275                    /usr/libexec \
1276                    /usr/ccs/gcc \
1277                    /usr/ccs/bin \
1278                    /udk/usr/ccs/bin \
1279                    /bsd43/usr/lib/cmplrs/cc \
1280                    /usr/cross64/usr/bin \
1281                    /usr/lib/cmplrs/cc \
1282                    /sysv/usr/lib/cmplrs/cc \
1283                    /svr4/usr/lib/cmplrs/cc \
1284                    /usr/bin"
1285         fi
1286
1287         for dir in $test_dirs; do
1288                 if test -x $dir/as$host_exeext; then
1289                         gcc_cv_as=$dir/as$host_exeext
1290                         break;
1291                 fi
1292         done
1293 fi
1294 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1295   AC_MSG_RESULT("newly built gas")
1296 else
1297   AC_MSG_RESULT($gcc_cv_as)
1298 fi
1299
1300 # Figure out what linker we will be using.
1301 AC_MSG_CHECKING(what linker to use)
1302 gcc_cv_ld=
1303 gcc_cv_gld_major_version=
1304 gcc_cv_gld_minor_version=
1305 gcc_cv_ld_gld_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/ld
1306 gcc_cv_ld_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
1307 if test -x "$DEFAULT_LINKER"; then
1308         gcc_cv_ld="$DEFAULT_LINKER"
1309 elif test -x "$LD"; then
1310         gcc_cv_ld="$LD"
1311 elif test -x ld$host_exeext; then
1312         # Build using linker in the current directory.
1313         gcc_cv_ld=./ld$host_exeext
1314 elif test -f $gcc_cv_ld_gld_srcdir/configure.in -a -f ../ld/Makefile; then
1315         # Single tree build which includes ld.
1316         for f in $gcc_cv_ld_bfd_srcdir/configure $gcc_cv_ld_gld_srcdir/configure $gcc_cv_ld_gld_srcdir/configure.in $gcc_cv_ld_gld_srcdir/Makefile.in
1317         do
1318 changequote(,)dnl
1319                 gcc_cv_gld_version=`grep '^VERSION=[0-9]*\.[0-9]*' $f`
1320 changequote([,])dnl
1321                 if test x$gcc_cv_gld_version != x; then
1322                         break
1323                 fi
1324         done
1325 changequote(,)dnl
1326         gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
1327         gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
1328 changequote([,])dnl
1329 fi
1330
1331 if test "x$gcc_cv_ld" = x; then
1332         # Search the same directories that the installed compiler will
1333         # search.  Else we may find the wrong linker and lose.  If we
1334         # do not find a suitable linker binary, then try the user's
1335         # path.
1336         #
1337         # Also note we have to check MD_EXEC_PREFIX before checking the
1338         # user's path.  Unfortunately, there is no good way to get at the
1339         # value of MD_EXEC_PREFIX here.  So we do a brute force search
1340         # through all the known MD_EXEC_PREFIX values.  Ugh.  This needs
1341         # to be fixed as part of the make/configure rewrite too.
1342
1343         if test "x$exec_prefix" = xNONE; then
1344                 if test "x$prefix" = xNONE; then
1345                         test_prefix=/usr/local
1346                 else
1347                         test_prefix=$prefix
1348                 fi
1349         else
1350                 test_prefix=$exec_prefix
1351         fi
1352
1353         # If the loop below does not find an linker, then use whatever
1354         # one we can find in the users's path.
1355         # user's path.
1356         if test "x$program_prefix" != xNONE; then
1357                 gcc_cv_ld=${program_prefix}ld$host_exeext
1358         else
1359                 gcc_cv_ld=`echo ld | sed ${program_transform_name}`$host_exeext
1360         fi
1361
1362         test_dirs="$test_prefix/lib/gcc-lib/$target_alias/$gcc_version \
1363                    $test_prefix/lib/gcc-lib/$target_alias \
1364                    /usr/lib/gcc/$target_alias/$gcc_version \
1365                    /usr/lib/gcc/$target_alias \
1366                    $test_prefix/$target_alias/bin/$target_alias/$gcc_version \
1367                    $test_prefix/$target_alias/bin"
1368
1369         if test x$host = x$target; then
1370             test_dirs="$test_dirs \
1371                    /usr/libexec \
1372                    /usr/ccs/gcc \
1373                    /usr/ccs/bin \
1374                    /udk/usr/ccs/bin \
1375                    /bsd43/usr/lib/cmplrs/cc \
1376                    /usr/cross64/usr/bin \
1377                    /usr/lib/cmplrs/cc \
1378                    /sysv/usr/lib/cmplrs/cc \
1379                    /svr4/usr/lib/cmplrs/cc \
1380                    /usr/bin"
1381         fi
1382
1383         for dir in $test_dirs; do
1384                 if test -x $dir/ld$host_exeext; then
1385                         gcc_cv_ld=$dir/ld$host_exeext
1386                         break;
1387                 fi
1388         done
1389 fi
1390 if test x$gcc_cv_gld_major_version != x -a x$gcc_cv_gld_minor_version != x; then
1391   AC_MSG_RESULT("newly built ld")
1392 else
1393   AC_MSG_RESULT($gcc_cv_ld)
1394 fi
1395
1396 # Figure out what nm we will be using.
1397 AC_MSG_CHECKING(what nm to use)
1398 if test -x nm$host_exeext; then
1399         gcc_cv_nm=./nm$host_exeext
1400 elif test "x$program_prefix" != xNONE; then
1401         gcc_cv_nm=${program_prefix}nm$host_exeext
1402 else
1403         gcc_cv_nm=`echo nm | sed ${program_transform_name}`$host_exeext
1404 fi
1405 AC_MSG_RESULT($gcc_cv_nm)
1406
1407 # Figure out what objdump we will be using.
1408 AC_MSG_CHECKING(what objdump to use)
1409 if test -x objdump$host_exeext; then
1410         gcc_cv_objdump=./objdump$host_exeext
1411 elif test "x$program_prefix" != xNONE; then
1412         gcc_cv_objdump=${program_prefix}objdump$host_exeext
1413 else
1414         gcc_cv_objdump=`echo objdump | sed ${program_transform_name}`$host_exeext
1415 fi
1416 AC_MSG_RESULT($gcc_cv_objdump)
1417
1418 # Figure out what assembler alignment features are present.
1419 AC_MSG_CHECKING(assembler alignment features)
1420 gcc_cv_as_alignment_features=none
1421 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1422         # Gas version 2.6 and later support for .balign and .p2align.
1423         # bytes to skip when using .p2align.
1424         if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 6 -o "$gcc_cv_gas_major_version" -gt 2; then
1425                 gcc_cv_as_alignment_features=".balign and .p2align"
1426                 AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN)
1427         fi
1428         # Gas version 2.8 and later support specifying the maximum
1429         # bytes to skip when using .p2align.
1430         if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 8 -o "$gcc_cv_gas_major_version" -gt 2; then
1431                 gcc_cv_as_alignment_features=".p2align including maximum skip"
1432                 AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN)
1433         fi
1434 elif test x$gcc_cv_as != x; then
1435         # Check if we have .balign and .p2align
1436         echo ".balign  4" > conftest.s
1437         echo ".p2align  2" >> conftest.s
1438         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1439                 gcc_cv_as_alignment_features=".balign and .p2align"
1440                 AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN)
1441         fi
1442         rm -f conftest.s conftest.o
1443         # Check if specifying the maximum bytes to skip when
1444         # using .p2align is supported.
1445         echo ".p2align 4,,7" > conftest.s
1446         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1447                 gcc_cv_as_alignment_features=".p2align including maximum skip"
1448                 AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN)
1449         fi
1450         rm -f conftest.s conftest.o
1451 fi
1452 AC_MSG_RESULT($gcc_cv_as_alignment_features)
1453
1454 AC_MSG_CHECKING(assembler subsection support)
1455 gcc_cv_as_subsections=no
1456 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1457   if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 9 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
1458     gcc_cv_as_subsections="working .subsection -1"
1459   fi
1460 elif test x$gcc_cv_as != x; then
1461         # Check if we have .subsection
1462         echo ".subsection 1" > conftest.s
1463         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1464                 gcc_cv_as_subsections=".subsection"
1465                 if test x$gcc_cv_nm != x; then
1466                         cat > conftest.s <<EOF
1467 conftest_label1: .word 0
1468 .subsection -1
1469 conftest_label2: .word 0
1470 .previous
1471 EOF
1472                         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1473                                 $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
1474                                 $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
1475                                 if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1; then
1476                                         :
1477                                 else
1478                                         gcc_cv_as_subsections="working .subsection -1"
1479                                 fi
1480                         fi
1481                 fi
1482         fi
1483         rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1484 fi
1485 if test x"$gcc_cv_as_subsections" = x"working .subsection -1"; then
1486         AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
1487 [Define if your assembler supports .subsection and .subsection -1 starts
1488    emitting at the beginning of your section.])
1489 fi
1490 AC_MSG_RESULT($gcc_cv_as_subsections)
1491
1492 AC_MSG_CHECKING(assembler weak support)
1493 gcc_cv_as_weak=no
1494 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1495   if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 2 -o "$gcc_cv_gas_major_version" -gt 2; then
1496     gcc_cv_as_weak="yes"
1497   fi
1498 elif test x$gcc_cv_as != x; then
1499         # Check if we have .weak
1500         echo "  .weak foobar" > conftest.s
1501         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1502                 gcc_cv_as_weak="yes"
1503         fi
1504         rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1505 fi
1506 if test x"$gcc_cv_as_weak" = xyes; then
1507         AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])
1508 fi
1509 AC_MSG_RESULT($gcc_cv_as_weak)
1510
1511 AC_MSG_CHECKING(assembler hidden support)
1512 gcc_cv_as_hidden=no
1513 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1514   if test "$gcc_cv_gas_major_version" -eq 2     \
1515           -a "$gcc_cv_gas_minor_version" -eq 12 \
1516           -a "$gcc_cv_gas_patch_version" -ge 1  \
1517           -o "$gcc_cv_gas_major_version" -eq 2  \
1518           -a "$gcc_cv_gas_minor_version" -gt 12 \
1519           -o "$gcc_cv_gas_major_version" -gt 2  \
1520     && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
1521     gcc_cv_as_hidden="yes"
1522   fi
1523 elif test x$gcc_cv_as != x; then
1524         # Check if we have .hidden
1525         echo "  .hidden foobar" > conftest.s
1526         echo "foobar:" >> conftest.s
1527         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1528                 gcc_cv_as_hidden="yes"
1529         fi
1530         rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1531
1532         # GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
1533         # This is irritatingly difficult to feature test for.  Look for 
1534         # the date string after the version number.
1535         ld_ver=`$gcc_cv_ld --version 2>/dev/null | head -1`
1536         if echo "$ld_ver" | grep GNU > /dev/null; then
1537 changequote(,)dnl
1538                 ld_date=`echo $ld_ver | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)[-]*\([01][0-9]\)[-]*\([0-3][0-9]\).*$,\1\2\3,;p'`
1539 changequote([,])dnl
1540                 if test 0"$ld_date" -lt 20020404; then
1541                         gcc_cv_as_hidden="no"
1542                 fi
1543         fi
1544 fi
1545 if test x"$gcc_cv_as_hidden" = xyes; then
1546         AC_DEFINE(HAVE_GAS_HIDDEN, 1,
1547                 [Define if your assembler supports .hidden.])
1548 fi
1549 AC_MSG_RESULT($gcc_cv_as_hidden)
1550 libgcc_visibility=$gcc_cv_as_hidden
1551 AC_SUBST(libgcc_visibility)
1552
1553 AC_MSG_CHECKING(assembler leb128 support)
1554 gcc_cv_as_leb128=no
1555 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1556   if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 11 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
1557     gcc_cv_as_leb128="yes"
1558   fi
1559 elif test x$gcc_cv_as != x; then
1560         # Check if we have .[us]leb128, and support symbol arithmetic with it.
1561         cat > conftest.s <<EOF
1562         .data
1563         .uleb128 L2 - L1
1564 L1:
1565         .uleb128 1280
1566         .sleb128 -1010
1567 L2:
1568 EOF
1569         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1570                 gcc_cv_as_leb128="yes"
1571
1572                 # GAS versions before 2.11 do not support uleb128,
1573                 # despite appearing to.
1574                 # ??? There exists an elf-specific test that will crash
1575                 # the assembler.  Perhaps it's better to figure out whether
1576                 # arbitrary sections are supported and try the test.
1577                 as_ver=`$gcc_cv_as --version 2>/dev/null | head -1`
1578                 if echo "$as_ver" | grep GNU > /dev/null; then
1579 changequote(,)dnl
1580                         as_ver=`echo $as_ver | sed -e 's/GNU assembler \([0-9.][0-9.]*\).*/\1/'`
1581                         as_major=`echo $as_ver | sed 's/\..*//'`
1582                         as_minor=`echo $as_ver | sed 's/[^.]*\.\([0-9]*\).*/\1/'`
1583 changequote([,])dnl
1584                         if test $as_major -eq 2 -a $as_minor -lt 11; then
1585                                 gcc_cv_as_leb128="no"
1586                         fi
1587                 fi
1588         fi
1589         rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1590 fi
1591 if test x"$gcc_cv_as_leb128" = xyes; then
1592         AC_DEFINE(HAVE_AS_LEB128, 1,
1593                 [Define if your assembler supports .uleb128.])
1594 fi
1595 AC_MSG_RESULT($gcc_cv_as_leb128)
1596
1597 AC_MSG_CHECKING(assembler eh_frame optimization)
1598 gcc_cv_as_eh_frame=no
1599 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1600   if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 12 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
1601     gcc_cv_as_eh_frame="yes"
1602   fi
1603 elif test x$gcc_cv_as != x; then
1604         # Check if this is GAS.
1605         as_ver=`$gcc_cv_as --version < /dev/null 2> /dev/null | head -1`
1606         rm -f a.out 2> /dev/null
1607         if echo "$as_ver" | grep GNU > /dev/null; then
1608                 # Versions up to and including 2.11.0 may mis-optimize
1609                 # .eh_frame data.  Try something.
1610                 cat > conftest.s <<EOF
1611         .text
1612 .LFB1:
1613         .4byte  0
1614 .L1:
1615         .4byte  0
1616 .LFE1:
1617         .section        .eh_frame,"aw",@progbits
1618 __FRAME_BEGIN__:
1619         .4byte  .LECIE1-.LSCIE1
1620 .LSCIE1:
1621         .4byte  0x0
1622         .byte   0x1
1623         .ascii "z\0"
1624         .byte   0x1
1625         .byte   0x78
1626         .byte   0x1a
1627         .byte   0x0
1628         .byte   0x4
1629         .4byte  1
1630         .p2align 1
1631 .LECIE1:
1632 .LSFDE1:
1633         .4byte  .LEFDE1-.LASFDE1
1634 .LASFDE1:
1635         .4byte  .LASFDE1-__FRAME_BEGIN__
1636         .4byte  .LFB1
1637         .4byte  .LFE1-.LFB1
1638         .byte   0x4
1639         .4byte  .LFE1-.LFB1
1640         .byte   0x4
1641         .4byte  .L1-.LFB1
1642 .LEFDE1:
1643 EOF
1644                 cat > conftest.lit <<EOF
1645  0000 10000000 00000000 017a0001 781a0004  .........z..x...
1646  0010 01000000 12000000 18000000 00000000  ................
1647  0020 08000000 04080000 0044               .........D      
1648 EOF
1649                 cat > conftest.big <<EOF
1650  0000 00000010 00000000 017a0001 781a0004  .........z..x...
1651  0010 00000001 00000012 00000018 00000000  ................
1652  0020 00000008 04000000 0844               .........D      
1653 EOF
1654                 # If the assembler didn't choke, and we can objdump,
1655                 # and we got the correct data, then succeed.
1656                 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
1657                    && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
1658                       | tail -3 > conftest.got \
1659                    && { cmp conftest.lit conftest.got > /dev/null 2>&1 \
1660                         || cmp conftest.big conftest.got > /dev/null 2>&1; }
1661                 then
1662                         gcc_cv_as_eh_frame="yes"
1663                 else
1664                         gcc_cv_as_eh_frame="bad"
1665                         if $gcc_cv_as -o conftest.o --traditional-format /dev/null; then
1666                                 AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
1667         [Define if your assembler mis-optimizes .eh_frame data.])
1668                         fi
1669                 fi
1670         fi
1671         rm -f conftest.*
1672 fi
1673 AC_MSG_RESULT($gcc_cv_as_eh_frame)
1674
1675 AC_MSG_CHECKING(assembler section merging support)
1676 gcc_cv_as_shf_merge=no
1677 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1678   if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 12 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
1679     gcc_cv_as_shf_merge=yes
1680   fi
1681 elif test x$gcc_cv_as != x; then
1682         # Check if we support SHF_MERGE sections
1683         echo '.section .rodata.str, "aMS", @progbits, 1' > conftest.s
1684         if $gcc_cv_as --fatal-warnings -o conftest.o conftest.s > /dev/null 2>&1; then
1685                 gcc_cv_as_shf_merge=yes
1686         fi
1687         rm -f conftest.s conftest.o
1688 fi
1689 if test x"$gcc_cv_as_shf_merge" = xyes; then
1690         AC_DEFINE(HAVE_GAS_SHF_MERGE, 1,
1691 [Define if your assembler supports marking sections with SHF_MERGE flag.])
1692 fi
1693 AC_MSG_RESULT($gcc_cv_as_shf_merge)
1694
1695 case "$target" in
1696   # All TARGET_ABI_OSF targets.
1697   alpha*-*-osf* | alpha*-*-linux* | alpha*-*-*bsd*)
1698     AC_CACHE_CHECK([assembler supports explicit relocations],
1699         gcc_cv_as_explicit_relocs, [
1700         gcc_cv_as_explicit_relocs=unknown
1701         if test x$gcc_cv_gas_major_version != x \
1702                 -a x$gcc_cv_gas_minor_version != x
1703         then
1704            if test "$gcc_cv_gas_major_version" -eq 2 \
1705                    -a "$gcc_cv_gas_minor_version" -ge 12 \
1706                    -o "$gcc_cv_gas_major_version" -gt 2; then
1707               gcc_cv_as_explicit_relocs=yes
1708            fi
1709         elif test x$gcc_cv_as != x; then
1710             cat > conftest.s << 'EOF'
1711         .set nomacro
1712         .text
1713         extbl   $3, $2, $3      !lituse_bytoff!1
1714         ldq     $2, a($29)      !literal!1
1715         ldq     $4, b($29)      !literal!2
1716         ldq_u   $3, 0($2)       !lituse_base!1
1717         ldq     $27, f($29)     !literal!5
1718         jsr     $26, ($27), f   !lituse_jsr!5
1719         ldah    $29, 0($26)     !gpdisp!3
1720         lda     $0, c($29)      !gprel
1721         ldah    $1, d($29)      !gprelhigh
1722         lda     $1, d($1)       !gprellow
1723         lda     $29, 0($29)     !gpdisp!3
1724 EOF
1725             if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1726                 gcc_cv_as_explicit_relocs=yes
1727             else
1728                 gcc_cv_as_explicit_relocs=no
1729             fi
1730             rm -f conftest.s conftest.o
1731         fi
1732     ])
1733     if test "x$gcc_cv_as_explicit_relocs" = xyes; then
1734         AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
1735                 [Define if your assembler supports explicit relocations.])
1736     fi
1737     ;;
1738   sparc*-*-*)
1739     AC_CACHE_CHECK([assembler .register pseudo-op support],
1740         gcc_cv_as_register_pseudo_op, [
1741         gcc_cv_as_register_pseudo_op=unknown
1742         if test x$gcc_cv_as != x; then
1743             # Check if we have .register
1744             echo ".register %g2, #scratch" > conftest.s
1745             if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1746                 gcc_cv_as_register_pseudo_op=yes
1747             else
1748                 gcc_cv_as_register_pseudo_op=no
1749             fi
1750             rm -f conftest.s conftest.o
1751         fi
1752     ])
1753     if test "x$gcc_cv_as_register_pseudo_op" = xyes; then
1754         AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
1755                 [Define if your assembler supports .register.])
1756     fi
1757
1758     AC_CACHE_CHECK([assembler supports -relax],
1759         gcc_cv_as_relax_opt, [
1760         gcc_cv_as_relax_opt=unknown
1761         if test x$gcc_cv_as != x; then
1762             # Check if gas supports -relax
1763             echo ".text" > conftest.s
1764             if $gcc_cv_as -relax -o conftest.o conftest.s > /dev/null 2>&1; then
1765                 gcc_cv_as_relax_opt=yes
1766             else
1767                 gcc_cv_as_relax_opt=no
1768             fi
1769             rm -f conftest.s conftest.o
1770         fi
1771     ])
1772     if test "x$gcc_cv_as_relax_opt" = xyes; then
1773         AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
1774                 [Define if your assembler supports -relax option.])
1775     fi
1776
1777     AC_CACHE_CHECK([assembler and linker support unaligned pc related relocs],
1778         gcc_cv_as_sparc_ua_pcrel, [
1779         gcc_cv_as_sparc_ua_pcrel=unknown
1780         if test x$gcc_cv_as != x -a x$gcc_cv_ld != x; then
1781             gcc_cv_as_sparc_ua_pcrel=no
1782             echo ".text; foo: nop; .data; .align 4; .byte 0; .uaword %r_disp32(foo)" > conftest.s
1783             if $gcc_cv_as -K PIC -o conftest.o conftest.s > /dev/null 2>&1 \
1784                && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
1785                 gcc_cv_as_sparc_ua_pcrel=yes
1786             fi
1787             rm -f conftest.s conftest.o conftest
1788         fi
1789     ])
1790     if test "x$gcc_cv_as_sparc_ua_pcrel" = xyes; then
1791         AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
1792                 [Define if your assembler and linker support unaligned PC relative relocs.])
1793     fi
1794
1795     AC_CACHE_CHECK([assembler and linker support unaligned pc related relocs against hidden symbols],
1796         gcc_cv_as_sparc_ua_pcrel_hidden, [
1797         if test "x$gcc_cv_as_sparc_ua_pcrel" = xyes; then
1798             gcc_cv_as_sparc_ua_pcrel_hidden=unknown
1799             if test x$gcc_cv_objdump != x; then
1800                 gcc_cv_as_sparc_ua_pcrel_hidden=no
1801                 echo ".data; .align 4; .byte 0x31; .uaword %r_disp32(foo)" > conftest.s
1802                 echo ".byte 0x32, 0x33, 0x34; .global foo; .hidden foo" >> conftest.s
1803                 echo "foo: .skip 4" >> conftest.s
1804                 if $gcc_cv_as -K PIC -o conftest.o conftest.s > /dev/null 2>&1 \
1805                    && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
1806                    && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
1807                       | grep ' 31000000 07323334' > /dev/null 2>&1; then
1808                     if $gcc_cv_objdump -R conftest 2> /dev/null \
1809                        | grep 'DISP32' > /dev/null 2>&1; then
1810                         :
1811                     else
1812                         gcc_cv_as_sparc_ua_pcrel_hidden=yes
1813                     fi
1814                 fi
1815             fi
1816             rm -f conftest.s conftest.o conftest
1817         else
1818             gcc_cv_as_sparc_ua_pcrel_hidden="$gcc_cv_as_sparc_ua_pcrel"
1819         fi
1820     ])
1821     if test "x$gcc_cv_as_sparc_ua_pcrel_hidden" = xyes; then
1822         AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
1823                 [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])
1824     fi
1825
1826     if test "x$gcc_cv_as_flags64" != xno; then
1827         AC_CACHE_CHECK([for assembler offsetable %lo() support],
1828             gcc_cv_as_offsetable_lo10, [
1829             gcc_cv_as_offsetable_lo10=unknown
1830             if test "x$gcc_cv_as" != x; then
1831                 # Check if assembler has offsetable %lo()
1832                 echo "or %g1, %lo(ab) + 12, %g1" > conftest.s
1833                 echo "or %g1, %lo(ab + 12), %g1" > conftest1.s
1834                 if $gcc_cv_as $gcc_cv_as_flags64 -o conftest.o conftest.s \
1835                         > /dev/null 2>&1 &&
1836                    $gcc_cv_as $gcc_cv_as_flags64 -o conftest1.o conftest1.s \
1837                         > /dev/null 2>&1; then
1838                     if cmp conftest.o conftest1.o > /dev/null 2>&1; then
1839                         gcc_cv_as_offsetable_lo10=no
1840                     else
1841                         gcc_cv_as_offsetable_lo10=yes
1842                     fi
1843                 else
1844                     gcc_cv_as_offsetable_lo10=no
1845                 fi
1846                 rm -f conftest.s conftest.o conftest1.s conftest1.o
1847             fi
1848         ])
1849         if test "x$gcc_cv_as_offsetable_lo10" = xyes; then
1850             AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
1851                 [Define if your assembler supports offsetable %lo().])
1852         fi
1853     fi
1854
1855     ;;
1856
1857 changequote(,)dnl
1858   i[34567]86-*-* | x86_64-*-*)
1859 changequote([,])dnl
1860     AC_MSG_CHECKING(assembler instructions)
1861     gcc_cv_as_instructions=
1862     if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1863       if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 9 -o "$gcc_cv_gas_major_version" -gt 2; then
1864         gcc_cv_as_instructions="filds fists"
1865       fi
1866     elif test x$gcc_cv_as != x; then
1867         set "filds fists" "filds mem; fists mem"
1868         while test $# -gt 0
1869         do
1870                 echo "$2" > conftest.s
1871                 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1872                         gcc_cv_as_instructions=${gcc_cv_as_instructions}$1" "
1873                 fi
1874                 shift 2
1875         done
1876         rm -f conftest.s conftest.o
1877     fi
1878     if test x"$gcc_cv_as_instructions" != x; then
1879         AC_DEFINE_UNQUOTED(HAVE_GAS_`echo "$gcc_cv_as_instructions" | sed -e 's/ $//' | tr '[a-z ]' '[A-Z_]'`)
1880     fi
1881     AC_MSG_RESULT($gcc_cv_as_instructions)
1882
1883     AC_MSG_CHECKING(assembler GOTOFF in data directives)
1884     gcc_cv_as_gotoff_in_data=no
1885     if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x
1886     then
1887       if test "$gcc_cv_gas_major_version" -eq 2 \
1888          -a "$gcc_cv_gas_minor_version" -ge 11 \
1889          -o "$gcc_cv_gas_major_version" -gt 2; then
1890         gcc_cv_as_gotoff_in_data=yes
1891       fi
1892     elif test x$gcc_cv_as != x; then
1893         cat > conftest.s <<EOF
1894         .text
1895 .L0:
1896         nop
1897         .data
1898         .long .L0@GOTOFF
1899 EOF
1900         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1901           gcc_cv_as_gotoff_in_data=yes
1902         fi
1903     fi
1904     AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
1905       [`if test $gcc_cv_as_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
1906       [Define true if the assembler supports '.long foo@GOTOFF'.])
1907     AC_MSG_RESULT($gcc_cv_as_gotoff_in_data)
1908     ;;
1909 esac
1910
1911 AC_MSG_CHECKING(assembler dwarf2 debug_line support)
1912 gcc_cv_as_dwarf2_debug_line=no
1913 # ??? Not all targets support dwarf2 debug_line, even within a version
1914 # of gas.  Moreover, we need to emit a valid instruction to trigger any
1915 # info to the output file.  So, as supported targets are added to gas 2.11,
1916 # add some instruction here to (also) show we expect this might work.
1917 # ??? Once 2.11 is released, probably need to add first known working
1918 # version to the per-target configury.
1919 case "$target" in
1920   i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-* | m68*-*-* | x86_64*-*-* | hppa*-*-*)
1921     insn="nop"
1922     ;;
1923   ia64*-*-*)
1924     insn="nop 0"
1925     ;;
1926   esac
1927 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x;
1928 then
1929   if test "$gcc_cv_gas_major_version" -eq 2 \
1930         -a "$gcc_cv_gas_minor_version" -ge 11 \
1931         -o "$gcc_cv_gas_major_version" -gt 2 \
1932      && grep 'obj_format = elf' ../gas/Makefile > /dev/null \
1933      && test x"$insn" != x ; then
1934     gcc_cv_as_dwarf2_debug_line="yes"
1935   fi
1936 elif test x$gcc_cv_as != x -a x"$insn" != x ; then
1937         echo '  .file 1 "conftest.s"' > conftest.s
1938         echo '  .loc 1 3 0' >> conftest.s
1939         echo "  $insn" >> conftest.s
1940         # ??? This fails with non-gnu grep.
1941         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
1942            && grep debug_line conftest.o > /dev/null 2>&1 ; then
1943                 # The .debug_line file table must be in the exact order that
1944                 # we specified the files, since these indices are also used
1945                 # by DW_AT_decl_file.  Approximate this test by testing if
1946                 # the assembler bitches if the same index is assigned twice.
1947                 echo '  .file 1 "foo.s"' > conftest.s
1948                 echo '  .file 1 "bar.s"' >> conftest.s
1949                 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1
1950                 then
1951                   gcc_cv_as_dwarf2_debug_line="no"
1952                 else
1953                   gcc_cv_as_dwarf2_debug_line="yes"
1954                 fi
1955         fi
1956         rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1957 fi
1958 if test x"$gcc_cv_as_dwarf2_debug_line" = xyes; then
1959         AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
1960 [Define if your assembler supports dwarf2 .file/.loc directives,
1961    and preserves file table indices exactly as given.])
1962 fi
1963 AC_MSG_RESULT($gcc_cv_as_dwarf2_debug_line)
1964
1965 AC_MSG_CHECKING(assembler --gdwarf2 support)
1966 gcc_cv_as_gdwarf2_flag=no
1967 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x;
1968 then
1969   if test "$gcc_cv_gas_major_version" -eq 2 \
1970         -a "$gcc_cv_gas_minor_version" -ge 11 \
1971         -o "$gcc_cv_gas_major_version" -gt 2 \
1972      && grep 'obj_format = elf' ../gas/Makefile > /dev/null \
1973      && test x"$insn" != x ; then
1974     gcc_cv_as_gdwarf2_debug_flag="yes"
1975   fi
1976 elif test x$gcc_cv_as != x -a x"$insn" != x ; then
1977         echo '' > conftest.s
1978         # ??? This fails with non-gnu grep.
1979         if $gcc_cv_as --gdwarf2 -o conftest.o conftest.s > /dev/null 2>&1
1980           then
1981           gcc_cv_as_gdwarf2_flag="yes"
1982         fi
1983         rm -f conftest.s conftest.o
1984 fi
1985 if test x"$gcc_cv_as_gdwarf2_flag" = xyes; then
1986         AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
1987 [Define if your assembler supports the --gdwarf2 option.])
1988 fi
1989 AC_MSG_RESULT($gcc_cv_as_gdwarf2_flag)
1990
1991 AC_MSG_CHECKING(assembler --gstabs support)
1992 gcc_cv_as_gstabs_flag=no
1993 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x;
1994 then
1995   if test "$gcc_cv_gas_major_version" -eq 2 \
1996         -a "$gcc_cv_gas_minor_version" -ge 11 \
1997         -o "$gcc_cv_gas_major_version" -gt 2 \
1998      && grep 'obj_format = elf' ../gas/Makefile > /dev/null \
1999      && test x"$insn" != x ; then
2000     gcc_cv_as_gstabs_debug_flag="yes"
2001   fi
2002 elif test x$gcc_cv_as != x -a x"$insn" != x ; then
2003         echo '' > conftest.s
2004         # ??? This fails with non-gnu grep.
2005         if $gcc_cv_as --gstabs -o conftest.o conftest.s > /dev/null 2>&1 ; then
2006           gcc_cv_as_gstabs_flag="yes"
2007         fi
2008         rm -f conftest.s conftest.o
2009 fi
2010 if test x"$gcc_cv_as_gstabs_flag" = xyes; then
2011         AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
2012 [Define if your assembler supports the --gstabs option.])
2013 fi
2014 AC_MSG_RESULT($gcc_cv_as_gstabs_flag)
2015
2016 AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
2017 gcc_cv_ld_eh_frame_hdr=no
2018 if test x$gcc_cv_gld_major_version != x -a x$gcc_cv_gld_minor_version != x; then
2019   if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 12 -o "$gcc_cv_gld_major_version" -gt 2 && grep 'EMUL = elf' ../ld/Makefile > /dev/null; then
2020     gcc_cv_ld_eh_frame_hdr=yes
2021   fi
2022 elif test x$gcc_cv_ld != x; then
2023         # Check if linker supports --eh-frame-hdr option
2024         if $gcc_cv_ld --help 2>/dev/null | grep eh-frame-hdr > /dev/null; then
2025                 gcc_cv_ld_eh_frame_hdr=yes
2026         fi
2027 fi
2028 if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
2029         AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
2030 [Define if your linker supports --eh-frame-hdr option.])
2031 fi
2032 AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
2033
2034 if test "$prefix" != "/usr" && test "$prefix" != "/usr/local" ; then
2035   AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include")
2036 fi
2037
2038 # Figure out what language subdirectories are present.
2039 # Look if the user specified --enable-languages="..."; if not, use
2040 # the environment variable $LANGUAGES if defined. $LANGUAGES might
2041 # go away some day.
2042 # NB:  embedded tabs in this IF block -- do not untabify
2043 if test x"${enable_languages+set}" != xset; then
2044         if test x"${LANGUAGES+set}" = xset; then
2045                 enable_languages="${LANGUAGES}"
2046                 AC_MSG_WARN([setting LANGUAGES is deprecated, use --enable-languages instead])
2047
2048         else
2049                 enable_languages=all
2050         fi
2051 else
2052         if test x"${enable_languages}" = x ||
2053            test x"${enable_languages}" = xyes;
2054         then
2055                 AC_MSG_ERROR([--enable-languages needs at least one language argument])
2056         fi
2057 fi
2058 enable_languages=`echo "${enable_languages}" | sed -e 's/[[     ,]][[   ,]]*/,/g' -e 's/,$//'`
2059
2060 # First scan to see if an enabled language requires some other language.
2061 # We assume that a given config-lang.in will list all the language
2062 # front ends it requires, even if some are required indirectly.
2063 for lang in ${srcdir}/*/config-lang.in ..
2064 do
2065    case $lang in
2066     ..)
2067        ;;
2068     # The odd quoting in the next line works around
2069     # an apparent bug in bash 1.12 on linux.
2070 changequote(,)dnl
2071     ${srcdir}/[*]/config-lang.in)
2072        ;;
2073     *)
2074        lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^      ]*\).*$,\1,p' $lang`
2075        this_lang_requires=`sed -n -e 's,^lang_requires=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^lang_requires=\([^    ]*\).*$,\1,p' $lang`
2076        for other in $this_lang_requires
2077        do
2078           case ,${enable_languages}, in
2079            *,$other,*)
2080               ;;
2081            *,all,*)
2082               ;;
2083            *,$lang_alias,*)
2084               enable_languages="$enable_languages,$other"
2085               ;;
2086           esac
2087        done
2088        ;;
2089 changequote([,])dnl
2090    esac
2091 done
2092
2093 subdirs=
2094 for lang in ${srcdir}/*/config-lang.in ..
2095 do
2096         case $lang in
2097         ..) ;;
2098         # The odd quoting in the next line works around
2099         # an apparent bug in bash 1.12 on linux.
2100 changequote(,)dnl
2101         ${srcdir}/[*]/config-lang.in) ;;
2102         *)
2103           lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^   ]*\).*$,\1,p' $lang`
2104           this_lang_libs=`sed -n -e 's,^target_libs=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^target_libs=\([^         ]*\).*$,\1,p' $lang`
2105           build_by_default=`sed -n -e 's,^build_by_default=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^build_by_default=\([^     ]*\).*$,\1,p' $lang`
2106           if test "x$lang_alias" = x
2107           then
2108                 echo "$lang doesn't set \$language." 1>&2
2109                 exit 1
2110           fi
2111           case ${build_by_default},${enable_languages}, in
2112           *,$lang_alias,*) add_this_lang=yes ;;
2113           no,*) add_this_lang=no ;;
2114           *,all,*) add_this_lang=yes ;;
2115           *) add_this_lang=no ;;
2116           esac
2117           if test x"${add_this_lang}" = xyes; then
2118                 case $lang in
2119                     ${srcdir}/ada/config-lang.in)
2120                         if test x$have_gnat = xyes ; then
2121                                 subdirs="$subdirs `echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
2122                         fi
2123                         ;;
2124                     *)
2125                         subdirs="$subdirs `echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
2126                         ;;
2127                 esac
2128           fi
2129           ;;
2130 changequote([,])dnl
2131         esac
2132 done
2133
2134 # Make gthr-default.h if we have a thread file.
2135 gthread_flags=
2136 if test $thread_file != single; then
2137     rm -f gthr-default.h
2138     echo "#include \"gthr-${thread_file}.h\"" > gthr-default.h
2139     gthread_flags=-DHAVE_GTHR_DEFAULT
2140 fi
2141 AC_SUBST(gthread_flags)
2142
2143 # Find out what GC implementation we want, or may, use.
2144 AC_ARG_WITH(gc,
2145 [  --with-gc={simple,page} choose the garbage collection mechanism to use
2146                           with the compiler],
2147 [case "$withval" in
2148   simple | page)
2149     GGC=ggc-$withval
2150     ;;
2151   *)
2152     AC_MSG_ERROR([$withval is an invalid option to --with-gc])
2153     ;;
2154 esac],
2155 [GGC=ggc-page])
2156 AC_SUBST(GGC)
2157 echo "Using $GGC for garbage collection."
2158
2159 # Use the system's zlib library.
2160 zlibdir=-L../zlib
2161 zlibinc="-I\$(srcdir)/../zlib"
2162 AC_ARG_WITH(system-zlib,
2163 [  --with-system-zlib      use installed libz],
2164 zlibdir=
2165 zlibinc=
2166 )
2167 AC_SUBST(zlibdir)
2168 AC_SUBST(zlibinc)
2169
2170 dnl Very limited version of automake's enable-maintainer-mode
2171
2172 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
2173   dnl maintainer-mode is disabled by default
2174   AC_ARG_ENABLE(maintainer-mode,
2175 [  --enable-maintainer-mode
2176                           enable make rules and dependencies not useful
2177                           (and sometimes confusing) to the casual installer],
2178       maintainer_mode=$enableval,
2179       maintainer_mode=no)
2180
2181 AC_MSG_RESULT($maintainer_mode)
2182
2183 if test "$maintainer_mode" = "yes"; then
2184   MAINT=''
2185 else
2186   MAINT='#'
2187 fi
2188 AC_SUBST(MAINT)dnl
2189
2190 # With Setjmp/Longjmp based exception handling.
2191 AC_ARG_ENABLE(sjlj-exceptions,
2192 [  --enable-sjlj-exceptions
2193                           arrange to use setjmp/longjmp exception handling],
2194 [sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi`
2195 AC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj,
2196   [Define 0/1 to force the choice for exception handling model.])])
2197
2198 # Make empty files to contain the specs and options for each language.
2199 # Then add #include lines to for a compiler that has specs and/or options.
2200
2201 lang_specs_files=
2202 lang_options_files=
2203 lang_tree_files=
2204 for subdir in . $subdirs
2205 do
2206         if test -f $srcdir/$subdir/lang-specs.h; then
2207             lang_specs_files="$lang_specs_files $srcdir/$subdir/lang-specs.h"
2208         fi
2209         if test -f $srcdir/$subdir/lang-options.h; then
2210             lang_options_files="$lang_options_files $srcdir/$subdir/lang-options.h"
2211         fi
2212         if test -f $srcdir/$subdir/$subdir-tree.def; then
2213             lang_tree_files="$lang_tree_files $srcdir/$subdir/$subdir-tree.def"
2214         fi
2215 done
2216
2217 # These (without "all_") are set in each config-lang.in.
2218 # `language' must be a single word so is spelled singularly.
2219 all_languages=
2220 all_boot_languages=
2221 all_compilers=
2222 all_stagestuff=
2223 all_outputs='Makefile intl/Makefile fixinc/Makefile gccbug mklibgcc'
2224 # List of language makefile fragments.
2225 all_lang_makefiles=
2226
2227 # Add the language fragments.
2228 # Languages are added via two mechanisms.  Some information must be
2229 # recorded in makefile variables, these are defined in config-lang.in.
2230 # We accumulate them and plug them into the main Makefile.
2231 # The other mechanism is a set of hooks for each of the main targets
2232 # like `clean', `install', etc.
2233
2234 language_fragments="Make-lang"
2235 language_hooks="Make-hooks"
2236
2237 for s in .. $subdirs
2238 do
2239         if test $s != ".."
2240         then
2241                 language=
2242                 boot_language=
2243                 compilers=
2244                 stagestuff=
2245                 outputs=
2246                 . ${srcdir}/$s/config-lang.in
2247                 if test "x$language" = x
2248                 then
2249                         echo "${srcdir}/$s/config-lang.in doesn't set \$language." 1>&2
2250                         exit 1
2251                 fi
2252                 all_lang_makefiles="$all_lang_makefiles ${srcdir}/$s/Make-lang.in"
2253                 if test -f ${srcdir}/$s/Makefile.in
2254                 then all_lang_makefiles="$all_lang_makefiles ${srcdir}/$s/Makefile.in"
2255                 fi
2256                 all_languages="$all_languages $language"
2257                 if test "x$boot_language" = xyes
2258                 then
2259                         all_boot_languages="$all_boot_languages $language"
2260                 fi
2261                 all_compilers="$all_compilers $compilers"
2262                 all_stagestuff="$all_stagestuff $stagestuff"
2263                 all_outputs="$all_outputs $outputs"
2264         fi
2265 done
2266
2267 check_languages=
2268 for language in .. $all_languages
2269 do
2270         if test $language != ".."
2271         then
2272                 check_languages="$check_languages check-$language"
2273         fi
2274 done
2275
2276 # Since we can't use `::' targets, we link each language in
2277 # with a set of hooks, reached indirectly via lang.${target}.
2278
2279 rm -f Make-hooks
2280 touch Make-hooks
2281 target_list="all.build all.cross start.encap rest.encap \
2282         info dvi generated-manpages \
2283         install-normal install-common install-info install-man \
2284         uninstall \
2285         mostlyclean clean distclean extraclean maintainer-clean \
2286         stage1 stage2 stage3 stage4"
2287 for t in $target_list
2288 do
2289         x=
2290         for lang in .. $all_languages
2291         do
2292                 if test $lang != ".."; then
2293                         x="$x $lang.$t"
2294                 fi
2295         done
2296         echo "lang.$t: $x" >> Make-hooks
2297 done
2298
2299 # Create .gdbinit.
2300
2301 echo "dir ." > .gdbinit
2302 echo "dir ${srcdir}" >> .gdbinit
2303 if test x$gdb_needs_out_file_path = xyes
2304 then
2305         echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
2306 fi
2307 if test "x$subdirs" != x; then
2308         for s in $subdirs
2309         do
2310                 echo "dir ${srcdir}/$s" >> .gdbinit
2311         done
2312 fi
2313 echo "source ${srcdir}/gdbinit.in" >> .gdbinit
2314
2315 # Define variables host_canonical and build_canonical
2316 # because some Cygnus local changes in the Makefile depend on them.
2317 build_canonical=${build}
2318 host_canonical=${host}
2319 target_subdir=
2320 if test "${host}" != "${target}" ; then
2321     target_subdir=${target_alias}/
2322 fi
2323 AC_SUBST(build_canonical)
2324 AC_SUBST(host_canonical)
2325 AC_SUBST(target_subdir)
2326         
2327 # If $(exec_prefix) exists and is not the same as $(prefix), then compute an
2328 # absolute path for gcc_tooldir based on inserting the number of up-directory
2329 # movements required to get from $(exec_prefix) to $(prefix) into the basic
2330 # $(libsubdir)/@(unlibsubdir) based path.
2331 # Don't set gcc_tooldir to tooldir since that's only passed in by the toplevel
2332 # make and thus we'd get different behavior depending on where we built the
2333 # sources.
2334 if test x$exec_prefix = xNONE -o x$exec_prefix = x$prefix; then
2335     gcc_tooldir='$(libsubdir)/$(unlibsubdir)/../$(target_alias)'
2336 else
2337 changequote(<<, >>)dnl
2338 # An explanation of the sed strings:
2339 #  -e 's|^\$(prefix)||'   matches and eliminates 'prefix' from 'exec_prefix'
2340 #  -e 's|/$||'            match a trailing forward slash and eliminates it
2341 #  -e 's|^[^/]|/|'        forces the string to start with a forward slash (*)
2342 #  -e 's|/[^/]*|../|g'    replaces each occurrence of /<directory> with ../
2343 #
2344 # (*) Note this pattern overwrites the first character of the string
2345 # with a forward slash if one is not already present.  This is not a
2346 # problem because the exact names of the sub-directories concerned is
2347 # unimportant, just the number of them matters.
2348 #
2349 # The practical upshot of these patterns is like this:
2350 #
2351 #  prefix     exec_prefix        result
2352 #  ------     -----------        ------
2353 #   /foo        /foo/bar          ../
2354 #   /foo/       /foo/bar          ../
2355 #   /foo        /foo/bar/         ../
2356 #   /foo/       /foo/bar/         ../
2357 #   /foo        /foo/bar/ugg      ../../
2358 #
2359     dollar='$$'
2360     gcc_tooldir="\$(libsubdir)/\$(unlibsubdir)/\`echo \$(exec_prefix) | sed -e 's|^\$(prefix)||' -e 's|/\$(dollar)||' -e 's|^[^/]|/|' -e 's|/[^/]*|../|g'\`\$(target_alias)"
2361 changequote([, ])dnl
2362 fi
2363 AC_SUBST(gcc_tooldir)
2364 AC_SUBST(dollar)
2365
2366 # Find a directory in which to install a shared libgcc.
2367
2368 AC_ARG_ENABLE(version-specific-runtime-libs,
2369 [  --enable-version-specific-runtime-libs
2370                           specify that runtime libraries should be
2371                           installed in a compiler-specific directory])
2372
2373 AC_ARG_WITH(slibdir,
2374 [  --with-slibdir=DIR      shared libraries in DIR [LIBDIR]],
2375 slibdir="$with_slibdir",
2376 if test "${enable_version_specific_runtime_libs+set}" = set; then
2377   slibdir='$(libsubdir)'
2378 elif test "$host" != "$target"; then
2379   slibdir='$(build_tooldir)/lib'
2380 else
2381   slibdir='$(libdir)'
2382 fi)
2383 AC_SUBST(slibdir)
2384
2385 # Nothing to do for FLOAT_H, float_format already handled.
2386 objdir=`${PWDCMD-pwd}`
2387 AC_SUBST(objdir)
2388
2389 # Process the language and host/target makefile fragments.
2390 ${CONFIG_SHELL-/bin/sh} $srcdir/configure.frag $srcdir "$subdirs" "$dep_host_xmake_file" "$dep_tmake_file"
2391
2392 # Substitute configuration variables
2393 AC_SUBST(subdirs)
2394 AC_SUBST(all_boot_languages)
2395 AC_SUBST(all_compilers)
2396 AC_SUBST(all_lang_makefiles)
2397 AC_SUBST(all_languages)
2398 AC_SUBST(all_stagestuff)
2399 AC_SUBST(build_exeext)
2400 AC_SUBST(build_install_headers_dir)
2401 AC_SUBST(build_xm_file_list)
2402 AC_SUBST(build_xm_file)
2403 AC_SUBST(build_xm_defines)
2404 AC_SUBST(check_languages)
2405 AC_SUBST(cc_set_by_configure)
2406 AC_SUBST(quoted_cc_set_by_configure)
2407 AC_SUBST(cpp_install_dir)
2408 AC_SUBST(dep_host_xmake_file)
2409 AC_SUBST(dep_tmake_file)
2410 AC_SUBST(extra_headers_list)
2411 AC_SUBST(extra_objs)
2412 AC_SUBST(extra_parts)
2413 AC_SUBST(extra_passes)
2414 AC_SUBST(extra_programs)
2415 AC_SUBST(float_h_file)
2416 AC_SUBST(gcc_config_arguments)
2417 AC_SUBST(gcc_gxx_include_dir)
2418 AC_SUBST(libstdcxx_incdir)
2419 AC_SUBST(gcc_version)
2420 AC_SUBST(gcc_version_full)
2421 AC_SUBST(gcc_version_trigger)
2422 AC_SUBST(host_exeext)
2423 AC_SUBST(host_extra_gcc_objs)
2424 AC_SUBST(host_xm_file_list)
2425 AC_SUBST(host_xm_file)
2426 AC_SUBST(host_xm_defines)
2427 AC_SUBST(install)
2428 AC_SUBST(lang_options_files)
2429 AC_SUBST(lang_specs_files)
2430 AC_SUBST(lang_tree_files)
2431 AC_SUBST(local_prefix)
2432 AC_SUBST(md_file)
2433 AC_SUBST(objc_boehm_gc)
2434 AC_SUBST(out_file)
2435 AC_SUBST(out_object_file)
2436 AC_SUBST(stage_prefix_set_by_configure)
2437 AC_SUBST(quoted_stage_prefix_set_by_configure)
2438 AC_SUBST(symbolic_link)
2439 AC_SUBST(thread_file)
2440 AC_SUBST(tm_file_list)
2441 AC_SUBST(tm_file)
2442 AC_SUBST(tm_p_file_list)
2443 AC_SUBST(tm_p_file)
2444 AC_SUBST(xm_file)
2445 AC_SUBST(xm_defines)
2446 AC_SUBST(target_alias)
2447 AC_SUBST(c_target_objs)
2448 AC_SUBST(cxx_target_objs)
2449 AC_SUBST(target_cpu_default)
2450
2451 AC_SUBST_FILE(target_overrides)
2452 AC_SUBST_FILE(host_overrides)
2453 AC_SUBST_FILE(language_fragments)
2454 AC_SUBST_FILE(language_hooks)
2455
2456 # Echo that links are built
2457 if test x$host = x$target
2458 then
2459         str1="native "
2460 else
2461         str1="cross-"
2462         str2=" from $host"
2463 fi
2464
2465 if test x$host != x$build
2466 then
2467         str3=" on a $build system"
2468 fi
2469
2470 if test "x$str2" != x || test "x$str3" != x
2471 then
2472         str4=
2473 fi
2474
2475 echo "Links are now set up to build a ${str1}compiler for ${target}$str4" 1>&2
2476
2477 if test "x$str2" != x || test "x$str3" != x
2478 then
2479         echo " ${str2}${str3}." 1>&2
2480 fi
2481
2482 # Truncate the target if necessary
2483 if test x$host_truncate_target != x; then
2484         target=`echo $target | sed -e 's/\(..............\).*/\1/'`
2485 fi
2486
2487 # Configure the subdirectories
2488 # AC_CONFIG_SUBDIRS($subdirs)
2489
2490 # Create the Makefile
2491 # and configure language subdirectories
2492 AC_OUTPUT($all_outputs,
2493 [
2494 case x$CONFIG_HEADERS in
2495 xauto-host.h:config.in)
2496 echo > cstamp-h ;;
2497 esac
2498 # If the host supports symlinks, point stage[1234] at ../stage[1234] so
2499 # bootstrapping and the installation procedure can still use
2500 # CC="stage1/xgcc -Bstage1/".  If the host doesn't support symlinks,
2501 # FLAGS_TO_PASS has been modified to solve the problem there.
2502 # This is virtually a duplicate of what happens in configure.lang; we do
2503 # an extra check to make sure this only happens if ln -s can be used.
2504 if test "$symbolic_link" = "ln -s"; then
2505  for d in .. ${subdirs} fixinc ; do
2506    if test $d != ..; then
2507         STARTDIR=`${PWDCMD-pwd}`
2508         cd $d
2509         for t in stage1 stage2 stage3 stage4 include
2510         do
2511                 rm -f $t
2512                 $symbolic_link ../$t $t 2>/dev/null
2513         done
2514         cd $STARTDIR
2515    fi
2516  done
2517 else true ; fi
2518 # Avoid having to add intl to our include paths.
2519 if test -f intl/libintl.h; then
2520   echo creating libintl.h
2521   echo '#include "intl/libintl.h"' >libintl.h
2522 fi
2523 ], 
2524 [subdirs='$subdirs'
2525 symbolic_link='$symbolic_link'
2526 ])