2 # Process this file with autoconf to generate a configuration script.
4 # Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
5 # 2007, 2008 Free Software Foundation, Inc.
7 #This file is part of GCC.
9 #GCC is free software; you can redistribute it and/or modify it under
10 #the terms of the GNU General Public License as published by the Free
11 #Software Foundation; either version 3, or (at your option) any later
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
19 #You should have received a copy of the GNU General Public License
20 #along with GCC; see the file COPYING3. If not see
21 #<http://www.gnu.org/licenses/>.
23 # --------------------------------
24 # Initialization and sanity checks
25 # --------------------------------
29 AC_CONFIG_SRCDIR(tree.c)
30 AC_CONFIG_HEADER(auto-host.h:config.in)
32 gcc_version=`cat $srcdir/BASE-VER`
34 # Determine the host, build, and target systems
39 # Determine the noncanonical target name, for directory use.
40 ACX_NONCANONICAL_TARGET
42 # Determine the target- and build-specific subdirectories
45 # Set program_transform_name
48 # Check for bogus environment variables.
49 # Test if LIBRARY_PATH contains the notation for the current directory
50 # since this would lead to problems installing/building glibc.
51 # LIBRARY_PATH contains the current directory if one of the following
53 # - one of the terminals (":" and ";") is the first or last sign
54 # - two terminals occur directly after each other
55 # - the path contains an element with a dot in it
56 AC_MSG_CHECKING(LIBRARY_PATH variable)
58 case ${LIBRARY_PATH} in
59 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
60 library_path_setting="contains current directory"
63 library_path_setting="ok"
67 AC_MSG_RESULT($library_path_setting)
68 if test "$library_path_setting" != "ok"; then
70 *** LIBRARY_PATH shouldn't contain the current directory when
71 *** building gcc. Please change the environment variable
72 *** and run configure again.])
75 # Test if GCC_EXEC_PREFIX contains the notation for the current directory
76 # since this would lead to problems installing/building glibc.
77 # GCC_EXEC_PREFIX contains the current directory if one of the following
79 # - one of the terminals (":" and ";") is the first or last sign
80 # - two terminals occur directly after each other
81 # - the path contains an element with a dot in it
82 AC_MSG_CHECKING(GCC_EXEC_PREFIX variable)
84 case ${GCC_EXEC_PREFIX} in
85 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
86 gcc_exec_prefix_setting="contains current directory"
89 gcc_exec_prefix_setting="ok"
93 AC_MSG_RESULT($gcc_exec_prefix_setting)
94 if test "$gcc_exec_prefix_setting" != "ok"; then
96 *** GCC_EXEC_PREFIX shouldn't contain the current directory when
97 *** building gcc. Please change the environment variable
98 *** and run configure again.])
105 # Specify the local prefix
107 AC_ARG_WITH(local-prefix,
108 [ --with-local-prefix=DIR specifies directory to put local include],
109 [case "${withval}" in
110 yes) AC_MSG_ERROR(bad value ${withval} given for local include directory prefix) ;;
112 *) local_prefix=$with_local_prefix ;;
115 # Default local prefix if it is empty
116 if test x$local_prefix = x; then
117 local_prefix=/usr/local
120 # Don't set gcc_gxx_include_dir to gxx_include_dir since that's only
121 # passed in by the toplevel make and thus we'd get different behavior
122 # depending on where we built the sources.
124 # Specify the g++ header file directory
125 AC_ARG_WITH(gxx-include-dir,
126 [ --with-gxx-include-dir=DIR
127 specifies directory to put g++ header files],
128 [case "${withval}" in
129 yes) AC_MSG_ERROR(bad value ${withval} given for g++ include directory) ;;
131 *) gcc_gxx_include_dir=$with_gxx_include_dir ;;
134 # This logic must match libstdc++-v3/acinclude.m4:GLIBCXX_EXPORT_INSTALL_INFO.
135 if test x${gcc_gxx_include_dir} = x; then
136 if test x${enable_version_specific_runtime_libs} = xyes; then
137 gcc_gxx_include_dir='${libsubdir}/include/c++'
139 libstdcxx_incdir='include/c++/$(version)'
140 if test x$host != x$target; then
141 libstdcxx_incdir="$target_alias/$libstdcxx_incdir"
143 gcc_gxx_include_dir="\$(libsubdir)/\$(libsubdir_to_prefix)$libstdcxx_incdir"
147 AC_ARG_WITH(cpp_install_dir,
148 [ --with-cpp-install-dir=DIR
149 install the user visible C preprocessor in DIR
150 (relative to PREFIX) as well as PREFIX/bin],
151 [if test x$withval = xyes; then
152 AC_MSG_ERROR([option --with-cpp-install-dir requires an argument])
153 elif test x$withval != xno; then
154 cpp_install_dir=$withval
157 # We would like to our source tree to be readonly. However when releases or
158 # pre-releases are generated, the flex/bison generated files as well as the
159 # various formats of manuals need to be included along with the rest of the
160 # sources. Therefore we have --enable-generated-files-in-srcdir to do
163 AC_MSG_CHECKING([whether to place generated files in the source directory])
164 dnl generated-files-in-srcdir is disabled by default
165 AC_ARG_ENABLE(generated-files-in-srcdir,
166 [ --enable-generated-files-in-srcdir
167 put copies of generated files in source dir
168 intended for creating source tarballs for users
169 without texinfo bison or flex.],
170 generated_files_in_srcdir=$enableval,
171 generated_files_in_srcdir=no)
173 AC_MSG_RESULT($generated_files_in_srcdir)
175 if test "$generated_files_in_srcdir" = "yes"; then
182 # -------------------
183 # Find default linker
184 # -------------------
188 [ --with-gnu-ld arrange to work with GNU ld.],
189 gnu_ld_flag="$with_gnu_ld",
192 # With pre-defined ld
194 [ --with-ld arrange to use the specified ld (full pathname)],
195 DEFAULT_LINKER="$with_ld")
196 if test x"${DEFAULT_LINKER+set}" = x"set"; then
197 if test ! -x "$DEFAULT_LINKER"; then
198 AC_MSG_ERROR([cannot execute: $DEFAULT_LINKER: check --with-ld or env. var. DEFAULT_LINKER])
199 elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
202 AC_DEFINE_UNQUOTED(DEFAULT_LINKER,"$DEFAULT_LINKER",
203 [Define to enable the use of a default linker.])
206 gnu_ld=`if test x"$gnu_ld_flag" = x"yes"; then echo 1; else echo 0; fi`
207 AC_DEFINE_UNQUOTED(HAVE_GNU_LD, $gnu_ld, [Define if using GNU ld.])
209 AC_MSG_CHECKING([whether a default linker was specified])
210 if test x"${DEFAULT_LINKER+set}" = x"set"; then
211 if test x"$gnu_ld_flag" = x"no"; then
212 AC_MSG_RESULT([yes ($DEFAULT_LINKER)])
214 AC_MSG_RESULT([yes ($DEFAULT_LINKER - GNU ld)])
220 # With demangler in GNU ld
221 AC_ARG_WITH(demangler-in-ld,
222 [ --with-demangler-in-ld try to use demangler in GNU ld.],
223 demangler_in_ld="$with_demangler_in_ld",
226 # ----------------------
227 # Find default assembler
228 # ----------------------
232 [ --with-gnu-as arrange to work with GNU as],
233 gas_flag="$with_gnu_as",
237 [ --with-as arrange to use the specified as (full pathname)],
238 DEFAULT_ASSEMBLER="$with_as")
239 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
240 if test ! -x "$DEFAULT_ASSEMBLER"; then
241 AC_MSG_ERROR([cannot execute: $DEFAULT_ASSEMBLER: check --with-as or env. var. DEFAULT_ASSEMBLER])
242 elif $DEFAULT_ASSEMBLER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
245 AC_DEFINE_UNQUOTED(DEFAULT_ASSEMBLER,"$DEFAULT_ASSEMBLER",
246 [Define to enable the use of a default assembler.])
249 gnu_as=`if test x"$gas_flag" = x"yes"; then echo 1; else echo 0; fi`
250 AC_DEFINE_UNQUOTED(HAVE_GNU_AS, $gnu_as, [Define if using GNU as.])
252 AC_MSG_CHECKING([whether a default assembler was specified])
253 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
254 if test x"$gas_flag" = x"no"; then
255 AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER)])
257 AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)])
267 # If a non-executable a.out is present (e.g. created by GNU as above even if
268 # invoked with -v only), the IRIX 6 native ld just overwrites the existing
269 # file, even when creating an executable, so an execution test fails.
270 # Remove possible default executable files to avoid this.
272 # FIXME: This really belongs into AC_PROG_CC and can be removed once
273 # Autoconf includes it.
274 rm -f a.out a.exe b.out
276 # Find the native compiler
279 ACX_PROG_GNAT([-I"$srcdir"/ada])
281 # autoconf is lame and doesn't give us any substitution variable for this.
282 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
283 NO_MINUS_C_MINUS_O=yes
285 OUTPUT_OPTION='-o $@'
287 AC_SUBST(NO_MINUS_C_MINUS_O)
288 AC_SUBST(OUTPUT_OPTION)
290 # Remove the -O2: for historical reasons, unless bootstrapping we prefer
291 # optimizations to be activated explicitly by the toplevel.
294 *) CFLAGS=`echo $CFLAGS | sed "s/-O[[s0-9]]* *//" ` ;;
298 # -------------------------
299 # Check C compiler features
300 # -------------------------
302 AC_USE_SYSTEM_EXTENSIONS
306 # sizeof(char) is 1 by definition.
307 AC_CHECK_SIZEOF(void *)
308 AC_CHECK_SIZEOF(short)
310 AC_CHECK_SIZEOF(long)
311 AC_CHECK_TYPES([long long], [AC_CHECK_SIZEOF(long long)])
312 AC_CHECK_TYPES([__int64], [AC_CHECK_SIZEOF(__int64)])
314 # ---------------------
315 # Warnings and checking
316 # ---------------------
318 # Check $CC warning features (if it's GCC).
319 # We want to use -pedantic, but we don't want warnings about
323 # So, we only use -pedantic if we can disable those warnings.
325 ACX_PROG_CC_WARNING_OPTS([-W -Wall -Wwrite-strings -Wstrict-prototypes \
326 -Wmissing-prototypes -Wcast-qual], [loose_warn])
327 ACX_PROG_CC_WARNING_OPTS([-Wold-style-definition -Wc++-compat \
328 -Wmissing-format-attribute], [strict_warn])
329 ACX_PROG_CC_WARNING_ALMOST_PEDANTIC([-Wno-long-long -Wno-variadic-macros \
330 -Wno-overlength-strings], [strict_warn])
331 ACX_PROG_CC_WARNINGS_ARE_ERRORS([manual], [strict_warn])
333 # The above macros do nothing if the compiler is not GCC. However, the
334 # Makefile has more goo to add other flags, so this variabl is used to
335 # enables warnings only for GCC.
337 if test "x$GCC" = "xyes"; then
338 warn_cflags='$(GCC_WARN_CFLAGS)'
340 AC_SUBST(warn_cflags)
342 # Enable expensive internal checks
344 if test x"`cat $srcdir/DEV-PHASE`" != xexperimental; then
348 AC_ARG_ENABLE(checking,
349 [ --enable-checking[=LIST]
350 enable expensive run-time checks. With LIST,
351 enable only specific categories of checks.
352 Categories are: yes,no,all,none,release.
353 Flags are: assert,df,fold,gc,gcac,gimple,misc,
354 rtlflag,rtl,runtime,tree,valgrind,types.],
355 [ac_checking_flags="${enableval}"],[
356 # Determine the default checks.
357 if test x$is_release = x ; then
358 ac_checking_flags=yes
360 ac_checking_flags=release
362 IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="$IFS,"
363 for check in release $ac_checking_flags
366 # these set all the flags to specific states
367 yes) ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking= ;
368 ac_fold_checking= ; ac_gc_checking=1 ;
369 ac_gc_always_collect= ; ac_gimple_checking=1 ; ac_rtl_checking= ;
370 ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
371 ac_tree_checking=1 ; ac_valgrind_checking= ;
372 ac_types_checking=1 ;;
373 no|none) ac_assert_checking= ; ac_checking= ; ac_df_checking= ;
374 ac_fold_checking= ; ac_gc_checking= ;
375 ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
376 ac_rtlflag_checking= ; ac_runtime_checking= ;
377 ac_tree_checking= ; ac_valgrind_checking= ;
378 ac_types_checking= ;;
379 all) ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking=1 ;
380 ac_fold_checking=1 ; ac_gc_checking=1 ;
381 ac_gc_always_collect=1 ; ac_gimple_checking=1 ; ac_rtl_checking=1 ;
382 ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
383 ac_tree_checking=1 ; ac_valgrind_checking= ;
384 ac_types_checking=1 ;;
385 release) ac_assert_checking=1 ; ac_checking= ; ac_df_checking= ;
386 ac_fold_checking= ; ac_gc_checking= ;
387 ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
388 ac_rtlflag_checking= ; ac_runtime_checking=1 ;
389 ac_tree_checking= ; ac_valgrind_checking= ;
390 ac_types_checking= ;;
391 # these enable particular checks
392 assert) ac_assert_checking=1 ;;
393 df) ac_df_checking=1 ;;
394 fold) ac_fold_checking=1 ;;
395 gc) ac_gc_checking=1 ;;
396 gcac) ac_gc_always_collect=1 ;;
397 gimple) ac_gimple_checking=1 ;;
398 misc) ac_checking=1 ;;
399 rtl) ac_rtl_checking=1 ;;
400 rtlflag) ac_rtlflag_checking=1 ;;
401 runtime) ac_runtime_checking=1 ;;
402 tree) ac_tree_checking=1 ;;
403 types) ac_types_checking=1 ;;
404 valgrind) ac_valgrind_checking=1 ;;
405 *) AC_MSG_ERROR(unknown check category $check) ;;
411 if test x$ac_checking != x ; then
412 AC_DEFINE(ENABLE_CHECKING, 1,
413 [Define if you want more run-time sanity checks. This one gets a grab
414 bag of miscellaneous but relatively cheap checks.])
415 nocommon_flag=-fno-common
417 AC_SUBST(nocommon_flag)
418 if test x$ac_df_checking != x ; then
419 AC_DEFINE(ENABLE_DF_CHECKING, 1,
420 [Define if you want more run-time sanity checks for dataflow.])
422 if test x$ac_assert_checking != x ; then
423 AC_DEFINE(ENABLE_ASSERT_CHECKING, 1,
424 [Define if you want assertions enabled. This is a cheap check.])
426 if test x$ac_gimple_checking != x ; then
427 AC_DEFINE(ENABLE_GIMPLE_CHECKING, 1,
428 [Define if you want operations on GIMPLE (the basic data structure of
429 the high-level optimizers) to be checked for dynamic type safety at
430 runtime. This is moderately expensive.])
432 GCC_TARGET_TEMPLATE(ENABLE_RUNTIME_CHECKING)
433 if test x$ac_runtime_checking != x ; then
434 AC_DEFINE(ENABLE_RUNTIME_CHECKING, 1,
435 [Define if you want runtime assertions enabled. This is a cheap check.])
437 if test x$ac_tree_checking != x ; then
438 AC_DEFINE(ENABLE_TREE_CHECKING, 1,
439 [Define if you want all operations on trees (the basic data
440 structure of the front ends) to be checked for dynamic type safety
441 at runtime. This is moderately expensive. The tree browser debugging
442 routines will also be enabled by this option.
444 TREEBROWSER=tree-browser.o
446 if test x$ac_types_checking != x ; then
447 AC_DEFINE(ENABLE_TYPES_CHECKING, 1,
448 [Define if you want all gimple types to be verified after gimplifiation.
452 AC_SUBST(TREEBROWSER)
453 if test x$ac_rtl_checking != x ; then
454 AC_DEFINE(ENABLE_RTL_CHECKING, 1,
455 [Define if you want all operations on RTL (the basic data structure
456 of the optimizer and back end) to be checked for dynamic type safety
457 at runtime. This is quite expensive.])
459 if test x$ac_rtlflag_checking != x ; then
460 AC_DEFINE(ENABLE_RTL_FLAG_CHECKING, 1,
461 [Define if you want RTL flag accesses to be checked against the RTL
462 codes that are supported for each access macro. This is relatively
465 if test x$ac_gc_checking != x ; then
466 AC_DEFINE(ENABLE_GC_CHECKING, 1,
467 [Define if you want the garbage collector to do object poisoning and
468 other memory allocation checks. This is quite expensive.])
470 if test x$ac_gc_always_collect != x ; then
471 AC_DEFINE(ENABLE_GC_ALWAYS_COLLECT, 1,
472 [Define if you want the garbage collector to operate in maximally
473 paranoid mode, validating the entire heap and collecting garbage at
474 every opportunity. This is extremely expensive.])
476 if test x$ac_fold_checking != x ; then
477 AC_DEFINE(ENABLE_FOLD_CHECKING, 1,
478 [Define if you want fold checked that it never destructs its argument.
479 This is quite expensive.])
481 valgrind_path_defines=
484 dnl # This check AC_REQUIREs various stuff, so it *must not* be inside
485 dnl # an if statement. This was the source of very frustrating bugs
486 dnl # in converting to autoconf 2.5x!
487 AC_CHECK_HEADER(valgrind.h, have_valgrind_h=yes, have_valgrind_h=no)
489 if test x$ac_valgrind_checking != x ; then
490 # It is certainly possible that there's valgrind but no valgrind.h.
491 # GCC relies on making annotations so we must have both.
492 AC_MSG_CHECKING(for VALGRIND_DISCARD in <valgrind/memcheck.h>)
493 AC_PREPROC_IFELSE([AC_LANG_SOURCE(
494 [[#include <valgrind/memcheck.h>
495 #ifndef VALGRIND_DISCARD
496 #error VALGRIND_DISCARD not defined
498 [gcc_cv_header_valgrind_memcheck_h=yes],
499 [gcc_cv_header_valgrind_memcheck_h=no])
500 AC_MSG_RESULT($gcc_cv_header_valgrind_memcheck_h)
501 AC_MSG_CHECKING(for VALGRIND_DISCARD in <memcheck.h>)
502 AC_PREPROC_IFELSE([AC_LANG_SOURCE(
503 [[#include <memcheck.h>
504 #ifndef VALGRIND_DISCARD
505 #error VALGRIND_DISCARD not defined
507 [gcc_cv_header_memcheck_h=yes],
508 [gcc_cv_header_memcheck_h=no])
509 AC_MSG_RESULT($gcc_cv_header_memcheck_h)
510 AM_PATH_PROG_WITH_TEST(valgrind_path, valgrind,
511 [$ac_dir/$ac_word --version | grep valgrind- >/dev/null 2>&1])
512 if test "x$valgrind_path" = "x" \
513 || (test $have_valgrind_h = no \
514 && test $gcc_cv_header_memcheck_h = no \
515 && test $gcc_cv_header_valgrind_memcheck_h = no); then
516 AC_MSG_ERROR([*** Can't find both valgrind and valgrind/memcheck.h, memcheck.h or valgrind.h])
518 valgrind_path_defines=-DVALGRIND_PATH='\"'$valgrind_path'\"'
519 valgrind_command="$valgrind_path -q"
520 AC_DEFINE(ENABLE_VALGRIND_CHECKING, 1,
521 [Define if you want to run subprograms and generated programs
522 through valgrind (a memory checker). This is extremely expensive.])
523 if test $gcc_cv_header_valgrind_memcheck_h = yes; then
524 AC_DEFINE(HAVE_VALGRIND_MEMCHECK_H, 1,
525 [Define if valgrind's valgrind/memcheck.h header is installed.])
527 if test $gcc_cv_header_memcheck_h = yes; then
528 AC_DEFINE(HAVE_MEMCHECK_H, 1,
529 [Define if valgrind's memcheck.h header is installed.])
532 AC_SUBST(valgrind_path_defines)
533 AC_SUBST(valgrind_command)
535 # Enable code coverage collection
536 AC_ARG_ENABLE(coverage,
537 [ --enable-coverage[=LEVEL]
538 enable compiler's code coverage collection.
539 Use to measure compiler performance and locate
540 unused parts of the compiler. With LEVEL, specify
541 optimization. Values are opt, noopt,
543 [case "${enableval}" in
545 coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O0"
548 coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O2"
551 # a.k.a. --disable-coverage
555 AC_MSG_ERROR(unknown coverage setting $enableval)
559 AC_SUBST(coverage_flags)
561 AC_ARG_ENABLE(gather-detailed-mem-stats,
562 [ --enable-gather-detailed-mem-stats enable detailed memory allocation stats gathering], [],
563 [enable_gather_detailed_mem_stats=no])
564 if test x$enable_gather_detailed_mem_stats = xyes ; then
565 AC_DEFINE(GATHER_STATISTICS, 1,
566 [Define to enable detailed memory allocation stats gathering.])
569 # -------------------------------
570 # Miscenalleous configure options
571 # -------------------------------
575 [ --with-stabs arrange to use stabs instead of host debug format],
579 # Determine whether or not multilibs are enabled.
580 AC_ARG_ENABLE(multilib,
581 [ --enable-multilib enable library support for multiple ABIs],
582 [], [enable_multilib=yes])
583 AC_SUBST(enable_multilib)
585 # Enable __cxa_atexit for C++.
586 AC_ARG_ENABLE(__cxa_atexit,
587 [ --enable-__cxa_atexit enable __cxa_atexit for C++],
590 # Enable C extension for decimal float if target supports it.
591 AC_ARG_ENABLE(decimal-float,
592 [ --enable-decimal-float={no,yes,bid,dpd}
593 enable decimal float extension to C. Selecting 'bid'
594 or 'dpd' choses which decimal floating point format
597 case $enable_decimal_float in
598 yes | no | bid | dpd) ;;
599 *) AC_MSG_ERROR(['$enable_decimal_float' is an invalid value for --enable-decimal-float.
600 Valid choices are 'yes', 'bid', 'dpd', and 'no'.]) ;;
605 powerpc*-*-linux* | i?86*-*-linux* | x86_64*-*-linux*)
606 enable_decimal_float=yes
609 AC_MSG_WARN(decimal float is not supported for this target, ignored)
610 enable_decimal_float=no
615 dfp=`if test $enable_decimal_float != no; then echo 1; else echo 0; fi`
616 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_FLOAT, $dfp,
617 [Define to 1 to enable decimal float extension to C.])
619 # x86's use BID format instead of DPD
620 case x$enable_decimal_float in
623 i?86*-*-linux* | x86_64*-*-linux*)
624 enable_decimal_float=bid
627 enable_decimal_float=dpd
632 # ENABLE_DECIMAL_FLOAT is set to 0. But we have to have proper
633 # dependency on libdecnumber.
634 enable_decimal_float=dpd
637 AC_SUBST(enable_decimal_float)
639 bid=`if test $enable_decimal_float = bid; then echo 1; else echo 0; fi`
640 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_BID_FORMAT, $bid,
641 [Define to 1 to specify that we are using the BID decimal floating
642 point format instead of DPD])
644 # Enable C extension for fixed-point arithmetic.
645 AC_ARG_ENABLE(fixed-point,
646 [ --enable-fixed-point enable fixed-point arithmetic extension to C],
654 AC_MSG_WARN(fixed-point is not supported on IRIX, ignored)
655 enable_fixed_point=no
658 enable_fixed_point=yes
663 AC_MSG_WARN(fixed-point is not supported for this target, ignored)
664 enable_fixed_point=no
668 AC_SUBST(enable_fixed_point)
670 fixedpoint=`if test $enable_fixed_point = yes; then echo 1; else echo 0; fi`
671 AC_DEFINE_UNQUOTED(ENABLE_FIXED_POINT, $fixedpoint,
672 [Define to 1 to enable fixed-point arithmetic extension to C.])
675 # Pass with no value to take the default
676 # Pass with a value to specify a thread package
677 AC_ARG_ENABLE(threads,
678 [ --enable-threads enable thread usage for target GCC
679 --enable-threads=LIB use LIB thread package for target GCC],,
683 [ --enable-tls enable or disable generation of tls code
684 overriding the assembler check for tls support],
688 *) AC_MSG_ERROR(['$enable_tls' is an invalid value for --enable-tls.
689 Valid choices are 'yes' and 'no'.]) ;;
693 AC_ARG_ENABLE(objc-gc,
694 [ --enable-objc-gc enable the use of Boehm's garbage collector with
695 the GNU Objective-C runtime],
696 if test x$enable_objc_gc = xno; then
704 [ --with-dwarf2 force the default debug format to be DWARF 2],
705 dwarf2="$with_dwarf2",
708 AC_ARG_ENABLE(shared,
709 [ --disable-shared don't provide a shared libgcc],
711 case $enable_shared in
715 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
716 for pkg in $enableval; do
717 if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
724 ], [enable_shared=yes])
725 AC_SUBST(enable_shared)
727 AC_ARG_WITH(build-sysroot,
728 [ --with-build-sysroot=sysroot
729 use sysroot as the system root during the build])
732 [ --with-sysroot[=DIR] Search for usr/lib, usr/include, et al, within DIR.],
734 case ${with_sysroot} in
735 yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;;
736 *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
739 TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
740 CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
742 if test "x$prefix" = xNONE; then
743 test_prefix=/usr/local
747 if test "x$exec_prefix" = xNONE; then
748 test_exec_prefix=$test_prefix
750 test_exec_prefix=$exec_prefix
752 case ${TARGET_SYSTEM_ROOT} in
753 "${test_prefix}"|"${test_prefix}/"*|\
754 "${test_exec_prefix}"|"${test_exec_prefix}/"*|\
755 '${prefix}'|'${prefix}/'*|\
756 '${exec_prefix}'|'${exec_prefix}/'*)
757 t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
758 TARGET_SYSTEM_ROOT_DEFINE="$t"
763 TARGET_SYSTEM_ROOT_DEFINE=
764 CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
766 AC_SUBST(TARGET_SYSTEM_ROOT)
767 AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
768 AC_SUBST(CROSS_SYSTEM_HEADER_DIR)
770 # Build with intermodule optimisations
771 AC_ARG_ENABLE(intermodule,
772 [ --enable-intermodule build the compiler in one step],
773 [case ${enable_intermodule} in
774 yes) onestep="-onestep";;
780 ACX_PKGVERSION([GCC])
781 ACX_BUGURL([http://gcc.gnu.org/bugs.html])
783 # Sanity check enable_languages in case someone does not run the toplevel
784 # configure # script.
785 AC_ARG_ENABLE(languages,
786 [ --enable-languages=LIST specify which front-ends to build],
787 [case ,${enable_languages}, in
789 # go safe -- we cannot be much sure without the toplevel
791 # analysis of which target libs are present and usable
795 AC_MSG_ERROR([only the toplevel supports --enable-languages=all])
800 enable_languages=c,${enable_languages}
803 [enable_languages=c])
805 # Used by documentation targets
806 AC_SUBST(datarootdir)
810 # -------------------------
811 # Checks for other programs
812 # -------------------------
816 # Find some useful tools
818 # We need awk to create options.c and options.h.
819 # Bail out if it's missing.
821 "") AC_MSG_ERROR([can't build without awk, bailing out]) ;;
829 # By default, the Darwin ranlib will not treat common symbols as
830 # definitions when building the archive table of contents. Other
831 # ranlibs do that; pass an option to the Darwin ranlib that makes
832 # it behave similarly.
838 AC_SUBST(ranlib_flags)
842 # See if cmp has --ignore-initial.
843 gcc_AC_PROG_CMP_IGNORE_INITIAL
845 # See if we have the mktemp command.
846 AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
848 # See if makeinfo has been installed and is modern enough
849 # that we can use it.
850 ACX_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
851 [GNU texinfo.* \([0-9][0-9.]*\)],
852 [4.[7-9]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-9]*])
853 if test $gcc_cv_prog_makeinfo_modern = no; then
855 *** Makeinfo is missing or too old.
856 *** Info documentation will not be built.])
863 # Is pod2man recent enough to regenerate manpages?
864 AC_MSG_CHECKING([for recent Pod::Man])
865 if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
867 GENERATED_MANPAGES=generated-manpages
872 AC_SUBST(GENERATED_MANPAGES)
874 MISSING="${CONFIG_SHELL-/bin/sh} $ac_aux_dir/missing"
877 dnl Don't use AC_PROG_LEX; we insist on flex.
878 dnl LEXLIB is not useful in gcc.
879 AC_CHECK_PROGS([FLEX], flex, [$MISSING flex])
882 AC_CHECK_PROGS([BISON], bison, [$MISSING bison])
884 # Binutils are not build modules, unlike bison/flex/makeinfo. So we
885 # check for build == host before using them.
888 if test x${build} = x${host} && test -f $srcdir/../binutils/nm.c \
889 && test -d ../binutils ; then
890 NM='$(objdir)/../binutils/nm-new'
892 AC_CHECK_PROG(NM, nm, nm, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing nm)
896 if test x${build} = x${host} && test -f $srcdir/../binutils/ar.c \
897 && test -d ../binutils ; then
898 AR='$(objdir)/../binutils/ar'
900 AC_CHECK_PROG(AR, ar, ar, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing ar)
904 # --------------------
905 # Checks for C headers
906 # --------------------
908 # Need to reject headers which give warnings, so that the -Werror bootstrap
909 # works later. *sigh* This needs to come before all header checks.
916 AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
917 fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
918 sys/resource.h sys/param.h sys/times.h sys/stat.h \
919 direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
921 # Check for thread headers.
922 AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
923 AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
925 # These tests can't be done till we know if we have limits.h.
934 # These libraries may be used by collect2.
935 # We may need a special search path to get them linked.
936 AC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs,
938 for libs in '' -lld -lmld \
939 '-L/usr/lib/cmplrs/cc2.11 -lmld' \
940 '-L/usr/lib/cmplrs/cc3.11 -lmld'
943 AC_TRY_LINK_FUNC(ldopen,
944 [gcc_cv_collect2_libs="$libs"; break])
947 test -z "$gcc_cv_collect2_libs" && gcc_cv_collect2_libs='none required'])
948 case $gcc_cv_collect2_libs in
950 *) COLLECT2_LIBS=$gcc_cv_collect2_libs ;;
952 AC_SUBST(COLLECT2_LIBS)
954 # When building Ada code on Alpha, we need exc_resume which is usually in
955 # -lexc. So test for it.
958 AC_SEARCH_LIBS(exc_resume, exc)
961 AC_SUBST(GNAT_LIBEXC)
963 # Some systems put ldexp and frexp in libm instead of libc; assume
964 # they're both in the same place. jcf-dump needs them.
967 AC_SEARCH_LIBS(ldexp, m)
972 # Use <inttypes.h> only if it exists,
973 # doesn't clash with <sys/types.h>, and declares intmax_t.
974 AC_MSG_CHECKING(for inttypes.h)
975 AC_CACHE_VAL(gcc_cv_header_inttypes_h,
976 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
977 [[#include <sys/types.h>
978 #include <inttypes.h>]],
979 [[intmax_t i = -1;]])],
980 [gcc_cv_header_inttypes_h=yes],
981 [gcc_cv_header_inttypes_h=no])])
982 AC_MSG_RESULT($gcc_cv_header_inttypes_h)
983 if test $gcc_cv_header_inttypes_h = yes; then
984 AC_DEFINE(HAVE_INTTYPES_H, 1,
985 [Define if you have a working <inttypes.h> header file.])
988 dnl Disabled until we have a complete test for buggy enum bitfields.
989 dnl gcc_AC_C_ENUM_BF_UNSIGNED
991 define(gcc_UNLOCKED_FUNCS, clearerr_unlocked feof_unlocked dnl
992 ferror_unlocked fflush_unlocked fgetc_unlocked fgets_unlocked dnl
993 fileno_unlocked fprintf_unlocked fputc_unlocked fputs_unlocked dnl
994 fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl
995 putchar_unlocked putc_unlocked)
996 AC_CHECK_FUNCS(times clock kill getrlimit setrlimit atoll atoq \
997 sysconf strsignal getrusage nl_langinfo \
998 gettimeofday mbstowcs wcswidth mmap mincore setlocale \
1001 if test x$ac_cv_func_mbstowcs = xyes; then
1002 AC_CACHE_CHECK(whether mbstowcs works, gcc_cv_func_mbstowcs_works,
1003 [ AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
1009 [gcc_cv_func_mbstowcs_works=yes],
1010 [gcc_cv_func_mbstowcs_works=no],
1011 [gcc_cv_func_mbstowcs_works=yes])])
1012 if test x$gcc_cv_func_mbstowcs_works = xyes; then
1013 AC_DEFINE(HAVE_WORKING_MBSTOWCS, 1,
1014 [Define this macro if mbstowcs does not crash when its
1015 first argument is NULL.])
1019 AC_CHECK_TYPE(ssize_t, int)
1020 AC_CHECK_TYPE(caddr_t, char *)
1022 # Try to determine the array type of the second argument of getgroups
1023 # for the target system (int or gid_t).
1025 if test "${target}" = "${build}"; then
1026 TARGET_GETGROUPS_T=$ac_cv_type_getgroups
1029 # This condition may need some tweaking. It should include all
1030 # targets where the array type of the second argument of getgroups
1031 # is int and the type of gid_t is not equivalent to int.
1032 *-*-sunos* | *-*-ultrix*)
1033 TARGET_GETGROUPS_T=int
1036 TARGET_GETGROUPS_T=gid_t
1040 AC_SUBST(TARGET_GETGROUPS_T)
1042 gcc_AC_FUNC_MMAP_BLACKLIST
1046 # Under VMS, vfork works very differently than on Unix. The standard test
1047 # won't work, and it isn't easily adaptable. It makes more sense to
1049 ac_cv_func_vfork_works=yes
1055 # Until we have in-tree GNU iconv:
1057 AC_SUBST(LIBICONV_DEP)
1063 # We will need to find libiberty.h and ansidecl.h
1064 saved_CFLAGS="$CFLAGS"
1065 CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include"
1066 gcc_AC_CHECK_DECLS(getenv atol asprintf sbrk abort atof getcwd getwd \
1067 strsignal strstr strverscmp \
1068 errno snprintf vsnprintf vasprintf malloc realloc calloc \
1069 free basename getopt clock getpagesize gcc_UNLOCKED_FUNCS, , ,[
1070 #include "ansidecl.h"
1071 #include "system.h"])
1073 gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
1074 #include "ansidecl.h"
1076 #ifdef HAVE_SYS_RESOURCE_H
1077 #include <sys/resource.h>
1081 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1082 #include "ansidecl.h"
1084 #ifdef HAVE_SYS_RESOURCE_H
1085 #include <sys/resource.h>
1087 ]], [[rlim_t l = 0;]])],[],[AC_DEFINE([rlim_t],[long],
1088 [Define to `long' if <sys/resource.h> doesn't define.])])
1090 # On AIX 5.2, <ldfcn.h> conflicts with <fcntl.h>, as both define incompatible
1091 # FREAD and FWRITE macros. Fortunately, for GCC's single usage of ldgetname
1092 # in collect2.c, <fcntl.h> isn't visible, but the configure test below needs
1093 # to undef these macros to get the correct value for HAVE_DECL_LDGETNAME.
1094 gcc_AC_CHECK_DECLS(ldgetname, , ,[
1095 #include "ansidecl.h"
1104 gcc_AC_CHECK_DECLS(times, , ,[
1105 #include "ansidecl.h"
1107 #ifdef HAVE_SYS_TIMES_H
1108 #include <sys/times.h>
1112 gcc_AC_CHECK_DECLS(sigaltstack, , ,[
1113 #include "ansidecl.h"
1118 # More time-related stuff.
1119 AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
1120 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1121 #include "ansidecl.h"
1123 #ifdef HAVE_SYS_TIMES_H
1124 #include <sys/times.h>
1126 ]], [[struct tms tms;]])],[ac_cv_struct_tms=yes],[ac_cv_struct_tms=no])])
1127 if test $ac_cv_struct_tms = yes; then
1128 AC_DEFINE(HAVE_STRUCT_TMS, 1,
1129 [Define if <sys/times.h> defines struct tms.])
1132 # use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
1133 # revisit after autoconf 2.50.
1134 AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
1135 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1136 #include "ansidecl.h"
1138 ]], [[clock_t x;]])],[gcc_cv_type_clock_t=yes],[gcc_cv_type_clock_t=no])])
1139 if test $gcc_cv_type_clock_t = yes; then
1140 AC_DEFINE(HAVE_CLOCK_T, 1,
1141 [Define if <time.h> defines clock_t.])
1144 # Restore CFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
1145 CFLAGS="$saved_CFLAGS"
1147 gcc_AC_INITFINI_ARRAY
1149 # mkdir takes a single argument on some systems.
1150 gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
1158 # With Setjmp/Longjmp based exception handling.
1159 AC_ARG_ENABLE(sjlj-exceptions,
1160 [ --enable-sjlj-exceptions
1161 arrange to use setjmp/longjmp exception handling],
1164 if test $enableval != yes; then
1165 AC_MSG_WARN([dwarf2 exceptions not supported, sjlj exceptions forced])
1170 force_sjlj_exceptions=yes],
1173 force_sjlj_exceptions=yes
1177 force_sjlj_exceptions=no
1180 if test $force_sjlj_exceptions = yes; then
1181 sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi`
1182 AC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj,
1183 [Define 0/1 to force the choice for exception handling model.])
1186 # For platforms with the unwind ABI which includes an unwind library,
1187 # libunwind, we can choose to use the system libunwind.
1188 AC_ARG_WITH(system-libunwind,
1189 [ --with-system-libunwind use installed libunwind])
1191 # config.gcc also contains tests of with_system_libunwind.
1192 if test x$with_system_libunwind = xyes; then
1193 AC_DEFINE(HAVE_GETIPINFO, 1,
1194 [Define to 1 if system unwind library has _Unwind_GetIPInfo.])
1197 # --------------------------------------------------------
1198 # Build, host, and target specific configuration fragments
1199 # --------------------------------------------------------
1201 # Collect build-machine-specific information.
1202 . ${srcdir}/config.build
1204 # Collect host-machine-specific information.
1205 . ${srcdir}/config.host
1209 # Collect target-machine-specific information.
1210 . ${srcdir}/config.gcc
1212 extra_objs="${host_extra_objs} ${extra_objs}"
1213 extra_gcc_objs="${host_extra_gcc_objs} ${extra_gcc_objs}"
1215 # Default the target-machine variables that were not explicitly set.
1216 if test x"$tm_file" = x
1217 then tm_file=$cpu_type/$cpu_type.h; fi
1219 if test x"$extra_headers" = x
1220 then extra_headers=; fi
1222 if test x$md_file = x
1223 then md_file=$cpu_type/$cpu_type.md; fi
1225 if test x$out_file = x
1226 then out_file=$cpu_type/$cpu_type.c; fi
1228 if test x"$tmake_file" = x
1229 then tmake_file=$cpu_type/t-$cpu_type
1232 if test x"$dwarf2" = xyes
1233 then tm_file="$tm_file tm-dwarf2.h"
1236 # Say what files are being used for the output code and MD file.
1237 echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
1238 echo "Using \`$srcdir/config/$md_file' as machine description file."
1240 # If any of the xm_file variables contain nonexistent files, warn
1241 # about them and drop them.
1244 for x in $build_xm_file; do
1245 if test -f $srcdir/config/$x
1247 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1253 for x in $host_xm_file; do
1254 if test -f $srcdir/config/$x
1256 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1262 for x in $xm_file; do
1263 if test -f $srcdir/config/$x
1265 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1271 for f in $tm_file; do
1274 if test $count = ax; then
1275 echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
1277 echo "Using the following target machine macro files:"
1278 for f in $tm_file; do
1279 echo " $srcdir/config/$f"
1283 if test x$need_64bit_hwint = xyes; then
1284 AC_DEFINE(NEED_64BIT_HOST_WIDE_INT, 1,
1285 [Define to 1 if HOST_WIDE_INT must be 64 bits wide (see hwint.h).])
1288 if test x$use_long_long_for_widest_fast_int = xyes; then
1289 AC_DEFINE(USE_LONG_LONG_FOR_WIDEST_FAST_INT, 1,
1290 [Define to 1 if the 'long long' (or '__int64') is wider than 'long' but still
1291 efficiently supported by the host hardware.])
1295 for f in $host_xm_file; do
1298 if test $count = a; then
1300 elif test $count = ax; then
1301 echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
1303 echo "Using the following host machine macro files:"
1304 for f in $host_xm_file; do
1305 echo " $srcdir/config/$f"
1308 echo "Using ${out_host_hook_obj} for host machine hooks."
1310 if test "$host_xm_file" != "$build_xm_file"; then
1312 for f in $build_xm_file; do
1315 if test $count = a; then
1317 elif test $count = ax; then
1318 echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
1320 echo "Using the following build machine macro files:"
1321 for f in $build_xm_file; do
1322 echo " $srcdir/config/$f"
1329 AC_CACHE_CHECK([whether mcontext_t fields have underscores],
1330 gcc_cv_mcontext_underscores,
1332 #include <sys/cdefs.h>
1333 #include <sys/signal.h>
1334 #include <ucontext.h>
1335 int main() { mcontext_t m; if (m->ss.srr0) return 0; return 0; }
1337 gcc_cv_mcontext_underscores=no, gcc_cv_mcontext_underscores=yes))
1338 if test $gcc_cv_mcontext_underscores = yes; then
1339 AC_DEFINE(HAS_MCONTEXT_T_UNDERSCORES,,dnl
1340 [mcontext_t fields start with __])
1349 # Check if a valid thread package
1350 case ${enable_threads} in
1353 target_thread_file='single'
1357 target_thread_file='single'
1359 aix | dce | gnat | irix | posix | posix95 | rtems | \
1360 single | solaris | vxworks | win32 | mipssde)
1361 target_thread_file=${enable_threads}
1364 echo "${enable_threads} is an unknown thread package" 1>&2
1369 if test x${thread_file} = x; then
1370 # No thread file set by target-specific clauses in config.gcc,
1371 # so use file chosen by default logic above
1372 thread_file=${target_thread_file}
1375 # Make gthr-default.h if we have a thread file.
1377 if test $thread_file != single; then
1378 echo "#include \"gthr-${thread_file}.h\"" > gthr-default.h-t
1379 if diff gthr-default.h-t gthr-default.h 2>/dev/null; then
1380 rm -f gthr-default.h-t
1382 mv -f gthr-default.h-t gthr-default.h
1384 gthread_flags=-DHAVE_GTHR_DEFAULT
1386 AC_SUBST(gthread_flags)
1393 if test x$enable___cxa_atexit = xyes || \
1394 test x$enable___cxa_atexit = x -a x$default_use_cxa_atexit = xyes; then
1395 if test x$host = x$target; then
1397 # mingw32 doesn't have __cxa_atexit but uses atexit registration
1398 # keyed to flag_use_cxa_atexit
1403 AC_CHECK_FUNC(__cxa_atexit,[use_cxa_atexit=yes],
1404 [echo "__cxa_atexit can't be enabled on this target"])
1408 # We can't check for __cxa_atexit when building a cross, so assume
1412 if test x$use_cxa_atexit = xyes; then
1413 AC_DEFINE(DEFAULT_USE_CXA_ATEXIT, 2,
1414 [Define if you want to use __cxa_atexit, rather than atexit, to
1415 register C++ destructors for local statics and global objects.
1416 This is essential for fully standards-compliant handling of
1417 destructors, but requires __cxa_atexit in libc.])
1422 if test x$with_system_libunwind = xyes; then
1423 if test x$host = x$target; then
1424 AC_SEARCH_LIBS(_Unwind_GetIPInfo, unwind,, [use_getipinfo=no])
1427 GCC_TARGET_TEMPLATE(HAVE_GETIPINFO)
1428 if test x$use_getipinfo = xyes; then
1429 AC_DEFINE(HAVE_GETIPINFO, 1,
1430 [Define to 1 if system unwind library has _Unwind_GetIPInfo.])
1432 echo "The system unwind library does not support _Unwind_GetIPInfo."
1435 # Look for a file containing extra machine modes.
1436 if test -n "$extra_modes" && test -f $srcdir/config/$extra_modes; then
1437 extra_modes_file='$(srcdir)'/config/${extra_modes}
1438 AC_SUBST(extra_modes_file)
1439 AC_DEFINE_UNQUOTED(EXTRA_MODES_FILE, "config/$extra_modes",
1440 [Define to the name of a file containing a list of extra machine modes
1441 for this architecture.])
1444 # Convert extra_options into a form suitable for Makefile use.
1446 for f in $extra_options; do
1447 extra_opt_files="$extra_opt_files \$(srcdir)/config/$f"
1449 AC_SUBST(extra_opt_files)
1451 # auto-host.h is the file containing items generated by autoconf and is
1452 # the first file included by config.h.
1453 # If host=build, it is correct to have bconfig include auto-host.h
1454 # as well. If host!=build, we are in error and need to do more
1455 # work to find out the build config parameters.
1456 if test x$host = x$build
1458 build_auto=auto-host.h
1460 # We create a subdir, then run autoconf in the subdir.
1461 # To prevent recursion we set host and build for the new
1462 # invocation of configure to the build for this invocation
1469 /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
1470 *) realsrcdir=../${srcdir};;
1472 saved_CFLAGS="${CFLAGS}"
1473 CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
1474 LDFLAGS="${LDFLAGS_FOR_BUILD}" \
1475 ${realsrcdir}/configure \
1476 --enable-languages=${enable_languages-all} \
1477 --target=$target_alias --host=$build_alias --build=$build_alias
1478 CFLAGS="${saved_CFLAGS}"
1480 # We just finished tests for the build machine, so rename
1481 # the file auto-build.h in the gcc directory.
1482 mv auto-host.h ../auto-build.h
1485 build_auto=auto-build.h
1487 AC_SUBST(build_subdir)
1489 tm_file="${tm_file} defaults.h"
1490 tm_p_file="${tm_p_file} tm-preds.h"
1491 host_xm_file="auto-host.h ansidecl.h ${host_xm_file}"
1492 build_xm_file="${build_auto} ansidecl.h ${build_xm_file}"
1493 # We don't want ansidecl.h in target files, write code there in ISO/GNU C.
1494 # put this back in temporarily.
1495 xm_file="auto-host.h ansidecl.h ${xm_file}"
1502 # Compile in configure arguments.
1503 if test -f configargs.h ; then
1504 # Being re-configured.
1505 gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'`
1506 gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
1508 gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
1511 # Double all backslashes and backslash all quotes to turn
1512 # gcc_config_arguments into a C string.
1513 sed -e 's/\\/\\\\/g; s/"/\\"/g' <<EOF >conftest.out
1514 $gcc_config_arguments
1516 gcc_config_arguments_str=`cat conftest.out`
1519 cat > configargs.h <<EOF
1520 /* Generated automatically. */
1521 static const char configuration_arguments[] = "$gcc_config_arguments_str";
1522 static const char thread_model[] = "$thread_file";
1524 static const struct {
1525 const char *name, *value;
1526 } configure_default_options[] = $configure_default_options;
1530 # Internationalization
1531 ZW_GNU_GETTEXT_SISTER_DIR
1533 # If LIBINTL contains LIBICONV, then clear LIBICONV so we don't get
1534 # -liconv on the link line twice.
1535 case "$LIBINTL" in *$LIBICONV*)
1539 AC_ARG_ENABLE(secureplt,
1540 [ --enable-secureplt enable -msecure-plt by default for PowerPC],
1544 [ --enable-cld enable -mcld by default for 32bit x86], [],
1547 # Windows32 Registry support for specifying GCC installation paths.
1548 AC_ARG_ENABLE(win32-registry,
1549 [ --disable-win32-registry
1550 disable lookup of installation paths in the
1551 Registry on Windows hosts
1552 --enable-win32-registry enable registry lookup (default)
1553 --enable-win32-registry=KEY
1554 use KEY instead of GCC version as the last portion
1555 of the registry key],,)
1558 win32 | pe | cygwin* | mingw32* | uwin*)
1559 if test "x$enable_win32_registry" != xno; then
1560 AC_SEARCH_LIBS(RegOpenKeyExA, advapi32,, [enable_win32_registry=no])
1563 if test "x$enable_win32_registry" != xno; then
1564 AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
1565 [Define to 1 if installation paths should be looked up in the Windows
1566 Registry. Ignored on non-Windows hosts.])
1568 if test "x$enable_win32_registry" != xyes \
1569 && test "x$enable_win32_registry" != x; then
1570 AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$enable_win32_registry",
1571 [Define to be the last component of the Windows registry key under which
1572 to look for installation paths. The full key used will be
1573 HKEY_LOCAL_MACHINE/SOFTWARE/Free Software Foundation/{WIN32_REGISTRY_KEY}.
1574 The default is the GCC version number.])
1580 # Get an absolute path to the GCC top-level source directory
1581 holddir=`${PWDCMD-pwd}`
1583 topdir=`${PWDCMD-pwd}`
1586 # Conditionalize the makefile for this host machine.
1588 for f in ${host_xmake_file}
1590 if test -f ${srcdir}/config/$f
1592 xmake_file="${xmake_file} \$(srcdir)/config/$f"
1596 # Conditionalize the makefile for this target machine.
1598 for f in ${tmake_file}
1600 if test -f ${srcdir}/config/$f
1602 tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
1605 tmake_file="${tmake_file_}"
1607 # This is a terrible hack which will go away some day.
1608 host_cc_for_libada=${CC}
1609 AC_SUBST(host_cc_for_libada)
1611 out_object_file=`basename $out_file .c`.o
1613 tm_file_list="options.h"
1614 tm_include_list="options.h"
1615 for f in $tm_file; do
1618 f=`echo $f | sed 's/^..//'`
1619 tm_file_list="${tm_file_list} $f"
1620 tm_include_list="${tm_include_list} $f"
1623 tm_file_list="${tm_file_list} \$(srcdir)/$f"
1624 tm_include_list="${tm_include_list} $f"
1627 tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
1628 tm_include_list="${tm_include_list} config/$f"
1635 for f in $tm_p_file; do
1638 tm_p_file_list="${tm_p_file_list} $f"
1639 tm_p_include_list="${tm_p_include_list} $f"
1642 tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f"
1643 tm_p_include_list="${tm_p_include_list} config/$f"
1649 for f in $xm_file; do
1652 xm_file_list="${xm_file_list} \$(srcdir)/../include/$f"
1653 xm_include_list="${xm_include_list} $f"
1656 xm_file_list="${xm_file_list} $f"
1657 xm_include_list="${xm_include_list} $f"
1660 xm_file_list="${xm_file_list} \$(srcdir)/config/$f"
1661 xm_include_list="${xm_include_list} config/$f"
1667 host_xm_include_list=
1668 for f in $host_xm_file; do
1671 host_xm_file_list="${host_xm_file_list} \$(srcdir)/../include/$f"
1672 host_xm_include_list="${host_xm_include_list} $f"
1675 host_xm_file_list="${host_xm_file_list} $f"
1676 host_xm_include_list="${host_xm_include_list} $f"
1679 host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f"
1680 host_xm_include_list="${host_xm_include_list} config/$f"
1686 for f in $build_xm_file; do
1689 build_xm_file_list="${build_xm_file_list} \$(srcdir)/../include/$f"
1690 build_xm_include_list="${build_xm_include_list} $f"
1692 auto-build.h | auto-host.h )
1693 build_xm_file_list="${build_xm_file_list} $f"
1694 build_xm_include_list="${build_xm_include_list} $f"
1697 build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f"
1698 build_xm_include_list="${build_xm_include_list} config/$f"
1703 # Define macro CROSS_DIRECTORY_STRUCTURE in compilation if this is a
1704 # cross-compiler which does not use the native headers and libraries.
1705 # Also use all.cross instead of all.internal and adjust SYSTEM_HEADER_DIR.
1706 CROSS= AC_SUBST(CROSS)
1707 ALL=all.internal AC_SUBST(ALL)
1708 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' AC_SUBST(SYSTEM_HEADER_DIR)
1710 if test "x$with_build_sysroot" != x; then
1711 build_system_header_dir=$with_build_sysroot'$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
1713 # This value is used, even on a native system, because
1714 # CROSS_SYSTEM_HEADER_DIR is just
1715 # $(TARGET_SYSTEM_ROOT)$(NATIVE_SYSTEM_HEADER_DIR).
1716 build_system_header_dir='$(CROSS_SYSTEM_HEADER_DIR)'
1719 if test x$host != x$target
1721 CROSS="-DCROSS_DIRECTORY_STRUCTURE"
1723 SYSTEM_HEADER_DIR=$build_system_header_dir
1724 case "$host","$target" in
1725 # Darwin crosses can use the host system's libraries and headers,
1726 # because of the fat library support. Of course, it must be the
1727 # same version of Darwin on both sides. Allow the user to
1728 # just say --target=foo-darwin without a version number to mean
1729 # "the version on this system".
1730 *-*-darwin*,*-*-darwin*)
1731 hostos=`echo $host | sed 's/.*-darwin/darwin/'`
1732 targetos=`echo $target | sed 's/.*-darwin/darwin/'`
1733 if test $hostos = $targetos -o $targetos = darwin ; then
1735 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)'
1740 i?86-*-*,x86_64-*-* \
1741 | powerpc*-*-*,powerpc64*-*-*)
1742 CROSS="$CROSS -DNATIVE_CROSS" ;;
1744 elif test "x$TARGET_SYSTEM_ROOT" != x; then
1745 SYSTEM_HEADER_DIR=$build_system_header_dir
1748 # If this is a cross-compiler that does not
1749 # have its own set of headers then define
1752 # If this is using newlib, without having the headers available now,
1753 # then define inhibit_libc in LIBGCC2_CFLAGS.
1754 # This prevents libgcc2 from containing any code which requires libc
1756 : ${inhibit_libc=false}
1757 if { { test x$host != x$target && test "x$with_sysroot" = x ; } ||
1758 test x$with_newlib = xyes ; } &&
1759 { test "x$with_headers" = x || test "x$with_headers" = xno ; } ; then
1762 AC_SUBST(inhibit_libc)
1764 # When building gcc with a cross-compiler, we need to adjust things so
1765 # that the generator programs are still built with the native compiler.
1766 # Also, we cannot run fixincludes or fix-header.
1768 # These are the normal (build=host) settings:
1769 CC_FOR_BUILD='$(CC)' AC_SUBST(CC_FOR_BUILD)
1770 BUILD_CFLAGS='$(ALL_CFLAGS)' AC_SUBST(BUILD_CFLAGS)
1771 BUILD_LDFLAGS='$(LDFLAGS)' AC_SUBST(BUILD_LDFLAGS)
1772 STMP_FIXINC=stmp-fixinc AC_SUBST(STMP_FIXINC)
1774 # Possibly disable fixproto, on a per-target basis.
1775 case ${use_fixproto} in
1780 STMP_FIXPROTO=stmp-fixproto
1783 AC_SUBST(STMP_FIXPROTO)
1785 # And these apply if build != host, or we are generating coverage data
1786 if test x$build != x$host || test "x$coverage_flags" != x
1788 BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
1789 BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
1791 if test "x$TARGET_SYSTEM_ROOT" = x; then
1792 if test "x$STMP_FIXPROTO" != x; then
1793 STMP_FIXPROTO=stmp-install-fixproto
1798 # Expand extra_headers to include complete path.
1799 # This substitutes for lots of t-* files.
1801 # Prepend $(srcdir)/config/${cpu_type}/ to every entry in extra_headers.
1802 for file in ${extra_headers} ; do
1803 extra_headers_list="${extra_headers_list} \$(srcdir)/config/${cpu_type}/${file}"
1806 # If use_gcc_tgmath is set, append ginclude/tgmath.h.
1807 if test x"$use_gcc_tgmath" = xyes
1808 then extra_headers_list="${extra_headers_list} \$(srcdir)/ginclude/tgmath.h"
1811 # Define collect2 in Makefile.
1812 case $host_can_use_collect2 in
1814 *) collect2='collect2$(exeext)' ;;
1816 AC_SUBST([collect2])
1818 # Add a definition of USE_COLLECT2 if system wants one.
1819 case $use_collect2 in
1820 no) use_collect2= ;;
1823 host_xm_defines="${host_xm_defines} USE_COLLECT2"
1824 xm_defines="${xm_defines} USE_COLLECT2"
1825 case $host_can_use_collect2 in
1827 AC_MSG_ERROR([collect2 is required but cannot be built on this system])
1833 # ---------------------------
1834 # Assembler & linker features
1835 # ---------------------------
1837 # During stage 2, ld is actually gcc/collect-ld, which is a small script to
1838 # discern between when to use prev-ld/ld-new and when to use ld/ld-new.
1839 # However when ld-new is first executed from the build tree, libtool will
1840 # relink it as .libs/lt-ld-new, so that it can give it an RPATH that refers
1841 # to the build tree. While doing this we need to use the previous-stage
1842 # linker, or we have an infinite loop. The presence of a shell script as
1843 # ld/ld-new, and the fact that the script *uses ld itself*, is what confuses
1844 # the gcc/collect-ld script. So we need to know how libtool works, or
1845 # exec-tool will fail.
1847 m4_defun([_LT_CONFIG_COMMANDS], [])
1850 AC_SUBST(enable_fast_install)
1852 # Identify the assembler which will work hand-in-glove with the newly
1853 # built GCC, so that we can examine its features. This is the assembler
1854 # which will be driven by the driver program.
1856 # If build != host, and we aren't building gas in-tree, we identify a
1857 # build->target assembler and hope that it will have the same features
1858 # as the host->target assembler we'll be using.
1859 gcc_cv_gas_major_version=
1860 gcc_cv_gas_minor_version=
1861 gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
1863 m4_pattern_allow([AS_FOR_TARGET])dnl
1864 AS_VAR_SET_IF(gcc_cv_as,, [
1865 if test -x "$DEFAULT_ASSEMBLER"; then
1866 gcc_cv_as="$DEFAULT_ASSEMBLER"
1867 elif test -f $gcc_cv_as_gas_srcdir/configure.in \
1868 && test -f ../gas/Makefile \
1869 && test x$build = x$host; then
1870 gcc_cv_as=../gas/as-new$build_exeext
1871 elif test -x as$build_exeext; then
1872 # Build using assembler in the current directory.
1873 gcc_cv_as=./as$build_exeext
1874 elif test -x $AS_FOR_TARGET; then
1875 gcc_cv_as="$AS_FOR_TARGET"
1877 AC_PATH_PROG(gcc_cv_as, $AS_FOR_TARGET)
1880 ORIGINAL_AS_FOR_TARGET=$gcc_cv_as
1881 AC_SUBST(ORIGINAL_AS_FOR_TARGET)
1882 case "$ORIGINAL_AS_FOR_TARGET" in
1883 ./as | ./as$build_exeext) ;;
1884 *) AC_CONFIG_FILES(as:exec-tool.in, [chmod +x as]) ;;
1887 AC_MSG_CHECKING(what assembler to use)
1888 if test "$gcc_cv_as" = ../gas/as-new$build_exeext; then
1889 # Single tree build which includes gas. We want to prefer it
1890 # over whatever linker top-level may have detected, since
1891 # we'll use what we're building after installation anyway.
1892 AC_MSG_RESULT(newly built gas)
1894 _gcc_COMPUTE_GAS_VERSION
1895 in_tree_gas_is_elf=no
1896 if grep 'obj_format = elf' ../gas/Makefile > /dev/null \
1897 || (grep 'obj_format = multi' ../gas/Makefile \
1898 && grep 'extra_objects =.* obj-elf' ../gas/Makefile) > /dev/null
1900 in_tree_gas_is_elf=yes
1903 AC_MSG_RESULT($gcc_cv_as)
1907 # Identify the linker which will work hand-in-glove with the newly
1908 # built GCC, so that we can examine its features. This is the linker
1909 # which will be driven by the driver program.
1911 # If build != host, and we aren't building gas in-tree, we identify a
1912 # build->target linker and hope that it will have the same features
1913 # as the host->target linker we'll be using.
1914 gcc_cv_gld_major_version=
1915 gcc_cv_gld_minor_version=
1916 gcc_cv_ld_gld_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/ld
1917 gcc_cv_ld_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
1919 AS_VAR_SET_IF(gcc_cv_ld,, [
1920 if test -x "$DEFAULT_LINKER"; then
1921 gcc_cv_ld="$DEFAULT_LINKER"
1922 elif test -f $gcc_cv_ld_gld_srcdir/configure.in \
1923 && test -f ../ld/Makefile \
1924 && test x$build = x$host; then
1925 gcc_cv_ld=../ld/ld-new$build_exeext
1926 elif test -x collect-ld$build_exeext; then
1927 # Build using linker in the current directory.
1928 gcc_cv_ld=./collect-ld$build_exeext
1929 elif test -x $LD_FOR_TARGET; then
1930 gcc_cv_ld="$LD_FOR_TARGET"
1932 AC_PATH_PROG(gcc_cv_ld, $LD_FOR_TARGET)
1935 ORIGINAL_LD_FOR_TARGET=$gcc_cv_ld
1936 AC_SUBST(ORIGINAL_LD_FOR_TARGET)
1937 case "$ORIGINAL_LD_FOR_TARGET" in
1938 ./collect-ld | ./collect-ld$build_exeext) ;;
1939 *) AC_CONFIG_FILES(collect-ld:exec-tool.in, [chmod +x collect-ld]) ;;
1942 AC_MSG_CHECKING(what linker to use)
1943 if test "$gcc_cv_ld" = ../ld/ld-new$build_exeext; then
1944 # Single tree build which includes ld. We want to prefer it
1945 # over whatever linker top-level may have detected, since
1946 # we'll use what we're building after installation anyway.
1947 AC_MSG_RESULT(newly built ld)
1949 in_tree_ld_is_elf=no
1950 if (grep 'EMUL = .*elf' ../ld/Makefile \
1951 || grep 'EMUL = .*linux' ../ld/Makefile \
1952 || grep 'EMUL = .*lynx' ../ld/Makefile) > /dev/null; then
1953 in_tree_ld_is_elf=yes
1955 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
1958 gcc_cv_gld_version=`sed -n -e 's/^[ ]*\(VERSION=[0-9]*\.[0-9]*.*\)/\1/p' < $f`
1959 if test x$gcc_cv_gld_version != x; then
1963 gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
1964 gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
1967 AC_MSG_RESULT($gcc_cv_ld)
1971 # Figure out what nm we will be using.
1972 gcc_cv_binutils_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/binutils
1973 AS_VAR_SET_IF(gcc_cv_nm,, [
1974 if test -f $gcc_cv_binutils_srcdir/configure.in \
1975 && test -f ../binutils/Makefile \
1976 && test x$build = x$host; then
1977 gcc_cv_nm=../binutils/nm-new$build_exeext
1978 elif test -x nm$build_exeext; then
1979 gcc_cv_nm=./nm$build_exeext
1980 elif test -x $NM_FOR_TARGET; then
1981 gcc_cv_nm="$NM_FOR_TARGET"
1983 AC_PATH_PROG(gcc_cv_nm, $NM_FOR_TARGET)
1986 AC_MSG_CHECKING(what nm to use)
1987 if test "$gcc_cv_nm" = ../binutils/nm-new$build_exeext; then
1988 # Single tree build which includes binutils.
1989 AC_MSG_RESULT(newly built nm)
1992 AC_MSG_RESULT($gcc_cv_nm)
1996 ORIGINAL_NM_FOR_TARGET=$gcc_cv_nm
1997 AC_SUBST(ORIGINAL_NM_FOR_TARGET)
1998 case "$ORIGINAL_NM_FOR_TARGET" in
1999 ./nm | ./nm$build_exeext) ;;
2000 *) AC_CONFIG_FILES(nm:exec-tool.in, [chmod +x nm]) ;;
2004 # Figure out what objdump we will be using.
2005 AS_VAR_SET_IF(gcc_cv_objdump,, [
2006 if test -f $gcc_cv_binutils_srcdir/configure.in \
2007 && test -f ../binutils/Makefile \
2008 && test x$build = x$host; then
2009 # Single tree build which includes binutils.
2010 gcc_cv_objdump=../binutils/objdump$build_exeext
2011 elif test -x objdump$build_exeext; then
2012 gcc_cv_objdump=./objdump$build_exeext
2013 elif test -x $OBJDUMP_FOR_TARGET; then
2014 gcc_cv_objdump="$OBJDUMP_FOR_TARGET"
2016 AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET)
2019 AC_MSG_CHECKING(what objdump to use)
2020 if test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then
2021 # Single tree build which includes binutils.
2022 AC_MSG_RESULT(newly built objdump)
2023 elif test x$gcc_cv_objdump = x; then
2024 AC_MSG_RESULT(not found)
2026 AC_MSG_RESULT($gcc_cv_objdump)
2029 # Figure out what assembler alignment features are present.
2030 gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,
2034 [AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN, 1,
2035 [Define if your assembler supports .balign and .p2align.])])
2037 gcc_GAS_CHECK_FEATURE([.p2align with maximum skip], gcc_cv_as_max_skip_p2align,
2040 [AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN, 1,
2041 [Define if your assembler supports specifying the maximum number
2042 of bytes to skip when using the GAS .p2align command.])])
2044 gcc_GAS_CHECK_FEATURE([.literal16], gcc_cv_as_literal16,
2047 [AC_DEFINE(HAVE_GAS_LITERAL16, 1,
2048 [Define if your assembler supports .literal16.])])
2050 gcc_GAS_CHECK_FEATURE([working .subsection -1], gcc_cv_as_subsection_m1,
2052 [conftest_label1: .word 0
2054 conftest_label2: .word 0
2056 [if test x$gcc_cv_nm != x; then
2057 $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
2058 $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
2059 if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1
2061 else gcc_cv_as_subsection_m1=yes
2063 rm -f conftest.nm1 conftest.nm2
2065 [AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
2066 [Define if your assembler supports .subsection and .subsection -1 starts
2067 emitting at the beginning of your section.])])
2069 gcc_GAS_CHECK_FEATURE([.weak], gcc_cv_as_weak,
2072 [AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])])
2074 gcc_GAS_CHECK_FEATURE([.weakref], gcc_cv_as_weakref,
2076 [ .weakref foobar, barfnot],,
2077 [AC_DEFINE(HAVE_GAS_WEAKREF, 1, [Define if your assembler supports .weakref.])])
2079 gcc_GAS_CHECK_FEATURE([.nsubspa comdat], gcc_cv_as_nsubspa_comdat,
2082 .NSUBSPA $CODE$,COMDAT],,
2083 [AC_DEFINE(HAVE_GAS_NSUBSPA_COMDAT, 1, [Define if your assembler supports .nsubspa comdat option.])])
2085 # .hidden needs to be supported in both the assembler and the linker,
2086 # because GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
2087 # This is irritatingly difficult to feature test for; we have to check the
2088 # date string after the version number. If we've got an in-tree
2089 # ld, we don't know its patchlevel version, so we set the baseline at 2.13
2091 # The gcc_GAS_CHECK_FEATURE call just sets a cache variable.
2092 gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden,
2097 AC_CACHE_CHECK(linker for .hidden support, gcc_cv_ld_hidden,
2098 [if test $in_tree_ld = yes ; then
2100 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 \
2101 && test $in_tree_ld_is_elf = yes; then
2102 gcc_cv_ld_hidden=yes
2105 gcc_cv_ld_hidden=yes
2106 ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
2107 if echo "$ld_ver" | grep GNU > /dev/null; then
2109 ld_vers=`echo $ld_ver | sed -n \
2110 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
2111 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'`
2112 ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2113 ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2114 ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
2115 if test 0"$ld_date" -lt 20020404; then
2116 if test -n "$ld_date"; then
2117 # If there was date string, but was earlier than 2002-04-04, fail
2119 elif test -z "$ld_vers"; then
2120 # If there was no date string nor ld version number, something is wrong
2123 test -z "$ld_vers_patch" && ld_vers_patch=0
2124 if test "$ld_vers_major" -lt 2; then
2126 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
2127 gcc_cv_ld_hidden="no"
2128 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 -a "$ld_vers_patch" -eq 0; then
2136 hppa64*-*-hpux* | ia64*-*-hpux*)
2137 gcc_cv_ld_hidden=yes
2145 libgcc_visibility=no
2146 AC_SUBST(libgcc_visibility)
2147 GCC_TARGET_TEMPLATE([HAVE_GAS_HIDDEN])
2148 if test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden = yes; then
2149 libgcc_visibility=yes
2150 AC_DEFINE(HAVE_GAS_HIDDEN, 1,
2151 [Define if your assembler and linker support .hidden.])
2154 # Check if we have .[us]leb128, and support symbol arithmetic with it.
2155 gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,
2163 [# GAS versions before 2.11 do not support uleb128,
2164 # despite appearing to.
2165 # ??? There exists an elf-specific test that will crash
2166 # the assembler. Perhaps it's better to figure out whether
2167 # arbitrary sections are supported and try the test.
2168 as_ver=`$gcc_cv_as --version 2>/dev/null | sed 1q`
2169 if echo "$as_ver" | grep GNU > /dev/null; then
2171 as_vers=`echo $as_ver | sed -n \
2172 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
2173 as_major=`expr "$as_vers" : '\([0-9]*\)'`
2174 as_minor=`expr "$as_vers" : '[0-9]*\.\([0-9]*\)'`
2176 if test $as_major -eq 2 && test $as_minor -lt 11
2178 else gcc_cv_as_leb128=yes
2181 [AC_DEFINE(HAVE_AS_LEB128, 1,
2182 [Define if your assembler supports .sleb128 and .uleb128.])])
2184 # GAS versions up to and including 2.11.0 may mis-optimize
2186 gcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame,
2194 .section .eh_frame,"aw",@progbits
2196 .4byte .LECIE1-.LSCIE1
2210 .4byte .LEFDE1-.LASFDE1
2212 .4byte .LASFDE1-__FRAME_BEGIN__
2220 [ dnl # For autoconf 2.5x, must protect trailing spaces with @&t@.
2221 cat > conftest.lit <<EOF
2222 0000 10000000 00000000 017a0001 781a0004 .........z..x...
2223 0010 01000000 12000000 18000000 00000000 ................
2224 0020 08000000 04080000 0044 .........D @&t@
2226 cat > conftest.big <<EOF
2227 0000 00000010 00000000 017a0001 781a0004 .........z..x...
2228 0010 00000001 00000012 00000018 00000000 ................
2229 0020 00000008 04000000 0844 .........D @&t@
2231 # If the assembler didn't choke, and we can objdump,
2232 # and we got the correct data, then succeed.
2233 # The text in the here-document typically retains its unix-style line
2234 # endings, while the output of objdump will use host line endings.
2235 # Therefore, use diff -b for the comparisons.
2236 if test x$gcc_cv_objdump != x \
2237 && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
2238 | tail -3 > conftest.got \
2239 && { diff -b conftest.lit conftest.got > /dev/null 2>&1 \
2240 || diff -b conftest.big conftest.got > /dev/null 2>&1; }
2242 gcc_cv_as_eh_frame=yes
2243 elif AC_TRY_COMMAND($gcc_cv_as -o conftest.o --traditional-format /dev/null); then
2244 gcc_cv_as_eh_frame=buggy
2246 # Uh oh, what do we do now?
2247 gcc_cv_as_eh_frame=no
2250 if test $gcc_cv_as_eh_frame = buggy; then
2251 AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
2252 [Define if your assembler mis-optimizes .eh_frame data.])
2255 gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2256 [elf,2,12,0], [--fatal-warnings],
2257 [.section .rodata.str, "aMS", @progbits, 1])
2258 if test $gcc_cv_as_shf_merge = no; then
2259 gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2260 [elf,2,12,0], [--fatal-warnings],
2261 [.section .rodata.str, "aMS", %progbits, 1])
2263 AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE,
2264 [`if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`],
2265 [Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.])
2267 gcc_GAS_CHECK_FEATURE(COMDAT group support, gcc_cv_as_comdat_group,
2268 [elf,2,16,0], [--fatal-warnings],
2269 [.section .text,"axG",@progbits,.foo,comdat])
2270 if test $gcc_cv_as_comdat_group = yes; then
2271 gcc_cv_as_comdat_group_percent=no
2273 gcc_GAS_CHECK_FEATURE(COMDAT group support, gcc_cv_as_comdat_group_percent,
2274 [elf,2,16,0], [--fatal-warnings],
2275 [.section .text,"axG",%progbits,.foo,comdat])
2277 if test $in_tree_ld != yes && test x"$ld_vers" != x; then
2279 if test 0"$ld_date" -lt 20050308; then
2280 if test -n "$ld_date"; then
2281 # If there was date string, but was earlier than 2005-03-08, fail
2283 elif test "$ld_vers_major" -lt 2; then
2285 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
2290 # assume linkers other than GNU ld don't support COMDAT group
2293 if test $comdat_group = no; then
2294 gcc_cv_as_comdat_group=no
2295 gcc_cv_as_comdat_group_percent=no
2297 AC_DEFINE_UNQUOTED(HAVE_COMDAT_GROUP,
2298 [`if test $gcc_cv_as_comdat_group = yes || test $gcc_cv_as_comdat_group_percent = yes; then echo 1; else echo 0; fi`],
2299 [Define 0/1 if your assembler and linker support COMDAT groups.])
2301 # Thread-local storage - the check is heavily parametrized.
2310 .section ".tdata","awT",@progbits
2313 ldq $27,__tls_get_addr($29) !literal!1
2314 lda $16,foo($29) !tlsgd!1
2315 jsr $26,($27),__tls_get_addr !lituse_tlsgd!1
2316 ldq $27,__tls_get_addr($29) !literal!2
2317 lda $16,foo($29) !tlsldm!2
2318 jsr $26,($27),__tls_get_addr !lituse_tlsldm!2
2319 ldq $1,foo($29) !gotdtprel
2320 ldah $2,foo($29) !dtprelhi
2321 lda $3,foo($2) !dtprello
2322 lda $4,foo($29) !dtprel
2323 ldq $1,foo($29) !gottprel
2324 ldah $2,foo($29) !tprelhi
2325 lda $3,foo($2) !tprello
2326 lda $4,foo($29) !tprel'
2329 tls_as_opt=--fatal-warnings
2333 .section ".tdata","awT",@progbits
2345 .section ".tdata","awT",@progbits
2349 addil LT%foo-$tls_gdidx$,gp
2350 ldo RT%foo-$tls_gdidx$(%r1),%arg0
2353 addil LT%foo-$tls_ldidx$,gp
2355 ldo RT%foo-$tls_ldidx$(%r1),%arg0
2356 addil LR%foo-$tls_dtpoff$,%ret0
2357 ldo RR%foo-$tls_dtpoff$(%r1),%t1
2359 addil LT%foo-$tls_ieoff$,gp
2360 ldw RT%foo-$tls_ieoff$(%r1),%t2
2363 addil LR%foo-$tls_leoff$,%t1
2364 ldo RR%foo-$tls_leoff$(%r1),%t2'
2367 tls_as_opt=--fatal-warnings
2371 .section ".tdata","awT",%progbits
2384 .section ".tdata","awT",@progbits
2388 leal foo@TLSGD(,%ebx,1), %eax
2389 leal foo@TLSLDM(%ebx), %eax
2390 leal foo@DTPOFF(%eax), %edx
2391 movl foo@GOTTPOFF(%ebx), %eax
2392 subl foo@GOTTPOFF(%ebx), %eax
2393 addl foo@GOTNTPOFF(%ebx), %eax
2394 movl foo@INDNTPOFF, %eax
2395 movl $foo@TPOFF, %eax
2396 subl $foo@TPOFF, %eax
2397 leal foo@NTPOFF(%ecx), %eax'
2400 tls_as_opt=--fatal-warnings
2404 .section ".tdata","awT",@progbits
2408 leaq foo@TLSGD(%rip), %rdi
2409 leaq foo@TLSLD(%rip), %rdi
2410 leaq foo@DTPOFF(%rax), %rdx
2411 movq foo@GOTTPOFF(%rip), %rax
2412 movq $foo@TPOFF, %rax'
2415 tls_as_opt=--fatal-warnings
2419 .section ".tdata","awT",@progbits
2422 addl r16 = @ltoff(@dtpmod(foo#)), gp
2423 addl r17 = @ltoff(@dtprel(foo#)), gp
2424 addl r18 = @ltoff(@tprel(foo#)), gp
2425 addl r19 = @dtprel(foo#), gp
2426 adds r21 = @dtprel(foo#), r13
2427 movl r23 = @dtprel(foo#)
2428 addl r20 = @tprel(foo#), gp
2429 adds r22 = @tprel(foo#), r13
2430 movl r24 = @tprel(foo#)'
2433 tls_as_opt=--fatal-warnings
2437 .section .tdata,"awT",@progbits
2441 addiu $4, $28, %tlsgd(x)
2442 addiu $4, $28, %tlsldm(x)
2443 lui $4, %dtprel_hi(x)
2444 addiu $4, $4, %dtprel_lo(x)
2445 lw $4, %gottprel(x)($28)
2446 lui $4, %tprel_hi(x)
2447 addiu $4, $4, %tprel_lo(x)'
2450 tls_as_opt='-32 --fatal-warnings'
2454 .section ".tdata","awT",@progbits
2462 addi 3,31,ld0@got@tlsgd
2464 addi 3,31,x1@got@tlsld
2467 addis 9,3,x2@dtprel@ha
2468 addi 9,9,x2@dtprel@l
2469 lwz 9,x3@got@tprel(31)
2472 addis 9,2,x2@tprel@ha
2473 addi 9,9,x2@tprel@l'
2476 tls_as_opt="-a32 --fatal-warnings"
2480 .section ".tdata","awT",@progbits
2488 addi 3,2,ld0@got@tlsgd
2494 addi 3,2,x1@got@tlsld
2500 addis 9,3,x2@dtprel@ha
2501 addi 9,9,x2@dtprel@l
2504 ld 9,x3@got@dtprel(2)
2510 tls_as_opt="-a64 --fatal-warnings"
2514 .section ".tdata","awT",@progbits
2523 l %r1,foo@GOTNTPOFF(%r12)
2524 l %r1,0(%r1):tls_load:foo
2525 bas %r14,0(%r1,%r13):tls_gdcall:foo
2526 bas %r14,0(%r1,%r13):tls_ldcall:foo'
2529 tls_as_opt="-m31 --fatal-warnings"
2533 .section ".tdata","awT",@progbits
2541 lg %r1,foo@GOTNTPOFF(%r12)
2542 larl %r1,foo@INDNTPOFF
2543 brasl %r14,__tls_get_offset@PLT:tls_gdcall:foo
2544 brasl %r14,__tls_get_offset@PLT:tls_ldcall:foo'
2547 tls_as_opt="-m64 -Aesame --fatal-warnings"
2549 sh-*-* | sh[34]-*-*)
2551 .section ".tdata","awT",@progbits
2561 tls_as_opt=--fatal-warnings
2565 sparc*-sun-solaris2.[56789]*)
2566 # TLS was introduced in the Solaris 9 4/04 release but
2567 # we do not enable it by default on Solaris 9 either.
2568 if test "x$enable_tls" = xyes ; then
2574 sparc*-sun-solaris2.*)
2581 if test x$on_solaris = xyes && test x$gas_flag = xno; then
2583 .section ".tdata",#alloc,#write,#tls
2586 sethi %tgd_hi22(foo), %o0
2587 add %o0, %tgd_lo10(foo), %o1
2588 add %l7, %o1, %o0, %tgd_add(foo)
2589 call __tls_get_addr, %tgd_call(foo)
2590 sethi %tldm_hi22(foo), %l1
2591 add %l1, %tldm_lo10(foo), %l2
2592 add %l7, %l2, %o0, %tldm_add(foo)
2593 call __tls_get_addr, %tldm_call(foo)
2594 sethi %tldo_hix22(foo), %l3
2595 xor %l3, %tldo_lox10(foo), %l4
2596 add %o0, %l4, %l5, %tldo_add(foo)
2597 sethi %tie_hi22(foo), %o3
2598 add %o3, %tie_lo10(foo), %o3
2599 ld [%l7 + %o3], %o2, %tie_ld(foo)
2600 add %g7, %o2, %o4, %tie_add(foo)
2601 sethi %tle_hix22(foo), %l1
2602 xor %l1, %tle_lox10(foo), %o5
2603 ld [%g7 + %o5], %o1'
2608 .section ".tdata","awT",@progbits
2611 sethi %tgd_hi22(foo), %o0
2612 add %o0, %tgd_lo10(foo), %o1
2613 add %l7, %o1, %o0, %tgd_add(foo)
2614 call __tls_get_addr, %tgd_call(foo)
2615 sethi %tldm_hi22(foo), %l1
2616 add %l1, %tldm_lo10(foo), %l2
2617 add %l7, %l2, %o0, %tldm_add(foo)
2618 call __tls_get_addr, %tldm_call(foo)
2619 sethi %tldo_hix22(foo), %l3
2620 xor %l3, %tldo_lox10(foo), %l4
2621 add %o0, %l4, %l5, %tldo_add(foo)
2622 sethi %tie_hi22(foo), %o3
2623 add %o3, %tie_lo10(foo), %o3
2624 ld [%l7 + %o3], %o2, %tie_ld(foo)
2625 add %g7, %o2, %o4, %tie_add(foo)
2626 sethi %tle_hix22(foo), %l1
2627 xor %l1, %tle_lox10(foo), %o5
2628 ld [%g7 + %o5], %o1'
2631 tls_as_opt="-32 --fatal-warnings"
2637 if test "x$enable_tls" = xno ; then
2638 : # TLS explicitly disabled.
2639 elif test "x$enable_tls" = xyes ; then
2640 set_have_as_tls=yes # TLS explicitly enabled.
2641 elif test -z "$tls_first_major"; then
2642 : # If we don't have a check, assume no support.
2644 gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls,
2645 [$tls_first_major,$tls_first_minor,0], [$tls_as_opt], [$conftest_s],,
2646 [set_have_as_tls=yes])
2648 if test $set_have_as_tls = yes ; then
2649 AC_DEFINE(HAVE_AS_TLS, 1,
2650 [Define if your assembler supports thread-local storage.])
2653 # Target-specific assembler checks.
2655 AC_MSG_CHECKING(linker -Bstatic/-Bdynamic option)
2656 gcc_cv_ld_static_dynamic=no
2657 if test $in_tree_ld = yes ; then
2658 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10; then
2659 gcc_cv_ld_static_dynamic=yes
2661 elif test x$gcc_cv_ld != x; then
2662 # Check if linker supports -Bstatic/-Bdynamic option
2663 if $gcc_cv_ld --help 2>/dev/null | grep -- -Bstatic > /dev/null \
2664 && $gcc_cv_ld --help 2>/dev/null | grep -- -Bdynamic > /dev/null; then
2665 gcc_cv_ld_static_dynamic=yes
2668 if test x"$gcc_cv_ld_static_dynamic" = xyes; then
2669 AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1,
2670 [Define if your linker supports -Bstatic/-Bdynamic option.])
2672 AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
2674 if test x"$demangler_in_ld" = xyes; then
2675 AC_MSG_CHECKING(linker --demangle support)
2676 gcc_cv_ld_demangle=no
2677 if test $in_tree_ld = yes; then
2678 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 \
2679 gcc_cv_ld_demangle=yes
2681 elif test x$gcc_cv_ld != x -a x"$gnu_ld" = xyes; then
2682 # Check if the GNU linker supports --demangle option
2683 if $gcc_cv_ld --help 2>/dev/null | grep no-demangle > /dev/null; then
2684 gcc_cv_ld_demangle=yes
2687 if test x"$gcc_cv_ld_demangle" = xyes; then
2688 AC_DEFINE(HAVE_LD_DEMANGLE, 1,
2689 [Define if your linker supports --demangle option.])
2691 AC_MSG_RESULT($gcc_cv_ld_demangle)
2695 # All TARGET_ABI_OSF targets.
2696 alpha*-*-osf* | alpha*-*-linux* | alpha*-*-*bsd*)
2697 gcc_GAS_CHECK_FEATURE([explicit relocation support],
2698 gcc_cv_as_alpha_explicit_relocs, [2,12,0],,
2701 extbl $3, $2, $3 !lituse_bytoff!1
2702 ldq $2, a($29) !literal!1
2703 ldq $4, b($29) !literal!2
2704 ldq_u $3, 0($2) !lituse_base!1
2705 ldq $27, f($29) !literal!5
2706 jsr $26, ($27), f !lituse_jsr!5
2707 ldah $29, 0($26) !gpdisp!3
2708 lda $0, c($29) !gprel
2709 ldah $1, d($29) !gprelhigh
2710 lda $1, d($1) !gprellow
2711 lda $29, 0($29) !gpdisp!3],,
2712 [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
2713 [Define if your assembler supports explicit relocations.])])
2714 gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
2715 gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],,
2718 ldq $27, a($29) !literal!1
2719 jsr $26, ($27), a !lituse_jsrdirect!1],,
2720 [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
2721 [Define if your assembler supports the lituse_jsrdirect relocation.])])
2725 gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
2726 gcc_cv_as_cris_no_mul_bug,[2,15,91],
2727 [-no-mul-bug-abort], [.text],,
2728 [AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1,
2729 [Define if your assembler supports the -no-mul-bug-abort option.])])
2733 gcc_GAS_CHECK_FEATURE([.register], gcc_cv_as_sparc_register_op,,,
2734 [.register %g2, #scratch],,
2735 [AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
2736 [Define if your assembler supports .register.])])
2738 gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,,
2740 [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
2741 [Define if your assembler supports -relax option.])])
2743 gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs],
2744 gcc_cv_as_sparc_ua_pcrel,,
2752 .uaword %r_disp32(foo)],
2753 [if test x$gcc_cv_ld != x \
2754 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
2755 gcc_cv_as_sparc_ua_pcrel=yes
2758 [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
2759 [Define if your assembler and linker support unaligned PC relative relocs.])
2761 gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols],
2762 gcc_cv_as_sparc_ua_pcrel_hidden,,
2767 .uaword %r_disp32(foo)
2768 .byte 0x32, 0x33, 0x34
2773 [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
2774 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
2775 && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
2776 | grep ' 31000000 07323334' > /dev/null 2>&1; then
2777 if $gcc_cv_objdump -R conftest 2> /dev/null \
2778 | grep 'DISP32' > /dev/null 2>&1; then
2781 gcc_cv_as_sparc_ua_pcrel_hidden=yes
2785 [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
2786 [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])])
2787 ]) # unaligned pcrel relocs
2789 gcc_GAS_CHECK_FEATURE([offsetable %lo()],
2790 gcc_cv_as_sparc_offsetable_lo10,,
2793 or %g1, %lo(ab) + 12, %g1
2794 or %g1, %lo(ab + 12), %g1],
2795 [if test x$gcc_cv_objdump != x \
2796 && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \
2797 | grep ' 82106000 82106000' > /dev/null 2>&1; then
2798 gcc_cv_as_sparc_offsetable_lo10=yes
2800 [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
2801 [Define if your assembler supports offsetable %lo().])])
2805 i[34567]86-*-* | x86_64-*-*)
2808 cygwin* | pe | mingw32*)
2809 # Used for DWARF 2 in PE
2810 gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
2811 gcc_cv_as_ix86_pe_secrel32,
2817 [if test x$gcc_cv_ld != x \
2818 && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1; then
2819 gcc_cv_as_ix86_pe_secrel32=yes
2822 [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1,
2823 [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])])
2827 gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
2828 gcc_cv_as_ix86_filds_fists,
2829 [2,9,0],, [filds mem; fists mem],,
2830 [AC_DEFINE(HAVE_GAS_FILDS_FISTS, 1,
2831 [Define if your assembler uses the new HImode fild and fist notation.])])
2833 gcc_GAS_CHECK_FEATURE([cmov syntax],
2834 gcc_cv_as_ix86_cmov_sun_syntax,,,
2835 [cmovl.l %edx, %eax],,
2836 [AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
2837 [Define if your assembler supports the Sun syntax for cmov.])])
2839 gcc_GAS_CHECK_FEATURE([ffreep mnemonic],
2840 gcc_cv_as_ix86_ffreep,,,
2842 [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
2843 [Define if your assembler supports the ffreep mnemonic.])])
2845 gcc_GAS_CHECK_FEATURE([sahf mnemonic],
2846 gcc_cv_as_ix86_sahf,,,
2848 [AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
2849 [Define if your assembler supports the sahf mnemonic.])])
2851 gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
2852 gcc_cv_as_ix86_diff_sect_delta,,,
2860 [AC_DEFINE(HAVE_AS_IX86_DIFF_SECT_DELTA, 1,
2861 [Define if your assembler supports the subtraction of symbols in different sections.])])
2863 # This one is used unconditionally by i386.[ch]; it is to be defined
2864 # to 1 if the feature is present, 0 otherwise.
2865 gcc_GAS_CHECK_FEATURE([GOTOFF in data],
2866 gcc_cv_as_ix86_gotoff_in_data, [2,11,0],,
2872 AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
2873 [`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
2874 [Define true if the assembler supports '.long foo@GOTOFF'.])
2878 gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs],
2879 gcc_cv_as_ia64_ltoffx_ldxmov_relocs, [2,14,0],,
2881 addl r15 = @ltoffx(x#), gp
2883 ld8.mov r16 = [[r15]], x#],,
2884 [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
2885 [Define if your assembler supports ltoffx and ldxmov relocations.])])
2891 *-*-aix*) conftest_s=' .machine "pwr5"
2895 gcc_GAS_CHECK_FEATURE([.machine directive support],
2896 gcc_cv_as_machine_directive,,,
2897 [ .machine ppc7400])
2898 if test x$gcc_cv_as_machine_directive != xyes; then
2899 echo "*** This target requires an assembler supporting \".machine\"" >&2
2900 echo you can get it from: ftp://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2
2901 test x$build = x$target && exit 1
2905 *) conftest_s=' .machine power4
2910 gcc_GAS_CHECK_FEATURE([mfcr field support],
2911 gcc_cv_as_powerpc_mfcrf, [2,14,0],,
2913 [AC_DEFINE(HAVE_AS_MFCRF, 1,
2914 [Define if your assembler supports mfcr field.])])
2917 *-*-aix*) conftest_s=' .machine "pwr5"
2920 *) conftest_s=' .machine power5
2925 gcc_GAS_CHECK_FEATURE([popcntb support],
2926 gcc_cv_as_powerpc_popcntb, [2,17,0],,
2928 [AC_DEFINE(HAVE_AS_POPCNTB, 1,
2929 [Define if your assembler supports popcntb field.])])
2932 *-*-aix*) conftest_s=' .machine "pwr5x"
2935 *) conftest_s=' .machine power5
2940 gcc_GAS_CHECK_FEATURE([fp round support],
2941 gcc_cv_as_powerpc_fprnd, [2,17,0],,
2943 [AC_DEFINE(HAVE_AS_FPRND, 1,
2944 [Define if your assembler supports fprnd.])])
2947 *-*-aix*) conftest_s=' .machine "pwr6"
2950 *) conftest_s=' .machine power6
2955 gcc_GAS_CHECK_FEATURE([move fp gpr support],
2956 gcc_cv_as_powerpc_mfpgpr, [9,99,0],,
2958 [AC_DEFINE(HAVE_AS_MFPGPR, 1,
2959 [Define if your assembler supports mffgpr and mftgpr.])])
2962 *-*-aix*) conftest_s=' .csect .text[[PR]]
2964 addis 11,30,_GLOBAL_OFFSET_TABLE_-LCF..0@ha';;
2968 addis r11,r30,_GLOBAL_OFFSET_TABLE_-LCF0@ha';;
2969 *) conftest_s=' .text
2971 addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';;
2974 gcc_GAS_CHECK_FEATURE([rel16 relocs],
2975 gcc_cv_as_powerpc_rel16, [2,17,0], -a32,
2977 [AC_DEFINE(HAVE_AS_REL16, 1,
2978 [Define if your assembler supports R_PPC_REL16 relocs.])])
2981 *-*-aix*) conftest_s=' .machine "pwr6"
2984 *) conftest_s=' .machine power6
2989 gcc_GAS_CHECK_FEATURE([compare bytes support],
2990 gcc_cv_as_powerpc_cmpb, [9,99,0], -a32,
2992 [AC_DEFINE(HAVE_AS_CMPB, 1,
2993 [Define if your assembler supports cmpb.])])
2996 *-*-aix*) conftest_s=' .machine "pwr6"
2999 *) conftest_s=' .machine power6
3004 gcc_GAS_CHECK_FEATURE([decimal float support],
3005 gcc_cv_as_powerpc_dfp, [9,99,0], -a32,
3007 [AC_DEFINE(HAVE_AS_DFP, 1,
3008 [Define if your assembler supports DFP instructions.])])
3010 gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
3011 gcc_cv_as_powerpc_gnu_attribute, [2,18,0],,
3012 [.gnu_attribute 4,1],,
3013 [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
3014 [Define if your assembler supports .gnu_attribute.])])
3018 gcc_GAS_CHECK_FEATURE([explicit relocation support],
3019 gcc_cv_as_mips_explicit_relocs, [2,14,0],,
3020 [ lw $4,%gp_rel(foo)($4)],,
3021 [if test x$target_cpu_default = x
3022 then target_cpu_default=MASK_EXPLICIT_RELOCS
3023 else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
3025 gcc_GAS_CHECK_FEATURE([-mno-shared support],
3026 gcc_cv_as_mips_no_shared, [2,16,0], [-mno-shared], [nop],,
3027 [AC_DEFINE(HAVE_AS_NO_SHARED, 1,
3028 [Define if the assembler understands -mno-shared.])])
3030 gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
3031 gcc_cv_as_mips_gnu_attribute, [2,18,0],,
3032 [.gnu_attribute 4,1],,
3033 [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
3034 [Define if your assembler supports .gnu_attribute.])])
3036 gcc_GAS_CHECK_FEATURE([.dtprelword support],
3037 gcc_cv_as_mips_dtprelword, [2,18,0],,
3038 [.section .tdata,"awT",@progbits
3042 .dtprelword x+0x8000],,
3043 [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
3044 [Define if your assembler supports .dtprelword.])])
3048 # Mips and HP-UX need the GNU assembler.
3049 # Linux on IA64 might be able to use the Intel assembler.
3052 mips*-*-* | *-*-hpux* )
3053 if test x$gas_flag = xyes \
3054 || test x"$host" != x"$build" \
3055 || test ! -x "$gcc_cv_as" \
3056 || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
3059 echo "*** This configuration requires the GNU assembler" >&2
3065 # ??? Not all targets support dwarf2 debug_line, even within a version
3066 # of gas. Moreover, we need to emit a valid instruction to trigger any
3067 # info to the output file. So, as supported targets are added to gas 2.11,
3068 # add some instruction here to (also) show we expect this might work.
3069 # ??? Once 2.11 is released, probably need to add first known working
3070 # version to the per-target configury.
3072 i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-* | m68*-*-* \
3073 | x86_64*-*-* | hppa*-*-* | arm*-*-* \
3074 | xstormy16*-*-* | cris-*-* | xtensa-*-* | bfin-*-* | score*-*-* \
3075 | spu-*-* | fido*-*-*)
3078 ia64*-*-* | s390*-*-*)
3085 if test x"$insn" != x; then
3087 .file 1 \"conftest.s\"
3090 gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
3091 gcc_cv_as_dwarf2_debug_line,
3092 [elf,2,11,0],, [$conftest_s],
3093 [if test x$gcc_cv_objdump != x \
3094 && $gcc_cv_objdump -h conftest.o 2> /dev/null \
3095 | grep debug_line > /dev/null 2>&1; then
3096 gcc_cv_as_dwarf2_debug_line=yes
3099 # The .debug_line file table must be in the exact order that
3100 # we specified the files, since these indices are also used
3101 # by DW_AT_decl_file. Approximate this test by testing if
3102 # the assembler bitches if the same index is assigned twice.
3103 gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
3104 gcc_cv_as_dwarf2_file_buggy,,,
3108 if test $gcc_cv_as_dwarf2_debug_line = yes \
3109 && test $gcc_cv_as_dwarf2_file_buggy = no; then
3110 AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
3111 [Define if your assembler supports dwarf2 .file/.loc directives,
3112 and preserves file table indices exactly as given.])
3115 gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
3116 gcc_cv_as_gdwarf2_flag,
3117 [elf,2,11,0], [--gdwarf2], [$insn],,
3118 [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
3119 [Define if your assembler supports the --gdwarf2 option.])])
3121 gcc_GAS_CHECK_FEATURE([--gstabs option],
3122 gcc_cv_as_gstabs_flag,
3123 [elf,2,11,0], [--gstabs], [$insn],
3124 [# The native Solaris 9/Intel assembler doesn't understand --gstabs
3125 # and warns about it, but still exits successfully. So check for
3127 if AC_TRY_COMMAND([$gcc_cv_as --gstabs -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null])
3129 else gcc_cv_as_gstabs_flag=yes
3131 [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
3132 [Define if your assembler supports the --gstabs option.])])
3134 gcc_GAS_CHECK_FEATURE([--debug-prefix-map option],
3135 gcc_cv_as_debug_prefix_map_flag,
3136 [2,18,0], [--debug-prefix-map /a=/b], [$insn],,
3137 [AC_DEFINE(HAVE_AS_DEBUG_PREFIX_MAP, 1,
3138 [Define if your assembler supports the --debug-prefix-map option.])])
3141 AC_CACHE_CHECK([assembler for tolerance to line number 0],
3142 [gcc_cv_as_line_zero],
3143 [gcc_cv_as_line_zero=no
3144 if test $in_tree_gas = yes; then
3145 gcc_GAS_VERSION_GTE_IFELSE(2, 16, 91, [gcc_cv_as_line_zero=yes])
3146 elif test "x$gcc_cv_as" != x; then
3147 { echo '# 1 "test.s" 1'; echo '# 0 "" 2'; } > conftest.s
3148 if AC_TRY_COMMAND([$gcc_cv_as -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD 2>conftest.out]) &&
3149 test "x`cat conftest.out`" = x
3151 gcc_cv_as_line_zero=yes
3153 echo "configure: failed program was" >&AS_MESSAGE_LOG_FD
3154 cat conftest.s >&AS_MESSAGE_LOG_FD
3155 echo "configure: error output was" >&AS_MESSAGE_LOG_FD
3156 cat conftest.out >&AS_MESSAGE_LOG_FD
3158 rm -f conftest.o conftest.s conftest.out
3160 if test "x$gcc_cv_as_line_zero" = xyes; then
3161 AC_DEFINE([HAVE_AS_LINE_ZERO], 1,
3162 [Define if the assembler won't complain about a line such as # 0 "" 2.])
3165 AC_MSG_CHECKING(linker read-only and read-write section mixing)
3166 gcc_cv_ld_ro_rw_mix=unknown
3167 if test $in_tree_ld = yes ; then
3168 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 \
3169 && test $in_tree_ld_is_elf = yes; then
3170 gcc_cv_ld_ro_rw_mix=read-write
3172 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
3173 echo '.section myfoosect, "a"' > conftest1.s
3174 echo '.section myfoosect, "aw"' > conftest2.s
3175 echo '.byte 1' >> conftest2.s
3176 echo '.section myfoosect, "a"' > conftest3.s
3177 echo '.byte 0' >> conftest3.s
3178 if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
3179 && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
3180 && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \
3181 && $gcc_cv_ld -shared -o conftest1.so conftest1.o \
3182 conftest2.o conftest3.o > /dev/null 2>&1; then
3183 gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
3184 | sed -e '/myfoosect/!d' -e N`
3185 if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then
3186 if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then
3187 gcc_cv_ld_ro_rw_mix=read-only
3189 gcc_cv_ld_ro_rw_mix=read-write
3194 rm -f conftest.* conftest[123].*
3197 if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
3198 AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1,
3199 [Define if your linker links a mix of read-only
3200 and read-write sections into a read-write section.])
3202 AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
3204 AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
3205 gcc_cv_ld_eh_frame_hdr=no
3206 if test $in_tree_ld = yes ; then
3207 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 \
3208 && test $in_tree_ld_is_elf = yes; then
3209 gcc_cv_ld_eh_frame_hdr=yes
3211 elif test x$gcc_cv_ld != x; then
3212 # Check if linker supports --eh-frame-hdr option
3213 if $gcc_cv_ld --help 2>/dev/null | grep eh-frame-hdr > /dev/null; then
3214 gcc_cv_ld_eh_frame_hdr=yes
3217 GCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HDR])
3218 if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
3219 AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
3220 [Define if your linker supports --eh-frame-hdr option.])
3222 AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
3224 AC_MSG_CHECKING(linker position independent executable support)
3226 if test $in_tree_ld = yes ; then
3227 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 \
3228 && test $in_tree_ld_is_elf = yes; then
3231 elif test x$gcc_cv_ld != x; then
3232 # Check if linker supports -pie option
3233 if $gcc_cv_ld --help 2>/dev/null | grep -- -pie > /dev/null; then
3237 if test x"$gcc_cv_ld_pie" = xyes; then
3238 AC_DEFINE(HAVE_LD_PIE, 1,
3239 [Define if your linker supports -pie option.])
3241 AC_MSG_RESULT($gcc_cv_ld_pie)
3243 AC_MSG_CHECKING(linker EH-compatible garbage collection of sections)
3244 gcc_cv_ld_eh_gc_sections=no
3245 if test $in_tree_ld = yes ; then
3246 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 17 -o "$gcc_cv_gld_major_version" -gt 2 \
3247 && test $in_tree_ld_is_elf = yes; then
3248 gcc_cv_ld_eh_gc_sections=yes
3250 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
3251 cat > conftest.s <<EOF
3254 .type _start, @function
3257 .size _start, .-_start
3258 .section .text.foo,"ax",@progbits
3259 .type foo, @function
3263 .section .gcc_except_table.foo,"a",@progbits
3266 .section .eh_frame,"a",@progbits
3269 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
3270 if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
3271 | grep "gc-sections option ignored" > /dev/null; then
3272 gcc_cv_ld_eh_gc_sections=no
3273 elif $gcc_cv_objdump -h conftest | grep gcc_except_table > /dev/null; then
3274 gcc_cv_ld_eh_gc_sections=yes
3275 # If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
3276 if test x$gcc_cv_as_comdat_group != xyes; then
3277 gcc_cv_ld_eh_gc_sections=no
3278 cat > conftest.s <<EOF
3281 .type _start, @function
3284 .size _start, .-_start
3285 .section .gnu.linkonce.t.foo,"ax",@progbits
3286 .type foo, @function
3290 .section .gcc_except_table.foo,"a",@progbits
3293 .section .eh_frame,"a",@progbits
3296 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
3297 if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
3298 | grep "gc-sections option ignored" > /dev/null; then
3299 gcc_cv_ld_eh_gc_sections=no
3300 elif $gcc_cv_objdump -h conftest | grep gcc_except_table > /dev/null; then
3301 gcc_cv_ld_eh_gc_sections=yes
3307 rm -f conftest.s conftest.o conftest
3311 # ??? This apparently exposes a binutils bug with PC-relative relocations.
3312 gcc_cv_ld_eh_gc_sections=no
3315 if test x$gcc_cv_ld_eh_gc_sections = xyes; then
3316 AC_DEFINE(HAVE_LD_EH_GC_SECTIONS, 1,
3317 [Define if your linker supports garbage collection of
3318 sections in presence of EH frames.])
3320 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections)
3326 AC_CACHE_CHECK(linker --as-needed support,
3327 gcc_cv_ld_as_needed,
3328 [gcc_cv_ld_as_needed=no
3329 if test $in_tree_ld = yes ; then
3330 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 \
3331 && test $in_tree_ld_is_elf = yes; then
3332 gcc_cv_ld_as_needed=yes
3334 elif test x$gcc_cv_ld != x; then
3335 # Check if linker supports --as-needed and --no-as-needed options
3336 if $gcc_cv_ld --help 2>/dev/null | grep as-needed > /dev/null; then
3337 gcc_cv_ld_as_needed=yes
3341 if test x"$gcc_cv_ld_as_needed" = xyes; then
3342 AC_DEFINE(HAVE_LD_AS_NEEDED, 1,
3343 [Define if your linker supports --as-needed and --no-as-needed options.])
3346 case "$target:$tm_file" in
3347 powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
3348 AC_CACHE_CHECK(linker support for omitting dot symbols,
3349 gcc_cv_ld_no_dot_syms,
3350 [gcc_cv_ld_no_dot_syms=no
3351 if test $in_tree_ld = yes ; then
3352 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
3353 gcc_cv_ld_no_dot_syms=yes
3355 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
3356 cat > conftest1.s <<EOF
3360 cat > conftest2.s <<EOF
3361 .section ".opd","aw"
3366 .quad .LEfoo,.TOC.@tocbase,0
3372 if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
3373 && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
3374 && $gcc_cv_ld -melf64ppc -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
3375 gcc_cv_ld_no_dot_syms=yes
3377 rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
3380 if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
3381 AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
3382 [Define if your PowerPC64 linker only needs function descriptor syms.])
3387 AC_CACHE_CHECK(linker --sysroot support,
3389 [gcc_cv_ld_sysroot=no
3390 if test $in_tree_ld = yes ; then
3391 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
3392 gcc_cv_ld_sysroot=yes
3394 elif test x$gcc_cv_ld != x; then
3395 if $gcc_cv_ld --help 2>/dev/null | grep sysroot > /dev/null; then
3396 gcc_cv_ld_sysroot=yes
3399 if test x"$gcc_cv_ld_sysroot" = xyes; then
3400 AC_DEFINE(HAVE_LD_SYSROOT, 1,
3401 [Define if your linker supports --sysroot.])
3404 if test x$with_sysroot = x && test x$host = x$target \
3405 && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" \
3406 && test "$prefix" != "NONE"; then
3407 AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",
3408 [Define to PREFIX/include if cpp should also search that directory.])
3411 # Test for stack protector support in target C library.
3412 AC_CACHE_CHECK(__stack_chk_fail in target C library,
3413 gcc_cv_libc_provides_ssp,
3414 [gcc_cv_libc_provides_ssp=no
3417 if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
3418 if test "x$with_sysroot" = x; then
3419 glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-include"
3420 elif test "x$with_build_sysroot" != "x"; then
3421 glibc_header_dir="${with_build_sysroot}/usr/include"
3422 elif test "x$with_sysroot" = xyes; then
3423 glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-root/usr/include"
3425 glibc_header_dir="${with_sysroot}/usr/include"
3428 glibc_header_dir=/usr/include
3430 # glibc 2.4 and later provides __stack_chk_fail and
3431 # either __stack_chk_guard, or TLS access to stack guard canary.
3432 if test -f $glibc_header_dir/features.h \
3433 && $EGREP '^@<:@ @:>@*#[ ]*define[ ]+__GNU_LIBRARY__[ ]+([1-9][0-9]|[6-9])' \
3434 $glibc_header_dir/features.h > /dev/null; then
3435 if $EGREP '^@<:@ @:>@*#[ ]*define[ ]+__GLIBC__[ ]+([1-9][0-9]|[3-9])' \
3436 $glibc_header_dir/features.h > /dev/null; then
3437 gcc_cv_libc_provides_ssp=yes
3438 elif $EGREP '^@<:@ @:>@*#[ ]*define[ ]+__GLIBC__[ ]+2' \
3439 $glibc_header_dir/features.h > /dev/null \
3440 && $EGREP '^@<:@ @:>@*#[ ]*define[ ]+__GLIBC_MINOR__[ ]+([1-9][0-9]|[4-9])' \
3441 $glibc_header_dir/features.h > /dev/null; then
3442 gcc_cv_libc_provides_ssp=yes
3443 elif $EGREP '^@<:@ @:>@*#[ ]*define[ ]+__UCLIBC__[ ]+1' \
3444 $glibc_header_dir/features.h > /dev/null && \
3445 test -f $glibc_header_dir/bits/uClibc_config.h && \
3446 $EGREP '^@<:@ @:>@*#[ ]*define[ ]+__UCLIBC_HAS_SSP__[ ]+1' \
3447 $glibc_header_dir/bits/uClibc_config.h > /dev/null; then
3448 gcc_cv_libc_provides_ssp=yes
3453 AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
3454 [echo "no __stack_chk_fail on this target"])
3456 *) gcc_cv_libc_provides_ssp=no ;;
3459 if test x$gcc_cv_libc_provides_ssp = xyes; then
3460 AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1,
3461 [Define if your target C library provides stack protector support])
3464 # Check if TFmode long double should be used by default or not.
3465 # Some glibc targets used DFmode long double, but with glibc 2.4
3466 # and later they can use TFmode.
3468 powerpc*-*-linux* | \
3473 AC_ARG_WITH(long-double-128,
3474 [ --with-long-double-128 Use 128-bit long double by default.],
3475 gcc_cv_target_ldbl128="$with_long_double_128",
3476 [gcc_cv_target_ldbl128=no
3477 if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
3478 if test "x$with_sysroot" = x; then
3479 glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-include"
3480 elif test "x$with_build_sysroot" != "x"; then
3481 glibc_header_dir="${with_build_sysroot}/usr/include"
3482 elif test "x$with_sysroot" = xyes; then
3483 glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-root/usr/include"
3485 glibc_header_dir="${with_sysroot}/usr/include"
3488 glibc_header_dir=/usr/include
3491 grep '^[ ]*#[ ]*define[ ][ ]*__LONG_DOUBLE_MATH_OPTIONAL' \
3492 $glibc_header_dir/bits/wordsize.h > /dev/null 2>&1 \
3493 && gcc_cv_target_ldbl128=yes
3498 if test x$gcc_cv_target_ldbl128 = xyes; then
3499 AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
3500 [Define if TFmode long double should be the default])
3503 # Find out what GC implementation we want, or may, use.
3505 [ --with-gc={page,zone} choose the garbage collection mechanism to use
3513 AC_DEFINE(GGC_ZONE, 1, [Define if the zone collector is in use])
3516 AC_MSG_ERROR([$withval is an invalid option to --with-gc])
3521 echo "Using $GGC for garbage collection."
3523 # Use the system's zlib library.
3525 zlibinc="-I\$(srcdir)/../zlib"
3526 AC_ARG_WITH(system-zlib,
3527 [ --with-system-zlib use installed libz],
3534 dnl Very limited version of automake's enable-maintainer-mode
3536 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
3537 dnl maintainer-mode is disabled by default
3538 AC_ARG_ENABLE(maintainer-mode,
3539 [ --enable-maintainer-mode
3540 enable make rules and dependencies not useful
3541 (and sometimes confusing) to the casual installer],
3542 maintainer_mode=$enableval,
3545 AC_MSG_RESULT($maintainer_mode)
3547 if test "$maintainer_mode" = "yes"; then
3558 # Make empty files to contain the specs and options for each language.
3559 # Then add #include lines to for a compiler that has specs and/or options.
3565 # These (without "all_") are set in each config-lang.in.
3566 # `language' must be a single word so is spelled singularly.
3569 all_outputs='Makefile gccbug libada-mk'
3570 # List of language makefile fragments.
3572 # List of language subdirectory makefiles. Deprecated.
3574 # Additional files for gengtype
3575 all_gtfiles="$target_gtfiles"
3577 # These are the languages that are set in --enable-languages,
3578 # and are available in the GCC tree.
3579 all_selected_languages=
3581 # Add the language fragments.
3582 # Languages are added via two mechanisms. Some information must be
3583 # recorded in makefile variables, these are defined in config-lang.in.
3584 # We accumulate them and plug them into the main Makefile.
3585 # The other mechanism is a set of hooks for each of the main targets
3586 # like `clean', `install', etc.
3588 language_hooks="Make-hooks"
3590 for lang in ${srcdir}/*/config-lang.in
3593 test "$lang" = "${srcdir}/*/config-lang.in" && continue
3595 lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^ ]*\).*$,\1,p' $lang`
3596 if test "x$lang_alias" = x
3598 echo "$lang doesn't set \$language." 1>&2
3601 subdir="`echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
3602 subdirs="$subdirs $subdir"
3604 # $gcc_subdir is where the gcc integration files are to be found
3605 # for a language, both for internal compiler purposes (compiler
3606 # sources implementing front-end to GCC tree converters), and for
3607 # build infrastructure purposes (Make-lang.in, etc.)
3609 # This will be <subdir> (relative to $srcdir) if a line like
3610 # gcc_subdir="<subdir>" or gcc_subdir=<subdir>
3611 # is found in <langdir>/config-lang.in, and will remain <langdir>
3614 # Except for the language alias (fetched above), the regular
3615 # "config-lang.in" contents are always retrieved from $gcc_subdir,
3616 # so a <langdir>/config-lang.in setting gcc_subdir typically sets
3617 # only this and the language alias.
3619 gcc_subdir=`sed -n -e 's,^gcc_subdir=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^gcc_subdir=\([^ ]*\).*$,\1,p' $lang`
3620 if [ "$gcc_subdir" = "" ]; then
3621 gcc_subdir="$subdir"
3624 case ",$enable_languages," in
3626 all_selected_languages="$all_selected_languages $lang_alias"
3627 if test -f $srcdir/$gcc_subdir/lang-specs.h; then
3628 lang_specs_files="$lang_specs_files $srcdir/$gcc_subdir/lang-specs.h"
3640 . ${srcdir}/$gcc_subdir/config-lang.in
3641 if test "x$language" = x
3643 echo "${srcdir}/$gcc_subdir/config-lang.in doesn't set \$language." 1>&2
3648 case ",$enable_languages," in
3651 for i in $subdir_requires; do
3652 test -f "${srcdir}/$i/config-lang.in" && continue
3660 all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$gcc_subdir/Make-lang.in"
3661 if test -f $srcdir/$gcc_subdir/lang.opt; then
3662 lang_opt_files="$lang_opt_files $srcdir/$gcc_subdir/lang.opt"
3664 if test -f $srcdir/$gcc_subdir/$subdir-tree.def; then
3665 lang_tree_files="$lang_tree_files $srcdir/$gcc_subdir/$subdir-tree.def"
3667 if test -f ${srcdir}/$gcc_subdir/Makefile.in
3668 then all_lang_makefiles="$gcc_subdir/Makefile"
3670 all_languages="$all_languages $language"
3671 all_compilers="$all_compilers $compilers"
3672 all_outputs="$all_outputs $outputs"
3673 all_gtfiles="$all_gtfiles [[$subdir]] $gtfiles"
3676 # Pick up gtfiles for c
3678 . ${srcdir}/c-config-lang.in
3679 all_gtfiles="$all_gtfiles [[c]] $gtfiles"
3682 for language in $all_selected_languages
3684 check_languages="$check_languages check-$language"
3687 # We link each language in with a set of hooks, reached indirectly via
3688 # lang.${target}. Only do so for selected languages.
3692 target_list="all.cross start.encap rest.encap tags \
3693 install-common install-man install-info install-pdf dvi pdf \
3694 html uninstall info man srcextra srcman srcinfo \
3695 mostlyclean clean distclean maintainer-clean"
3697 for t in $target_list
3700 for lang in $all_selected_languages
3704 echo "lang.$t: $x" >> Make-hooks
3713 echo "dir ." > .gdbinit
3714 echo "dir ${srcdir}" >> .gdbinit
3715 if test x$gdb_needs_out_file_path = xyes
3717 echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
3719 if test "x$subdirs" != x; then
3722 echo "dir ${srcdir}/$s" >> .gdbinit
3725 echo "source ${srcdir}/gdbinit.in" >> .gdbinit
3727 gcc_tooldir='$(libsubdir)/$(libsubdir_to_prefix)$(target_noncanonical)'
3728 AC_SUBST(gcc_tooldir)
3731 # Find a directory in which to install a shared libgcc.
3733 AC_ARG_ENABLE(version-specific-runtime-libs,
3734 [ --enable-version-specific-runtime-libs
3735 specify that runtime libraries should be
3736 installed in a compiler-specific directory])
3738 AC_ARG_WITH(slibdir,
3739 [ --with-slibdir=DIR shared libraries in DIR [[LIBDIR]]],
3740 slibdir="$with_slibdir",
3741 if test "${enable_version_specific_runtime_libs+set}" = set; then
3742 slibdir='$(libsubdir)'
3743 elif test "$host" != "$target"; then
3744 slibdir='$(build_tooldir)/lib'
3750 AC_ARG_WITH(datarootdir,
3751 [ --with-datarootdir=DIR Use DIR as the data root [[PREFIX/share]]],
3752 datarootdir="\${prefix}/$with_datarootdir",
3753 datarootdir='$(prefix)/share')
3754 AC_SUBST(datarootdir)
3757 [ --with-docdir=DIR Install documentation in DIR [[DATAROOTDIR]]],
3758 docdir="\${prefix}/$with_docdir",
3759 docdir='$(datarootdir)')
3762 AC_ARG_WITH(htmldir,
3763 [ --with-htmldir=DIR html documentation in in DIR [[DOCDIR]]],
3764 htmldir="\${prefix}/$with_htmldir",
3765 htmldir='$(docdir)')
3768 # Substitute configuration variables
3771 AC_SUBST(all_compilers)
3772 AC_SUBST(all_gtfiles)
3773 AC_SUBST(all_lang_makefrags)
3774 AC_SUBST(all_lang_makefiles)
3775 AC_SUBST(all_languages)
3776 AC_SUBST(all_selected_languages)
3777 AC_SUBST(build_exeext)
3778 AC_SUBST(build_install_headers_dir)
3779 AC_SUBST(build_xm_file_list)
3780 AC_SUBST(build_xm_include_list)
3781 AC_SUBST(build_xm_defines)
3782 AC_SUBST(build_file_translate)
3783 AC_SUBST(check_languages)
3784 AC_SUBST(cpp_install_dir)
3785 AC_SUBST(xmake_file)
3786 AC_SUBST(tmake_file)
3787 AC_SUBST(extra_gcc_objs)
3788 AC_SUBST(extra_headers_list)
3789 AC_SUBST(extra_objs)
3790 AC_SUBST(extra_parts)
3791 AC_SUBST(extra_passes)
3792 AC_SUBST(extra_programs)
3793 AC_SUBST(float_h_file)
3794 AC_SUBST(gcc_config_arguments)
3795 AC_SUBST(gcc_gxx_include_dir)
3796 AC_SUBST(host_exeext)
3797 AC_SUBST(host_xm_file_list)
3798 AC_SUBST(host_xm_include_list)
3799 AC_SUBST(host_xm_defines)
3800 AC_SUBST(out_host_hook_obj)
3802 AC_SUBST(lang_opt_files)
3803 AC_SUBST(lang_specs_files)
3804 AC_SUBST(lang_tree_files)
3805 AC_SUBST(local_prefix)
3807 AC_SUBST(objc_boehm_gc)
3809 AC_SUBST(out_object_file)
3810 AC_SUBST(thread_file)
3811 AC_SUBST(tm_file_list)
3812 AC_SUBST(tm_include_list)
3813 AC_SUBST(tm_defines)
3814 AC_SUBST(tm_p_file_list)
3815 AC_SUBST(tm_p_include_list)
3816 AC_SUBST(xm_file_list)
3817 AC_SUBST(xm_include_list)
3818 AC_SUBST(xm_defines)
3819 AC_SUBST(c_target_objs)
3820 AC_SUBST(cxx_target_objs)
3821 AC_SUBST(fortran_target_objs)
3822 AC_SUBST(target_cpu_default)
3824 AC_SUBST_FILE(language_hooks)
3827 if test x${build} = x${host} ; then
3828 if test x${host} = x${target} ; then
3829 echo "Links are now set up to build a native compiler for ${target}." 1>&2
3831 echo "Links are now set up to build a cross-compiler" 1>&2
3832 echo " from ${host} to ${target}." 1>&2
3835 if test x${host} = x${target} ; then
3836 echo "Links are now set up to build (on ${build}) a native compiler" 1>&2
3837 echo " for ${target}." 1>&2
3839 echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2
3840 echo " from ${host} to ${target}." 1>&2
3844 AC_ARG_VAR(GMPLIBS,[How to link GMP])
3845 AC_ARG_VAR(GMPINC,[How to find GMP include files])
3847 # Configure the subdirectories
3848 # AC_CONFIG_SUBDIRS($subdirs)
3850 # Create the Makefile
3851 # and configure language subdirectories
3852 AC_CONFIG_FILES($all_outputs)
3854 AC_CONFIG_COMMANDS([default],
3856 case ${CONFIG_HEADERS} in
3857 *auto-host.h:config.in*)
3860 # Make sure all the subdirs exist.
3861 for d in $subdirs doc build
3863 test -d $d || mkdir $d
3866 [subdirs='$subdirs'])