OSDN Git Service

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