OSDN Git Service

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