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