OSDN Git Service

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