OSDN Git Service

* fixinc/inclhack.def (thread_keyword): Match __thread as last arg.
[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         scandir alphasort)
619
620 AC_CHECK_TYPE(ssize_t, int)
621
622 # Try to determine the array type of the second argument of getgroups
623 # for the target system (int or gid_t).
624 AC_TYPE_GETGROUPS
625 if test "${target}" = "${build}"; then
626   TARGET_GETGROUPS_T=$ac_cv_type_getgroups
627 else
628   case "${target}" in
629         # This condition may need some tweaking.  It should include all
630         # targets where the array type of the second argument of getgroups
631         # is int and the type of gid_t is not equivalent to int.
632         *-*-sunos* | *-*-ultrix*)
633                 TARGET_GETGROUPS_T=int
634                 ;;
635         *)
636                 TARGET_GETGROUPS_T=gid_t
637                 ;;
638   esac
639 fi
640 AC_SUBST(TARGET_GETGROUPS_T)
641
642 gcc_AC_FUNC_PRINTF_PTR
643
644 case "${host}" in
645 *-*-uwin*)
646   AC_MSG_ERROR([
647 *** UWIN may not be used as a host platform because
648 *** linking with posix.dll is not allowed by the GNU GPL])
649   ;;
650 *-*-*vms*)
651   # Under VMS, vfork works very different than on Unix. The standard test 
652   # won't work, and it isn't easily adaptable. It makes more sense to
653   # just force it.
654   ac_cv_func_vfork_works=yes
655   ;;
656 esac
657 AC_FUNC_VFORK
658 AC_FUNC_MMAP_ANYWHERE
659 AC_FUNC_MMAP_FILE
660
661 AM_ICONV
662
663 # We will need to find libiberty.h and ansidecl.h
664 saved_CFLAGS="$CFLAGS"
665 CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include"
666 gcc_AC_CHECK_DECLS(getenv atol sbrk abort atof getcwd getwd \
667         strsignal putc_unlocked fputs_unlocked fwrite_unlocked \
668         fprintf_unlocked strstr errno \
669         malloc realloc calloc free basename getopt clock, , ,[
670 #include "ansidecl.h"
671 #include "system.h"])
672
673 gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
674 #include "ansidecl.h"
675 #include "system.h"
676 #ifdef HAVE_SYS_RESOURCE_H
677 #include <sys/resource.h>
678 #endif
679 ])
680
681 gcc_AC_CHECK_DECLS(times, , ,[
682 #include "ansidecl.h"
683 #include "system.h"
684 #ifdef HAVE_SYS_TIMES_H
685 #include <sys/times.h>
686 #endif
687 ])
688
689 # More time-related stuff.
690 AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
691 AC_TRY_COMPILE([
692 #include "ansidecl.h"
693 #include "system.h"
694 #ifdef HAVE_SYS_TIMES_H
695 #include <sys/times.h>
696 #endif
697 ], [struct tms tms;], ac_cv_struct_tms=yes, ac_cv_struct_tms=no)])
698 if test $ac_cv_struct_tms = yes; then
699   AC_DEFINE(HAVE_STRUCT_TMS, 1,
700   [Define if <sys/times.h> defines struct tms.])
701 fi
702
703 # use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
704 # revisit after autoconf 2.50.
705 AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
706 AC_TRY_COMPILE([
707 #include "ansidecl.h"
708 #include "system.h"
709 ], [clock_t x;], gcc_cv_type_clock_t=yes, gcc_cv_type_clock_t=no)])
710 if test $gcc_cv_type_clock_t = yes; then
711   AC_DEFINE(HAVE_CLOCK_T, 1,
712   [Define if <time.h> defines clock_t.])
713 fi
714
715 # Restore CFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
716 CFLAGS="$saved_CFLAGS"
717
718 # mkdir takes a single argument on some systems. 
719 gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
720
721 # File extensions
722 manext='.1'
723 objext='.o'
724 AC_SUBST(manext)
725 AC_SUBST(objext)
726
727 build_xm_file=
728 build_xm_defines=
729 build_install_headers_dir=install-headers-tar
730 build_exeext=
731 host_xm_file=
732 host_xm_defines=
733 host_xmake_file=
734 host_truncate_target=
735 host_exeext=
736
737 # Decode the host machine, then the target machine.
738 # For the host machine, we save the xm_file variable as host_xm_file;
739 # then we decode the target machine and forget everything else
740 # that came from the host machine.
741 for machine in $build $host $target; do
742         . ${srcdir}/config.gcc
743 done
744
745 extra_objs="${host_extra_objs} ${extra_objs}"
746
747 # Default the target-machine variables that were not explicitly set.
748 if test x"$tm_file" = x
749 then tm_file=$cpu_type/$cpu_type.h; fi
750
751 if test x"$extra_headers" = x
752 then extra_headers=; fi
753
754 if test x$md_file = x
755 then md_file=$cpu_type/$cpu_type.md; fi
756
757 if test x$out_file = x
758 then out_file=$cpu_type/$cpu_type.c; fi
759
760 if test x"$tmake_file" = x
761 then tmake_file=$cpu_type/t-$cpu_type
762 fi
763
764 if test x"$dwarf2" = xyes
765 then tm_file="$tm_file tm-dwarf2.h"
766 fi
767
768 if test x$float_format = x
769 then float_format=i64
770 fi
771
772 if test $float_format = none
773 then float_h_file=Makefile.in
774 else float_h_file=float-$float_format.h
775 fi
776
777 # Handle cpp installation.
778 if test x$enable_cpp != xno
779 then
780   tmake_file="$tmake_file t-install-cpp"
781 fi
782
783 # Say what files are being used for the output code and MD file.
784 echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
785 echo "Using \`$srcdir/config/$md_file' as machine description file."
786
787 # If any of the xm_file variables contain nonexistent files, warn
788 # about them and drop them.
789
790 bx=
791 for x in $build_xm_file; do
792   if    test -f $srcdir/config/$x
793   then      bx="$bx $x"
794   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
795   fi
796 done
797 build_xm_file="$bx"
798
799 hx=
800 for x in $host_xm_file; do
801   if    test -f $srcdir/config/$x
802   then      hx="$hx $x"
803   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
804   fi
805 done
806 host_xm_file="$hx"
807
808 tx=
809 for x in $xm_file; do
810   if    test -f $srcdir/config/$x
811   then      tx="$tx $x"
812   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
813   fi
814 done
815 xm_file="$tx"
816
817 count=a
818 for f in $tm_file; do
819         count=${count}x
820 done
821 if test $count = ax; then
822         echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
823 else
824         echo "Using the following target machine macro files:"
825         for f in $tm_file; do
826                 echo "  $srcdir/config/$f"
827         done
828 fi
829
830 count=a
831 for f in $host_xm_file; do
832         count=${count}x
833 done
834 if test $count = a; then
835         :
836 elif test $count = ax; then
837         echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
838 else
839         echo "Using the following host machine macro files:"
840         for f in $host_xm_file; do
841                 echo "  $srcdir/config/$f"
842         done
843 fi
844
845 if test "$host_xm_file" != "$build_xm_file"; then
846         count=a
847         for f in $build_xm_file; do
848                 count=${count}x
849         done
850         if test $count = a; then
851                 :
852         elif test $count = ax; then
853                 echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
854         else
855                 echo "Using the following build machine macro files:"
856                 for f in $build_xm_file; do
857                         echo "  $srcdir/config/$f"
858                 done
859         fi
860 fi
861
862 if test x$thread_file = x; then
863         if test x$target_thread_file != x; then
864                 thread_file=$target_thread_file
865         else
866                 thread_file='single'
867         fi
868 fi
869
870 # auto-host.h is the file containing items generated by autoconf and is
871 # the first file included by config.h.
872 # If host=build, it is correct to have hconfig include auto-host.h
873 # as well.  If host!=build, we are in error and need to do more 
874 # work to find out the build config parameters.
875 if test x$host = x$build
876 then
877         build_auto=auto-host.h
878         FORBUILD=..
879 else
880         # We create a subdir, then run autoconf in the subdir.
881         # To prevent recursion we set host and build for the new
882         # invocation of configure to the build for this invocation
883         # of configure. 
884         tempdir=build.$$
885         rm -rf $tempdir
886         mkdir $tempdir
887         cd $tempdir
888         case ${srcdir} in
889         /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
890         *) realsrcdir=../${srcdir};;
891         esac
892         saved_CFLAGS="${CFLAGS}"
893         CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
894         ${realsrcdir}/configure \
895                 --target=$target_alias --host=$build_alias --build=$build_alias
896         CFLAGS="${saved_CFLAGS}"
897
898         # We just finished tests for the build machine, so rename
899         # the file auto-build.h in the gcc directory.
900         mv auto-host.h ../auto-build.h
901         cd ..
902         rm -rf $tempdir
903         build_auto=auto-build.h
904         FORBUILD=../$build
905 fi
906 AC_SUBST(FORBUILD)
907
908 tm_file="${tm_file} defaults.h"
909 host_xm_file="auto-host.h ansidecl.h ${host_xm_file} ${tm_file}"
910 build_xm_file="${build_auto} ansidecl.h ${build_xm_file} ${tm_file}"
911 xm_file="ansidecl.h ${xm_file} ${tm_file}"
912
913 # Truncate the target if necessary
914 if test x$host_truncate_target != x; then
915         target=`echo $target | sed -e 's/\(..............\).*/\1/'`
916 fi
917
918 # Get the version trigger filename from the toplevel
919 if test "${with_gcc_version_trigger+set}" = set; then
920         gcc_version_trigger=$with_gcc_version_trigger
921 else
922         gcc_version_trigger=${srcdir}/version.c
923 fi
924 changequote(,)dnl
925 gcc_version_full=`grep version_string ${gcc_version_trigger} | sed -e 's/.*"\([^"]*\)".*/\1/'`
926 gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
927
928 # Compile in configure arguments.
929 if test -f configargs.h ; then
930         # Being re-configured.
931         gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'`
932         gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
933 else
934         gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
935 fi
936 cat > configargs.h <<EOF
937 /* Generated automatically. */
938 static const char configuration_arguments[] = "$gcc_config_arguments";
939 static const char thread_model[] = "$thread_file";
940 EOF
941 changequote([,])dnl
942
943 # Internationalization
944 PACKAGE=gcc
945 VERSION="$gcc_version"
946 AC_SUBST(PACKAGE)
947 AC_SUBST(VERSION)
948
949 # Enable NLS support by default
950 AC_ARG_ENABLE(nls,
951   [  --enable-nls            use Native Language Support (default)],
952   , enable_nls=yes)
953
954 # if cross compiling, disable NLS support.
955 # It's not worth the trouble, at least for now.
956
957 if test "${build}" != "${host}" && test "x$enable_nls" = "xyes"; then
958   AC_MSG_WARN(Disabling NLS support for canadian cross compiler.)
959   enable_nls=no
960 fi
961
962 AM_GNU_GETTEXT
963
964 # Windows32 Registry support for specifying GCC installation paths.
965 AC_ARG_ENABLE(win32-registry,
966 [  --disable-win32-registry
967                           disable lookup of installation paths in the
968                           Registry on Windows hosts
969   --enable-win32-registry enable registry lookup (default)
970   --enable-win32-registry=KEY
971                           use KEY instead of GCC version as the last portion
972                           of the registry key],,)
973 case $host_os in
974         win32 | pe | cygwin* | mingw32* | uwin*)
975 AC_MSG_CHECKING(whether windows registry support is requested)
976 if test "x$enable_win32_registry" != xno; then
977   AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
978 [Define to 1 if installation paths should be looked up in Windows32
979    Registry. Ignored on non windows32 hosts.])
980   AC_MSG_RESULT(yes)
981   AC_SEARCH_LIBS(RegOpenKeyExA, advapi32)
982 else
983   AC_MSG_RESULT(no)
984 fi
985
986 # Check if user specified a different registry key.
987 case "x${enable_win32_registry}" in
988 x | xyes)
989   # default.
990   gcc_cv_win32_registry_key="$VERSION"
991   ;;
992 xno)
993   # no registry lookup.
994   gcc_cv_win32_registry_key=''
995   ;;
996 *)
997   # user-specified key.
998   gcc_cv_win32_registry_key="$enable_win32_registry"
999   ;;
1000 esac
1001
1002 if test "x$enable_win32_registry" != xno; then
1003   AC_MSG_CHECKING(registry key on windows hosts)
1004   AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$gcc_cv_win32_registry_key",
1005         [Define to be the last portion of registry key on windows hosts.])
1006   AC_MSG_RESULT($gcc_cv_win32_registry_key)
1007 fi
1008 ;;
1009 esac
1010
1011 # Get an absolute path to the GCC top-level source directory
1012 holddir=`${PWDCMD-pwd}`
1013 cd $srcdir
1014 topdir=`${PWDCMD-pwd}`
1015 cd $holddir
1016
1017 # Conditionalize the makefile for this host machine.
1018 # Make-host contains the concatenation of all host makefile fragments
1019 # [there can be more than one].  This file is built by configure.frag.
1020 host_overrides=Make-host
1021 dep_host_xmake_file=
1022 for f in .. ${host_xmake_file}
1023 do
1024         if test -f ${srcdir}/config/$f
1025         then
1026                 dep_host_xmake_file="${dep_host_xmake_file} ${srcdir}/config/$f"
1027         fi
1028 done
1029
1030 # Conditionalize the makefile for this target machine.
1031 # Make-target contains the concatenation of all host makefile fragments
1032 # [there can be more than one].  This file is built by configure.frag.
1033 target_overrides=Make-target
1034 dep_tmake_file=
1035 for f in .. ${tmake_file}
1036 do
1037         if test -f ${srcdir}/config/$f
1038         then
1039                 dep_tmake_file="${dep_tmake_file} ${srcdir}/config/$f"
1040         fi
1041 done
1042
1043 # If the host doesn't support symlinks, modify CC in
1044 # FLAGS_TO_PASS so CC="stage1/xgcc -Bstage1/" works.
1045 # Otherwise, we can use "CC=$(CC)".
1046 rm -f symtest.tem
1047 if $symbolic_link $srcdir/gcc.c symtest.tem 2>/dev/null
1048 then
1049         cc_set_by_configure="\$(CC)"
1050         quoted_cc_set_by_configure="\$(CC)"
1051         stage_prefix_set_by_configure="\$(STAGE_PREFIX)"
1052         quoted_stage_prefix_set_by_configure="\$(STAGE_PREFIX)"
1053 else
1054         rm -f symtest.tem
1055         if cp -p $srcdir/gcc.c symtest.tem 2>/dev/null
1056         then
1057                 symbolic_link="cp -p"
1058         else
1059                 symbolic_link="cp"
1060         fi
1061         cc_set_by_configure="\`case '\$(CC)' in stage*) echo '\$(CC)' | sed -e 's|stage|../stage|g';; *) echo '\$(CC)';; esac\`"
1062         quoted_cc_set_by_configure="\\\`case '\\\$(CC)' in stage*) echo '\\\$(CC)' | sed -e 's|stage|../stage|g';; *) echo '\\\$(CC)';; esac\\\`"
1063         stage_prefix_set_by_configure="\`case '\$(STAGE_PREFIX)' in stage*) echo '\$(STAGE_PREFIX)' | sed -e 's|stage|../stage|g';; *) echo '\$(STAGE_PREFIX)';; esac\`"
1064         quoted_stage_prefix_set_by_configure="\\\`case '\\\$(STAGE_PREFIX)' in stage*) echo '\\\$(STAGE_PREFIX)' | sed -e 's|stage|../stage|g';; *) echo '\\\$(STAGE_PREFIX)';; esac\\\`"
1065 fi
1066 rm -f symtest.tem
1067
1068 out_object_file=`basename $out_file .c`.o
1069
1070 tm_file_list=
1071 for f in $tm_file; do
1072   case $f in
1073     ansidecl.h )
1074        tm_file_list="${tm_file_list} \$(srcdir)/../include/ansidecl.h" ;;
1075     defaults.h )
1076        tm_file_list="${tm_file_list} $f" ;;
1077     *) tm_file_list="${tm_file_list} \$(srcdir)/config/$f" ;;
1078   esac
1079 done
1080
1081 tm_p_file_list=
1082 for f in $tm_p_file; do
1083     tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f"
1084 done
1085
1086 host_xm_file_list=
1087 for f in $host_xm_file; do
1088   case $f in
1089     ansidecl.h )
1090        host_xm_file_list="${host_xm_file_list} \$(srcdir)/../include/ansidecl.h" ;;
1091     auto-host.h | defaults.h )
1092        host_xm_file_list="${host_xm_file_list} $f" ;;
1093     *) host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f" ;;
1094   esac
1095 done
1096
1097 build_xm_file_list=
1098 for f in $build_xm_file; do
1099   case $f in
1100     ansidecl.h )
1101        build_xm_file_list="${build_xm_file_list} \$(srcdir)/../include/ansidecl.h" ;;
1102     auto-build.h | auto-host.h | defaults.h )
1103        build_xm_file_list="${build_xm_file_list} $f" ;;
1104     *) build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f" ;;
1105   esac
1106 done
1107
1108 # Define macro CROSS_COMPILE in compilation if this is a cross-compiler.
1109 # Also use all.cross instead of all.internal and adjust SYSTEM_HEADER_DIR.
1110 CROSS=                                          AC_SUBST(CROSS)
1111 ALL=all.internal                                AC_SUBST(ALL)
1112 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' AC_SUBST(SYSTEM_HEADER_DIR)
1113 if test x$host != x$target
1114 then
1115         CROSS="-DCROSS_COMPILE"
1116         ALL=all.cross
1117         SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)'
1118 fi
1119
1120 # If this is a cross-compiler that does not
1121 # have its own set of headers then define
1122 # inhibit_libc
1123
1124 # If this is using newlib, then define inhibit_libc in LIBGCC2_CFLAGS.
1125 # This prevents libgcc2 from containing any code which requires libc
1126 # support.
1127 inhibit_libc=
1128 if [test x$host != x$target] && [test x$with_headers = x]; then
1129        inhibit_libc=-Dinhibit_libc
1130 else
1131        if [test x$with_newlib = xyes]; then
1132                inhibit_libc=-Dinhibit_libc
1133        fi
1134 fi
1135 AC_SUBST(inhibit_libc)
1136
1137 # When building gcc with a cross-compiler, we need to adjust things so
1138 # that the generator programs are still built with the native compiler.
1139 # Also, we cannot run fixincludes or fix-header.
1140 # Note that the terminology here is wrong; it should be BUILD_* throughout.
1141 # FIXME.
1142
1143 # These are the normal (build=host) settings:
1144 HOST_PREFIX=                    AC_SUBST(HOST_PREFIX)
1145 HOST_PREFIX_1=ignore-           AC_SUBST(HOST_PREFIX_1)
1146 HOST_CC='$(CC)'                 AC_SUBST(HOST_CC)
1147 HOST_CFLAGS='$(ALL_CFLAGS)'     AC_SUBST(HOST_CFLAGS)
1148
1149 STMP_FIXINC=stmp-fixinc         AC_SUBST(STMP_FIXINC)
1150 STMP_FIXPROTO=stmp-fixproto     AC_SUBST(STMP_FIXPROTO)
1151
1152 # And these apply if build != host.
1153 if test x$build != x$host
1154 then
1155     HOST_PREFIX=build-
1156     HOST_PREFIX_1=build-
1157     HOST_CC='$(CC_FOR_BUILD)'
1158     HOST_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD) $(XCFLAGS)'
1159
1160     STMP_FIXINC=
1161     STMP_FIXPROTO=
1162 fi
1163
1164 # Expand extra_headers to include complete path.
1165 # This substitutes for lots of t-* files.
1166 extra_headers_list=
1167 if test "x$extra_headers" = x
1168 then true
1169 else
1170         # Prepend ${srcdir}/config/${cpu_type}/ to every entry in extra_headers.
1171         for file in $extra_headers;
1172         do
1173                 extra_headers_list="${extra_headers_list} \$(srcdir)/config/${cpu_type}/${file}"
1174         done
1175 fi
1176
1177 if test x$use_collect2 = xno; then
1178         use_collect2=
1179 fi
1180
1181 # Add a definition of USE_COLLECT2 if system wants one.
1182 if test x$use_collect2 != x
1183 then
1184         host_xm_defines="${host_xm_defines} USE_COLLECT2"
1185         xm_defines="${xm_defines} USE_COLLECT2"
1186 fi
1187
1188 # If we have gas in the build tree, make a link to it.
1189 if test -f ../gas/Makefile; then
1190         rm -f as; $symbolic_link ../gas/as-new$host_exeext as$host_exeext 2>/dev/null
1191 fi
1192
1193 # If we have nm and objdump in the build tree, make a link to them.
1194 if test -f ../binutils/Makefile; then
1195         rm -f nm; $symbolic_link ../binutils/nm-new$host_exeext nm$host_exeext 2>/dev/null
1196         rm -f objdump; $symbolic_link ../binutils/objdump$host_exeext objdump$host_exeext 2>/dev/null
1197 fi
1198
1199 # If we have ld in the build tree, make a link to it.
1200 if test -f ../ld/Makefile; then
1201         rm -f collect-ld; $symbolic_link ../ld/ld-new$host_exeext collect-ld$host_exeext 2>/dev/null
1202 fi
1203
1204 # Figure out what assembler we will be using.
1205 AC_MSG_CHECKING(what assembler to use)
1206 gcc_cv_as=
1207 gcc_cv_gas_major_version=
1208 gcc_cv_gas_minor_version=
1209 gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
1210 gcc_cv_as_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
1211 if test -x "$DEFAULT_ASSEMBLER"; then
1212         gcc_cv_as="$DEFAULT_ASSEMBLER"
1213 elif test -x "$AS"; then
1214         gcc_cv_as="$AS"
1215 elif test -x as$host_exeext; then
1216         # Build using assembler in the current directory.
1217         gcc_cv_as=./as$host_exeext
1218 elif test -f $gcc_cv_as_gas_srcdir/configure.in -a -f ../gas/Makefile; then
1219         # Single tree build which includes gas.
1220         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
1221         do
1222 changequote(,)dnl
1223                 gcc_cv_gas_version=`grep '^VERSION=[0-9]*\.[0-9]*' $f`
1224 changequote([,])dnl
1225                 if test x$gcc_cv_gas_version != x; then
1226                         break
1227                 fi
1228         done
1229 changequote(,)dnl
1230         gcc_cv_gas_major_version=`expr "$gcc_cv_gas_version" : "VERSION=\([0-9]*\)"`
1231         gcc_cv_gas_minor_version=`expr "$gcc_cv_gas_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
1232         gcc_cv_gas_patch_version=`expr "$gcc_cv_gas_version" : "VERSION=[0-9]*\.[0-9]*\.\([0-9]*\)"`
1233 changequote([,])dnl
1234 fi
1235
1236 if test "x$gcc_cv_as" = x; then
1237         # Search the same directories that the installed compiler will
1238         # search.  Else we may find the wrong assembler and lose.  If we
1239         # do not find a suitable assembler binary, then try the user's
1240         # path.
1241         #
1242         # Also note we have to check MD_EXEC_PREFIX before checking the
1243         # user's path.  Unfortunately, there is no good way to get at the
1244         # value of MD_EXEC_PREFIX here.  So we do a brute force search
1245         # through all the known MD_EXEC_PREFIX values.  Ugh.  This needs
1246         # to be fixed as part of the make/configure rewrite too.
1247
1248         if test "x$exec_prefix" = xNONE; then
1249                 if test "x$prefix" = xNONE; then
1250                         test_prefix=/usr/local
1251                 else
1252                         test_prefix=$prefix
1253                 fi
1254         else
1255                 test_prefix=$exec_prefix
1256         fi
1257
1258         # If the loop below does not find an assembler, then use whatever
1259         # one we can find in the users's path.
1260         # user's path.
1261         if test "x$program_prefix" != xNONE; then
1262                 gcc_cv_as=${program_prefix}as$host_exeext
1263         else
1264                 gcc_cv_as=`echo as | sed ${program_transform_name}`$host_exeext
1265         fi
1266
1267         test_dirs="$test_prefix/lib/gcc-lib/$target_alias/$gcc_version \
1268                    $test_prefix/lib/gcc-lib/$target_alias \
1269                    /usr/lib/gcc/$target_alias/$gcc_version \
1270                    /usr/lib/gcc/$target_alias \
1271                    $test_prefix/$target_alias/bin/$target_alias/$gcc_version \
1272                    $test_prefix/$target_alias/bin"
1273
1274         if test x$host = x$target; then
1275             test_dirs="$test_dirs \
1276                    /usr/libexec \
1277                    /usr/ccs/gcc \
1278                    /usr/ccs/bin \
1279                    /udk/usr/ccs/bin \
1280                    /bsd43/usr/lib/cmplrs/cc \
1281                    /usr/cross64/usr/bin \
1282                    /usr/lib/cmplrs/cc \
1283                    /sysv/usr/lib/cmplrs/cc \
1284                    /svr4/usr/lib/cmplrs/cc \
1285                    /usr/bin"
1286         fi
1287
1288         for dir in $test_dirs; do
1289                 if test -x $dir/as$host_exeext; then
1290                         gcc_cv_as=$dir/as$host_exeext
1291                         break;
1292                 fi
1293         done
1294 fi
1295 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1296   AC_MSG_RESULT("newly built gas")
1297 else
1298   AC_MSG_RESULT($gcc_cv_as)
1299 fi
1300
1301 # Figure out what linker we will be using.
1302 AC_MSG_CHECKING(what linker to use)
1303 gcc_cv_ld=
1304 gcc_cv_gld_major_version=
1305 gcc_cv_gld_minor_version=
1306 gcc_cv_ld_gld_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/ld
1307 gcc_cv_ld_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
1308 if test -x "$DEFAULT_LINKER"; then
1309         gcc_cv_ld="$DEFAULT_LINKER"
1310 elif test -x "$LD"; then
1311         gcc_cv_ld="$LD"
1312 elif test -x ld$host_exeext; then
1313         # Build using linker in the current directory.
1314         gcc_cv_ld=./ld$host_exeext
1315 elif test -f $gcc_cv_ld_gld_srcdir/configure.in -a -f ../ld/Makefile; then
1316         # Single tree build which includes ld.
1317         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
1318         do
1319 changequote(,)dnl
1320                 gcc_cv_gld_version=`grep '^VERSION=[0-9]*\.[0-9]*' $f`
1321 changequote([,])dnl
1322                 if test x$gcc_cv_gld_version != x; then
1323                         break
1324                 fi
1325         done
1326 changequote(,)dnl
1327         gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
1328         gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
1329 changequote([,])dnl
1330 fi
1331
1332 if test "x$gcc_cv_ld" = x; then
1333         # Search the same directories that the installed compiler will
1334         # search.  Else we may find the wrong linker and lose.  If we
1335         # do not find a suitable linker binary, then try the user's
1336         # path.
1337         #
1338         # Also note we have to check MD_EXEC_PREFIX before checking the
1339         # user's path.  Unfortunately, there is no good way to get at the
1340         # value of MD_EXEC_PREFIX here.  So we do a brute force search
1341         # through all the known MD_EXEC_PREFIX values.  Ugh.  This needs
1342         # to be fixed as part of the make/configure rewrite too.
1343
1344         if test "x$exec_prefix" = xNONE; then
1345                 if test "x$prefix" = xNONE; then
1346                         test_prefix=/usr/local
1347                 else
1348                         test_prefix=$prefix
1349                 fi
1350         else
1351                 test_prefix=$exec_prefix
1352         fi
1353
1354         # If the loop below does not find an linker, then use whatever
1355         # one we can find in the users's path.
1356         # user's path.
1357         if test "x$program_prefix" != xNONE; then
1358                 gcc_cv_ld=${program_prefix}ld$host_exeext
1359         else
1360                 gcc_cv_ld=`echo ld | sed ${program_transform_name}`$host_exeext
1361         fi
1362
1363         test_dirs="$test_prefix/lib/gcc-lib/$target_alias/$gcc_version \
1364                    $test_prefix/lib/gcc-lib/$target_alias \
1365                    /usr/lib/gcc/$target_alias/$gcc_version \
1366                    /usr/lib/gcc/$target_alias \
1367                    $test_prefix/$target_alias/bin/$target_alias/$gcc_version \
1368                    $test_prefix/$target_alias/bin"
1369
1370         if test x$host = x$target; then
1371             test_dirs="$test_dirs \
1372                    /usr/libexec \
1373                    /usr/ccs/gcc \
1374                    /usr/ccs/bin \
1375                    /udk/usr/ccs/bin \
1376                    /bsd43/usr/lib/cmplrs/cc \
1377                    /usr/cross64/usr/bin \
1378                    /usr/lib/cmplrs/cc \
1379                    /sysv/usr/lib/cmplrs/cc \
1380                    /svr4/usr/lib/cmplrs/cc \
1381                    /usr/bin"
1382         fi
1383
1384         for dir in $test_dirs; do
1385                 if test -x $dir/ld$host_exeext; then
1386                         gcc_cv_ld=$dir/ld$host_exeext
1387                         break;
1388                 fi
1389         done
1390 fi
1391 if test x$gcc_cv_gld_major_version != x -a x$gcc_cv_gld_minor_version != x; then
1392   AC_MSG_RESULT("newly built ld")
1393 else
1394   AC_MSG_RESULT($gcc_cv_ld)
1395 fi
1396
1397 # Figure out what nm we will be using.
1398 AC_MSG_CHECKING(what nm to use)
1399 if test -x nm$host_exeext; then
1400         gcc_cv_nm=./nm$host_exeext
1401 elif test "x$program_prefix" != xNONE; then
1402         gcc_cv_nm=${program_prefix}nm$host_exeext
1403 else
1404         gcc_cv_nm=`echo nm | sed ${program_transform_name}`$host_exeext
1405 fi
1406 AC_MSG_RESULT($gcc_cv_nm)
1407
1408 # Figure out what objdump we will be using.
1409 AC_MSG_CHECKING(what objdump to use)
1410 if test -x objdump$host_exeext; then
1411         gcc_cv_objdump=./objdump$host_exeext
1412 elif test "x$program_prefix" != xNONE; then
1413         gcc_cv_objdump=${program_prefix}objdump$host_exeext
1414 else
1415         gcc_cv_objdump=`echo objdump | sed ${program_transform_name}`$host_exeext
1416 fi
1417 AC_MSG_RESULT($gcc_cv_objdump)
1418
1419 # Figure out what assembler alignment features are present.
1420 AC_MSG_CHECKING(assembler alignment features)
1421 gcc_cv_as_alignment_features=none
1422 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1423         # Gas version 2.6 and later support for .balign and .p2align.
1424         # bytes to skip when using .p2align.
1425         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
1426                 gcc_cv_as_alignment_features=".balign and .p2align"
1427                 AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN)
1428         fi
1429         # Gas version 2.8 and later support specifying the maximum
1430         # bytes to skip when using .p2align.
1431         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
1432                 gcc_cv_as_alignment_features=".p2align including maximum skip"
1433                 AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN)
1434         fi
1435 elif test x$gcc_cv_as != x; then
1436         # Check if we have .balign and .p2align
1437         echo ".balign  4" > conftest.s
1438         echo ".p2align  2" >> conftest.s
1439         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1440                 gcc_cv_as_alignment_features=".balign and .p2align"
1441                 AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN)
1442         fi
1443         rm -f conftest.s conftest.o
1444         # Check if specifying the maximum bytes to skip when
1445         # using .p2align is supported.
1446         echo ".p2align 4,,7" > conftest.s
1447         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1448                 gcc_cv_as_alignment_features=".p2align including maximum skip"
1449                 AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN)
1450         fi
1451         rm -f conftest.s conftest.o
1452 fi
1453 AC_MSG_RESULT($gcc_cv_as_alignment_features)
1454
1455 AC_MSG_CHECKING(assembler subsection support)
1456 gcc_cv_as_subsections=no
1457 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1458   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
1459     gcc_cv_as_subsections="working .subsection -1"
1460   fi
1461 elif test x$gcc_cv_as != x; then
1462         # Check if we have .subsection
1463         echo ".subsection 1" > conftest.s
1464         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1465                 gcc_cv_as_subsections=".subsection"
1466                 if test x$gcc_cv_nm != x; then
1467                         cat > conftest.s <<EOF
1468 conftest_label1: .word 0
1469 .subsection -1
1470 conftest_label2: .word 0
1471 .previous
1472 EOF
1473                         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1474                                 $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
1475                                 $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
1476                                 if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1; then
1477                                         :
1478                                 else
1479                                         gcc_cv_as_subsections="working .subsection -1"
1480                                 fi
1481                         fi
1482                 fi
1483         fi
1484         rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1485 fi
1486 if test x"$gcc_cv_as_subsections" = x"working .subsection -1"; then
1487         AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
1488 [Define if your assembler supports .subsection and .subsection -1 starts
1489    emitting at the beginning of your section.])
1490 fi
1491 AC_MSG_RESULT($gcc_cv_as_subsections)
1492
1493 AC_MSG_CHECKING(assembler weak support)
1494 gcc_cv_as_weak=no
1495 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1496   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
1497     gcc_cv_as_weak="yes"
1498   fi
1499 elif test x$gcc_cv_as != x; then
1500         # Check if we have .weak
1501         echo "  .weak foobar" > conftest.s
1502         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1503                 gcc_cv_as_weak="yes"
1504         fi
1505         rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1506 fi
1507 if test x"$gcc_cv_as_weak" = xyes; then
1508         AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])
1509 fi
1510 AC_MSG_RESULT($gcc_cv_as_weak)
1511
1512 AC_MSG_CHECKING(assembler hidden support)
1513 gcc_cv_as_hidden=no
1514 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1515   if test "$gcc_cv_gas_major_version" -eq 2     \
1516           -a "$gcc_cv_gas_minor_version" -eq 12 \
1517           -a "$gcc_cv_gas_patch_version" -ge 1  \
1518           -o "$gcc_cv_gas_major_version" -eq 2  \
1519           -a "$gcc_cv_gas_minor_version" -gt 12 \
1520           -o "$gcc_cv_gas_major_version" -gt 2  \
1521     && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
1522     gcc_cv_as_hidden="yes"
1523   fi
1524 elif test x$gcc_cv_as != x; then
1525         # Check if we have .hidden
1526         echo "  .hidden foobar" > conftest.s
1527         echo "foobar:" >> conftest.s
1528         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1529                 gcc_cv_as_hidden="yes"
1530         fi
1531         rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1532
1533         # GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
1534         # This is irritatingly difficult to feature test for.  Look for 
1535         # the date string after the version number.
1536         ld_ver=`$gcc_cv_ld --version 2>/dev/null | head -1`
1537         if echo "$ld_ver" | grep GNU > /dev/null; then
1538 changequote(,)dnl
1539                 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'`
1540 changequote([,])dnl
1541                 if test 0"$ld_date" -lt 20020404; then
1542                         gcc_cv_as_hidden="no"
1543                 fi
1544         fi
1545 fi
1546 if test x"$gcc_cv_as_hidden" = xyes; then
1547         AC_DEFINE(HAVE_GAS_HIDDEN, 1,
1548                 [Define if your assembler supports .hidden.])
1549 fi
1550 AC_MSG_RESULT($gcc_cv_as_hidden)
1551 libgcc_visibility=$gcc_cv_as_hidden
1552 AC_SUBST(libgcc_visibility)
1553
1554 AC_MSG_CHECKING(assembler leb128 support)
1555 gcc_cv_as_leb128=no
1556 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1557   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
1558     gcc_cv_as_leb128="yes"
1559   fi
1560 elif test x$gcc_cv_as != x; then
1561         # Check if we have .[us]leb128, and support symbol arithmetic with it.
1562         cat > conftest.s <<EOF
1563         .data
1564         .uleb128 L2 - L1
1565 L1:
1566         .uleb128 1280
1567         .sleb128 -1010
1568 L2:
1569 EOF
1570         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1571                 gcc_cv_as_leb128="yes"
1572
1573                 # GAS versions before 2.11 do not support uleb128,
1574                 # despite appearing to.
1575                 # ??? There exists an elf-specific test that will crash
1576                 # the assembler.  Perhaps it's better to figure out whether
1577                 # arbitrary sections are supported and try the test.
1578                 as_ver=`$gcc_cv_as --version 2>/dev/null | head -1`
1579                 if echo "$as_ver" | grep GNU > /dev/null; then
1580 changequote(,)dnl
1581                         as_ver=`echo $as_ver | sed -e 's/GNU assembler \([0-9.][0-9.]*\).*/\1/'`
1582                         as_major=`echo $as_ver | sed 's/\..*//'`
1583                         as_minor=`echo $as_ver | sed 's/[^.]*\.\([0-9]*\).*/\1/'`
1584 changequote([,])dnl
1585                         if test $as_major -eq 2 -a $as_minor -lt 11; then
1586                                 gcc_cv_as_leb128="no"
1587                         fi
1588                 fi
1589         fi
1590         rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1591 fi
1592 if test x"$gcc_cv_as_leb128" = xyes; then
1593         AC_DEFINE(HAVE_AS_LEB128, 1,
1594                 [Define if your assembler supports .uleb128.])
1595 fi
1596 AC_MSG_RESULT($gcc_cv_as_leb128)
1597
1598 AC_MSG_CHECKING(assembler eh_frame optimization)
1599 gcc_cv_as_eh_frame=no
1600 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1601   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
1602     gcc_cv_as_eh_frame="yes"
1603   fi
1604 elif test x$gcc_cv_as != x; then
1605         # Check if this is GAS.
1606         as_ver=`$gcc_cv_as --version < /dev/null 2> /dev/null | head -1`
1607         rm -f a.out 2> /dev/null
1608         if echo "$as_ver" | grep GNU > /dev/null; then
1609                 # Versions up to and including 2.11.0 may mis-optimize
1610                 # .eh_frame data.  Try something.
1611                 cat > conftest.s <<EOF
1612         .text
1613 .LFB1:
1614         .4byte  0
1615 .L1:
1616         .4byte  0
1617 .LFE1:
1618         .section        .eh_frame,"aw",@progbits
1619 __FRAME_BEGIN__:
1620         .4byte  .LECIE1-.LSCIE1
1621 .LSCIE1:
1622         .4byte  0x0
1623         .byte   0x1
1624         .ascii "z\0"
1625         .byte   0x1
1626         .byte   0x78
1627         .byte   0x1a
1628         .byte   0x0
1629         .byte   0x4
1630         .4byte  1
1631         .p2align 1
1632 .LECIE1:
1633 .LSFDE1:
1634         .4byte  .LEFDE1-.LASFDE1
1635 .LASFDE1:
1636         .4byte  .LASFDE1-__FRAME_BEGIN__
1637         .4byte  .LFB1
1638         .4byte  .LFE1-.LFB1
1639         .byte   0x4
1640         .4byte  .LFE1-.LFB1
1641         .byte   0x4
1642         .4byte  .L1-.LFB1
1643 .LEFDE1:
1644 EOF
1645                 cat > conftest.lit <<EOF
1646  0000 10000000 00000000 017a0001 781a0004  .........z..x...
1647  0010 01000000 12000000 18000000 00000000  ................
1648  0020 08000000 04080000 0044               .........D      
1649 EOF
1650                 cat > conftest.big <<EOF
1651  0000 00000010 00000000 017a0001 781a0004  .........z..x...
1652  0010 00000001 00000012 00000018 00000000  ................
1653  0020 00000008 04000000 0844               .........D      
1654 EOF
1655                 # If the assembler didn't choke, and we can objdump,
1656                 # and we got the correct data, then succeed.
1657                 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
1658                    && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
1659                       | tail -3 > conftest.got \
1660                    && { cmp conftest.lit conftest.got > /dev/null 2>&1 \
1661                         || cmp conftest.big conftest.got > /dev/null 2>&1; }
1662                 then
1663                         gcc_cv_as_eh_frame="yes"
1664                 else
1665                         gcc_cv_as_eh_frame="bad"
1666                         if $gcc_cv_as -o conftest.o --traditional-format /dev/null; then
1667                                 AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
1668         [Define if your assembler mis-optimizes .eh_frame data.])
1669                         fi
1670                 fi
1671         fi
1672         rm -f conftest.*
1673 fi
1674 AC_MSG_RESULT($gcc_cv_as_eh_frame)
1675
1676 AC_MSG_CHECKING(assembler section merging support)
1677 gcc_cv_as_shf_merge=no
1678 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1679   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
1680     gcc_cv_as_shf_merge=yes
1681   fi
1682 elif test x$gcc_cv_as != x; then
1683         # Check if we support SHF_MERGE sections
1684         echo '.section .rodata.str, "aMS", @progbits, 1' > conftest.s
1685         if $gcc_cv_as --fatal-warnings -o conftest.o conftest.s > /dev/null 2>&1; then
1686                 gcc_cv_as_shf_merge=yes
1687         fi
1688         rm -f conftest.s conftest.o
1689 fi
1690 if test x"$gcc_cv_as_shf_merge" = xyes; then
1691         AC_DEFINE(HAVE_GAS_SHF_MERGE, 1,
1692 [Define if your assembler supports marking sections with SHF_MERGE flag.])
1693 fi
1694 AC_MSG_RESULT($gcc_cv_as_shf_merge)
1695
1696 case "$target" in
1697   # All TARGET_ABI_OSF targets.
1698   alpha*-*-osf* | alpha*-*-linux* | alpha*-*-*bsd*)
1699     AC_CACHE_CHECK([assembler supports explicit relocations],
1700         gcc_cv_as_explicit_relocs, [
1701         gcc_cv_as_explicit_relocs=unknown
1702         if test x$gcc_cv_gas_major_version != x \
1703                 -a x$gcc_cv_gas_minor_version != x
1704         then
1705            if test "$gcc_cv_gas_major_version" -eq 2 \
1706                    -a "$gcc_cv_gas_minor_version" -ge 12 \
1707                    -o "$gcc_cv_gas_major_version" -gt 2; then
1708               gcc_cv_as_explicit_relocs=yes
1709            fi
1710         elif test x$gcc_cv_as != x; then
1711             cat > conftest.s << 'EOF'
1712         .set nomacro
1713         .text
1714         extbl   $3, $2, $3      !lituse_bytoff!1
1715         ldq     $2, a($29)      !literal!1
1716         ldq     $4, b($29)      !literal!2
1717         ldq_u   $3, 0($2)       !lituse_base!1
1718         ldq     $27, f($29)     !literal!5
1719         jsr     $26, ($27), f   !lituse_jsr!5
1720         ldah    $29, 0($26)     !gpdisp!3
1721         lda     $0, c($29)      !gprel
1722         ldah    $1, d($29)      !gprelhigh
1723         lda     $1, d($1)       !gprellow
1724         lda     $29, 0($29)     !gpdisp!3
1725 EOF
1726             if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1727                 gcc_cv_as_explicit_relocs=yes
1728             else
1729                 gcc_cv_as_explicit_relocs=no
1730             fi
1731             rm -f conftest.s conftest.o
1732         fi
1733     ])
1734     if test "x$gcc_cv_as_explicit_relocs" = xyes; then
1735         AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
1736                 [Define if your assembler supports explicit relocations.])
1737     fi
1738     ;;
1739   sparc*-*-*)
1740     AC_CACHE_CHECK([assembler .register pseudo-op support],
1741         gcc_cv_as_register_pseudo_op, [
1742         gcc_cv_as_register_pseudo_op=unknown
1743         if test x$gcc_cv_as != x; then
1744             # Check if we have .register
1745             echo ".register %g2, #scratch" > conftest.s
1746             if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1747                 gcc_cv_as_register_pseudo_op=yes
1748             else
1749                 gcc_cv_as_register_pseudo_op=no
1750             fi
1751             rm -f conftest.s conftest.o
1752         fi
1753     ])
1754     if test "x$gcc_cv_as_register_pseudo_op" = xyes; then
1755         AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
1756                 [Define if your assembler supports .register.])
1757     fi
1758
1759     AC_CACHE_CHECK([assembler supports -relax],
1760         gcc_cv_as_relax_opt, [
1761         gcc_cv_as_relax_opt=unknown
1762         if test x$gcc_cv_as != x; then
1763             # Check if gas supports -relax
1764             echo ".text" > conftest.s
1765             if $gcc_cv_as -relax -o conftest.o conftest.s > /dev/null 2>&1; then
1766                 gcc_cv_as_relax_opt=yes
1767             else
1768                 gcc_cv_as_relax_opt=no
1769             fi
1770             rm -f conftest.s conftest.o
1771         fi
1772     ])
1773     if test "x$gcc_cv_as_relax_opt" = xyes; then
1774         AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
1775                 [Define if your assembler supports -relax option.])
1776     fi
1777
1778     AC_CACHE_CHECK([assembler and linker support unaligned pc related relocs],
1779         gcc_cv_as_sparc_ua_pcrel, [
1780         gcc_cv_as_sparc_ua_pcrel=unknown
1781         if test x$gcc_cv_as != x -a x$gcc_cv_ld != x; then
1782             gcc_cv_as_sparc_ua_pcrel=no
1783             echo ".text; foo: nop; .data; .align 4; .byte 0; .uaword %r_disp32(foo)" > conftest.s
1784             if $gcc_cv_as -K PIC -o conftest.o conftest.s > /dev/null 2>&1 \
1785                && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
1786                 gcc_cv_as_sparc_ua_pcrel=yes
1787             fi
1788             rm -f conftest.s conftest.o conftest
1789         fi
1790     ])
1791     if test "x$gcc_cv_as_sparc_ua_pcrel" = xyes; then
1792         AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
1793                 [Define if your assembler and linker support unaligned PC relative relocs.])
1794     fi
1795
1796     AC_CACHE_CHECK([assembler and linker support unaligned pc related relocs against hidden symbols],
1797         gcc_cv_as_sparc_ua_pcrel_hidden, [
1798         if test "x$gcc_cv_as_sparc_ua_pcrel" = xyes; then
1799             gcc_cv_as_sparc_ua_pcrel_hidden=unknown
1800             if test x$gcc_cv_objdump != x; then
1801                 gcc_cv_as_sparc_ua_pcrel_hidden=no
1802                 echo ".data; .align 4; .byte 0x31; .uaword %r_disp32(foo)" > conftest.s
1803                 echo ".byte 0x32, 0x33, 0x34; .global foo; .hidden foo" >> conftest.s
1804                 echo "foo: .skip 4" >> conftest.s
1805                 if $gcc_cv_as -K PIC -o conftest.o conftest.s > /dev/null 2>&1 \
1806                    && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
1807                    && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
1808                       | grep ' 31000000 07323334' > /dev/null 2>&1; then
1809                     if $gcc_cv_objdump -R conftest 2> /dev/null \
1810                        | grep 'DISP32' > /dev/null 2>&1; then
1811                         :
1812                     else
1813                         gcc_cv_as_sparc_ua_pcrel_hidden=yes
1814                     fi
1815                 fi
1816             fi
1817             rm -f conftest.s conftest.o conftest
1818         else
1819             gcc_cv_as_sparc_ua_pcrel_hidden="$gcc_cv_as_sparc_ua_pcrel"
1820         fi
1821     ])
1822     if test "x$gcc_cv_as_sparc_ua_pcrel_hidden" = xyes; then
1823         AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
1824                 [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])
1825     fi
1826
1827     if test "x$gcc_cv_as_flags64" != xno; then
1828         AC_CACHE_CHECK([for assembler offsetable %lo() support],
1829             gcc_cv_as_offsetable_lo10, [
1830             gcc_cv_as_offsetable_lo10=unknown
1831             if test "x$gcc_cv_as" != x; then
1832                 # Check if assembler has offsetable %lo()
1833                 echo "or %g1, %lo(ab) + 12, %g1" > conftest.s
1834                 echo "or %g1, %lo(ab + 12), %g1" > conftest1.s
1835                 if $gcc_cv_as $gcc_cv_as_flags64 -o conftest.o conftest.s \
1836                         > /dev/null 2>&1 &&
1837                    $gcc_cv_as $gcc_cv_as_flags64 -o conftest1.o conftest1.s \
1838                         > /dev/null 2>&1; then
1839                     if cmp conftest.o conftest1.o > /dev/null 2>&1; then
1840                         gcc_cv_as_offsetable_lo10=no
1841                     else
1842                         gcc_cv_as_offsetable_lo10=yes
1843                     fi
1844                 else
1845                     gcc_cv_as_offsetable_lo10=no
1846                 fi
1847                 rm -f conftest.s conftest.o conftest1.s conftest1.o
1848             fi
1849         ])
1850         if test "x$gcc_cv_as_offsetable_lo10" = xyes; then
1851             AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
1852                 [Define if your assembler supports offsetable %lo().])
1853         fi
1854     fi
1855
1856     ;;
1857
1858 changequote(,)dnl
1859   i[34567]86-*-* | x86_64-*-*)
1860 changequote([,])dnl
1861     AC_MSG_CHECKING(assembler instructions)
1862     gcc_cv_as_instructions=
1863     if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1864       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
1865         gcc_cv_as_instructions="filds fists"
1866       fi
1867     elif test x$gcc_cv_as != x; then
1868         set "filds fists" "filds mem; fists mem"
1869         while test $# -gt 0
1870         do
1871                 echo "$2" > conftest.s
1872                 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1873                         gcc_cv_as_instructions=${gcc_cv_as_instructions}$1" "
1874                 fi
1875                 shift 2
1876         done
1877         rm -f conftest.s conftest.o
1878     fi
1879     if test x"$gcc_cv_as_instructions" != x; then
1880         AC_DEFINE_UNQUOTED(HAVE_GAS_`echo "$gcc_cv_as_instructions" | sed -e 's/ $//' | tr '[a-z ]' '[A-Z_]'`)
1881     fi
1882     AC_MSG_RESULT($gcc_cv_as_instructions)
1883
1884     AC_MSG_CHECKING(assembler GOTOFF in data directives)
1885     gcc_cv_as_gotoff_in_data=no
1886     if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x
1887     then
1888       if test "$gcc_cv_gas_major_version" -eq 2 \
1889          -a "$gcc_cv_gas_minor_version" -ge 11 \
1890          -o "$gcc_cv_gas_major_version" -gt 2; then
1891         gcc_cv_as_gotoff_in_data=yes
1892       fi
1893     elif test x$gcc_cv_as != x; then
1894         cat > conftest.s <<EOF
1895         .text
1896 .L0:
1897         nop
1898         .data
1899         .long .L0@GOTOFF
1900 EOF
1901         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1902           gcc_cv_as_gotoff_in_data=yes
1903         fi
1904     fi
1905     AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
1906       [`if test $gcc_cv_as_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
1907       [Define true if the assembler supports '.long foo@GOTOFF'.])
1908     AC_MSG_RESULT($gcc_cv_as_gotoff_in_data)
1909     ;;
1910 esac
1911
1912 AC_MSG_CHECKING(assembler dwarf2 debug_line support)
1913 gcc_cv_as_dwarf2_debug_line=no
1914 # ??? Not all targets support dwarf2 debug_line, even within a version
1915 # of gas.  Moreover, we need to emit a valid instruction to trigger any
1916 # info to the output file.  So, as supported targets are added to gas 2.11,
1917 # add some instruction here to (also) show we expect this might work.
1918 # ??? Once 2.11 is released, probably need to add first known working
1919 # version to the per-target configury.
1920 case "$target" in
1921   i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-* | m68*-*-* | x86_64*-*-* | hppa*-*-*)
1922     insn="nop"
1923     ;;
1924   ia64*-*-*)
1925     insn="nop 0"
1926     ;;
1927   esac
1928 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x;
1929 then
1930   if test "$gcc_cv_gas_major_version" -eq 2 \
1931         -a "$gcc_cv_gas_minor_version" -ge 11 \
1932         -o "$gcc_cv_gas_major_version" -gt 2 \
1933      && grep 'obj_format = elf' ../gas/Makefile > /dev/null \
1934      && test x"$insn" != x ; then
1935     gcc_cv_as_dwarf2_debug_line="yes"
1936   fi
1937 elif test x$gcc_cv_as != x -a x"$insn" != x ; then
1938         echo '  .file 1 "conftest.s"' > conftest.s
1939         echo '  .loc 1 3 0' >> conftest.s
1940         echo "  $insn" >> conftest.s
1941         # ??? This fails with non-gnu grep.
1942         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
1943            && grep debug_line conftest.o > /dev/null 2>&1 ; then
1944                 # The .debug_line file table must be in the exact order that
1945                 # we specified the files, since these indices are also used
1946                 # by DW_AT_decl_file.  Approximate this test by testing if
1947                 # the assembler bitches if the same index is assigned twice.
1948                 echo '  .file 1 "foo.s"' > conftest.s
1949                 echo '  .file 1 "bar.s"' >> conftest.s
1950                 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1
1951                 then
1952                   gcc_cv_as_dwarf2_debug_line="no"
1953                 else
1954                   gcc_cv_as_dwarf2_debug_line="yes"
1955                 fi
1956         fi
1957         rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1958 fi
1959 if test x"$gcc_cv_as_dwarf2_debug_line" = xyes; then
1960         AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
1961 [Define if your assembler supports dwarf2 .file/.loc directives,
1962    and preserves file table indices exactly as given.])
1963 fi
1964 AC_MSG_RESULT($gcc_cv_as_dwarf2_debug_line)
1965
1966 AC_MSG_CHECKING(assembler --gdwarf2 support)
1967 gcc_cv_as_gdwarf2_flag=no
1968 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x;
1969 then
1970   if test "$gcc_cv_gas_major_version" -eq 2 \
1971         -a "$gcc_cv_gas_minor_version" -ge 11 \
1972         -o "$gcc_cv_gas_major_version" -gt 2 \
1973      && grep 'obj_format = elf' ../gas/Makefile > /dev/null \
1974      && test x"$insn" != x ; then
1975     gcc_cv_as_gdwarf2_debug_flag="yes"
1976   fi
1977 elif test x$gcc_cv_as != x -a x"$insn" != x ; then
1978         echo '' > conftest.s
1979         # ??? This fails with non-gnu grep.
1980         if $gcc_cv_as --gdwarf2 -o conftest.o conftest.s > /dev/null 2>&1
1981           then
1982           gcc_cv_as_gdwarf2_flag="yes"
1983         fi
1984         rm -f conftest.s conftest.o
1985 fi
1986 if test x"$gcc_cv_as_gdwarf2_flag" = xyes; then
1987         AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
1988 [Define if your assembler supports the --gdwarf2 option.])
1989 fi
1990 AC_MSG_RESULT($gcc_cv_as_gdwarf2_flag)
1991
1992 AC_MSG_CHECKING(assembler --gstabs support)
1993 gcc_cv_as_gstabs_flag=no
1994 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x;
1995 then
1996   if test "$gcc_cv_gas_major_version" -eq 2 \
1997         -a "$gcc_cv_gas_minor_version" -ge 11 \
1998         -o "$gcc_cv_gas_major_version" -gt 2 \
1999      && grep 'obj_format = elf' ../gas/Makefile > /dev/null \
2000      && test x"$insn" != x ; then
2001     gcc_cv_as_gstabs_debug_flag="yes"
2002   fi
2003 elif test x$gcc_cv_as != x -a x"$insn" != x ; then
2004         echo '' > conftest.s
2005         # ??? This fails with non-gnu grep.
2006         if $gcc_cv_as --gstabs -o conftest.o conftest.s > /dev/null 2>&1 ; then
2007           gcc_cv_as_gstabs_flag="yes"
2008         fi
2009         rm -f conftest.s conftest.o
2010 fi
2011 if test x"$gcc_cv_as_gstabs_flag" = xyes; then
2012         AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
2013 [Define if your assembler supports the --gstabs option.])
2014 fi
2015 AC_MSG_RESULT($gcc_cv_as_gstabs_flag)
2016
2017 AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
2018 gcc_cv_ld_eh_frame_hdr=no
2019 if test x$gcc_cv_gld_major_version != x -a x$gcc_cv_gld_minor_version != x; then
2020   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
2021     gcc_cv_ld_eh_frame_hdr=yes
2022   fi
2023 elif test x$gcc_cv_ld != x; then
2024         # Check if linker supports --eh-frame-hdr option
2025         if $gcc_cv_ld --help 2>/dev/null | grep eh-frame-hdr > /dev/null; then
2026                 gcc_cv_ld_eh_frame_hdr=yes
2027         fi
2028 fi
2029 if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
2030         AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
2031 [Define if your linker supports --eh-frame-hdr option.])
2032 fi
2033 AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
2034
2035 if test "$prefix" != "/usr" && test "$prefix" != "/usr/local" ; then
2036   AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include")
2037 fi
2038
2039 # Figure out what language subdirectories are present.
2040 # Look if the user specified --enable-languages="..."; if not, use
2041 # the environment variable $LANGUAGES if defined. $LANGUAGES might
2042 # go away some day.
2043 # NB:  embedded tabs in this IF block -- do not untabify
2044 if test x"${enable_languages+set}" != xset; then
2045         if test x"${LANGUAGES+set}" = xset; then
2046                 enable_languages="${LANGUAGES}"
2047                 AC_MSG_WARN([setting LANGUAGES is deprecated, use --enable-languages instead])
2048
2049         else
2050                 enable_languages=all
2051         fi
2052 else
2053         if test x"${enable_languages}" = x ||
2054            test x"${enable_languages}" = xyes;
2055         then
2056                 AC_MSG_ERROR([--enable-languages needs at least one language argument])
2057         fi
2058 fi
2059 enable_languages=`echo "${enable_languages}" | sed -e 's/[[     ,]][[   ,]]*/,/g' -e 's/,$//'`
2060
2061 # First scan to see if an enabled language requires some other language.
2062 # We assume that a given config-lang.in will list all the language
2063 # front ends it requires, even if some are required indirectly.
2064 for lang in ${srcdir}/*/config-lang.in ..
2065 do
2066    case $lang in
2067     ..)
2068        ;;
2069     # The odd quoting in the next line works around
2070     # an apparent bug in bash 1.12 on linux.
2071 changequote(,)dnl
2072     ${srcdir}/[*]/config-lang.in)
2073        ;;
2074     *)
2075        lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^      ]*\).*$,\1,p' $lang`
2076        this_lang_requires=`sed -n -e 's,^lang_requires=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^lang_requires=\([^    ]*\).*$,\1,p' $lang`
2077        for other in $this_lang_requires
2078        do
2079           case ,${enable_languages}, in
2080            *,$other,*)
2081               ;;
2082            *,all,*)
2083               ;;
2084            *,$lang_alias,*)
2085               enable_languages="$enable_languages,$other"
2086               ;;
2087           esac
2088        done
2089        ;;
2090 changequote([,])dnl
2091    esac
2092 done
2093
2094 subdirs=
2095 for lang in ${srcdir}/*/config-lang.in ..
2096 do
2097         case $lang in
2098         ..) ;;
2099         # The odd quoting in the next line works around
2100         # an apparent bug in bash 1.12 on linux.
2101 changequote(,)dnl
2102         ${srcdir}/[*]/config-lang.in) ;;
2103         *)
2104           lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^   ]*\).*$,\1,p' $lang`
2105           this_lang_libs=`sed -n -e 's,^target_libs=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^target_libs=\([^         ]*\).*$,\1,p' $lang`
2106           build_by_default=`sed -n -e 's,^build_by_default=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^build_by_default=\([^     ]*\).*$,\1,p' $lang`
2107           if test "x$lang_alias" = x
2108           then
2109                 echo "$lang doesn't set \$language." 1>&2
2110                 exit 1
2111           fi
2112           case ${build_by_default},${enable_languages}, in
2113           *,$lang_alias,*) add_this_lang=yes ;;
2114           no,*) add_this_lang=no ;;
2115           *,all,*) add_this_lang=yes ;;
2116           *) add_this_lang=no ;;
2117           esac
2118           if test x"${add_this_lang}" = xyes; then
2119                 case $lang in
2120                     ${srcdir}/ada/config-lang.in)
2121                         if test x$have_gnat = xyes ; then
2122                                 subdirs="$subdirs `echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
2123                         fi
2124                         ;;
2125                     *)
2126                         subdirs="$subdirs `echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
2127                         ;;
2128                 esac
2129           fi
2130           ;;
2131 changequote([,])dnl
2132         esac
2133 done
2134
2135 # Make gthr-default.h if we have a thread file.
2136 gthread_flags=
2137 if test $thread_file != single; then
2138     rm -f gthr-default.h
2139     echo "#include \"gthr-${thread_file}.h\"" > gthr-default.h
2140     gthread_flags=-DHAVE_GTHR_DEFAULT
2141 fi
2142 AC_SUBST(gthread_flags)
2143
2144 # Find out what GC implementation we want, or may, use.
2145 AC_ARG_WITH(gc,
2146 [  --with-gc={simple,page} choose the garbage collection mechanism to use
2147                           with the compiler],
2148 [case "$withval" in
2149   simple | page)
2150     GGC=ggc-$withval
2151     ;;
2152   *)
2153     AC_MSG_ERROR([$withval is an invalid option to --with-gc])
2154     ;;
2155 esac],
2156 [GGC=ggc-page])
2157 AC_SUBST(GGC)
2158 echo "Using $GGC for garbage collection."
2159
2160 # Use the system's zlib library.
2161 zlibdir=-L../zlib
2162 zlibinc="-I\$(srcdir)/../zlib"
2163 AC_ARG_WITH(system-zlib,
2164 [  --with-system-zlib      use installed libz],
2165 zlibdir=
2166 zlibinc=
2167 )
2168 AC_SUBST(zlibdir)
2169 AC_SUBST(zlibinc)
2170
2171 dnl Very limited version of automake's enable-maintainer-mode
2172
2173 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
2174   dnl maintainer-mode is disabled by default
2175   AC_ARG_ENABLE(maintainer-mode,
2176 [  --enable-maintainer-mode
2177                           enable make rules and dependencies not useful
2178                           (and sometimes confusing) to the casual installer],
2179       maintainer_mode=$enableval,
2180       maintainer_mode=no)
2181
2182 AC_MSG_RESULT($maintainer_mode)
2183
2184 if test "$maintainer_mode" = "yes"; then
2185   MAINT=''
2186 else
2187   MAINT='#'
2188 fi
2189 AC_SUBST(MAINT)dnl
2190
2191 # With Setjmp/Longjmp based exception handling.
2192 AC_ARG_ENABLE(sjlj-exceptions,
2193 [  --enable-sjlj-exceptions
2194                           arrange to use setjmp/longjmp exception handling],
2195 [sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi`
2196 AC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj,
2197   [Define 0/1 to force the choice for exception handling model.])])
2198
2199 # Make empty files to contain the specs and options for each language.
2200 # Then add #include lines to for a compiler that has specs and/or options.
2201
2202 lang_specs_files=
2203 lang_options_files=
2204 lang_tree_files=
2205 for subdir in . $subdirs
2206 do
2207         if test -f $srcdir/$subdir/lang-specs.h; then
2208             lang_specs_files="$lang_specs_files $srcdir/$subdir/lang-specs.h"
2209         fi
2210         if test -f $srcdir/$subdir/lang-options.h; then
2211             lang_options_files="$lang_options_files $srcdir/$subdir/lang-options.h"
2212         fi
2213         if test -f $srcdir/$subdir/$subdir-tree.def; then
2214             lang_tree_files="$lang_tree_files $srcdir/$subdir/$subdir-tree.def"
2215         fi
2216 done
2217
2218 # These (without "all_") are set in each config-lang.in.
2219 # `language' must be a single word so is spelled singularly.
2220 all_languages=
2221 all_boot_languages=
2222 all_compilers=
2223 all_stagestuff=
2224 all_outputs='Makefile intl/Makefile fixinc/Makefile gccbug mklibgcc'
2225 # List of language makefile fragments.
2226 all_lang_makefiles=
2227
2228 # Add the language fragments.
2229 # Languages are added via two mechanisms.  Some information must be
2230 # recorded in makefile variables, these are defined in config-lang.in.
2231 # We accumulate them and plug them into the main Makefile.
2232 # The other mechanism is a set of hooks for each of the main targets
2233 # like `clean', `install', etc.
2234
2235 language_fragments="Make-lang"
2236 language_hooks="Make-hooks"
2237
2238 for s in .. $subdirs
2239 do
2240         if test $s != ".."
2241         then
2242                 language=
2243                 boot_language=
2244                 compilers=
2245                 stagestuff=
2246                 outputs=
2247                 . ${srcdir}/$s/config-lang.in
2248                 if test "x$language" = x
2249                 then
2250                         echo "${srcdir}/$s/config-lang.in doesn't set \$language." 1>&2
2251                         exit 1
2252                 fi
2253                 all_lang_makefiles="$all_lang_makefiles ${srcdir}/$s/Make-lang.in"
2254                 if test -f ${srcdir}/$s/Makefile.in
2255                 then all_lang_makefiles="$all_lang_makefiles ${srcdir}/$s/Makefile.in"
2256                 fi
2257                 all_languages="$all_languages $language"
2258                 if test "x$boot_language" = xyes
2259                 then
2260                         all_boot_languages="$all_boot_languages $language"
2261                 fi
2262                 all_compilers="$all_compilers $compilers"
2263                 all_stagestuff="$all_stagestuff $stagestuff"
2264                 all_outputs="$all_outputs $outputs"
2265         fi
2266 done
2267
2268 check_languages=
2269 for language in .. $all_languages
2270 do
2271         if test $language != ".."
2272         then
2273                 check_languages="$check_languages check-$language"
2274         fi
2275 done
2276
2277 # Since we can't use `::' targets, we link each language in
2278 # with a set of hooks, reached indirectly via lang.${target}.
2279
2280 rm -f Make-hooks
2281 touch Make-hooks
2282 target_list="all.build all.cross start.encap rest.encap \
2283         info dvi generated-manpages \
2284         install-normal install-common install-info install-man \
2285         uninstall \
2286         mostlyclean clean distclean extraclean maintainer-clean \
2287         stage1 stage2 stage3 stage4"
2288 for t in $target_list
2289 do
2290         x=
2291         for lang in .. $all_languages
2292         do
2293                 if test $lang != ".."; then
2294                         x="$x $lang.$t"
2295                 fi
2296         done
2297         echo "lang.$t: $x" >> Make-hooks
2298 done
2299
2300 # Create .gdbinit.
2301
2302 echo "dir ." > .gdbinit
2303 echo "dir ${srcdir}" >> .gdbinit
2304 if test x$gdb_needs_out_file_path = xyes
2305 then
2306         echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
2307 fi
2308 if test "x$subdirs" != x; then
2309         for s in $subdirs
2310         do
2311                 echo "dir ${srcdir}/$s" >> .gdbinit
2312         done
2313 fi
2314 echo "source ${srcdir}/gdbinit.in" >> .gdbinit
2315
2316 # Define variables host_canonical and build_canonical
2317 # because some Cygnus local changes in the Makefile depend on them.
2318 build_canonical=${build}
2319 host_canonical=${host}
2320 target_subdir=
2321 if test "${host}" != "${target}" ; then
2322     target_subdir=${target_alias}/
2323 fi
2324 AC_SUBST(build_canonical)
2325 AC_SUBST(host_canonical)
2326 AC_SUBST(target_subdir)
2327         
2328 # If $(exec_prefix) exists and is not the same as $(prefix), then compute an
2329 # absolute path for gcc_tooldir based on inserting the number of up-directory
2330 # movements required to get from $(exec_prefix) to $(prefix) into the basic
2331 # $(libsubdir)/@(unlibsubdir) based path.
2332 # Don't set gcc_tooldir to tooldir since that's only passed in by the toplevel
2333 # make and thus we'd get different behavior depending on where we built the
2334 # sources.
2335 if test x$exec_prefix = xNONE -o x$exec_prefix = x$prefix; then
2336     gcc_tooldir='$(libsubdir)/$(unlibsubdir)/../$(target_alias)'
2337 else
2338 changequote(<<, >>)dnl
2339 # An explanation of the sed strings:
2340 #  -e 's|^\$(prefix)||'   matches and eliminates 'prefix' from 'exec_prefix'
2341 #  -e 's|/$||'            match a trailing forward slash and eliminates it
2342 #  -e 's|^[^/]|/|'        forces the string to start with a forward slash (*)
2343 #  -e 's|/[^/]*|../|g'    replaces each occurrence of /<directory> with ../
2344 #
2345 # (*) Note this pattern overwrites the first character of the string
2346 # with a forward slash if one is not already present.  This is not a
2347 # problem because the exact names of the sub-directories concerned is
2348 # unimportant, just the number of them matters.
2349 #
2350 # The practical upshot of these patterns is like this:
2351 #
2352 #  prefix     exec_prefix        result
2353 #  ------     -----------        ------
2354 #   /foo        /foo/bar          ../
2355 #   /foo/       /foo/bar          ../
2356 #   /foo        /foo/bar/         ../
2357 #   /foo/       /foo/bar/         ../
2358 #   /foo        /foo/bar/ugg      ../../
2359 #
2360     dollar='$$'
2361     gcc_tooldir="\$(libsubdir)/\$(unlibsubdir)/\`echo \$(exec_prefix) | sed -e 's|^\$(prefix)||' -e 's|/\$(dollar)||' -e 's|^[^/]|/|' -e 's|/[^/]*|../|g'\`\$(target_alias)"
2362 changequote([, ])dnl
2363 fi
2364 AC_SUBST(gcc_tooldir)
2365 AC_SUBST(dollar)
2366
2367 # Find a directory in which to install a shared libgcc.
2368
2369 AC_ARG_ENABLE(version-specific-runtime-libs,
2370 [  --enable-version-specific-runtime-libs
2371                           specify that runtime libraries should be
2372                           installed in a compiler-specific directory])
2373
2374 AC_ARG_WITH(slibdir,
2375 [  --with-slibdir=DIR      shared libraries in DIR [LIBDIR]],
2376 slibdir="$with_slibdir",
2377 if test "${enable_version_specific_runtime_libs+set}" = set; then
2378   slibdir='$(libsubdir)'
2379 elif test "$host" != "$target"; then
2380   slibdir='$(build_tooldir)/lib'
2381 else
2382   slibdir='$(libdir)'
2383 fi)
2384 AC_SUBST(slibdir)
2385
2386 # Nothing to do for FLOAT_H, float_format already handled.
2387 objdir=`${PWDCMD-pwd}`
2388 AC_SUBST(objdir)
2389
2390 # Process the language and host/target makefile fragments.
2391 ${CONFIG_SHELL-/bin/sh} $srcdir/configure.frag $srcdir "$subdirs" "$dep_host_xmake_file" "$dep_tmake_file"
2392
2393 # Substitute configuration variables
2394 AC_SUBST(subdirs)
2395 AC_SUBST(all_boot_languages)
2396 AC_SUBST(all_compilers)
2397 AC_SUBST(all_lang_makefiles)
2398 AC_SUBST(all_languages)
2399 AC_SUBST(all_stagestuff)
2400 AC_SUBST(build_exeext)
2401 AC_SUBST(build_install_headers_dir)
2402 AC_SUBST(build_xm_file_list)
2403 AC_SUBST(build_xm_file)
2404 AC_SUBST(build_xm_defines)
2405 AC_SUBST(check_languages)
2406 AC_SUBST(cc_set_by_configure)
2407 AC_SUBST(quoted_cc_set_by_configure)
2408 AC_SUBST(cpp_install_dir)
2409 AC_SUBST(dep_host_xmake_file)
2410 AC_SUBST(dep_tmake_file)
2411 AC_SUBST(extra_headers_list)
2412 AC_SUBST(extra_objs)
2413 AC_SUBST(extra_parts)
2414 AC_SUBST(extra_passes)
2415 AC_SUBST(extra_programs)
2416 AC_SUBST(float_h_file)
2417 AC_SUBST(gcc_config_arguments)
2418 AC_SUBST(gcc_gxx_include_dir)
2419 AC_SUBST(libstdcxx_incdir)
2420 AC_SUBST(gcc_version)
2421 AC_SUBST(gcc_version_full)
2422 AC_SUBST(gcc_version_trigger)
2423 AC_SUBST(host_exeext)
2424 AC_SUBST(host_extra_gcc_objs)
2425 AC_SUBST(host_xm_file_list)
2426 AC_SUBST(host_xm_file)
2427 AC_SUBST(host_xm_defines)
2428 AC_SUBST(install)
2429 AC_SUBST(lang_options_files)
2430 AC_SUBST(lang_specs_files)
2431 AC_SUBST(lang_tree_files)
2432 AC_SUBST(local_prefix)
2433 AC_SUBST(md_file)
2434 AC_SUBST(objc_boehm_gc)
2435 AC_SUBST(out_file)
2436 AC_SUBST(out_object_file)
2437 AC_SUBST(stage_prefix_set_by_configure)
2438 AC_SUBST(quoted_stage_prefix_set_by_configure)
2439 AC_SUBST(symbolic_link)
2440 AC_SUBST(thread_file)
2441 AC_SUBST(tm_file_list)
2442 AC_SUBST(tm_file)
2443 AC_SUBST(tm_p_file_list)
2444 AC_SUBST(tm_p_file)
2445 AC_SUBST(xm_file)
2446 AC_SUBST(xm_defines)
2447 AC_SUBST(target_alias)
2448 AC_SUBST(c_target_objs)
2449 AC_SUBST(cxx_target_objs)
2450 AC_SUBST(target_cpu_default)
2451
2452 AC_SUBST_FILE(target_overrides)
2453 AC_SUBST_FILE(host_overrides)
2454 AC_SUBST_FILE(language_fragments)
2455 AC_SUBST_FILE(language_hooks)
2456
2457 # Echo that links are built
2458 if test x$host = x$target
2459 then
2460         str1="native "
2461 else
2462         str1="cross-"
2463         str2=" from $host"
2464 fi
2465
2466 if test x$host != x$build
2467 then
2468         str3=" on a $build system"
2469 fi
2470
2471 if test "x$str2" != x || test "x$str3" != x
2472 then
2473         str4=
2474 fi
2475
2476 echo "Links are now set up to build a ${str1}compiler for ${target}$str4" 1>&2
2477
2478 if test "x$str2" != x || test "x$str3" != x
2479 then
2480         echo " ${str2}${str3}." 1>&2
2481 fi
2482
2483 # Truncate the target if necessary
2484 if test x$host_truncate_target != x; then
2485         target=`echo $target | sed -e 's/\(..............\).*/\1/'`
2486 fi
2487
2488 # Configure the subdirectories
2489 # AC_CONFIG_SUBDIRS($subdirs)
2490
2491 # Create the Makefile
2492 # and configure language subdirectories
2493 AC_OUTPUT($all_outputs,
2494 [
2495 case x$CONFIG_HEADERS in
2496 xauto-host.h:config.in)
2497 echo > cstamp-h ;;
2498 esac
2499 # If the host supports symlinks, point stage[1234] at ../stage[1234] so
2500 # bootstrapping and the installation procedure can still use
2501 # CC="stage1/xgcc -Bstage1/".  If the host doesn't support symlinks,
2502 # FLAGS_TO_PASS has been modified to solve the problem there.
2503 # This is virtually a duplicate of what happens in configure.lang; we do
2504 # an extra check to make sure this only happens if ln -s can be used.
2505 if test "$symbolic_link" = "ln -s"; then
2506  for d in .. ${subdirs} fixinc ; do
2507    if test $d != ..; then
2508         STARTDIR=`${PWDCMD-pwd}`
2509         cd $d
2510         for t in stage1 stage2 stage3 stage4 include
2511         do
2512                 rm -f $t
2513                 $symbolic_link ../$t $t 2>/dev/null
2514         done
2515         cd $STARTDIR
2516    fi
2517  done
2518 else true ; fi
2519 # Avoid having to add intl to our include paths.
2520 if test -f intl/libintl.h; then
2521   echo creating libintl.h
2522   echo '#include "intl/libintl.h"' >libintl.h
2523 fi
2524 ], 
2525 [subdirs='$subdirs'
2526 symbolic_link='$symbolic_link'
2527 ])