OSDN Git Service

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