OSDN Git Service

* config.gcc (default_use_cxa_atexit): New variable, defaults to no.
[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 1997, 1998, 1999, 2000, 2001, 2002, 2003
5 # Free Software Foundation, Inc.
6
7 #This file is part of GCC.
8
9 #GCC is free software; you can redistribute it and/or modify it under
10 #the terms of the GNU General Public License as published by the Free
11 #Software Foundation; either version 2, or (at your option) any later
12 #version.
13
14 #GCC is distributed in the hope that it will be useful, but WITHOUT
15 #ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16 #FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
17 #for more details.
18
19 #You should have received a copy of the GNU General Public License
20 #along with GCC; see the file COPYING.  If not, write to the Free
21 #Software Foundation, 59 Temple Place - Suite 330, Boston, MA
22 #02111-1307, USA.
23
24 # --------------------------------
25 # Initialization and sanity checks
26 # --------------------------------
27
28 AC_PREREQ(2.13)
29 AC_INIT(tree.c)
30 AC_CONFIG_HEADER(auto-host.h:config.in)
31
32 # Determine the host, build, and target systems
33 AC_CANONICAL_SYSTEM
34
35 # Define variables host_canonical and build_canonical
36 build_canonical=${build}
37 host_canonical=${host}
38 AC_SUBST(build_canonical)
39 AC_SUBST(host_canonical)
40
41 target_subdir=
42 if test "${host}" != "${target}" ; then
43     target_subdir=${target_alias}/
44 fi
45 AC_SUBST(target_subdir)
46         
47 # Set program_transform_name
48 AC_ARG_PROGRAM
49
50 # Check for bogus environment variables.
51 # Test if LIBRARY_PATH contains the notation for the current directory
52 # since this would lead to problems installing/building glibc.
53 # LIBRARY_PATH contains the current directory if one of the following
54 # is true:
55 # - one of the terminals (":" and ";") is the first or last sign
56 # - two terminals occur directly after each other
57 # - the path contains an element with a dot in it
58 AC_MSG_CHECKING(LIBRARY_PATH variable)
59 changequote(,)dnl
60 case ${LIBRARY_PATH} in
61   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
62     library_path_setting="contains current directory"
63     ;;
64   *)
65     library_path_setting="ok"
66     ;;
67 esac
68 changequote([,])dnl
69 AC_MSG_RESULT($library_path_setting)
70 if test "$library_path_setting" != "ok"; then
71 AC_MSG_ERROR([
72 *** LIBRARY_PATH shouldn't contain the current directory when
73 *** building gcc. Please change the environment variable
74 *** and run configure again.])
75 fi
76
77 # Test if GCC_EXEC_PREFIX contains the notation for the current directory
78 # since this would lead to problems installing/building glibc.
79 # GCC_EXEC_PREFIX contains the current directory if one of the following
80 # is true:
81 # - one of the terminals (":" and ";") is the first or last sign
82 # - two terminals occur directly after each other
83 # - the path contains an element with a dot in it
84 AC_MSG_CHECKING(GCC_EXEC_PREFIX variable)
85 changequote(,)dnl
86 case ${GCC_EXEC_PREFIX} in
87   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
88     gcc_exec_prefix_setting="contains current directory"
89     ;;
90   *)
91     gcc_exec_prefix_setting="ok"
92     ;;
93 esac
94 changequote([,])dnl
95 AC_MSG_RESULT($gcc_exec_prefix_setting)
96 if test "$gcc_exec_prefix_setting" != "ok"; then
97 AC_MSG_ERROR([
98 *** GCC_EXEC_PREFIX shouldn't contain the current directory when
99 *** building gcc. Please change the environment variable
100 *** and run configure again.])
101 fi
102
103 # -----------
104 # Directories
105 # -----------
106
107 # Specify the local prefix
108 local_prefix=
109 AC_ARG_WITH(local-prefix,
110 [  --with-local-prefix=DIR specifies directory to put local include],
111 [case "${withval}" in
112 yes)    AC_MSG_ERROR(bad value ${withval} given for local include directory prefix) ;;
113 no)     ;;
114 *)      local_prefix=$with_local_prefix ;;
115 esac])
116
117 # Default local prefix if it is empty
118 if test x$local_prefix = x; then
119         local_prefix=/usr/local
120 fi
121
122 # Don't set gcc_gxx_include_dir to gxx_include_dir since that's only
123 # passed in by the toplevel make and thus we'd get different behavior
124 # depending on where we built the sources.
125 gcc_gxx_include_dir=
126 # Specify the g++ header file directory
127 AC_ARG_WITH(gxx-include-dir,
128 [  --with-gxx-include-dir=DIR
129                           specifies directory to put g++ header files],
130 [case "${withval}" in
131 yes)    AC_MSG_ERROR(bad value ${withval} given for g++ include directory) ;;
132 no)     ;;
133 *)      gcc_gxx_include_dir=$with_gxx_include_dir ;;
134 esac])
135
136 if test x${gcc_gxx_include_dir} = x; then
137   if test x${enable_version_specific_runtime_libs} = xyes; then
138     gcc_gxx_include_dir='${libsubdir}/include/c++'
139   else
140     topsrcdir=${srcdir}/.. . ${srcdir}/../config.if
141 changequote(<<, >>)dnl
142     gcc_gxx_include_dir="\$(libsubdir)/\$(unlibsubdir)/..\`echo \$(exec_prefix) | sed -e 's|^\$(prefix)||' -e 's|/[^/]*|/..|g'\`/include/"${libstdcxx_incdir}
143 changequote([, ])dnl
144   fi
145 fi
146
147 AC_ARG_WITH(cpp_install_dir,
148 [  --with-cpp-install-dir=DIR
149                           install the user visible C preprocessor in DIR
150                           (relative to PREFIX) as well as PREFIX/bin],
151 [if test x$withval = xyes; then
152   AC_MSG_ERROR([option --with-cpp-install-dir requires an argument])
153 elif test x$withval != xno; then
154   cpp_install_dir=$withval
155 fi])
156
157 # -------------------
158 # Find default linker
159 # -------------------
160
161 # With GNU ld
162 AC_ARG_WITH(gnu-ld,
163 [  --with-gnu-ld           arrange to work with GNU ld.],
164 gnu_ld_flag="$with_gnu_ld",
165 gnu_ld_flag=no)
166
167 # With pre-defined ld
168 AC_ARG_WITH(ld,
169 [  --with-ld               arrange to use the specified ld (full pathname)],
170 DEFAULT_LINKER="$with_ld")
171 if test x"${DEFAULT_LINKER+set}" = x"set"; then
172   if test ! -x "$DEFAULT_LINKER"; then
173     AC_MSG_WARN([cannot execute: $DEFAULT_LINKER: check --with-ld or env. var. DEFAULT_LINKER])
174   elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
175     gnu_ld_flag=yes
176   fi
177   AC_DEFINE_UNQUOTED(DEFAULT_LINKER,"$DEFAULT_LINKER",
178         [Define to enable the use of a default linker.])
179 fi
180
181 AC_MSG_CHECKING([whether a default linker was specified])
182 if test x"${DEFAULT_LINKER+set}" = x"set"; then
183   if test x"$gnu_ld_flag" = x"no"; then
184     AC_MSG_RESULT([yes ($DEFAULT_LINKER)])
185   else
186     AC_MSG_RESULT([yes ($DEFAULT_LINKER - GNU ld)])
187   fi
188 else
189   AC_MSG_RESULT(no)
190 fi
191
192 # ----------------------
193 # Find default assembler
194 # ----------------------
195
196 # With GNU as
197 AC_ARG_WITH(gnu-as,
198 [  --with-gnu-as           arrange to work with GNU as],
199 gas_flag="$with_gnu_as",
200 gas_flag=no)
201
202 AC_ARG_WITH(as,
203 [  --with-as               arrange to use the specified as (full pathname)],
204 DEFAULT_ASSEMBLER="$with_as")
205 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
206   if test ! -x "$DEFAULT_ASSEMBLER"; then
207     AC_MSG_WARN([cannot execute: $DEFAULT_ASSEMBLER: check --with-as or env. var. DEFAULT_ASSEMBLER])
208   elif $DEFAULT_ASSEMBLER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
209     gas_flag=yes
210   fi
211   AC_DEFINE_UNQUOTED(DEFAULT_ASSEMBLER,"$DEFAULT_ASSEMBLER",
212         [Define to enable the use of a default assembler.])
213 fi
214
215 AC_MSG_CHECKING([whether a default assembler was specified])
216 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
217   if test x"$gas_flag" = x"no"; then
218     AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER)])
219   else
220     AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)])
221   fi
222 else
223   AC_MSG_RESULT(no)
224 fi
225
226 # ---------------
227 # Find C compiler
228 # ---------------
229
230 # Find the native compiler
231 AC_PROG_CC
232 AC_PROG_CC_C_O
233 # autoconf is lame and doesn't give us any substitution variable for this.
234 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
235   NO_MINUS_C_MINUS_O=yes
236 else
237   OUTPUT_OPTION='-o $@'
238 fi
239 AC_SUBST(NO_MINUS_C_MINUS_O)
240 AC_SUBST(OUTPUT_OPTION)
241
242 # -------------------------
243 # Check C compiler features
244 # -------------------------
245
246 AC_CACHE_CHECK(whether ${CC-cc} accepts -Wno-long-long,
247 ac_cv_prog_cc_no_long_long,
248 [save_CFLAGS="$CFLAGS"
249 CFLAGS="-Wno-long-long"
250 AC_TRY_COMPILE(,,ac_cv_prog_cc_no_long_long=yes,
251                ac_cv_prog_cc_no_long_long=no)
252 CFLAGS="$save_CFLAGS"])
253
254 AC_PROG_CPP
255 AC_C_INLINE
256 gcc_AC_C_VOLATILE
257
258 gcc_AC_C_LONG_DOUBLE
259 gcc_AC_C_LONG_LONG
260 gcc_AC_C__BOOL
261
262 # sizeof(char) is 1 by definition.
263 AC_COMPILE_CHECK_SIZEOF(short)
264 AC_COMPILE_CHECK_SIZEOF(int)
265 AC_COMPILE_CHECK_SIZEOF(long)
266 if test $ac_cv_c_long_long = yes; then
267   AC_COMPILE_CHECK_SIZEOF(long long)
268 fi
269 if test $ac_cv_c___int64 = yes; then
270   AC_COMPILE_CHECK_SIZEOF(__int64)
271 fi
272
273 gcc_AC_C_CHARSET
274
275 # -----------------
276 # Find Ada compiler
277 # -----------------
278
279 # See if GNAT has been installed
280 gcc_AC_PROG_GNAT
281
282 if test x$have_gnat != xno ; then 
283 AC_CACHE_CHECK(whether ${ADAC} accepts -Wno-long-long,
284 ac_cv_prog_adac_no_long_long,
285 [cat >conftest.adb <<EOF
286 procedure conftest is begin null; end conftest;
287 EOF
288 if $ADAC -Wno-long-long -c conftest.adb 1>&5 2>&5 ; then
289   ac_cv_prog_adac_no_long_long=yes
290 else
291   ac_cv_prog_adac_no_long_long=no
292 fi
293 rm -f conftest*])
294 else
295   ac_cv_prog_adac_no_long_long=yes
296 fi
297
298 # ---------------------
299 # Warnings and checking
300 # ---------------------
301
302 strict1_warn=
303 if test $ac_cv_prog_cc_no_long_long = yes && \
304     test $ac_cv_prog_adac_no_long_long = yes ; then
305   strict1_warn="-pedantic -Wno-long-long"
306 fi
307 AC_SUBST(strict1_warn)
308
309 # If the native compiler is GCC, we can enable warnings even in stage1.  
310 # That's useful for people building cross-compilers, or just running a
311 # quick `make'.
312 warn_cflags=
313 if test "x$GCC" = "xyes"; then
314   warn_cflags='$(GCC_WARN_CFLAGS)'
315 fi
316 AC_SUBST(warn_cflags)
317
318 # Enable -Werror in bootstrap stage2 and later.
319 # Change the default to "no" on release branches.
320 AC_ARG_ENABLE(werror, 
321 [  --enable-werror         enable -Werror in bootstrap stage2 and later], [],
322 [enable_werror=yes])
323 if test x$enable_werror = xyes ; then
324   WERROR=-Werror
325 fi
326 AC_SUBST(WERROR)
327
328 # Enable expensive internal checks
329 AC_ARG_ENABLE(checking,
330 [  --enable-checking[=LIST]
331                           enable expensive run-time checks.  With LIST,
332                           enable only specific categories of checks.
333                           Categories are: misc,tree,rtl,rtlflag,gc,gcac;
334                           default is misc,tree,gc,rtlflag],
335 [ac_checking=
336 ac_tree_checking=
337 ac_rtl_checking=
338 ac_rtlflag_checking=
339 ac_gc_checking=
340 ac_gc_always_collect=
341 case "${enableval}" in
342 yes)    ac_checking=1 ; ac_tree_checking=1 ; ac_gc_checking=1 ;
343         ac_rtlflag_checking=1 ;;
344 no)     ;;
345 *)      IFS="${IFS=     }"; ac_save_IFS="$IFS"; IFS="$IFS,"
346         set fnord $enableval; shift
347         IFS="$ac_save_IFS"
348         for check
349         do
350                 case $check in
351                 misc)   ac_checking=1 ;;
352                 tree)   ac_tree_checking=1 ;;
353                 rtlflag)        ac_rtlflag_checking=1 ;;
354                 rtl)    ac_rtl_checking=1 ;;
355                 gc)     ac_gc_checking=1 ;;
356                 gcac)   ac_gc_always_collect=1 ;;
357                 valgrind)       ac_checking_valgrind=1 ;;
358                 *)      AC_MSG_ERROR(unknown check category $check) ;;
359                 esac
360         done
361         ;;
362 esac
363 ], 
364 # Enable some checks by default for development versions of GCC
365 [ac_checking=1; ac_tree_checking=1; ac_gc_checking=1; ac_rtlflag_checking=1;])
366 nocommon_flag=""
367 if test x$ac_checking != x ; then
368   AC_DEFINE(ENABLE_CHECKING, 1,
369 [Define if you want more run-time sanity checks.  This one gets a grab
370    bag of miscellaneous but relatively cheap checks.])
371   nocommon_flag=-fno-common
372 fi
373 AC_SUBST(nocommon_flag)
374 if test x$ac_tree_checking != x ; then
375   AC_DEFINE(ENABLE_TREE_CHECKING, 1,
376 [Define if you want all operations on trees (the basic data
377    structure of the front ends) to be checked for dynamic type safety
378    at runtime.  This is moderately expensive.])
379 fi
380 if test x$ac_rtl_checking != x ; then
381   AC_DEFINE(ENABLE_RTL_CHECKING, 1,
382 [Define if you want all operations on RTL (the basic data structure
383    of the optimizer and back end) to be checked for dynamic type safety
384    at runtime.  This is quite expensive.])
385 fi
386 if test x$ac_rtlflag_checking != x ; then
387   AC_DEFINE(ENABLE_RTL_FLAG_CHECKING, 1,
388 [Define if you want RTL flag accesses to be checked against the RTL
389    codes that are supported for each access macro.  This is relatively
390    cheap.])
391 fi
392 if test x$ac_gc_checking != x ; then
393   AC_DEFINE(ENABLE_GC_CHECKING, 1,
394 [Define if you want the garbage collector to do object poisoning and
395    other memory allocation checks.  This is quite expensive.])
396 fi
397 if test x$ac_gc_always_collect != x ; then
398   AC_DEFINE(ENABLE_GC_ALWAYS_COLLECT, 1,
399 [Define if you want the garbage collector to operate in maximally
400    paranoid mode, validating the entire heap and collecting garbage at
401    every opportunity.  This is extremely expensive.])
402 fi
403 valgrind_path_defines=
404 valgrind_command=
405 if test x$ac_checking_valgrind != x ; then
406   # It is certainly possible that there's valgrind but no valgrind.h.
407   # GCC relies on making annotations so we must have both.
408   AC_MSG_CHECKING(for VALGRIND_DISCARD in <memcheck.h>)
409   AC_TRY_CPP(
410     [#include <memcheck.h>
411 #ifndef VALGRIND_DISCARD
412 #error VALGRIND_DISCARD not defined
413 #endif],
414   [gcc_cv_header_memcheck_h=yes], 
415   gcc_cv_header_memcheck_h=no)
416   AC_MSG_RESULT($gcc_cv_header_memcheck_h)
417   AC_CHECK_HEADER(valgrind.h, have_valgrind_h=yes, have_valgrind_h=no)
418   AM_PATH_PROG_WITH_TEST(valgrind_path, valgrind,
419         [$ac_dir/$ac_word --version | grep valgrind- >/dev/null 2>&1])
420   if test "x$valgrind_path" = "x" || (test $have_valgrind_h = no && test $gcc_cv_header_memcheck_h = no); then
421         AC_MSG_ERROR([*** Can't find both valgrind and valgrind.h/memcheck.h])
422   fi
423   valgrind_path_defines=-DVALGRIND_PATH='\"'$valgrind_path'\"'
424   valgrind_command="$valgrind_path -q"
425   AC_DEFINE(ENABLE_VALGRIND_CHECKING, 1,
426 [Define if you want to run subprograms and generated programs
427    through valgrind (a memory checker).  This is extremely expensive.])
428   if test $gcc_cv_header_memcheck_h = yes; then
429     AC_DEFINE(HAVE_MEMCHECK_H, 1,
430         [Define if valgrind's memcheck.h header is installed.])
431   fi
432 fi
433 AC_SUBST(valgrind_path_defines)
434 AC_SUBST(valgrind_command)
435
436 # Enable code coverage collection
437 AC_ARG_ENABLE(coverage,
438 [  --enable-coverage[=LEVEL]
439                           enable compiler\'s code coverage collection.
440                           Use to measure compiler performance and locate
441                           unused parts of the compiler. With LEVEL, specify
442                           optimization. Values are opt, noopt,
443                           default is noopt],
444 [case "${enableval}" in
445 yes|noopt)
446         coverage_flags="-fprofile-arcs -ftest-coverage -O0 -DSELF_COVERAGE=1"
447         ;;
448 opt)
449         coverage_flags="-fprofile-arcs -ftest-coverage -O2 -DSELF_COVERAGE=2"
450         ;;
451 *)
452         AC_MSG_ERROR(unknown coverage setting $enableval)
453         ;;
454 esac],
455 [coverage_flags=""])
456 AC_SUBST(coverage_flags)
457
458 # -------------------------------
459 # Miscenalleous configure options
460 # -------------------------------
461
462 # With stabs
463 AC_ARG_WITH(stabs,
464 [  --with-stabs            arrange to use stabs instead of host debug format],
465 stabs="$with_stabs",
466 stabs=no)
467
468 # With ELF
469 AC_ARG_WITH(elf,
470 [  --with-elf              arrange to use ELF instead of host debug format],
471 elf="$with_elf",
472 elf=no)
473
474 # Determine whether or not multilibs are enabled.
475 AC_ARG_ENABLE(multilib,
476 [  --enable-multilib       enable library support for multiple ABIs],
477 [], [enable_multilib=yes])
478 AC_SUBST(enable_multilib)
479
480 # Enable __cxa_atexit for C++.
481 AC_ARG_ENABLE(__cxa_atexit,
482 [  --enable-__cxa_atexit   enable __cxa_atexit for C++],
483 [], [])
484
485 # Enable Multibyte Characters for C/C++
486 AC_ARG_ENABLE(c-mbchar,
487 [  --enable-c-mbchar       enable multibyte characters for C and C++],
488 if test x$enable_c_mbchar != xno; then
489   AC_DEFINE(MULTIBYTE_CHARS, 1,
490   [Define if you want the C and C++ compilers to support multibyte
491    character sets for source code.])
492 fi)
493   
494 # Enable threads
495 # Pass with no value to take the default
496 # Pass with a value to specify a thread package
497 AC_ARG_ENABLE(threads,
498 [  --enable-threads        enable thread usage for target GCC
499   --enable-threads=LIB    use LIB thread package for target GCC],,
500 enable_threads='')
501
502 enable_threads_flag=$enable_threads
503 # Check if a valid thread package
504 case x${enable_threads_flag} in
505         x | xno)
506                 # No threads
507                 target_thread_file='single'
508                 ;;
509         xyes)
510                 # default
511                 target_thread_file=''
512                 ;;
513         xdecosf1 | xirix | xmach | xos2 | xposix | xpthreads | xsingle | \
514         xsolaris | xwin32 | xdce | xrtems| xvxworks | xaix | xgnat)
515                 target_thread_file=$enable_threads_flag
516                 ;;
517         *)
518                 echo "$enable_threads is an unknown thread package" 1>&2
519                 exit 1
520                 ;;
521 esac
522
523 AC_ARG_ENABLE(objc-gc,
524 [  --enable-objc-gc       enable the use of Boehm's garbage collector with
525                           the GNU Objective-C runtime],
526 if test x$enable_objc_gc = xno; then
527         objc_boehm_gc=''
528 else
529         objc_boehm_gc=1
530 fi,
531 objc_boehm_gc='')
532
533 AC_ARG_WITH(dwarf2,
534 [  --with-dwarf2           force the default debug format to be DWARF 2],
535 dwarf2="$with_dwarf2",
536 dwarf2=no)
537
538 AC_ARG_ENABLE(shared,
539 [  --disable-shared        don't provide a shared libgcc],
540 [
541   case $enable_shared in
542   yes | no) ;;
543   *)
544     enable_shared=no
545     IFS="${IFS=         }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
546     for pkg in $enableval; do
547       if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
548         enable_shared=yes
549       fi
550     done
551     IFS="$ac_save_ifs"
552     ;;
553   esac
554 ], [enable_shared=yes])
555 AC_SUBST(enable_shared)
556
557 AC_ARG_WITH(sysroot,
558 [  --with-sysroot[=DIR] Search for usr/lib, usr/include, et al, within DIR.],
559 [
560  case ${with_sysroot} in
561  yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_alias}/sys-root' ;;
562  *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
563  esac
564    
565  TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
566  CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$(NATIVE_SYSTEM_HEADER_DIR)'
567
568  if test "x$exec_prefix" = xNONE; then
569   if test "x$prefix" = xNONE; then
570    test_prefix=/usr/local
571   else
572    test_prefix=$prefix
573   fi
574  else
575   test_prefix=$exec_prefix
576  fi
577  case ${TARGET_SYSTEM_ROOT} in
578  "${test_prefix}"|"${test_prefix}/"*|\
579  '${exec_prefix}'|'${exec_prefix}/'*)
580    t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
581    TARGET_SYSTEM_ROOT_DEFINE="$t"
582    ;;
583  esac
584 ], [
585  TARGET_SYSTEM_ROOT=
586  TARGET_SYSTEM_ROOT_DEFINE=
587  CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
588 ])
589 AC_SUBST(TARGET_SYSTEM_ROOT)
590 AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
591 AC_SUBST(CROSS_SYSTEM_HEADER_DIR)
592
593 # -------------------------
594 # Checks for other programs
595 # -------------------------
596
597 AC_PROG_MAKE_SET
598
599 # Find some useful tools
600 AC_PROG_AWK
601 gcc_AC_PROG_LN
602 gcc_AC_PROG_LN_S
603 AC_PROG_RANLIB
604 gcc_AC_PROG_INSTALL
605
606 # See if we have the mktemp command.
607 AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
608
609 # Do we have a single-tree copy of texinfo?
610 if test -f $srcdir/../texinfo/Makefile.in; then
611   MAKEINFO='$(objdir)/../texinfo/makeinfo/makeinfo'
612   gcc_cv_prog_makeinfo_modern=yes
613   AC_MSG_RESULT([Using makeinfo from the unified source tree.])
614 else
615   # See if makeinfo has been installed and is modern enough
616   # that we can use it.
617   gcc_AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
618   [GNU texinfo.* \([0-9][0-9.]*\)],
619   [4.[2-9]*])
620 fi
621
622 if test $gcc_cv_prog_makeinfo_modern = no; then
623   AC_MSG_WARN([
624 *** Makeinfo is missing or too old.
625 *** Info documentation will not be built.])
626   BUILD_INFO=
627 else
628   BUILD_INFO=info               AC_SUBST(BUILD_INFO)
629 fi
630
631 # Is pod2man recent enough to regenerate manpages?
632 AC_MSG_CHECKING([for recent Pod::Man])
633 if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
634   AC_MSG_RESULT(yes)
635   GENERATED_MANPAGES=generated-manpages         AC_SUBST(GENERATED_MANPAGES)
636 else
637   AC_MSG_RESULT(no)
638   GENERATED_MANPAGES=
639 fi
640
641 # 'make compare' can be significantly faster, if cmp itself can
642 # skip bytes instead of using tail.  The test being performed is
643 # "if cmp --ignore-initial=2 t1 t2 && ! cmp --ignore-initial=1 t1 t2"
644 # but we need to sink errors and handle broken shells.
645 AC_MSG_CHECKING([for cmp's capabilities])
646 echo abfoo >t1
647 echo cdfoo >t2
648 if cmp --ignore-initial=2 t1 t2 > /dev/null 2>&1; then
649   if cmp --ignore-initial=1 t1 t2 > /dev/null 2>&1; then
650     make_compare_target=slowcompare
651   else
652     make_compare_target=gnucompare
653   fi
654 else
655   make_compare_target=slowcompare
656 fi
657 rm t1 t2
658 AC_SUBST(make_compare_target)
659 AC_MSG_RESULT($make_compare_target)
660
661 # How about lex?
662 dnl Don't use AC_PROG_LEX; we insist on flex.
663 dnl LEXLIB is not useful in gcc.
664 if test -f $srcdir/../flex/skel.c; then
665   FLEX='$(objdir)/../flex/flex'
666 else
667   AC_CHECK_PROG(FLEX, flex, flex, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing flex)
668 fi
669
670 # Bison?
671 # The -L switch is so bison can find its skeleton file.
672 if test -f $srcdir/../bison/bison.simple; then
673   BISON='$(objdir)/../bison/bison -L $(srcdir)/../bison/'
674 else
675   AC_CHECK_PROG(BISON, bison, bison, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing bison)
676 fi
677
678 # --------------------
679 # Checks for C headers
680 # --------------------
681
682 AC_MSG_CHECKING(for GNU C library)
683 AC_CACHE_VAL(gcc_cv_glibc,
684 [AC_TRY_COMPILE(
685   [#include <features.h>],[
686 #if ! (defined __GLIBC__ || defined __GNU_LIBRARY__)
687 #error Not a GNU C library system
688 #endif], 
689   [gcc_cv_glibc=yes], 
690   gcc_cv_glibc=no)])
691 AC_MSG_RESULT($gcc_cv_glibc)
692 if test $gcc_cv_glibc = yes; then
693   AC_DEFINE(_GNU_SOURCE, 1, [Always define this when using the GNU C Library])
694 fi
695
696 AC_HEADER_STDC
697 AC_HEADER_TIME
698 gcc_AC_HEADER_STDBOOL
699 gcc_AC_HEADER_STRING
700 AC_HEADER_SYS_WAIT
701 AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h \
702                  fcntl.h unistd.h sys/file.h sys/time.h \
703                  sys/resource.h sys/param.h sys/times.h sys/stat.h \
704                  direct.h malloc.h langinfo.h ldfcn.h wchar.h)
705
706 # Check for thread headers.
707 AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
708 AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
709
710 # These tests can't be done till we know if we have limits.h.
711 gcc_AC_C_CHAR_BIT
712 AC_C_BIGENDIAN_CROSS
713
714 # --------
715 # UNSORTED
716 # --------
717
718 # Stage specific cflags for build.
719 stage1_cflags=
720 case $build in
721 vax-*-*)
722   if test x$GCC = xyes
723   then
724     stage1_cflags="-Wa,-J"
725   else
726     stage1_cflags="-J"
727   fi
728   ;;
729 powerpc-*-darwin*)
730   # The spiffy cpp-precomp chokes on some legitimate constructs in GCC
731   # sources; use -no-cpp-precomp to get to GNU cpp.
732   # Apple's GCC has bugs in designated initializer handling, so disable
733   # that too.
734   stage1_cflags="-no-cpp-precomp -DHAVE_DESIGNATED_INITIALIZERS=0"
735   ;;
736 esac
737 AC_SUBST(stage1_cflags)
738
739 # These libraries may be used by collect2.
740 # We may need a special search path to get them linked.
741 AC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs,
742 [save_LIBS="$LIBS"
743 for libs in '' -lld -lmld \
744                 '-L/usr/lib/cmplrs/cc2.11 -lmld' \
745                 '-L/usr/lib/cmplrs/cc3.11 -lmld'
746 do
747         LIBS="$libs"
748         AC_TRY_LINK_FUNC(ldopen,
749                 [gcc_cv_collect2_libs="$libs"; break])
750 done
751 LIBS="$save_LIBS"
752 test -z "$gcc_cv_collect2_libs" && gcc_cv_collect2_libs='none required'])
753 case $gcc_cv_collect2_libs in
754         "none required")        ;;
755         *)      COLLECT2_LIBS=$gcc_cv_collect2_libs ;;
756 esac
757 AC_SUBST(COLLECT2_LIBS)
758
759 # When building Ada code on Alpha, we need exc_resume which is usually in
760 # -lexc.  So test for it.
761 save_LIBS="$LIBS"
762 LIBS=
763 AC_SEARCH_LIBS(exc_resume, exc)
764 GNAT_LIBEXC="$LIBS"
765 LIBS="$save_LIBS"
766 AC_SUBST(GNAT_LIBEXC)
767
768 # Some systems put ldexp and frexp in libm instead of libc; assume
769 # they're both in the same place.  jcf-dump needs them.
770 save_LIBS="$LIBS"
771 LIBS=
772 AC_SEARCH_LIBS(ldexp, m)
773 LDEXP_LIB="$LIBS"
774 LIBS="$save_LIBS"
775 AC_SUBST(LDEXP_LIB)
776
777 # See if the stage1 system preprocessor understands the ANSI C
778 # preprocessor stringification operator.  (Used by symcat.h.)
779 AC_C_STRINGIZE
780
781 # Use <inttypes.h> only if it exists,
782 # doesn't clash with <sys/types.h>, and declares intmax_t.
783 AC_MSG_CHECKING(for inttypes.h)
784 AC_CACHE_VAL(gcc_cv_header_inttypes_h,
785 [AC_TRY_COMPILE(
786   [#include <sys/types.h>
787 #include <inttypes.h>],
788   [intmax_t i = -1;],
789   [gcc_cv_header_inttypes_h=yes],
790   gcc_cv_header_inttypes_h=no)])
791 AC_MSG_RESULT($gcc_cv_header_inttypes_h)
792 if test $gcc_cv_header_inttypes_h = yes; then
793   AC_DEFINE(HAVE_INTTYPES_H, 1,
794         [Define if you have a working <inttypes.h> header file.])
795 fi
796
797 dnl Disabled until we have a complete test for buggy enum bitfields.
798 dnl gcc_AC_C_ENUM_BF_UNSIGNED
799
800 AC_CHECK_FUNCS(times clock dup2 kill getrlimit setrlimit atoll atoq \
801         sysconf strsignal putc_unlocked fputc_unlocked fputs_unlocked \
802         fwrite_unlocked fprintf_unlocked getrusage nl_langinfo lstat \
803         scandir alphasort gettimeofday mbstowcs wcswidth)
804
805 if test x$ac_cv_func_mbstowcs = xyes; then
806   AC_CACHE_CHECK(whether mbstowcs works, gcc_cv_func_mbstowcs_works,
807 [    AC_TRY_RUN([#include <stdlib.h>
808 int main()
809 {
810   mbstowcs(0, "", 0);
811   return 0;
812 }],
813     gcc_cv_func_mbstowcs_works=yes,
814     gcc_cv_func_mbstowcs_works=no,
815     gcc_cv_func_mbstowcs_works=yes)])
816   if test x$gcc_cv_func_mbstowcs_works = xyes; then
817     AC_DEFINE(HAVE_WORKING_MBSTOWCS, 1,
818   [Define this macro if mbstowcs does not crash when its
819    first argument is NULL.])
820   fi
821 fi
822
823 AC_CHECK_TYPE(ssize_t, int)
824
825 # Try to determine the array type of the second argument of getgroups
826 # for the target system (int or gid_t).
827 AC_TYPE_GETGROUPS
828 if test "${target}" = "${build}"; then
829   TARGET_GETGROUPS_T=$ac_cv_type_getgroups
830 else
831   case "${target}" in
832         # This condition may need some tweaking.  It should include all
833         # targets where the array type of the second argument of getgroups
834         # is int and the type of gid_t is not equivalent to int.
835         *-*-sunos* | *-*-ultrix*)
836                 TARGET_GETGROUPS_T=int
837                 ;;
838         *)
839                 TARGET_GETGROUPS_T=gid_t
840                 ;;
841   esac
842 fi
843 AC_SUBST(TARGET_GETGROUPS_T)
844
845 gcc_AC_FUNC_PRINTF_PTR
846
847 case "${host}" in
848 *-*-uwin*)
849   AC_MSG_ERROR([
850 *** UWIN may not be used as a host platform because
851 *** linking with posix.dll is not allowed by the GNU GPL])
852   ;;
853 *-*-*vms*)
854   # Under VMS, vfork works very different than on Unix. The standard test 
855   # won't work, and it isn't easily adaptable. It makes more sense to
856   # just force it.
857   ac_cv_func_vfork_works=yes
858   ;;
859 esac
860 AC_FUNC_VFORK
861 AC_FUNC_MMAP_ANYWHERE
862 AC_FUNC_MMAP_FILE
863
864 AM_ICONV
865
866 # We will need to find libiberty.h and ansidecl.h
867 saved_CFLAGS="$CFLAGS"
868 CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include"
869 gcc_AC_CHECK_DECLS(getenv atol sbrk abort atof getcwd getwd \
870         strsignal putc_unlocked fputs_unlocked fwrite_unlocked \
871         fprintf_unlocked strstr errno vasprintf \
872         malloc realloc calloc free basename getopt clock, , ,[
873 #include "ansidecl.h"
874 #include "system.h"])
875
876 gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
877 #include "ansidecl.h"
878 #include "system.h"
879 #ifdef HAVE_SYS_RESOURCE_H
880 #include <sys/resource.h>
881 #endif
882 ])
883
884 AC_TRY_COMPILE([
885 #include "ansidecl.h"
886 #include "system.h"
887 #ifdef HAVE_SYS_RESOURCE_H
888 #include <sys/resource.h>
889 #endif
890 ],[rlim_t l = 0;],,[AC_DEFINE([rlim_t],[long],
891 [Define to \`long' if <sys/resource.h> doesn't define.])])
892
893 gcc_AC_CHECK_DECLS(ldgetname, , ,[
894 #include "ansidecl.h"
895 #include "system.h"
896 #ifdef HAVE_LDFCN_H
897 #include <ldfcn.h>
898 #endif
899 ])
900
901 gcc_AC_CHECK_DECLS(times, , ,[
902 #include "ansidecl.h"
903 #include "system.h"
904 #ifdef HAVE_SYS_TIMES_H
905 #include <sys/times.h>
906 #endif
907 ])
908
909 # More time-related stuff.
910 AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
911 AC_TRY_COMPILE([
912 #include "ansidecl.h"
913 #include "system.h"
914 #ifdef HAVE_SYS_TIMES_H
915 #include <sys/times.h>
916 #endif
917 ], [struct tms tms;], ac_cv_struct_tms=yes, ac_cv_struct_tms=no)])
918 if test $ac_cv_struct_tms = yes; then
919   AC_DEFINE(HAVE_STRUCT_TMS, 1,
920   [Define if <sys/times.h> defines struct tms.])
921 fi
922
923 # use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
924 # revisit after autoconf 2.50.
925 AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
926 AC_TRY_COMPILE([
927 #include "ansidecl.h"
928 #include "system.h"
929 ], [clock_t x;], gcc_cv_type_clock_t=yes, gcc_cv_type_clock_t=no)])
930 if test $gcc_cv_type_clock_t = yes; then
931   AC_DEFINE(HAVE_CLOCK_T, 1,
932   [Define if <time.h> defines clock_t.])
933 fi
934
935 AC_CACHE_CHECK(for uchar, gcc_cv_type_uchar,
936 [AC_TRY_COMPILE([
937 #include "ansidecl.h"
938 #include "system.h"
939 ], 
940 [if ((uchar *)0) return 0;
941  if (sizeof(uchar)) return 0;],
942 ac_cv_type_uchar=yes, ac_cv_type_uchar=no)])
943 if test $ac_cv_type_uchar = yes; then
944   AC_DEFINE(HAVE_UCHAR, 1,
945   [Define if <sys/types.h> defines \`uchar'.])
946 fi
947
948 # Restore CFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
949 CFLAGS="$saved_CFLAGS"
950
951 gcc_AC_INITFINI_ARRAY
952
953 # mkdir takes a single argument on some systems. 
954 gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
955
956 # File extensions
957 manext='.1'
958 objext='.o'
959 AC_SUBST(manext)
960 AC_SUBST(objext)
961
962 # With Setjmp/Longjmp based exception handling.
963 AC_ARG_ENABLE(sjlj-exceptions,
964 [  --enable-sjlj-exceptions
965                           arrange to use setjmp/longjmp exception handling],
966 [sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi`
967 AC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj,
968   [Define 0/1 to force the choice for exception handling model.])])
969
970 AC_CHECK_LIB(unwind, main, use_libunwind_default=yes, use_libunwind_default=no)
971 # Use libunwind based exception handling.
972 AC_ARG_ENABLE(libunwind-exceptions,
973 [  --enable-libunwind-exceptions  force use libunwind for exceptions],
974 use_libunwind_exceptions=$enableval,
975 use_libunwind_exceptions=$use_libunwind_default)
976 if test x"$use_libunwind_exceptions" = xyes; then
977    AC_DEFINE(USE_LIBUNWIND_EXCEPTIONS, 1,
978         [Define if gcc should use -lunwind.])
979 fi
980
981 # --------------------------------------------------------
982 # Build, host, and target specific configuration fragments
983 # --------------------------------------------------------
984
985 target_gtfiles=
986 build_xm_file=
987 build_xm_defines=
988 build_install_headers_dir=install-headers-tar
989 build_exeext=
990 host_xm_file=
991 host_xm_defines=
992 host_xmake_file=
993 host_truncate_target=
994 host_exeext=
995
996 # Decode the host machine, then the target machine.
997 # For the host machine, we save the xm_file variable as host_xm_file;
998 # then we decode the target machine and forget everything else
999 # that came from the host machine.
1000 for machine in $build $host $target; do
1001         . ${srcdir}/config.gcc
1002 done
1003
1004 extra_objs="${host_extra_objs} ${extra_objs}"
1005
1006 # Default the target-machine variables that were not explicitly set.
1007 if test x"$tm_file" = x
1008 then tm_file=$cpu_type/$cpu_type.h; fi
1009
1010 if test x"$extra_headers" = x
1011 then extra_headers=; fi
1012
1013 if test x$md_file = x
1014 then md_file=$cpu_type/$cpu_type.md; fi
1015
1016 if test x$out_file = x
1017 then out_file=$cpu_type/$cpu_type.c; fi
1018
1019 if test x"$tmake_file" = x
1020 then tmake_file=$cpu_type/t-$cpu_type
1021 fi
1022
1023 if test x"$dwarf2" = xyes
1024 then tm_file="$tm_file tm-dwarf2.h"
1025 fi
1026
1027 # Say what files are being used for the output code and MD file.
1028 echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
1029 echo "Using \`$srcdir/config/$md_file' as machine description file."
1030
1031 # If any of the xm_file variables contain nonexistent files, warn
1032 # about them and drop them.
1033
1034 bx=
1035 for x in $build_xm_file; do
1036   if    test -f $srcdir/config/$x
1037   then      bx="$bx $x"
1038   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1039   fi
1040 done
1041 build_xm_file="$bx"
1042
1043 hx=
1044 for x in $host_xm_file; do
1045   if    test -f $srcdir/config/$x
1046   then      hx="$hx $x"
1047   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1048   fi
1049 done
1050 host_xm_file="$hx"
1051
1052 tx=
1053 for x in $xm_file; do
1054   if    test -f $srcdir/config/$x
1055   then      tx="$tx $x"
1056   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1057   fi
1058 done
1059 xm_file="$tx"
1060
1061 count=a
1062 for f in $tm_file; do
1063         count=${count}x
1064 done
1065 if test $count = ax; then
1066         echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
1067 else
1068         echo "Using the following target machine macro files:"
1069         for f in $tm_file; do
1070                 echo "  $srcdir/config/$f"
1071         done
1072 fi
1073
1074 if test x$need_64bit_hwint = xyes; then
1075         AC_DEFINE(NEED_64BIT_HOST_WIDE_INT, 1,
1076 [Define to 1 if HOST_WIDE_INT must be 64 bits wide (see hwint.h).])
1077 fi
1078
1079 count=a
1080 for f in $host_xm_file; do
1081         count=${count}x
1082 done
1083 if test $count = a; then
1084         :
1085 elif test $count = ax; then
1086         echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
1087 else
1088         echo "Using the following host machine macro files:"
1089         for f in $host_xm_file; do
1090                 echo "  $srcdir/config/$f"
1091         done
1092 fi
1093 echo "Using ${out_host_hook_obj} for host machine hooks."
1094
1095 if test "$host_xm_file" != "$build_xm_file"; then
1096         count=a
1097         for f in $build_xm_file; do
1098                 count=${count}x
1099         done
1100         if test $count = a; then
1101                 :
1102         elif test $count = ax; then
1103                 echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
1104         else
1105                 echo "Using the following build machine macro files:"
1106                 for f in $build_xm_file; do
1107                         echo "  $srcdir/config/$f"
1108                 done
1109         fi
1110 fi
1111
1112 if test x$thread_file = x; then
1113         if test x$target_thread_file != x; then
1114                 thread_file=$target_thread_file
1115         else
1116                 thread_file='single'
1117         fi
1118 fi
1119
1120 if test x$enable___cxa_atexit = xyes || \
1121    test x$enable___cxa_atexit = x -a x$default_use_cxa_atexit = xyes; then
1122   AC_DEFINE(DEFAULT_USE_CXA_ATEXIT, 1,
1123   [Define if you want to use __cxa_atexit, rather than atexit, to
1124    register C++ destructors for local statics and global objects.
1125    This is essential for fully standards-compliant handling of
1126    destructors, but requires __cxa_atexit in libc.])
1127 fi
1128
1129 # Look for a file containing extra machine modes.
1130 if test -n "$extra_modes" && test -f $srcdir/config/$extra_modes; then
1131   extra_modes_file='$(srcdir)'/config/${extra_modes}
1132   AC_SUBST(extra_modes_file)
1133   AC_DEFINE_UNQUOTED(EXTRA_MODES_FILE, "$extra_modes",
1134   [Define to the name of a file containing a list of extra machine modes
1135    for this architecture.])
1136   AC_DEFINE(EXTRA_CC_MODES, 1,
1137   [Define if the target architecture needs extra machine modes to represent
1138    the results of comparisons.])
1139 fi
1140
1141 # auto-host.h is the file containing items generated by autoconf and is
1142 # the first file included by config.h.
1143 # If host=build, it is correct to have bconfig include auto-host.h
1144 # as well.  If host!=build, we are in error and need to do more 
1145 # work to find out the build config parameters.
1146 if test x$host = x$build
1147 then
1148         build_auto=auto-host.h
1149         FORBUILD=..
1150 else
1151         # We create a subdir, then run autoconf in the subdir.
1152         # To prevent recursion we set host and build for the new
1153         # invocation of configure to the build for this invocation
1154         # of configure. 
1155         tempdir=build.$$
1156         rm -rf $tempdir
1157         mkdir $tempdir
1158         cd $tempdir
1159         case ${srcdir} in
1160         /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
1161         *) realsrcdir=../${srcdir};;
1162         esac
1163         saved_CFLAGS="${CFLAGS}"
1164         CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
1165         ${realsrcdir}/configure \
1166                 --target=$target_alias --host=$build_alias --build=$build_alias
1167         CFLAGS="${saved_CFLAGS}"
1168
1169         # We just finished tests for the build machine, so rename
1170         # the file auto-build.h in the gcc directory.
1171         mv auto-host.h ../auto-build.h
1172         cd ..
1173         rm -rf $tempdir
1174         build_auto=auto-build.h
1175         FORBUILD=../build-$build_alias
1176 fi
1177 AC_SUBST(FORBUILD)
1178
1179 tm_file="${tm_file} defaults.h"
1180 tm_p_file="${tm_p_file} tm-preds.h"
1181 host_xm_file="auto-host.h ansidecl.h ${host_xm_file}"
1182 build_xm_file="${build_auto} ansidecl.h ${build_xm_file}"
1183 # We don't want ansidecl.h in target files, write code there in ISO/GNU C.
1184 # put this back in temporarily.
1185 xm_file="ansidecl.h ${xm_file}"
1186
1187 # --------
1188 # UNSORTED
1189 # --------
1190
1191 # Truncate the target if necessary
1192 if test x$host_truncate_target != x; then
1193         target=`echo $target | sed -e 's/\(..............\).*/\1/'`
1194 fi
1195
1196 # Get the version trigger filename from the toplevel
1197 if test "${with_gcc_version_trigger+set}" = set; then
1198         gcc_version_trigger=$with_gcc_version_trigger
1199 else
1200         gcc_version_trigger=${srcdir}/version.c
1201 fi
1202 changequote(,)dnl
1203 gcc_version_full=`grep version_string ${gcc_version_trigger} | sed -e 's/.*"\([^"]*\)".*/\1/'`
1204 gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
1205
1206 # Compile in configure arguments.
1207 if test -f configargs.h ; then
1208         # Being re-configured.
1209         gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'`
1210         gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
1211 else
1212         gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
1213 fi
1214 cat > configargs.h <<EOF
1215 /* Generated automatically. */
1216 static const char configuration_arguments[] = "$gcc_config_arguments";
1217 static const char thread_model[] = "$thread_file";
1218 EOF
1219 changequote([,])dnl
1220
1221 # Internationalization
1222 PACKAGE=gcc
1223 VERSION="$gcc_version"
1224 AC_SUBST(PACKAGE)
1225 AC_SUBST(VERSION)
1226
1227 # Enable NLS support by default
1228 AC_ARG_ENABLE(nls,
1229   [  --enable-nls            use Native Language Support (default)],
1230   , enable_nls=yes)
1231
1232 # if cross compiling, disable NLS support.
1233 # It's not worth the trouble, at least for now.
1234
1235 if test "${build}" != "${host}" && test "x$enable_nls" = "xyes"; then
1236   AC_MSG_WARN(Disabling NLS support for canadian cross compiler.)
1237   enable_nls=no
1238 fi
1239
1240 AM_GNU_GETTEXT
1241
1242 # Windows32 Registry support for specifying GCC installation paths.
1243 AC_ARG_ENABLE(win32-registry,
1244 [  --disable-win32-registry
1245                           disable lookup of installation paths in the
1246                           Registry on Windows hosts
1247   --enable-win32-registry enable registry lookup (default)
1248   --enable-win32-registry=KEY
1249                           use KEY instead of GCC version as the last portion
1250                           of the registry key],,)
1251 case $host_os in
1252         win32 | pe | cygwin* | mingw32* | uwin*)
1253 AC_MSG_CHECKING(whether windows registry support is requested)
1254 if test "x$enable_win32_registry" != xno; then
1255   AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
1256 [Define to 1 if installation paths should be looked up in Windows32
1257    Registry. Ignored on non windows32 hosts.])
1258   AC_MSG_RESULT(yes)
1259   AC_SEARCH_LIBS(RegOpenKeyExA, advapi32)
1260 else
1261   AC_MSG_RESULT(no)
1262 fi
1263
1264 # Check if user specified a different registry key.
1265 case "x${enable_win32_registry}" in
1266 x | xyes)
1267   # default.
1268   gcc_cv_win32_registry_key="$VERSION"
1269   ;;
1270 xno)
1271   # no registry lookup.
1272   gcc_cv_win32_registry_key=''
1273   ;;
1274 *)
1275   # user-specified key.
1276   gcc_cv_win32_registry_key="$enable_win32_registry"
1277   ;;
1278 esac
1279
1280 if test "x$enable_win32_registry" != xno; then
1281   AC_MSG_CHECKING(registry key on windows hosts)
1282   AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$gcc_cv_win32_registry_key",
1283         [Define to be the last portion of registry key on windows hosts.])
1284   AC_MSG_RESULT($gcc_cv_win32_registry_key)
1285 fi
1286 ;;
1287 esac
1288
1289 # Get an absolute path to the GCC top-level source directory
1290 holddir=`${PWDCMD-pwd}`
1291 cd $srcdir
1292 topdir=`${PWDCMD-pwd}`
1293 cd $holddir
1294
1295 # Conditionalize the makefile for this host machine.
1296 # Make-host contains the concatenation of all host makefile fragments
1297 # [there can be more than one].  This file is built by configure.frag.
1298 host_overrides=Make-host
1299 dep_host_xmake_file=
1300 for f in .. ${host_xmake_file}
1301 do
1302         if test -f ${srcdir}/config/$f
1303         then
1304                 dep_host_xmake_file="${dep_host_xmake_file} ${srcdir}/config/$f"
1305         fi
1306 done
1307
1308 # Conditionalize the makefile for this target machine.
1309 # Make-target contains the concatenation of all host makefile fragments
1310 # [there can be more than one].  This file is built by configure.frag.
1311 target_overrides=Make-target
1312 dep_tmake_file=
1313 for f in .. ${tmake_file}
1314 do
1315         if test -f ${srcdir}/config/$f
1316         then
1317                 dep_tmake_file="${dep_tmake_file} ${srcdir}/config/$f"
1318         fi
1319 done
1320
1321 symbolic_link='ln -s'
1322
1323 # If the host doesn't support symlinks, modify CC in
1324 # FLAGS_TO_PASS so CC="stage1/xgcc -Bstage1/" works.
1325 # Otherwise, we can use "CC=$(CC)".
1326 rm -f symtest.tem
1327 if $symbolic_link $srcdir/gcc.c symtest.tem 2>/dev/null
1328 then
1329         cc_set_by_configure="\$(CC)"
1330         quoted_cc_set_by_configure="\$(CC)"
1331         stage_prefix_set_by_configure="\$(STAGE_PREFIX)"
1332         quoted_stage_prefix_set_by_configure="\$(STAGE_PREFIX)"
1333 else
1334         rm -f symtest.tem
1335         if cp -p $srcdir/gcc.c symtest.tem 2>/dev/null
1336         then
1337                 symbolic_link="cp -p"
1338         else
1339                 symbolic_link="cp"
1340         fi
1341         cc_set_by_configure="\`case '\$(CC)' in stage*) echo '\$(CC)' | sed -e 's|stage|../stage|g';; *) echo '\$(CC)';; esac\`"
1342         quoted_cc_set_by_configure="\\\`case '\\\$(CC)' in stage*) echo '\\\$(CC)' | sed -e 's|stage|../stage|g';; *) echo '\\\$(CC)';; esac\\\`"
1343         stage_prefix_set_by_configure="\`case '\$(STAGE_PREFIX)' in stage*) echo '\$(STAGE_PREFIX)' | sed -e 's|stage|../stage|g';; *) echo '\$(STAGE_PREFIX)';; esac\`"
1344         quoted_stage_prefix_set_by_configure="\\\`case '\\\$(STAGE_PREFIX)' in stage*) echo '\\\$(STAGE_PREFIX)' | sed -e 's|stage|../stage|g';; *) echo '\\\$(STAGE_PREFIX)';; esac\\\`"
1345 fi
1346 rm -f symtest.tem
1347
1348 out_object_file=`basename $out_file .c`.o
1349
1350 tm_file_list=
1351 for f in $tm_file; do
1352   case $f in
1353     ansidecl.h )
1354        tm_file_list="${tm_file_list} \$(srcdir)/../include/ansidecl.h" ;;
1355     defaults.h )
1356        tm_file_list="${tm_file_list} \$(srcdir)/$f" ;;
1357     *) tm_file_list="${tm_file_list} \$(srcdir)/config/$f" ;;
1358   esac
1359 done
1360
1361 tm_p_file_list=
1362 for f in $tm_p_file; do
1363   case $f in
1364     tm-preds.h )
1365        tm_p_file_list="${tm_p_file_list} $f" ;;
1366     *) tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f" ;;
1367   esac
1368 done
1369
1370 host_xm_file_list=
1371 for f in $host_xm_file; do
1372   case $f in
1373     ansidecl.h )
1374        host_xm_file_list="${host_xm_file_list} \$(srcdir)/../include/ansidecl.h" ;;
1375     auto-host.h )
1376        host_xm_file_list="${host_xm_file_list} $f" ;;
1377     defaults.h )
1378        host_xm_file_list="${host_xm_file_list} \$(srcdir)/$f" ;;
1379     *) host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f" ;;
1380   esac
1381 done
1382
1383 build_xm_file_list=
1384 for f in $build_xm_file; do
1385   case $f in
1386     ansidecl.h )
1387        build_xm_file_list="${build_xm_file_list} \$(srcdir)/../include/ansidecl.h" ;;
1388     auto-build.h | auto-host.h )
1389        build_xm_file_list="${build_xm_file_list} $f" ;;
1390     defaults.h )
1391        host_xm_file_list="${host_xm_file_list} \$(srcdir)/$f" ;;
1392     *) build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f" ;;
1393   esac
1394 done
1395
1396 # Define macro CROSS_COMPILE in compilation if this is a cross-compiler.
1397 # Also use all.cross instead of all.internal and adjust SYSTEM_HEADER_DIR.
1398 CROSS=                                          AC_SUBST(CROSS)
1399 ALL=all.internal                                AC_SUBST(ALL)
1400 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' AC_SUBST(SYSTEM_HEADER_DIR)
1401 if test x$host != x$target
1402 then
1403         CROSS="-DCROSS_COMPILE"
1404         ALL=all.cross
1405         SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)'
1406         case "$host","$target" in
1407             i?86-*-*,x86_64-*-* \
1408             | powerpc*-*-*,powerpc64*-*-*)
1409                 CROSS="$CROSS -DNATIVE_CROSS" ;;
1410         esac
1411 elif test "x$TARGET_SYSTEM_ROOT" != x; then
1412         # This is just $(TARGET_SYSTEM_ROOT)$(NATIVE_SYSTEM_HEADER_DIR)
1413         SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)'
1414 fi
1415
1416 # If this is a cross-compiler that does not
1417 # have its own set of headers then define
1418 # inhibit_libc
1419
1420 # If this is using newlib, without having the headers available now,
1421 # then define inhibit_libc in LIBGCC2_CFLAGS.
1422 # This prevents libgcc2 from containing any code which requires libc
1423 # support.
1424 inhibit_libc=
1425 if { { test x$host != x$target && test "x$with_sysroot" = x ; } ||
1426        test x$with_newlib = xyes ; } &&
1427      test "x$with_headers" = x ; then
1428        inhibit_libc=-Dinhibit_libc
1429 fi
1430 AC_SUBST(inhibit_libc)
1431
1432 # When building gcc with a cross-compiler, we need to adjust things so
1433 # that the generator programs are still built with the native compiler.
1434 # Also, we cannot run fixincludes or fix-header.
1435
1436 # These are the normal (build=host) settings:
1437 BUILD_PREFIX=                   AC_SUBST(BUILD_PREFIX)
1438 BUILD_PREFIX_1=ignore-          AC_SUBST(BUILD_PREFIX_1)
1439 BUILD_CC='$(CC)'                AC_SUBST(BUILD_CC)
1440 BUILD_CFLAGS='$(ALL_CFLAGS)'    AC_SUBST(BUILD_CFLAGS)
1441
1442 STMP_FIXINC=stmp-fixinc         AC_SUBST(STMP_FIXINC)
1443 STMP_FIXPROTO=stmp-fixproto     AC_SUBST(STMP_FIXPROTO)
1444
1445 # And these apply if build != host.
1446 if test x$build != x$host
1447 then
1448     BUILD_PREFIX=build-
1449     BUILD_PREFIX_1=build-
1450     BUILD_CC='$(CC_FOR_BUILD)'
1451     BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD) $(XCFLAGS)'
1452
1453     if test "x$TARGET_SYSTEM_ROOT" = x; then
1454         STMP_FIXINC=
1455         STMP_FIXPROTO=
1456     fi
1457 fi
1458
1459 # Expand extra_headers to include complete path.
1460 # This substitutes for lots of t-* files.
1461 extra_headers_list=
1462 if test "x$extra_headers" = x
1463 then true
1464 else
1465         # Prepend ${srcdir}/config/${cpu_type}/ to every entry in extra_headers.
1466         for file in $extra_headers;
1467         do
1468                 extra_headers_list="${extra_headers_list} \$(srcdir)/config/${cpu_type}/${file}"
1469         done
1470 fi
1471
1472 # Add a definition of USE_COLLECT2 if system wants one.
1473 case $use_collect2 in
1474   no) use_collect2= ;;
1475   "") ;;
1476   *) 
1477     host_xm_defines="${host_xm_defines} USE_COLLECT2"
1478     xm_defines="${xm_defines} USE_COLLECT2"
1479     ;;
1480 esac
1481
1482 # Identify the assembler which will work hand-in-glove with the newly
1483 # built GCC, so that we can examine its features.  This is the assembler
1484 # which will be driven by the driver program.
1485 #
1486 # If build != host, and we aren't building gas in-tree, we identify a
1487 # build->target assembler and hope that it will have the same features
1488 # as the host->target assembler we'll be using.
1489 AC_MSG_CHECKING(what assembler to use)
1490 in_tree_gas=no
1491 gcc_cv_as=
1492 gcc_cv_gas_major_version=
1493 gcc_cv_gas_minor_version=
1494 gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
1495 if test -x "$DEFAULT_ASSEMBLER"; then
1496         gcc_cv_as="$DEFAULT_ASSEMBLER"
1497 elif test -x "$AS"; then
1498         gcc_cv_as="$AS"
1499 elif test -x as$host_exeext; then
1500         # Build using assembler in the current directory.
1501         gcc_cv_as=./as$host_exeext
1502 elif test -f $gcc_cv_as_gas_srcdir/configure.in \
1503      && test -f ../gas/Makefile; then
1504   # Single tree build which includes gas.
1505   in_tree_gas=yes
1506   _gcc_COMPUTE_GAS_VERSION
1507   rm -f as$host_exeext
1508   $symbolic_link ../gas/as-new$host_exeext as$host_exeext 2>/dev/null
1509 fi
1510
1511 if test "x$gcc_cv_as" = x; then
1512         # Search the same directories that the installed compiler will
1513         # search.  Else we may find the wrong assembler and lose.  If we
1514         # do not find a suitable assembler binary, then try the user's
1515         # path.
1516         #
1517         # Also note we have to check MD_EXEC_PREFIX before checking the
1518         # user's path.  Unfortunately, there is no good way to get at the
1519         # value of MD_EXEC_PREFIX here.  So we do a brute force search
1520         # through all the known MD_EXEC_PREFIX values.  Ugh.  This needs
1521         # to be fixed as part of the make/configure rewrite too.
1522
1523         if test "x$exec_prefix" = xNONE; then
1524                 if test "x$prefix" = xNONE; then
1525                         test_prefix=/usr/local
1526                 else
1527                         test_prefix=$prefix
1528                 fi
1529         else
1530                 test_prefix=$exec_prefix
1531         fi
1532
1533         # If the loop below does not find an assembler, then use whatever
1534         # one we can find in the users's path.
1535         # user's path.
1536         if test "x$program_prefix" != xNONE; then
1537                 gcc_cv_as=${program_prefix}as$host_exeext
1538         else
1539                 gcc_cv_as=`echo as | sed ${program_transform_name}`$host_exeext
1540         fi
1541
1542         test_dirs="$test_prefix/lib/gcc-lib/$target_alias/$gcc_version \
1543                    $test_prefix/lib/gcc-lib/$target_alias \
1544                    /usr/lib/gcc/$target_alias/$gcc_version \
1545                    /usr/lib/gcc/$target_alias \
1546                    $test_prefix/$target_alias/bin/$target_alias/$gcc_version \
1547                    $test_prefix/$target_alias/bin"
1548
1549         if test x$host = x$target; then
1550             test_dirs="$test_dirs \
1551                    /usr/libexec \
1552                    /usr/ccs/gcc \
1553                    /usr/ccs/bin \
1554                    /udk/usr/ccs/bin \
1555                    /bsd43/usr/lib/cmplrs/cc \
1556                    /usr/cross64/usr/bin \
1557                    /usr/lib/cmplrs/cc \
1558                    /sysv/usr/lib/cmplrs/cc \
1559                    /svr4/usr/lib/cmplrs/cc \
1560                    /usr/bin"
1561         fi
1562
1563         for dir in $test_dirs; do
1564                 if test -x $dir/as$host_exeext; then
1565                         gcc_cv_as=$dir/as$host_exeext
1566                         break;
1567                 fi
1568         done
1569 fi
1570 case $in_tree_gas in
1571   yes)
1572     AC_MSG_RESULT("newly built gas")
1573     ;;
1574   no)
1575     AC_MSG_RESULT($gcc_cv_as)
1576     ;;
1577 esac
1578
1579 # Identify the linker which will work hand-in-glove with the newly
1580 # built GCC, so that we can examine its features.  This is the linker
1581 # which will be driven by the driver program.
1582 #
1583 # If build != host, and we aren't building gas in-tree, we identify a
1584 # build->target linker and hope that it will have the same features
1585 # as the host->target linker we'll be using.
1586 AC_MSG_CHECKING(what linker to use)
1587 in_tree_ld=no
1588 gcc_cv_ld=
1589 gcc_cv_gld_major_version=
1590 gcc_cv_gld_minor_version=
1591 gcc_cv_ld_gld_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/ld
1592 gcc_cv_ld_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
1593 if test -x "$DEFAULT_LINKER"; then
1594         gcc_cv_ld="$DEFAULT_LINKER"
1595 elif test -x "$LD"; then
1596         gcc_cv_ld="$LD"
1597 elif test -x collect-ld$host_exeext; then
1598         # Build using linker in the current directory.
1599         gcc_cv_ld=./collect-ld$host_exeext
1600 elif test -f $gcc_cv_ld_gld_srcdir/configure.in \
1601      && test -f ../ld/Makefile; then
1602         # Single tree build which includes ld.
1603         in_tree_ld=yes
1604         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
1605         do
1606 changequote(,)dnl
1607                 gcc_cv_gld_version=`grep '^VERSION=[0-9]*\.[0-9]*' $f`
1608 changequote([,])dnl
1609                 if test x$gcc_cv_gld_version != x; then
1610                         break
1611                 fi
1612         done
1613 changequote(,)dnl
1614         gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
1615         gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
1616 changequote([,])dnl
1617         rm -f collect-ld$host_exeext
1618         $symbolic_link ../ld/ld-new$host_exeext collect-ld$host_exeext \
1619                 2>/dev/null
1620 fi
1621
1622 if test "x$gcc_cv_ld" = x; then
1623         # Search the same directories that the installed compiler will
1624         # search.  Else we may find the wrong linker and lose.  If we
1625         # do not find a suitable linker binary, then try the user's
1626         # path.
1627         #
1628         # Also note we have to check MD_EXEC_PREFIX before checking the
1629         # user's path.  Unfortunately, there is no good way to get at the
1630         # value of MD_EXEC_PREFIX here.  So we do a brute force search
1631         # through all the known MD_EXEC_PREFIX values.  Ugh.  This needs
1632         # to be fixed as part of the make/configure rewrite too.
1633
1634         if test "x$exec_prefix" = xNONE; then
1635                 if test "x$prefix" = xNONE; then
1636                         test_prefix=/usr/local
1637                 else
1638                         test_prefix=$prefix
1639                 fi
1640         else
1641                 test_prefix=$exec_prefix
1642         fi
1643
1644         # If the loop below does not find an linker, then use whatever
1645         # one we can find in the users's path.
1646         # user's path.
1647         if test "x$program_prefix" != xNONE; then
1648                 gcc_cv_ld=${program_prefix}ld$host_exeext
1649         else
1650                 gcc_cv_ld=`echo ld | sed ${program_transform_name}`$host_exeext
1651         fi
1652
1653         test_dirs="$test_prefix/lib/gcc-lib/$target_alias/$gcc_version \
1654                    $test_prefix/lib/gcc-lib/$target_alias \
1655                    /usr/lib/gcc/$target_alias/$gcc_version \
1656                    /usr/lib/gcc/$target_alias \
1657                    $test_prefix/$target_alias/bin/$target_alias/$gcc_version \
1658                    $test_prefix/$target_alias/bin"
1659
1660         if test x$host = x$target; then
1661             test_dirs="$test_dirs \
1662                    /usr/libexec \
1663                    /usr/ccs/gcc \
1664                    /usr/ccs/bin \
1665                    /udk/usr/ccs/bin \
1666                    /bsd43/usr/lib/cmplrs/cc \
1667                    /usr/cross64/usr/bin \
1668                    /usr/lib/cmplrs/cc \
1669                    /sysv/usr/lib/cmplrs/cc \
1670                    /svr4/usr/lib/cmplrs/cc \
1671                    /usr/bin"
1672         fi
1673
1674         for dir in $test_dirs; do
1675                 if test -x $dir/ld$host_exeext; then
1676                         gcc_cv_ld=$dir/ld$host_exeext
1677                         break;
1678                 fi
1679         done
1680 fi
1681 case $in_tree_ld in
1682   yes)
1683     AC_MSG_RESULT("newly built ld")
1684     ;;
1685   no)
1686     AC_MSG_RESULT($gcc_cv_ld)
1687     ;;
1688 esac
1689
1690 # Figure out what nm we will be using.
1691 gcc_cv_binutils_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/binutils
1692 AC_MSG_CHECKING(what nm to use)
1693 in_tree_nm=no
1694 if test -x nm$host_exeext; then
1695         gcc_cv_nm=./nm$host_exeext
1696 elif test -f $gcc_cv_binutils_srcdir/configure.in \
1697      && test -f ../binutils/Makefile; then
1698         # Single tree build which includes binutils.
1699         in_tree_nm=yes
1700         gcc_cv_nm=./nm$host_exeext
1701         rm -f nm$host_exeext
1702         $symbolic_link ../binutils/nm-new$host_exeext nm$host_exeext 2>/dev/null
1703 elif test "x$program_prefix" != xNONE; then
1704         gcc_cv_nm=${program_prefix}nm$host_exeext
1705 else
1706         gcc_cv_nm=`echo nm | sed ${program_transform_name}`$host_exeext
1707 fi
1708 case $in_tree_nm in
1709   yes) AC_MSG_RESULT("newly built nm") ;;
1710   no)  AC_MSG_RESULT($gcc_cv_nm) ;;
1711 esac
1712
1713 # Figure out what objdump we will be using.
1714 AC_MSG_CHECKING(what objdump to use)
1715 in_tree_objdump=no
1716 if test -x objdump$host_exeext; then
1717         gcc_cv_objdump=./objdump$host_exeext
1718 elif test -f $gcc_cv_binutils_srcdir/configure.in \
1719      && test -f ../binutils/Makefile; then
1720         # Single tree build which includes binutils.
1721         in_tree_objdump=yes
1722         gcc_cv_objdump=./objdump$host_exeext
1723         rm -f objdump$host_exeext
1724         $symbolic_link ../binutils/objdump$host_exeext \
1725                 objdump$host_exeext 2>/dev/null
1726 elif test "x$program_prefix" != xNONE; then
1727         gcc_cv_objdump=${program_prefix}objdump$host_exeext
1728 else
1729         gcc_cv_objdump=`echo objdump | \
1730                 sed ${program_transform_name}`$host_exeext
1731 fi
1732 case $in_tree_objdump in
1733   yes) AC_MSG_RESULT("newly built objdump") ;;
1734   no)  AC_MSG_RESULT($gcc_cv_objdump) ;;
1735 esac
1736
1737 # Figure out what assembler alignment features are present.
1738 AC_MSG_CHECKING(assembler alignment features)
1739 gcc_cv_as_alignment_features=none
1740 if test $in_tree_gas = yes; then
1741   # Gas version 2.6 and later support for .balign and .p2align.
1742   gcc_GAS_VERSION_GTE_IFELSE(2,6,0,[
1743     gcc_cv_as_alignment_features=".balign and .p2align"
1744     AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN)
1745   ])
1746   # Gas version 2.8 and later support specifying the maximum
1747   # bytes to skip when using .p2align.
1748   gcc_GAS_VERSION_GTE_IFELSE(2,8,0,[
1749     gcc_cv_as_alignment_features=".p2align including maximum skip"
1750     AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN)
1751   ])
1752 elif test x$gcc_cv_as != x; then
1753         # Check if we have .balign and .p2align
1754         echo ".balign  4" > conftest.s
1755         echo ".p2align  2" >> conftest.s
1756         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1757                 gcc_cv_as_alignment_features=".balign and .p2align"
1758                 AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN)
1759         fi
1760         rm -f conftest.s conftest.o
1761         # Check if specifying the maximum bytes to skip when
1762         # using .p2align is supported.
1763         echo ".p2align 4,,7" > conftest.s
1764         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1765                 gcc_cv_as_alignment_features=".p2align including maximum skip"
1766                 AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN)
1767         fi
1768         rm -f conftest.s conftest.o
1769 fi
1770 AC_MSG_RESULT($gcc_cv_as_alignment_features)
1771
1772 AC_MSG_CHECKING(assembler subsection support)
1773 gcc_cv_as_subsections=no
1774 if test $in_tree_gas = yes ; then
1775   gcc_GAS_VERSION_GTE_IFELSE(2,9,0,[
1776     if grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
1777       gcc_cv_as_subsections="working .subsection -1"
1778     fi
1779   ])
1780 elif test x$gcc_cv_as != x; then
1781         # Check if we have .subsection
1782         echo ".subsection 1" > conftest.s
1783         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1784                 gcc_cv_as_subsections=".subsection"
1785                 if test x$gcc_cv_nm != x; then
1786                         cat > conftest.s <<EOF
1787 conftest_label1: .word 0
1788 .subsection -1
1789 conftest_label2: .word 0
1790 .previous
1791 EOF
1792                         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1793                                 $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
1794                                 $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
1795                                 if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1; then
1796                                         :
1797                                 else
1798                                         gcc_cv_as_subsections="working .subsection -1"
1799                                 fi
1800                         fi
1801                 fi
1802         fi
1803         rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1804 fi
1805 if test x"$gcc_cv_as_subsections" = x"working .subsection -1"; then
1806         AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
1807 [Define if your assembler supports .subsection and .subsection -1 starts
1808    emitting at the beginning of your section.])
1809 fi
1810 AC_MSG_RESULT($gcc_cv_as_subsections)
1811
1812 AC_MSG_CHECKING(assembler weak support)
1813 gcc_cv_as_weak=no
1814 if test $in_tree_gas = yes ; then
1815   gcc_GAS_VERSION_GTE_IFELSE(2,2,0,[
1816     gcc_cv_as_weak="yes"
1817   ])
1818 elif test x$gcc_cv_as != x; then
1819         # Check if we have .weak
1820         echo "  .weak foobar" > conftest.s
1821         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1822                 gcc_cv_as_weak="yes"
1823         fi
1824         rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1825 fi
1826 if test x"$gcc_cv_as_weak" = xyes; then
1827         AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])
1828 fi
1829 AC_MSG_RESULT($gcc_cv_as_weak)
1830
1831 AC_MSG_CHECKING(assembler hidden support)
1832 gcc_cv_as_hidden=no
1833 if test $in_tree_gas = yes ; then
1834   gcc_GAS_VERSION_GTE_IFELSE(2,12,1,[
1835     if grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
1836       gcc_cv_as_hidden="yes"
1837     fi
1838   ])
1839 elif test x$gcc_cv_as != x; then
1840         # Check if we have .hidden
1841         echo "  .hidden foobar" > conftest.s
1842         echo "foobar:" >> conftest.s
1843         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1844                 gcc_cv_as_hidden="yes"
1845         fi
1846         rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1847
1848         # GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
1849         # This is irritatingly difficult to feature test for.  Look for 
1850         # the date string after the version number.
1851         ld_ver=`$gcc_cv_ld --version 2>/dev/null | head -1`
1852         if echo "$ld_ver" | grep GNU > /dev/null; then
1853 changequote(,)dnl
1854                ld_vers=`echo $ld_ver | sed -n 's,^.*[  ]\([0-9][0-9]*\.[0-9][0-9]*\(\|\.[0-9][0-9]*\(\|\.[0-9][0-9]*\)\)\)\([  ].*\|\)$,\1,p'`
1855                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'`
1856                 if test 0"$ld_date" -lt 20020404; then
1857                         if test -n "$ld_date"; then
1858                                 # If there was date string, but was earlier than 2002-04-04, fail
1859                                 gcc_cv_as_hidden="no"
1860                         elif test -z "$ld_vers"; then
1861                                 # If there was no date string nor ld version number, something is wrong
1862                                 gcc_cv_as_hidden="no"
1863                         else
1864                                 ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
1865                                 ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
1866                                 ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
1867                                 test -z "$ld_vers_patch" && ld_vers_patch=0
1868                                 if test "$ld_vers_major" -lt 2; then
1869                                         gcc_cv_as_hidden="no"
1870                                 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
1871                                         gcc_cv_as_hidden="no"
1872                                 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 \
1873                                           -a "$ld_vers_patch" -eq 0; then
1874                                         gcc_cv_as_hidden="no"
1875                                 fi
1876                         fi
1877                 fi
1878 changequote([,])dnl
1879         fi
1880 fi
1881 case "$target" in
1882   mips-sgi-irix6*)
1883     if test x"$gnu_ld_flag" = x"no"; then
1884       # Even if using gas with .hidden support, the resulting object files
1885       # cannot be linked with the IRIX 6 O32 linker.  With the N32 and
1886       # N64 linkers, the problem is that the linker refuses to accept
1887       # -call_shared (passed by default to the linker) and -r (used to
1888       # link the object file generated without .hidden directives with
1889       # one that hides symbols), so we also lose.
1890       gcc_cv_as_hidden=no
1891     fi
1892     ;;
1893 esac
1894 if test x"$gcc_cv_as_hidden" = xyes; then
1895         AC_DEFINE(HAVE_GAS_HIDDEN, 1,
1896                 [Define if your assembler supports .hidden.])
1897 fi
1898 AC_MSG_RESULT($gcc_cv_as_hidden)
1899 libgcc_visibility=$gcc_cv_as_hidden
1900 AC_SUBST(libgcc_visibility)
1901
1902 AC_MSG_CHECKING(assembler leb128 support)
1903 gcc_cv_as_leb128=no
1904 if test $in_tree_gas = yes ; then
1905   gcc_GAS_VERSION_GTE_IFELSE(2,11,0,[
1906     if grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
1907       gcc_cv_as_leb128="yes"
1908     fi
1909   ])
1910 elif test x$gcc_cv_as != x; then
1911         # Check if we have .[us]leb128, and support symbol arithmetic with it.
1912         cat > conftest.s <<EOF
1913         .data
1914         .uleb128 L2 - L1
1915 L1:
1916         .uleb128 1280
1917         .sleb128 -1010
1918 L2:
1919 EOF
1920         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1921                 gcc_cv_as_leb128="yes"
1922
1923                 # GAS versions before 2.11 do not support uleb128,
1924                 # despite appearing to.
1925                 # ??? There exists an elf-specific test that will crash
1926                 # the assembler.  Perhaps it's better to figure out whether
1927                 # arbitrary sections are supported and try the test.
1928                 as_ver=`$gcc_cv_as --version 2>/dev/null | head -1`
1929                 if echo "$as_ver" | grep GNU > /dev/null; then
1930 changequote(,)dnl
1931                         as_ver=`echo $as_ver | sed -e 's/GNU assembler \([0-9.][0-9.]*\).*/\1/'`
1932                         as_major=`echo $as_ver | sed 's/\..*//'`
1933                         as_minor=`echo $as_ver | sed 's/[^.]*\.\([0-9]*\).*/\1/'`
1934 changequote([,])dnl
1935                         if test $as_major -eq 2 -a $as_minor -lt 11; then
1936                                 gcc_cv_as_leb128="no"
1937                         fi
1938                 fi
1939         fi
1940         rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1941 fi
1942 if test x"$gcc_cv_as_leb128" = xyes; then
1943         AC_DEFINE(HAVE_AS_LEB128, 1,
1944                 [Define if your assembler supports .uleb128.])
1945 fi
1946 AC_MSG_RESULT($gcc_cv_as_leb128)
1947
1948 AC_MSG_CHECKING(assembler eh_frame optimization)
1949 gcc_cv_as_eh_frame=no
1950 if test $in_tree_gas = yes ; then
1951   gcc_GAS_VERSION_GTE_IFELSE(2,12,0,[
1952     if grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
1953       gcc_cv_as_eh_frame="yes"
1954     fi
1955   ])
1956 elif test x$gcc_cv_as != x; then
1957         # Check if this is GAS.
1958         as_ver=`$gcc_cv_as --version < /dev/null 2> /dev/null | head -1`
1959         rm -f a.out 2> /dev/null
1960         if echo "$as_ver" | grep GNU > /dev/null; then
1961                 # Versions up to and including 2.11.0 may mis-optimize
1962                 # .eh_frame data.  Try something.
1963                 cat > conftest.s <<EOF
1964         .text
1965 .LFB1:
1966         .4byte  0
1967 .L1:
1968         .4byte  0
1969 .LFE1:
1970         .section        .eh_frame,"aw",@progbits
1971 __FRAME_BEGIN__:
1972         .4byte  .LECIE1-.LSCIE1
1973 .LSCIE1:
1974         .4byte  0x0
1975         .byte   0x1
1976         .ascii "z\0"
1977         .byte   0x1
1978         .byte   0x78
1979         .byte   0x1a
1980         .byte   0x0
1981         .byte   0x4
1982         .4byte  1
1983         .p2align 1
1984 .LECIE1:
1985 .LSFDE1:
1986         .4byte  .LEFDE1-.LASFDE1
1987 .LASFDE1:
1988         .4byte  .LASFDE1-__FRAME_BEGIN__
1989         .4byte  .LFB1
1990         .4byte  .LFE1-.LFB1
1991         .byte   0x4
1992         .4byte  .LFE1-.LFB1
1993         .byte   0x4
1994         .4byte  .L1-.LFB1
1995 .LEFDE1:
1996 EOF
1997                 cat > conftest.lit <<EOF
1998  0000 10000000 00000000 017a0001 781a0004  .........z..x...
1999  0010 01000000 12000000 18000000 00000000  ................
2000  0020 08000000 04080000 0044               .........D      
2001 EOF
2002                 cat > conftest.big <<EOF
2003  0000 00000010 00000000 017a0001 781a0004  .........z..x...
2004  0010 00000001 00000012 00000018 00000000  ................
2005  0020 00000008 04000000 0844               .........D      
2006 EOF
2007                 # If the assembler didn't choke, and we can objdump,
2008                 # and we got the correct data, then succeed.
2009                 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
2010                    && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
2011                       | tail -3 > conftest.got \
2012                    && { cmp conftest.lit conftest.got > /dev/null 2>&1 \
2013                         || cmp conftest.big conftest.got > /dev/null 2>&1; }
2014                 then
2015                         gcc_cv_as_eh_frame="yes"
2016                 else
2017                         gcc_cv_as_eh_frame="bad"
2018                         if $gcc_cv_as -o conftest.o --traditional-format /dev/null; then
2019                                 AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
2020         [Define if your assembler mis-optimizes .eh_frame data.])
2021                         fi
2022                 fi
2023         fi
2024         rm -f conftest.*
2025 fi
2026 AC_MSG_RESULT($gcc_cv_as_eh_frame)
2027
2028 AC_MSG_CHECKING(assembler section merging support)
2029 gcc_cv_as_shf_merge=no
2030 if test $in_tree_gas = yes ; then
2031   gcc_GAS_VERSION_GTE_IFELSE(2,12,0,[
2032     if grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
2033       gcc_cv_as_shf_merge=yes
2034     fi
2035   ])
2036 elif test x$gcc_cv_as != x; then
2037         # Check if we support SHF_MERGE sections
2038         echo '.section .rodata.str, "aMS", @progbits, 1' > conftest.s
2039         if $gcc_cv_as --fatal-warnings -o conftest.o conftest.s > /dev/null 2>&1; then
2040                 gcc_cv_as_shf_merge=yes
2041         fi
2042         rm -f conftest.s conftest.o
2043 fi
2044 if test x"$gcc_cv_as_shf_merge" = xyes; then
2045         AC_DEFINE(HAVE_GAS_SHF_MERGE, 1,
2046 [Define if your assembler supports marking sections with SHF_MERGE flag.])
2047 fi
2048 AC_MSG_RESULT($gcc_cv_as_shf_merge)
2049
2050 AC_MSG_CHECKING(assembler thread-local storage support)
2051 gcc_cv_as_tls=no
2052 conftest_s=
2053 tls_first_major=
2054 tls_first_minor=
2055 case "$target" in
2056 changequote(,)dnl
2057   alpha*-*-*)
2058     conftest_s='
2059         .section ".tdata","awT",@progbits
2060 foo:    .long   25
2061         .text
2062         ldq     $27,__tls_get_addr($29)         !literal!1
2063         lda     $16,foo($29)                    !tlsgd!1
2064         jsr     $26,($27),__tls_get_addr        !lituse_tlsgd!1
2065         ldq     $27,__tls_get_addr($29)         !literal!2
2066         lda     $16,foo($29)                    !tlsldm!2
2067         jsr     $26,($27),__tls_get_addr        !lituse_tlsldm!2
2068         ldq     $1,foo($29)                     !gotdtprel
2069         ldah    $2,foo($29)                     !dtprelhi
2070         lda     $3,foo($2)                      !dtprello
2071         lda     $4,foo($29)                     !dtprel
2072         ldq     $1,foo($29)                     !gottprel
2073         ldah    $2,foo($29)                     !tprelhi
2074         lda     $3,foo($2)                      !tprello
2075         lda     $4,foo($29)                     !tprel'
2076         tls_first_major=2
2077         tls_first_minor=13
2078         ;;
2079   i[34567]86-*-*)
2080 changequote([,])dnl
2081     conftest_s='
2082         .section ".tdata","awT",@progbits
2083 foo:    .long   25
2084         .text
2085         movl    %gs:0, %eax
2086         leal    foo@TLSGD(,%ebx,1), %eax
2087         leal    foo@TLSLDM(%ebx), %eax
2088         leal    foo@DTPOFF(%eax), %edx
2089         movl    foo@GOTTPOFF(%ebx), %eax
2090         subl    foo@GOTTPOFF(%ebx), %eax
2091         addl    foo@GOTNTPOFF(%ebx), %eax
2092         movl    foo@INDNTPOFF, %eax
2093         movl    $foo@TPOFF, %eax
2094         subl    $foo@TPOFF, %eax
2095         leal    foo@NTPOFF(%ecx), %eax'
2096         tls_first_major=2
2097         tls_first_minor=14
2098         ;;
2099   x86_64-*-*)
2100     conftest_s='
2101         .section ".tdata","awT",@progbits
2102 foo:    .long   25
2103         .text
2104         movq    %fs:0, %rax
2105         leaq    foo@TLSGD(%rip), %rdi
2106         leaq    foo@TLSLD(%rip), %rdi
2107         leaq    foo@DTPOFF(%rax), %rdx
2108         movq    foo@GOTTPOFF(%rip), %rax
2109         movq    $foo@TPOFF, %rax'
2110         tls_first_major=2
2111         tls_first_minor=14
2112         ;;
2113   ia64-*-*)
2114     conftest_s='
2115         .section ".tdata","awT",@progbits
2116 foo:    data8   25
2117         .text
2118         addl    r16 = @ltoff(@dtpmod(foo#)), gp
2119         addl    r17 = @ltoff(@dtprel(foo#)), gp
2120         addl    r18 = @ltoff(@tprel(foo#)), gp
2121         addl    r19 = @dtprel(foo#), gp
2122         adds    r21 = @dtprel(foo#), r13
2123         movl    r23 = @dtprel(foo#)
2124         addl    r20 = @tprel(foo#), gp
2125         adds    r22 = @tprel(foo#), r13
2126         movl    r24 = @tprel(foo#)'
2127         tls_first_major=2
2128         tls_first_minor=13
2129         ;;
2130   powerpc-*-*)
2131     conftest_s='
2132         .section ".tdata","awT",@progbits
2133         .align 2
2134 ld0:    .space 4
2135 ld1:    .space 4
2136 x1:     .space 4
2137 x2:     .space 4
2138 x3:     .space 4
2139         .text
2140         addi 3,31,ld0@got@tlsgd
2141         bl __tls_get_addr
2142         addi 3,31,x1@got@tlsld
2143         bl __tls_get_addr
2144         addi 9,3,x1@dtprel
2145         addis 9,3,x2@dtprel@ha
2146         addi 9,9,x2@dtprel@l
2147         lwz 9,x3@got@tprel(31)
2148         add 9,9,x@tls
2149         addi 9,2,x1@tprel
2150         addis 9,2,x2@tprel@ha
2151         addi 9,9,x2@tprel@l'
2152         tls_first_major=2
2153         tls_first_minor=14
2154         ;;
2155   powerpc64-*-*)
2156     conftest_s='
2157         .section ".tdata","awT",@progbits
2158         .align 3
2159 ld0:    .space 8
2160 ld1:    .space 8
2161 x1:     .space 8
2162 x2:     .space 8
2163 x3:     .space 8
2164         .text
2165         addi 3,2,ld0@got@tlsgd
2166         bl .__tls_get_addr
2167         nop
2168         addi 3,2,ld1@toc
2169         bl .__tls_get_addr
2170         nop
2171         addi 3,2,x1@got@tlsld
2172         bl .__tls_get_addr
2173         nop
2174         addi 9,3,x1@dtprel
2175         bl .__tls_get_addr
2176         nop
2177         addis 9,3,x2@dtprel@ha
2178         addi 9,9,x2@dtprel@l
2179         bl .__tls_get_addr
2180         nop
2181         ld 9,x3@got@dtprel(2)
2182         add 9,9,3
2183         bl .__tls_get_addr
2184         nop'
2185         tls_first_major=2
2186         tls_first_minor=14
2187         ;;
2188   s390-*-*)
2189     conftest_s='
2190         .section ".tdata","awT",@progbits
2191 foo:    .long   25
2192         .text
2193         .long   foo@TLSGD
2194         .long   foo@TLSLDM
2195         .long   foo@DTPOFF
2196         .long   foo@NTPOFF
2197         .long   foo@GOTNTPOFF
2198         .long   foo@INDNTPOFF
2199         l       %r1,foo@GOTNTPOFF(%r12)
2200         l       %r1,0(%r1):tls_load:foo
2201         bas     %r14,0(%r1,%r13):tls_gdcall:foo
2202         bas     %r14,0(%r1,%r13):tls_ldcall:foo'
2203         tls_first_major=2
2204         tls_first_minor=14
2205         ;;
2206   s390x-*-*)
2207     conftest_s='
2208         .section ".tdata","awT",@progbits
2209 foo:    .long   25
2210         .text
2211         .quad   foo@TLSGD
2212         .quad   foo@TLSLDM
2213         .quad   foo@DTPOFF
2214         .quad   foo@NTPOFF
2215         .quad   foo@GOTNTPOFF
2216         lg      %r1,foo@GOTNTPOFF(%r12)
2217         larl    %r1,foo@INDNTPOFF
2218         brasl   %r14,__tls_get_offset@PLT:tls_gdcall:foo
2219         brasl   %r14,__tls_get_offset@PLT:tls_ldcall:foo'
2220         tls_first_major=2
2221         tls_first_minor=14
2222         ;;
2223 esac
2224 if test -z "$tls_first_major"; then
2225   :
2226 elif test $in_tree_gas = yes ; then
2227   gcc_GAS_VERSION_GTE_IFELSE($tls_first_major,$tls_first_minor,0,[
2228     gcc_cv_as_tls=yes
2229   ])
2230 elif test x$gcc_cv_as != x; then
2231   echo "$conftest_s" > conftest.s
2232   if $gcc_cv_as --fatal-warnings -o conftest.o conftest.s > /dev/null 2>&1
2233   then
2234     gcc_cv_as_tls=yes
2235   fi
2236   rm -f conftest.s conftest.o
2237 fi
2238 if test "$gcc_cv_as_tls" = yes; then
2239   AC_DEFINE(HAVE_AS_TLS, 1,
2240             [Define if your assembler supports thread-local storage.])
2241 fi
2242 AC_MSG_RESULT($gcc_cv_as_tls)
2243
2244 case "$target" in
2245   # All TARGET_ABI_OSF targets.
2246   alpha*-*-osf* | alpha*-*-linux* | alpha*-*-*bsd*)
2247     AC_CACHE_CHECK([assembler supports explicit relocations],
2248         gcc_cv_as_explicit_relocs, [
2249         gcc_cv_as_explicit_relocs=unknown
2250         if test $in_tree_gas = yes ; then
2251            gcc_GAS_VERSION_GTE_IFELSE(2,12,0,[
2252               gcc_cv_as_explicit_relocs=yes
2253            ])
2254         elif test x$gcc_cv_as != x; then
2255             cat > conftest.s << 'EOF'
2256         .set nomacro
2257         .text
2258         extbl   $3, $2, $3      !lituse_bytoff!1
2259         ldq     $2, a($29)      !literal!1
2260         ldq     $4, b($29)      !literal!2
2261         ldq_u   $3, 0($2)       !lituse_base!1
2262         ldq     $27, f($29)     !literal!5
2263         jsr     $26, ($27), f   !lituse_jsr!5
2264         ldah    $29, 0($26)     !gpdisp!3
2265         lda     $0, c($29)      !gprel
2266         ldah    $1, d($29)      !gprelhigh
2267         lda     $1, d($1)       !gprellow
2268         lda     $29, 0($29)     !gpdisp!3
2269 EOF
2270             if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
2271                 gcc_cv_as_explicit_relocs=yes
2272             else
2273                 gcc_cv_as_explicit_relocs=no
2274             fi
2275             rm -f conftest.s conftest.o
2276         fi
2277     ])
2278     if test "x$gcc_cv_as_explicit_relocs" = xyes; then
2279         AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
2280                 [Define if your assembler supports explicit relocations.])
2281     fi
2282     ;;
2283   sparc*-*-*)
2284     AC_CACHE_CHECK([assembler .register pseudo-op support],
2285         gcc_cv_as_register_pseudo_op, [
2286         gcc_cv_as_register_pseudo_op=unknown
2287         if test x$gcc_cv_as != x; then
2288             # Check if we have .register
2289             echo ".register %g2, #scratch" > conftest.s
2290             if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
2291                 gcc_cv_as_register_pseudo_op=yes
2292             else
2293                 gcc_cv_as_register_pseudo_op=no
2294             fi
2295             rm -f conftest.s conftest.o
2296         fi
2297     ])
2298     if test "x$gcc_cv_as_register_pseudo_op" = xyes; then
2299         AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
2300                 [Define if your assembler supports .register.])
2301     fi
2302
2303     AC_CACHE_CHECK([assembler supports -relax],
2304         gcc_cv_as_relax_opt, [
2305         gcc_cv_as_relax_opt=unknown
2306         if test x$gcc_cv_as != x; then
2307             # Check if gas supports -relax
2308             echo ".text" > conftest.s
2309             if $gcc_cv_as -relax -o conftest.o conftest.s > /dev/null 2>&1; then
2310                 gcc_cv_as_relax_opt=yes
2311             else
2312                 gcc_cv_as_relax_opt=no
2313             fi
2314             rm -f conftest.s conftest.o
2315         fi
2316     ])
2317     if test "x$gcc_cv_as_relax_opt" = xyes; then
2318         AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
2319                 [Define if your assembler supports -relax option.])
2320     fi
2321
2322     AC_CACHE_CHECK([assembler and linker support unaligned pc related relocs],
2323         gcc_cv_as_sparc_ua_pcrel, [
2324         gcc_cv_as_sparc_ua_pcrel=unknown
2325         if test x$gcc_cv_as != x -a x$gcc_cv_ld != x; then
2326             gcc_cv_as_sparc_ua_pcrel=no
2327             echo ".text; foo: nop; .data; .align 4; .byte 0; .uaword %r_disp32(foo)" > conftest.s
2328             if $gcc_cv_as -K PIC -o conftest.o conftest.s > /dev/null 2>&1 \
2329                && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
2330                 gcc_cv_as_sparc_ua_pcrel=yes
2331             fi
2332             rm -f conftest.s conftest.o conftest
2333         fi
2334     ])
2335     if test "x$gcc_cv_as_sparc_ua_pcrel" = xyes; then
2336         AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
2337                 [Define if your assembler and linker support unaligned PC relative relocs.])
2338     fi
2339
2340     AC_CACHE_CHECK([assembler and linker support unaligned pc related relocs against hidden symbols],
2341         gcc_cv_as_sparc_ua_pcrel_hidden, [
2342         if test "x$gcc_cv_as_sparc_ua_pcrel" = xyes; then
2343             gcc_cv_as_sparc_ua_pcrel_hidden=unknown
2344             if test x$gcc_cv_objdump != x; then
2345                 gcc_cv_as_sparc_ua_pcrel_hidden=no
2346                 echo ".data; .align 4; .byte 0x31; .uaword %r_disp32(foo)" > conftest.s
2347                 echo ".byte 0x32, 0x33, 0x34; .global foo; .hidden foo" >> conftest.s
2348                 echo "foo: .skip 4" >> conftest.s
2349                 if $gcc_cv_as -K PIC -o conftest.o conftest.s > /dev/null 2>&1 \
2350                    && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
2351                    && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
2352                       | grep ' 31000000 07323334' > /dev/null 2>&1; then
2353                     if $gcc_cv_objdump -R conftest 2> /dev/null \
2354                        | grep 'DISP32' > /dev/null 2>&1; then
2355                         :
2356                     else
2357                         gcc_cv_as_sparc_ua_pcrel_hidden=yes
2358                     fi
2359                 fi
2360             fi
2361             rm -f conftest.s conftest.o conftest
2362         else
2363             gcc_cv_as_sparc_ua_pcrel_hidden="$gcc_cv_as_sparc_ua_pcrel"
2364         fi
2365     ])
2366     if test "x$gcc_cv_as_sparc_ua_pcrel_hidden" = xyes; then
2367         AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
2368                 [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])
2369     fi
2370
2371     AC_CACHE_CHECK([for assembler offsetable %lo() support],
2372         gcc_cv_as_offsetable_lo10, [
2373         gcc_cv_as_offsetable_lo10=unknown
2374         if test "x$gcc_cv_as" != x; then
2375             # Check if assembler has offsetable %lo()
2376             echo "or %g1, %lo(ab) + 12, %g1" > conftest.s
2377             echo "or %g1, %lo(ab + 12), %g1" > conftest1.s
2378             if $gcc_cv_as -xarch=v9 -o conftest.o conftest.s \
2379                     > /dev/null 2>&1 &&
2380                $gcc_cv_as -xarch=v9 -o conftest1.o conftest1.s \
2381                     > /dev/null 2>&1; then
2382                 if cmp conftest.o conftest1.o > /dev/null 2>&1; then
2383                     gcc_cv_as_offsetable_lo10=no
2384                 else
2385                     gcc_cv_as_offsetable_lo10=yes
2386                 fi
2387             else
2388                 gcc_cv_as_offsetable_lo10=no
2389             fi
2390             rm -f conftest.s conftest.o conftest1.s conftest1.o
2391         fi
2392     ])
2393     if test "x$gcc_cv_as_offsetable_lo10" = xyes; then
2394         AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
2395             [Define if your assembler supports offsetable %lo().])
2396     fi
2397
2398     ;;
2399
2400 changequote(,)dnl
2401   i[34567]86-*-* | x86_64-*-*)
2402 changequote([,])dnl
2403     AC_MSG_CHECKING(assembler instructions)
2404     gcc_cv_as_instructions=
2405     if test $in_tree_gas = yes ; then 
2406       gcc_GAS_VERSION_GTE_IFELSE(2,9,0,[
2407         gcc_cv_as_instructions="filds fists"
2408       ])
2409     elif test x$gcc_cv_as != x; then
2410         set "filds fists" "filds mem; fists mem"
2411         while test $# -gt 0
2412         do
2413                 echo "$2" > conftest.s
2414                 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
2415                         gcc_cv_as_instructions=${gcc_cv_as_instructions}$1" "
2416                 fi
2417                 shift 2
2418         done
2419         rm -f conftest.s conftest.o
2420     fi
2421     if test x"$gcc_cv_as_instructions" != x; then
2422         AC_DEFINE_UNQUOTED(HAVE_GAS_`echo "$gcc_cv_as_instructions" | sed -e 's/ $//' | tr '[a-z ]' '[A-Z_]'`)
2423     fi
2424     AC_MSG_RESULT($gcc_cv_as_instructions)
2425
2426     AC_MSG_CHECKING(assembler GOTOFF in data directives)
2427     gcc_cv_as_gotoff_in_data=no
2428     if test $in_tree_gas = yes ; then
2429       gcc_GAS_VERSION_GTE_IFELSE(2,11,0,[
2430         gcc_cv_as_gotoff_in_data=yes
2431       ])
2432     elif test x$gcc_cv_as != x; then
2433         cat > conftest.s <<EOF
2434         .text
2435 .L0:
2436         nop
2437         .data
2438         .long .L0@GOTOFF
2439 EOF
2440         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
2441           gcc_cv_as_gotoff_in_data=yes
2442         fi
2443     fi
2444     AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
2445       [`if test $gcc_cv_as_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
2446       [Define true if the assembler supports '.long foo@GOTOFF'.])
2447     AC_MSG_RESULT($gcc_cv_as_gotoff_in_data)
2448     ;;
2449
2450   ia64*-*-*)
2451     AC_CACHE_CHECK([assembler supports ltoffx and ldxmov],
2452         gcc_cv_as_ltoffx_ldxmov_relocs, [
2453         gcc_cv_as_ltoffx_ldxmov_relocs=unknown
2454         if test $in_tree_gas = yes ; then
2455           gcc_GAS_VERSION_GTE_IFELSE(2,14,0,[
2456             gcc_cv_as_ltoffx_ldxmov_relocs=yes
2457           ])
2458         elif test x$gcc_cv_as != x; then
2459             cat > conftest.s << 'EOF'
2460 changequote(,)dnl
2461         .text
2462         addl r15 = @ltoffx(x#), gp
2463         ;;
2464         ld8.mov r16 = [r15], x#
2465 EOF
2466 changequote([,])dnl
2467             if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
2468                 gcc_cv_as_ltoffx_ldxmov_relocs=yes
2469             else
2470                 gcc_cv_as_ltoffx_ldxmov_relocs=no
2471             fi
2472             rm -f conftest.s conftest.o
2473         fi
2474     ])
2475     if test "x$gcc_cv_as_ltoffx_ldxmov_relocs" = xyes; then
2476         AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
2477           [Define if your assembler supports ltoffx and ldxmov relocations.])
2478     fi
2479     ;;
2480 esac
2481
2482 AC_MSG_CHECKING(assembler dwarf2 debug_line support)
2483 gcc_cv_as_dwarf2_debug_line=no
2484 # ??? Not all targets support dwarf2 debug_line, even within a version
2485 # of gas.  Moreover, we need to emit a valid instruction to trigger any
2486 # info to the output file.  So, as supported targets are added to gas 2.11,
2487 # add some instruction here to (also) show we expect this might work.
2488 # ??? Once 2.11 is released, probably need to add first known working
2489 # version to the per-target configury.
2490 case "$target" in
2491   i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-* | m68*-*-* \
2492   | x86_64*-*-* | hppa*-*-* | arm*-*-* | strongarm*-*-* | xscale*-*-* | xstormy16*-*-*)
2493     insn="nop"
2494     ;;
2495   ia64*-*-*)
2496     insn="nop 0"
2497     ;;
2498   esac
2499 if test $in_tree_gas = yes ; then
2500   gcc_GAS_VERSION_GTE_IFELSE(2,11,0,[
2501     if grep 'obj_format = elf' ../gas/Makefile > /dev/null \
2502         && test x"$insn" != x ; then
2503       gcc_cv_as_dwarf2_debug_line="yes"
2504     fi
2505   ])
2506 elif test x$gcc_cv_as != x -a x"$insn" != x ; then
2507         echo '  .file 1 "conftest.s"' > conftest.s
2508         echo '  .loc 1 3 0' >> conftest.s
2509         echo "  $insn" >> conftest.s
2510         # ??? This fails with non-gnu grep.
2511         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
2512            && grep debug_line conftest.o > /dev/null 2>&1 ; then
2513                 # The .debug_line file table must be in the exact order that
2514                 # we specified the files, since these indices are also used
2515                 # by DW_AT_decl_file.  Approximate this test by testing if
2516                 # the assembler bitches if the same index is assigned twice.
2517                 echo '  .file 1 "foo.s"' > conftest.s
2518                 echo '  .file 1 "bar.s"' >> conftest.s
2519                 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1
2520                 then
2521                   gcc_cv_as_dwarf2_debug_line="no"
2522                 else
2523                   gcc_cv_as_dwarf2_debug_line="yes"
2524                 fi
2525         fi
2526         rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
2527 fi
2528 if test x"$gcc_cv_as_dwarf2_debug_line" = xyes; then
2529         AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
2530 [Define if your assembler supports dwarf2 .file/.loc directives,
2531    and preserves file table indices exactly as given.])
2532 fi
2533 AC_MSG_RESULT($gcc_cv_as_dwarf2_debug_line)
2534
2535 AC_MSG_CHECKING(assembler --gdwarf2 support)
2536 gcc_cv_as_gdwarf2_flag=no
2537 if test $in_tree_gas = yes ; then
2538   gcc_GAS_VERSION_GTE_IFELSE(2,11,0,[
2539     if grep 'obj_format = elf' ../gas/Makefile > /dev/null \
2540         && test x"$insn" != x ; then
2541       gcc_cv_as_gdwarf2_flag="yes"
2542     fi
2543   ])
2544 elif test x$gcc_cv_as != x -a x"$insn" != x ; then
2545         echo '' > conftest.s
2546         # ??? This fails with non-gnu grep.
2547         if $gcc_cv_as --gdwarf2 -o conftest.o conftest.s > /dev/null 2>&1
2548           then
2549           gcc_cv_as_gdwarf2_flag="yes"
2550         fi
2551         rm -f conftest.s conftest.o
2552 fi
2553 if test x"$gcc_cv_as_gdwarf2_flag" = xyes; then
2554         AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
2555 [Define if your assembler supports the --gdwarf2 option.])
2556 fi
2557 AC_MSG_RESULT($gcc_cv_as_gdwarf2_flag)
2558
2559 AC_MSG_CHECKING(assembler --gstabs support)
2560 gcc_cv_as_gstabs_flag=no
2561 if test $in_tree_gas = yes ; then
2562   gcc_GAS_VERSION_GTE_IFELSE(2,11,0,[
2563     if grep 'obj_format = elf' ../gas/Makefile > /dev/null \
2564         && test x"$insn" != x ; then
2565       gcc_cv_as_gstabs_flag="yes"
2566     fi
2567   ])
2568 elif test x$gcc_cv_as != x -a x"$insn" != x ; then
2569         echo '' > conftest.s
2570         # ??? This fails with non-gnu grep.
2571         if $gcc_cv_as --gstabs -o conftest.o conftest.s > /dev/null 2>&1 ; then
2572           gcc_cv_as_gstabs_flag="yes"
2573         fi
2574         rm -f conftest.s conftest.o
2575 fi
2576 if test x"$gcc_cv_as_gstabs_flag" = xyes; then
2577         AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
2578 [Define if your assembler supports the --gstabs option.])
2579 fi
2580 AC_MSG_RESULT($gcc_cv_as_gstabs_flag)
2581
2582 AC_MSG_CHECKING(linker read-only and read-write section mixing)
2583 gcc_cv_ld_ro_rw_mix=unknown
2584 if test $in_tree_ld = yes ; then
2585   if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10 -o "$gcc_cv_gld_major_version" -gt 2 && grep 'EMUL = elf' ../ld/Makefile > /dev/null; then
2586     gcc_cv_ld_ro_rw_mix=read-write
2587   fi
2588 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
2589   echo '.section "myfoosect", "a"' > conftest1.s
2590   echo '.section "myfoosect", "aw"' > conftest2.s
2591   echo '.byte 1' >> conftest2.s
2592   echo '.section "myfoosect", "a"' > conftest3.s
2593   echo '.byte 0' >> conftest3.s
2594   if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
2595      && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
2596      && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \
2597      && $gcc_cv_ld -shared -o conftest1.so conftest1.o \
2598         conftest2.o conftest3.o; then
2599     gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
2600                          | grep -A1 myfoosect`
2601     if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then
2602       if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then
2603         gcc_cv_ld_ro_rw_mix=read-only
2604       else
2605         gcc_cv_ld_ro_rw_mix=read-write
2606       fi
2607     fi
2608   fi
2609 changequote(,)dnl
2610   rm -f conftest.* conftest[123].*
2611 changequote([,])dnl
2612 fi
2613 if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
2614         AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1,
2615   [Define if your linker links a mix of read-only
2616    and read-write sections into a read-write section.])
2617 fi
2618 AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
2619
2620 AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
2621 gcc_cv_ld_eh_frame_hdr=no
2622 if test $in_tree_ld = yes ; then
2623   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
2624     gcc_cv_ld_eh_frame_hdr=yes
2625   fi
2626 elif test x$gcc_cv_ld != x; then
2627         # Check if linker supports --eh-frame-hdr option
2628         if $gcc_cv_ld --help 2>/dev/null | grep eh-frame-hdr > /dev/null; then
2629                 gcc_cv_ld_eh_frame_hdr=yes
2630         fi
2631 fi
2632 if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
2633         AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
2634 [Define if your linker supports --eh-frame-hdr option.])
2635 fi
2636 AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
2637
2638 AC_MSG_CHECKING(linker position independent executable support)
2639 gcc_cv_ld_pie=no
2640 if test $in_tree_ld = yes ; then
2641   if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 15 -o "$gcc_cv_gld_major_version" -gt 2 && grep 'EMUL = elf' ../ld/Makefile > /dev/null; then
2642     gcc_cv_ld_pie=yes
2643   fi
2644 elif test x$gcc_cv_ld != x; then
2645         # Check if linker supports -pie option
2646         if $gcc_cv_ld --help 2>/dev/null | grep -- -pie > /dev/null; then
2647                 gcc_cv_ld_pie=yes
2648         fi
2649 fi
2650 if test x"$gcc_cv_ld_pie" = xyes; then
2651         AC_DEFINE(HAVE_LD_PIE, 1,
2652 [Define if your linker supports -pie option.])
2653 fi
2654 AC_MSG_RESULT($gcc_cv_ld_pie)
2655
2656 # Miscellaneous target-specific checks.
2657 case "$target" in
2658   mips*-*-*)
2659     AC_MSG_CHECKING(whether libgloss uses STARTUP directives consistently)
2660     gcc_cv_mips_libgloss_startup=no
2661     gcc_cv_libgloss_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/libgloss
2662     if test "x$exec_prefix" = xNONE; then
2663       if test "x$prefix" = xNONE; then
2664         test_prefix=/usr/local
2665       else
2666         test_prefix=$prefix
2667       fi
2668     else
2669       test_prefix=$exec_prefix
2670     fi
2671     for f in $gcc_cv_libgloss_srcdir/mips/idt.ld $test_prefix/$target_alias/lib/idt.ld
2672     do
2673       if grep '^STARTUP' $f > /dev/null 2>&1; then
2674         gcc_cv_mips_libgloss_startup=yes
2675         break
2676       fi
2677     done
2678     if test x"$gcc_cv_mips_libgloss_startup" = xyes; then
2679       AC_DEFINE(HAVE_MIPS_LIBGLOSS_STARTUP_DIRECTIVES, 1,
2680         [Define if your MIPS libgloss linker scripts consistently include STARTUP directives.])
2681     fi
2682     AC_MSG_RESULT($gcc_cv_mips_libgloss_startup)
2683
2684     AC_MSG_CHECKING(whether the assembler has explicit relocation support)
2685     if test x$gcc_cv_mips_explicit_relocs = x; then
2686       gcc_cv_mips_explicit_relocs=no
2687       if test x$gcc_cv_as != x; then
2688         echo '  lw $4,%gp_rel(foo)($4)' > conftest.s
2689         if $gcc_cv_as conftest.s -o conftest.o > /dev/null 2>&1; then
2690           gcc_cv_mips_explicit_relocs=yes
2691         fi
2692         rm -f conftest.s conftest.o
2693       fi
2694     fi
2695     if test $gcc_cv_mips_explicit_relocs = yes; then
2696       test x$target_cpu_default != x || target_cpu_default=0
2697       target_cpu_default="(${target_cpu_default}|MASK_EXPLICIT_RELOCS)"
2698     fi
2699     AC_MSG_RESULT($gcc_cv_mips_explicit_relocs)
2700     ;;
2701 esac
2702
2703 if test x$with_sysroot = x && test x$host = x$target \
2704    && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" ; then
2705   AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include")
2706 fi
2707
2708 # Figure out what language subdirectories are present.
2709 # Look if the user specified --enable-languages="..."; if not, use
2710 # the environment variable $LANGUAGES if defined. $LANGUAGES might
2711 # go away some day.
2712 # NB:  embedded tabs in this IF block -- do not untabify
2713 if test x"${enable_languages+set}" != xset; then
2714         if test x"${LANGUAGES+set}" = xset; then
2715                 enable_languages="${LANGUAGES}"
2716                 AC_MSG_WARN([setting LANGUAGES is deprecated, use --enable-languages instead])
2717
2718         else
2719                 enable_languages=all
2720         fi
2721 else
2722         if test x"${enable_languages}" = x \
2723         || test x"${enable_languages}" = xyes;
2724         then
2725                 AC_MSG_ERROR([--enable-languages needs at least one language argument])
2726         fi
2727 fi
2728 enable_languages=`echo "${enable_languages}" | sed -e 's/[[     ,]][[   ,]]*/,/g' -e 's/,$//'`
2729
2730 # First scan to see if an enabled language requires some other language.
2731 # We assume that a given config-lang.in will list all the language
2732 # front ends it requires, even if some are required indirectly.
2733 for lang in ${srcdir}/*/config-lang.in ..
2734 do
2735    case $lang in
2736     ..)
2737        ;;
2738     # The odd quoting in the next line works around
2739     # an apparent bug in bash 1.12 on linux.
2740 changequote(,)dnl
2741     ${srcdir}/[*]/config-lang.in)
2742        ;;
2743     *)
2744        lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^      ]*\).*$,\1,p' $lang`
2745        this_lang_requires=`sed -n -e 's,^lang_requires=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^lang_requires=\([^    ]*\).*$,\1,p' $lang`
2746        for other in $this_lang_requires
2747        do
2748           case ,${enable_languages}, in
2749            *,$other,*)
2750               ;;
2751            *,all,*)
2752               ;;
2753            *,$lang_alias,*)
2754               enable_languages="$enable_languages,$other"
2755               ;;
2756           esac
2757        done
2758        ;;
2759 changequote([,])dnl
2760    esac
2761 done
2762
2763 expected_languages=`echo ,${enable_languages}, | sed -e 's:,: :g' -e 's:  *: :g' -e 's:  *: :g' -e 's:^ ::' -e 's: $::'`
2764 found_languages=
2765 subdirs=
2766 for lang in ${srcdir}/*/config-lang.in ..
2767 do
2768         case $lang in
2769         ..) ;;
2770         # The odd quoting in the next line works around
2771         # an apparent bug in bash 1.12 on linux.
2772 changequote(,)dnl
2773         ${srcdir}/[*]/config-lang.in) ;;
2774         *)
2775           lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^   ]*\).*$,\1,p' $lang`
2776           this_lang_libs=`sed -n -e 's,^target_libs=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^target_libs=\([^         ]*\).*$,\1,p' $lang`
2777           build_by_default=`sed -n -e 's,^build_by_default=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^build_by_default=\([^     ]*\).*$,\1,p' $lang`
2778           if test "x$lang_alias" = x
2779           then
2780                 echo "$lang doesn't set \$language." 1>&2
2781                 exit 1
2782           fi
2783           case ${build_by_default},${enable_languages}, in
2784           *,$lang_alias,*) add_this_lang=yes ;;
2785           no,*) add_this_lang=no ;;
2786           *,all,*) add_this_lang=yes ;;
2787           *) add_this_lang=no ;;
2788           esac
2789           found_languages="${found_languages} ${lang_alias}"
2790           if test x"${add_this_lang}" = xyes; then
2791                 case $lang in
2792                     ${srcdir}/ada/config-lang.in)
2793                         if test x$have_gnat = xyes ; then
2794                                 subdirs="$subdirs `echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
2795                         fi
2796                         ;;
2797                     *)
2798                         subdirs="$subdirs `echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
2799                         ;;
2800                 esac
2801           fi
2802           ;;
2803 changequote([,])dnl
2804         esac
2805 done
2806
2807 missing_languages=
2808 for expected_language in ${expected_languages} ..
2809 do 
2810     if test "${expected_language}" != ..; then
2811         missing_language="${expected_language}"
2812         if test "${expected_language}" = "c" \
2813            || test "${expected_language}" = "all"; then
2814                 missing_language=
2815         fi
2816         for found_language in ${found_languages} ..
2817         do 
2818             if test "${found_language}" != ..; then
2819                 if test "${expected_language}" = "${found_language}"; then
2820                     missing_language=
2821                 fi
2822             fi
2823         done
2824         if test "x${missing_language}" != x; then
2825            missing_languages="${missing_languages} ${missing_language}"
2826         fi
2827     fi
2828 done
2829
2830 if test "x$missing_languages" != x; then
2831   AC_MSG_ERROR([
2832 The following requested languages were not found:${missing_languages}
2833 The following languages were available: c${found_languages}])
2834 fi
2835
2836 # Make gthr-default.h if we have a thread file.
2837 gthread_flags=
2838 if test $thread_file != single; then
2839     rm -f gthr-default.h
2840     echo "#include \"gthr-${thread_file}.h\"" > gthr-default.h
2841     gthread_flags=-DHAVE_GTHR_DEFAULT
2842 fi
2843 AC_SUBST(gthread_flags)
2844
2845 # Find out what GC implementation we want, or may, use.
2846 AC_ARG_WITH(gc,
2847 [  --with-gc={simple,page} choose the garbage collection mechanism to use
2848                           with the compiler],
2849 [case "$withval" in
2850   simple | page)
2851     GGC=ggc-$withval
2852     ;;
2853   *)
2854     AC_MSG_ERROR([$withval is an invalid option to --with-gc])
2855     ;;
2856 esac],
2857 [GGC=ggc-page])
2858 AC_SUBST(GGC)
2859 echo "Using $GGC for garbage collection."
2860
2861 # Use the system's zlib library.
2862 zlibdir=-L../zlib
2863 zlibinc="-I\$(srcdir)/../zlib"
2864 AC_ARG_WITH(system-zlib,
2865 [  --with-system-zlib      use installed libz],
2866 zlibdir=
2867 zlibinc=
2868 )
2869 AC_SUBST(zlibdir)
2870 AC_SUBST(zlibinc)
2871
2872 dnl Very limited version of automake's enable-maintainer-mode
2873
2874 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
2875   dnl maintainer-mode is disabled by default
2876   AC_ARG_ENABLE(maintainer-mode,
2877 [  --enable-maintainer-mode
2878                           enable make rules and dependencies not useful
2879                           (and sometimes confusing) to the casual installer],
2880       maintainer_mode=$enableval,
2881       maintainer_mode=no)
2882
2883 AC_MSG_RESULT($maintainer_mode)
2884
2885 if test "$maintainer_mode" = "yes"; then
2886   MAINT=''
2887 else
2888   MAINT='#'
2889 fi
2890 AC_SUBST(MAINT)dnl
2891
2892 # Make empty files to contain the specs and options for each language.
2893 # Then add #include lines to for a compiler that has specs and/or options.
2894
2895 lang_specs_files=
2896 lang_options_files=
2897 lang_tree_files=
2898 for subdir in . $subdirs
2899 do
2900         if test -f $srcdir/$subdir/lang-specs.h; then
2901             lang_specs_files="$lang_specs_files $srcdir/$subdir/lang-specs.h"
2902         fi
2903         if test -f $srcdir/$subdir/lang-options.h; then
2904             lang_options_files="$lang_options_files $srcdir/$subdir/lang-options.h"
2905         fi
2906         if test -f $srcdir/$subdir/$subdir-tree.def; then
2907             lang_tree_files="$lang_tree_files $srcdir/$subdir/$subdir-tree.def"
2908         fi
2909 done
2910
2911 # These (without "all_") are set in each config-lang.in.
2912 # `language' must be a single word so is spelled singularly.
2913 all_languages=
2914 all_boot_languages=
2915 all_compilers=
2916 all_stagestuff=
2917 all_outputs='Makefile intl/Makefile fixinc/Makefile gccbug mklibgcc mkheaders'
2918 # List of language makefile fragments.
2919 all_lang_makefiles=
2920 # Files for gengtype
2921 all_gtfiles="$target_gtfiles"
2922 # Files for gengtype with language
2923 all_gtfiles_files_langs=
2924 all_gtfiles_files_files=
2925
2926 # Add the language fragments.
2927 # Languages are added via two mechanisms.  Some information must be
2928 # recorded in makefile variables, these are defined in config-lang.in.
2929 # We accumulate them and plug them into the main Makefile.
2930 # The other mechanism is a set of hooks for each of the main targets
2931 # like `clean', `install', etc.
2932
2933 language_fragments="Make-lang"
2934 language_hooks="Make-hooks"
2935
2936 for s in .. $subdirs
2937 do
2938         if test $s != ".."
2939         then
2940                 language=
2941                 boot_language=
2942                 compilers=
2943                 stagestuff=
2944                 outputs=
2945                 gtfiles=
2946                 . ${srcdir}/$s/config-lang.in
2947                 if test "x$language" = x
2948                 then
2949                         echo "${srcdir}/$s/config-lang.in doesn't set \$language." 1>&2
2950                         exit 1
2951                 fi
2952                 all_lang_makefiles="$all_lang_makefiles ${srcdir}/$s/Make-lang.in"
2953                 if test -f ${srcdir}/$s/Makefile.in
2954                 then all_lang_makefiles="$all_lang_makefiles ${srcdir}/$s/Makefile.in"
2955                 fi
2956                 all_languages="$all_languages $language"
2957                 if test "x$boot_language" = xyes
2958                 then
2959                         all_boot_languages="$all_boot_languages $language"
2960                 fi
2961                 all_compilers="$all_compilers $compilers"
2962                 all_stagestuff="$all_stagestuff $stagestuff"
2963                 all_outputs="$all_outputs $outputs"
2964                 all_gtfiles="$all_gtfiles $gtfiles"
2965                 for f in .. $gtfiles
2966                 do
2967                      if test $f != ".."
2968                      then
2969                          all_gtfiles_files_langs="$all_gtfiles_files_langs ${s} "
2970                          all_gtfiles_files_files="$all_gtfiles_files_files ${f} "
2971                      fi
2972                 done
2973         fi
2974 done
2975
2976 # Pick up gtfiles for c
2977 gtfiles=
2978 s="c"
2979 . ${srcdir}/c-config-lang.in
2980 all_gtfiles="$all_gtfiles $gtfiles"
2981 for f in .. $gtfiles
2982 do
2983      if test $f != ".."
2984      then
2985         all_gtfiles_files_langs="$all_gtfiles_files_langs ${s} "
2986         all_gtfiles_files_files="$all_gtfiles_files_files ${f} "
2987      fi
2988 done
2989
2990 check_languages=
2991 for language in .. $all_languages
2992 do
2993         if test $language != ".."
2994         then
2995                 check_languages="$check_languages check-$language"
2996         fi
2997 done
2998
2999 # Since we can't use `::' targets, we link each language in
3000 # with a set of hooks, reached indirectly via lang.${target}.
3001
3002 rm -f Make-hooks
3003 touch Make-hooks
3004 target_list="all.build all.cross start.encap rest.encap tags \
3005         info dvi generated-manpages \
3006         install-normal install-common install-info install-man \
3007         uninstall \
3008         mostlyclean clean distclean extraclean maintainer-clean \
3009         stage1 stage2 stage3 stage4"
3010 for t in $target_list
3011 do
3012         x=
3013         for lang in .. $all_languages
3014         do
3015                 if test $lang != ".."; then
3016                         x="$x $lang.$t"
3017                 fi
3018         done
3019         echo "lang.$t: $x" >> Make-hooks
3020 done
3021
3022 # Create .gdbinit.
3023
3024 echo "dir ." > .gdbinit
3025 echo "dir ${srcdir}" >> .gdbinit
3026 if test x$gdb_needs_out_file_path = xyes
3027 then
3028         echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
3029 fi
3030 if test "x$subdirs" != x; then
3031         for s in $subdirs
3032         do
3033                 echo "dir ${srcdir}/$s" >> .gdbinit
3034         done
3035 fi
3036 echo "source ${srcdir}/gdbinit.in" >> .gdbinit
3037
3038 # If $(exec_prefix) exists and is not the same as $(prefix), then compute an
3039 # absolute path for gcc_tooldir based on inserting the number of up-directory
3040 # movements required to get from $(exec_prefix) to $(prefix) into the basic
3041 # $(libsubdir)/@(unlibsubdir) based path.
3042 # Don't set gcc_tooldir to tooldir since that's only passed in by the toplevel
3043 # make and thus we'd get different behavior depending on where we built the
3044 # sources.
3045 if test x$exec_prefix = xNONE -o x$exec_prefix = x$prefix; then
3046     gcc_tooldir='$(libsubdir)/$(unlibsubdir)/../$(target_alias)'
3047 else
3048 changequote(<<, >>)dnl
3049 # An explanation of the sed strings:
3050 #  -e 's|^\$(prefix)||'   matches and eliminates 'prefix' from 'exec_prefix'
3051 #  -e 's|/$||'            match a trailing forward slash and eliminates it
3052 #  -e 's|^[^/]|/|'        forces the string to start with a forward slash (*)
3053 #  -e 's|/[^/]*|../|g'    replaces each occurrence of /<directory> with ../
3054 #
3055 # (*) Note this pattern overwrites the first character of the string
3056 # with a forward slash if one is not already present.  This is not a
3057 # problem because the exact names of the sub-directories concerned is
3058 # unimportant, just the number of them matters.
3059 #
3060 # The practical upshot of these patterns is like this:
3061 #
3062 #  prefix     exec_prefix        result
3063 #  ------     -----------        ------
3064 #   /foo        /foo/bar          ../
3065 #   /foo/       /foo/bar          ../
3066 #   /foo        /foo/bar/         ../
3067 #   /foo/       /foo/bar/         ../
3068 #   /foo        /foo/bar/ugg      ../../
3069 #
3070     dollar='$$'
3071     gcc_tooldir="\$(libsubdir)/\$(unlibsubdir)/\`echo \$(exec_prefix) | sed -e 's|^\$(prefix)||' -e 's|/\$(dollar)||' -e 's|^[^/]|/|' -e 's|/[^/]*|../|g'\`\$(target_alias)"
3072 changequote([, ])dnl
3073 fi
3074 AC_SUBST(gcc_tooldir)
3075 AC_SUBST(dollar)
3076
3077 # Find a directory in which to install a shared libgcc.
3078
3079 AC_ARG_ENABLE(version-specific-runtime-libs,
3080 [  --enable-version-specific-runtime-libs
3081                           specify that runtime libraries should be
3082                           installed in a compiler-specific directory])
3083
3084 AC_ARG_WITH(slibdir,
3085 [  --with-slibdir=DIR      shared libraries in DIR [LIBDIR]],
3086 slibdir="$with_slibdir",
3087 if test "${enable_version_specific_runtime_libs+set}" = set; then
3088   slibdir='$(libsubdir)'
3089 elif test "$host" != "$target"; then
3090   slibdir='$(build_tooldir)/lib'
3091 else
3092   slibdir='$(libdir)'
3093 fi)
3094 AC_SUBST(slibdir)
3095
3096 objdir=`${PWDCMD-pwd}`
3097 AC_SUBST(objdir)
3098
3099 # Process the language and host/target makefile fragments.
3100 ${CONFIG_SHELL-/bin/sh} $srcdir/configure.frag $srcdir "$subdirs" "$dep_host_xmake_file" "$dep_tmake_file"
3101
3102 # Substitute configuration variables
3103 AC_SUBST(subdirs)
3104 AC_SUBST(srcdir)
3105 AC_SUBST(all_boot_languages)
3106 AC_SUBST(all_compilers)
3107 AC_SUBST(all_gtfiles)
3108 AC_SUBST(all_gtfiles_files_langs)
3109 AC_SUBST(all_gtfiles_files_files)
3110 AC_SUBST(all_lang_makefiles)
3111 AC_SUBST(all_languages)
3112 AC_SUBST(all_stagestuff)
3113 AC_SUBST(build_exeext)
3114 AC_SUBST(build_install_headers_dir)
3115 AC_SUBST(build_xm_file_list)
3116 AC_SUBST(build_xm_file)
3117 AC_SUBST(build_xm_defines)
3118 AC_SUBST(check_languages)
3119 AC_SUBST(cc_set_by_configure)
3120 AC_SUBST(quoted_cc_set_by_configure)
3121 AC_SUBST(cpp_install_dir)
3122 AC_SUBST(dep_host_xmake_file)
3123 AC_SUBST(dep_tmake_file)
3124 AC_SUBST(extra_headers_list)
3125 AC_SUBST(extra_objs)
3126 AC_SUBST(extra_parts)
3127 AC_SUBST(extra_passes)
3128 AC_SUBST(extra_programs)
3129 AC_SUBST(float_h_file)
3130 AC_SUBST(gcc_config_arguments)
3131 AC_SUBST(gcc_gxx_include_dir)
3132 AC_SUBST(libstdcxx_incdir)
3133 AC_SUBST(gcc_version)
3134 AC_SUBST(gcc_version_full)
3135 AC_SUBST(gcc_version_trigger)
3136 AC_SUBST(host_exeext)
3137 AC_SUBST(host_extra_gcc_objs)
3138 AC_SUBST(host_xm_file_list)
3139 AC_SUBST(host_xm_file)
3140 AC_SUBST(host_xm_defines)
3141 AC_SUBST(out_host_hook_obj)
3142 AC_SUBST(install)
3143 AC_SUBST(lang_options_files)
3144 AC_SUBST(lang_specs_files)
3145 AC_SUBST(lang_tree_files)
3146 AC_SUBST(local_prefix)
3147 AC_SUBST(md_file)
3148 AC_SUBST(objc_boehm_gc)
3149 AC_SUBST(out_file)
3150 AC_SUBST(out_object_file)
3151 AC_SUBST(stage_prefix_set_by_configure)
3152 AC_SUBST(quoted_stage_prefix_set_by_configure)
3153 AC_SUBST(symbolic_link)
3154 AC_SUBST(thread_file)
3155 AC_SUBST(tm_file_list)
3156 AC_SUBST(tm_file)
3157 AC_SUBST(tm_defines)
3158 AC_SUBST(tm_p_file_list)
3159 AC_SUBST(tm_p_file)
3160 AC_SUBST(xm_file)
3161 AC_SUBST(xm_defines)
3162 AC_SUBST(target_alias)
3163 AC_SUBST(c_target_objs)
3164 AC_SUBST(cxx_target_objs)
3165 AC_SUBST(target_cpu_default)
3166
3167 AC_SUBST_FILE(target_overrides)
3168 AC_SUBST_FILE(host_overrides)
3169 AC_SUBST_FILE(language_fragments)
3170 AC_SUBST_FILE(language_hooks)
3171
3172 # Echo that links are built
3173 if test x$host = x$target
3174 then
3175         str1="native "
3176 else
3177         str1="cross-"
3178         str2=" from $host"
3179 fi
3180
3181 if test x$host != x$build
3182 then
3183         str3=" on a $build system"
3184 fi
3185
3186 if test "x$str2" != x || test "x$str3" != x
3187 then
3188         str4=
3189 fi
3190
3191 echo "Links are now set up to build a ${str1}compiler for ${target}$str4" 1>&2
3192
3193 if test "x$str2" != x || test "x$str3" != x
3194 then
3195         echo " ${str2}${str3}." 1>&2
3196 fi
3197
3198 # Truncate the target if necessary
3199 if test x$host_truncate_target != x; then
3200         target=`echo $target | sed -e 's/\(..............\).*/\1/'`
3201 fi
3202
3203 # Configure the subdirectories
3204 # AC_CONFIG_SUBDIRS($subdirs)
3205
3206 # Create the Makefile
3207 # and configure language subdirectories
3208 AC_OUTPUT($all_outputs,
3209 [
3210 case x$CONFIG_HEADERS in
3211 xauto-host.h:config.in)
3212 echo > cstamp-h ;;
3213 esac
3214 # If the host supports symlinks, point stage[1234] at ../stage[1234] so
3215 # bootstrapping and the installation procedure can still use
3216 # CC="stage1/xgcc -Bstage1/".  If the host doesn't support symlinks,
3217 # FLAGS_TO_PASS has been modified to solve the problem there.
3218 # This is virtually a duplicate of what happens in configure.lang; we do
3219 # an extra check to make sure this only happens if ln -s can be used.
3220 if test "$symbolic_link" = "ln -s"; then
3221  for d in .. ${subdirs} fixinc ; do
3222    if test $d != ..; then
3223         STARTDIR=`${PWDCMD-pwd}`
3224         cd $d
3225         for t in stage1 stage2 stage3 stage4 include
3226         do
3227                 rm -f $t
3228                 $symbolic_link ../$t $t 2>/dev/null
3229         done
3230         cd $STARTDIR
3231    fi
3232  done
3233 else true ; fi
3234 # Avoid having to add intl to our include paths.
3235 if test -f intl/libintl.h; then
3236   echo creating libintl.h
3237   echo '#include "intl/libintl.h"' >libintl.h
3238 fi
3239 ], 
3240 [subdirs='$subdirs'
3241 symbolic_link='$symbolic_link'
3242 ])