OSDN Git Service

libcpp/
[pf3gnuchains/gcc-fork.git] / gcc / configure.ac
1 # configure.ac for GCC
2 # Process this file with autoconf to generate a configuration script.
3
4 # Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
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, 51 Franklin Street, Fifth Floor, Boston, MA
22 #02110-1301, USA.
23
24 # --------------------------------
25 # Initialization and sanity checks
26 # --------------------------------
27
28 AC_PREREQ(2.59)
29 AC_INIT
30 AC_CONFIG_SRCDIR(tree.c)
31 AC_CONFIG_HEADER(auto-host.h:config.in)
32
33 gcc_version=`cat $srcdir/BASE-VER`
34
35 # Determine the host, build, and target systems
36 AC_CANONICAL_BUILD
37 AC_CANONICAL_HOST
38 AC_CANONICAL_TARGET
39
40 # Determine the noncanonical target name, for directory use.
41 ACX_NONCANONICAL_TARGET
42
43 # Determine the target- and build-specific subdirectories
44 GCC_TOPLEV_SUBDIRS
45
46 # Set program_transform_name
47 AC_ARG_PROGRAM
48
49 # Check for bogus environment variables.
50 # Test if LIBRARY_PATH contains the notation for the current directory
51 # since this would lead to problems installing/building glibc.
52 # LIBRARY_PATH contains the current directory if one of the following
53 # is true:
54 # - one of the terminals (":" and ";") is the first or last sign
55 # - two terminals occur directly after each other
56 # - the path contains an element with a dot in it
57 AC_MSG_CHECKING(LIBRARY_PATH variable)
58 changequote(,)dnl
59 case ${LIBRARY_PATH} in
60   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
61     library_path_setting="contains current directory"
62     ;;
63   *)
64     library_path_setting="ok"
65     ;;
66 esac
67 changequote([,])dnl
68 AC_MSG_RESULT($library_path_setting)
69 if test "$library_path_setting" != "ok"; then
70 AC_MSG_ERROR([
71 *** LIBRARY_PATH shouldn't contain the current directory when
72 *** building gcc. Please change the environment variable
73 *** and run configure again.])
74 fi
75
76 # Test if GCC_EXEC_PREFIX contains the notation for the current directory
77 # since this would lead to problems installing/building glibc.
78 # GCC_EXEC_PREFIX contains the current directory if one of the following
79 # is true:
80 # - one of the terminals (":" and ";") is the first or last sign
81 # - two terminals occur directly after each other
82 # - the path contains an element with a dot in it
83 AC_MSG_CHECKING(GCC_EXEC_PREFIX variable)
84 changequote(,)dnl
85 case ${GCC_EXEC_PREFIX} in
86   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
87     gcc_exec_prefix_setting="contains current directory"
88     ;;
89   *)
90     gcc_exec_prefix_setting="ok"
91     ;;
92 esac
93 changequote([,])dnl
94 AC_MSG_RESULT($gcc_exec_prefix_setting)
95 if test "$gcc_exec_prefix_setting" != "ok"; then
96 AC_MSG_ERROR([
97 *** GCC_EXEC_PREFIX shouldn't contain the current directory when
98 *** building gcc. Please change the environment variable
99 *** and run configure again.])
100 fi
101
102 # -----------
103 # Directories
104 # -----------
105
106 # Specify the local prefix
107 local_prefix=
108 AC_ARG_WITH(local-prefix,
109 [  --with-local-prefix=DIR specifies directory to put local include],
110 [case "${withval}" in
111 yes)    AC_MSG_ERROR(bad value ${withval} given for local include directory prefix) ;;
112 no)     ;;
113 *)      local_prefix=$with_local_prefix ;;
114 esac])
115
116 # Default local prefix if it is empty
117 if test x$local_prefix = x; then
118         local_prefix=/usr/local
119 fi
120
121 # Don't set gcc_gxx_include_dir to gxx_include_dir since that's only
122 # passed in by the toplevel make and thus we'd get different behavior
123 # depending on where we built the sources.
124 gcc_gxx_include_dir=
125 # Specify the g++ header file directory
126 AC_ARG_WITH(gxx-include-dir,
127 [  --with-gxx-include-dir=DIR
128                           specifies directory to put g++ header files],
129 [case "${withval}" in
130 yes)    AC_MSG_ERROR(bad value ${withval} given for g++ include directory) ;;
131 no)     ;;
132 *)      gcc_gxx_include_dir=$with_gxx_include_dir ;;
133 esac])
134
135 # This logic must match libstdc++-v3/acinclude.m4:GLIBCXX_EXPORT_INSTALL_INFO.
136 if test x${gcc_gxx_include_dir} = x; then
137   if test x${enable_version_specific_runtime_libs} = xyes; then
138     gcc_gxx_include_dir='${libsubdir}/include/c++'
139   else
140     libstdcxx_incdir='include/c++/$(version)'
141     if test x$host != x$target; then
142        libstdcxx_incdir="$target_alias/$libstdcxx_incdir"
143     fi
144 changequote(<<, >>)dnl
145     gcc_gxx_include_dir="\$(libsubdir)/\$(unlibsubdir)/..\`echo \$(exec_prefix) | sed -e 's|^\$(prefix)||' -e 's|/[^/]*|/..|g'\`/$libstdcxx_incdir"
146 changequote([, ])dnl
147   fi
148 fi
149
150 AC_ARG_WITH(cpp_install_dir,
151 [  --with-cpp-install-dir=DIR
152                           install the user visible C preprocessor in DIR
153                           (relative to PREFIX) as well as PREFIX/bin],
154 [if test x$withval = xyes; then
155   AC_MSG_ERROR([option --with-cpp-install-dir requires an argument])
156 elif test x$withval != xno; then
157   cpp_install_dir=$withval
158 fi])
159
160 # We would like to our source tree to be readonly.  However when releases or
161 # pre-releases are generated, the flex/bison generated files as well as the 
162 # various formats of manuals need to be included along with the rest of the
163 # sources.  Therefore we have --enable-generated-files-in-srcdir to do 
164 # just that.
165
166 AC_MSG_CHECKING([whether to place generated files in the source directory])
167   dnl generated-files-in-srcdir is disabled by default
168   AC_ARG_ENABLE(generated-files-in-srcdir, 
169 [  --enable-generated-files-in-srcdir
170                           put copies of generated files in source dir
171                           intended for creating source tarballs for users
172                           without texinfo bison or flex.],
173       generated_files_in_srcdir=$enableval,
174       generated_files_in_srcdir=no)
175
176 AC_MSG_RESULT($generated_files_in_srcdir)
177
178 if test "$generated_files_in_srcdir" = "yes"; then
179   GENINSRC=''
180 else
181   GENINSRC='#'
182 fi
183 AC_SUBST(GENINSRC)
184
185 # -------------------
186 # Find default linker
187 # -------------------
188
189 # With GNU ld
190 AC_ARG_WITH(gnu-ld,
191 [  --with-gnu-ld           arrange to work with GNU ld.],
192 gnu_ld_flag="$with_gnu_ld",
193 gnu_ld_flag=no)
194
195 # With pre-defined ld
196 AC_ARG_WITH(ld,
197 [  --with-ld               arrange to use the specified ld (full pathname)],
198 DEFAULT_LINKER="$with_ld")
199 if test x"${DEFAULT_LINKER+set}" = x"set"; then
200   if test ! -x "$DEFAULT_LINKER"; then
201     AC_MSG_ERROR([cannot execute: $DEFAULT_LINKER: check --with-ld or env. var. DEFAULT_LINKER])
202   elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
203     gnu_ld_flag=yes
204   fi
205   AC_DEFINE_UNQUOTED(DEFAULT_LINKER,"$DEFAULT_LINKER",
206         [Define to enable the use of a default linker.])
207 fi
208
209 AC_MSG_CHECKING([whether a default linker was specified])
210 if test x"${DEFAULT_LINKER+set}" = x"set"; then
211   if test x"$gnu_ld_flag" = x"no"; then
212     AC_MSG_RESULT([yes ($DEFAULT_LINKER)])
213   else
214     AC_MSG_RESULT([yes ($DEFAULT_LINKER - GNU ld)])
215   fi
216 else
217   AC_MSG_RESULT(no)
218 fi
219
220 # With demangler in GNU ld
221 AC_ARG_WITH(demangler-in-ld,
222 [  --with-demangler-in-ld  try to use demangler in GNU ld.],
223 demangler_in_ld="$with_demangler_in_ld",
224 demangler_in_ld=no)
225
226 # ----------------------
227 # Find default assembler
228 # ----------------------
229
230 # With GNU as
231 AC_ARG_WITH(gnu-as,
232 [  --with-gnu-as           arrange to work with GNU as],
233 gas_flag="$with_gnu_as",
234 gas_flag=no)
235
236 AC_ARG_WITH(as,
237 [  --with-as               arrange to use the specified as (full pathname)],
238 DEFAULT_ASSEMBLER="$with_as")
239 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
240   if test ! -x "$DEFAULT_ASSEMBLER"; then
241     AC_MSG_ERROR([cannot execute: $DEFAULT_ASSEMBLER: check --with-as or env. var. DEFAULT_ASSEMBLER])
242   elif $DEFAULT_ASSEMBLER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
243     gas_flag=yes
244   fi
245   AC_DEFINE_UNQUOTED(DEFAULT_ASSEMBLER,"$DEFAULT_ASSEMBLER",
246         [Define to enable the use of a default assembler.])
247 fi
248
249 AC_MSG_CHECKING([whether a default assembler was specified])
250 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
251   if test x"$gas_flag" = x"no"; then
252     AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER)])
253   else
254     AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)])
255   fi
256 else
257   AC_MSG_RESULT(no)
258 fi
259
260 # ---------------
261 # Find C compiler
262 # ---------------
263
264 # If a non-executable a.out is present (e.g. created by GNU as above even if
265 # invoked with -v only), the IRIX 6 native ld just overwrites the existing
266 # file, even when creating an executable, so an execution test fails.
267 # Remove possible default executable files to avoid this.
268 #
269 # FIXME: This really belongs into AC_PROG_CC and can be removed once
270 # Autoconf includes it.
271 rm -f a.out a.exe b.out
272
273 # Find the native compiler
274 AC_PROG_CC
275 AM_PROG_CC_C_O
276 # autoconf is lame and doesn't give us any substitution variable for this.
277 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
278   NO_MINUS_C_MINUS_O=yes
279 else
280   OUTPUT_OPTION='-o $@'
281 fi
282 AC_SUBST(NO_MINUS_C_MINUS_O)
283 AC_SUBST(OUTPUT_OPTION)
284
285 # Remove the -O2: for historical reasons, unless bootstrapping we prefer
286 # optimizations to be activated explicitly by the toplevel.
287 case "$CC" in
288   */prev-gcc/xgcc*) ;;
289   *) CFLAGS=`echo $CFLAGS | sed "s/-O[[s0-9]]* *//" ` ;;
290 esac
291 AC_SUBST(CFLAGS)
292
293 # -------------------------
294 # Check C compiler features
295 # -------------------------
296
297 AC_PROG_CPP
298 AC_C_INLINE
299
300 # sizeof(char) is 1 by definition.
301 AC_CHECK_SIZEOF(void *)
302 AC_CHECK_SIZEOF(short)
303 AC_CHECK_SIZEOF(int)
304 AC_CHECK_SIZEOF(long)
305 AC_CHECK_TYPES([long long], [AC_CHECK_SIZEOF(long long)])
306 AC_CHECK_TYPES([__int64], [AC_CHECK_SIZEOF(__int64)])
307
308 # ---------------------
309 # Warnings and checking
310 # ---------------------
311
312 # Check $CC warning features (if it's GCC).
313 # We want to use -pedantic, but we don't want warnings about
314 # * 'long long'
315 # * variadic macros
316 # * overlong strings
317 # So, we only use -pedantic if we can disable those warnings.
318
319 AC_CACHE_CHECK(
320   [whether ${CC} accepts -Wno-long-long],
321   [ac_cv_prog_cc_w_no_long_long],
322   [save_CFLAGS="$CFLAGS"
323   CFLAGS="-Wno-long-long"
324   AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])],
325                     [ac_cv_prog_cc_w_no_long_long=yes],
326                     [ac_cv_prog_cc_w_no_long_long=no])
327   CFLAGS="$save_CFLAGS"
328   ])
329
330 AC_CACHE_CHECK(
331   [whether ${CC} accepts -Wno-variadic-macros],
332   [ac_cv_prog_cc_w_no_variadic_macros],
333   [save_CFLAGS="$CFLAGS"
334   CFLAGS="-Wno-variadic-macros"
335   AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])],
336                     [ac_cv_prog_cc_w_no_variadic_macros=yes],
337                     [ac_cv_prog_cc_w_no_variadic_macros=no])
338   CFLAGS="$save_CFLAGS"
339   ])
340
341 AC_CACHE_CHECK(
342   [whether ${CC} accepts -Wno-overlength-strings],
343   [ac_cv_prog_cc_w_no_overlength_strings],
344   [save_CFLAGS="$CFLAGS"
345   CFLAGS="-Wno-overlength-strings"
346   AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])],
347                     [ac_cv_prog_cc_w_no_overlength_strings=yes],
348                     [ac_cv_prog_cc_w_no_overlength_strings=no])
349   CFLAGS="$save_CFLAGS"
350   ])
351
352 strict_warn=
353 if test $ac_cv_prog_cc_w_no_long_long = yes \
354    && test $ac_cv_prog_cc_w_no_variadic_macros = yes \
355    && test $ac_cv_prog_cc_w_no_overlength_strings = yes ; then
356   strict_warn="-pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings"
357 fi
358
359 # Add -Wold-style-definition if it's accepted
360 AC_CACHE_CHECK(
361   [whether ${CC} accepts -Wold-style-definition],
362   [ac_cv_prog_cc_w_old_style_definition],
363   [save_CFLAGS="$CFLAGS"
364   CFLAGS="-Wold-style-definition"
365   AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])],
366                     [ac_cv_prog_cc_w_old_style_definition=yes],
367                     [ac_cv_prog_cc_w_old_style_definition=no])
368   CFLAGS="$save_CFLAGS"
369   ])
370 if test $ac_cv_prog_cc_w_old_style_definition = yes ; then
371   strict_warn="${strict_warn} -Wold-style-definition"
372 fi
373
374 # Add -Wmissing-format-attribute if it's accepted
375 AC_CACHE_CHECK(
376   [whether ${CC} accepts -Wmissing-format-attribute],
377   [ac_cv_prog_cc_w_missing_format_attribute],
378   [save_CFLAGS="$CFLAGS"
379   CFLAGS="-Wmissing-format-attribute"
380   AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])],
381                     [ac_cv_prog_cc_w_missing_format_attribute=yes],
382                     [ac_cv_prog_cc_w_missing_format_attribute=no])
383   CFLAGS="$save_CFLAGS"
384   ])
385 if test $ac_cv_prog_cc_w_missing_format_attribute = yes ; then
386   strict_warn="${strict_warn} -Wmissing-format-attribute"
387 fi
388
389 # Enable -Werror, period.
390 AC_ARG_ENABLE(werror_always, 
391 [  --enable-werror-always         enable -Werror always], [],
392 [enable_werror_always=no])
393 if test x${enable_werror_always} = xyes ; then
394   strict_warn="${strict_warn} -Werror"
395 fi
396 AC_SUBST(strict_warn)
397
398 # Get C++ compatibility warning flag, if supported.
399 AC_CACHE_CHECK(
400   [whether ${CC} accepts -Wc++-compat],
401   [ac_cv_prog_cc_w_cxx_compat],
402   [save_CFLAGS="$CFLAGS"
403   CFLAGS="-Wc++-compat"
404   AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])],
405                     [ac_cv_prog_cc_w_cxx_compat=yes],
406                     [ac_cv_prog_cc_w_cxx_compat=no])
407   CFLAGS="$save_CFLAGS"
408   ])
409 if test x${ac_cv_prog_cc_w_cxx_compat} = xyes; then
410   cxx_compat_warn="-Wc++-compat"
411 fi
412 AC_SUBST(cxx_compat_warn)
413
414
415 # If the native compiler is GCC, we can enable warnings even in stage1.  
416 # That's useful for people building cross-compilers, or just running a
417 # quick `make'.
418 warn_cflags=
419 if test "x$GCC" = "xyes"; then
420   warn_cflags='$(GCC_WARN_CFLAGS)'
421 fi
422 AC_SUBST(warn_cflags)
423
424 # Enable expensive internal checks
425 is_release=
426 if test x"`cat $srcdir/DEV-PHASE`" != xexperimental; then
427   is_release=yes
428 fi
429
430 AC_ARG_ENABLE(checking,
431 [  --enable-checking[=LIST]
432                           enable expensive run-time checks.  With LIST,
433                           enable only specific categories of checks.
434                           Categories are: yes,no,all,none,release.
435                           Flags are: assert,fold,gc,gcac,misc,
436                           rtlflag,rtl,runtime,tree,valgrind.],
437 [ac_checking_flags="${enableval}"],[
438 # Determine the default checks.
439 if test x$is_release = x ; then
440   ac_checking_flags=yes
441 else
442   ac_checking_flags=release
443 fi])
444 ac_assert_checking=1
445 ac_checking=
446 ac_fold_checking=
447 ac_gc_checking=
448 ac_gc_always_collect=
449 ac_rtl_checking=
450 ac_rtlflag_checking=
451 ac_runtime_checking=1
452 ac_tree_checking=
453 ac_valgrind_checking=
454 IFS="${IFS=     }"; ac_save_IFS="$IFS"; IFS="$IFS,"
455 for check in $ac_checking_flags
456 do
457         case $check in
458         # these set all the flags to specific states
459         yes)            ac_assert_checking=1 ; ac_checking=1 ;
460                         ac_fold_checking= ; ac_gc_checking=1 ;
461                         ac_gc_always_collect= ; ac_rtl_checking= ;
462                         ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
463                         ac_tree_checking=1 ; ac_valgrind_checking= ;;
464         no|none)        ac_assert_checking= ; ac_checking= ;
465                         ac_fold_checking= ; ac_gc_checking= ;
466                         ac_gc_always_collect= ; ac_rtl_checking= ;
467                         ac_rtlflag_checking= ; ac_runtime_checking= ;
468                         ac_tree_checking= ; ac_valgrind_checking= ;;
469         all)            ac_assert_checking=1 ; ac_checking=1 ;
470                         ac_fold_checking=1 ; ac_gc_checking=1 ;
471                         ac_gc_always_collect=1 ; ac_rtl_checking=1 ;
472                         ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
473                         ac_tree_checking=1 ; ac_valgrind_checking= ;;
474         release)        ac_assert_checking=1 ; ac_checking= ;
475                         ac_fold_checking= ; ac_gc_checking= ;
476                         ac_gc_always_collect= ; ac_rtl_checking= ;
477                         ac_rtlflag_checking= ; ac_runtime_checking=1 ;
478                         ac_tree_checking= ; ac_valgrind_checking= ;;
479         # these enable particular checks
480         assert)         ac_assert_checking=1 ;;
481         fold)           ac_fold_checking=1 ;;
482         gc)             ac_gc_checking=1 ;;
483         gcac)           ac_gc_always_collect=1 ;;
484         misc)           ac_checking=1 ;;
485         rtl)            ac_rtl_checking=1 ;;
486         rtlflag)        ac_rtlflag_checking=1 ;;
487         runtime)        ac_runtime_checking=1 ;;
488         tree)           ac_tree_checking=1 ;;
489         valgrind)       ac_valgrind_checking=1 ;;
490         *)      AC_MSG_ERROR(unknown check category $check) ;;
491         esac
492 done
493 IFS="$ac_save_IFS"
494
495 nocommon_flag=""
496 if test x$ac_checking != x ; then
497   AC_DEFINE(ENABLE_CHECKING, 1,
498 [Define if you want more run-time sanity checks.  This one gets a grab
499    bag of miscellaneous but relatively cheap checks.])
500   nocommon_flag=-fno-common
501 fi
502 AC_SUBST(nocommon_flag)
503 if test x$ac_assert_checking != x ; then
504   AC_DEFINE(ENABLE_ASSERT_CHECKING, 1,
505 [Define if you want assertions enabled.  This is a cheap check.])
506 fi
507 GCC_TARGET_TEMPLATE(ENABLE_RUNTIME_CHECKING)
508 if test x$ac_runtime_checking != x ; then
509   AC_DEFINE(ENABLE_RUNTIME_CHECKING, 1,
510 [Define if you want runtime assertions enabled.  This is a cheap check.])
511 fi
512 if test x$ac_tree_checking != x ; then
513   AC_DEFINE(ENABLE_TREE_CHECKING, 1,
514 [Define if you want all operations on trees (the basic data
515    structure of the front ends) to be checked for dynamic type safety
516    at runtime.  This is moderately expensive.  The tree browser debugging
517    routines will also be enabled by this option.
518    ])
519   TREEBROWSER=tree-browser.o
520 fi
521 AC_SUBST(TREEBROWSER)
522 if test x$ac_rtl_checking != x ; then
523   AC_DEFINE(ENABLE_RTL_CHECKING, 1,
524 [Define if you want all operations on RTL (the basic data structure
525    of the optimizer and back end) to be checked for dynamic type safety
526    at runtime.  This is quite expensive.])
527 fi
528 if test x$ac_rtlflag_checking != x ; then
529   AC_DEFINE(ENABLE_RTL_FLAG_CHECKING, 1,
530 [Define if you want RTL flag accesses to be checked against the RTL
531    codes that are supported for each access macro.  This is relatively
532    cheap.])
533 fi
534 if test x$ac_gc_checking != x ; then
535   AC_DEFINE(ENABLE_GC_CHECKING, 1,
536 [Define if you want the garbage collector to do object poisoning and
537    other memory allocation checks.  This is quite expensive.])
538 fi
539 if test x$ac_gc_always_collect != x ; then
540   AC_DEFINE(ENABLE_GC_ALWAYS_COLLECT, 1,
541 [Define if you want the garbage collector to operate in maximally
542    paranoid mode, validating the entire heap and collecting garbage at
543    every opportunity.  This is extremely expensive.])
544 fi
545 if test x$ac_fold_checking != x ; then
546   AC_DEFINE(ENABLE_FOLD_CHECKING, 1,
547 [Define if you want fold checked that it never destructs its argument.
548    This is quite expensive.])
549 fi
550 valgrind_path_defines=
551 valgrind_command=
552
553 dnl # This check AC_REQUIREs various stuff, so it *must not* be inside
554 dnl # an if statement.  This was the source of very frustrating bugs
555 dnl # in converting to autoconf 2.5x!
556 AC_CHECK_HEADER(valgrind.h, have_valgrind_h=yes, have_valgrind_h=no)
557
558 if test x$ac_valgrind_checking != x ; then
559   # It is certainly possible that there's valgrind but no valgrind.h.
560   # GCC relies on making annotations so we must have both.
561   AC_MSG_CHECKING(for VALGRIND_DISCARD in <valgrind/memcheck.h>)
562   AC_PREPROC_IFELSE([AC_LANG_SOURCE(
563     [[#include <valgrind/memcheck.h>
564 #ifndef VALGRIND_DISCARD
565 #error VALGRIND_DISCARD not defined
566 #endif]])],
567   [gcc_cv_header_valgrind_memcheck_h=yes],
568   [gcc_cv_header_valgrind_memcheck_h=no])
569   AC_MSG_RESULT($gcc_cv_header_valgrind_memcheck_h)
570   AC_MSG_CHECKING(for VALGRIND_DISCARD in <memcheck.h>)
571   AC_PREPROC_IFELSE([AC_LANG_SOURCE(
572     [[#include <memcheck.h>
573 #ifndef VALGRIND_DISCARD
574 #error VALGRIND_DISCARD not defined
575 #endif]])],
576   [gcc_cv_header_memcheck_h=yes],
577   [gcc_cv_header_memcheck_h=no])
578   AC_MSG_RESULT($gcc_cv_header_memcheck_h)
579   AM_PATH_PROG_WITH_TEST(valgrind_path, valgrind,
580         [$ac_dir/$ac_word --version | grep valgrind- >/dev/null 2>&1])
581   if test "x$valgrind_path" = "x" \
582     || (test $have_valgrind_h = no \
583         && test $gcc_cv_header_memcheck_h = no \
584         && test $gcc_cv_header_valgrind_memcheck_h = no); then
585         AC_MSG_ERROR([*** Can't find both valgrind and valgrind/memcheck.h, memcheck.h or valgrind.h])
586   fi
587   valgrind_path_defines=-DVALGRIND_PATH='\"'$valgrind_path'\"'
588   valgrind_command="$valgrind_path -q"
589   AC_DEFINE(ENABLE_VALGRIND_CHECKING, 1,
590 [Define if you want to run subprograms and generated programs
591    through valgrind (a memory checker).  This is extremely expensive.])
592   if test $gcc_cv_header_valgrind_memcheck_h = yes; then
593     AC_DEFINE(HAVE_VALGRIND_MEMCHECK_H, 1,
594         [Define if valgrind's valgrind/memcheck.h header is installed.])
595   fi
596   if test $gcc_cv_header_memcheck_h = yes; then
597     AC_DEFINE(HAVE_MEMCHECK_H, 1,
598         [Define if valgrind's memcheck.h header is installed.])
599   fi
600 fi
601 AC_SUBST(valgrind_path_defines)
602 AC_SUBST(valgrind_command)
603
604 AC_ARG_ENABLE(mapped-location,
605 [  --enable-mapped-location   location_t is fileline integer cookie],,
606 enable_mapped_location=no)
607
608 if test "$enable_mapped_location" = yes ; then
609   AC_DEFINE(USE_MAPPED_LOCATION, 1,
610 [Define if location_t is fileline integer cookie.])
611 fi
612
613 # Enable code coverage collection
614 AC_ARG_ENABLE(coverage,
615 [  --enable-coverage[=LEVEL]
616                           enable compiler's code coverage collection.
617                           Use to measure compiler performance and locate
618                           unused parts of the compiler. With LEVEL, specify
619                           optimization. Values are opt, noopt,
620                           default is noopt],
621 [case "${enableval}" in
622   yes|noopt)
623     coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O0"
624     ;;
625   opt)
626     coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O2"
627     ;;
628   no)
629     # a.k.a. --disable-coverage
630     coverage_flags=""
631     ;;
632   *)
633     AC_MSG_ERROR(unknown coverage setting $enableval)
634     ;;
635 esac],
636 [coverage_flags=""])
637 AC_SUBST(coverage_flags)
638
639 AC_ARG_ENABLE(gather-detailed-mem-stats, 
640 [  --enable-gather-detailed-mem-stats         enable detailed memory allocation stats gathering], [],
641 [enable_gather_detailed_mem_stats=no])
642 if test x$enable_gather_detailed_mem_stats = xyes ; then
643   AC_DEFINE(GATHER_STATISTICS, 1,
644         [Define to enable detailed memory allocation stats gathering.])
645 fi
646
647 # -------------------------------
648 # Miscenalleous configure options
649 # -------------------------------
650
651 # With stabs
652 AC_ARG_WITH(stabs,
653 [  --with-stabs            arrange to use stabs instead of host debug format],
654 stabs="$with_stabs",
655 stabs=no)
656
657 # Determine whether or not multilibs are enabled.
658 AC_ARG_ENABLE(multilib,
659 [  --enable-multilib       enable library support for multiple ABIs],
660 [], [enable_multilib=yes])
661 AC_SUBST(enable_multilib)
662
663 # Enable __cxa_atexit for C++.
664 AC_ARG_ENABLE(__cxa_atexit,
665 [  --enable-__cxa_atexit   enable __cxa_atexit for C++],
666 [], [])
667
668 # Enable C extension for decimal float if target supports it.
669 AC_ARG_ENABLE(decimal-float,
670 [  --enable-decimal-float={no,yes,bid,dpd}
671                         enable decimal float extension to C.  Selecting 'bid'
672                         or 'dpd' choses which decimal floating point format
673                         to use],
674 [
675   case $enable_decimal_float in
676     yes | no | bid | dpd) ;;
677     *) AC_MSG_ERROR(['$enable_decimal_float' is an invalid value for --enable-decimal-float.
678 Valid choices are 'yes', 'bid', 'dpd', and 'no'.]) ;;
679   esac
680 ],
681 [
682   case $target in
683     powerpc*-*-linux* | i?86*-*-linux* | x86_64*-*-linux*)
684       enable_decimal_float=yes
685       ;;
686     *)
687       AC_MSG_WARN(decimal float is not supported for this target, ignored)
688       enable_decimal_float=no
689       ;;
690   esac
691 ])
692
693 dfp=`if test $enable_decimal_float != no; then echo 1; else echo 0; fi`
694 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_FLOAT, $dfp,
695 [Define to 1 to enable decimal float extension to C.])
696
697 # x86's use BID format instead of DPD
698 case x$enable_decimal_float in
699   xyes)
700     case $target in
701       i?86*-*-linux* | x86_64*-*-linux*)
702         enable_decimal_float=bid
703         ;;
704       *)
705         enable_decimal_float=dpd
706         ;;
707     esac
708     ;;
709   xno)
710     # ENABLE_DECIMAL_FLOAT is set to 0. But we have to have proper
711     # dependency on libdecnumber.
712     enable_decimal_float=dpd
713     ;;
714 esac
715 AC_SUBST(enable_decimal_float)
716
717 bid=`if test $enable_decimal_float = bid; then echo 1; else echo 0; fi`
718 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_BID_FORMAT, $bid,
719 [Define to 1 to specify that we are using the BID decimal floating
720 point format instead of DPD])
721
722 # Enable threads
723 # Pass with no value to take the default
724 # Pass with a value to specify a thread package
725 AC_ARG_ENABLE(threads,
726 [  --enable-threads        enable thread usage for target GCC
727   --enable-threads=LIB    use LIB thread package for target GCC],,
728 [enable_threads=''])
729
730 AC_ARG_ENABLE(tls,
731 [  --enable-tls            enable or disable generation of tls code
732                           overriding the assembler check for tls support],
733 [
734   case $enable_tls in
735     yes | no) ;;
736     *) AC_MSG_ERROR(['$enable_tls' is an invalid value for --enable-tls.
737 Valid choices are 'yes' and 'no'.]) ;;
738   esac
739 ], [enable_tls=''])
740
741 AC_ARG_ENABLE(objc-gc,
742 [  --enable-objc-gc       enable the use of Boehm's garbage collector with
743                           the GNU Objective-C runtime],
744 if test x$enable_objc_gc = xno; then
745         objc_boehm_gc=''
746 else
747         objc_boehm_gc=1
748 fi,
749 objc_boehm_gc='')
750
751 AC_ARG_WITH(dwarf2,
752 [  --with-dwarf2           force the default debug format to be DWARF 2],
753 dwarf2="$with_dwarf2",
754 dwarf2=no)
755
756 AC_ARG_ENABLE(shared,
757 [  --disable-shared        don't provide a shared libgcc],
758 [
759   case $enable_shared in
760   yes | no) ;;
761   *)
762     enable_shared=no
763     IFS="${IFS=         }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
764     for pkg in $enableval; do
765       if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
766         enable_shared=yes
767       fi
768     done
769     IFS="$ac_save_ifs"
770     ;;
771   esac
772 ], [enable_shared=yes])
773 AC_SUBST(enable_shared)
774
775 AC_ARG_WITH(build-sysroot, 
776   [  --with-build-sysroot=sysroot
777                           use sysroot as the system root during the build])
778
779 AC_ARG_WITH(sysroot,
780 [  --with-sysroot[=DIR] Search for usr/lib, usr/include, et al, within DIR.],
781 [
782  case ${with_sysroot} in
783  yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;;
784  *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
785  esac
786    
787  TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
788  CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
789         
790  if test "x$exec_prefix" = xNONE; then
791   if test "x$prefix" = xNONE; then
792    test_prefix=/usr/local
793   else
794    test_prefix=$prefix
795   fi
796  else
797   test_prefix=$exec_prefix
798  fi
799  case ${TARGET_SYSTEM_ROOT} in
800  "${test_prefix}"|"${test_prefix}/"*|\
801  '${exec_prefix}'|'${exec_prefix}/'*)
802    t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
803    TARGET_SYSTEM_ROOT_DEFINE="$t"
804    ;;
805  esac
806 ], [
807  TARGET_SYSTEM_ROOT=
808  TARGET_SYSTEM_ROOT_DEFINE=
809  CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
810 ])
811 AC_SUBST(TARGET_SYSTEM_ROOT)
812 AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
813 AC_SUBST(CROSS_SYSTEM_HEADER_DIR)
814
815 # Build with intermodule optimisations
816 AC_ARG_ENABLE(intermodule,
817 [  --enable-intermodule    build the compiler in one step],
818 [case ${enable_intermodule} in
819   yes) onestep="-onestep";;
820   *) onestep="";;
821 esac],
822 [onestep=""])
823 AC_SUBST(onestep)
824
825 # Sanity check enable_languages in case someone does not run the toplevel
826 # configure # script.
827 AC_ARG_ENABLE(languages,
828 [  --enable-languages=LIST specify which front-ends to build],
829 [case ,${enable_languages}, in
830        ,,|,yes,)
831                 # go safe -- we cannot be much sure without the toplevel
832                 # configure's
833                 # analysis of which target libs are present and usable
834                 enable_languages=c
835                 ;;
836          *,all,*)
837                 AC_MSG_ERROR([only the toplevel supports --enable-languages=all])
838                 ;;
839         *,c,*)
840                 ;;
841         *)
842                 enable_languages=c,${enable_languages}
843                 ;;
844 esac],
845 [enable_languages=c])
846
847 # Used by documentation targets
848 AC_SUBST(datarootdir)
849 AC_SUBST(docdir)
850 AC_SUBST(htmldir)
851
852 # -------------------------
853 # Checks for other programs
854 # -------------------------
855
856 AC_PROG_MAKE_SET
857
858 # Find some useful tools
859 AC_PROG_AWK
860 # We need awk to create options.c and options.h.
861 # Bail out if it's missing.
862 case ${AWK} in
863   "") AC_MSG_ERROR([can't build without awk, bailing out]) ;;
864 esac
865
866 gcc_AC_PROG_LN_S
867 ACX_PROG_LN($LN_S)
868 AC_PROG_RANLIB
869 case "${host}" in
870 *-*-darwin*)
871   # By default, the Darwin ranlib will not treat common symbols as
872   # definitions when  building the archive table of contents.  Other 
873   # ranlibs do that; pass an option to the Darwin ranlib that makes
874   # it behave similarly.
875   ranlib_flags="-c" 
876   ;;
877 *)
878   ranlib_flags=""
879 esac
880 AC_SUBST(ranlib_flags)
881      
882 gcc_AC_PROG_INSTALL
883
884 # See if cmp has --ignore-initial.
885 gcc_AC_PROG_CMP_IGNORE_INITIAL
886
887 # See if we have the mktemp command.
888 AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
889
890 MISSING="${CONFIG_SHELL-/bin/sh} $srcdir/../missing"
891
892 # See if makeinfo has been installed and is modern enough
893 # that we can use it.
894 gcc_AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
895   [GNU texinfo.* \([0-9][0-9.]*\)],
896   [4.[4-9]*])
897 if test $gcc_cv_prog_makeinfo_modern = no; then
898   MAKEINFO="$MISSING makeinfo"
899   AC_MSG_WARN([
900 *** Makeinfo is missing or too old.
901 *** Info documentation will not be built.])
902   BUILD_INFO=
903 else
904   BUILD_INFO=info
905 fi
906 AC_SUBST(BUILD_INFO)
907
908 # Is pod2man recent enough to regenerate manpages?
909 AC_MSG_CHECKING([for recent Pod::Man])
910 if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
911   AC_MSG_RESULT(yes)
912   GENERATED_MANPAGES=generated-manpages
913 else
914   AC_MSG_RESULT(no)
915   GENERATED_MANPAGES=
916 fi
917 AC_SUBST(GENERATED_MANPAGES)
918
919 # How about lex?
920 dnl Don't use AC_PROG_LEX; we insist on flex.
921 dnl LEXLIB is not useful in gcc.
922 AC_CHECK_PROGS([FLEX], flex, [$MISSING flex])
923
924 # Bison?
925 AC_CHECK_PROGS([BISON], bison, [$MISSING bison])
926
927 # Binutils are not build modules, unlike bison/flex/makeinfo.  So we
928 # check for build == host before using them.
929
930 # NM
931 if test x${build} = x${host} && test -f $srcdir/../binutils/nm.c \
932   && test -d ../binutils ; then
933   NM='$(objdir)/../binutils/nm-new'
934 else
935   AC_CHECK_PROG(NM, nm, nm, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing nm)
936 fi
937
938 # AR
939 if test x${build} = x${host} && test -f $srcdir/../binutils/ar.c \
940   && test -d ../binutils ; then
941   AR='$(objdir)/../binutils/ar'
942 else
943   AC_CHECK_PROG(AR, ar, ar, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing ar)
944 fi
945
946
947 # --------------------
948 # Checks for C headers
949 # --------------------
950
951 AC_MSG_CHECKING(for GNU C library)
952 AC_CACHE_VAL(gcc_cv_glibc,
953 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
954   [[#include <features.h>]], [[
955 #if ! (defined __GLIBC__ || defined __GNU_LIBRARY__)
956 #error Not a GNU C library system
957 #endif]])],
958   [gcc_cv_glibc=yes],
959   [gcc_cv_glibc=no])])
960 AC_MSG_RESULT($gcc_cv_glibc)
961 if test $gcc_cv_glibc = yes; then
962   AC_DEFINE(_GNU_SOURCE, 1, [Always define this when using the GNU C Library])
963 fi
964
965 # Need to reject headers which give warnings, so that the -Werror bootstrap
966 # works later. *sigh*  This needs to come before all header checks.
967 AC_PROG_CPP_WERROR
968
969 AC_HEADER_STDC
970 AC_HEADER_TIME
971 ACX_HEADER_STRING
972 AC_HEADER_SYS_WAIT
973 AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
974                  fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
975                  sys/resource.h sys/param.h sys/times.h sys/stat.h \
976                  direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
977
978 # Check for thread headers.
979 AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
980 AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
981
982 # These tests can't be done till we know if we have limits.h.
983 gcc_AC_C_CHAR_BIT
984 AC_C_BIGENDIAN
985
986 # --------
987 # UNSORTED
988 # --------
989
990
991 # These libraries may be used by collect2.
992 # We may need a special search path to get them linked.
993 AC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs,
994 [save_LIBS="$LIBS"
995 for libs in '' -lld -lmld \
996                 '-L/usr/lib/cmplrs/cc2.11 -lmld' \
997                 '-L/usr/lib/cmplrs/cc3.11 -lmld'
998 do
999         LIBS="$libs"
1000         AC_TRY_LINK_FUNC(ldopen,
1001                 [gcc_cv_collect2_libs="$libs"; break])
1002 done
1003 LIBS="$save_LIBS"
1004 test -z "$gcc_cv_collect2_libs" && gcc_cv_collect2_libs='none required'])
1005 case $gcc_cv_collect2_libs in
1006         "none required")        ;;
1007         *)      COLLECT2_LIBS=$gcc_cv_collect2_libs ;;
1008 esac
1009 AC_SUBST(COLLECT2_LIBS)
1010
1011 # When building Ada code on Alpha, we need exc_resume which is usually in
1012 # -lexc.  So test for it.
1013 save_LIBS="$LIBS"
1014 LIBS=
1015 AC_SEARCH_LIBS(exc_resume, exc)
1016 GNAT_LIBEXC="$LIBS"
1017 LIBS="$save_LIBS"
1018 AC_SUBST(GNAT_LIBEXC)
1019
1020 # Some systems put ldexp and frexp in libm instead of libc; assume
1021 # they're both in the same place.  jcf-dump needs them.
1022 save_LIBS="$LIBS"
1023 LIBS=
1024 AC_SEARCH_LIBS(ldexp, m)
1025 LDEXP_LIB="$LIBS"
1026 LIBS="$save_LIBS"
1027 AC_SUBST(LDEXP_LIB)
1028
1029 # Use <inttypes.h> only if it exists,
1030 # doesn't clash with <sys/types.h>, and declares intmax_t.
1031 AC_MSG_CHECKING(for inttypes.h)
1032 AC_CACHE_VAL(gcc_cv_header_inttypes_h,
1033 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1034 [[#include <sys/types.h>
1035 #include <inttypes.h>]],
1036   [[intmax_t i = -1;]])],
1037   [gcc_cv_header_inttypes_h=yes],
1038   [gcc_cv_header_inttypes_h=no])])
1039 AC_MSG_RESULT($gcc_cv_header_inttypes_h)
1040 if test $gcc_cv_header_inttypes_h = yes; then
1041   AC_DEFINE(HAVE_INTTYPES_H, 1,
1042         [Define if you have a working <inttypes.h> header file.])
1043 fi
1044
1045 dnl Disabled until we have a complete test for buggy enum bitfields.
1046 dnl gcc_AC_C_ENUM_BF_UNSIGNED
1047
1048 define(gcc_UNLOCKED_FUNCS, clearerr_unlocked feof_unlocked dnl
1049   ferror_unlocked fflush_unlocked fgetc_unlocked fgets_unlocked dnl
1050   fileno_unlocked fprintf_unlocked fputc_unlocked fputs_unlocked dnl
1051   fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl
1052   putchar_unlocked putc_unlocked)
1053 AC_CHECK_FUNCS(times clock kill getrlimit setrlimit atoll atoq \
1054         sysconf strsignal getrusage nl_langinfo scandir alphasort \
1055         gettimeofday mbstowcs wcswidth mmap mincore setlocale \
1056         gcc_UNLOCKED_FUNCS)
1057
1058 if test x$ac_cv_func_mbstowcs = xyes; then
1059   AC_CACHE_CHECK(whether mbstowcs works, gcc_cv_func_mbstowcs_works,
1060 [    AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
1061 int main()
1062 {
1063   mbstowcs(0, "", 0);
1064   return 0;
1065 }]])],
1066     [gcc_cv_func_mbstowcs_works=yes],
1067     [gcc_cv_func_mbstowcs_works=no],
1068     [gcc_cv_func_mbstowcs_works=yes])])
1069   if test x$gcc_cv_func_mbstowcs_works = xyes; then
1070     AC_DEFINE(HAVE_WORKING_MBSTOWCS, 1,
1071   [Define this macro if mbstowcs does not crash when its
1072    first argument is NULL.])
1073   fi
1074 fi
1075
1076 AC_CHECK_TYPE(ssize_t, int)
1077
1078 # Try to determine the array type of the second argument of getgroups
1079 # for the target system (int or gid_t).
1080 AC_TYPE_GETGROUPS
1081 if test "${target}" = "${build}"; then
1082   TARGET_GETGROUPS_T=$ac_cv_type_getgroups
1083 else
1084   case "${target}" in
1085         # This condition may need some tweaking.  It should include all
1086         # targets where the array type of the second argument of getgroups
1087         # is int and the type of gid_t is not equivalent to int.
1088         *-*-sunos* | *-*-ultrix*)
1089                 TARGET_GETGROUPS_T=int
1090                 ;;
1091         *)
1092                 TARGET_GETGROUPS_T=gid_t
1093                 ;;
1094   esac
1095 fi
1096 AC_SUBST(TARGET_GETGROUPS_T)
1097
1098 gcc_AC_FUNC_MMAP_BLACKLIST
1099
1100 case "${host}" in
1101 *-*-*vms*)
1102   # Under VMS, vfork works very differently than on Unix. The standard test 
1103   # won't work, and it isn't easily adaptable. It makes more sense to
1104   # just force it.
1105   ac_cv_func_vfork_works=yes
1106   ;;
1107 esac
1108 AC_FUNC_FORK
1109
1110 AM_ICONV
1111 # Until we have in-tree GNU iconv:
1112 LIBICONV_DEP=
1113 AC_SUBST(LIBICONV_DEP)
1114
1115 AM_LC_MESSAGES
1116
1117 AM_LANGINFO_CODESET
1118
1119 # We will need to find libiberty.h and ansidecl.h
1120 saved_CFLAGS="$CFLAGS"
1121 CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include"
1122 gcc_AC_CHECK_DECLS(getenv atol asprintf sbrk abort atof getcwd getwd \
1123         strsignal strstr strverscmp \
1124         errno snprintf vsnprintf vasprintf malloc realloc calloc \
1125         free basename getopt clock getpagesize gcc_UNLOCKED_FUNCS, , ,[
1126 #include "ansidecl.h"
1127 #include "system.h"])
1128
1129 gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
1130 #include "ansidecl.h"
1131 #include "system.h"
1132 #ifdef HAVE_SYS_RESOURCE_H
1133 #include <sys/resource.h>
1134 #endif
1135 ])
1136
1137 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1138 #include "ansidecl.h"
1139 #include "system.h"
1140 #ifdef HAVE_SYS_RESOURCE_H
1141 #include <sys/resource.h>
1142 #endif
1143 ]], [[rlim_t l = 0;]])],[],[AC_DEFINE([rlim_t],[long],
1144 [Define to \`long' if <sys/resource.h> doesn't define.])])
1145
1146 # On AIX 5.2, <ldfcn.h> conflicts with <fcntl.h>, as both define incompatible
1147 # FREAD and FWRITE macros.  Fortunately, for GCC's single usage of ldgetname
1148 # in collect2.c, <fcntl.h> isn't visible, but the configure test below needs
1149 # to undef these macros to get the correct value for HAVE_DECL_LDGETNAME.
1150 gcc_AC_CHECK_DECLS(ldgetname, , ,[
1151 #include "ansidecl.h"
1152 #include "system.h"
1153 #ifdef HAVE_LDFCN_H
1154 #undef FREAD
1155 #undef FWRITE
1156 #include <ldfcn.h>
1157 #endif
1158 ])
1159
1160 gcc_AC_CHECK_DECLS(times, , ,[
1161 #include "ansidecl.h"
1162 #include "system.h"
1163 #ifdef HAVE_SYS_TIMES_H
1164 #include <sys/times.h>
1165 #endif
1166 ])
1167
1168 gcc_AC_CHECK_DECLS(sigaltstack, , ,[
1169 #include "ansidecl.h"
1170 #include "system.h"
1171 #include <signal.h>
1172 ])
1173
1174 # More time-related stuff.
1175 AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
1176 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1177 #include "ansidecl.h"
1178 #include "system.h"
1179 #ifdef HAVE_SYS_TIMES_H
1180 #include <sys/times.h>
1181 #endif
1182 ]], [[struct tms tms;]])],[ac_cv_struct_tms=yes],[ac_cv_struct_tms=no])])
1183 if test $ac_cv_struct_tms = yes; then
1184   AC_DEFINE(HAVE_STRUCT_TMS, 1,
1185   [Define if <sys/times.h> defines struct tms.])
1186 fi
1187
1188 # use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
1189 # revisit after autoconf 2.50.
1190 AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
1191 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1192 #include "ansidecl.h"
1193 #include "system.h"
1194 ]], [[clock_t x;]])],[gcc_cv_type_clock_t=yes],[gcc_cv_type_clock_t=no])])
1195 if test $gcc_cv_type_clock_t = yes; then
1196   AC_DEFINE(HAVE_CLOCK_T, 1,
1197   [Define if <time.h> defines clock_t.])
1198 fi
1199
1200 # Restore CFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
1201 CFLAGS="$saved_CFLAGS"
1202
1203 gcc_AC_INITFINI_ARRAY
1204
1205 # mkdir takes a single argument on some systems. 
1206 gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
1207
1208 # File extensions
1209 manext='.1'
1210 objext='.o'
1211 AC_SUBST(manext)
1212 AC_SUBST(objext)
1213
1214 # With Setjmp/Longjmp based exception handling.
1215 AC_ARG_ENABLE(sjlj-exceptions,
1216 [  --enable-sjlj-exceptions
1217                           arrange to use setjmp/longjmp exception handling],
1218 [sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi`
1219 AC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj,
1220   [Define 0/1 to force the choice for exception handling model.])])
1221
1222 # For platforms with the unwind ABI which includes an unwind library,
1223 # libunwind, we can choose to use the system libunwind.
1224 AC_ARG_WITH(system-libunwind,
1225 [  --with-system-libunwind use installed libunwind])
1226
1227 # config.gcc also contains tests of with_system_libunwind.
1228 if test x$with_system_libunwind = xyes; then
1229         AC_DEFINE(HAVE_GETIPINFO, 1,
1230 [Define to 1 if system unwind library has _Unwind_GetIPInfo.])
1231 fi
1232
1233 # --------------------------------------------------------
1234 # Build, host, and target specific configuration fragments
1235 # --------------------------------------------------------
1236
1237 # Collect build-machine-specific information.
1238 . ${srcdir}/config.build
1239
1240 # Collect host-machine-specific information.
1241 . ${srcdir}/config.host
1242
1243 target_gtfiles=
1244
1245 # Collect target-machine-specific information.
1246 . ${srcdir}/config.gcc
1247
1248 extra_objs="${host_extra_objs} ${extra_objs}"
1249 extra_gcc_objs="${host_extra_gcc_objs} ${extra_gcc_objs}"
1250
1251 # Default the target-machine variables that were not explicitly set.
1252 if test x"$tm_file" = x
1253 then tm_file=$cpu_type/$cpu_type.h; fi
1254
1255 if test x"$extra_headers" = x
1256 then extra_headers=; fi
1257
1258 if test x$md_file = x
1259 then md_file=$cpu_type/$cpu_type.md; fi
1260
1261 if test x$out_file = x
1262 then out_file=$cpu_type/$cpu_type.c; fi
1263
1264 if test x"$tmake_file" = x
1265 then tmake_file=$cpu_type/t-$cpu_type
1266 fi
1267
1268 if test x"$dwarf2" = xyes
1269 then tm_file="$tm_file tm-dwarf2.h"
1270 fi
1271
1272 # Say what files are being used for the output code and MD file.
1273 echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
1274 echo "Using \`$srcdir/config/$md_file' as machine description file."
1275
1276 # If any of the xm_file variables contain nonexistent files, warn
1277 # about them and drop them.
1278
1279 bx=
1280 for x in $build_xm_file; do
1281   if    test -f $srcdir/config/$x
1282   then      bx="$bx $x"
1283   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1284   fi
1285 done
1286 build_xm_file="$bx"
1287
1288 hx=
1289 for x in $host_xm_file; do
1290   if    test -f $srcdir/config/$x
1291   then      hx="$hx $x"
1292   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1293   fi
1294 done
1295 host_xm_file="$hx"
1296
1297 tx=
1298 for x in $xm_file; do
1299   if    test -f $srcdir/config/$x
1300   then      tx="$tx $x"
1301   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1302   fi
1303 done
1304 xm_file="$tx"
1305
1306 count=a
1307 for f in $tm_file; do
1308         count=${count}x
1309 done
1310 if test $count = ax; then
1311         echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
1312 else
1313         echo "Using the following target machine macro files:"
1314         for f in $tm_file; do
1315                 echo "  $srcdir/config/$f"
1316         done
1317 fi
1318
1319 if test x$need_64bit_hwint = xyes; then
1320         AC_DEFINE(NEED_64BIT_HOST_WIDE_INT, 1,
1321 [Define to 1 if HOST_WIDE_INT must be 64 bits wide (see hwint.h).])
1322 fi
1323
1324 if test x$use_long_long_for_widest_fast_int = xyes; then
1325         AC_DEFINE(USE_LONG_LONG_FOR_WIDEST_FAST_INT, 1,
1326 [Define to 1 if the 'long long' (or '__int64') is wider than 'long' but still
1327 efficiently supported by the host hardware.])
1328 fi
1329
1330 count=a
1331 for f in $host_xm_file; do
1332         count=${count}x
1333 done
1334 if test $count = a; then
1335         :
1336 elif test $count = ax; then
1337         echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
1338 else
1339         echo "Using the following host machine macro files:"
1340         for f in $host_xm_file; do
1341                 echo "  $srcdir/config/$f"
1342         done
1343 fi
1344 echo "Using ${out_host_hook_obj} for host machine hooks."
1345
1346 if test "$host_xm_file" != "$build_xm_file"; then
1347         count=a
1348         for f in $build_xm_file; do
1349                 count=${count}x
1350         done
1351         if test $count = a; then
1352                 :
1353         elif test $count = ax; then
1354                 echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
1355         else
1356                 echo "Using the following build machine macro files:"
1357                 for f in $build_xm_file; do
1358                         echo "  $srcdir/config/$f"
1359                 done
1360         fi
1361 fi
1362
1363 case ${host} in
1364   powerpc*-*-darwin*)
1365     AC_CACHE_CHECK([whether mcontext_t fields have underscores],
1366       gcc_cv_mcontext_underscores,
1367       AC_COMPILE_IFELSE([
1368 #include <sys/cdefs.h>
1369 #include <sys/signal.h>
1370 #include <ucontext.h>
1371 int main() { mcontext_t m; if (m->ss.srr0) return 0; return 0; }
1372 ],
1373         gcc_cv_mcontext_underscores=no, gcc_cv_mcontext_underscores=yes))
1374       if test $gcc_cv_mcontext_underscores = yes; then
1375         AC_DEFINE(HAS_MCONTEXT_T_UNDERSCORES,,dnl
1376           [mcontext_t fields start with __])
1377       fi
1378     ;;
1379 esac
1380
1381 # ---------
1382 # Threading
1383 # ---------
1384
1385 # Check if a valid thread package
1386 case ${enable_threads} in
1387   "" | no)
1388     # No threads
1389     target_thread_file='single'
1390     ;;
1391   yes)
1392     # default
1393     target_thread_file='single'
1394     ;;
1395   aix | dce | gnat | irix | posix | posix95 | rtems | \
1396   single | solaris | vxworks | win32 )
1397     target_thread_file=${enable_threads}
1398     ;;
1399   *)
1400     echo "${enable_threads} is an unknown thread package" 1>&2
1401     exit 1
1402     ;;
1403 esac
1404
1405 if test x${thread_file} = x; then
1406   # No thread file set by target-specific clauses in config.gcc,
1407   # so use file chosen by default logic above
1408   thread_file=${target_thread_file}
1409 fi
1410
1411 # Make gthr-default.h if we have a thread file.
1412 gthread_flags=
1413 if test $thread_file != single; then
1414   rm -f gthr-default.h
1415   echo "#include \"gthr-${thread_file}.h\"" > gthr-default.h
1416   gthread_flags=-DHAVE_GTHR_DEFAULT
1417 fi
1418 AC_SUBST(gthread_flags)
1419
1420 # --------
1421 # UNSORTED
1422 # --------
1423
1424 use_cxa_atexit=no
1425 if test x$enable___cxa_atexit = xyes || \
1426    test x$enable___cxa_atexit = x -a x$default_use_cxa_atexit = xyes; then
1427   if test x$host = x$target; then
1428     case $host in
1429       # mingw32 doesn't have __cxa_atexit but uses atexit registration
1430       # keyed to flag_use_cxa_atexit
1431       *-*-mingw32*)
1432         use_cxa_atexit=yes
1433         ;;
1434       *)
1435         AC_CHECK_FUNC(__cxa_atexit,[use_cxa_atexit=yes],
1436           [echo "__cxa_atexit can't be enabled on this target"])
1437         ;;
1438     esac
1439   else
1440     # We can't check for __cxa_atexit when building a cross, so assume
1441     # it is available 
1442     use_cxa_atexit=yes
1443   fi
1444   if test x$use_cxa_atexit = xyes; then
1445     AC_DEFINE(DEFAULT_USE_CXA_ATEXIT, 2,
1446       [Define if you want to use __cxa_atexit, rather than atexit, to
1447       register C++ destructors for local statics and global objects.
1448       This is essential for fully standards-compliant handling of
1449       destructors, but requires __cxa_atexit in libc.])
1450   fi
1451 fi
1452
1453 use_getipinfo=yes
1454 if test x$with_system_libunwind = xyes; then
1455    if test x$host = x$target; then
1456      AC_SEARCH_LIBS(_Unwind_GetIPInfo, unwind,, [use_getipinfo=no])
1457    fi
1458 fi
1459 GCC_TARGET_TEMPLATE(HAVE_GETIPINFO)
1460 if test x$use_getipinfo = xyes; then
1461    AC_DEFINE(HAVE_GETIPINFO, 1,
1462         [Define to 1 if system unwind library has _Unwind_GetIPInfo.])
1463 else
1464    echo "The system unwind library does not support _Unwind_GetIPInfo."
1465 fi
1466
1467 # Look for a file containing extra machine modes.
1468 if test -n "$extra_modes" && test -f $srcdir/config/$extra_modes; then
1469   extra_modes_file='$(srcdir)'/config/${extra_modes}
1470   AC_SUBST(extra_modes_file)
1471   AC_DEFINE_UNQUOTED(EXTRA_MODES_FILE, "config/$extra_modes",
1472   [Define to the name of a file containing a list of extra machine modes
1473    for this architecture.])
1474 fi
1475
1476 # Convert extra_options into a form suitable for Makefile use.
1477 extra_opt_files=
1478 for f in $extra_options; do
1479   extra_opt_files="$extra_opt_files \$(srcdir)/config/$f"
1480 done
1481 AC_SUBST(extra_opt_files)
1482
1483 # auto-host.h is the file containing items generated by autoconf and is
1484 # the first file included by config.h.
1485 # If host=build, it is correct to have bconfig include auto-host.h
1486 # as well.  If host!=build, we are in error and need to do more 
1487 # work to find out the build config parameters.
1488 if test x$host = x$build
1489 then
1490         build_auto=auto-host.h
1491 else
1492         # We create a subdir, then run autoconf in the subdir.
1493         # To prevent recursion we set host and build for the new
1494         # invocation of configure to the build for this invocation
1495         # of configure. 
1496         tempdir=build.$$
1497         rm -rf $tempdir
1498         mkdir $tempdir
1499         cd $tempdir
1500         case ${srcdir} in
1501         /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
1502         *) realsrcdir=../${srcdir};;
1503         esac
1504         saved_CFLAGS="${CFLAGS}"
1505         CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
1506         ${realsrcdir}/configure \
1507                 --enable-languages=${enable_languages-all} \
1508                 --target=$target_alias --host=$build_alias --build=$build_alias
1509         CFLAGS="${saved_CFLAGS}"
1510
1511         # We just finished tests for the build machine, so rename
1512         # the file auto-build.h in the gcc directory.
1513         mv auto-host.h ../auto-build.h
1514         cd ..
1515         rm -rf $tempdir
1516         build_auto=auto-build.h
1517 fi
1518 AC_SUBST(build_subdir)
1519
1520 tm_file="${tm_file} defaults.h"
1521 tm_p_file="${tm_p_file} tm-preds.h"
1522 host_xm_file="auto-host.h ansidecl.h ${host_xm_file}"
1523 build_xm_file="${build_auto} ansidecl.h ${build_xm_file}"
1524 # We don't want ansidecl.h in target files, write code there in ISO/GNU C.
1525 # put this back in temporarily.
1526 xm_file="auto-host.h ansidecl.h ${xm_file}"
1527
1528 # --------
1529 # UNSORTED
1530 # --------
1531
1532 changequote(,)dnl
1533 # Compile in configure arguments.
1534 if test -f configargs.h ; then
1535         # Being re-configured.
1536         gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'`
1537         gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
1538 else
1539         gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
1540 fi
1541
1542 # Double all backslashes and backslash all quotes to turn
1543 # gcc_config_arguments into a C string.
1544 sed -e 's/\\/\\\\/g; s/"/\\"/g' <<EOF >conftest.out
1545 $gcc_config_arguments
1546 EOF
1547 gcc_config_arguments_str=`cat conftest.out`
1548 rm -f conftest.out
1549
1550 cat > configargs.h <<EOF
1551 /* Generated automatically. */
1552 static const char configuration_arguments[] = "$gcc_config_arguments_str";
1553 static const char thread_model[] = "$thread_file";
1554
1555 static const struct {
1556   const char *name, *value;
1557 } configure_default_options[] = $configure_default_options;
1558 EOF
1559 changequote([,])dnl
1560
1561 # Internationalization
1562 ZW_GNU_GETTEXT_SISTER_DIR
1563
1564 # If LIBINTL contains LIBICONV, then clear LIBICONV so we don't get
1565 # -liconv on the link line twice.
1566 case "$LIBINTL" in *$LIBICONV*)
1567         LIBICONV= ;;
1568 esac
1569
1570 AC_ARG_ENABLE(secureplt,
1571 [  --enable-secureplt      enable -msecure-plt by default for PowerPC],
1572 [], [])
1573
1574 # Windows32 Registry support for specifying GCC installation paths.
1575 AC_ARG_ENABLE(win32-registry,
1576 [  --disable-win32-registry
1577                           disable lookup of installation paths in the
1578                           Registry on Windows hosts
1579   --enable-win32-registry enable registry lookup (default)
1580   --enable-win32-registry=KEY
1581                           use KEY instead of GCC version as the last portion
1582                           of the registry key],,)
1583
1584 case $host_os in
1585   win32 | pe | cygwin* | mingw32* | uwin*)
1586     if test "x$enable_win32_registry" != xno; then
1587       AC_SEARCH_LIBS(RegOpenKeyExA, advapi32,, [enable_win32_registry=no])
1588     fi
1589
1590     if test "x$enable_win32_registry" != xno; then
1591       AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
1592   [Define to 1 if installation paths should be looked up in the Windows
1593    Registry. Ignored on non-Windows hosts.])
1594
1595       if test "x$enable_win32_registry" != xyes \
1596          && test "x$enable_win32_registry" != x; then
1597         AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$enable_win32_registry",
1598   [Define to be the last component of the Windows registry key under which
1599    to look for installation paths.  The full key used will be 
1600    HKEY_LOCAL_MACHINE/SOFTWARE/Free Software Foundation/{WIN32_REGISTRY_KEY}.
1601    The default is the GCC version number.])
1602       fi
1603     fi
1604   ;;
1605 esac
1606
1607 # Get an absolute path to the GCC top-level source directory
1608 holddir=`${PWDCMD-pwd}`
1609 cd $srcdir
1610 topdir=`${PWDCMD-pwd}`
1611 cd $holddir
1612
1613 # Conditionalize the makefile for this host machine.
1614 xmake_file=
1615 for f in ${host_xmake_file}
1616 do
1617         if test -f ${srcdir}/config/$f
1618         then
1619                 xmake_file="${xmake_file} \$(srcdir)/config/$f"
1620         fi
1621 done
1622
1623 # Conditionalize the makefile for this target machine.
1624 tmake_file_=
1625 for f in ${tmake_file}
1626 do
1627         if test -f ${srcdir}/config/$f
1628         then
1629                 tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
1630         fi
1631 done
1632 tmake_file="${tmake_file_}"
1633
1634 # This is a terrible hack which will go away some day.
1635 host_cc_for_libada=${CC}
1636 AC_SUBST(host_cc_for_libada)
1637
1638 out_object_file=`basename $out_file .c`.o
1639
1640 tm_file_list="options.h"
1641 tm_include_list="options.h"
1642 for f in $tm_file; do
1643   case $f in
1644     ./* )
1645        f=`echo $f | sed 's/^..//'`
1646        tm_file_list="${tm_file_list} $f"
1647        tm_include_list="${tm_include_list} $f"
1648        ;;
1649     defaults.h )
1650        tm_file_list="${tm_file_list} \$(srcdir)/$f"
1651        tm_include_list="${tm_include_list} $f"
1652        ;;
1653     * )
1654        tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
1655        tm_include_list="${tm_include_list} config/$f"
1656        ;;
1657   esac
1658 done
1659
1660 tm_p_file_list=
1661 tm_p_include_list=
1662 for f in $tm_p_file; do
1663   case $f in
1664     tm-preds.h )
1665        tm_p_file_list="${tm_p_file_list} $f"
1666        tm_p_include_list="${tm_p_include_list} $f"
1667        ;;
1668     * )
1669        tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f"
1670        tm_p_include_list="${tm_p_include_list} config/$f"
1671   esac
1672 done
1673
1674 xm_file_list=
1675 xm_include_list=
1676 for f in $xm_file; do
1677   case $f in
1678     ansidecl.h )
1679        xm_file_list="${xm_file_list} \$(srcdir)/../include/$f"
1680        xm_include_list="${xm_include_list} $f"
1681        ;;
1682     auto-host.h )
1683        xm_file_list="${xm_file_list} $f"
1684        xm_include_list="${xm_include_list} $f"
1685        ;;
1686     * )
1687        xm_file_list="${xm_file_list} \$(srcdir)/config/$f"
1688        xm_include_list="${xm_include_list} config/$f"
1689        ;;
1690   esac
1691 done
1692
1693 host_xm_file_list=
1694 host_xm_include_list=
1695 for f in $host_xm_file; do
1696   case $f in
1697     ansidecl.h )
1698        host_xm_file_list="${host_xm_file_list} \$(srcdir)/../include/$f"
1699        host_xm_include_list="${host_xm_include_list} $f"
1700        ;;
1701     auto-host.h )
1702        host_xm_file_list="${host_xm_file_list} $f"
1703        host_xm_include_list="${host_xm_include_list} $f"
1704        ;;
1705     * )
1706        host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f"
1707        host_xm_include_list="${host_xm_include_list} config/$f"
1708        ;;
1709   esac
1710 done
1711
1712 build_xm_file_list=
1713 for f in $build_xm_file; do
1714   case $f in
1715     ansidecl.h )
1716        build_xm_file_list="${build_xm_file_list} \$(srcdir)/../include/$f"
1717        build_xm_include_list="${build_xm_include_list} $f"
1718        ;;
1719     auto-build.h | auto-host.h )
1720        build_xm_file_list="${build_xm_file_list} $f"
1721        build_xm_include_list="${build_xm_include_list} $f"
1722        ;;
1723     * )
1724        build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f"
1725        build_xm_include_list="${build_xm_include_list} config/$f"
1726        ;;
1727   esac
1728 done
1729
1730 # Define macro CROSS_DIRECTORY_STRUCTURE in compilation if this is a
1731 # cross-compiler which does not use the native headers and libraries.
1732 # Also use all.cross instead of all.internal and adjust SYSTEM_HEADER_DIR.
1733 CROSS=                                          AC_SUBST(CROSS)
1734 ALL=all.internal                                AC_SUBST(ALL)
1735 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' AC_SUBST(SYSTEM_HEADER_DIR)
1736
1737 if test "x$with_build_sysroot" != x; then
1738   build_system_header_dir=$with_build_sysroot'$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
1739 else
1740   # This value is used, even on a native system, because 
1741   # CROSS_SYSTEM_HEADER_DIR is just 
1742   # $(TARGET_SYSTEM_ROOT)$(NATIVE_SYSTEM_HEADER_DIR).
1743   build_system_header_dir='$(CROSS_SYSTEM_HEADER_DIR)'
1744 fi
1745
1746 if test x$host != x$target
1747 then
1748         CROSS="-DCROSS_DIRECTORY_STRUCTURE"
1749         ALL=all.cross
1750         SYSTEM_HEADER_DIR=$build_system_header_dir
1751         case "$host","$target" in
1752         # Darwin crosses can use the host system's libraries and headers,
1753         # because of the fat library support.  Of course, it must be the
1754         # same version of Darwin on both sides.  Allow the user to
1755         # just say --target=foo-darwin without a version number to mean
1756         # "the version on this system".
1757             *-*-darwin*,*-*-darwin*)
1758                 hostos=`echo $host | sed 's/.*-darwin/darwin/'`
1759                 targetos=`echo $target | sed 's/.*-darwin/darwin/'`
1760                 if test $hostos = $targetos -o $targetos = darwin ; then
1761                     CROSS=
1762                     SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)'
1763                     with_headers=yes
1764                 fi
1765                 ;;
1766
1767             i?86-*-*,x86_64-*-* \
1768             | powerpc*-*-*,powerpc64*-*-*)
1769                 CROSS="$CROSS -DNATIVE_CROSS" ;;
1770         esac
1771 elif test "x$TARGET_SYSTEM_ROOT" != x; then
1772         SYSTEM_HEADER_DIR=$build_system_header_dir 
1773 fi
1774
1775 # If this is a cross-compiler that does not
1776 # have its own set of headers then define
1777 # inhibit_libc
1778
1779 # If this is using newlib, without having the headers available now,
1780 # then define inhibit_libc in LIBGCC2_CFLAGS.
1781 # This prevents libgcc2 from containing any code which requires libc
1782 # support.
1783 inhibit_libc=false
1784 if { { test x$host != x$target && test "x$with_sysroot" = x ; } ||
1785        test x$with_newlib = xyes ; } &&
1786      { test "x$with_headers" = x || test "x$with_headers" = xno ; } ; then
1787        inhibit_libc=true
1788 fi
1789 AC_SUBST(inhibit_libc)
1790
1791 # When building gcc with a cross-compiler, we need to adjust things so
1792 # that the generator programs are still built with the native compiler.
1793 # Also, we cannot run fixincludes or fix-header.
1794
1795 # These are the normal (build=host) settings:
1796 CC_FOR_BUILD='$(CC)'            AC_SUBST(CC_FOR_BUILD)
1797 BUILD_CFLAGS='$(ALL_CFLAGS)'    AC_SUBST(BUILD_CFLAGS)
1798 STMP_FIXINC=stmp-fixinc         AC_SUBST(STMP_FIXINC)
1799
1800 # Possibly disable fixproto, on a per-target basis.
1801 case ${use_fixproto} in
1802   no)
1803     STMP_FIXPROTO=
1804     ;;
1805   yes)
1806     STMP_FIXPROTO=stmp-fixproto
1807     ;;
1808 esac
1809 AC_SUBST(STMP_FIXPROTO)
1810
1811 # And these apply if build != host, or we are generating coverage data
1812 if test x$build != x$host || test "x$coverage_flags" != x
1813 then
1814     BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
1815
1816     if test "x$TARGET_SYSTEM_ROOT" = x; then
1817         if test "x$STMP_FIXPROTO" != x; then
1818           STMP_FIXPROTO=stmp-install-fixproto
1819         fi
1820     fi
1821 fi
1822
1823 # Expand extra_headers to include complete path.
1824 # This substitutes for lots of t-* files.
1825 extra_headers_list=
1826 # Prepend $(srcdir)/config/${cpu_type}/ to every entry in extra_headers.
1827 for file in ${extra_headers} ; do
1828   extra_headers_list="${extra_headers_list} \$(srcdir)/config/${cpu_type}/${file}"
1829 done
1830
1831 # Define collect2 in Makefile.
1832 case $host_can_use_collect2 in
1833   no) collect2= ;;
1834   *) collect2='collect2$(exeext)' ;;
1835 esac
1836 AC_SUBST([collect2])
1837
1838 # Add a definition of USE_COLLECT2 if system wants one.
1839 case $use_collect2 in
1840   no) use_collect2= ;;
1841   "") ;;
1842   *) 
1843     host_xm_defines="${host_xm_defines} USE_COLLECT2"
1844     xm_defines="${xm_defines} USE_COLLECT2"
1845     case $host_can_use_collect2 in
1846       no)
1847         AC_MSG_ERROR([collect2 is required but cannot be built on this system])
1848         ;;
1849     esac
1850     ;;
1851 esac
1852
1853 # ---------------------------
1854 # Assembler & linker features
1855 # ---------------------------
1856
1857 # Identify the assembler which will work hand-in-glove with the newly
1858 # built GCC, so that we can examine its features.  This is the assembler
1859 # which will be driven by the driver program.
1860 #
1861 # If build != host, and we aren't building gas in-tree, we identify a
1862 # build->target assembler and hope that it will have the same features
1863 # as the host->target assembler we'll be using.
1864 gcc_cv_gas_major_version=
1865 gcc_cv_gas_minor_version=
1866 gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
1867
1868 m4_pattern_allow([AS_FOR_TARGET])dnl
1869 AS_VAR_SET_IF(gcc_cv_as,, [
1870 if test -x "$DEFAULT_ASSEMBLER"; then
1871         gcc_cv_as="$DEFAULT_ASSEMBLER"
1872 elif test -f $gcc_cv_as_gas_srcdir/configure.in \
1873      && test -f ../gas/Makefile \
1874      && test x$build = x$host; then
1875         gcc_cv_as=../gas/as-new$build_exeext
1876 elif test -x as$build_exeext; then
1877         # Build using assembler in the current directory.
1878         gcc_cv_as=./as$build_exeext
1879 elif test -x $AS_FOR_TARGET; then
1880         gcc_cv_as="$AS_FOR_TARGET"
1881 else
1882         AC_PATH_PROG(gcc_cv_as, $AS_FOR_TARGET)
1883 fi])
1884
1885 ORIGINAL_AS_FOR_TARGET=$gcc_cv_as
1886 AC_SUBST(ORIGINAL_AS_FOR_TARGET)
1887
1888 AC_MSG_CHECKING(what assembler to use)
1889 if test "$gcc_cv_as" = ../gas/as-new$build_exeext; then
1890   # Single tree build which includes gas.  We want to prefer it
1891   # over whatever linker top-level may have detected, since
1892   # we'll use what we're building after installation anyway.
1893   AC_MSG_RESULT(newly built gas)
1894   in_tree_gas=yes
1895   _gcc_COMPUTE_GAS_VERSION
1896   in_tree_gas_is_elf=no
1897   if grep 'obj_format = elf' ../gas/Makefile > /dev/null \
1898      || (grep 'obj_format = multi' ../gas/Makefile \
1899          && grep 'extra_objects =.* obj-elf' ../gas/Makefile) > /dev/null
1900   then
1901     in_tree_gas_is_elf=yes
1902   fi
1903 else
1904   AC_MSG_RESULT($gcc_cv_as)
1905   in_tree_gas=no
1906 fi
1907
1908 # Identify the linker which will work hand-in-glove with the newly
1909 # built GCC, so that we can examine its features.  This is the linker
1910 # which will be driven by the driver program.
1911 #
1912 # If build != host, and we aren't building gas in-tree, we identify a
1913 # build->target linker and hope that it will have the same features
1914 # as the host->target linker we'll be using.
1915 gcc_cv_gld_major_version=
1916 gcc_cv_gld_minor_version=
1917 gcc_cv_ld_gld_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/ld
1918 gcc_cv_ld_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
1919
1920 AS_VAR_SET_IF(gcc_cv_ld,, [
1921 if test -x "$DEFAULT_LINKER"; then
1922         gcc_cv_ld="$DEFAULT_LINKER"
1923 elif test -f $gcc_cv_ld_gld_srcdir/configure.in \
1924      && test -f ../ld/Makefile \
1925      && test x$build = x$host; then
1926         gcc_cv_ld=../ld/ld-new$build_exeext
1927 elif test -x collect-ld$build_exeext; then
1928         # Build using linker in the current directory.
1929         gcc_cv_ld=./collect-ld$build_exeext
1930 elif test -x $LD_FOR_TARGET; then
1931         gcc_cv_ld="$LD_FOR_TARGET"
1932 else
1933         AC_PATH_PROG(gcc_cv_ld, $LD_FOR_TARGET)
1934 fi])
1935
1936 ORIGINAL_LD_FOR_TARGET=$gcc_cv_ld
1937 AC_SUBST(ORIGINAL_LD_FOR_TARGET)
1938
1939 AC_MSG_CHECKING(what linker to use)
1940 if test "$gcc_cv_ld" = ../ld/ld-new$build_exeext; then
1941         # Single tree build which includes ld.  We want to prefer it
1942         # over whatever linker top-level may have detected, since
1943         # we'll use what we're building after installation anyway.
1944         AC_MSG_RESULT(newly built ld)
1945         in_tree_ld=yes
1946         in_tree_ld_is_elf=no
1947         if (grep 'EMUL = .*elf' ../ld/Makefile \
1948             || grep 'EMUL = .*linux' ../ld/Makefile \
1949             || grep 'EMUL = .*lynx' ../ld/Makefile) > /dev/null; then
1950           in_tree_ld_is_elf=yes
1951         fi
1952         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
1953         do
1954 changequote(,)dnl
1955                 gcc_cv_gld_version=`sed -n -e 's/^[     ]*\(VERSION=[0-9]*\.[0-9]*.*\)/\1/p' < $f`
1956                 if test x$gcc_cv_gld_version != x; then
1957                         break
1958                 fi
1959         done
1960         gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
1961         gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
1962 changequote([,])dnl
1963 else
1964         AC_MSG_RESULT($gcc_cv_ld)
1965         in_tree_ld=no
1966 fi
1967
1968 # Figure out what nm we will be using.
1969 gcc_cv_binutils_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/binutils
1970 AS_VAR_SET_IF(gcc_cv_nm,, [
1971 if test -f $gcc_cv_binutils_srcdir/configure.in \
1972      && test -f ../binutils/Makefile \
1973      && test x$build = x$host; then
1974         gcc_cv_nm=../binutils/nm-new$build_exeext
1975 elif test -x nm$build_exeext; then
1976         gcc_cv_nm=./nm$build_exeext
1977 elif test -x $NM_FOR_TARGET; then
1978         gcc_cv_nm="$NM_FOR_TARGET"
1979 else
1980         AC_PATH_PROG(gcc_cv_nm, $NM_FOR_TARGET)
1981 fi])
1982
1983 AC_MSG_CHECKING(what nm to use)
1984 if test "$gcc_cv_nm" = ../binutils/nm-new$build_exeext; then
1985         # Single tree build which includes binutils.
1986         AC_MSG_RESULT(newly built nm)
1987         in_tree_nm=yes
1988 else
1989         AC_MSG_RESULT($gcc_cv_nm)
1990         in_tree_nm=no
1991 fi
1992
1993 ORIGINAL_NM_FOR_TARGET=$gcc_cv_nm
1994 AC_SUBST(ORIGINAL_NM_FOR_TARGET)
1995
1996 # Figure out what objdump we will be using.
1997 AS_VAR_SET_IF(gcc_cv_objdump,, [
1998 if test -f $gcc_cv_binutils_srcdir/configure.in \
1999      && test -f ../binutils/Makefile \
2000      && test x$build = x$host; then
2001         # Single tree build which includes binutils.
2002         gcc_cv_objdump=../binutils/objdump$build_exeext
2003 elif test -x objdump$build_exeext; then
2004         gcc_cv_objdump=./objdump$build_exeext
2005 elif test -x $OBJDUMP_FOR_TARGET; then
2006         gcc_cv_objdump="$OBJDUMP_FOR_TARGET"
2007 else
2008         AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET)
2009 fi])
2010
2011 AC_MSG_CHECKING(what objdump to use)
2012 if test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then
2013         # Single tree build which includes binutils.
2014         AC_MSG_RESULT(newly built objdump)
2015 elif test x$gcc_cv_objdump = x; then
2016         AC_MSG_RESULT(not found)
2017 else
2018         AC_MSG_RESULT($gcc_cv_objdump)
2019 fi
2020
2021 # Figure out what assembler alignment features are present.
2022 gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,
2023  [2,6,0],,
2024 [.balign 4
2025 .p2align 2],,
2026 [AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN, 1,
2027   [Define if your assembler supports .balign and .p2align.])])
2028
2029 gcc_GAS_CHECK_FEATURE([.p2align with maximum skip], gcc_cv_as_max_skip_p2align,
2030  [2,8,0],,
2031  [.p2align 4,,7],,
2032 [AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN, 1,
2033   [Define if your assembler supports specifying the maximum number
2034    of bytes to skip when using the GAS .p2align command.])])
2035
2036 gcc_GAS_CHECK_FEATURE([.literal16], gcc_cv_as_literal16,
2037  [2,8,0],,
2038  [.literal16],,
2039 [AC_DEFINE(HAVE_GAS_LITERAL16, 1,
2040   [Define if your assembler supports .literal16.])])
2041
2042 gcc_GAS_CHECK_FEATURE([working .subsection -1], gcc_cv_as_subsection_m1,
2043  [elf,2,9,0],,
2044  [conftest_label1: .word 0
2045 .subsection -1
2046 conftest_label2: .word 0
2047 .previous],
2048  [if test x$gcc_cv_nm != x; then
2049     $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
2050     $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
2051     if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1
2052     then :
2053     else gcc_cv_as_subsection_m1=yes
2054     fi
2055     rm -f conftest.nm1 conftest.nm2
2056   fi],
2057  [AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
2058   [Define if your assembler supports .subsection and .subsection -1 starts
2059    emitting at the beginning of your section.])])
2060
2061 gcc_GAS_CHECK_FEATURE([.weak], gcc_cv_as_weak,
2062  [2,2,0],,
2063  [      .weak foobar],,
2064 [AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])])
2065
2066 gcc_GAS_CHECK_FEATURE([.weakref], gcc_cv_as_weakref,
2067  [2,17,0],,
2068  [      .weakref foobar, barfnot],,
2069 [AC_DEFINE(HAVE_GAS_WEAKREF, 1, [Define if your assembler supports .weakref.])])
2070
2071 gcc_GAS_CHECK_FEATURE([.nsubspa comdat], gcc_cv_as_nsubspa_comdat,
2072  [2,15,91],,
2073  [      .SPACE $TEXT$
2074         .NSUBSPA $CODE$,COMDAT],,
2075 [AC_DEFINE(HAVE_GAS_NSUBSPA_COMDAT, 1, [Define if your assembler supports .nsubspa comdat option.])])
2076
2077 # .hidden needs to be supported in both the assembler and the linker,
2078 # because GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
2079 # This is irritatingly difficult to feature test for; we have to check the
2080 # date string after the version number.  If we've got an in-tree
2081 # ld, we don't know its patchlevel version, so we set the baseline at 2.13
2082 # to be safe.
2083 # The gcc_GAS_CHECK_FEATURE call just sets a cache variable.
2084 gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden,
2085  [elf,2,13,0],,
2086 [       .hidden foobar
2087 foobar:])
2088
2089 AC_CACHE_CHECK(linker for .hidden support, gcc_cv_ld_hidden,
2090 [if test $in_tree_ld = yes ; then
2091   gcc_cv_ld_hidden=no
2092   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 \
2093      && test $in_tree_ld_is_elf = yes; then
2094      gcc_cv_ld_hidden=yes
2095   fi
2096 else
2097   gcc_cv_ld_hidden=yes
2098   ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
2099   if echo "$ld_ver" | grep GNU > /dev/null; then
2100 changequote(,)dnl
2101     ld_vers=`echo $ld_ver | sed -n \
2102         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \
2103         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \
2104         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \
2105         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*\)[  ].*$,\1,p' \
2106         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[     ].*$,\1,p' \
2107         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[       ].*$,\1,p' \
2108         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[   -].*$,\1,p'`
2109     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'`
2110     ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2111     ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2112     ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
2113     if test 0"$ld_date" -lt 20020404; then
2114       if test -n "$ld_date"; then
2115         # If there was date string, but was earlier than 2002-04-04, fail
2116         gcc_cv_ld_hidden=no
2117       elif test -z "$ld_vers"; then
2118         # If there was no date string nor ld version number, something is wrong
2119         gcc_cv_ld_hidden=no
2120       else
2121         test -z "$ld_vers_patch" && ld_vers_patch=0
2122         if test "$ld_vers_major" -lt 2; then
2123           gcc_cv_ld_hidden=no
2124         elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
2125           gcc_cv_ld_hidden="no"
2126         elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 -a "$ld_vers_patch" -eq 0; then
2127           gcc_cv_ld_hidden=no
2128         fi
2129       fi
2130 changequote([,])dnl
2131     fi
2132   else
2133     case "${target}" in
2134       hppa64*-*-hpux* | ia64*-*-hpux*)
2135         gcc_cv_ld_hidden=yes
2136         ;;
2137       *)
2138         gcc_cv_ld_hidden=no
2139         ;;
2140     esac
2141   fi
2142 fi])
2143 libgcc_visibility=no
2144 AC_SUBST(libgcc_visibility)
2145 GCC_TARGET_TEMPLATE([HAVE_GAS_HIDDEN])
2146 if test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden = yes; then
2147   libgcc_visibility=yes
2148   AC_DEFINE(HAVE_GAS_HIDDEN, 1,
2149   [Define if your assembler and linker support .hidden.])
2150 fi
2151
2152 # Check if we have .[us]leb128, and support symbol arithmetic with it.
2153 gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,
2154   [elf,2,11,0],,
2155 [       .data
2156         .uleb128 L2 - L1
2157 L1:
2158         .uleb128 1280
2159         .sleb128 -1010
2160 L2:],
2161  [# GAS versions before 2.11 do not support uleb128,
2162   # despite appearing to.
2163   # ??? There exists an elf-specific test that will crash
2164   # the assembler.  Perhaps it's better to figure out whether
2165   # arbitrary sections are supported and try the test.
2166   as_ver=`$gcc_cv_as --version 2>/dev/null | sed 1q`
2167   if echo "$as_ver" | grep GNU > /dev/null; then
2168 changequote(,)dnl
2169     as_ver=`echo $as_ver | sed -e 's/GNU assembler \([0-9.][0-9.]*\).*/\1/'`
2170     as_major=`echo $as_ver | sed 's/\..*//'`
2171     as_minor=`echo $as_ver | sed 's/[^.]*\.\([0-9]*\).*/\1/'`
2172 changequote([,])dnl
2173     if test $as_major -eq 2 && test $as_minor -lt 11
2174     then :
2175     else gcc_cv_as_leb128=yes
2176     fi
2177   fi],
2178   [AC_DEFINE(HAVE_AS_LEB128, 1,
2179     [Define if your assembler supports .sleb128 and .uleb128.])])
2180
2181 # GAS versions up to and including 2.11.0 may mis-optimize
2182 # .eh_frame data.
2183 gcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame,
2184   [elf,2,12,0],,
2185 [       .text
2186 .LFB1:
2187         .4byte  0
2188 .L1:
2189         .4byte  0
2190 .LFE1:
2191         .section        .eh_frame,"aw",@progbits
2192 __FRAME_BEGIN__:
2193         .4byte  .LECIE1-.LSCIE1
2194 .LSCIE1:
2195         .4byte  0x0
2196         .byte   0x1
2197         .ascii "z\0"
2198         .byte   0x1
2199         .byte   0x78
2200         .byte   0x1a
2201         .byte   0x0
2202         .byte   0x4
2203         .4byte  1
2204         .p2align 1
2205 .LECIE1:
2206 .LSFDE1:
2207         .4byte  .LEFDE1-.LASFDE1
2208 .LASFDE1:
2209         .4byte  .LASFDE1-__FRAME_BEGIN__
2210         .4byte  .LFB1
2211         .4byte  .LFE1-.LFB1
2212         .byte   0x4
2213         .4byte  .LFE1-.LFB1
2214         .byte   0x4
2215         .4byte  .L1-.LFB1
2216 .LEFDE1:],
2217 [  dnl # For autoconf 2.5x, must protect trailing spaces with @&t@.
2218 cat > conftest.lit <<EOF
2219  0000 10000000 00000000 017a0001 781a0004  .........z..x...
2220  0010 01000000 12000000 18000000 00000000  ................
2221  0020 08000000 04080000 0044               .........D      @&t@
2222 EOF
2223 cat > conftest.big <<EOF
2224  0000 00000010 00000000 017a0001 781a0004  .........z..x...
2225  0010 00000001 00000012 00000018 00000000  ................
2226  0020 00000008 04000000 0844               .........D      @&t@
2227 EOF
2228   # If the assembler didn't choke, and we can objdump,
2229   # and we got the correct data, then succeed.
2230   # The text in the here-document typically retains its unix-style line
2231   # endings, while the output of objdump will use host line endings.
2232   # Therefore, use diff -b for the comparisons.
2233   if test x$gcc_cv_objdump != x \
2234   && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
2235      | tail -3 > conftest.got \
2236   && { diff -b conftest.lit conftest.got > /dev/null 2>&1 \
2237     || diff -b conftest.big conftest.got > /dev/null 2>&1; }
2238   then
2239     gcc_cv_as_eh_frame=yes
2240   elif AC_TRY_COMMAND($gcc_cv_as -o conftest.o --traditional-format /dev/null); then
2241     gcc_cv_as_eh_frame=buggy
2242   else
2243     # Uh oh, what do we do now?
2244     gcc_cv_as_eh_frame=no
2245   fi])
2246
2247 if test $gcc_cv_as_eh_frame = buggy; then
2248   AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
2249   [Define if your assembler mis-optimizes .eh_frame data.])
2250 fi
2251
2252 gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2253  [elf,2,12,0], [--fatal-warnings],
2254  [.section .rodata.str, "aMS", @progbits, 1])
2255 if test $gcc_cv_as_shf_merge = no; then
2256   gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2257     [elf,2,12,0], [--fatal-warnings],
2258     [.section .rodata.str, "aMS", %progbits, 1])
2259 fi
2260 AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE,
2261   [`if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`],
2262 [Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.])
2263
2264 gcc_GAS_CHECK_FEATURE(COMDAT group support, gcc_cv_as_comdat_group,
2265  [elf,2,16,0], [--fatal-warnings],
2266  [.section .text,"axG",@progbits,.foo,comdat])
2267 if test $gcc_cv_as_comdat_group = yes; then
2268   gcc_cv_as_comdat_group_percent=no
2269 else
2270  gcc_GAS_CHECK_FEATURE(COMDAT group support, gcc_cv_as_comdat_group_percent,
2271    [elf,2,16,0], [--fatal-warnings],
2272    [.section .text,"axG",%progbits,.foo,comdat])
2273 fi
2274 if test $in_tree_ld != yes && test x"$ld_vers" != x; then
2275   comdat_group=yes
2276   if test 0"$ld_date" -lt 20050308; then
2277     if test -n "$ld_date"; then
2278       # If there was date string, but was earlier than 2005-03-08, fail
2279       comdat_group=no
2280     elif test "$ld_vers_major" -lt 2; then
2281       comdat_group=no
2282     elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
2283       comdat_group=no
2284     fi
2285   fi
2286 else
2287   # assume linkers other than GNU ld don't support COMDAT group
2288   comdat_group=no
2289 fi
2290 if test $comdat_group = no; then
2291   gcc_cv_as_comdat_group=no
2292   gcc_cv_as_comdat_group_percent=no
2293 fi
2294 AC_DEFINE_UNQUOTED(HAVE_COMDAT_GROUP,
2295   [`if test $gcc_cv_as_comdat_group = yes || test $gcc_cv_as_comdat_group_percent = yes; then echo 1; else echo 0; fi`],
2296 [Define 0/1 if your assembler and linker support COMDAT groups.])
2297
2298 # Thread-local storage - the check is heavily parametrized.
2299 conftest_s=
2300 tls_first_major=
2301 tls_first_minor=
2302 tls_as_opt=
2303 case "$target" in
2304 changequote(,)dnl
2305   alpha*-*-*)
2306     conftest_s='
2307         .section ".tdata","awT",@progbits
2308 foo:    .long   25
2309         .text
2310         ldq     $27,__tls_get_addr($29)         !literal!1
2311         lda     $16,foo($29)                    !tlsgd!1
2312         jsr     $26,($27),__tls_get_addr        !lituse_tlsgd!1
2313         ldq     $27,__tls_get_addr($29)         !literal!2
2314         lda     $16,foo($29)                    !tlsldm!2
2315         jsr     $26,($27),__tls_get_addr        !lituse_tlsldm!2
2316         ldq     $1,foo($29)                     !gotdtprel
2317         ldah    $2,foo($29)                     !dtprelhi
2318         lda     $3,foo($2)                      !dtprello
2319         lda     $4,foo($29)                     !dtprel
2320         ldq     $1,foo($29)                     !gottprel
2321         ldah    $2,foo($29)                     !tprelhi
2322         lda     $3,foo($2)                      !tprello
2323         lda     $4,foo($29)                     !tprel'
2324         tls_first_major=2
2325         tls_first_minor=13
2326         tls_as_opt=--fatal-warnings
2327         ;;
2328   frv*-*-*)
2329     conftest_s='
2330         .section ".tdata","awT",@progbits
2331 x:      .long   25
2332         .text
2333         call    #gettlsoff(x)'
2334         tls_first_major=2
2335         tls_first_minor=14
2336         ;;
2337   hppa*-*-linux*)
2338     conftest_s='
2339 t1:     .reg    %r20
2340 t2:     .reg    %r21
2341 gp:     .reg    %r19
2342         .section ".tdata","awT",@progbits
2343 foo:    .long   25
2344         .text
2345         .align  4
2346         addil LT%foo-$tls_gdidx$,gp
2347         ldo RT%foo-$tls_gdidx$(%r1),%arg0
2348         b __tls_get_addr
2349         nop             
2350         addil LT%foo-$tls_ldidx$,gp
2351         b __tls_get_addr
2352         ldo RT%foo-$tls_ldidx$(%r1),%arg0
2353         addil LR%foo-$tls_dtpoff$,%ret0
2354         ldo RR%foo-$tls_dtpoff$(%r1),%t1
2355         mfctl %cr27,%t1                 
2356         addil LT%foo-$tls_ieoff$,gp
2357         ldw RT%foo-$tls_ieoff$(%r1),%t2
2358         add %t1,%t2,%t3                 
2359         mfctl %cr27,%t1                 
2360         addil LR%foo-$tls_leoff$,%t1
2361         ldo RR%foo-$tls_leoff$(%r1),%t2'
2362         tls_first_major=2
2363         tls_first_minor=15
2364         tls_as_opt=--fatal-warnings
2365         ;;
2366   arm*-*-*)
2367     conftest_s='
2368         .section ".tdata","awT",%progbits
2369 foo:    .long   25
2370         .text
2371 .word foo(gottpoff)
2372 .word foo(tpoff)
2373 .word foo(tlsgd)
2374 .word foo(tlsldm)
2375 .word foo(tlsldo)'
2376         tls_first_major=2
2377         tls_first_minor=17
2378         ;;
2379   i[34567]86-*-*)
2380     conftest_s='
2381         .section ".tdata","awT",@progbits
2382 foo:    .long   25
2383         .text
2384         movl    %gs:0, %eax
2385         leal    foo@TLSGD(,%ebx,1), %eax
2386         leal    foo@TLSLDM(%ebx), %eax
2387         leal    foo@DTPOFF(%eax), %edx
2388         movl    foo@GOTTPOFF(%ebx), %eax
2389         subl    foo@GOTTPOFF(%ebx), %eax
2390         addl    foo@GOTNTPOFF(%ebx), %eax
2391         movl    foo@INDNTPOFF, %eax
2392         movl    $foo@TPOFF, %eax
2393         subl    $foo@TPOFF, %eax
2394         leal    foo@NTPOFF(%ecx), %eax'
2395         tls_first_major=2
2396         tls_first_minor=14
2397         tls_as_opt=--fatal-warnings
2398         ;;
2399   x86_64-*-*)
2400     conftest_s='
2401         .section ".tdata","awT",@progbits
2402 foo:    .long   25
2403         .text
2404         movq    %fs:0, %rax
2405         leaq    foo@TLSGD(%rip), %rdi
2406         leaq    foo@TLSLD(%rip), %rdi
2407         leaq    foo@DTPOFF(%rax), %rdx
2408         movq    foo@GOTTPOFF(%rip), %rax
2409         movq    $foo@TPOFF, %rax'
2410         tls_first_major=2
2411         tls_first_minor=14
2412         tls_as_opt=--fatal-warnings
2413         ;;
2414   ia64-*-*)
2415     conftest_s='
2416         .section ".tdata","awT",@progbits
2417 foo:    data8   25
2418         .text
2419         addl    r16 = @ltoff(@dtpmod(foo#)), gp
2420         addl    r17 = @ltoff(@dtprel(foo#)), gp
2421         addl    r18 = @ltoff(@tprel(foo#)), gp
2422         addl    r19 = @dtprel(foo#), gp
2423         adds    r21 = @dtprel(foo#), r13
2424         movl    r23 = @dtprel(foo#)
2425         addl    r20 = @tprel(foo#), gp
2426         adds    r22 = @tprel(foo#), r13
2427         movl    r24 = @tprel(foo#)'
2428         tls_first_major=2
2429         tls_first_minor=13
2430         tls_as_opt=--fatal-warnings
2431         ;;
2432   mips*-*-*)
2433     conftest_s='
2434         .section .tdata,"awT",@progbits
2435 x:
2436         .word 2
2437         .text
2438         addiu $4, $28, %tlsgd(x)
2439         addiu $4, $28, %tlsldm(x)
2440         lui $4, %dtprel_hi(x)
2441         addiu $4, $4, %dtprel_lo(x)
2442         lw $4, %gottprel(x)($28)
2443         lui $4, %tprel_hi(x)
2444         addiu $4, $4, %tprel_lo(x)'
2445         tls_first_major=2
2446         tls_first_minor=16
2447         tls_as_opt='-32 --fatal-warnings'
2448         ;;
2449   powerpc-*-*)
2450     conftest_s='
2451         .section ".tdata","awT",@progbits
2452         .align 2
2453 ld0:    .space 4
2454 ld1:    .space 4
2455 x1:     .space 4
2456 x2:     .space 4
2457 x3:     .space 4
2458         .text
2459         addi 3,31,ld0@got@tlsgd
2460         bl __tls_get_addr
2461         addi 3,31,x1@got@tlsld
2462         bl __tls_get_addr
2463         addi 9,3,x1@dtprel
2464         addis 9,3,x2@dtprel@ha
2465         addi 9,9,x2@dtprel@l
2466         lwz 9,x3@got@tprel(31)
2467         add 9,9,x@tls
2468         addi 9,2,x1@tprel
2469         addis 9,2,x2@tprel@ha
2470         addi 9,9,x2@tprel@l'
2471         tls_first_major=2
2472         tls_first_minor=14
2473         tls_as_opt="-a32 --fatal-warnings"
2474         ;;
2475   powerpc64-*-*)
2476     conftest_s='
2477         .section ".tdata","awT",@progbits
2478         .align 3
2479 ld0:    .space 8
2480 ld1:    .space 8
2481 x1:     .space 8
2482 x2:     .space 8
2483 x3:     .space 8
2484         .text
2485         addi 3,2,ld0@got@tlsgd
2486         bl .__tls_get_addr
2487         nop
2488         addi 3,2,ld1@toc
2489         bl .__tls_get_addr
2490         nop
2491         addi 3,2,x1@got@tlsld
2492         bl .__tls_get_addr
2493         nop
2494         addi 9,3,x1@dtprel
2495         bl .__tls_get_addr
2496         nop
2497         addis 9,3,x2@dtprel@ha
2498         addi 9,9,x2@dtprel@l
2499         bl .__tls_get_addr
2500         nop
2501         ld 9,x3@got@dtprel(2)
2502         add 9,9,3
2503         bl .__tls_get_addr
2504         nop'
2505         tls_first_major=2
2506         tls_first_minor=14
2507         tls_as_opt="-a64 --fatal-warnings"
2508         ;;
2509   s390-*-*)
2510     conftest_s='
2511         .section ".tdata","awT",@progbits
2512 foo:    .long   25
2513         .text
2514         .long   foo@TLSGD
2515         .long   foo@TLSLDM
2516         .long   foo@DTPOFF
2517         .long   foo@NTPOFF
2518         .long   foo@GOTNTPOFF
2519         .long   foo@INDNTPOFF
2520         l       %r1,foo@GOTNTPOFF(%r12)
2521         l       %r1,0(%r1):tls_load:foo
2522         bas     %r14,0(%r1,%r13):tls_gdcall:foo
2523         bas     %r14,0(%r1,%r13):tls_ldcall:foo'
2524         tls_first_major=2
2525         tls_first_minor=14
2526         tls_as_opt="-m31 --fatal-warnings"
2527         ;;
2528   s390x-*-*)
2529     conftest_s='
2530         .section ".tdata","awT",@progbits
2531 foo:    .long   25
2532         .text
2533         .quad   foo@TLSGD
2534         .quad   foo@TLSLDM
2535         .quad   foo@DTPOFF
2536         .quad   foo@NTPOFF
2537         .quad   foo@GOTNTPOFF
2538         lg      %r1,foo@GOTNTPOFF(%r12)
2539         larl    %r1,foo@INDNTPOFF
2540         brasl   %r14,__tls_get_offset@PLT:tls_gdcall:foo
2541         brasl   %r14,__tls_get_offset@PLT:tls_ldcall:foo'
2542         tls_first_major=2
2543         tls_first_minor=14
2544         tls_as_opt="-m64 -Aesame --fatal-warnings"
2545         ;;
2546   sh-*-* | sh[34]-*-*)
2547     conftest_s='
2548         .section ".tdata","awT",@progbits
2549 foo:    .long   25
2550         .text
2551         .long   foo@TLSGD
2552         .long   foo@TLSLDM
2553         .long   foo@DTPOFF
2554         .long   foo@GOTTPOFF
2555         .long   foo@TPOFF'
2556         tls_first_major=2
2557         tls_first_minor=13
2558         tls_as_opt=--fatal-warnings
2559         ;;
2560   sparc*-*-*)
2561     case "$target" in
2562       sparc*-sun-solaris2.[56789]*)
2563         # TLS was introduced in the Solaris 9 4/04 release but
2564         # we do not enable it by default on Solaris 9 either.
2565         if test "x$enable_tls" = xyes ; then
2566           on_solaris=yes
2567         else
2568           enable_tls=no;
2569         fi
2570         ;;
2571       sparc*-sun-solaris2.*)
2572         on_solaris=yes
2573         ;;
2574       *)
2575         on_solaris=no
2576         ;;
2577     esac
2578     if test x$on_solaris = xyes && test x$gas_flag = xno; then
2579       conftest_s='
2580         .section ".tdata",#alloc,#write,#tls
2581 foo:    .long   25
2582         .text
2583         sethi   %tgd_hi22(foo), %o0
2584         add     %o0, %tgd_lo10(foo), %o1
2585         add     %l7, %o1, %o0, %tgd_add(foo)
2586         call    __tls_get_addr, %tgd_call(foo)
2587         sethi   %tldm_hi22(foo), %l1
2588         add     %l1, %tldm_lo10(foo), %l2
2589         add     %l7, %l2, %o0, %tldm_add(foo)
2590         call    __tls_get_addr, %tldm_call(foo)
2591         sethi   %tldo_hix22(foo), %l3
2592         xor     %l3, %tldo_lox10(foo), %l4
2593         add     %o0, %l4, %l5, %tldo_add(foo)
2594         sethi   %tie_hi22(foo), %o3
2595         add     %o3, %tie_lo10(foo), %o3
2596         ld      [%l7 + %o3], %o2, %tie_ld(foo)
2597         add     %g7, %o2, %o4, %tie_add(foo)
2598         sethi   %tle_hix22(foo), %l1
2599         xor     %l1, %tle_lox10(foo), %o5
2600         ld      [%g7 + %o5], %o1'
2601         tls_first_major=0
2602         tls_first_minor=0
2603     else
2604       conftest_s='
2605         .section ".tdata","awT",@progbits
2606 foo:    .long   25
2607         .text
2608         sethi   %tgd_hi22(foo), %o0
2609         add     %o0, %tgd_lo10(foo), %o1
2610         add     %l7, %o1, %o0, %tgd_add(foo)
2611         call    __tls_get_addr, %tgd_call(foo)
2612         sethi   %tldm_hi22(foo), %l1
2613         add     %l1, %tldm_lo10(foo), %l2
2614         add     %l7, %l2, %o0, %tldm_add(foo)
2615         call    __tls_get_addr, %tldm_call(foo)
2616         sethi   %tldo_hix22(foo), %l3
2617         xor     %l3, %tldo_lox10(foo), %l4
2618         add     %o0, %l4, %l5, %tldo_add(foo)
2619         sethi   %tie_hi22(foo), %o3
2620         add     %o3, %tie_lo10(foo), %o3
2621         ld      [%l7 + %o3], %o2, %tie_ld(foo)
2622         add     %g7, %o2, %o4, %tie_add(foo)
2623         sethi   %tle_hix22(foo), %l1
2624         xor     %l1, %tle_lox10(foo), %o5
2625         ld      [%g7 + %o5], %o1'
2626         tls_first_major=2
2627         tls_first_minor=14
2628         tls_as_opt="-32 --fatal-warnings"
2629       fi
2630         ;;
2631 changequote([,])dnl
2632 esac
2633 set_have_as_tls=no
2634 if test "x$enable_tls" = xno ; then
2635   : # TLS explicitly disabled.
2636 elif test "x$enable_tls" = xyes ; then
2637   set_have_as_tls=yes # TLS explicitly enabled.
2638 elif test -z "$tls_first_major"; then
2639   : # If we don't have a check, assume no support.
2640 else
2641   gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls,
2642   [$tls_first_major,$tls_first_minor,0], [$tls_as_opt], [$conftest_s],,
2643   [set_have_as_tls=yes])
2644 fi
2645 if test $set_have_as_tls = yes ; then
2646   AC_DEFINE(HAVE_AS_TLS, 1,
2647             [Define if your assembler supports thread-local storage.])
2648 fi
2649
2650 # Target-specific assembler checks.
2651
2652 AC_MSG_CHECKING(linker -Bstatic/-Bdynamic option)
2653 gcc_cv_ld_static_dynamic=no
2654 if test $in_tree_ld = yes ; then
2655   if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10; then
2656     gcc_cv_ld_static_dynamic=yes
2657   fi
2658 elif test x$gcc_cv_ld != x; then
2659         # Check if linker supports -Bstatic/-Bdynamic option
2660         if $gcc_cv_ld --help 2>/dev/null | grep -- -Bstatic > /dev/null \
2661           && $gcc_cv_ld --help 2>/dev/null | grep -- -Bdynamic > /dev/null; then
2662                 gcc_cv_ld_static_dynamic=yes
2663         fi
2664 fi
2665 if test x"$gcc_cv_ld_static_dynamic" = xyes; then
2666         AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1,
2667 [Define if your linker supports -Bstatic/-Bdynamic option.])
2668 fi
2669 AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
2670
2671 if test x"$demangler_in_ld" = xyes; then
2672   AC_MSG_CHECKING(linker --demangle support)
2673   gcc_cv_ld_demangle=no
2674   if test $in_tree_ld = yes; then
2675     if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 14 -o "$gcc_cv_gld_major_version" -gt 2; then \
2676       gcc_cv_ld_demangle=yes
2677     fi
2678   elif test x$gcc_cv_ld != x -a x"$gnu_ld" = xyes; then
2679     # Check if the GNU linker supports --demangle option
2680     if $gcc_cv_ld --help 2>/dev/null | grep no-demangle > /dev/null; then
2681       gcc_cv_ld_demangle=yes
2682     fi
2683   fi
2684   if test x"$gcc_cv_ld_demangle" = xyes; then
2685     AC_DEFINE(HAVE_LD_DEMANGLE, 1,
2686 [Define if your linker supports --demangle option.])
2687   fi
2688   AC_MSG_RESULT($gcc_cv_ld_demangle)
2689 fi
2690
2691 case "$target" in
2692   # All TARGET_ABI_OSF targets.
2693   alpha*-*-osf* | alpha*-*-linux* | alpha*-*-*bsd*)
2694     gcc_GAS_CHECK_FEATURE([explicit relocation support],
2695         gcc_cv_as_alpha_explicit_relocs, [2,12,0],,
2696 [       .set nomacro
2697         .text
2698         extbl   $3, $2, $3      !lituse_bytoff!1
2699         ldq     $2, a($29)      !literal!1
2700         ldq     $4, b($29)      !literal!2
2701         ldq_u   $3, 0($2)       !lituse_base!1
2702         ldq     $27, f($29)     !literal!5
2703         jsr     $26, ($27), f   !lituse_jsr!5
2704         ldah    $29, 0($26)     !gpdisp!3
2705         lda     $0, c($29)      !gprel
2706         ldah    $1, d($29)      !gprelhigh
2707         lda     $1, d($1)       !gprellow
2708         lda     $29, 0($29)     !gpdisp!3],,
2709     [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
2710   [Define if your assembler supports explicit relocations.])])
2711     gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
2712         gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],,
2713 [       .set nomacro
2714         .text
2715         ldq     $27, a($29)     !literal!1
2716         jsr     $26, ($27), a   !lituse_jsrdirect!1],,
2717     [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
2718   [Define if your assembler supports the lituse_jsrdirect relocation.])])
2719     ;;
2720
2721   cris-*-*)
2722     gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
2723       gcc_cv_as_cris_no_mul_bug,[2,15,91],
2724       [-no-mul-bug-abort], [.text],,
2725       [AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1,
2726                 [Define if your assembler supports the -no-mul-bug-abort option.])])
2727     ;;
2728
2729   sparc*-*-*)
2730     gcc_GAS_CHECK_FEATURE([.register], gcc_cv_as_sparc_register_op,,,
2731       [.register %g2, #scratch],,
2732       [AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
2733                 [Define if your assembler supports .register.])])
2734
2735     gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,,
2736       [-relax], [.text],,
2737       [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
2738                 [Define if your assembler supports -relax option.])])
2739
2740     gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs],
2741       gcc_cv_as_sparc_ua_pcrel,,
2742       [-K PIC],
2743 [.text
2744 foo:
2745         nop
2746 .data
2747 .align 4
2748 .byte 0
2749 .uaword %r_disp32(foo)],
2750       [if test x$gcc_cv_ld != x \
2751        && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
2752          gcc_cv_as_sparc_ua_pcrel=yes
2753        fi
2754        rm -f conftest],
2755       [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
2756                 [Define if your assembler and linker support unaligned PC relative relocs.])
2757
2758       gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols],
2759         gcc_cv_as_sparc_ua_pcrel_hidden,,
2760         [-K PIC],
2761 [.data
2762 .align 4
2763 .byte 0x31
2764 .uaword %r_disp32(foo)
2765 .byte 0x32, 0x33, 0x34
2766 .global foo
2767 .hidden foo
2768 foo:
2769 .skip 4],
2770         [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
2771          && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
2772          && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
2773             | grep ' 31000000 07323334' > /dev/null 2>&1; then
2774             if $gcc_cv_objdump -R conftest 2> /dev/null \
2775                | grep 'DISP32' > /dev/null 2>&1; then
2776                 :
2777             else
2778                 gcc_cv_as_sparc_ua_pcrel_hidden=yes
2779             fi
2780          fi
2781          rm -f conftest],
2782          [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
2783                    [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])])
2784     ]) # unaligned pcrel relocs
2785
2786     gcc_GAS_CHECK_FEATURE([offsetable %lo()],
2787       gcc_cv_as_sparc_offsetable_lo10,,
2788       [-xarch=v9],
2789 [.text
2790         or %g1, %lo(ab) + 12, %g1
2791         or %g1, %lo(ab + 12), %g1],
2792       [if test x$gcc_cv_objdump != x \
2793        && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \
2794           | grep ' 82106000 82106000' > /dev/null 2>&1; then
2795          gcc_cv_as_sparc_offsetable_lo10=yes
2796        fi],
2797        [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
2798                  [Define if your assembler supports offsetable %lo().])])
2799     ;;
2800
2801 changequote(,)dnl
2802   i[34567]86-*-* | x86_64-*-*)
2803 changequote([,])dnl
2804     case $target_os in
2805       cygwin* | pe | mingw32*)
2806         # Used for DWARF 2 in PE
2807         gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
2808           gcc_cv_as_ix86_pe_secrel32,
2809           [2,15,91],,
2810 [.text
2811 foo:    nop
2812 .data
2813         .secrel32 foo],
2814           [if test x$gcc_cv_ld != x \
2815            && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1; then
2816              gcc_cv_as_ix86_pe_secrel32=yes
2817            fi
2818            rm -f conftest],
2819           [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1,
2820             [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])])
2821         ;;
2822     esac
2823
2824     gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
2825        gcc_cv_as_ix86_filds_fists,
2826       [2,9,0],, [filds mem; fists mem],,
2827       [AC_DEFINE(HAVE_GAS_FILDS_FISTS, 1,
2828         [Define if your assembler uses the new HImode fild and fist notation.])])
2829
2830     gcc_GAS_CHECK_FEATURE([cmov syntax],
2831       gcc_cv_as_ix86_cmov_sun_syntax,,,
2832       [cmovl.l %edx, %eax],,
2833       [AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
2834         [Define if your assembler supports the Sun syntax for cmov.])])
2835
2836     gcc_GAS_CHECK_FEATURE([ffreep mnemonic],
2837       gcc_cv_as_ix86_ffreep,,,
2838       [ffreep %st(1)],,
2839       [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
2840         [Define if your assembler supports the ffreep mnemonic.])])
2841
2842     gcc_GAS_CHECK_FEATURE([sahf mnemonic],
2843       gcc_cv_as_ix86_sahf,,,
2844       [sahf],,
2845       [AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
2846         [Define if your assembler supports the sahf mnemonic.])])
2847
2848     gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
2849       gcc_cv_as_ix86_diff_sect_delta,,,
2850       [.section .rodata
2851 .L1:
2852         .long .L2-.L1
2853         .long .L3-.L1
2854         .text
2855 .L3:    nop
2856 .L2:    nop],,
2857       [AC_DEFINE(HAVE_AS_IX86_DIFF_SECT_DELTA, 1,
2858         [Define if your assembler supports the subtraction of symbols in different sections.])])
2859
2860     # This one is used unconditionally by i386.[ch]; it is to be defined
2861     # to 1 if the feature is present, 0 otherwise.
2862     gcc_GAS_CHECK_FEATURE([GOTOFF in data],
2863         gcc_cv_as_ix86_gotoff_in_data, [2,11,0],,
2864 [       .text
2865 .L0:
2866         nop
2867         .data
2868         .long .L0@GOTOFF])
2869     AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
2870       [`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
2871       [Define true if the assembler supports '.long foo@GOTOFF'.])
2872     ;;
2873
2874   ia64*-*-*)
2875     gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs],
2876         gcc_cv_as_ia64_ltoffx_ldxmov_relocs, [2,14,0],,
2877 [       .text
2878         addl r15 = @ltoffx(x#), gp
2879         ;;
2880         ld8.mov r16 = [[r15]], x#],,
2881     [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
2882           [Define if your assembler supports ltoffx and ldxmov relocations.])])
2883
2884     ;;
2885
2886   powerpc*-*-*)
2887     case $target in
2888       *-*-aix*) conftest_s='    .machine "pwr5"
2889         .csect .text[[PR]]
2890         mfcr 3,128';;
2891       *-*-darwin*)
2892         gcc_GAS_CHECK_FEATURE([.machine directive support],
2893           gcc_cv_as_machine_directive,,,
2894           [     .machine ppc7400])
2895         if test x$gcc_cv_as_machine_directive != xyes; then
2896           echo "*** This target requires an assembler supporting \".machine\"" >&2
2897           echo you can get it from: ftp://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2
2898           test x$build = x$target && exit 1
2899         fi
2900         conftest_s='    .text
2901         mfcr r3,128';;
2902       *) conftest_s='   .machine power4
2903         .text
2904         mfcr 3,128';;
2905     esac
2906
2907     gcc_GAS_CHECK_FEATURE([mfcr field support],
2908       gcc_cv_as_powerpc_mfcrf, [2,14,0],,
2909       [$conftest_s],,
2910       [AC_DEFINE(HAVE_AS_MFCRF, 1,
2911           [Define if your assembler supports mfcr field.])])
2912
2913     case $target in
2914       *-*-aix*) conftest_s='    .machine "pwr5"
2915         .csect .text[[PR]]
2916         popcntb 3,3';;
2917       *) conftest_s='   .machine power5
2918         .text
2919         popcntb 3,3';;
2920     esac
2921
2922     gcc_GAS_CHECK_FEATURE([popcntb support],
2923       gcc_cv_as_powerpc_popcntb, [2,17,0],,
2924       [$conftest_s],,
2925       [AC_DEFINE(HAVE_AS_POPCNTB, 1,
2926           [Define if your assembler supports popcntb field.])])
2927
2928     case $target in
2929       *-*-aix*) conftest_s='    .machine "pwr5x"
2930         .csect .text[[PR]]
2931         frin 1,1';;
2932       *) conftest_s='   .machine power5
2933         .text
2934         frin 1,1';;
2935     esac
2936
2937     gcc_GAS_CHECK_FEATURE([fp round support],
2938       gcc_cv_as_powerpc_fprnd, [2,17,0],,
2939       [$conftest_s],,
2940       [AC_DEFINE(HAVE_AS_FPRND, 1,
2941           [Define if your assembler supports fprnd.])])
2942
2943     case $target in
2944       *-*-aix*) conftest_s='    .machine "pwr6"
2945         .csect .text[[PR]]
2946         mffgpr 1,3';;
2947       *) conftest_s='   .machine power6
2948         .text
2949         mffgpr 1,3';;
2950     esac
2951
2952     gcc_GAS_CHECK_FEATURE([move fp gpr support],
2953       gcc_cv_as_powerpc_mfpgpr, [9,99,0],,
2954       [$conftest_s],,
2955       [AC_DEFINE(HAVE_AS_MFPGPR, 1,
2956           [Define if your assembler supports mffgpr and mftgpr.])])
2957
2958     case $target in
2959       *-*-aix*) conftest_s='    .csect .text[[PR]]
2960 LCF..0:
2961         addis 11,30,_GLOBAL_OFFSET_TABLE_-LCF..0@ha';;
2962       *-*-darwin*)
2963         conftest_s='    .text
2964 LCF0:
2965         addis r11,r30,_GLOBAL_OFFSET_TABLE_-LCF0@ha';;
2966       *) conftest_s='   .text
2967 .LCF0:
2968         addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';;
2969     esac
2970
2971     gcc_GAS_CHECK_FEATURE([rel16 relocs],
2972       gcc_cv_as_powerpc_rel16, [2,17,0], -a32,
2973       [$conftest_s],,
2974       [AC_DEFINE(HAVE_AS_REL16, 1,
2975           [Define if your assembler supports R_PPC_REL16 relocs.])])
2976
2977     case $target in
2978       *-*-aix*) conftest_s='    .machine "pwr6"
2979         .csect .text[[PR]]
2980         cmpb 3,4,5';;
2981       *) conftest_s='   .machine power6
2982         .text
2983         cmpb 3,4,5';;
2984     esac
2985
2986     gcc_GAS_CHECK_FEATURE([compare bytes support],
2987       gcc_cv_as_powerpc_cmpb, [9,99,0], -a32,
2988       [$conftest_s],,
2989       [AC_DEFINE(HAVE_AS_CMPB, 1,
2990           [Define if your assembler supports cmpb.])])
2991
2992     case $target in
2993       *-*-aix*) conftest_s='    .machine "pwr6"
2994         .csect .text[[PR]]
2995         dadd 1,2,3';;
2996       *) conftest_s='   .machine power6
2997         .text
2998         dadd 1,2,3';;
2999     esac
3000
3001     gcc_GAS_CHECK_FEATURE([decimal float support],
3002       gcc_cv_as_powerpc_dfp, [9,99,0], -a32,
3003       [$conftest_s],,
3004       [AC_DEFINE(HAVE_AS_DFP, 1,
3005           [Define if your assembler supports DFP instructions.])])
3006     ;;
3007
3008   mips*-*-*)
3009     gcc_GAS_CHECK_FEATURE([explicit relocation support],
3010       gcc_cv_as_mips_explicit_relocs, [2,14,0],,
3011 [       lw $4,%gp_rel(foo)($4)],,
3012       [if test x$target_cpu_default = x
3013        then target_cpu_default=MASK_EXPLICIT_RELOCS
3014        else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
3015        fi])
3016     gcc_GAS_CHECK_FEATURE([-mno-shared support],
3017       gcc_cv_as_mips_no_shared, [2,16,0], [-mno-shared], [nop],,
3018       [AC_DEFINE(HAVE_AS_NO_SHARED, 1,
3019                  [Define if the assembler understands -mno-shared.])])
3020     ;;
3021 esac
3022
3023 # Mips and HP-UX need the GNU assembler.
3024 # Linux on IA64 might be able to use the Intel assembler.
3025
3026 case "$target" in
3027   mips*-*-* | *-*-hpux* )
3028     if test x$gas_flag = xyes \
3029        || test x"$host" != x"$build" \
3030        || test ! -x "$gcc_cv_as" \
3031        || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
3032       :
3033     else
3034       echo "*** This configuration requires the GNU assembler" >&2
3035       exit 1
3036     fi
3037     ;;
3038 esac
3039
3040 # ??? Not all targets support dwarf2 debug_line, even within a version
3041 # of gas.  Moreover, we need to emit a valid instruction to trigger any
3042 # info to the output file.  So, as supported targets are added to gas 2.11,
3043 # add some instruction here to (also) show we expect this might work.
3044 # ??? Once 2.11 is released, probably need to add first known working
3045 # version to the per-target configury.
3046 case "$target" in
3047   i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-* | m68*-*-* \
3048   | x86_64*-*-* | hppa*-*-* | arm*-*-* | strongarm*-*-* | xscale*-*-* \
3049   | xstormy16*-*-* | cris-*-* | xtensa-*-* | bfin-*-* | score*-*-* | spu-*-*)
3050     insn="nop"
3051     ;;
3052   ia64*-*-* | s390*-*-*)
3053     insn="nop 0"
3054     ;;
3055   mmix-*-*)
3056     insn="swym 0"
3057     ;;
3058 esac
3059 if test x"$insn" != x; then
3060  conftest_s="\
3061         .file 1 \"conftest.s\"
3062         .loc 1 3 0
3063         $insn"
3064  gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
3065   gcc_cv_as_dwarf2_debug_line,
3066   [elf,2,11,0],, [$conftest_s],
3067   [if test x$gcc_cv_objdump != x \
3068    && $gcc_cv_objdump -h conftest.o 2> /dev/null \
3069       | grep debug_line > /dev/null 2>&1; then
3070      gcc_cv_as_dwarf2_debug_line=yes
3071    fi])
3072
3073 # The .debug_line file table must be in the exact order that
3074 # we specified the files, since these indices are also used
3075 # by DW_AT_decl_file.  Approximate this test by testing if
3076 # the assembler bitches if the same index is assigned twice.
3077  gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
3078   gcc_cv_as_dwarf2_file_buggy,,,
3079 [       .file 1 "foo.s"
3080         .file 1 "bar.s"])
3081
3082  if test $gcc_cv_as_dwarf2_debug_line = yes \
3083  && test $gcc_cv_as_dwarf2_file_buggy = no; then
3084         AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
3085   [Define if your assembler supports dwarf2 .file/.loc directives,
3086    and preserves file table indices exactly as given.])
3087  fi
3088
3089  gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
3090   gcc_cv_as_gdwarf2_flag,
3091   [elf,2,11,0], [--gdwarf2], [$insn],,
3092   [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
3093 [Define if your assembler supports the --gdwarf2 option.])])
3094
3095  gcc_GAS_CHECK_FEATURE([--gstabs option],
3096   gcc_cv_as_gstabs_flag,
3097   [elf,2,11,0], [--gstabs], [$insn],
3098   [# The native Solaris 9/Intel assembler doesn't understand --gstabs
3099    # and warns about it, but still exits successfully.  So check for
3100    # this.
3101    if AC_TRY_COMMAND([$gcc_cv_as --gstabs -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null])
3102    then :
3103    else gcc_cv_as_gstabs_flag=yes
3104    fi],
3105   [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
3106 [Define if your assembler supports the --gstabs option.])])
3107 fi
3108
3109 AC_CACHE_CHECK([assembler for tolerance to line number 0],
3110  [gcc_cv_as_line_zero],
3111  [gcc_cv_as_line_zero=no
3112   if test $in_tree_gas = yes; then
3113     gcc_GAS_VERSION_GTE_IFELSE(2, 16, 91, [gcc_cv_as_line_zero=yes])
3114   elif test "x$gcc_cv_as" != x; then
3115     { echo '# 1 "test.s" 1'; echo '# 0 "" 2'; } > conftest.s
3116     if AC_TRY_COMMAND([$gcc_cv_as -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD 2>conftest.out]) &&
3117        test "x`cat conftest.out`" = x
3118     then
3119       gcc_cv_as_line_zero=yes
3120     else
3121       echo "configure: failed program was" >&AS_MESSAGE_LOG_FD
3122       cat conftest.s >&AS_MESSAGE_LOG_FD
3123       echo "configure: error output was" >&AS_MESSAGE_LOG_FD
3124       cat conftest.out >&AS_MESSAGE_LOG_FD
3125     fi
3126     rm -f conftest.o conftest.s conftest.out
3127   fi])
3128 if test "x$gcc_cv_as_line_zero" = xyes; then
3129   AC_DEFINE([HAVE_AS_LINE_ZERO], 1,
3130 [Define if the assembler won't complain about a line such as # 0 "" 2.])
3131 fi
3132
3133 AC_MSG_CHECKING(linker read-only and read-write section mixing)
3134 gcc_cv_ld_ro_rw_mix=unknown
3135 if test $in_tree_ld = yes ; then
3136   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 \
3137      && test $in_tree_ld_is_elf = yes; then
3138     gcc_cv_ld_ro_rw_mix=read-write
3139   fi
3140 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
3141   echo '.section myfoosect, "a"' > conftest1.s
3142   echo '.section myfoosect, "aw"' > conftest2.s
3143   echo '.byte 1' >> conftest2.s
3144   echo '.section myfoosect, "a"' > conftest3.s
3145   echo '.byte 0' >> conftest3.s
3146   if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
3147      && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
3148      && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \
3149      && $gcc_cv_ld -shared -o conftest1.so conftest1.o \
3150         conftest2.o conftest3.o > /dev/null 2>&1; then
3151     gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
3152                          | sed -e '/myfoosect/!d' -e N`
3153     if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then
3154       if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then
3155         gcc_cv_ld_ro_rw_mix=read-only
3156       else
3157         gcc_cv_ld_ro_rw_mix=read-write
3158       fi
3159     fi
3160   fi
3161 changequote(,)dnl
3162   rm -f conftest.* conftest[123].*
3163 changequote([,])dnl
3164 fi
3165 if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
3166         AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1,
3167   [Define if your linker links a mix of read-only
3168    and read-write sections into a read-write section.])
3169 fi
3170 AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
3171
3172 AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
3173 gcc_cv_ld_eh_frame_hdr=no
3174 if test $in_tree_ld = yes ; then
3175   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 \
3176      && test $in_tree_ld_is_elf = yes; then
3177     gcc_cv_ld_eh_frame_hdr=yes
3178   fi
3179 elif test x$gcc_cv_ld != x; then
3180         # Check if linker supports --eh-frame-hdr option
3181         if $gcc_cv_ld --help 2>/dev/null | grep eh-frame-hdr > /dev/null; then
3182                 gcc_cv_ld_eh_frame_hdr=yes
3183         fi
3184 fi
3185 GCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HDR])
3186 if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
3187         AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
3188 [Define if your linker supports --eh-frame-hdr option.])
3189 fi
3190 AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
3191
3192 AC_MSG_CHECKING(linker position independent executable support)
3193 gcc_cv_ld_pie=no
3194 if test $in_tree_ld = yes ; then
3195   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 \
3196      && test $in_tree_ld_is_elf = yes; then
3197     gcc_cv_ld_pie=yes
3198   fi
3199 elif test x$gcc_cv_ld != x; then
3200         # Check if linker supports -pie option
3201         if $gcc_cv_ld --help 2>/dev/null | grep -- -pie > /dev/null; then
3202                 gcc_cv_ld_pie=yes
3203         fi
3204 fi
3205 if test x"$gcc_cv_ld_pie" = xyes; then
3206         AC_DEFINE(HAVE_LD_PIE, 1,
3207 [Define if your linker supports -pie option.])
3208 fi
3209 AC_MSG_RESULT($gcc_cv_ld_pie)
3210
3211 AC_MSG_CHECKING(linker EH-compatible garbage collection of sections)
3212 gcc_cv_ld_eh_gc_sections=no
3213 if test $in_tree_ld = yes ; then
3214   if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 17 -o "$gcc_cv_gld_major_version" -gt 2 \
3215      && test $in_tree_ld_is_elf = yes; then
3216     gcc_cv_ld_eh_gc_sections=yes
3217   fi
3218 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
3219   cat > conftest.s <<EOF
3220         .section        .text
3221 .globl _start
3222         .type _start, @function
3223 _start:
3224         .long foo
3225         .size _start, .-_start
3226         .section        .text.foo,"ax",@progbits
3227         .type foo, @function
3228 foo:
3229         .long 0
3230         .size foo, .-foo
3231         .section        .gcc_except_table.foo,"a",@progbits
3232 .L0:
3233         .long 0
3234         .section        .eh_frame,"a",@progbits
3235         .long .L0
3236 EOF
3237   if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
3238     if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
3239          | grep "gc-sections option ignored" > /dev/null; then
3240       gcc_cv_ld_eh_gc_sections=no
3241     elif $gcc_cv_objdump -h conftest | grep gcc_except_table > /dev/null; then
3242       gcc_cv_ld_eh_gc_sections=yes
3243       # If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
3244       if test x$gcc_cv_as_comdat_group != xyes; then
3245         gcc_cv_ld_eh_gc_sections=no
3246         cat > conftest.s <<EOF
3247         .section        .text
3248 .globl _start
3249         .type _start, @function
3250 _start:
3251         .long foo
3252         .size _start, .-_start
3253         .section        .gnu.linkonce.t.foo,"ax",@progbits
3254         .type foo, @function
3255 foo:
3256         .long 0
3257         .size foo, .-foo
3258         .section        .gcc_except_table.foo,"a",@progbits
3259 .L0:
3260         .long 0
3261         .section        .eh_frame,"a",@progbits
3262         .long .L0
3263 EOF
3264         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
3265           if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
3266                | grep "gc-sections option ignored" > /dev/null; then
3267             gcc_cv_ld_eh_gc_sections=no
3268           elif $gcc_cv_objdump -h conftest | grep gcc_except_table > /dev/null; then
3269             gcc_cv_ld_eh_gc_sections=yes
3270           fi
3271         fi
3272       fi
3273     fi
3274   fi
3275   rm -f conftest.s conftest.o conftest
3276 fi
3277 case "$target" in
3278   hppa*-*-linux*)
3279     # ??? This apparently exposes a binutils bug with PC-relative relocations.
3280     gcc_cv_ld_eh_gc_sections=no
3281     ;;
3282 esac
3283 if test x$gcc_cv_ld_eh_gc_sections = xyes; then
3284         AC_DEFINE(HAVE_LD_EH_GC_SECTIONS, 1,
3285   [Define if your linker supports garbage collection of
3286    sections in presence of EH frames.])
3287 fi
3288 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections)
3289
3290 # --------
3291 # UNSORTED
3292 # --------
3293
3294 AC_CACHE_CHECK(linker --as-needed support,
3295 gcc_cv_ld_as_needed,
3296 [gcc_cv_ld_as_needed=no
3297 if test $in_tree_ld = yes ; then
3298   if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2 \
3299      && test $in_tree_ld_is_elf = yes; then
3300     gcc_cv_ld_as_needed=yes
3301   fi
3302 elif test x$gcc_cv_ld != x; then
3303         # Check if linker supports --as-needed and --no-as-needed options
3304         if $gcc_cv_ld --help 2>/dev/null | grep as-needed > /dev/null; then
3305                 gcc_cv_ld_as_needed=yes
3306         fi
3307 fi
3308 ])
3309 if test x"$gcc_cv_ld_as_needed" = xyes; then
3310         AC_DEFINE(HAVE_LD_AS_NEEDED, 1,
3311 [Define if your linker supports --as-needed and --no-as-needed options.])
3312 fi
3313
3314 case "$target:$tm_file" in
3315   powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
3316     AC_CACHE_CHECK(linker support for omitting dot symbols,
3317     gcc_cv_ld_no_dot_syms,
3318     [gcc_cv_ld_no_dot_syms=no
3319     if test $in_tree_ld = yes ; then
3320       if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2; then
3321         gcc_cv_ld_no_dot_syms=yes
3322       fi
3323     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
3324       cat > conftest1.s <<EOF
3325         .text
3326         bl .foo
3327 EOF
3328       cat > conftest2.s <<EOF
3329         .section ".opd","aw"
3330         .align 3
3331         .globl foo
3332         .type foo,@function
3333 foo:
3334         .quad .LEfoo,.TOC.@tocbase,0
3335         .text
3336 .LEfoo:
3337         blr
3338         .size foo,.-.LEfoo
3339 EOF
3340       if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
3341          && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
3342          && $gcc_cv_ld -melf64ppc -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
3343         gcc_cv_ld_no_dot_syms=yes
3344       fi
3345       rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
3346     fi
3347     ])
3348     if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
3349       AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
3350     [Define if your PowerPC64 linker only needs function descriptor syms.])
3351     fi
3352     ;;
3353 esac
3354
3355 AC_CACHE_CHECK(linker --sysroot support,
3356   gcc_cv_ld_sysroot,
3357   [gcc_cv_ld_sysroot=no
3358   if test $in_tree_ld = yes ; then
3359       if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2 ; then
3360         gcc_cv_ld_sysroot=yes
3361       fi
3362   elif test x$gcc_cv_ld != x; then 
3363     if $gcc_cv_ld --help 2>/dev/null | grep sysroot > /dev/null; then
3364       gcc_cv_ld_sysroot=yes
3365     fi
3366   fi])
3367 if test x"$gcc_cv_ld_sysroot" = xyes; then
3368   AC_DEFINE(HAVE_LD_SYSROOT, 1,
3369   [Define if your linker supports --sysroot.])
3370 fi        
3371
3372 if test x$with_sysroot = x && test x$host = x$target \
3373    && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" \
3374    && test "$prefix" != "NONE"; then
3375   AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",
3376 [Define to PREFIX/include if cpp should also search that directory.])
3377 fi
3378
3379 # Test for stack protector support in target C library.
3380 AC_CACHE_CHECK(__stack_chk_fail in target C library,
3381       gcc_cv_libc_provides_ssp,
3382       [gcc_cv_libc_provides_ssp=no
3383     case "$target" in
3384        *-*-linux*)
3385       if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
3386         if test "x$with_sysroot" = x; then
3387           glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-include"
3388         elif test "x$with_build_sysroot" != "x"; then
3389           glibc_header_dir="${with_build_sysroot}/usr/include"
3390         elif test "x$with_sysroot" = xyes; then
3391           glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-root/usr/include"
3392         else
3393           glibc_header_dir="${with_sysroot}/usr/include"
3394         fi
3395       else
3396         glibc_header_dir=/usr/include
3397       fi
3398       # glibc 2.4 and later provides __stack_chk_fail and
3399       # either __stack_chk_guard, or TLS access to stack guard canary.
3400       if test -f $glibc_header_dir/features.h \
3401          && $EGREP '^@<:@       @:>@*#[         ]*define[       ]+__GNU_LIBRARY__[      ]+([1-9][0-9]|[6-9])' \
3402             $glibc_header_dir/features.h > /dev/null; then
3403         if $EGREP '^@<:@        @:>@*#[         ]*define[       ]+__GLIBC__[    ]+([1-9][0-9]|[3-9])' \
3404            $glibc_header_dir/features.h > /dev/null; then
3405           gcc_cv_libc_provides_ssp=yes
3406         elif $EGREP '^@<:@      @:>@*#[         ]*define[       ]+__GLIBC__[    ]+2' \
3407              $glibc_header_dir/features.h > /dev/null \
3408              && $EGREP '^@<:@   @:>@*#[         ]*define[       ]+__GLIBC_MINOR__[      ]+([1-9][0-9]|[4-9])' \
3409              $glibc_header_dir/features.h > /dev/null; then
3410           gcc_cv_libc_provides_ssp=yes
3411         fi
3412         fi
3413         ;;
3414        *-*-darwin*)
3415          AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
3416            [echo "no __stack_chk_fail on this target"])
3417         ;;
3418   *) gcc_cv_libc_provides_ssp=no ;;
3419     esac])
3420
3421 if test x$gcc_cv_libc_provides_ssp = xyes; then
3422   AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1,
3423             [Define if your target C library provides stack protector support])
3424 fi
3425
3426 # Check if TFmode long double should be used by default or not.
3427 # Some glibc targets used DFmode long double, but with glibc 2.4
3428 # and later they can use TFmode.
3429 case "$target" in
3430   powerpc*-*-*gnu* | \
3431   sparc*-*-linux* | \
3432   s390*-*-linux* | \
3433   alpha*-*-linux*)
3434     AC_ARG_WITH(long-double-128,
3435 [  --with-long-double-128  Use 128-bit long double by default.],
3436       gcc_cv_target_ldbl128="$with_long_double_128",
3437       [gcc_cv_target_ldbl128=no
3438       if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
3439         if test "x$with_sysroot" = x; then
3440           glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-include"
3441         elif test "x$with_build_sysroot" != "x"; then
3442           glibc_header_dir="${with_build_sysroot}/usr/include"
3443         elif test "x$with_sysroot" = xyes; then
3444           glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-root/usr/include"
3445         else
3446           glibc_header_dir="${with_sysroot}/usr/include"
3447         fi
3448       else
3449         glibc_header_dir=/usr/include
3450       fi
3451 changequote(,)dnl
3452       grep '^[  ]*#[    ]*define[       ][      ]*__LONG_DOUBLE_MATH_OPTIONAL' \
3453         $glibc_header_dir/bits/wordsize.h > /dev/null 2>&1 \
3454       && gcc_cv_target_ldbl128=yes
3455 changequote([,])dnl
3456       ])
3457     ;;
3458 esac
3459 if test x$gcc_cv_target_ldbl128 = xyes; then
3460   AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
3461             [Define if TFmode long double should be the default])
3462 fi
3463
3464 # Find out what GC implementation we want, or may, use.
3465 AC_ARG_WITH(gc,
3466 [  --with-gc={page,zone}   choose the garbage collection mechanism to use
3467                           with the compiler],
3468 [case "$withval" in
3469   page)
3470     GGC=ggc-$withval
3471     ;;
3472   zone)
3473     GGC=ggc-$withval
3474     AC_DEFINE(GGC_ZONE, 1, [Define if the zone collector is in use])
3475     ;;
3476   *)
3477     AC_MSG_ERROR([$withval is an invalid option to --with-gc])
3478     ;;
3479 esac],
3480 [GGC=ggc-page])
3481 AC_SUBST(GGC)
3482 echo "Using $GGC for garbage collection."
3483
3484 # Use the system's zlib library.
3485 zlibdir=-L../zlib
3486 zlibinc="-I\$(srcdir)/../zlib"
3487 AC_ARG_WITH(system-zlib,
3488 [  --with-system-zlib      use installed libz],
3489 zlibdir=
3490 zlibinc=
3491 )
3492 AC_SUBST(zlibdir)
3493 AC_SUBST(zlibinc)
3494
3495 dnl Very limited version of automake's enable-maintainer-mode
3496
3497 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
3498   dnl maintainer-mode is disabled by default
3499   AC_ARG_ENABLE(maintainer-mode,
3500 [  --enable-maintainer-mode
3501                           enable make rules and dependencies not useful
3502                           (and sometimes confusing) to the casual installer],
3503       maintainer_mode=$enableval,
3504       maintainer_mode=no)
3505
3506 AC_MSG_RESULT($maintainer_mode)
3507
3508 if test "$maintainer_mode" = "yes"; then
3509   MAINT=''
3510 else
3511   MAINT='#'
3512 fi
3513 AC_SUBST(MAINT)dnl
3514
3515 # --------------
3516 # Language hooks
3517 # --------------
3518
3519 # Make empty files to contain the specs and options for each language.
3520 # Then add #include lines to for a compiler that has specs and/or options.
3521
3522 subdirs=
3523 lang_opt_files=
3524 lang_specs_files=
3525 lang_tree_files=
3526 # These (without "all_") are set in each config-lang.in.
3527 # `language' must be a single word so is spelled singularly.
3528 all_languages=
3529 all_compilers=
3530 all_outputs='Makefile gccbug libada-mk'
3531 # List of language makefile fragments.
3532 all_lang_makefrags=
3533 # List of language subdirectory makefiles.  Deprecated.
3534 all_lang_makefiles=
3535 # Additional files for gengtype
3536 all_gtfiles="$target_gtfiles"
3537
3538 # These are the languages that are set in --enable-languages,
3539 # and are available in the GCC tree.
3540 all_selected_languages=
3541
3542 # Add the language fragments.
3543 # Languages are added via two mechanisms.  Some information must be
3544 # recorded in makefile variables, these are defined in config-lang.in.
3545 # We accumulate them and plug them into the main Makefile.
3546 # The other mechanism is a set of hooks for each of the main targets
3547 # like `clean', `install', etc.
3548
3549 language_hooks="Make-hooks"
3550
3551 for lang in ${srcdir}/*/config-lang.in
3552 do
3553 changequote(,)dnl
3554         test "$lang" = "${srcdir}/*/config-lang.in" && continue
3555
3556         lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^   ]*\).*$,\1,p' $lang`
3557         if test "x$lang_alias" = x
3558         then
3559               echo "$lang doesn't set \$language." 1>&2
3560               exit 1
3561         fi
3562         subdir="`echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
3563         subdirs="$subdirs $subdir"
3564         case ",$enable_languages," in
3565         *,$lang_alias,*)
3566             all_selected_languages="$all_selected_languages $lang_alias"
3567             if test -f $srcdir/$subdir/lang-specs.h; then
3568                 lang_specs_files="$lang_specs_files $srcdir/$subdir/lang-specs.h"
3569             fi
3570             ;;
3571         esac
3572 changequote([,])dnl
3573
3574         language=
3575         boot_language=
3576         compilers=
3577         outputs=
3578         gtfiles=
3579         subdir_requires=
3580         . ${srcdir}/$subdir/config-lang.in
3581         if test "x$language" = x
3582         then
3583                 echo "${srcdir}/$subdir/config-lang.in doesn't set \$language." 1>&2
3584                 exit 1
3585         fi
3586
3587         ok=:
3588         case ",$enable_languages," in
3589                 *,$lang_alias,*) ;;
3590                 *)
3591                         for i in $subdir_requires; do
3592                                 test -f "${srcdir}/$i/config-lang.in" && continue
3593                                 ok=false
3594                                 break
3595                         done
3596                 ;;
3597         esac
3598         $ok || continue
3599
3600         all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$subdir/Make-lang.in"
3601         if test -f $srcdir/$subdir/lang.opt; then
3602             lang_opt_files="$lang_opt_files $srcdir/$subdir/lang.opt"
3603         fi
3604         if test -f $srcdir/$subdir/$subdir-tree.def; then
3605             lang_tree_files="$lang_tree_files $srcdir/$subdir/$subdir-tree.def"
3606         fi
3607         if test -f ${srcdir}/$subdir/Makefile.in
3608                 then all_lang_makefiles="$subdir/Makefile"
3609         fi
3610         all_languages="$all_languages $language"
3611         all_compilers="$all_compilers $compilers"
3612         all_outputs="$all_outputs $outputs"
3613         all_gtfiles="$all_gtfiles [[$subdir]] $gtfiles"
3614 done
3615
3616 # Pick up gtfiles for c
3617 gtfiles=
3618 . ${srcdir}/c-config-lang.in
3619 all_gtfiles="$all_gtfiles [[c]] $gtfiles"
3620
3621 check_languages=
3622 for language in $all_selected_languages
3623 do
3624         check_languages="$check_languages check-$language"
3625 done
3626
3627 # We link each language in with a set of hooks, reached indirectly via
3628 # lang.${target}.  Only do so for selected languages.
3629
3630 rm -f Make-hooks
3631 touch Make-hooks
3632 target_list="all.cross start.encap rest.encap tags \
3633         install-common install-man install-info install-pdf dvi pdf \
3634         html uninstall info man srcextra srcman srcinfo \
3635         mostlyclean clean distclean maintainer-clean"
3636
3637 for t in $target_list
3638 do
3639         x=
3640         for lang in $all_selected_languages
3641         do
3642                 x="$x $lang.$t"
3643         done
3644         echo "lang.$t: $x" >> Make-hooks
3645 done
3646
3647 # --------
3648 # UNSORTED
3649 # --------
3650
3651 # Create .gdbinit.
3652
3653 echo "dir ." > .gdbinit
3654 echo "dir ${srcdir}" >> .gdbinit
3655 if test x$gdb_needs_out_file_path = xyes
3656 then
3657         echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
3658 fi
3659 if test "x$subdirs" != x; then
3660         for s in $subdirs
3661         do
3662                 echo "dir ${srcdir}/$s" >> .gdbinit
3663         done
3664 fi
3665 echo "source ${srcdir}/gdbinit.in" >> .gdbinit
3666
3667 # If $(exec_prefix) exists and is not the same as $(prefix), then compute an
3668 # absolute path for gcc_tooldir based on inserting the number of up-directory
3669 # movements required to get from $(exec_prefix) to $(prefix) into the basic
3670 # $(libsubdir)/@(unlibsubdir) based path.
3671 # Don't set gcc_tooldir to tooldir since that's only passed in by the toplevel
3672 # make and thus we'd get different behavior depending on where we built the
3673 # sources.
3674 if test x$exec_prefix = xNONE -o x$exec_prefix = x$prefix; then
3675     gcc_tooldir='$(libsubdir)/$(unlibsubdir)/../$(target_noncanonical)'
3676 else
3677 changequote(<<, >>)dnl
3678 # An explanation of the sed strings:
3679 #  -e 's|^\$(prefix)||'   matches and eliminates 'prefix' from 'exec_prefix'
3680 #  -e 's|/$||'            match a trailing forward slash and eliminates it
3681 #  -e 's|^[^/]|/|'        forces the string to start with a forward slash (*)
3682 #  -e 's|/[^/]*|../|g'    replaces each occurrence of /<directory> with ../
3683 #
3684 # (*) Note this pattern overwrites the first character of the string
3685 # with a forward slash if one is not already present.  This is not a
3686 # problem because the exact names of the sub-directories concerned is
3687 # unimportant, just the number of them matters.
3688 #
3689 # The practical upshot of these patterns is like this:
3690 #
3691 #  prefix     exec_prefix        result
3692 #  ------     -----------        ------
3693 #   /foo        /foo/bar          ../
3694 #   /foo/       /foo/bar          ../
3695 #   /foo        /foo/bar/         ../
3696 #   /foo/       /foo/bar/         ../
3697 #   /foo        /foo/bar/ugg      ../../
3698 #
3699     dollar='$$'
3700     gcc_tooldir="\$(libsubdir)/\$(unlibsubdir)/\`echo \$(exec_prefix) | sed -e 's|^\$(prefix)||' -e 's|/\$(dollar)||' -e 's|^[^/]|/|' -e 's|/[^/]*|../|g'\`\$(target_noncanonical)"
3701 changequote([, ])dnl
3702 fi
3703 AC_SUBST(gcc_tooldir)
3704 AC_SUBST(dollar)
3705
3706 # Find a directory in which to install a shared libgcc.
3707
3708 AC_ARG_ENABLE(version-specific-runtime-libs,
3709 [  --enable-version-specific-runtime-libs
3710                           specify that runtime libraries should be
3711                           installed in a compiler-specific directory])
3712
3713 AC_ARG_WITH(slibdir,
3714 [  --with-slibdir=DIR      shared libraries in DIR [[LIBDIR]]],
3715 slibdir="$with_slibdir",
3716 if test "${enable_version_specific_runtime_libs+set}" = set; then
3717   slibdir='$(libsubdir)'
3718 elif test "$host" != "$target"; then
3719   slibdir='$(build_tooldir)/lib'
3720 else
3721   slibdir='$(libdir)'
3722 fi)
3723 AC_SUBST(slibdir)
3724
3725 objdir=`${PWDCMD-pwd}`
3726 AC_SUBST(objdir)
3727
3728 AC_ARG_WITH(datarootdir,
3729 [  --with-datarootdir=DIR  Use DIR as the data root [[PREFIX/share]]],
3730 datarootdir="\${prefix}/$with_datarootdir",
3731 datarootdir='$(prefix)/share')
3732 AC_SUBST(datarootdir)
3733
3734 AC_ARG_WITH(docdir,
3735 [  --with-docdir=DIR       Install documentation in DIR [[DATAROOTDIR]]],
3736 docdir="\${prefix}/$with_docdir",
3737 docdir='$(datarootdir)')
3738 AC_SUBST(docdir)
3739
3740 AC_ARG_WITH(htmldir,
3741 [  --with-htmldir=DIR      html documentation in in DIR [[DOCDIR]]],
3742 htmldir="\${prefix}/$with_htmldir",
3743 htmldir='$(docdir)')
3744 AC_SUBST(htmldir)
3745
3746 # Substitute configuration variables
3747 AC_SUBST(subdirs)
3748 AC_SUBST(srcdir)
3749 AC_SUBST(all_compilers)
3750 AC_SUBST(all_gtfiles)
3751 AC_SUBST(all_lang_makefrags)
3752 AC_SUBST(all_lang_makefiles)
3753 AC_SUBST(all_languages)
3754 AC_SUBST(all_selected_languages)
3755 AC_SUBST(build_exeext)
3756 AC_SUBST(build_install_headers_dir)
3757 AC_SUBST(build_xm_file_list)
3758 AC_SUBST(build_xm_include_list)
3759 AC_SUBST(build_xm_defines)
3760 AC_SUBST(check_languages)
3761 AC_SUBST(cpp_install_dir)
3762 AC_SUBST(xmake_file)
3763 AC_SUBST(tmake_file)
3764 AC_SUBST(extra_gcc_objs)
3765 AC_SUBST(extra_headers_list)
3766 AC_SUBST(extra_objs)
3767 AC_SUBST(extra_parts)
3768 AC_SUBST(extra_passes)
3769 AC_SUBST(extra_programs)
3770 AC_SUBST(float_h_file)
3771 AC_SUBST(gcc_config_arguments)
3772 AC_SUBST(gcc_gxx_include_dir)
3773 AC_SUBST(host_exeext)
3774 AC_SUBST(host_xm_file_list)
3775 AC_SUBST(host_xm_include_list)
3776 AC_SUBST(host_xm_defines)
3777 AC_SUBST(out_host_hook_obj)
3778 AC_SUBST(install)
3779 AC_SUBST(lang_opt_files)
3780 AC_SUBST(lang_specs_files)
3781 AC_SUBST(lang_tree_files)
3782 AC_SUBST(local_prefix)
3783 AC_SUBST(md_file)
3784 AC_SUBST(objc_boehm_gc)
3785 AC_SUBST(out_file)
3786 AC_SUBST(out_object_file)
3787 AC_SUBST(thread_file)
3788 AC_SUBST(tm_file_list)
3789 AC_SUBST(tm_include_list)
3790 AC_SUBST(tm_defines)
3791 AC_SUBST(tm_p_file_list)
3792 AC_SUBST(tm_p_include_list)
3793 AC_SUBST(xm_file_list)
3794 AC_SUBST(xm_include_list)
3795 AC_SUBST(xm_defines)
3796 AC_SUBST(c_target_objs)
3797 AC_SUBST(cxx_target_objs)
3798 AC_SUBST(target_cpu_default)
3799
3800 AC_SUBST_FILE(language_hooks)
3801
3802 # Echo link setup.
3803 if test x${build} = x${host} ; then
3804   if test x${host} = x${target} ; then
3805     echo "Links are now set up to build a native compiler for ${target}." 1>&2
3806   else
3807     echo "Links are now set up to build a cross-compiler" 1>&2
3808     echo " from ${host} to ${target}." 1>&2
3809   fi
3810 else
3811   if test x${host} = x${target} ; then
3812     echo "Links are now set up to build (on ${build}) a native compiler" 1>&2
3813     echo " for ${target}." 1>&2
3814   else
3815     echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2
3816     echo " from ${host} to ${target}." 1>&2
3817   fi
3818 fi
3819
3820 AC_ARG_VAR(GMPLIBS,[How to link GMP])
3821 AC_ARG_VAR(GMPINC,[How to find GMP include files])
3822
3823 # Configure the subdirectories
3824 # AC_CONFIG_SUBDIRS($subdirs)
3825
3826 # Create the Makefile
3827 # and configure language subdirectories
3828 AC_CONFIG_FILES($all_outputs)
3829
3830 AC_CONFIG_COMMANDS([default],
3831 [
3832 case ${CONFIG_HEADERS} in
3833   *auto-host.h:config.in*)
3834   echo > cstamp-h ;;
3835 esac
3836 # Make sure all the subdirs exist.
3837 for d in $subdirs doc build
3838 do
3839     test -d $d || mkdir $d
3840 done
3841 ], 
3842 [subdirs='$subdirs'])
3843 AC_OUTPUT