* configure.ac (BUILD_CXXFLAGS) Don't use ALL_CXXFLAGS for
[gcc.git] / gcc / configure.ac
1 # configure.ac for GCC
2 # Process this file with autoconf to generate a configuration script.
3
4 # Copyright (C) 1997-2013 Free Software Foundation, Inc.
5
6 #This file is part of GCC.
7
8 #GCC is free software; you can redistribute it and/or modify it under
9 #the terms of the GNU General Public License as published by the Free
10 #Software Foundation; either version 3, or (at your option) any later
11 #version.
12
13 #GCC is distributed in the hope that it will be useful, but WITHOUT
14 #ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 #FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16 #for more details.
17
18 #You should have received a copy of the GNU General Public License
19 #along with GCC; see the file COPYING3. If not see
20 #<http://www.gnu.org/licenses/>.
21
22 # --------------------------------
23 # Initialization and sanity checks
24 # --------------------------------
25
26 AC_PREREQ(2.64)
27 AC_INIT
28 AC_CONFIG_SRCDIR(tree.c)
29 AC_CONFIG_HEADER(auto-host.h:config.in)
30
31 gcc_version=`cat $srcdir/BASE-VER`
32
33 # Determine the host, build, and target systems
34 AC_CANONICAL_BUILD
35 AC_CANONICAL_HOST
36 AC_CANONICAL_TARGET
37
38 # Determine the noncanonical target name, for directory use.
39 ACX_NONCANONICAL_TARGET
40
41 # Determine the target- and build-specific subdirectories
42 GCC_TOPLEV_SUBDIRS
43
44 # Set program_transform_name
45 AC_ARG_PROGRAM
46
47 # Check for bogus environment variables.
48 # Test if LIBRARY_PATH contains the notation for the current directory
49 # since this would lead to problems installing/building glibc.
50 # LIBRARY_PATH contains the current directory if one of the following
51 # is true:
52 # - one of the terminals (":" and ";") is the first or last sign
53 # - two terminals occur directly after each other
54 # - the path contains an element with a dot in it
55 AC_MSG_CHECKING(LIBRARY_PATH variable)
56 changequote(,)dnl
57 case ${LIBRARY_PATH} in
58 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
59 library_path_setting="contains current directory"
60 ;;
61 *)
62 library_path_setting="ok"
63 ;;
64 esac
65 changequote([,])dnl
66 AC_MSG_RESULT($library_path_setting)
67 if test "$library_path_setting" != "ok"; then
68 AC_MSG_ERROR([
69 *** LIBRARY_PATH shouldn't contain the current directory when
70 *** building gcc. Please change the environment variable
71 *** and run configure again.])
72 fi
73
74 # Test if GCC_EXEC_PREFIX contains the notation for the current directory
75 # since this would lead to problems installing/building glibc.
76 # GCC_EXEC_PREFIX contains the current directory if one of the following
77 # is true:
78 # - one of the terminals (":" and ";") is the first or last sign
79 # - two terminals occur directly after each other
80 # - the path contains an element with a dot in it
81 AC_MSG_CHECKING(GCC_EXEC_PREFIX variable)
82 changequote(,)dnl
83 case ${GCC_EXEC_PREFIX} in
84 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
85 gcc_exec_prefix_setting="contains current directory"
86 ;;
87 *)
88 gcc_exec_prefix_setting="ok"
89 ;;
90 esac
91 changequote([,])dnl
92 AC_MSG_RESULT($gcc_exec_prefix_setting)
93 if test "$gcc_exec_prefix_setting" != "ok"; then
94 AC_MSG_ERROR([
95 *** GCC_EXEC_PREFIX shouldn't contain the current directory when
96 *** building gcc. Please change the environment variable
97 *** and run configure again.])
98 fi
99
100 # -----------
101 # Directories
102 # -----------
103
104 # Specify the local prefix
105 local_prefix=
106 AC_ARG_WITH(local-prefix,
107 [AS_HELP_STRING([--with-local-prefix=DIR],
108 [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 [AS_HELP_STRING([--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 gcc_gxx_include_dir_add_sysroot=0
148 if test "${with_sysroot+set}" = set; then
149 gcc_gxx_without_sysroot=`expr "${gcc_gxx_include_dir}" : "${with_sysroot}"'\(.*\)'`
150 if test "${gcc_gxx_without_sysroot}"; then
151 gcc_gxx_include_dir="${gcc_gxx_without_sysroot}"
152 gcc_gxx_include_dir_add_sysroot=1
153 fi
154 fi
155
156 AC_ARG_WITH(cpp_install_dir,
157 [AC_HELP_STRING([--with-cpp-install-dir=DIR],
158 [install the user visible C preprocessor in DIR
159 (relative to PREFIX) as well as PREFIX/bin])],
160 [if test x$withval = xyes; then
161 AC_MSG_ERROR([option --with-cpp-install-dir requires an argument])
162 elif test x$withval != xno; then
163 cpp_install_dir=$withval
164 fi])
165
166 # We would like to our source tree to be readonly. However when releases or
167 # pre-releases are generated, the flex/bison generated files as well as the
168 # various formats of manuals need to be included along with the rest of the
169 # sources. Therefore we have --enable-generated-files-in-srcdir to do
170 # just that.
171
172 AC_MSG_CHECKING([whether to place generated files in the source directory])
173 dnl generated-files-in-srcdir is disabled by default
174 AC_ARG_ENABLE(generated-files-in-srcdir,
175 [AS_HELP_STRING([--enable-generated-files-in-srcdir],
176 [put copies of generated files in source dir
177 intended for creating source tarballs for users
178 without texinfo bison or flex])],
179 generated_files_in_srcdir=$enableval,
180 generated_files_in_srcdir=no)
181
182 AC_MSG_RESULT($generated_files_in_srcdir)
183
184 if test "$generated_files_in_srcdir" = "yes"; then
185 GENINSRC=''
186 else
187 GENINSRC='#'
188 fi
189 AC_SUBST(GENINSRC)
190
191 # -------------------
192 # Find default linker
193 # -------------------
194
195 # With GNU ld
196 AC_ARG_WITH(gnu-ld,
197 [AS_HELP_STRING([--with-gnu-ld], [arrange to work with GNU ld])],
198 gnu_ld_flag="$with_gnu_ld",
199 gnu_ld_flag=no)
200
201 # With pre-defined ld
202 AC_ARG_WITH(ld,
203 [AS_HELP_STRING([--with-ld], [arrange to use the specified ld (full pathname)])],
204 DEFAULT_LINKER="$with_ld")
205 if test x"${DEFAULT_LINKER+set}" = x"set"; then
206 if test ! -x "$DEFAULT_LINKER"; then
207 AC_MSG_ERROR([cannot execute: $DEFAULT_LINKER: check --with-ld or env. var. DEFAULT_LINKER])
208 elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
209 gnu_ld_flag=yes
210 fi
211 AC_DEFINE_UNQUOTED(DEFAULT_LINKER,"$DEFAULT_LINKER",
212 [Define to enable the use of a default linker.])
213 fi
214
215 AC_MSG_CHECKING([whether a default linker was specified])
216 if test x"${DEFAULT_LINKER+set}" = x"set"; then
217 if test x"$gnu_ld_flag" = x"no"; then
218 AC_MSG_RESULT([yes ($DEFAULT_LINKER)])
219 else
220 AC_MSG_RESULT([yes ($DEFAULT_LINKER - GNU ld)])
221 fi
222 else
223 AC_MSG_RESULT(no)
224 fi
225
226 # With demangler in GNU ld
227 AC_ARG_WITH(demangler-in-ld,
228 [AS_HELP_STRING([--with-demangler-in-ld], [try to use demangler in GNU ld])],
229 demangler_in_ld="$with_demangler_in_ld",
230 demangler_in_ld=yes)
231
232 # ----------------------
233 # Find default assembler
234 # ----------------------
235
236 # With GNU as
237 AC_ARG_WITH(gnu-as,
238 [AS_HELP_STRING([--with-gnu-as], [arrange to work with GNU as])],
239 gas_flag="$with_gnu_as",
240 gas_flag=no)
241
242 AC_ARG_WITH(as,
243 [AS_HELP_STRING([--with-as], [arrange to use the specified as (full pathname)])],
244 DEFAULT_ASSEMBLER="$with_as")
245 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
246 if test ! -x "$DEFAULT_ASSEMBLER"; then
247 AC_MSG_ERROR([cannot execute: $DEFAULT_ASSEMBLER: check --with-as or env. var. DEFAULT_ASSEMBLER])
248 elif $DEFAULT_ASSEMBLER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
249 gas_flag=yes
250 fi
251 AC_DEFINE_UNQUOTED(DEFAULT_ASSEMBLER,"$DEFAULT_ASSEMBLER",
252 [Define to enable the use of a default assembler.])
253 fi
254
255 AC_MSG_CHECKING([whether a default assembler was specified])
256 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
257 if test x"$gas_flag" = x"no"; then
258 AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER)])
259 else
260 AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)])
261 fi
262 else
263 AC_MSG_RESULT(no)
264 fi
265
266 # ---------------
267 # Find C compiler
268 # ---------------
269
270 # If a non-executable a.out is present (e.g. created by GNU as above even if
271 # invoked with -v only), the IRIX 6 native ld just overwrites the existing
272 # file, even when creating an executable, so an execution test fails.
273 # Remove possible default executable files to avoid this.
274 #
275 # FIXME: This really belongs into AC_PROG_CC and can be removed once
276 # Autoconf includes it.
277 rm -f a.out a.exe b.out
278
279 # Find the native compiler
280 AC_PROG_CC
281 AC_PROG_CXX
282 ACX_PROG_GNAT([-I"$srcdir"/ada])
283
284 # Remove the -O2: for historical reasons, unless bootstrapping we prefer
285 # optimizations to be activated explicitly by the toplevel.
286 case "$CC" in
287 */prev-gcc/xgcc*) ;;
288 *) CFLAGS=`echo "$CFLAGS " | sed -e "s/-Ofast[[ ]]//" -e "s/-O[[gs]][[ ]]//" -e "s/-O[[0-9]]*[[ ]]//" `
289 CXXFLAGS=`echo "$CXXFLAGS " | sed -e "s/-Ofast[[ ]]//" -e "s/-O[[gs]][[ ]]//" -e "s/-O[[0-9]]*[[ ]]//" ` ;;
290 esac
291 AC_SUBST(CFLAGS)
292 AC_SUBST(CXXFLAGS)
293
294 # Determine PICFLAG for target gnatlib.
295 GCC_PICFLAG_FOR_TARGET
296 AC_SUBST(PICFLAG_FOR_TARGET)
297
298 # -------------------------
299 # Check C compiler features
300 # -------------------------
301
302 AC_USE_SYSTEM_EXTENSIONS
303 AC_PROG_CPP
304 AC_C_INLINE
305
306 AC_SYS_LARGEFILE
307
308 # sizeof(char) is 1 by definition.
309 AC_CHECK_SIZEOF(void *)
310 AC_CHECK_SIZEOF(short)
311 AC_CHECK_SIZEOF(int)
312 AC_CHECK_SIZEOF(long)
313 AC_CHECK_TYPES([long long], [AC_CHECK_SIZEOF(long long)])
314 AC_CHECK_TYPES([__int64], [AC_CHECK_SIZEOF(__int64)])
315 GCC_STDINT_TYPES
316
317 # ---------------------
318 # Warnings and checking
319 # ---------------------
320
321 # Check $CC warning features (if it's GCC).
322 # We want to use -pedantic, but we don't want warnings about
323 # * 'long long'
324 # * variadic macros
325 # * overlong strings
326 # * C++11 narrowing conversions in { }
327 # So, we only use -pedantic if we can disable those warnings.
328
329 # In stage 1, disable -Wformat warnings from old GCCs about new % codes
330 AC_ARG_ENABLE(build-format-warnings,
331 AS_HELP_STRING([--disable-build-format-warnings],[don't use -Wformat while building GCC]),
332 [],[enable_build_format_warnings=yes])
333 AS_IF([test $enable_build_format_warnings = no],
334 [wf_opt=-Wno-format],[wf_opt=])
335 ACX_PROG_CC_WARNING_OPTS(
336 m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual $wf_opt])), [loose_warn])
337 ACX_PROG_CC_WARNING_OPTS(
338 m4_quote(m4_do([-Wstrict-prototypes -Wmissing-prototypes])),
339 [c_loose_warn])
340 ACX_PROG_CC_WARNING_OPTS(
341 m4_quote(m4_do([-Wmissing-format-attribute])), [strict_warn])
342 ACX_PROG_CC_WARNING_OPTS(
343 m4_quote(m4_do([-Wold-style-definition -Wc++-compat])), [c_strict_warn])
344 ACX_PROG_CC_WARNING_ALMOST_PEDANTIC(
345 m4_quote(m4_do([-Wno-long-long -Wno-variadic-macros ],
346 [-Wno-overlength-strings])), [strict_warn])
347 ACX_PROG_CC_WARNINGS_ARE_ERRORS([manual], [strict_warn])
348
349 # The above macros do nothing if the compiler is not GCC. However, the
350 # Makefile has more goo to add other flags, so these variables are used
351 # to enable warnings only for GCC.
352 warn_cflags=
353 warn_cxxflags=
354 if test "x$GCC" = "xyes"; then
355 warn_cflags='$(GCC_WARN_CFLAGS)'
356 warn_cxxflags='$(GCC_WARN_CXXFLAGS)'
357 fi
358 AC_SUBST(warn_cflags)
359 AC_SUBST(warn_cxxflags)
360
361 # Disable exceptions and RTTI if building with g++
362 ACX_PROG_CC_WARNING_OPTS(
363 m4_quote(m4_do([-fno-exceptions -fno-rtti -fasynchronous-unwind-tables])),
364 [noexception_flags])
365
366 # Enable expensive internal checks
367 is_release=
368 if test x"`cat $srcdir/DEV-PHASE`" != xexperimental; then
369 is_release=yes
370 fi
371
372 AC_ARG_ENABLE(checking,
373 [AS_HELP_STRING([[--enable-checking[=LIST]]],
374 [enable expensive run-time checks. With LIST,
375 enable only specific categories of checks.
376 Categories are: yes,no,all,none,release.
377 Flags are: assert,df,fold,gc,gcac,gimple,misc,
378 rtlflag,rtl,runtime,tree,valgrind,types])],
379 [ac_checking_flags="${enableval}"],[
380 # Determine the default checks.
381 if test x$is_release = x ; then
382 ac_checking_flags=yes
383 else
384 ac_checking_flags=release
385 fi])
386 IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="$IFS,"
387 for check in release $ac_checking_flags
388 do
389 case $check in
390 # these set all the flags to specific states
391 yes) ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking= ;
392 ac_fold_checking= ; ac_gc_checking=1 ;
393 ac_gc_always_collect= ; ac_gimple_checking=1 ; ac_rtl_checking= ;
394 ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
395 ac_tree_checking=1 ; ac_valgrind_checking= ;
396 ac_types_checking=1 ;;
397 no|none) ac_assert_checking= ; ac_checking= ; ac_df_checking= ;
398 ac_fold_checking= ; ac_gc_checking= ;
399 ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
400 ac_rtlflag_checking= ; ac_runtime_checking= ;
401 ac_tree_checking= ; ac_valgrind_checking= ;
402 ac_types_checking= ;;
403 all) ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking=1 ;
404 ac_fold_checking=1 ; ac_gc_checking=1 ;
405 ac_gc_always_collect=1 ; ac_gimple_checking=1 ; ac_rtl_checking=1 ;
406 ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
407 ac_tree_checking=1 ; ac_valgrind_checking= ;
408 ac_types_checking=1 ;;
409 release) ac_assert_checking=1 ; ac_checking= ; ac_df_checking= ;
410 ac_fold_checking= ; ac_gc_checking= ;
411 ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
412 ac_rtlflag_checking= ; ac_runtime_checking=1 ;
413 ac_tree_checking= ; ac_valgrind_checking= ;
414 ac_types_checking= ;;
415 # these enable particular checks
416 assert) ac_assert_checking=1 ;;
417 df) ac_df_checking=1 ;;
418 fold) ac_fold_checking=1 ;;
419 gc) ac_gc_checking=1 ;;
420 gcac) ac_gc_always_collect=1 ;;
421 gimple) ac_gimple_checking=1 ;;
422 misc) ac_checking=1 ;;
423 rtl) ac_rtl_checking=1 ;;
424 rtlflag) ac_rtlflag_checking=1 ;;
425 runtime) ac_runtime_checking=1 ;;
426 tree) ac_tree_checking=1 ;;
427 types) ac_types_checking=1 ;;
428 valgrind) ac_valgrind_checking=1 ;;
429 *) AC_MSG_ERROR(unknown check category $check) ;;
430 esac
431 done
432 IFS="$ac_save_IFS"
433
434 nocommon_flag=""
435 if test x$ac_checking != x ; then
436 AC_DEFINE(ENABLE_CHECKING, 1,
437 [Define if you want more run-time sanity checks. This one gets a grab
438 bag of miscellaneous but relatively cheap checks.])
439 nocommon_flag=-fno-common
440 fi
441 AC_SUBST(nocommon_flag)
442 if test x$ac_df_checking != x ; then
443 AC_DEFINE(ENABLE_DF_CHECKING, 1,
444 [Define if you want more run-time sanity checks for dataflow.])
445 fi
446 if test x$ac_assert_checking != x ; then
447 AC_DEFINE(ENABLE_ASSERT_CHECKING, 1,
448 [Define if you want assertions enabled. This is a cheap check.])
449 fi
450 if test x$ac_gimple_checking != x ; then
451 AC_DEFINE(ENABLE_GIMPLE_CHECKING, 1,
452 [Define if you want operations on GIMPLE (the basic data structure of
453 the high-level optimizers) to be checked for dynamic type safety at
454 runtime. This is moderately expensive.])
455 fi
456 GCC_TARGET_TEMPLATE(ENABLE_RUNTIME_CHECKING)
457 if test x$ac_runtime_checking != x ; then
458 AC_DEFINE(ENABLE_RUNTIME_CHECKING, 1,
459 [Define if you want runtime assertions enabled. This is a cheap check.])
460 fi
461 if test x$ac_tree_checking != x ; then
462 AC_DEFINE(ENABLE_TREE_CHECKING, 1,
463 [Define if you want all operations on trees (the basic data
464 structure of the front ends) to be checked for dynamic type safety
465 at runtime. This is moderately expensive. The tree browser debugging
466 routines will also be enabled by this option.
467 ])
468 TREEBROWSER=tree-browser.o
469 TREECHECKING=yes
470 fi
471 if test x$ac_types_checking != x ; then
472 AC_DEFINE(ENABLE_TYPES_CHECKING, 1,
473 [Define if you want all gimple types to be verified after gimplifiation.
474 This is cheap.
475 ])
476 fi
477 AC_SUBST(TREEBROWSER)
478 AC_SUBST(TREECHECKING)
479 if test x$ac_rtl_checking != x ; then
480 AC_DEFINE(ENABLE_RTL_CHECKING, 1,
481 [Define if you want all operations on RTL (the basic data structure
482 of the optimizer and back end) to be checked for dynamic type safety
483 at runtime. This is quite expensive.])
484 fi
485 if test x$ac_rtlflag_checking != x ; then
486 AC_DEFINE(ENABLE_RTL_FLAG_CHECKING, 1,
487 [Define if you want RTL flag accesses to be checked against the RTL
488 codes that are supported for each access macro. This is relatively
489 cheap.])
490 fi
491 if test x$ac_gc_checking != x ; then
492 AC_DEFINE(ENABLE_GC_CHECKING, 1,
493 [Define if you want the garbage collector to do object poisoning and
494 other memory allocation checks. This is quite expensive.])
495 fi
496 if test x$ac_gc_always_collect != x ; then
497 AC_DEFINE(ENABLE_GC_ALWAYS_COLLECT, 1,
498 [Define if you want the garbage collector to operate in maximally
499 paranoid mode, validating the entire heap and collecting garbage at
500 every opportunity. This is extremely expensive.])
501 fi
502 if test x$ac_fold_checking != x ; then
503 AC_DEFINE(ENABLE_FOLD_CHECKING, 1,
504 [Define if you want fold checked that it never destructs its argument.
505 This is quite expensive.])
506 fi
507 valgrind_path_defines=
508 valgrind_command=
509
510 dnl # This check AC_REQUIREs various stuff, so it *must not* be inside
511 dnl # an if statement. This was the source of very frustrating bugs
512 dnl # in converting to autoconf 2.5x!
513 AC_CHECK_HEADER(valgrind.h, have_valgrind_h=yes, have_valgrind_h=no)
514
515 if test x$ac_valgrind_checking != x ; then
516 # It is certainly possible that there's valgrind but no valgrind.h.
517 # GCC relies on making annotations so we must have both.
518 AC_MSG_CHECKING(for VALGRIND_DISCARD in <valgrind/memcheck.h>)
519 AC_PREPROC_IFELSE([AC_LANG_SOURCE(
520 [[#include <valgrind/memcheck.h>
521 #ifndef VALGRIND_DISCARD
522 #error VALGRIND_DISCARD not defined
523 #endif]])],
524 [gcc_cv_header_valgrind_memcheck_h=yes],
525 [gcc_cv_header_valgrind_memcheck_h=no])
526 AC_MSG_RESULT($gcc_cv_header_valgrind_memcheck_h)
527 AC_MSG_CHECKING(for VALGRIND_DISCARD in <memcheck.h>)
528 AC_PREPROC_IFELSE([AC_LANG_SOURCE(
529 [[#include <memcheck.h>
530 #ifndef VALGRIND_DISCARD
531 #error VALGRIND_DISCARD not defined
532 #endif]])],
533 [gcc_cv_header_memcheck_h=yes],
534 [gcc_cv_header_memcheck_h=no])
535 AC_MSG_RESULT($gcc_cv_header_memcheck_h)
536 AM_PATH_PROG_WITH_TEST(valgrind_path, valgrind,
537 [$ac_dir/$ac_word --version | grep valgrind- >/dev/null 2>&1])
538 if test "x$valgrind_path" = "x" \
539 || (test $have_valgrind_h = no \
540 && test $gcc_cv_header_memcheck_h = no \
541 && test $gcc_cv_header_valgrind_memcheck_h = no); then
542 AC_MSG_ERROR([*** Can't find both valgrind and valgrind/memcheck.h, memcheck.h or valgrind.h])
543 fi
544 valgrind_path_defines=-DVALGRIND_PATH='\"'$valgrind_path'\"'
545 valgrind_command="$valgrind_path -q"
546 AC_DEFINE(ENABLE_VALGRIND_CHECKING, 1,
547 [Define if you want to run subprograms and generated programs
548 through valgrind (a memory checker). This is extremely expensive.])
549 if test $gcc_cv_header_valgrind_memcheck_h = yes; then
550 AC_DEFINE(HAVE_VALGRIND_MEMCHECK_H, 1,
551 [Define if valgrind's valgrind/memcheck.h header is installed.])
552 fi
553 if test $gcc_cv_header_memcheck_h = yes; then
554 AC_DEFINE(HAVE_MEMCHECK_H, 1,
555 [Define if valgrind's memcheck.h header is installed.])
556 fi
557 fi
558 AC_SUBST(valgrind_path_defines)
559 AC_SUBST(valgrind_command)
560
561 # Enable code coverage collection
562 AC_ARG_ENABLE(coverage,
563 [AS_HELP_STRING([[--enable-coverage[=LEVEL]]],
564 [enable compiler's code coverage collection.
565 Use to measure compiler performance and locate
566 unused parts of the compiler. With LEVEL, specify
567 optimization. Values are opt, noopt,
568 default is noopt])],
569 [case "${enableval}" in
570 yes|noopt)
571 coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O0"
572 ;;
573 opt)
574 coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O2"
575 ;;
576 no)
577 # a.k.a. --disable-coverage
578 coverage_flags=""
579 ;;
580 *)
581 AC_MSG_ERROR(unknown coverage setting $enableval)
582 ;;
583 esac],
584 [coverage_flags=""])
585 AC_SUBST(coverage_flags)
586
587 AC_ARG_ENABLE(gather-detailed-mem-stats,
588 [AS_HELP_STRING([--enable-gather-detailed-mem-stats],
589 [enable detailed memory allocation stats gathering])], [],
590 [enable_gather_detailed_mem_stats=no])
591 gather_stats=`if test $enable_gather_detailed_mem_stats != no; then echo 1; else echo 0; fi`
592 AC_DEFINE_UNQUOTED(GATHER_STATISTICS, $gather_stats,
593 [Define to enable detailed memory allocation stats gathering.])
594
595 # -------------------------------
596 # Miscenalleous configure options
597 # -------------------------------
598
599 # With stabs
600 AC_ARG_WITH(stabs,
601 [AS_HELP_STRING([--with-stabs],
602 [arrange to use stabs instead of host debug format])],
603 stabs="$with_stabs",
604 stabs=no)
605
606 # Determine whether or not multilibs are enabled.
607 AC_ARG_ENABLE(multilib,
608 [AS_HELP_STRING([--enable-multilib],
609 [enable library support for multiple ABIs])],
610 [], [enable_multilib=yes])
611 AC_SUBST(enable_multilib)
612
613 # Determine whether or not multiarch is enabled.
614 AC_ARG_ENABLE(multiarch,
615 [AS_HELP_STRING([--enable-multiarch],
616 [enable support for multiarch paths])],
617 [case "${enableval}" in
618 yes|no|auto) enable_multiarch=$enableval;;
619 *) AC_MSG_ERROR(bad value ${enableval} given for --enable-multiarch option) ;;
620 esac], [enable_multiarch=auto])
621 if test x${enable_multiarch} = xauto; then
622 if test x${with_native_system_header_dir} != x; then
623 ma_msg_suffix=", disabled auto check (configured with --native-system-header-dir)"
624 enable_multiarch=no
625 fi
626 if test x$host != x$target && test "x$with_sysroot" = x; then
627 ma_msg_suffix=", disabled auto check (cross build configured without --with-sysroot)"
628 enable_multiarch=no
629 fi
630 fi
631 AC_MSG_CHECKING(for multiarch configuration)
632 AC_SUBST(enable_multiarch)
633 AC_MSG_RESULT($enable_multiarch$ma_msg_suffix)
634
635 # needed for setting the multiarch name for soft-float/hard-float ABIs
636 AC_SUBST(with_cpu)
637 AC_SUBST(with_float)
638
639 # Enable __cxa_atexit for C++.
640 AC_ARG_ENABLE(__cxa_atexit,
641 [AS_HELP_STRING([--enable-__cxa_atexit], [enable __cxa_atexit for C++])],
642 [], [])
643
644 # Enable C extension for decimal float if target supports it.
645 GCC_AC_ENABLE_DECIMAL_FLOAT([$target])
646
647 dfp=`if test $enable_decimal_float != no; then echo 1; else echo 0; fi`
648 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_FLOAT, $dfp,
649 [Define to 1 to enable decimal float extension to C.])
650
651 # Use default_decimal_float for dependency.
652 enable_decimal_float=$default_decimal_float
653
654 bid=`if test $enable_decimal_float = bid; then echo 1; else echo 0; fi`
655 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_BID_FORMAT, $bid,
656 [Define to 1 to specify that we are using the BID decimal floating
657 point format instead of DPD])
658
659 # Enable C extension for fixed-point arithmetic.
660 AC_ARG_ENABLE(fixed-point,
661 [AS_HELP_STRING([--enable-fixed-point],
662 [enable fixed-point arithmetic extension to C])],
663 [],
664 [
665 case $target in
666 arm*)
667 enable_fixed_point=yes
668 ;;
669
670 mips*-*-*)
671 enable_fixed_point=yes
672 ;;
673 *)
674 AC_MSG_WARN([fixed-point is not supported for this target, ignored])
675 enable_fixed_point=no
676 ;;
677 esac
678 ])
679 AC_SUBST(enable_fixed_point)
680
681 fixedpoint=`if test $enable_fixed_point = yes; then echo 1; else echo 0; fi`
682 AC_DEFINE_UNQUOTED(ENABLE_FIXED_POINT, $fixedpoint,
683 [Define to 1 to enable fixed-point arithmetic extension to C.])
684
685 # Enable threads
686 # Pass with no value to take the default
687 # Pass with a value to specify a thread package
688 AC_ARG_ENABLE(threads,
689 [AS_HELP_STRING([[--enable-threads[=LIB]]],
690 [enable thread usage for target GCC,
691 using LIB thread package])],,
692 [enable_threads=''])
693
694 AC_ARG_ENABLE(tls,
695 [AS_HELP_STRING([--enable-tls],
696 [enable or disable generation of tls code
697 overriding the assembler check for tls support])],
698 [
699 case $enable_tls in
700 yes | no) ;;
701 *) AC_MSG_ERROR(['$enable_tls' is an invalid value for --enable-tls.
702 Valid choices are 'yes' and 'no'.]) ;;
703 esac
704 ], [enable_tls=''])
705
706 AC_ARG_ENABLE(objc-gc,
707 [AS_HELP_STRING([--enable-objc-gc],
708 [enable the use of Boehm's garbage collector with
709 the GNU Objective-C runtime])],
710 if test x$enable_objc_gc = xno; then
711 objc_boehm_gc=''
712 else
713 objc_boehm_gc=1
714 fi,
715 objc_boehm_gc='')
716
717 AC_ARG_WITH(dwarf2,
718 [AS_HELP_STRING([--with-dwarf2], [force the default debug format to be DWARF 2])],
719 dwarf2="$with_dwarf2",
720 dwarf2=no)
721
722 AC_ARG_ENABLE(shared,
723 [AS_HELP_STRING([--disable-shared], [don't provide a shared libgcc])],
724 [
725 case $enable_shared in
726 yes | no) ;;
727 *)
728 enable_shared=no
729 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
730 for pkg in $enableval; do
731 if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
732 enable_shared=yes
733 fi
734 done
735 IFS="$ac_save_ifs"
736 ;;
737 esac
738 ], [enable_shared=yes])
739 AC_SUBST(enable_shared)
740
741 AC_ARG_WITH([native-system-header-dir],
742 [ --with-native-system-header-dir=dir
743 use dir as the directory to look for standard
744 system header files in. Defaults to /usr/include.],
745 [
746 case ${with_native_system_header_dir} in
747 yes|no) AC_MSG_ERROR([bad value ${withval} given for --with-native-system-header-dir]) ;;
748 /* | [[A-Za-z]]:[[\\/]]*) ;;
749 *) AC_MSG_ERROR([--with-native-system-header-dir argument ${withval} must be an absolute directory]) ;;
750 esac
751 configured_native_system_header_dir="${withval}"
752 ], [configured_native_system_header_dir=])
753
754 AC_ARG_WITH(build-sysroot,
755 [AS_HELP_STRING([--with-build-sysroot=sysroot],
756 [use sysroot as the system root during the build])],
757 [if test x"$withval" != x ; then
758 SYSROOT_CFLAGS_FOR_TARGET="--sysroot=$withval"
759 fi],
760 [SYSROOT_CFLAGS_FOR_TARGET=])
761 AC_SUBST(SYSROOT_CFLAGS_FOR_TARGET)
762
763 if test "x$prefix" = xNONE; then
764 test_prefix=/usr/local
765 else
766 test_prefix=$prefix
767 fi
768 if test "x$exec_prefix" = xNONE; then
769 test_exec_prefix=$test_prefix
770 else
771 test_exec_prefix=$exec_prefix
772 fi
773
774 AC_ARG_WITH(sysroot,
775 [AS_HELP_STRING([[--with-sysroot[=DIR]]],
776 [search for usr/lib, usr/include, et al, within DIR])],
777 [
778 case ${with_sysroot} in
779 yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;;
780 *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
781 esac
782
783 TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
784 CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
785
786 case ${TARGET_SYSTEM_ROOT} in
787 "${test_prefix}"|"${test_prefix}/"*|\
788 "${test_exec_prefix}"|"${test_exec_prefix}/"*|\
789 '${prefix}'|'${prefix}/'*|\
790 '${exec_prefix}'|'${exec_prefix}/'*)
791 t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
792 TARGET_SYSTEM_ROOT_DEFINE="$t"
793 ;;
794 esac
795 ], [
796 TARGET_SYSTEM_ROOT=
797 TARGET_SYSTEM_ROOT_DEFINE=
798 CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
799 ])
800 AC_SUBST(TARGET_SYSTEM_ROOT)
801 AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
802 AC_SUBST(CROSS_SYSTEM_HEADER_DIR)
803
804 AC_ARG_WITH(specs,
805 [AS_HELP_STRING([--with-specs=SPECS],
806 [add SPECS to driver command-line processing])],
807 [CONFIGURE_SPECS=$withval],
808 [CONFIGURE_SPECS=]
809 )
810 AC_SUBST(CONFIGURE_SPECS)
811
812 ACX_PKGVERSION([GCC])
813 ACX_BUGURL([http://gcc.gnu.org/bugs.html])
814
815 # Sanity check enable_languages in case someone does not run the toplevel
816 # configure # script.
817 AC_ARG_ENABLE(languages,
818 [AS_HELP_STRING([--enable-languages=LIST], [specify which front-ends to build])],
819 [case ,${enable_languages}, in
820 ,,|,yes,)
821 # go safe -- we cannot be much sure without the toplevel
822 # configure's
823 # analysis of which target libs are present and usable
824 enable_languages=c
825 ;;
826 *,all,*)
827 AC_MSG_ERROR([only the toplevel supports --enable-languages=all])
828 ;;
829 *,c,*)
830 ;;
831 *)
832 enable_languages=c,${enable_languages}
833 ;;
834 esac],
835 [enable_languages=c])
836
837 AC_ARG_WITH(multilib-list,
838 [AS_HELP_STRING([--with-multilib-list], [select multilibs (AArch64, SH and x86-64 only)])],
839 :,
840 with_multilib_list=default)
841
842 # -------------------------
843 # Checks for other programs
844 # -------------------------
845
846 AC_PROG_MAKE_SET
847
848 # Find some useful tools
849 AC_PROG_AWK
850 # We need awk to create options.c and options.h.
851 # Bail out if it's missing.
852 case ${AWK} in
853 "") AC_MSG_ERROR([can't build without awk, bailing out]) ;;
854 esac
855
856 gcc_AC_PROG_LN_S
857 ACX_PROG_LN($LN_S)
858 AC_PROG_RANLIB
859 ranlib_flags=""
860 AC_SUBST(ranlib_flags)
861
862 gcc_AC_PROG_INSTALL
863
864 # See if cmp has --ignore-initial.
865 gcc_AC_PROG_CMP_IGNORE_INITIAL
866
867 # See if we have the mktemp command.
868 AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
869
870 # See if makeinfo has been installed and is modern enough
871 # that we can use it.
872 ACX_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
873 [GNU texinfo.* \([0-9][0-9.]*\)],
874 [4.[7-9]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-9]*])
875 if test $gcc_cv_prog_makeinfo_modern = no; then
876 AC_MSG_WARN([
877 *** Makeinfo is missing or too old.
878 *** Info documentation will not be built.])
879 BUILD_INFO=
880 else
881 BUILD_INFO=info
882 fi
883 AC_SUBST(BUILD_INFO)
884
885 # Is pod2man recent enough to regenerate manpages?
886 AC_MSG_CHECKING([for recent Pod::Man])
887 if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
888 AC_MSG_RESULT(yes)
889 GENERATED_MANPAGES=generated-manpages
890 else
891 AC_MSG_RESULT(no)
892 GENERATED_MANPAGES=
893 fi
894 AC_SUBST(GENERATED_MANPAGES)
895
896 MISSING="${CONFIG_SHELL-/bin/sh} $ac_aux_dir/missing"
897
898 # How about lex?
899 dnl Don't use AC_PROG_LEX; we insist on flex.
900 dnl LEXLIB is not useful in gcc.
901 AC_CHECK_PROGS([FLEX], flex, [$MISSING flex])
902
903 # Bison?
904 AC_CHECK_PROGS([BISON], bison, [$MISSING bison])
905
906 # Binutils are not build modules, unlike bison/flex/makeinfo. So we
907 # check for build == host before using them.
908
909 # NM
910 if test x${build} = x${host} && test -f $srcdir/../binutils/nm.c \
911 && test -d ../binutils ; then
912 NM='${objdir}/../binutils/nm-new'
913 else
914 AC_CHECK_PROG(NM, nm, nm, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing nm)
915 fi
916
917 # AR
918 if test x${build} = x${host} && test -f $srcdir/../binutils/ar.c \
919 && test -d ../binutils ; then
920 AR='${objdir}/../binutils/ar'
921 else
922 AC_CHECK_PROG(AR, ar, ar, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing ar)
923 fi
924
925
926 # --------------------
927 # Checks for C headers
928 # --------------------
929
930 # Need to reject headers which give warnings, so that the -Werror bootstrap
931 # works later. *sigh* This needs to come before all header checks.
932 AC_PROG_CPP_WERROR
933
934 AC_HEADER_STDC
935 AC_HEADER_TIME
936 ACX_HEADER_STRING
937 AC_HEADER_SYS_WAIT
938 AC_HEADER_TIOCGWINSZ
939 AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
940 fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
941 sys/resource.h sys/param.h sys/times.h sys/stat.h \
942 direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
943
944 # Check for thread headers.
945 AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
946 AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
947
948 # These tests can't be done till we know if we have limits.h.
949 gcc_AC_C_CHAR_BIT
950 AC_C_BIGENDIAN
951
952 # ----------------------
953 # Checks for C++ headers
954 # ----------------------
955
956 dnl Autoconf will give an error in the configure script if there is no
957 dnl C++ preprocessor. Hack to prevent that.
958 m4_pushdef([AC_MSG_ERROR], m4_defn([AC_MSG_WARN]))[]dnl
959 AC_PROG_CXXCPP
960 m4_popdef([AC_MSG_ERROR])[]dnl
961
962 AC_LANG_PUSH(C++)
963
964 AC_CHECK_HEADERS(unordered_map)
965 AC_CHECK_HEADERS(tr1/unordered_map)
966 AC_CHECK_HEADERS(ext/hash_map)
967
968 AC_LANG_POP(C++)
969
970 # --------
971 # Dependency checking.
972 # --------
973
974 AC_LANG_PUSH(C++)
975 ZW_CREATE_DEPDIR
976 AC_CONFIG_COMMANDS([gccdepdir],[
977 ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs build/$DEPDIR
978 for lang in $subdirs c-family common
979 do
980 ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs $lang/$DEPDIR
981 done], [subdirs="$subdirs" ac_aux_dir=$ac_aux_dir DEPDIR=$DEPDIR])
982
983 ZW_PROG_COMPILER_DEPENDENCIES([CXX])
984 AC_LANG_POP(C++)
985
986 # --------
987 # UNSORTED
988 # --------
989
990
991 # These libraries may be used by collect2.
992 # We may need a special search path to get them linked.
993 AC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs,
994 [save_LIBS="$LIBS"
995 for libs in '' -lld -lmld \
996 '-L/usr/lib/cmplrs/cc2.11 -lmld' \
997 '-L/usr/lib/cmplrs/cc3.11 -lmld'
998 do
999 LIBS="$libs"
1000 AC_TRY_LINK_FUNC(ldopen,
1001 [gcc_cv_collect2_libs="$libs"; break])
1002 done
1003 LIBS="$save_LIBS"
1004 test -z "$gcc_cv_collect2_libs" && gcc_cv_collect2_libs='none required'])
1005 case $gcc_cv_collect2_libs in
1006 "none required") ;;
1007 *) COLLECT2_LIBS=$gcc_cv_collect2_libs ;;
1008 esac
1009 AC_SUBST(COLLECT2_LIBS)
1010
1011 # When building Ada code on Alpha, we need exc_resume which is usually in
1012 # -lexc. So test for it.
1013 save_LIBS="$LIBS"
1014 LIBS=
1015 AC_SEARCH_LIBS(exc_resume, exc)
1016 GNAT_LIBEXC="$LIBS"
1017 LIBS="$save_LIBS"
1018 AC_SUBST(GNAT_LIBEXC)
1019
1020 # To support -mcpu=native on Solaris/SPARC, we need libkstat.
1021 save_LIBS="$LIBS"
1022 LIBS=
1023 AC_SEARCH_LIBS(kstat_open, kstat)
1024 EXTRA_GCC_LIBS="$LIBS"
1025 LIBS="$save_LIBS"
1026 AC_SUBST(EXTRA_GCC_LIBS)
1027
1028 # Some systems put ldexp and frexp in libm instead of libc; assume
1029 # they're both in the same place. jcf-dump needs them.
1030 save_LIBS="$LIBS"
1031 LIBS=
1032 AC_SEARCH_LIBS(ldexp, m)
1033 LDEXP_LIB="$LIBS"
1034 LIBS="$save_LIBS"
1035 AC_SUBST(LDEXP_LIB)
1036
1037 # Use <inttypes.h> only if it exists,
1038 # doesn't clash with <sys/types.h>, and declares intmax_t.
1039 AC_MSG_CHECKING(for inttypes.h)
1040 AC_CACHE_VAL(gcc_cv_header_inttypes_h,
1041 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1042 [[#include <sys/types.h>
1043 #include <inttypes.h>]],
1044 [[intmax_t i = -1;]])],
1045 [gcc_cv_header_inttypes_h=yes],
1046 [gcc_cv_header_inttypes_h=no])])
1047 AC_MSG_RESULT($gcc_cv_header_inttypes_h)
1048 if test $gcc_cv_header_inttypes_h = yes; then
1049 AC_DEFINE(HAVE_INTTYPES_H, 1,
1050 [Define if you have a working <inttypes.h> header file.])
1051 fi
1052
1053 dnl Disabled until we have a complete test for buggy enum bitfields.
1054 dnl gcc_AC_C_ENUM_BF_UNSIGNED
1055
1056 define(gcc_UNLOCKED_FUNCS, clearerr_unlocked feof_unlocked dnl
1057 ferror_unlocked fflush_unlocked fgetc_unlocked fgets_unlocked dnl
1058 fileno_unlocked fprintf_unlocked fputc_unlocked fputs_unlocked dnl
1059 fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl
1060 putchar_unlocked putc_unlocked)
1061 AC_CHECK_FUNCS(times clock kill getrlimit setrlimit atoll atoq \
1062 sysconf strsignal getrusage nl_langinfo \
1063 gettimeofday mbstowcs wcswidth mmap setlocale \
1064 gcc_UNLOCKED_FUNCS madvise)
1065
1066 if test x$ac_cv_func_mbstowcs = xyes; then
1067 AC_CACHE_CHECK(whether mbstowcs works, gcc_cv_func_mbstowcs_works,
1068 [ AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
1069 int main()
1070 {
1071 mbstowcs(0, "", 0);
1072 return 0;
1073 }]])],
1074 [gcc_cv_func_mbstowcs_works=yes],
1075 [gcc_cv_func_mbstowcs_works=no],
1076 [gcc_cv_func_mbstowcs_works=yes])])
1077 if test x$gcc_cv_func_mbstowcs_works = xyes; then
1078 AC_DEFINE(HAVE_WORKING_MBSTOWCS, 1,
1079 [Define this macro if mbstowcs does not crash when its
1080 first argument is NULL.])
1081 fi
1082 fi
1083
1084 AC_CHECK_TYPE(ssize_t, int)
1085 AC_CHECK_TYPE(caddr_t, char *)
1086
1087 GCC_AC_FUNC_MMAP_BLACKLIST
1088
1089 case "${host}" in
1090 *-*-*vms*)
1091 # Under VMS, vfork works very differently than on Unix. The standard test
1092 # won't work, and it isn't easily adaptable. It makes more sense to
1093 # just force it.
1094 ac_cv_func_vfork_works=yes
1095 ;;
1096 esac
1097 AC_FUNC_FORK
1098
1099 # g++ on Solaris 10+ defines _XOPEN_SOURCE=600, which exposes a different
1100 # iconv() prototype.
1101 AC_LANG_PUSH([C++])
1102 AM_ICONV
1103 AC_LANG_POP([C++])
1104
1105 # Until we have in-tree GNU iconv:
1106 LIBICONV_DEP=
1107 AC_SUBST(LIBICONV_DEP)
1108
1109 AM_LC_MESSAGES
1110
1111 AM_LANGINFO_CODESET
1112
1113 # We will need to find libiberty.h and ansidecl.h
1114 saved_CFLAGS="$CFLAGS"
1115 CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC"
1116 saved_CXXFLAGS="$CXXFLAGS"
1117 CXXFLAGS="$CXXFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC"
1118 gcc_AC_CHECK_DECLS(getenv atol asprintf sbrk abort atof getcwd getwd \
1119 strsignal strstr stpcpy strverscmp \
1120 errno snprintf vsnprintf vasprintf malloc realloc calloc \
1121 free basename getopt clock getpagesize ffs gcc_UNLOCKED_FUNCS, , ,[
1122 #include "ansidecl.h"
1123 #include "system.h"])
1124
1125 gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
1126 #include "ansidecl.h"
1127 #include "system.h"
1128 #ifdef HAVE_SYS_RESOURCE_H
1129 #include <sys/resource.h>
1130 #endif
1131 ])
1132
1133 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1134 #include "ansidecl.h"
1135 #include "system.h"
1136 #ifdef HAVE_SYS_RESOURCE_H
1137 #include <sys/resource.h>
1138 #endif
1139 ]], [[rlim_t l = 0;]])],[],[AC_DEFINE([rlim_t],[long],
1140 [Define to `long' if <sys/resource.h> doesn't define.])])
1141
1142 # On AIX 5.2, <ldfcn.h> conflicts with <fcntl.h>, as both define incompatible
1143 # FREAD and FWRITE macros. Fortunately, for GCC's single usage of ldgetname
1144 # in collect2.c, <fcntl.h> isn't visible, but the configure test below needs
1145 # to undef these macros to get the correct value for HAVE_DECL_LDGETNAME.
1146 gcc_AC_CHECK_DECLS(ldgetname, , ,[
1147 #include "ansidecl.h"
1148 #include "system.h"
1149 #ifdef HAVE_LDFCN_H
1150 #undef FREAD
1151 #undef FWRITE
1152 #include <ldfcn.h>
1153 #endif
1154 ])
1155
1156 gcc_AC_CHECK_DECLS(times, , ,[
1157 #include "ansidecl.h"
1158 #include "system.h"
1159 #ifdef HAVE_SYS_TIMES_H
1160 #include <sys/times.h>
1161 #endif
1162 ])
1163
1164 gcc_AC_CHECK_DECLS(sigaltstack, , ,[
1165 #include "ansidecl.h"
1166 #include "system.h"
1167 #include <signal.h>
1168 ])
1169
1170 # g++ on Solaris 10+ defines _XOPEN_SOURCE=600, which hides the madvise()
1171 # prototype.
1172 AC_LANG_PUSH([C++])
1173 gcc_AC_CHECK_DECLS(madvise, , ,[
1174 #include "ansidecl.h"
1175 #include "system.h"
1176 ])
1177 AC_LANG_POP([C++])
1178
1179 # More time-related stuff.
1180 AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
1181 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1182 #include "ansidecl.h"
1183 #include "system.h"
1184 #ifdef HAVE_SYS_TIMES_H
1185 #include <sys/times.h>
1186 #endif
1187 ]], [[struct tms tms;]])],[ac_cv_struct_tms=yes],[ac_cv_struct_tms=no])])
1188 if test $ac_cv_struct_tms = yes; then
1189 AC_DEFINE(HAVE_STRUCT_TMS, 1,
1190 [Define if <sys/times.h> defines struct tms.])
1191 fi
1192
1193 # use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
1194 # revisit after autoconf 2.50.
1195 AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
1196 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1197 #include "ansidecl.h"
1198 #include "system.h"
1199 ]], [[clock_t x;]])],[gcc_cv_type_clock_t=yes],[gcc_cv_type_clock_t=no])])
1200 if test $gcc_cv_type_clock_t = yes; then
1201 AC_DEFINE(HAVE_CLOCK_T, 1,
1202 [Define if <time.h> defines clock_t.])
1203 fi
1204
1205 # Check if F_SETLKW is supported by fcntl.
1206 AC_CACHE_CHECK(for F_SETLKW, ac_cv_f_setlkw, [
1207 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1208 #include <fcntl.h>]], [[
1209 struct flock fl;
1210 fl.l_whence = 0;
1211 fl.l_start = 0;
1212 fl.l_len = 0;
1213 fl.l_pid = 0;
1214 return fcntl (1, F_SETLKW, &fl);]])],
1215 [ac_cv_f_setlkw=yes],[ac_cv_f_setlkw=no])])
1216 if test $ac_cv_f_setlkw = yes; then
1217 AC_DEFINE(HOST_HAS_F_SETLKW, 1,
1218 [Define if F_SETLKW supported by fcntl.])
1219 fi
1220
1221 # Restore CFLAGS, CXXFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
1222 CFLAGS="$saved_CFLAGS"
1223 CXXFLAGS="$saved_CXXFLAGS"
1224
1225 # mkdir takes a single argument on some systems.
1226 gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
1227
1228 # File extensions
1229 manext='.1'
1230 objext='.o'
1231 AC_SUBST(manext)
1232 AC_SUBST(objext)
1233
1234 # With Setjmp/Longjmp based exception handling.
1235 AC_ARG_ENABLE(sjlj-exceptions,
1236 [AS_HELP_STRING([--enable-sjlj-exceptions],
1237 [arrange to use setjmp/longjmp exception handling])],
1238 [case $target in
1239 *-*-hpux10*)
1240 if test $enableval != yes; then
1241 AC_MSG_WARN([dwarf2 exceptions not supported, sjlj exceptions forced])
1242 enableval=yes
1243 fi
1244 ;;
1245 esac
1246 force_sjlj_exceptions=yes],
1247 [case $target in
1248 *-*-hpux10*)
1249 force_sjlj_exceptions=yes
1250 enableval=yes
1251 ;;
1252 *)
1253 force_sjlj_exceptions=no
1254 ;;
1255 esac])
1256 if test $force_sjlj_exceptions = yes; then
1257 sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi`
1258 AC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj,
1259 [Define 0/1 to force the choice for exception handling model.])
1260 fi
1261
1262 # --------------------------------------------------------
1263 # Build, host, and target specific configuration fragments
1264 # --------------------------------------------------------
1265
1266 # Collect build-machine-specific information.
1267 . ${srcdir}/config.build
1268
1269 # Collect host-machine-specific information.
1270 . ${srcdir}/config.host
1271
1272 target_gtfiles=
1273
1274 # Collect target-machine-specific information.
1275 . ${srcdir}/config.gcc
1276
1277 extra_objs="${host_extra_objs} ${extra_objs}"
1278 extra_gcc_objs="${host_extra_gcc_objs} ${extra_gcc_objs}"
1279
1280 # Default the target-machine variables that were not explicitly set.
1281 if test x"$tm_file" = x
1282 then tm_file=$cpu_type/$cpu_type.h; fi
1283
1284 if test x"$extra_headers" = x
1285 then extra_headers=; fi
1286
1287 if test x$md_file = x
1288 then md_file=$cpu_type/$cpu_type.md; fi
1289
1290 if test x$out_file = x
1291 then out_file=$cpu_type/$cpu_type.c; fi
1292
1293 if test x"$tmake_file" = x
1294 then tmake_file=$cpu_type/t-$cpu_type
1295 fi
1296
1297 # Support --enable-initfini-array.
1298 if test x$enable_initfini_array != xno; then
1299 tm_file="${tm_file} initfini-array.h"
1300 fi
1301
1302 if test x"$dwarf2" = xyes
1303 then tm_file="$tm_file tm-dwarf2.h"
1304 fi
1305
1306 # Say what files are being used for the output code and MD file.
1307 echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
1308 echo "Using \`$srcdir/config/$md_file' as machine description file."
1309
1310 # If any of the xm_file variables contain nonexistent files, warn
1311 # about them and drop them.
1312
1313 bx=
1314 for x in $build_xm_file; do
1315 if test -f $srcdir/config/$x
1316 then bx="$bx $x"
1317 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1318 fi
1319 done
1320 build_xm_file="$bx"
1321
1322 hx=
1323 for x in $host_xm_file; do
1324 if test -f $srcdir/config/$x
1325 then hx="$hx $x"
1326 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1327 fi
1328 done
1329 host_xm_file="$hx"
1330
1331 tx=
1332 for x in $xm_file; do
1333 if test -f $srcdir/config/$x
1334 then tx="$tx $x"
1335 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1336 fi
1337 done
1338 xm_file="$tx"
1339
1340 count=a
1341 for f in $tm_file; do
1342 count=${count}x
1343 done
1344 if test $count = ax; then
1345 echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
1346 else
1347 echo "Using the following target machine macro files:"
1348 for f in $tm_file; do
1349 echo " $srcdir/config/$f"
1350 done
1351 fi
1352
1353 if test x$need_64bit_hwint = xyes; then
1354 AC_DEFINE(NEED_64BIT_HOST_WIDE_INT, 1,
1355 [Define to 1 if HOST_WIDE_INT must be 64 bits wide (see hwint.h).])
1356 fi
1357
1358 if test x$use_long_long_for_widest_fast_int = xyes; then
1359 AC_DEFINE(USE_LONG_LONG_FOR_WIDEST_FAST_INT, 1,
1360 [Define to 1 if the 'long long' (or '__int64') is wider than 'long' but still
1361 efficiently supported by the host hardware.])
1362 fi
1363
1364 gnu_ld_bool=`if test x"$gnu_ld" = x"yes"; then echo 1; else echo 0; fi`
1365 AC_DEFINE_UNQUOTED(HAVE_GNU_LD, $gnu_ld_bool, [Define to 1 if using GNU ld.])
1366
1367 gnu_as_bool=`if test x"$gas" = x"yes"; then echo 1; else echo 0; fi`
1368 AC_DEFINE_UNQUOTED(HAVE_GNU_AS, $gnu_as_bool, [Define to 1 if using GNU as.])
1369
1370 count=a
1371 for f in $host_xm_file; do
1372 count=${count}x
1373 done
1374 if test $count = a; then
1375 :
1376 elif test $count = ax; then
1377 echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
1378 else
1379 echo "Using the following host machine macro files:"
1380 for f in $host_xm_file; do
1381 echo " $srcdir/config/$f"
1382 done
1383 fi
1384 echo "Using ${out_host_hook_obj} for host machine hooks."
1385
1386 if test "$host_xm_file" != "$build_xm_file"; then
1387 count=a
1388 for f in $build_xm_file; do
1389 count=${count}x
1390 done
1391 if test $count = a; then
1392 :
1393 elif test $count = ax; then
1394 echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
1395 else
1396 echo "Using the following build machine macro files:"
1397 for f in $build_xm_file; do
1398 echo " $srcdir/config/$f"
1399 done
1400 fi
1401 fi
1402
1403 if test -n "$configured_native_system_header_dir"; then
1404 native_system_header_dir=$configured_native_system_header_dir
1405 fi
1406 NATIVE_SYSTEM_HEADER_DIR="$native_system_header_dir"
1407 AC_SUBST(NATIVE_SYSTEM_HEADER_DIR)
1408
1409 case ${host} in
1410 powerpc*-*-darwin*)
1411 AC_CACHE_CHECK([whether mcontext_t fields have underscores],
1412 gcc_cv_mcontext_underscores,
1413 AC_COMPILE_IFELSE([
1414 #include <sys/cdefs.h>
1415 #include <sys/signal.h>
1416 #include <ucontext.h>
1417 int main() { mcontext_t m; if (m->ss.srr0) return 0; return 0; }
1418 ],
1419 gcc_cv_mcontext_underscores=no, gcc_cv_mcontext_underscores=yes))
1420 if test $gcc_cv_mcontext_underscores = yes; then
1421 AC_DEFINE(HAS_MCONTEXT_T_UNDERSCORES,,dnl
1422 [mcontext_t fields start with __])
1423 fi
1424 ;;
1425 esac
1426
1427 # ---------
1428 # Threading
1429 # ---------
1430
1431 # Check if a valid thread package
1432 case ${enable_threads} in
1433 "" | no)
1434 # No threads
1435 target_thread_file='single'
1436 ;;
1437 yes)
1438 # default
1439 target_thread_file='single'
1440 ;;
1441 aix | dce | lynx | mipssde | posix | rtems | \
1442 single | tpf | vxworks | win32)
1443 target_thread_file=${enable_threads}
1444 ;;
1445 *)
1446 echo "${enable_threads} is an unknown thread package" 1>&2
1447 exit 1
1448 ;;
1449 esac
1450
1451 if test x${thread_file} = x; then
1452 # No thread file set by target-specific clauses in config.gcc,
1453 # so use file chosen by default logic above
1454 thread_file=${target_thread_file}
1455 fi
1456
1457 # --------
1458 # UNSORTED
1459 # --------
1460
1461 use_cxa_atexit=no
1462 if test x$enable___cxa_atexit = xyes || \
1463 test x$enable___cxa_atexit = x -a x$default_use_cxa_atexit = xyes; then
1464 if test x$host = x$target; then
1465 case $host in
1466 # mingw32 doesn't have __cxa_atexit but uses atexit registration
1467 # keyed to flag_use_cxa_atexit
1468 *-*-mingw32*)
1469 use_cxa_atexit=yes
1470 ;;
1471 powerpc-ibm-aix*)
1472 use_cxa_atexit=yes
1473 ;;
1474 *)
1475 AC_CHECK_FUNC(__cxa_atexit,[use_cxa_atexit=yes],
1476 [echo "__cxa_atexit can't be enabled on this target"])
1477 ;;
1478 esac
1479 else
1480 # We can't check for __cxa_atexit when building a cross, so assume
1481 # it is available
1482 use_cxa_atexit=yes
1483 fi
1484 if test x$use_cxa_atexit = xyes; then
1485 AC_DEFINE(DEFAULT_USE_CXA_ATEXIT, 2,
1486 [Define if you want to use __cxa_atexit, rather than atexit, to
1487 register C++ destructors for local statics and global objects.
1488 This is essential for fully standards-compliant handling of
1489 destructors, but requires __cxa_atexit in libc.])
1490 fi
1491 fi
1492
1493 # Look for a file containing extra machine modes.
1494 if test -n "$extra_modes" && test -f $srcdir/config/$extra_modes; then
1495 extra_modes_file='$(srcdir)'/config/${extra_modes}
1496 AC_SUBST(extra_modes_file)
1497 AC_DEFINE_UNQUOTED(EXTRA_MODES_FILE, "config/$extra_modes",
1498 [Define to the name of a file containing a list of extra machine modes
1499 for this architecture.])
1500 fi
1501
1502 # Convert extra_options into a form suitable for Makefile use.
1503 extra_opt_files=
1504 all_opt_files=
1505 for f in $extra_options; do
1506 extra_opt_files="$extra_opt_files \$(srcdir)/config/$f"
1507 all_opt_files="$all_opt_files $srcdir/config/$f"
1508 done
1509 AC_SUBST(extra_opt_files)
1510
1511 # auto-host.h is the file containing items generated by autoconf and is
1512 # the first file included by config.h.
1513 # If host=build, it is correct to have bconfig include auto-host.h
1514 # as well. If host!=build, we are in error and need to do more
1515 # work to find out the build config parameters.
1516 if test x$host = x$build
1517 then
1518 build_auto=auto-host.h
1519 else
1520 # We create a subdir, then run autoconf in the subdir.
1521 # To prevent recursion we set host and build for the new
1522 # invocation of configure to the build for this invocation
1523 # of configure.
1524 tempdir=build.$$
1525 rm -rf $tempdir
1526 mkdir $tempdir
1527 cd $tempdir
1528 case ${srcdir} in
1529 /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
1530 *) realsrcdir=../${srcdir};;
1531 esac
1532 CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
1533 LDFLAGS="${LDFLAGS_FOR_BUILD}" GMPINC="" \
1534 ${realsrcdir}/configure \
1535 --enable-languages=${enable_languages-all} \
1536 --target=$target_alias --host=$build_alias --build=$build_alias
1537
1538 # We just finished tests for the build machine, so rename
1539 # the file auto-build.h in the gcc directory.
1540 mv auto-host.h ../auto-build.h
1541 cd ..
1542 rm -rf $tempdir
1543 build_auto=auto-build.h
1544 fi
1545 AC_SUBST(build_subdir)
1546
1547 tm_file="${tm_file} defaults.h"
1548 tm_p_file="${tm_p_file} tm-preds.h"
1549 host_xm_file="auto-host.h ansidecl.h ${host_xm_file}"
1550 build_xm_file="${build_auto} ansidecl.h ${build_xm_file}"
1551 # We don't want ansidecl.h in target files, write code there in ISO/GNU C.
1552 # put this back in temporarily.
1553 xm_file="auto-host.h ansidecl.h ${xm_file}"
1554
1555 # --------
1556 # UNSORTED
1557 # --------
1558
1559 changequote(,)dnl
1560 # Compile in configure arguments.
1561 if test -f configargs.h ; then
1562 # Being re-configured.
1563 gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'`
1564 gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
1565 else
1566 gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
1567 fi
1568
1569 # Double all backslashes and backslash all quotes to turn
1570 # gcc_config_arguments into a C string.
1571 sed -e 's/\\/\\\\/g; s/"/\\"/g' <<EOF >conftest.out
1572 $gcc_config_arguments
1573 EOF
1574 gcc_config_arguments_str=`cat conftest.out`
1575 rm -f conftest.out
1576
1577 cat > configargs.h <<EOF
1578 /* Generated automatically. */
1579 static const char configuration_arguments[] = "$gcc_config_arguments_str";
1580 static const char thread_model[] = "$thread_file";
1581
1582 static const struct {
1583 const char *name, *value;
1584 } configure_default_options[] = $configure_default_options;
1585 EOF
1586 changequote([,])dnl
1587
1588 changequote(,)dnl
1589 gcc_BASEVER=`cat $srcdir/BASE-VER`
1590 gcc_DEVPHASE=`cat $srcdir/DEV-PHASE`
1591 gcc_DATESTAMP=`cat $srcdir/DATESTAMP`
1592 if test -f $srcdir/REVISION ; then
1593 gcc_REVISION=`cat $srcdir/REVISION`
1594 else
1595 gcc_REVISION=""
1596 fi
1597 cat > plugin-version.h <<EOF
1598 #include "configargs.h"
1599
1600 #define GCCPLUGIN_VERSION_MAJOR `echo $gcc_BASEVER | sed -e 's/^\([0-9]*\).*$/\1/'`
1601 #define GCCPLUGIN_VERSION_MINOR `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.\([0-9]*\).*$/\1/'`
1602 #define GCCPLUGIN_VERSION_PATCHLEVEL `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.[0-9]*\.\([0-9]*\)$/\1/'`
1603 #define GCCPLUGIN_VERSION (GCCPLUGIN_VERSION_MAJOR*1000 + GCCPLUGIN_VERSION_MINOR)
1604
1605 static char basever[] = "$gcc_BASEVER";
1606 static char datestamp[] = "$gcc_DATESTAMP";
1607 static char devphase[] = "$gcc_DEVPHASE";
1608 static char revision[] = "$gcc_REVISION";
1609
1610 /* FIXME plugins: We should make the version information more precise.
1611 One way to do is to add a checksum. */
1612
1613 static struct plugin_gcc_version gcc_version = {basever, datestamp,
1614 devphase, revision,
1615 configuration_arguments};
1616 EOF
1617 changequote([,])dnl
1618
1619 # Internationalization
1620 ZW_GNU_GETTEXT_SISTER_DIR
1621
1622 # If LIBINTL contains LIBICONV, then clear LIBICONV so we don't get
1623 # -liconv on the link line twice.
1624 case "$LIBINTL" in *$LIBICONV*)
1625 LIBICONV= ;;
1626 esac
1627
1628 AC_ARG_ENABLE(secureplt,
1629 [AS_HELP_STRING([--enable-secureplt],
1630 [enable -msecure-plt by default for PowerPC])],
1631 [], [])
1632
1633 AC_ARG_ENABLE(leading-mingw64-underscores,
1634 AS_HELP_STRING([--enable-leading-mingw64-underscores],
1635 [enable leading underscores on 64 bit mingw targets]),
1636 [],[])
1637 AS_IF([ test x"$enable_leading_mingw64_underscores" = xyes ],
1638 [AC_DEFINE(USE_MINGW64_LEADING_UNDERSCORES, 1,
1639 [Define if we should use leading underscore on 64 bit mingw targets])])
1640
1641 AC_ARG_ENABLE(cld,
1642 [AS_HELP_STRING([--enable-cld], [enable -mcld by default for 32bit x86])], [],
1643 [enable_cld=no])
1644
1645 AC_ARG_ENABLE(frame-pointer,
1646 [AS_HELP_STRING([--enable-frame-pointer],
1647 [enable -fno-omit-frame-pointer by default for 32bit x86])], [],
1648 [
1649 case $target_os in
1650 linux* | darwin[[8912]]*)
1651 # Enable -fomit-frame-pointer by default for Linux and Darwin with
1652 # DWARF2.
1653 enable_frame_pointer=no
1654 ;;
1655 *)
1656 enable_frame_pointer=yes
1657 ;;
1658 esac
1659 ])
1660
1661 # Windows32 Registry support for specifying GCC installation paths.
1662 AC_ARG_ENABLE(win32-registry,
1663 [AS_HELP_STRING([--disable-win32-registry],
1664 [disable lookup of installation paths in the
1665 Registry on Windows hosts])
1666 AS_HELP_STRING([--enable-win32-registry], [enable registry lookup (default)])
1667 AS_HELP_STRING([--enable-win32-registry=KEY],
1668 [use KEY instead of GCC version as the last portion
1669 of the registry key])],,)
1670
1671 case $host_os in
1672 win32 | pe | cygwin* | mingw32* | uwin*)
1673 if test "x$enable_win32_registry" != xno; then
1674 AC_SEARCH_LIBS(RegOpenKeyExA, advapi32,, [enable_win32_registry=no])
1675 fi
1676
1677 if test "x$enable_win32_registry" != xno; then
1678 AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
1679 [Define to 1 if installation paths should be looked up in the Windows
1680 Registry. Ignored on non-Windows hosts.])
1681
1682 if test "x$enable_win32_registry" != xyes \
1683 && test "x$enable_win32_registry" != x; then
1684 AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$enable_win32_registry",
1685 [Define to be the last component of the Windows registry key under which
1686 to look for installation paths. The full key used will be
1687 HKEY_LOCAL_MACHINE/SOFTWARE/Free Software Foundation/{WIN32_REGISTRY_KEY}.
1688 The default is the GCC version number.])
1689 fi
1690 fi
1691 ;;
1692 esac
1693
1694 # Get an absolute path to the GCC top-level source directory
1695 holddir=`${PWDCMD-pwd}`
1696 cd $srcdir
1697 topdir=`${PWDCMD-pwd}`
1698 cd $holddir
1699
1700 # Conditionalize the makefile for this host machine.
1701 xmake_file=
1702 for f in ${host_xmake_file}
1703 do
1704 if test -f ${srcdir}/config/$f
1705 then
1706 xmake_file="${xmake_file} \$(srcdir)/config/$f"
1707 fi
1708 done
1709
1710 # Conditionalize the makefile for this target machine.
1711 tmake_file_=
1712 for f in ${tmake_file}
1713 do
1714 if test -f ${srcdir}/config/$f
1715 then
1716 tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
1717 fi
1718 done
1719 tmake_file="${tmake_file_}"
1720
1721 out_object_file=`basename $out_file .c`.o
1722 common_out_object_file=`basename $common_out_file .c`.o
1723
1724 tm_file_list="options.h"
1725 tm_include_list="options.h insn-constants.h"
1726 for f in $tm_file; do
1727 case $f in
1728 ./* )
1729 f=`echo $f | sed 's/^..//'`
1730 tm_file_list="${tm_file_list} $f"
1731 tm_include_list="${tm_include_list} $f"
1732 ;;
1733 defaults.h )
1734 tm_file_list="${tm_file_list} \$(srcdir)/$f"
1735 tm_include_list="${tm_include_list} $f"
1736 ;;
1737 * )
1738 tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
1739 tm_include_list="${tm_include_list} config/$f"
1740 ;;
1741 esac
1742 done
1743
1744 tm_p_file_list=
1745 tm_p_include_list=
1746 for f in $tm_p_file; do
1747 case $f in
1748 tm-preds.h )
1749 tm_p_file_list="${tm_p_file_list} $f"
1750 tm_p_include_list="${tm_p_include_list} $f"
1751 ;;
1752 * )
1753 tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f"
1754 tm_p_include_list="${tm_p_include_list} config/$f"
1755 esac
1756 done
1757
1758 xm_file_list=
1759 xm_include_list=
1760 for f in $xm_file; do
1761 case $f in
1762 ansidecl.h )
1763 xm_file_list="${xm_file_list} \$(srcdir)/../include/$f"
1764 xm_include_list="${xm_include_list} $f"
1765 ;;
1766 auto-host.h )
1767 xm_file_list="${xm_file_list} $f"
1768 xm_include_list="${xm_include_list} $f"
1769 ;;
1770 * )
1771 xm_file_list="${xm_file_list} \$(srcdir)/config/$f"
1772 xm_include_list="${xm_include_list} config/$f"
1773 ;;
1774 esac
1775 done
1776
1777 host_xm_file_list=
1778 host_xm_include_list=
1779 for f in $host_xm_file; do
1780 case $f in
1781 ansidecl.h )
1782 host_xm_file_list="${host_xm_file_list} \$(srcdir)/../include/$f"
1783 host_xm_include_list="${host_xm_include_list} $f"
1784 ;;
1785 auto-host.h )
1786 host_xm_file_list="${host_xm_file_list} $f"
1787 host_xm_include_list="${host_xm_include_list} $f"
1788 ;;
1789 * )
1790 host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f"
1791 host_xm_include_list="${host_xm_include_list} config/$f"
1792 ;;
1793 esac
1794 done
1795
1796 build_xm_file_list=
1797 for f in $build_xm_file; do
1798 case $f in
1799 ansidecl.h )
1800 build_xm_file_list="${build_xm_file_list} \$(srcdir)/../include/$f"
1801 build_xm_include_list="${build_xm_include_list} $f"
1802 ;;
1803 auto-build.h | auto-host.h )
1804 build_xm_file_list="${build_xm_file_list} $f"
1805 build_xm_include_list="${build_xm_include_list} $f"
1806 ;;
1807 * )
1808 build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f"
1809 build_xm_include_list="${build_xm_include_list} config/$f"
1810 ;;
1811 esac
1812 done
1813
1814 # Define macro CROSS_DIRECTORY_STRUCTURE in compilation if this is a
1815 # cross-compiler which does not use the native headers and libraries.
1816 # Also use all.cross instead of all.internal and adjust SYSTEM_HEADER_DIR.
1817 CROSS= AC_SUBST(CROSS)
1818 ALL=all.internal AC_SUBST(ALL)
1819 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' AC_SUBST(SYSTEM_HEADER_DIR)
1820
1821 if test "x$with_build_sysroot" != x; then
1822 build_system_header_dir=$with_build_sysroot'$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
1823 else
1824 # This value is used, even on a native system, because
1825 # CROSS_SYSTEM_HEADER_DIR is just
1826 # $(TARGET_SYSTEM_ROOT)$(NATIVE_SYSTEM_HEADER_DIR).
1827 build_system_header_dir='$(CROSS_SYSTEM_HEADER_DIR)'
1828 fi
1829
1830 if test x$host != x$target
1831 then
1832 CROSS="-DCROSS_DIRECTORY_STRUCTURE"
1833 ALL=all.cross
1834 SYSTEM_HEADER_DIR=$build_system_header_dir
1835 case "$host","$target" in
1836 # Darwin crosses can use the host system's libraries and headers,
1837 # because of the fat library support. Of course, it must be the
1838 # same version of Darwin on both sides. Allow the user to
1839 # just say --target=foo-darwin without a version number to mean
1840 # "the version on this system".
1841 *-*-darwin*,*-*-darwin*)
1842 hostos=`echo $host | sed 's/.*-darwin/darwin/'`
1843 targetos=`echo $target | sed 's/.*-darwin/darwin/'`
1844 if test $hostos = $targetos -o $targetos = darwin ; then
1845 CROSS=
1846 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)'
1847 with_headers=yes
1848 fi
1849 ;;
1850
1851 i?86-*-*,x86_64-*-* \
1852 | powerpc*-*-*,powerpc64*-*-*)
1853 CROSS="$CROSS -DNATIVE_CROSS" ;;
1854 esac
1855
1856 case $target in
1857 *-*-mingw*)
1858 if test "x$with_headers" = x; then
1859 with_headers=yes
1860 fi
1861 ;;
1862 *)
1863 ;;
1864 esac
1865 elif test "x$TARGET_SYSTEM_ROOT" != x; then
1866 SYSTEM_HEADER_DIR=$build_system_header_dir
1867 fi
1868
1869 # If this is a cross-compiler that does not
1870 # have its own set of headers then define
1871 # inhibit_libc
1872
1873 # If this is using newlib, without having the headers available now,
1874 # then define inhibit_libc in LIBGCC2_CFLAGS.
1875 # This prevents libgcc2 from containing any code which requires libc
1876 # support.
1877 : ${inhibit_libc=false}
1878 if { { test x$host != x$target && test "x$with_sysroot" = x ; } ||
1879 test x$with_newlib = xyes ; } &&
1880 { test "x$with_headers" = x || test "x$with_headers" = xno ; } ; then
1881 inhibit_libc=true
1882 fi
1883 AC_SUBST(inhibit_libc)
1884
1885 # When building gcc with a cross-compiler, we need to adjust things so
1886 # that the generator programs are still built with the native compiler.
1887 # Also, we cannot run fixincludes.
1888
1889 # These are the normal (build=host) settings:
1890 CC_FOR_BUILD='$(CC)' AC_SUBST(CC_FOR_BUILD)
1891 CXX_FOR_BUILD='$(CXX)' AC_SUBST(CXX_FOR_BUILD)
1892 BUILD_CFLAGS='$(ALL_CFLAGS)' AC_SUBST(BUILD_CFLAGS)
1893 BUILD_CXXFLAGS='$(ALL_CXXFLAGS)' AC_SUBST(BUILD_CXXFLAGS)
1894 BUILD_LDFLAGS='$(LDFLAGS)' AC_SUBST(BUILD_LDFLAGS)
1895 STMP_FIXINC=stmp-fixinc AC_SUBST(STMP_FIXINC)
1896
1897 # And these apply if build != host, or we are generating coverage data
1898 if test x$build != x$host || test "x$coverage_flags" != x
1899 then
1900 BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
1901 BUILD_CXXFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CXXFLAGS_FOR_BUILD)'
1902 BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
1903 fi
1904
1905 # Expand extra_headers to include complete path.
1906 # This substitutes for lots of t-* files.
1907 extra_headers_list=
1908 # Prepend $(srcdir)/config/${cpu_type}/ to every entry in extra_headers.
1909 for file in ${extra_headers} ; do
1910 extra_headers_list="${extra_headers_list} \$(srcdir)/config/${cpu_type}/${file}"
1911 done
1912
1913 # If use_gcc_tgmath is set, append ginclude/tgmath.h.
1914 if test x"$use_gcc_tgmath" = xyes
1915 then extra_headers_list="${extra_headers_list} \$(srcdir)/ginclude/tgmath.h"
1916 fi
1917
1918 # Define collect2 in Makefile.
1919 case $host_can_use_collect2 in
1920 no) collect2= ;;
1921 *) collect2='collect2$(exeext)' ;;
1922 esac
1923 AC_SUBST([collect2])
1924
1925 # Add a definition of USE_COLLECT2 if system wants one.
1926 case $use_collect2 in
1927 no) use_collect2= ;;
1928 "") ;;
1929 *)
1930 host_xm_defines="${host_xm_defines} USE_COLLECT2"
1931 xm_defines="${xm_defines} USE_COLLECT2"
1932 case $host_can_use_collect2 in
1933 no)
1934 AC_MSG_ERROR([collect2 is required but cannot be built on this system])
1935 ;;
1936 esac
1937 ;;
1938 esac
1939
1940 AC_DEFINE_UNQUOTED(LTOPLUGINSONAME,"${host_lto_plugin_soname}",
1941 [Define to the name of the LTO plugin DSO that must be
1942 passed to the linker's -plugin=LIB option.])
1943
1944 # ---------------------------
1945 # Assembler & linker features
1946 # ---------------------------
1947
1948 # During stage 2, ld is actually gcc/collect-ld, which is a small script to
1949 # discern between when to use prev-ld/ld-new and when to use ld/ld-new.
1950 # However when ld-new is first executed from the build tree, libtool will
1951 # relink it as .libs/lt-ld-new, so that it can give it an RPATH that refers
1952 # to the build tree. While doing this we need to use the previous-stage
1953 # linker, or we have an infinite loop. The presence of a shell script as
1954 # ld/ld-new, and the fact that the script *uses ld itself*, is what confuses
1955 # the gcc/collect-ld script. So we need to know how libtool works, or
1956 # exec-tool will fail.
1957
1958 m4_defun([_LT_CONFIG_COMMANDS], [])
1959 AC_PROG_LIBTOOL
1960 AC_SUBST(objdir)
1961 AC_SUBST(enable_fast_install)
1962
1963 # Identify the assembler which will work hand-in-glove with the newly
1964 # built GCC, so that we can examine its features. This is the assembler
1965 # which will be driven by the driver program.
1966 #
1967 # If build != host, and we aren't building gas in-tree, we identify a
1968 # build->target assembler and hope that it will have the same features
1969 # as the host->target assembler we'll be using.
1970 gcc_cv_gas_major_version=
1971 gcc_cv_gas_minor_version=
1972 gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
1973
1974 m4_pattern_allow([AS_FOR_TARGET])dnl
1975 AS_VAR_SET_IF(gcc_cv_as,, [
1976 if test -x "$DEFAULT_ASSEMBLER"; then
1977 gcc_cv_as="$DEFAULT_ASSEMBLER"
1978 elif test -f $gcc_cv_as_gas_srcdir/configure.in \
1979 && test -f ../gas/Makefile \
1980 && test x$build = x$host; then
1981 gcc_cv_as=../gas/as-new$build_exeext
1982 elif test -x as$build_exeext; then
1983 # Build using assembler in the current directory.
1984 gcc_cv_as=./as$build_exeext
1985 elif ( set dummy $AS_FOR_TARGET; test -x $[2] ); then
1986 gcc_cv_as="$AS_FOR_TARGET"
1987 else
1988 AC_PATH_PROG(gcc_cv_as, $AS_FOR_TARGET)
1989 fi])
1990
1991 ORIGINAL_AS_FOR_TARGET=$gcc_cv_as
1992 AC_SUBST(ORIGINAL_AS_FOR_TARGET)
1993 case "$ORIGINAL_AS_FOR_TARGET" in
1994 ./as | ./as$build_exeext) ;;
1995 *) AC_CONFIG_FILES(as:exec-tool.in, [chmod +x as]) ;;
1996 esac
1997
1998 AC_MSG_CHECKING(what assembler to use)
1999 if test "$gcc_cv_as" = ../gas/as-new$build_exeext; then
2000 # Single tree build which includes gas. We want to prefer it
2001 # over whatever linker top-level may have detected, since
2002 # we'll use what we're building after installation anyway.
2003 AC_MSG_RESULT(newly built gas)
2004 in_tree_gas=yes
2005 _gcc_COMPUTE_GAS_VERSION
2006 in_tree_gas_is_elf=no
2007 if grep 'obj_format = elf' ../gas/Makefile > /dev/null \
2008 || (grep 'obj_format = multi' ../gas/Makefile \
2009 && grep 'extra_objects =.* obj-elf' ../gas/Makefile) > /dev/null
2010 then
2011 in_tree_gas_is_elf=yes
2012 fi
2013 else
2014 AC_MSG_RESULT($gcc_cv_as)
2015 in_tree_gas=no
2016 fi
2017
2018 default_ld=
2019 AC_ARG_ENABLE(ld,
2020 [[ --enable-ld[=ARG] build ld [ARG={default,yes,no}]]],
2021 [case "${enableval}" in
2022 no)
2023 default_ld=ld.gold
2024 ;;
2025 esac])
2026
2027 AC_ARG_ENABLE(gold,
2028 [[ --enable-gold[=ARG] build gold [ARG={default,yes,no}]]],
2029 [case "${enableval}" in
2030 default)
2031 install_gold_as_default=yes
2032 ;;
2033 yes)
2034 if test x${default_ld} != x; then
2035 install_gold_as_default=yes
2036 fi
2037 ;;
2038 no)
2039 ;;
2040 *)
2041 AC_MSG_ERROR([invalid --enable-gold argument])
2042 ;;
2043 esac],
2044 [install_gold_as_default=no])
2045
2046 # Identify the linker which will work hand-in-glove with the newly
2047 # built GCC, so that we can examine its features. This is the linker
2048 # which will be driven by the driver program.
2049 #
2050 # If build != host, and we aren't building gas in-tree, we identify a
2051 # build->target linker and hope that it will have the same features
2052 # as the host->target linker we'll be using.
2053 gcc_cv_gld_major_version=
2054 gcc_cv_gld_minor_version=
2055 gcc_cv_ld_gld_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/ld
2056 gcc_cv_ld_gold_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gold
2057 gcc_cv_ld_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
2058
2059 AS_VAR_SET_IF(gcc_cv_ld,, [
2060 if test -x "$DEFAULT_LINKER"; then
2061 gcc_cv_ld="$DEFAULT_LINKER"
2062 elif test $install_gold_as_default = yes \
2063 && test -f $gcc_cv_ld_gold_srcdir/configure.ac \
2064 && test -f ../gold/Makefile \
2065 && test x$build = x$host; then
2066 gcc_cv_ld=../gold/ld-new$build_exeext
2067 elif test -f $gcc_cv_ld_gld_srcdir/configure.in \
2068 && test -f ../ld/Makefile \
2069 && test x$build = x$host; then
2070 gcc_cv_ld=../ld/ld-new$build_exeext
2071 elif test -x collect-ld$build_exeext; then
2072 # Build using linker in the current directory.
2073 gcc_cv_ld=./collect-ld$build_exeext
2074 elif ( set dummy $LD_FOR_TARGET; test -x $[2] ); then
2075 gcc_cv_ld="$LD_FOR_TARGET"
2076 else
2077 AC_PATH_PROG(gcc_cv_ld, $LD_FOR_TARGET)
2078 fi])
2079
2080 ORIGINAL_PLUGIN_LD_FOR_TARGET=$gcc_cv_ld
2081 PLUGIN_LD_SUFFIX=`basename $gcc_cv_ld | sed -e "s,$target_alias-,,"`
2082 # if the PLUGIN_LD is set ld-new, just have it as ld
2083 # as that is the installed named.
2084 if test x$PLUGIN_LD_SUFFIX = xld-new \
2085 || test x$PLUGIN_LD_SUFFIX = xcollect-ld ; then
2086 PLUGIN_LD_SUFFIX=ld
2087 fi
2088 AC_ARG_WITH(plugin-ld,
2089 [AS_HELP_STRING([[--with-plugin-ld=[ARG]]], [specify the plugin linker])],
2090 [if test x"$withval" != x; then
2091 ORIGINAL_PLUGIN_LD_FOR_TARGET="$withval"
2092 PLUGIN_LD_SUFFIX=`echo $withval | sed -e "s,$target_alias-,,"`
2093 fi])
2094 AC_SUBST(ORIGINAL_PLUGIN_LD_FOR_TARGET)
2095 AC_DEFINE_UNQUOTED(PLUGIN_LD_SUFFIX, "$PLUGIN_LD_SUFFIX", [Specify plugin linker])
2096
2097 # Check to see if we are using gold instead of ld
2098 AC_MSG_CHECKING(whether we are using gold)
2099 ld_is_gold=no
2100 if test x$gcc_cv_ld != x; then
2101 if $gcc_cv_ld --version 2>/dev/null | sed 1q \
2102 | grep "GNU gold" > /dev/null; then
2103 ld_is_gold=yes
2104 fi
2105 fi
2106 AC_MSG_RESULT($ld_is_gold)
2107
2108 ORIGINAL_LD_FOR_TARGET=$gcc_cv_ld
2109 AC_SUBST(ORIGINAL_LD_FOR_TARGET)
2110 case "$ORIGINAL_LD_FOR_TARGET" in
2111 ./collect-ld | ./collect-ld$build_exeext) ;;
2112 *) AC_CONFIG_FILES(collect-ld:exec-tool.in, [chmod +x collect-ld]) ;;
2113 esac
2114
2115 AC_MSG_CHECKING(what linker to use)
2116 if test "$gcc_cv_ld" = ../ld/ld-new$build_exeext \
2117 || test "$gcc_cv_ld" = ../gold/ld-new$build_exeext; then
2118 # Single tree build which includes ld. We want to prefer it
2119 # over whatever linker top-level may have detected, since
2120 # we'll use what we're building after installation anyway.
2121 AC_MSG_RESULT(newly built ld)
2122 in_tree_ld=yes
2123 in_tree_ld_is_elf=no
2124 if (grep 'EMUL = .*elf' ../ld/Makefile \
2125 || grep 'EMUL = .*linux' ../ld/Makefile \
2126 || grep 'EMUL = .*lynx' ../ld/Makefile) > /dev/null; then
2127 in_tree_ld_is_elf=yes
2128 elif test "$ld_is_gold" = yes; then
2129 in_tree_ld_is_elf=yes
2130 fi
2131 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
2132 do
2133 changequote(,)dnl
2134 gcc_cv_gld_version=`sed -n -e 's/^[ ]*VERSION=[^0-9A-Za-z_]*\([0-9]*\.[0-9]*.*\)/VERSION=\1/p' < $f`
2135 if test x$gcc_cv_gld_version != x; then
2136 break
2137 fi
2138 done
2139 case $gcc_cv_gld_version in
2140 VERSION=[0-9]*) ;;
2141 changequote([,])dnl
2142 *) AC_MSG_ERROR([[cannot find version of in-tree linker]]) ;;
2143 changequote(,)dnl
2144 esac
2145 gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
2146 gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
2147 changequote([,])dnl
2148 ORIGINAL_LD_BFD_FOR_TARGET=../ld/ld-new$build_exeext
2149 ORIGINAL_LD_GOLD_FOR_TARGET=../gold/ld-new$build_exeext
2150 else
2151 AC_MSG_RESULT($gcc_cv_ld)
2152 in_tree_ld=no
2153 gcc_cvs_ld_program=`dirname $gcc_cv_ld`/`basename $gcc_cv_ld $host_exeext`
2154 ORIGINAL_LD_BFD_FOR_TARGET=${gcc_cvs_ld_program}.bfd$host_exeext
2155 ORIGINAL_LD_GOLD_FOR_TARGET=${gcc_cvs_ld_program}.gold$host_exeext
2156 fi
2157
2158 AC_SUBST(ORIGINAL_LD_BFD_FOR_TARGET)
2159 AC_SUBST(ORIGINAL_LD_GOLD_FOR_TARGET)
2160
2161 # Figure out what nm we will be using.
2162 gcc_cv_binutils_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/binutils
2163 AS_VAR_SET_IF(gcc_cv_nm,, [
2164 if test -f $gcc_cv_binutils_srcdir/configure.in \
2165 && test -f ../binutils/Makefile \
2166 && test x$build = x$host; then
2167 gcc_cv_nm=../binutils/nm-new$build_exeext
2168 elif test -x nm$build_exeext; then
2169 gcc_cv_nm=./nm$build_exeext
2170 elif ( set dummy $NM_FOR_TARGET; test -x $[2] ); then
2171 gcc_cv_nm="$NM_FOR_TARGET"
2172 else
2173 AC_PATH_PROG(gcc_cv_nm, $NM_FOR_TARGET)
2174 fi])
2175
2176 AC_MSG_CHECKING(what nm to use)
2177 if test "$gcc_cv_nm" = ../binutils/nm-new$build_exeext; then
2178 # Single tree build which includes binutils.
2179 AC_MSG_RESULT(newly built nm)
2180 in_tree_nm=yes
2181 else
2182 AC_MSG_RESULT($gcc_cv_nm)
2183 in_tree_nm=no
2184 fi
2185
2186 ORIGINAL_NM_FOR_TARGET=$gcc_cv_nm
2187 AC_SUBST(ORIGINAL_NM_FOR_TARGET)
2188 case "$ORIGINAL_NM_FOR_TARGET" in
2189 ./nm | ./nm$build_exeext) ;;
2190 *) AC_CONFIG_FILES(nm:exec-tool.in, [chmod +x nm]) ;;
2191 esac
2192
2193
2194 # Figure out what objdump we will be using.
2195 AS_VAR_SET_IF(gcc_cv_objdump,, [
2196 if test -f $gcc_cv_binutils_srcdir/configure.in \
2197 && test -f ../binutils/Makefile \
2198 && test x$build = x$host; then
2199 # Single tree build which includes binutils.
2200 gcc_cv_objdump=../binutils/objdump$build_exeext
2201 elif test -x objdump$build_exeext; then
2202 gcc_cv_objdump=./objdump$build_exeext
2203 elif ( set dummy $OBJDUMP_FOR_TARGET; test -x $[2] ); then
2204 gcc_cv_objdump="$OBJDUMP_FOR_TARGET"
2205 else
2206 AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET)
2207 fi])
2208
2209 AC_MSG_CHECKING(what objdump to use)
2210 if test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then
2211 # Single tree build which includes binutils.
2212 AC_MSG_RESULT(newly built objdump)
2213 elif test x$gcc_cv_objdump = x; then
2214 AC_MSG_RESULT(not found)
2215 else
2216 AC_MSG_RESULT($gcc_cv_objdump)
2217 fi
2218
2219 # Figure out what readelf we will be using.
2220 AS_VAR_SET_IF(gcc_cv_readelf,, [
2221 if test -f $gcc_cv_binutils_srcdir/configure.in \
2222 && test -f ../binutils/Makefile \
2223 && test x$build = x$host; then
2224 # Single tree build which includes binutils.
2225 gcc_cv_readelf=../binutils/readelf$build_exeext
2226 elif test -x readelf$build_exeext; then
2227 gcc_cv_readelf=./readelf$build_exeext
2228 else
2229 AC_PATH_PROG(gcc_cv_readelf, readelf)
2230 fi])
2231
2232 AC_MSG_CHECKING(what readelf to use)
2233 if test "$gcc_cv_readelf" = ../binutils/readelf$build_exeext; then
2234 # Single tree build which includes binutils.
2235 AC_MSG_RESULT(newly built readelf)
2236 elif test x$gcc_cv_readelf = x; then
2237 AC_MSG_RESULT(not found)
2238 else
2239 AC_MSG_RESULT($gcc_cv_readelf)
2240 fi
2241
2242 # Figure out what assembler alignment features are present.
2243 gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,
2244 [2,6,0],,
2245 [.balign 4
2246 .p2align 2],,
2247 [AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN, 1,
2248 [Define if your assembler supports .balign and .p2align.])])
2249
2250 gcc_GAS_CHECK_FEATURE([.p2align with maximum skip], gcc_cv_as_max_skip_p2align,
2251 [2,8,0],,
2252 [.p2align 4,,7],,
2253 [AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN, 1,
2254 [Define if your assembler supports specifying the maximum number
2255 of bytes to skip when using the GAS .p2align command.])])
2256
2257 gcc_GAS_CHECK_FEATURE([.literal16], gcc_cv_as_literal16,
2258 [2,8,0],,
2259 [.literal16],,
2260 [AC_DEFINE(HAVE_GAS_LITERAL16, 1,
2261 [Define if your assembler supports .literal16.])])
2262
2263 gcc_GAS_CHECK_FEATURE([working .subsection -1], gcc_cv_as_subsection_m1,
2264 [elf,2,9,0],,
2265 [conftest_label1: .word 0
2266 .subsection -1
2267 conftest_label2: .word 0
2268 .previous],
2269 [if test x$gcc_cv_nm != x; then
2270 $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
2271 $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
2272 if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1
2273 then :
2274 else gcc_cv_as_subsection_m1=yes
2275 fi
2276 rm -f conftest.nm1 conftest.nm2
2277 fi],
2278 [AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
2279 [Define if your assembler supports .subsection and .subsection -1 starts
2280 emitting at the beginning of your section.])])
2281
2282 gcc_GAS_CHECK_FEATURE([.weak], gcc_cv_as_weak,
2283 [2,2,0],,
2284 [ .weak foobar],,
2285 [AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])])
2286
2287 gcc_GAS_CHECK_FEATURE([.weakref], gcc_cv_as_weakref,
2288 [2,17,0],,
2289 [ .weakref foobar, barfnot],,
2290 [AC_DEFINE(HAVE_GAS_WEAKREF, 1, [Define if your assembler supports .weakref.])])
2291
2292 gcc_GAS_CHECK_FEATURE([.nsubspa comdat], gcc_cv_as_nsubspa_comdat,
2293 [2,15,91],,
2294 [ .SPACE $TEXT$
2295 .NSUBSPA $CODE$,COMDAT],,
2296 [AC_DEFINE(HAVE_GAS_NSUBSPA_COMDAT, 1, [Define if your assembler supports .nsubspa comdat option.])])
2297
2298 # .hidden needs to be supported in both the assembler and the linker,
2299 # because GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
2300 # This is irritatingly difficult to feature test for; we have to check the
2301 # date string after the version number. If we've got an in-tree
2302 # ld, we don't know its patchlevel version, so we set the baseline at 2.13
2303 # to be safe.
2304 # The gcc_GAS_CHECK_FEATURE call just sets a cache variable.
2305 gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden,
2306 [elf,2,13,0],,
2307 [ .hidden foobar
2308 foobar:],[
2309 # Solaris 9/x86 as incorrectly emits an alias for a hidden symbol with
2310 # STV_HIDDEN, so disable .hidden support if so.
2311 case "${target}" in
2312 i?86-*-solaris2* | x86_64-*-solaris2.1[[0-9]]*)
2313 if test x$gcc_cv_as != x && test x$gcc_cv_objdump != x; then
2314 cat > conftest.s <<EOF
2315 .globl hidden
2316 .hidden hidden
2317 hidden:
2318 .globl default
2319 .set default,hidden
2320 EOF
2321 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
2322 && $gcc_cv_objdump -t conftest.o 2>/dev/null | \
2323 grep '\.hidden default' > /dev/null; then
2324 gcc_cv_as_hidden=no
2325 else
2326 gcc_cv_as_hidden=yes
2327 fi
2328 else
2329 # Assume bug is present if objdump is missing.
2330 gcc_cv_as_hidden=no
2331 fi
2332 ;;
2333 *)
2334 gcc_cv_as_hidden=yes
2335 ;;
2336 esac])
2337 case "${target}" in
2338 *-*-darwin*)
2339 # Darwin as has some visibility support, though with a different syntax.
2340 gcc_cv_as_hidden=yes
2341 ;;
2342 esac
2343
2344 # gnu_indirect_function type is an extension proposed at
2345 # http://groups.google/com/group/generic-abi/files. It allows dynamic runtime
2346 # selection of function implementation
2347 AC_ARG_ENABLE(gnu-indirect-function,
2348 [AS_HELP_STRING([--enable-gnu-indirect-function],
2349 [enable the use of the @gnu_indirect_function to glibc systems])],
2350 [case $enable_gnu_indirect_function in
2351 yes | no) ;;
2352 *) AC_MSG_ERROR(['$enable_gnu_indirect_function' is an invalid value for --enable-gnu-indirect-function.
2353 Valid choices are 'yes' and 'no'.]) ;;
2354 esac],
2355 [enable_gnu_indirect_function="$default_gnu_indirect_function"])
2356
2357 gif=`if test x$enable_gnu_indirect_function = xyes; then echo 1; else echo 0; fi`
2358 AC_DEFINE_UNQUOTED(HAVE_GNU_INDIRECT_FUNCTION, $gif,
2359 [Define if your system supports gnu indirect functions.])
2360
2361
2362 changequote(,)dnl
2363 if test $in_tree_ld != yes ; then
2364 ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
2365 if echo "$ld_ver" | grep GNU > /dev/null; then
2366 if test x"$ld_is_gold" = xyes; then
2367 # GNU gold --version looks like this:
2368 #
2369 # GNU gold (GNU Binutils 2.21.51.20110225) 1.11
2370 #
2371 # We extract the binutils version which is more familiar and specific
2372 # than the gold version.
2373 ld_vers=`echo $ld_ver | sed -n \
2374 -e 's,^[^)]*[ ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
2375 else
2376 # GNU ld --version looks like this:
2377 #
2378 # GNU ld (GNU Binutils) 2.21.51.20110225
2379 ld_vers=`echo $ld_ver | sed -n \
2380 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
2381 fi
2382 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'`
2383 ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2384 ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2385 ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
2386 else
2387 case "${target}" in
2388 *-*-solaris2*)
2389 # See acinclude.m4 (gcc_SUN_LD_VERSION) for the version number
2390 # format.
2391 #
2392 # Don't reuse gcc_gv_sun_ld_vers_* in case a linker other than
2393 # /usr/ccs/bin/ld has been configured.
2394 ld_ver=`$gcc_cv_ld -V 2>&1`
2395 if echo "$ld_ver" | grep 'Solaris Link Editors' > /dev/null; then
2396 ld_vers=`echo $ld_ver | sed -n \
2397 -e 's,^.*: 5\.[0-9][0-9]*-\([0-9]\.[0-9][0-9]*\).*$,\1,p'`
2398 ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2399 ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2400 fi
2401 ;;
2402 esac
2403 fi
2404 fi
2405 changequote([,])dnl
2406
2407 AC_CACHE_CHECK(linker for .hidden support, gcc_cv_ld_hidden,
2408 [[if test $in_tree_ld = yes ; then
2409 gcc_cv_ld_hidden=no
2410 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 \
2411 && test $in_tree_ld_is_elf = yes; then
2412 gcc_cv_ld_hidden=yes
2413 fi
2414 else
2415 gcc_cv_ld_hidden=yes
2416 if test x"$ld_is_gold" = xyes; then
2417 :
2418 elif echo "$ld_ver" | grep GNU > /dev/null; then
2419 case "${target}" in
2420 mmix-knuth-mmixware)
2421 # The linker emits by default mmo, not ELF, so "no" is appropriate.
2422 gcc_cv_ld_hidden=no
2423 ;;
2424 esac
2425 if test 0"$ld_date" -lt 20020404; then
2426 if test -n "$ld_date"; then
2427 # If there was date string, but was earlier than 2002-04-04, fail
2428 gcc_cv_ld_hidden=no
2429 elif test -z "$ld_vers"; then
2430 # If there was no date string nor ld version number, something is wrong
2431 gcc_cv_ld_hidden=no
2432 else
2433 test -z "$ld_vers_patch" && ld_vers_patch=0
2434 if test "$ld_vers_major" -lt 2; then
2435 gcc_cv_ld_hidden=no
2436 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
2437 gcc_cv_ld_hidden="no"
2438 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 -a "$ld_vers_patch" -eq 0; then
2439 gcc_cv_ld_hidden=no
2440 fi
2441 fi
2442 fi
2443 else
2444 case "${target}" in
2445 *-*-darwin*)
2446 # Darwin ld has some visibility support.
2447 gcc_cv_ld_hidden=yes
2448 ;;
2449 hppa64*-*-hpux* | ia64*-*-hpux*)
2450 gcc_cv_ld_hidden=yes
2451 ;;
2452 *-*-solaris2.9* | *-*-solaris2.1[0-9]*)
2453 # Support for .hidden in Sun ld appeared in Solaris 9 FCS, but
2454 # .symbolic was only added in Solaris 9 12/02.
2455 gcc_cv_ld_hidden=yes
2456 ;;
2457 *)
2458 gcc_cv_ld_hidden=no
2459 ;;
2460 esac
2461 fi
2462 fi]])
2463 libgcc_visibility=no
2464 AC_SUBST(libgcc_visibility)
2465 GCC_TARGET_TEMPLATE([HAVE_GAS_HIDDEN])
2466 if test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden = yes; then
2467 libgcc_visibility=yes
2468 AC_DEFINE(HAVE_GAS_HIDDEN, 1,
2469 [Define if your assembler and linker support .hidden.])
2470 fi
2471
2472 AC_MSG_CHECKING(linker read-only and read-write section mixing)
2473 gcc_cv_ld_ro_rw_mix=unknown
2474 if test $in_tree_ld = yes ; then
2475 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 \
2476 && test $in_tree_ld_is_elf = yes; then
2477 gcc_cv_ld_ro_rw_mix=read-write
2478 fi
2479 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
2480 echo '.section myfoosect, "a"' > conftest1.s
2481 echo '.section myfoosect, "aw"' > conftest2.s
2482 echo '.byte 1' >> conftest2.s
2483 echo '.section myfoosect, "a"' > conftest3.s
2484 echo '.byte 0' >> conftest3.s
2485 if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
2486 && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
2487 && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \
2488 && $gcc_cv_ld -shared -o conftest1.so conftest1.o \
2489 conftest2.o conftest3.o > /dev/null 2>&1; then
2490 gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
2491 | sed -e '/myfoosect/!d' -e N`
2492 if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then
2493 if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then
2494 gcc_cv_ld_ro_rw_mix=read-only
2495 else
2496 gcc_cv_ld_ro_rw_mix=read-write
2497 fi
2498 fi
2499 fi
2500 changequote(,)dnl
2501 rm -f conftest.* conftest[123].*
2502 changequote([,])dnl
2503 fi
2504 if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
2505 AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1,
2506 [Define if your linker links a mix of read-only
2507 and read-write sections into a read-write section.])
2508 fi
2509 AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
2510
2511 gcc_AC_INITFINI_ARRAY
2512
2513 # Check if we have .[us]leb128, and support symbol arithmetic with it.
2514 gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,
2515 [elf,2,11,0],,
2516 [ .data
2517 .uleb128 L2 - L1
2518 L1:
2519 .uleb128 1280
2520 .sleb128 -1010
2521 L2:],
2522 [[# GAS versions before 2.11 do not support uleb128,
2523 # despite appearing to.
2524 # ??? There exists an elf-specific test that will crash
2525 # the assembler. Perhaps it's better to figure out whether
2526 # arbitrary sections are supported and try the test.
2527 as_ver=`$gcc_cv_as --version 2>/dev/null | sed 1q`
2528 if echo "$as_ver" | grep GNU > /dev/null; then
2529 as_vers=`echo $as_ver | sed -n \
2530 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
2531 as_major=`expr "$as_vers" : '\([0-9]*\)'`
2532 as_minor=`expr "$as_vers" : '[0-9]*\.\([0-9]*\)'`
2533 if test $as_major -eq 2 && test $as_minor -lt 11
2534 then :
2535 else gcc_cv_as_leb128=yes
2536 fi
2537 fi]],
2538 [AC_DEFINE(HAVE_AS_LEB128, 1,
2539 [Define if your assembler supports .sleb128 and .uleb128.])])
2540
2541 # Check if we have assembler support for unwind directives.
2542 gcc_GAS_CHECK_FEATURE([cfi directives], gcc_cv_as_cfi_directive,
2543 ,,
2544 [ .text
2545 .cfi_startproc
2546 .cfi_offset 0, 0
2547 .cfi_same_value 1
2548 .cfi_def_cfa 1, 2
2549 .cfi_escape 1, 2, 3, 4, 5
2550 .cfi_endproc],
2551 [case "$target" in
2552 *-*-solaris*)
2553 # If the linker used on Solaris (like Sun ld) isn't capable of merging
2554 # read-only and read-write sections, we need to make sure that the
2555 # assembler used emits read-write .eh_frame sections.
2556 if test "x$gcc_cv_ld_ro_rw_mix" != xread-write; then
2557 if test "x$gcc_cv_objdump" != x; then
2558 if $gcc_cv_objdump -h conftest.o 2>/dev/null | \
2559 sed -e /.eh_frame/!d -e N | grep READONLY > /dev/null; then
2560 gcc_cv_as_cfi_directive=no
2561 else
2562 case "$target" in
2563 i?86-*-solaris2.1[[0-9]]* | x86_64-*-solaris2.1[[0-9]]*)
2564 # On Solaris/x86, make sure that GCC and gas agree on using
2565 # read-only .eh_frame sections for 64-bit.
2566 if $gcc_cv_as --64 -o conftest.o conftest.s > /dev/null 2>&1 && \
2567 $gcc_cv_objdump -h conftest.o 2>/dev/null | \
2568 sed -e /.eh_frame/!d -e N | \
2569 grep READONLY > /dev/null; then
2570 gcc_cv_as_cfi_directive=yes
2571 else
2572 gcc_cv_as_cfi_directive=no
2573 fi
2574 ;;
2575 *)
2576 gcc_cv_as_cfi_directive=yes
2577 ;;
2578 esac
2579 fi
2580 else
2581 # no objdump, err on the side of caution
2582 gcc_cv_as_cfi_directive=no
2583 fi
2584 else
2585 gcc_cv_as_cfi_directive=yes
2586 fi
2587 ;;
2588 *-*-*)
2589 gcc_cv_as_cfi_directive=yes
2590 ;;
2591 esac])
2592 if test $gcc_cv_as_cfi_directive = yes && test x$gcc_cv_objdump != x; then
2593 gcc_GAS_CHECK_FEATURE([working cfi advance], gcc_cv_as_cfi_advance_working,
2594 ,,
2595 [ .text
2596 .cfi_startproc
2597 .cfi_adjust_cfa_offset 64
2598 .skip 75040, 0
2599 .cfi_adjust_cfa_offset 128
2600 .cfi_endproc],
2601 [[
2602 if $gcc_cv_objdump -Wf conftest.o 2>/dev/null \
2603 | grep 'DW_CFA_advance_loc[24]:[ ][ ]*75040[ ]' >/dev/null; then
2604 gcc_cv_as_cfi_advance_working=yes
2605 fi
2606 ]])
2607 else
2608 # no objdump, err on the side of caution
2609 gcc_cv_as_cfi_advance_working=no
2610 fi
2611 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_DIRECTIVE)
2612 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_DIRECTIVE,
2613 [`if test $gcc_cv_as_cfi_directive = yes \
2614 && test $gcc_cv_as_cfi_advance_working = yes; then echo 1; else echo 0; fi`],
2615 [Define 0/1 if your assembler supports CFI directives.])
2616
2617 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE)
2618 gcc_GAS_CHECK_FEATURE([cfi personality directive],
2619 gcc_cv_as_cfi_personality_directive, ,,
2620 [ .text
2621 .cfi_startproc
2622 .cfi_personality 0, symbol
2623 .cfi_endproc])
2624 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE,
2625 [`if test $gcc_cv_as_cfi_personality_directive = yes;
2626 then echo 1; else echo 0; fi`],
2627 [Define 0/1 if your assembler supports .cfi_personality.])
2628
2629 gcc_GAS_CHECK_FEATURE([cfi sections directive],
2630 gcc_cv_as_cfi_sections_directive, ,,
2631 [ .text
2632 .cfi_sections .debug_frame, .eh_frame
2633 .cfi_startproc
2634 .cfi_endproc],
2635 [case $target_os in
2636 win32 | pe | cygwin* | mingw32* | uwin*)
2637 # Need to check that we generated the correct relocation for the
2638 # .debug_frame section. This was fixed for binutils 2.21.
2639 gcc_cv_as_cfi_sections_directive=no
2640 if test "x$gcc_cv_objdump" != x; then
2641 if $gcc_cv_objdump -j .debug_frame -r conftest.o 2>/dev/null | \
2642 grep secrel > /dev/null; then
2643 gcc_cv_as_cfi_sections_directive=yes
2644 fi
2645 fi
2646 ;;
2647 *)
2648 gcc_cv_as_cfi_sections_directive=yes
2649 ;;
2650 esac])
2651 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_SECTIONS_DIRECTIVE)
2652 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_SECTIONS_DIRECTIVE,
2653 [`if test $gcc_cv_as_cfi_sections_directive = yes;
2654 then echo 1; else echo 0; fi`],
2655 [Define 0/1 if your assembler supports .cfi_sections.])
2656
2657 # GAS versions up to and including 2.11.0 may mis-optimize
2658 # .eh_frame data.
2659 gcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame,
2660 [elf,2,12,0],,
2661 [ .text
2662 .LFB1:
2663 .4byte 0
2664 .L1:
2665 .4byte 0
2666 .LFE1:
2667 .section .eh_frame,"aw",@progbits
2668 __FRAME_BEGIN__:
2669 .4byte .LECIE1-.LSCIE1
2670 .LSCIE1:
2671 .4byte 0x0
2672 .byte 0x1
2673 .ascii "z\0"
2674 .byte 0x1
2675 .byte 0x78
2676 .byte 0x1a
2677 .byte 0x0
2678 .byte 0x4
2679 .4byte 1
2680 .p2align 1
2681 .LECIE1:
2682 .LSFDE1:
2683 .4byte .LEFDE1-.LASFDE1
2684 .LASFDE1:
2685 .4byte .LASFDE1-__FRAME_BEGIN__
2686 .4byte .LFB1
2687 .4byte .LFE1-.LFB1
2688 .byte 0x4
2689 .4byte .LFE1-.LFB1
2690 .byte 0x4
2691 .4byte .L1-.LFB1
2692 .LEFDE1:],
2693 [ dnl # For autoconf 2.5x, must protect trailing spaces with @&t@.
2694 cat > conftest.lit <<EOF
2695 0000 10000000 00000000 017a0001 781a0004 .........z..x...
2696 0010 01000000 12000000 18000000 00000000 ................
2697 0020 08000000 04080000 0044 .........D @&t@
2698 EOF
2699 cat > conftest.big <<EOF
2700 0000 00000010 00000000 017a0001 781a0004 .........z..x...
2701 0010 00000001 00000012 00000018 00000000 ................
2702 0020 00000008 04000000 0844 .........D @&t@
2703 EOF
2704 # If the assembler didn't choke, and we can objdump,
2705 # and we got the correct data, then succeed.
2706 # The text in the here-document typically retains its unix-style line
2707 # endings, while the output of objdump will use host line endings.
2708 # Therefore, use diff -b for the comparisons.
2709 if test x$gcc_cv_objdump != x \
2710 && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
2711 | tail -3 > conftest.got \
2712 && { diff -b conftest.lit conftest.got > /dev/null 2>&1 \
2713 || diff -b conftest.big conftest.got > /dev/null 2>&1; }
2714 then
2715 gcc_cv_as_eh_frame=yes
2716 elif AC_TRY_COMMAND($gcc_cv_as -o conftest.o --traditional-format /dev/null); then
2717 gcc_cv_as_eh_frame=buggy
2718 else
2719 # Uh oh, what do we do now?
2720 gcc_cv_as_eh_frame=no
2721 fi])
2722
2723 if test $gcc_cv_as_eh_frame = buggy; then
2724 AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
2725 [Define if your assembler mis-optimizes .eh_frame data.])
2726 fi
2727
2728 gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2729 [elf,2,12,0], [--fatal-warnings],
2730 [.section .rodata.str, "aMS", @progbits, 1])
2731 if test $gcc_cv_as_shf_merge = no; then
2732 gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2733 [elf,2,12,0], [--fatal-warnings],
2734 [.section .rodata.str, "aMS", %progbits, 1])
2735 fi
2736 AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE,
2737 [`if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`],
2738 [Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.])
2739
2740 gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as)],
2741 gcc_cv_as_comdat_group,
2742 [elf,2,16,0], [--fatal-warnings],
2743 [.section .text,"axG",@progbits,.foo,comdat])
2744 if test $gcc_cv_as_comdat_group = yes; then
2745 gcc_cv_as_comdat_group_percent=no
2746 gcc_cv_as_comdat_group_group=no
2747 else
2748 gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as, %type)],
2749 gcc_cv_as_comdat_group_percent,
2750 [elf,2,16,0], [--fatal-warnings],
2751 [.section .text,"axG",%progbits,.foo,comdat])
2752 if test $gcc_cv_as_comdat_group_percent = yes; then
2753 gcc_cv_as_comdat_group_group=no
2754 else
2755 if test -z "${gcc_cv_as_comdat_group_group+set}"; then
2756 gcc_cv_as_comdat_group_group=no
2757 fi
2758 case "${target}" in
2759 # Sun as uses a completely different syntax.
2760 *-*-solaris2*)
2761 case "${target}" in
2762 sparc*-*-solaris2*)
2763 conftest_s='
2764 .group foo,".text%foo",#comdat
2765 .section ".text%foo", #alloc,#execinstr,#progbits
2766 .globl foo
2767 foo:
2768 '
2769 ;;
2770 i?86-*-solaris2* | x86_64-*-solaris2.1[[0-9]]*)
2771 conftest_s='
2772 .group foo,.text%foo,#comdat
2773 .section .text%foo, "ax", @progbits
2774 .globl foo
2775 foo:
2776 '
2777 ;;
2778 esac
2779 gcc_GAS_CHECK_FEATURE([COMDAT group support (Sun as, .group)],
2780 gcc_cv_as_comdat_group_group,
2781 ,, [$conftest_s])
2782 ;;
2783 esac
2784 fi
2785 fi
2786 if test x"$ld_is_gold" = xyes; then
2787 comdat_group=yes
2788 elif test $in_tree_ld = yes ; then
2789 comdat_group=no
2790 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 \
2791 && test $in_tree_ld_is_elf = yes; then
2792 comdat_group=yes
2793 fi
2794 elif echo "$ld_ver" | grep GNU > /dev/null; then
2795 comdat_group=yes
2796 if test 0"$ld_date" -lt 20050308; then
2797 if test -n "$ld_date"; then
2798 # If there was date string, but was earlier than 2005-03-08, fail
2799 comdat_group=no
2800 elif test "$ld_vers_major" -lt 2; then
2801 comdat_group=no
2802 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
2803 comdat_group=no
2804 fi
2805 fi
2806 else
2807 changequote(,)dnl
2808 case "${target}" in
2809 *-*-solaris2.1[1-9]*)
2810 comdat_group=no
2811 # Sun ld has COMDAT group support since Solaris 9, but it doesn't
2812 # interoperate with GNU as until Solaris 11 build 130, i.e. ld
2813 # version 1.688.
2814 #
2815 # If using Sun as for COMDAT group as emitted by GCC, one needs at
2816 # least ld version 1.2267.
2817 if test "$ld_vers_major" -gt 1; then
2818 comdat_group=yes
2819 elif test "x$gas_flag" = xyes && test "$ld_vers_minor" -ge 1688; then
2820 comdat_group=yes
2821 elif test "$ld_vers_minor" -ge 2267; then
2822 comdat_group=yes
2823 fi
2824 ;;
2825 *)
2826 # Assume linkers other than GNU ld don't support COMDAT group.
2827 comdat_group=no
2828 ;;
2829 esac
2830 changequote([,])dnl
2831 fi
2832 # Allow overriding the automatic COMDAT group tests above.
2833 AC_ARG_ENABLE(comdat,
2834 [AS_HELP_STRING([--enable-comdat], [enable COMDAT group support])],
2835 [comdat_group="$enable_comdat"])
2836 if test $comdat_group = no; then
2837 gcc_cv_as_comdat_group=no
2838 gcc_cv_as_comdat_group_percent=no
2839 gcc_cv_as_comdat_group_group=no
2840 fi
2841 AC_DEFINE_UNQUOTED(HAVE_COMDAT_GROUP,
2842 [`if test $gcc_cv_as_comdat_group = yes \
2843 || test $gcc_cv_as_comdat_group_percent = yes \
2844 || test $gcc_cv_as_comdat_group_group = yes; then echo 1; else echo 0; fi`],
2845 [Define 0/1 if your assembler and linker support COMDAT groups.])
2846
2847 gcc_GAS_CHECK_FEATURE([line table discriminator support],
2848 gcc_cv_as_discriminator,
2849 [2,19,51],,
2850 [ .text
2851 .file 1 "conf.c"
2852 .loc 1 1 0 discriminator 1],,
2853 [AC_DEFINE(HAVE_GAS_DISCRIMINATOR, 1,
2854 [Define if your assembler supports the .loc discriminator sub-directive.])])
2855
2856 # Thread-local storage - the check is heavily parameterized.
2857 conftest_s=
2858 tls_first_major=
2859 tls_first_minor=
2860 tls_as_opt=
2861 case "$target" in
2862 changequote(,)dnl
2863 alpha*-*-*)
2864 conftest_s='
2865 .section ".tdata","awT",@progbits
2866 foo: .long 25
2867 .text
2868 ldq $27,__tls_get_addr($29) !literal!1
2869 lda $16,foo($29) !tlsgd!1
2870 jsr $26,($27),__tls_get_addr !lituse_tlsgd!1
2871 ldq $27,__tls_get_addr($29) !literal!2
2872 lda $16,foo($29) !tlsldm!2
2873 jsr $26,($27),__tls_get_addr !lituse_tlsldm!2
2874 ldq $1,foo($29) !gotdtprel
2875 ldah $2,foo($29) !dtprelhi
2876 lda $3,foo($2) !dtprello
2877 lda $4,foo($29) !dtprel
2878 ldq $1,foo($29) !gottprel
2879 ldah $2,foo($29) !tprelhi
2880 lda $3,foo($2) !tprello
2881 lda $4,foo($29) !tprel'
2882 tls_first_major=2
2883 tls_first_minor=13
2884 tls_as_opt=--fatal-warnings
2885 ;;
2886 cris-*-*|crisv32-*-*)
2887 conftest_s='
2888 .section ".tdata","awT",@progbits
2889 x: .long 25
2890 .text
2891 move.d x:IE,$r10
2892 nop'
2893 tls_first_major=2
2894 tls_first_minor=20
2895 tls_as_opt=--fatal-warnings
2896 ;;
2897 frv*-*-*)
2898 conftest_s='
2899 .section ".tdata","awT",@progbits
2900 x: .long 25
2901 .text
2902 call #gettlsoff(x)'
2903 tls_first_major=2
2904 tls_first_minor=14
2905 ;;
2906 hppa*-*-linux*)
2907 conftest_s='
2908 t1: .reg %r20
2909 t2: .reg %r21
2910 gp: .reg %r19
2911 .section ".tdata","awT",@progbits
2912 foo: .long 25
2913 .text
2914 .align 4
2915 addil LT%foo-$tls_gdidx$,gp
2916 ldo RT%foo-$tls_gdidx$(%r1),%arg0
2917 b __tls_get_addr
2918 nop
2919 addil LT%foo-$tls_ldidx$,gp
2920 b __tls_get_addr
2921 ldo RT%foo-$tls_ldidx$(%r1),%arg0
2922 addil LR%foo-$tls_dtpoff$,%ret0
2923 ldo RR%foo-$tls_dtpoff$(%r1),%t1
2924 mfctl %cr27,%t1
2925 addil LT%foo-$tls_ieoff$,gp
2926 ldw RT%foo-$tls_ieoff$(%r1),%t2
2927 add %t1,%t2,%t3
2928 mfctl %cr27,%t1
2929 addil LR%foo-$tls_leoff$,%t1
2930 ldo RR%foo-$tls_leoff$(%r1),%t2'
2931 tls_first_major=2
2932 tls_first_minor=15
2933 tls_as_opt=--fatal-warnings
2934 ;;
2935 arm*-*-*)
2936 conftest_s='
2937 .section ".tdata","awT",%progbits
2938 foo: .long 25
2939 .text
2940 .word foo(gottpoff)
2941 .word foo(tpoff)
2942 .word foo(tlsgd)
2943 .word foo(tlsldm)
2944 .word foo(tlsldo)'
2945 tls_first_major=2
2946 tls_first_minor=17
2947 ;;
2948 i[34567]86-*-* | x86_64-*-solaris2.1[0-9]*)
2949 case "$target" in
2950 i[34567]86-*-solaris2.*)
2951 on_solaris=yes
2952 tga_func=___tls_get_addr
2953 ;;
2954 x86_64-*-solaris2.1[0-9]*)
2955 on_solaris=yes
2956 tga_func=__tls_get_addr
2957 ;;
2958 *)
2959 on_solaris=no
2960 ;;
2961 esac
2962 if test x$on_solaris = xyes && test x$gas_flag = xno; then
2963 conftest_s='
2964 .section .tdata,"awt",@progbits'
2965 tls_first_major=0
2966 tls_first_minor=0
2967 changequote([,])dnl
2968 AC_DEFINE(TLS_SECTION_ASM_FLAG, 't',
2969 [Define to the flag used to mark TLS sections if the default (`T') doesn't work.])
2970 changequote(,)dnl
2971 else
2972 conftest_s='
2973 .section ".tdata","awT",@progbits'
2974 tls_first_major=2
2975 tls_first_minor=14
2976 tls_as_opt="--fatal-warnings"
2977 fi
2978 conftest_s="$conftest_s
2979 foo: .long 25
2980 .text
2981 movl %gs:0, %eax
2982 leal foo@tlsgd(,%ebx,1), %eax
2983 leal foo@tlsldm(%ebx), %eax
2984 leal foo@dtpoff(%eax), %edx
2985 movl foo@gottpoff(%ebx), %eax
2986 subl foo@gottpoff(%ebx), %eax
2987 addl foo@gotntpoff(%ebx), %eax
2988 movl foo@indntpoff, %eax
2989 movl \$foo@tpoff, %eax
2990 subl \$foo@tpoff, %eax
2991 leal foo@ntpoff(%ecx), %eax"
2992 ;;
2993 x86_64-*-*)
2994 conftest_s='
2995 .section ".tdata","awT",@progbits
2996 foo: .long 25
2997 .text
2998 movq %fs:0, %rax
2999 leaq foo@TLSGD(%rip), %rdi
3000 leaq foo@TLSLD(%rip), %rdi
3001 leaq foo@DTPOFF(%rax), %rdx
3002 movq foo@GOTTPOFF(%rip), %rax
3003 movq $foo@TPOFF, %rax'
3004 tls_first_major=2
3005 tls_first_minor=14
3006 tls_as_opt=--fatal-warnings
3007 ;;
3008 ia64-*-*)
3009 conftest_s='
3010 .section ".tdata","awT",@progbits
3011 foo: data8 25
3012 .text
3013 addl r16 = @ltoff(@dtpmod(foo#)), gp
3014 addl r17 = @ltoff(@dtprel(foo#)), gp
3015 addl r18 = @ltoff(@tprel(foo#)), gp
3016 addl r19 = @dtprel(foo#), gp
3017 adds r21 = @dtprel(foo#), r13
3018 movl r23 = @dtprel(foo#)
3019 addl r20 = @tprel(foo#), gp
3020 adds r22 = @tprel(foo#), r13
3021 movl r24 = @tprel(foo#)'
3022 tls_first_major=2
3023 tls_first_minor=13
3024 tls_as_opt=--fatal-warnings
3025 ;;
3026 microblaze*-*-*)
3027 conftest_s='
3028 .section .tdata,"awT",@progbits
3029 x:
3030 .word 2
3031 .text
3032 addik r5,r20,x@TLSGD
3033 addik r5,r20,x@TLSLDM'
3034 tls_first_major=2
3035 tls_first_minor=20
3036 tls_as_opt='--fatal-warnings'
3037 ;;
3038 mips*-*-*)
3039 conftest_s='
3040 .section .tdata,"awT",@progbits
3041 x:
3042 .word 2
3043 .text
3044 addiu $4, $28, %tlsgd(x)
3045 addiu $4, $28, %tlsldm(x)
3046 lui $4, %dtprel_hi(x)
3047 addiu $4, $4, %dtprel_lo(x)
3048 lw $4, %gottprel(x)($28)
3049 lui $4, %tprel_hi(x)
3050 addiu $4, $4, %tprel_lo(x)'
3051 tls_first_major=2
3052 tls_first_minor=16
3053 tls_as_opt='-32 --fatal-warnings'
3054 ;;
3055 m68k-*-*)
3056 conftest_s='
3057 .section .tdata,"awT",@progbits
3058 x:
3059 .word 2
3060 .text
3061 foo:
3062 move.l x@TLSGD(%a5),%a0
3063 move.l x@TLSLDM(%a5),%a0
3064 move.l x@TLSLDO(%a5),%a0
3065 move.l x@TLSIE(%a5),%a0
3066 move.l x@TLSLE(%a5),%a0'
3067 tls_first_major=2
3068 tls_first_minor=19
3069 tls_as_opt='--fatal-warnings'
3070 ;;
3071 aarch64*-*-*)
3072 conftest_s='
3073 .section ".tdata","awT",%progbits
3074 foo: .long 25
3075 .text
3076 adrp x0, :tlsgd:x
3077 add x0, x0, #:tlsgd_lo12:x
3078 bl __tls_get_addr
3079 nop'
3080 tls_first_major=2
3081 tls_first_minor=20
3082 tls_as_opt='--fatal-warnings'
3083 ;;
3084 powerpc-ibm-aix*)
3085 conftest_s='
3086 .extern __get_tpointer
3087 .toc
3088 LC..1:
3089 .tc a[TC],a[TL]@le
3090 .csect .text[PR]
3091 .tlstest:
3092 lwz 9,LC..1(2)
3093 bla __get_tpointer
3094 lwzx 3,9,3
3095 .globl a
3096 .csect a[TL],4
3097 a:
3098 .space 4'
3099 tls_first_major=0
3100 tls_first_minor=0
3101 ;;
3102 powerpc64*-*-*)
3103 conftest_s='
3104 .section ".tdata","awT",@progbits
3105 .align 3
3106 ld0: .space 8
3107 ld1: .space 8
3108 x1: .space 8
3109 x2: .space 8
3110 x3: .space 8
3111 .text
3112 addi 3,2,ld0@got@tlsgd
3113 bl .__tls_get_addr
3114 nop
3115 addi 3,2,ld1@toc
3116 bl .__tls_get_addr
3117 nop
3118 addi 3,2,x1@got@tlsld
3119 bl .__tls_get_addr
3120 nop
3121 addi 9,3,x1@dtprel
3122 bl .__tls_get_addr
3123 nop
3124 addis 9,3,x2@dtprel@ha
3125 addi 9,9,x2@dtprel@l
3126 bl .__tls_get_addr
3127 nop
3128 ld 9,x3@got@dtprel(2)
3129 add 9,9,3
3130 bl .__tls_get_addr
3131 nop'
3132 tls_first_major=2
3133 tls_first_minor=14
3134 tls_as_opt="-a64 --fatal-warnings"
3135 ;;
3136 powerpc*-*-*)
3137 conftest_s='
3138 .section ".tdata","awT",@progbits
3139 .align 2
3140 ld0: .space 4
3141 ld1: .space 4
3142 x1: .space 4
3143 x2: .space 4
3144 x3: .space 4
3145 .text
3146 addi 3,31,ld0@got@tlsgd
3147 bl __tls_get_addr
3148 addi 3,31,x1@got@tlsld
3149 bl __tls_get_addr
3150 addi 9,3,x1@dtprel
3151 addis 9,3,x2@dtprel@ha
3152 addi 9,9,x2@dtprel@l
3153 lwz 9,x3@got@tprel(31)
3154 add 9,9,x@tls
3155 addi 9,2,x1@tprel
3156 addis 9,2,x2@tprel@ha
3157 addi 9,9,x2@tprel@l'
3158 tls_first_major=2
3159 tls_first_minor=14
3160 tls_as_opt="-a32 --fatal-warnings"
3161 ;;
3162 s390-*-*)
3163 conftest_s='
3164 .section ".tdata","awT",@progbits
3165 foo: .long 25
3166 .text
3167 .long foo@TLSGD
3168 .long foo@TLSLDM
3169 .long foo@DTPOFF
3170 .long foo@NTPOFF
3171 .long foo@GOTNTPOFF
3172 .long foo@INDNTPOFF
3173 l %r1,foo@GOTNTPOFF(%r12)
3174 l %r1,0(%r1):tls_load:foo
3175 bas %r14,0(%r1,%r13):tls_gdcall:foo
3176 bas %r14,0(%r1,%r13):tls_ldcall:foo'
3177 tls_first_major=2
3178 tls_first_minor=14
3179 tls_as_opt="-m31 --fatal-warnings"
3180 ;;
3181 s390x-*-*)
3182 conftest_s='
3183 .section ".tdata","awT",@progbits
3184 foo: .long 25
3185 .text
3186 .quad foo@TLSGD
3187 .quad foo@TLSLDM
3188 .quad foo@DTPOFF
3189 .quad foo@NTPOFF
3190 .quad foo@GOTNTPOFF
3191 lg %r1,foo@GOTNTPOFF(%r12)
3192 larl %r1,foo@INDNTPOFF
3193 brasl %r14,__tls_get_offset@PLT:tls_gdcall:foo
3194 brasl %r14,__tls_get_offset@PLT:tls_ldcall:foo'
3195 tls_first_major=2
3196 tls_first_minor=14
3197 tls_as_opt="-m64 -Aesame --fatal-warnings"
3198 ;;
3199 sh-*-* | sh[34]-*-*)
3200 conftest_s='
3201 .section ".tdata","awT",@progbits
3202 foo: .long 25
3203 .text
3204 .long foo@TLSGD
3205 .long foo@TLSLDM
3206 .long foo@DTPOFF
3207 .long foo@GOTTPOFF
3208 .long foo@TPOFF'
3209 tls_first_major=2
3210 tls_first_minor=13
3211 tls_as_opt=--fatal-warnings
3212 ;;
3213 sparc*-*-*)
3214 case "$target" in
3215 sparc*-sun-solaris2.*)
3216 on_solaris=yes
3217 tga_func=__tls_get_addr
3218 ;;
3219 *)
3220 on_solaris=no
3221 ;;
3222 esac
3223 if test x$on_solaris = xyes && test x$gas_flag = xno; then
3224 conftest_s='
3225 .section ".tdata",#alloc,#write,#tls'
3226 tls_first_major=0
3227 tls_first_minor=0
3228 else
3229 conftest_s='
3230 .section ".tdata","awT",@progbits'
3231 tls_first_major=2
3232 tls_first_minor=14
3233 tls_as_opt="-32 --fatal-warnings"
3234 fi
3235 conftest_s="$conftest_s
3236 foo: .long 25
3237 .text
3238 sethi %tgd_hi22(foo), %o0
3239 add %o0, %tgd_lo10(foo), %o1
3240 add %l7, %o1, %o0, %tgd_add(foo)
3241 call __tls_get_addr, %tgd_call(foo)
3242 sethi %tldm_hi22(foo), %l1
3243 add %l1, %tldm_lo10(foo), %l2
3244 add %l7, %l2, %o0, %tldm_add(foo)
3245 call __tls_get_addr, %tldm_call(foo)
3246 sethi %tldo_hix22(foo), %l3
3247 xor %l3, %tldo_lox10(foo), %l4
3248 add %o0, %l4, %l5, %tldo_add(foo)
3249 sethi %tie_hi22(foo), %o3
3250 add %o3, %tie_lo10(foo), %o3
3251 ld [%l7 + %o3], %o2, %tie_ld(foo)
3252 add %g7, %o2, %o4, %tie_add(foo)
3253 sethi %tle_hix22(foo), %l1
3254 xor %l1, %tle_lox10(foo), %o5
3255 ld [%g7 + %o5], %o1"
3256 ;;
3257 tilepro*-*-*)
3258 conftest_s='
3259 .section ".tdata","awT",@progbits
3260 foo: .long 25
3261 .text
3262 addli r0, zero, tls_gd(foo)
3263 auli r0, zero, tls_gd_ha16(foo)
3264 addli r0, r0, tls_gd_lo16(foo)
3265 jal __tls_get_addr
3266 addli r0, zero, tls_ie(foo)
3267 auli r0, r0, tls_ie_ha16(foo)
3268 addli r0, r0, tls_ie_lo16(foo)'
3269 tls_first_major=2
3270 tls_first_minor=22
3271 tls_as_opt="--fatal-warnings"
3272 ;;
3273 tilegx*-*-*)
3274 conftest_s='
3275 .section ".tdata","awT",@progbits
3276 foo: .long 25
3277 .text
3278 shl16insli r0, zero, hw0_last_tls_gd(foo)
3279 shl16insli r0, zero, hw1_last_tls_gd(foo)
3280 shl16insli r0, r0, hw0_tls_gd(foo)
3281 jal __tls_get_addr
3282 shl16insli r0, zero, hw1_last_tls_ie(foo)
3283 shl16insli r0, r0, hw0_tls_ie(foo)'
3284 tls_first_major=2
3285 tls_first_minor=22
3286 tls_as_opt="--fatal-warnings"
3287 ;;
3288 xtensa*-*-*)
3289 conftest_s='
3290 .section ".tdata","awT",@progbits
3291 foo: .long 25
3292 .text
3293 movi a8, foo@TLSFUNC
3294 movi a10, foo@TLSARG
3295 callx8.tls a8, foo@TLSCALL'
3296 tls_first_major=2
3297 tls_first_minor=19
3298 ;;
3299 changequote([,])dnl
3300 esac
3301 set_have_as_tls=no
3302 if test "x$enable_tls" = xno ; then
3303 : # TLS explicitly disabled.
3304 elif test "x$enable_tls" = xyes ; then
3305 set_have_as_tls=yes # TLS explicitly enabled.
3306 elif test -z "$tls_first_major"; then
3307 : # If we don't have a check, assume no support.
3308 else
3309 gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls,
3310 [$tls_first_major,$tls_first_minor,0], [$tls_as_opt], [$conftest_s],,
3311 [set_have_as_tls=yes])
3312 fi
3313 case "$target" in
3314 # TLS was introduced in the Solaris 9 FCS release. Support for GNU-style
3315 # TLS on x86 was only introduced in Solaris 9 4/04, replacing the earlier
3316 # Sun style that Sun ld and GCC don't support any longer.
3317 *-*-solaris2.*)
3318 AC_MSG_CHECKING(linker and ld.so.1 TLS support)
3319 ld_tls_support=no
3320 # Check ld and ld.so.1 TLS support.
3321 if echo "$ld_ver" | grep GNU > /dev/null; then
3322 # Assume all interesting versions of GNU ld have TLS support.
3323 # FIXME: still need ld.so.1 support, i.e. ld version checks below.
3324 ld_tls_support=yes
3325 else
3326 case "$target" in
3327 # Solaris 9/x86 ld has GNU style TLS support since version 1.374.
3328 i?86-*-solaris2.9)
3329 min_tls_ld_vers_minor=374
3330 ;;
3331 # Solaris 9/SPARC and Solaris 10+ ld have TLS support since FCS.
3332 sparc*-*-solaris2.9 | *-*-solaris2.1[[0-9]]*)
3333 min_tls_ld_vers_minor=343
3334 ;;
3335 esac
3336 if test "$ld_vers_major" -gt 1 || \
3337 test "$ld_vers_minor" -ge "$min_tls_ld_vers_minor"; then
3338 ld_tls_support=yes
3339 else
3340 set_have_as_tls=no
3341 fi
3342 fi
3343 AC_MSG_RESULT($ld_tls_support)
3344
3345 save_LIBS="$LIBS"
3346 save_LDFLAGS="$LDFLAGS"
3347 LIBS=
3348 LDFLAGS=
3349
3350 AC_MSG_CHECKING(library containing $tga_func)
3351 # Before Solaris 10, __tls_get_addr (SPARC/x64) resp. ___tls_get_addr
3352 # (32-bit x86) only lived in libthread, so check for that. Keep
3353 # set_have_as_tls if found, disable if not.
3354 AC_SEARCH_LIBS([$tga_func], [thread],, [set_have_as_tls=no])
3355 # Clear LIBS if we cannot support TLS.
3356 if test $set_have_as_tls = no; then
3357 LIBS=
3358 fi
3359 # Always define LIB_TLS_SPEC, even without TLS support.
3360 AC_DEFINE_UNQUOTED(LIB_TLS_SPEC, "$LIBS",
3361 [Define to the library containing __tls_get_addr/___tls_get_addr.])
3362 AC_MSG_RESULT($LIBS)
3363
3364 LIBS="$save_LIBS"
3365 LDFLAGS="$save_LDFLAGS"
3366 ;;
3367 esac
3368 if test $set_have_as_tls = yes ; then
3369 AC_DEFINE(HAVE_AS_TLS, 1,
3370 [Define if your assembler and linker support thread-local storage.])
3371 fi
3372
3373 # Target-specific assembler checks.
3374
3375 AC_MSG_CHECKING(linker -Bstatic/-Bdynamic option)
3376 gcc_cv_ld_static_dynamic=no
3377 gcc_cv_ld_static_option='-Bstatic'
3378 gcc_cv_ld_dynamic_option='-Bdynamic'
3379 if test $in_tree_ld = yes ; then
3380 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; then
3381 gcc_cv_ld_static_dynamic=yes
3382 fi
3383 elif test x$gcc_cv_ld != x; then
3384 # Check if linker supports -Bstatic/-Bdynamic option
3385 if $gcc_cv_ld --help 2>/dev/null | grep -- -Bstatic > /dev/null \
3386 && $gcc_cv_ld --help 2>/dev/null | grep -- -Bdynamic > /dev/null; then
3387 gcc_cv_ld_static_dynamic=yes
3388 else
3389 case "$target" in
3390 # AIX ld uses -b flags
3391 *-*-aix4.[[23]]* | *-*-aix[[5-9]]*)
3392 gcc_cv_ld_static_dynamic=yes
3393 gcc_cv_ld_static_option="-bstatic"
3394 gcc_cv_ld_dynamic_option="-bdynamic"
3395 ;;
3396 # HP-UX ld uses -a flags to select between shared and archive.
3397 *-*-hpux*)
3398 if test x"$gnu_ld" = xno; then
3399 gcc_cv_ld_static_dynamic=yes
3400 gcc_cv_ld_static_option="-aarchive_shared"
3401 gcc_cv_ld_dynamic_option="-adefault"
3402 fi
3403 ;;
3404 # Solaris 2 ld always supports -Bstatic/-Bdynamic.
3405 *-*-solaris2*)
3406 gcc_cv_ld_static_dynamic=yes
3407 ;;
3408 esac
3409 fi
3410 fi
3411 if test x"$gcc_cv_ld_static_dynamic" = xyes; then
3412 AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1,
3413 [Define if your linker supports -Bstatic/-Bdynamic or equivalent options.])
3414 AC_DEFINE_UNQUOTED(LD_STATIC_OPTION, "$gcc_cv_ld_static_option",
3415 [Define to the linker option to disable use of shared objects.])
3416 AC_DEFINE_UNQUOTED(LD_DYNAMIC_OPTION, "$gcc_cv_ld_dynamic_option",
3417 [Define to the linker option to enable use of shared objects.])
3418 fi
3419 AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
3420
3421 if test x"$demangler_in_ld" = xyes; then
3422 AC_MSG_CHECKING(linker --demangle support)
3423 gcc_cv_ld_demangle=no
3424 if test $in_tree_ld = yes; then
3425 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 \
3426 gcc_cv_ld_demangle=yes
3427 fi
3428 elif test x$gcc_cv_ld != x -a x"$gnu_ld" = xyes; then
3429 # Check if the GNU linker supports --demangle option
3430 if $gcc_cv_ld --help 2>/dev/null | grep no-demangle > /dev/null; then
3431 gcc_cv_ld_demangle=yes
3432 fi
3433 fi
3434 if test x"$gcc_cv_ld_demangle" = xyes; then
3435 AC_DEFINE(HAVE_LD_DEMANGLE, 1,
3436 [Define if your linker supports --demangle option.])
3437 fi
3438 AC_MSG_RESULT($gcc_cv_ld_demangle)
3439 fi
3440
3441 AC_MSG_CHECKING(linker plugin support)
3442 gcc_cv_lto_plugin=0
3443 if test -f liblto_plugin.la; then
3444 save_ld_ver="$ld_ver"
3445 save_ld_vers_major="$ld_vers_major"
3446 save_ld_vers_minor="$ld_vers_minor"
3447 save_ld_is_gold="$ld_is_gold"
3448
3449 ld_is_gold=no
3450
3451 if test $in_tree_ld = yes -a x"$ORIGINAL_PLUGIN_LD_FOR_TARGET" = x"$gcc_cv_ld"; then
3452 ld_ver="GNU ld"
3453 # FIXME: ld_is_gold?
3454 ld_vers_major="$gcc_cv_gld_major_version"
3455 ld_vers_minor="$gcc_cv_gld_minor_version"
3456 else
3457 # Determine plugin linker version.
3458 # FIXME: Partial duplicate from above, generalize.
3459 changequote(,)dnl
3460 ld_ver=`$ORIGINAL_PLUGIN_LD_FOR_TARGET --version 2>/dev/null | sed 1q`
3461 if echo "$ld_ver" | grep GNU > /dev/null; then
3462 if echo "$ld_ver" | grep "GNU gold" > /dev/null; then
3463 ld_is_gold=yes
3464 ld_vers=`echo $ld_ver | sed -n \
3465 -e 's,^[^)]*[ ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
3466 else
3467 ld_vers=`echo $ld_ver | sed -n \
3468 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
3469 fi
3470 ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
3471 ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
3472 fi
3473 changequote([,])dnl
3474 fi
3475
3476 # Determine plugin support.
3477 if echo "$ld_ver" | grep GNU > /dev/null; then
3478 # Require GNU ld or gold 2.21+ for plugin support by default.
3479 if test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 21; then
3480 gcc_cv_lto_plugin=2
3481 # Allow -fuse-linker-plugin to enable plugin support in GNU gold 2.20.
3482 elif test "$ld_is_gold" = yes -a "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 20; then
3483 gcc_cv_lto_plugin=1
3484 fi
3485 fi
3486
3487 ld_ver="$save_ld_ver"
3488 ld_vers_major="$save_ld_vers_major"
3489 ld_vers_minor="$save_ld_vers_minor"
3490 ld_is_gold="$save_ld_is_gold"
3491 fi
3492 AC_DEFINE_UNQUOTED(HAVE_LTO_PLUGIN, $gcc_cv_lto_plugin,
3493 [Define to the level of your linker's plugin support.])
3494 AC_MSG_RESULT($gcc_cv_lto_plugin)
3495
3496 case "$target" in
3497 # All TARGET_ABI_OSF targets.
3498 alpha*-*-linux* | alpha*-*-*bsd*)
3499 gcc_GAS_CHECK_FEATURE([explicit relocation support],
3500 gcc_cv_as_alpha_explicit_relocs, [2,12,0],,
3501 [ .set nomacro
3502 .text
3503 extbl $3, $2, $3 !lituse_bytoff!1
3504 ldq $2, a($29) !literal!1
3505 ldq $4, b($29) !literal!2
3506 ldq_u $3, 0($2) !lituse_base!1
3507 ldq $27, f($29) !literal!5
3508 jsr $26, ($27), f !lituse_jsr!5
3509 ldah $29, 0($26) !gpdisp!3
3510 lda $0, c($29) !gprel
3511 ldah $1, d($29) !gprelhigh
3512 lda $1, d($1) !gprellow
3513 lda $29, 0($29) !gpdisp!3],,
3514 [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
3515 [Define if your assembler supports explicit relocations.])])
3516 gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
3517 gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],,
3518 [ .set nomacro
3519 .text
3520 ldq $27, a($29) !literal!1
3521 jsr $26, ($27), a !lituse_jsrdirect!1],,
3522 [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
3523 [Define if your assembler supports the lituse_jsrdirect relocation.])])
3524 ;;
3525
3526 cris-*-*)
3527 gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
3528 gcc_cv_as_cris_no_mul_bug,[2,15,91],
3529 [-no-mul-bug-abort], [.text],,
3530 [AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1,
3531 [Define if your assembler supports the -no-mul-bug-abort option.])])
3532 ;;
3533
3534 sparc*-*-*)
3535 gcc_GAS_CHECK_FEATURE([.register], gcc_cv_as_sparc_register_op,,,
3536 [.register %g2, #scratch],,
3537 [AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
3538 [Define if your assembler supports .register.])])
3539
3540 gcc_GAS_CHECK_FEATURE([@%:@nobits], gcc_cv_as_sparc_nobits,,,
3541 [.section "nobits",#alloc,#write,#nobits
3542 .section "progbits",#alloc,#write,#progbits])
3543 AC_DEFINE_UNQUOTED(HAVE_AS_SPARC_NOBITS,
3544 [`if test $gcc_cv_as_sparc_nobits = yes; then echo 1; else echo 0; fi`],
3545 [Define to 1 if your assembler supports #nobits, 0 otherwise.])
3546
3547 gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,,
3548 [-relax], [.text],,
3549 [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
3550 [Define if your assembler supports -relax option.])])
3551
3552 gcc_GAS_CHECK_FEATURE([GOTDATA_OP relocs],
3553 gcc_cv_as_sparc_gotdata_op,,
3554 [-K PIC],
3555 [.text
3556 .align 4
3557 foo:
3558 nop
3559 bar:
3560 sethi %gdop_hix22(foo), %g1
3561 xor %g1, %gdop_lox10(foo), %g1
3562 ld [[%l7 + %g1]], %g2, %gdop(foo)],
3563 [if test x$gcc_cv_ld != x \
3564 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3565 if test x$gcc_cv_objdump != x; then
3566 if $gcc_cv_objdump -s -j .text conftest 2> /dev/null \
3567 | grep ' 03000004 82186004 c405c001'> /dev/null 2>&1; then
3568 gcc_cv_as_sparc_gotdata_op=no
3569 else
3570 gcc_cv_as_sparc_gotdata_op=yes
3571 fi
3572 fi
3573 fi
3574 rm -f conftest],
3575 [AC_DEFINE(HAVE_AS_SPARC_GOTDATA_OP, 1,
3576 [Define if your assembler and linker support GOTDATA_OP relocs.])])
3577
3578 gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs],
3579 gcc_cv_as_sparc_ua_pcrel,,
3580 [-K PIC],
3581 [.text
3582 foo:
3583 nop
3584 .data
3585 .align 4
3586 .byte 0
3587 .uaword %r_disp32(foo)],
3588 [if test x$gcc_cv_ld != x \
3589 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3590 gcc_cv_as_sparc_ua_pcrel=yes
3591 fi
3592 rm -f conftest],
3593 [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
3594 [Define if your assembler and linker support unaligned PC relative relocs.])
3595
3596 gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols],
3597 gcc_cv_as_sparc_ua_pcrel_hidden,,
3598 [-K PIC],
3599 [.data
3600 .align 4
3601 .byte 0x31
3602 .uaword %r_disp32(foo)
3603 .byte 0x32, 0x33, 0x34
3604 .global foo
3605 .hidden foo
3606 foo:
3607 .skip 4],
3608 [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
3609 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
3610 && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
3611 | grep ' 31000000 07323334' > /dev/null 2>&1; then
3612 if $gcc_cv_objdump -R conftest 2> /dev/null \
3613 | grep 'DISP32' > /dev/null 2>&1; then
3614 :
3615 else
3616 gcc_cv_as_sparc_ua_pcrel_hidden=yes
3617 fi
3618 fi
3619 rm -f conftest],
3620 [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
3621 [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])])
3622 ]) # unaligned pcrel relocs
3623
3624 gcc_GAS_CHECK_FEATURE([offsetable %lo()],
3625 gcc_cv_as_sparc_offsetable_lo10,,
3626 [-xarch=v9],
3627 [.text
3628 or %g1, %lo(ab) + 12, %g1
3629 or %g1, %lo(ab + 12), %g1],
3630 [if test x$gcc_cv_objdump != x \
3631 && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \
3632 | grep ' 82106000 82106000' > /dev/null 2>&1; then
3633 gcc_cv_as_sparc_offsetable_lo10=yes
3634 fi],
3635 [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
3636 [Define if your assembler supports offsetable %lo().])])
3637
3638 gcc_GAS_CHECK_FEATURE([FMAF, HPC, and VIS 3.0 instructions],
3639 gcc_cv_as_sparc_fmaf,,
3640 [-xarch=v9d],
3641 [.text
3642 .register %g2, #scratch
3643 .register %g3, #scratch
3644 .align 4
3645 fmaddd %f0, %f2, %f4, %f6
3646 addxccc %g1, %g2, %g3
3647 fsrl32 %f2, %f4, %f8
3648 fnaddd %f10, %f12, %f14],,
3649 [AC_DEFINE(HAVE_AS_FMAF_HPC_VIS3, 1,
3650 [Define if your assembler supports FMAF, HPC, and VIS 3.0 instructions.])])
3651
3652 gcc_GAS_CHECK_FEATURE([SPARC4 instructions],
3653 gcc_cv_as_sparc_sparc4,,
3654 [-xarch=sparc4],
3655 [.text
3656 .register %g2, #scratch
3657 .register %g3, #scratch
3658 .align 4
3659 cxbe %g2, %g3, 1f
3660 1: cwbneg %g2, %g3, 1f
3661 1: sha1
3662 md5
3663 aes_kexpand0 %f4, %f6, %f8
3664 des_round %f38, %f40, %f42, %f44
3665 camellia_f %f54, %f56, %f58, %f60
3666 kasumi_fi_xor %f46, %f48, %f50, %f52],,
3667 [AC_DEFINE(HAVE_AS_SPARC4, 1,
3668 [Define if your assembler supports SPARC4 instructions.])])
3669
3670 gcc_GAS_CHECK_FEATURE([LEON instructions],
3671 gcc_cv_as_sparc_leon,,
3672 [-Aleon],
3673 [.text
3674 .register %g2, #scratch
3675 .register %g3, #scratch
3676 .align 4
3677 smac %g2, %g3, %g1
3678 umac %g2, %g3, %g1
3679 cas [[%g2]], %g3, %g1],,
3680 [AC_DEFINE(HAVE_AS_LEON, 1,
3681 [Define if your assembler supports LEON instructions.])])
3682 ;;
3683
3684 changequote(,)dnl
3685 i[34567]86-*-* | x86_64-*-*)
3686 changequote([,])dnl
3687 case $target_os in
3688 cygwin*)
3689 # Full C++ conformance when using a shared libstdc++-v3 requires some
3690 # support from the Cygwin DLL, which in more recent versions exports
3691 # wrappers to aid in interposing and redirecting operators new, delete,
3692 # etc., as per n2800 #17.6.4.6 [replacement.functions]. Check if we
3693 # are configuring for a version of Cygwin that exports the wrappers.
3694 if test x$host = x$target && test x$host_cpu = xi686; then
3695 AC_CHECK_FUNC([__wrap__Znaj],[gcc_ac_cygwin_dll_wrappers=yes],[gcc_ac_cygwin_dll_wrappers=no])
3696 else
3697 # Can't check presence of libc functions during cross-compile, so
3698 # we just have to assume we're building for an up-to-date target.
3699 gcc_ac_cygwin_dll_wrappers=yes
3700 fi
3701 AC_DEFINE_UNQUOTED(USE_CYGWIN_LIBSTDCXX_WRAPPERS,
3702 [`if test $gcc_ac_cygwin_dll_wrappers = yes; then echo 1; else echo 0; fi`],
3703 [Define if you want to generate code by default that assumes that the
3704 Cygwin DLL exports wrappers to support libstdc++ function replacement.])
3705 esac
3706 case $target_os in
3707 cygwin* | pe | mingw32* | interix*)
3708 # Recent binutils allows the three-operand form of ".comm" on PE. This
3709 # definition is used unconditionally to initialise the default state of
3710 # the target option variable that governs usage of the feature.
3711 gcc_GAS_CHECK_FEATURE([.comm with alignment], gcc_cv_as_comm_has_align,
3712 [2,19,52],,[.comm foo,1,32])
3713 AC_DEFINE_UNQUOTED(HAVE_GAS_ALIGNED_COMM,
3714 [`if test $gcc_cv_as_comm_has_align = yes; then echo 1; else echo 0; fi`],
3715 [Define if your assembler supports specifying the alignment
3716 of objects allocated using the GAS .comm command.])
3717 # Used for DWARF 2 in PE
3718 gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
3719 gcc_cv_as_ix86_pe_secrel32,
3720 [2,15,91],,
3721 [.text
3722 foo: nop
3723 .data
3724 .secrel32 foo],
3725 [if test x$gcc_cv_ld != x \
3726 && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1; then
3727 gcc_cv_as_ix86_pe_secrel32=yes
3728 fi
3729 rm -f conftest],
3730 [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1,
3731 [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])])
3732 # Test if the assembler supports the extended form of the .section
3733 # directive that specifies section alignment. LTO support uses this,
3734 # but normally only after installation, so we warn but don't fail the
3735 # configure if LTO is enabled but the assembler does not support it.
3736 gcc_GAS_CHECK_FEATURE([.section with alignment], gcc_cv_as_section_has_align,
3737 [2,20,1],-fatal-warnings,[.section lto_test,"dr0"])
3738 if test x$gcc_cv_as_section_has_align != xyes; then
3739 case ",$enable_languages," in
3740 *,lto,*)
3741 AC_MSG_WARN([LTO for $target requires binutils >= 2.20.1, but version found appears insufficient; LTO will not work until binutils is upgraded.])
3742 ;;
3743 esac
3744 fi
3745 # Test if the assembler supports the section flag 'e' for specifying
3746 # an excluded section.
3747 gcc_GAS_CHECK_FEATURE([.section with e], gcc_cv_as_section_has_e,
3748 [2,22,51],,
3749 [.section foo1,"e"
3750 .byte 0,0,0,0])
3751 AC_DEFINE_UNQUOTED(HAVE_GAS_SECTION_EXCLUDE,
3752 [`if test $gcc_cv_as_section_has_e = yes; then echo 1; else echo 0; fi`],
3753 [Define if your assembler supports specifying the section flag e.])
3754 ;;
3755 esac
3756
3757 gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
3758 gcc_cv_as_ix86_filds,,,
3759 [filds mem; fists mem],,
3760 [AC_DEFINE(HAVE_AS_IX86_FILDS, 1,
3761 [Define if your assembler uses filds and fists mnemonics.])])
3762
3763 gcc_GAS_CHECK_FEATURE([fildq and fistpq mnemonics],
3764 gcc_cv_as_ix86_fildq,,,
3765 [fildq mem; fistpq mem],,
3766 [AC_DEFINE(HAVE_AS_IX86_FILDQ, 1,
3767 [Define if your assembler uses fildq and fistq mnemonics.])])
3768
3769 gcc_GAS_CHECK_FEATURE([cmov syntax],
3770 gcc_cv_as_ix86_cmov_sun_syntax,,,
3771 [cmovl.l %edx, %eax],,
3772 [AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
3773 [Define if your assembler supports the Sun syntax for cmov.])])
3774
3775 gcc_GAS_CHECK_FEATURE([ffreep mnemonic],
3776 gcc_cv_as_ix86_ffreep,,,
3777 [ffreep %st(1)],,
3778 [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
3779 [Define if your assembler supports the ffreep mnemonic.])])
3780
3781 gcc_GAS_CHECK_FEATURE([.quad directive],
3782 gcc_cv_as_ix86_quad,,,
3783 [.quad 0],,
3784 [AC_DEFINE(HAVE_AS_IX86_QUAD, 1,
3785 [Define if your assembler supports the .quad directive.])])
3786
3787 gcc_GAS_CHECK_FEATURE([sahf mnemonic],
3788 gcc_cv_as_ix86_sahf,,,
3789 [.code64
3790 sahf],,
3791 [AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
3792 [Define if your assembler supports the sahf mnemonic in 64bit mode.])])
3793
3794 gcc_GAS_CHECK_FEATURE([interunit movq mnemonic],
3795 gcc_cv_as_ix86_interunit_movq,,,
3796 [.code64
3797 movq %mm0, %rax
3798 movq %rax, %xmm0])
3799 AC_DEFINE_UNQUOTED(HAVE_AS_IX86_INTERUNIT_MOVQ,
3800 [`if test $gcc_cv_as_ix86_interunit_movq = yes; then echo 1; else echo 0; fi`],
3801 [Define if your assembler supports interunit movq mnemonic.])
3802
3803 gcc_GAS_CHECK_FEATURE([hle prefixes],
3804 gcc_cv_as_ix86_hle,,,
3805 [lock xacquire cmpxchg %esi, (%ecx)],,
3806 [AC_DEFINE(HAVE_AS_IX86_HLE, 1,
3807 [Define if your assembler supports HLE prefixes.])])
3808
3809 gcc_GAS_CHECK_FEATURE([swap suffix],
3810 gcc_cv_as_ix86_swap,,,
3811 [movl.s %esp, %ebp],,
3812 [AC_DEFINE(HAVE_AS_IX86_SWAP, 1,
3813 [Define if your assembler supports the swap suffix.])])
3814
3815 gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
3816 gcc_cv_as_ix86_diff_sect_delta,,,
3817 [.section .rodata
3818 .L1:
3819 .long .L2-.L1
3820 .long .L3-.L1
3821 .text
3822 .L3: nop
3823 .L2: nop],,
3824 [AC_DEFINE(HAVE_AS_IX86_DIFF_SECT_DELTA, 1,
3825 [Define if your assembler supports the subtraction of symbols in different sections.])])
3826
3827 # These two are used unconditionally by i386.[ch]; it is to be defined
3828 # to 1 if the feature is present, 0 otherwise.
3829 gcc_GAS_CHECK_FEATURE([GOTOFF in data],
3830 gcc_cv_as_ix86_gotoff_in_data, [2,11,0],,
3831 [ .text
3832 .L0:
3833 nop
3834 .data
3835 .long .L0@GOTOFF])
3836 AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
3837 [`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
3838 [Define true if the assembler supports '.long foo@GOTOFF'.])
3839
3840 gcc_GAS_CHECK_FEATURE([rep and lock prefix],
3841 gcc_cv_as_ix86_rep_lock_prefix,,,
3842 [rep movsl
3843 rep ret
3844 rep nop
3845 rep bsf %ecx, %eax
3846 rep bsr %ecx, %eax
3847 lock addl %edi, (%eax,%esi)
3848 lock orl $0, (%esp)],,
3849 [AC_DEFINE(HAVE_AS_IX86_REP_LOCK_PREFIX, 1,
3850 [Define if the assembler supports 'rep <insn>, lock <insn>'.])])
3851
3852 gcc_GAS_CHECK_FEATURE([R_386_TLS_GD_PLT reloc],
3853 gcc_cv_as_ix86_tlsgdplt,,,
3854 [call tls_gd@tlsgdplt],
3855 [if test x$gcc_cv_ld != x \
3856 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3857 gcc_cv_as_ix86_tlsgdplt=yes
3858 fi
3859 rm -f conftest],
3860 [AC_DEFINE(HAVE_AS_IX86_TLSGDPLT, 1,
3861 [Define if your assembler and linker support @tlsgdplt.])])
3862
3863 gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM_PLT reloc],
3864 gcc_cv_as_ix86_tlsldmplt,,,
3865 [tls_ld:
3866 call tls_ld@tlsldmplt],
3867 [if test x$gcc_cv_ld != x \
3868 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3869 gcc_cv_as_ix86_tlsldmplt=yes
3870 fi
3871 rm -f conftest],
3872 [AC_DEFINE(HAVE_AS_IX86_TLSLDMPLT, 1,
3873 [Define if your assembler and linker support @tlsldmplt.])])
3874
3875 ;;
3876
3877 ia64*-*-*)
3878 gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs],
3879 gcc_cv_as_ia64_ltoffx_ldxmov_relocs, [2,14,0],,
3880 [ .text
3881 addl r15 = @ltoffx(x#), gp
3882 ;;
3883 ld8.mov r16 = [[r15]], x#],,
3884 [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
3885 [Define if your assembler supports ltoffx and ldxmov relocations.])])
3886
3887 ;;
3888
3889 powerpc*-*-*)
3890 case $target in
3891 *-*-aix*) conftest_s=' .machine "pwr5"
3892 .csect .text[[PR]]
3893 mfcr 3,128';;
3894 *-*-darwin*)
3895 gcc_GAS_CHECK_FEATURE([.machine directive support],
3896 gcc_cv_as_machine_directive,,,
3897 [ .machine ppc7400])
3898 if test x$gcc_cv_as_machine_directive != xyes; then
3899 echo "*** This target requires an assembler supporting \".machine\"" >&2
3900 echo you can get it from: ftp://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2
3901 test x$build = x$target && exit 1
3902 fi
3903 conftest_s=' .text
3904 mfcr r3,128';;
3905 *) conftest_s=' .machine power4
3906 .text
3907 mfcr 3,128';;
3908 esac
3909
3910 gcc_GAS_CHECK_FEATURE([mfcr field support],
3911 gcc_cv_as_powerpc_mfcrf, [2,14,0],,
3912 [$conftest_s],,
3913 [AC_DEFINE(HAVE_AS_MFCRF, 1,
3914 [Define if your assembler supports mfcr field.])])
3915
3916 case $target in
3917 *-*-aix*) conftest_s=' .machine "pwr5"
3918 .csect .text[[PR]]
3919 popcntb 3,3';;
3920 *) conftest_s=' .machine power5
3921 .text
3922 popcntb 3,3';;
3923 esac
3924
3925 gcc_GAS_CHECK_FEATURE([popcntb support],
3926 gcc_cv_as_powerpc_popcntb, [2,17,0],,
3927 [$conftest_s],,
3928 [AC_DEFINE(HAVE_AS_POPCNTB, 1,
3929 [Define if your assembler supports popcntb field.])])
3930
3931 case $target in
3932 *-*-aix*) conftest_s=' .machine "pwr5x"
3933 .csect .text[[PR]]
3934 frin 1,1';;
3935 *) conftest_s=' .machine power5
3936 .text
3937 frin 1,1';;
3938 esac
3939
3940 gcc_GAS_CHECK_FEATURE([fp round support],
3941 gcc_cv_as_powerpc_fprnd, [2,17,0],,
3942 [$conftest_s],,
3943 [AC_DEFINE(HAVE_AS_FPRND, 1,
3944 [Define if your assembler supports fprnd.])])
3945
3946 case $target in
3947 *-*-aix*) conftest_s=' .machine "pwr6"
3948 .csect .text[[PR]]
3949 mffgpr 1,3';;
3950 *) conftest_s=' .machine power6
3951 .text
3952 mffgpr 1,3';;
3953 esac
3954
3955 gcc_GAS_CHECK_FEATURE([move fp gpr support],
3956 gcc_cv_as_powerpc_mfpgpr, [2,19,2],,
3957 [$conftest_s],,
3958 [AC_DEFINE(HAVE_AS_MFPGPR, 1,
3959 [Define if your assembler supports mffgpr and mftgpr.])])
3960
3961 case $target in
3962 *-*-aix*) conftest_s=' .csect .text[[PR]]
3963 LCF..0:
3964 addis 11,30,_GLOBAL_OFFSET_TABLE_-LCF..0@ha';;
3965 *-*-darwin*)
3966 conftest_s=' .text
3967 LCF0:
3968 addis r11,r30,_GLOBAL_OFFSET_TABLE_-LCF0@ha';;
3969 *) conftest_s=' .text
3970 .LCF0:
3971 addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';;
3972 esac
3973
3974 gcc_GAS_CHECK_FEATURE([rel16 relocs],
3975 gcc_cv_as_powerpc_rel16, [2,17,0], -a32,
3976 [$conftest_s],,
3977 [AC_DEFINE(HAVE_AS_REL16, 1,
3978 [Define if your assembler supports R_PPC_REL16 relocs.])])
3979
3980 case $target in
3981 *-*-aix*) conftest_s=' .machine "pwr6"
3982 .csect .text[[PR]]
3983 cmpb 3,4,5';;
3984 *) conftest_s=' .machine power6
3985 .text
3986 cmpb 3,4,5';;
3987 esac
3988
3989 gcc_GAS_CHECK_FEATURE([compare bytes support],
3990 gcc_cv_as_powerpc_cmpb, [2,19,2], -a32,
3991 [$conftest_s],,
3992 [AC_DEFINE(HAVE_AS_CMPB, 1,
3993 [Define if your assembler supports cmpb.])])
3994
3995 case $target in
3996 *-*-aix*) conftest_s=' .machine "pwr6"
3997 .csect .text[[PR]]
3998 dadd 1,2,3';;
3999 *) conftest_s=' .machine power6
4000 .text
4001 dadd 1,2,3';;
4002 esac
4003
4004 gcc_GAS_CHECK_FEATURE([decimal float support],
4005 gcc_cv_as_powerpc_dfp, [2,19,2], -a32,
4006 [$conftest_s],,
4007 [AC_DEFINE(HAVE_AS_DFP, 1,
4008 [Define if your assembler supports DFP instructions.])])
4009
4010 case $target in
4011 *-*-aix*) conftest_s=' .machine "pwr7"
4012 .csect .text[[PR]]
4013 lxvd2x 1,2,3';;
4014 *) conftest_s=' .machine power7
4015 .text
4016 lxvd2x 1,2,3';;
4017 esac
4018
4019 gcc_GAS_CHECK_FEATURE([vector-scalar support],
4020 gcc_cv_as_powerpc_vsx, [2,19,2], -a32,
4021 [$conftest_s],,
4022 [AC_DEFINE(HAVE_AS_VSX, 1,
4023 [Define if your assembler supports VSX instructions.])])
4024
4025 case $target in
4026 *-*-aix*) conftest_s=' .machine "pwr7"
4027 .csect .text[[PR]]
4028 popcntd 3,3';;
4029 *) conftest_s=' .machine power7
4030 .text
4031 popcntd 3,3';;
4032 esac
4033
4034 gcc_GAS_CHECK_FEATURE([popcntd support],
4035 gcc_cv_as_powerpc_popcntd, [2,19,2], -a32,
4036 [$conftest_s],,
4037 [AC_DEFINE(HAVE_AS_POPCNTD, 1,
4038 [Define if your assembler supports POPCNTD instructions.])])
4039
4040 case $target in
4041 *-*-aix*) conftest_s=' .machine "pwr8"
4042 .csect .text[[PR]]';;
4043 *) conftest_s=' .machine power8
4044 .text';;
4045 esac
4046
4047 gcc_GAS_CHECK_FEATURE([power8 support],
4048 gcc_cv_as_powerpc_power8, [2,19,2], -a32,
4049 [$conftest_s],,
4050 [AC_DEFINE(HAVE_AS_POWER8, 1,
4051 [Define if your assembler supports POWER8 instructions.])])
4052
4053 case $target in
4054 *-*-aix*) conftest_s=' .csect .text[[PR]]
4055 lwsync';;
4056 *) conftest_s=' .text
4057 lwsync';;
4058 esac
4059
4060 gcc_GAS_CHECK_FEATURE([lwsync support],
4061 gcc_cv_as_powerpc_lwsync, [2,19,2], -a32,
4062 [$conftest_s],,
4063 [AC_DEFINE(HAVE_AS_LWSYNC, 1,
4064 [Define if your assembler supports LWSYNC instructions.])])
4065
4066 case $target in
4067 *-*-aix*) conftest_s=' .machine "476"
4068 .csect .text[[PR]]
4069 dci 0';;
4070 *) conftest_s=' .machine "476"
4071 .text
4072 dci 0';;
4073 esac
4074
4075 gcc_GAS_CHECK_FEATURE([data cache invalidate support],
4076 gcc_cv_as_powerpc_dci, [9,99,0], -a32,
4077 [$conftest_s],,
4078 [AC_DEFINE(HAVE_AS_DCI, 1,
4079 [Define if your assembler supports the DCI/ICI instructions.])])
4080
4081 gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4082 gcc_cv_as_powerpc_gnu_attribute, [2,18,0],,
4083 [.gnu_attribute 4,1],,
4084 [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4085 [Define if your assembler supports .gnu_attribute.])])
4086
4087 gcc_GAS_CHECK_FEATURE([tls marker support],
4088 gcc_cv_as_powerpc_tls_markers, [2,20,0],,
4089 [ bl __tls_get_addr(x@tlsgd)],,
4090 [AC_DEFINE(HAVE_AS_TLS_MARKERS, 1,
4091 [Define if your assembler supports arg info for __tls_get_addr.])])
4092
4093 case $target in
4094 *-*-aix*)
4095 gcc_GAS_CHECK_FEATURE([.ref support],
4096 gcc_cv_as_aix_ref, [2,21,0],,
4097 [ .csect stuff[[rw]]
4098 stuff:
4099 .long 1
4100 .extern sym
4101 .ref sym
4102 ],,
4103 [AC_DEFINE(HAVE_AS_REF, 1,
4104 [Define if your assembler supports .ref])])
4105 ;;
4106 esac
4107 ;;
4108
4109 mips*-*-*)
4110 gcc_GAS_CHECK_FEATURE([explicit relocation support],
4111 gcc_cv_as_mips_explicit_relocs, [2,14,0],,
4112 [ lw $4,%gp_rel(foo)($4)],,
4113 [if test x$target_cpu_default = x
4114 then target_cpu_default=MASK_EXPLICIT_RELOCS
4115 else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
4116 fi])
4117 gcc_GAS_CHECK_FEATURE([-mno-shared support],
4118 gcc_cv_as_mips_no_shared, [2,16,0], [-mno-shared], [nop],,
4119 [AC_DEFINE(HAVE_AS_NO_SHARED, 1,
4120 [Define if the assembler understands -mno-shared.])])
4121
4122 gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4123 gcc_cv_as_mips_gnu_attribute, [2,18,0],,
4124 [.gnu_attribute 4,1],,
4125 [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4126 [Define if your assembler supports .gnu_attribute.])])
4127
4128 gcc_GAS_CHECK_FEATURE([.micromips support],
4129 gcc_cv_as_micromips_support,,[--fatal-warnings],
4130 [.set micromips],,
4131 [AC_DEFINE(HAVE_GAS_MICROMIPS, 1,
4132 [Define if your assembler supports the .set micromips directive])])
4133
4134 gcc_GAS_CHECK_FEATURE([.dtprelword support],
4135 gcc_cv_as_mips_dtprelword, [2,18,0],,
4136 [.section .tdata,"awT",@progbits
4137 x:
4138 .word 2
4139 .text
4140 .dtprelword x+0x8000],,
4141 [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
4142 [Define if your assembler supports .dtprelword.])])
4143
4144 gcc_GAS_CHECK_FEATURE([DSPR1 mult with four accumulators support],
4145 gcc_cv_as_mips_dspr1_mult,,,
4146 [ .set mips32r2
4147 .set nodspr2
4148 .set dsp
4149 madd $ac3,$4,$5
4150 maddu $ac3,$4,$5
4151 msub $ac3,$4,$5
4152 msubu $ac3,$4,$5
4153 mult $ac3,$4,$5
4154 multu $ac3,$4,$5],,
4155 [AC_DEFINE(HAVE_AS_DSPR1_MULT, 1,
4156 [Define if your assembler supports DSPR1 mult.])])
4157
4158 AC_MSG_CHECKING(assembler and linker for explicit JALR relocation)
4159 gcc_cv_as_ld_jalr_reloc=no
4160 if test $gcc_cv_as_mips_explicit_relocs = yes; then
4161 if test $in_tree_ld = yes ; then
4162 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 20 -o "$gcc_cv_gld_major_version" -gt 2 \
4163 && test $in_tree_ld_is_elf = yes; then
4164 gcc_cv_as_ld_jalr_reloc=yes
4165 fi
4166 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x; then
4167 echo ' .ent x' > conftest.s
4168 echo 'x: ld $2,%got_disp(y)($3)' >> conftest.s
4169 echo ' ld $25,%call16(y)($28)' >> conftest.s
4170 echo ' .reloc 1f,R_MIPS_JALR,y' >> conftest.s
4171 echo '1: jalr $25' >> conftest.s
4172 echo ' .reloc 1f,R_MIPS_JALR,x' >> conftest.s
4173 echo '1: jalr $25' >> conftest.s
4174 echo ' .end x' >> conftest.s
4175 if $gcc_cv_as -o conftest.o conftest.s >/dev/null 2>&AS_MESSAGE_LOG_FD \
4176 && $gcc_cv_ld -shared -o conftest.so conftest.o >/dev/null 2>&AS_MESSAGE_LOG_FD; then
4177 if $gcc_cv_objdump -d conftest.so | grep jalr >/dev/null 2>&1 \
4178 && $gcc_cv_objdump -d conftest.so | grep "bal.*<x>" >/dev/null 2>&1; then
4179 gcc_cv_as_ld_jalr_reloc=yes
4180 fi
4181 fi
4182 rm -f conftest.*
4183 fi
4184 fi
4185 if test $gcc_cv_as_ld_jalr_reloc = yes; then
4186 if test x$target_cpu_default = x; then
4187 target_cpu_default=MASK_RELAX_PIC_CALLS
4188 else
4189 target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
4190 fi
4191 fi
4192 AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
4193
4194 AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
4195 [gcc_cv_ld_mips_personality_relaxation],
4196 [gcc_cv_ld_mips_personality_relaxation=no
4197 if test $in_tree_ld = yes ; then
4198 if test "$gcc_cv_gld_major_version" -eq 2 \
4199 -a "$gcc_cv_gld_minor_version" -ge 21 \
4200 -o "$gcc_cv_gld_major_version" -gt 2; then
4201 gcc_cv_ld_mips_personality_relaxation=yes
4202 fi
4203 elif test x$gcc_cv_as != x \
4204 -a x$gcc_cv_ld != x \
4205 -a x$gcc_cv_readelf != x ; then
4206 cat > conftest.s <<EOF
4207 .cfi_startproc
4208 .cfi_personality 0x80,indirect_ptr
4209 .ent test
4210 test:
4211 nop
4212 .end test
4213 .cfi_endproc
4214
4215 .section .data,"aw",@progbits
4216 indirect_ptr:
4217 .dc.a personality
4218 EOF
4219 if $gcc_cv_as -KPIC -o conftest.o conftest.s > /dev/null 2>&1 \
4220 && $gcc_cv_ld -o conftest conftest.o -shared > /dev/null 2>&1; then
4221 if $gcc_cv_readelf -d conftest 2>&1 \
4222 | grep TEXTREL > /dev/null 2>&1; then
4223 :
4224 elif $gcc_cv_readelf --relocs conftest 2>&1 \
4225 | grep 'R_MIPS_REL32 *$' > /dev/null 2>&1; then
4226 :
4227 else
4228 gcc_cv_ld_mips_personality_relaxation=yes
4229 fi
4230 fi
4231 fi
4232 rm -f conftest.s conftest.o conftest])
4233 if test x$gcc_cv_ld_mips_personality_relaxation = xyes; then
4234 AC_DEFINE(HAVE_LD_PERSONALITY_RELAXATION, 1,
4235 [Define if your linker can relax absolute .eh_frame personality
4236 pointers into PC-relative form.])
4237 fi
4238
4239 gcc_GAS_CHECK_FEATURE([-mnan= support],
4240 gcc_cv_as_mips_nan,,
4241 [-mnan=2008],,,
4242 [AC_DEFINE(HAVE_AS_NAN, 1,
4243 [Define if the assembler understands -mnan=.])])
4244 if test x$gcc_cv_as_mips_nan = xno \
4245 && test x$with_nan != x; then
4246 AC_MSG_ERROR(
4247 [Requesting --with-nan= requires assembler support for -mnan=])
4248 fi
4249 ;;
4250 esac
4251
4252 # Mips and HP-UX need the GNU assembler.
4253 # Linux on IA64 might be able to use the Intel assembler.
4254
4255 case "$target" in
4256 mips*-*-* | *-*-hpux* )
4257 if test x$gas_flag = xyes \
4258 || test x"$host" != x"$build" \
4259 || test ! -x "$gcc_cv_as" \
4260 || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
4261 :
4262 else
4263 echo "*** This configuration requires the GNU assembler" >&2
4264 exit 1
4265 fi
4266 ;;
4267 esac
4268
4269 # ??? Not all targets support dwarf2 debug_line, even within a version
4270 # of gas. Moreover, we need to emit a valid instruction to trigger any
4271 # info to the output file. So, as supported targets are added to gas 2.11,
4272 # add some instruction here to (also) show we expect this might work.
4273 # ??? Once 2.11 is released, probably need to add first known working
4274 # version to the per-target configury.
4275 case "$cpu_type" in
4276 aarch64 | alpha | arm | avr | bfin | cris | i386 | m32c | m68k | microblaze \
4277 | mips | pa | rs6000 | score | sparc | spu | tilegx | tilepro | xstormy16 \
4278 | xtensa)
4279 insn="nop"
4280 ;;
4281 ia64 | s390)
4282 insn="nop 0"
4283 ;;
4284 mmix)
4285 insn="swym 0"
4286 ;;
4287 esac
4288 if test x"$insn" != x; then
4289 conftest_s="\
4290 .file 1 \"conftest.s\"
4291 .loc 1 3 0
4292 $insn"
4293 gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
4294 gcc_cv_as_dwarf2_debug_line,
4295 [elf,2,11,0],, [$conftest_s],
4296 [if test x$gcc_cv_objdump != x \
4297 && $gcc_cv_objdump -h conftest.o 2> /dev/null \
4298 | grep debug_line > /dev/null 2>&1; then
4299 gcc_cv_as_dwarf2_debug_line=yes
4300 fi])
4301
4302 # The .debug_line file table must be in the exact order that
4303 # we specified the files, since these indices are also used
4304 # by DW_AT_decl_file. Approximate this test by testing if
4305 # the assembler bitches if the same index is assigned twice.
4306 gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
4307 gcc_cv_as_dwarf2_file_buggy,,,
4308 [ .file 1 "foo.s"
4309 .file 1 "bar.s"])
4310
4311 if test $gcc_cv_as_dwarf2_debug_line = yes \
4312 && test $gcc_cv_as_dwarf2_file_buggy = no; then
4313 AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
4314 [Define if your assembler supports dwarf2 .file/.loc directives,
4315 and preserves file table indices exactly as given.])
4316 fi
4317
4318 gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
4319 gcc_cv_as_gdwarf2_flag,
4320 [elf,2,11,0], [--gdwarf2], [$insn],,
4321 [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
4322 [Define if your assembler supports the --gdwarf2 option.])])
4323
4324 gcc_GAS_CHECK_FEATURE([--gstabs option],
4325 gcc_cv_as_gstabs_flag,
4326 [elf,2,11,0], [--gstabs], [$insn],
4327 [# The native Solaris 9/Intel assembler doesn't understand --gstabs
4328 # and warns about it, but still exits successfully. So check for
4329 # this.
4330 if AC_TRY_COMMAND([$gcc_cv_as --gstabs -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null])
4331 then :
4332 else gcc_cv_as_gstabs_flag=yes
4333 fi],
4334 [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
4335 [Define if your assembler supports the --gstabs option.])])
4336
4337 gcc_GAS_CHECK_FEATURE([--debug-prefix-map option],
4338 gcc_cv_as_debug_prefix_map_flag,
4339 [2,18,0], [--debug-prefix-map /a=/b], [$insn],,
4340 [AC_DEFINE(HAVE_AS_DEBUG_PREFIX_MAP, 1,
4341 [Define if your assembler supports the --debug-prefix-map option.])])
4342 fi
4343
4344 gcc_GAS_CHECK_FEATURE([.lcomm with alignment], gcc_cv_as_lcomm_with_alignment,
4345 ,,
4346 [.lcomm bar,4,16],,
4347 [AC_DEFINE(HAVE_GAS_LCOMM_WITH_ALIGNMENT, 1,
4348 [Define if your assembler supports .lcomm with an alignment field.])])
4349
4350 if test x$with_sysroot = x && test x$host = x$target \
4351 && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" \
4352 && test "$prefix" != "NONE"; then
4353 AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",
4354 [Define to PREFIX/include if cpp should also search that directory.])
4355 fi
4356
4357 if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
4358 if test "x$with_headers" != x; then
4359 target_header_dir=$with_headers
4360 elif test "x$with_sysroot" = x; then
4361 target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-include"
4362 elif test "x$with_build_sysroot" != "x"; then
4363 target_header_dir="${with_build_sysroot}${native_system_header_dir}"
4364 elif test "x$with_sysroot" = xyes; then
4365 target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-root${native_system_header_dir}"
4366 else
4367 target_header_dir="${with_sysroot}${native_system_header_dir}"
4368 fi
4369 else
4370 target_header_dir=${native_system_header_dir}
4371 fi
4372
4373 # Determine the version of glibc, if any, used on the target.
4374 AC_MSG_CHECKING([for target glibc version])
4375 AC_ARG_WITH([glibc-version],
4376 [AS_HELP_STRING([--with-glibc-version=M.N],
4377 [assume GCC used with glibc version M.N or later])], [
4378 if [echo "$with_glibc_version" | grep '^[0-9][0-9]*\.[0-9][0-9]*$']; then
4379 glibc_version_major=`echo "$with_glibc_version" | sed -e 's/\..*//'`
4380 glibc_version_minor=`echo "$with_glibc_version" | sed -e 's/.*\.//'`
4381 else
4382 AC_MSG_ERROR([option --with-glibc-version requires a version number M.N])
4383 fi], [
4384 glibc_version_major=0
4385 glibc_version_minor=0
4386 [if test -f $target_header_dir/features.h \
4387 && glibc_version_major_define=`$EGREP '^[ ]*#[ ]*define[ ]+__GLIBC__[ ]+[0-9]' $target_header_dir/features.h` \
4388 && glibc_version_minor_define=`$EGREP '^[ ]*#[ ]*define[ ]+__GLIBC_MINOR__[ ]+[0-9]' $target_header_dir/features.h`; then
4389 glibc_version_major=`echo "$glibc_version_major_define" | sed -e 's/.*__GLIBC__[ ]*//'`
4390 glibc_version_minor=`echo "$glibc_version_minor_define" | sed -e 's/.*__GLIBC_MINOR__[ ]*//'`
4391 fi]])
4392 AC_MSG_RESULT([$glibc_version_major.$glibc_version_minor])
4393
4394 AC_ARG_ENABLE(gnu-unique-object,
4395 [AS_HELP_STRING([--enable-gnu-unique-object],
4396 [enable the use of the @gnu_unique_object ELF extension on glibc systems])],
4397 [case $enable_gnu_unique_object in
4398 yes | no) ;;
4399 *) AC_MSG_ERROR(['$enable_gnu_unique_object' is an invalid value for --enable-gnu-unique-object.
4400 Valid choices are 'yes' and 'no'.]) ;;
4401 esac],
4402 [gcc_GAS_CHECK_FEATURE([gnu_unique_object], gcc_cv_as_gnu_unique_object,
4403 [elf,2,19,52],,
4404 [.type foo, '$target_type_format_char'gnu_unique_object],,
4405 # We need to unquote above to to use the definition from config.gcc.
4406 # Also check for ld.so support, i.e. glibc 2.11 or higher.
4407 [GCC_GLIBC_VERSION_GTE_IFELSE([2], [11], [enable_gnu_unique_object=yes], )]
4408 )])
4409 if test x$enable_gnu_unique_object = xyes; then
4410 AC_DEFINE(HAVE_GAS_GNU_UNIQUE_OBJECT, 1,
4411 [Define if your assembler supports @gnu_unique_object.])
4412 fi
4413
4414 AC_CACHE_CHECK([assembler for tolerance to line number 0],
4415 [gcc_cv_as_line_zero],
4416 [gcc_cv_as_line_zero=no
4417 if test $in_tree_gas = yes; then
4418 gcc_GAS_VERSION_GTE_IFELSE(2, 16, 91, [gcc_cv_as_line_zero=yes])
4419 elif test "x$gcc_cv_as" != x; then
4420 { echo '# 1 "test.s" 1'; echo '# 0 "" 2'; } > conftest.s
4421 if AC_TRY_COMMAND([$gcc_cv_as -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD 2>conftest.out]) &&
4422 test "x`cat conftest.out`" = x
4423 then
4424 gcc_cv_as_line_zero=yes
4425 else
4426 echo "configure: failed program was" >&AS_MESSAGE_LOG_FD
4427 cat conftest.s >&AS_MESSAGE_LOG_FD
4428 echo "configure: error output was" >&AS_MESSAGE_LOG_FD
4429 cat conftest.out >&AS_MESSAGE_LOG_FD
4430 fi
4431 rm -f conftest.o conftest.s conftest.out
4432 fi])
4433 if test "x$gcc_cv_as_line_zero" = xyes; then
4434 AC_DEFINE([HAVE_AS_LINE_ZERO], 1,
4435 [Define if the assembler won't complain about a line such as # 0 "" 2.])
4436 fi
4437
4438 AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
4439 gcc_cv_ld_eh_frame_hdr=no
4440 if test $in_tree_ld = yes ; then
4441 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 \
4442 && test $in_tree_ld_is_elf = yes; then
4443 gcc_cv_ld_eh_frame_hdr=yes
4444 fi
4445 elif test x$gcc_cv_ld != x; then
4446 if echo "$ld_ver" | grep GNU > /dev/null; then
4447 # Check if linker supports --eh-frame-hdr option
4448 if $gcc_cv_ld --help 2>/dev/null | grep eh-frame-hdr > /dev/null; then
4449 gcc_cv_ld_eh_frame_hdr=yes
4450 fi
4451 else
4452 case "$target" in
4453 *-*-solaris2*)
4454 # Sun ld has various bugs in .eh_frame_hdr support before version 1.2251.
4455 if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2251; then
4456 gcc_cv_ld_eh_frame_hdr=yes
4457 fi
4458 ;;
4459 esac
4460 fi
4461 fi
4462 GCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HDR])
4463 if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
4464 AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
4465 [Define if your linker supports .eh_frame_hdr.])
4466 fi
4467 AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
4468
4469 AC_MSG_CHECKING(linker CIEv3 in .eh_frame support)
4470 gcc_cv_ld_eh_frame_ciev3=no
4471 if test $in_tree_ld = yes ; then
4472 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 \
4473 && test $in_tree_ld_is_elf = yes; then
4474 gcc_cv_ld_eh_frame_ciev3=yes
4475 fi
4476 elif test x$gcc_cv_ld != x; then
4477 if echo "$ld_ver" | grep GNU > /dev/null; then
4478 gcc_cv_ld_eh_frame_ciev3=yes
4479 if test 0"$ld_date" -lt 20040513; then
4480 if test -n "$ld_date"; then
4481 # If there was date string, but was earlier than 2004-05-13, fail
4482 gcc_cv_ld_eh_frame_ciev3=no
4483 elif test "$ld_vers_major" -lt 2; then
4484 gcc_cv_ld_eh_frame_ciev3=no
4485 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
4486 gcc_cv_ld_eh_frame_ciev3=no
4487 fi
4488 fi
4489 else
4490 case "$target" in
4491 *-*-solaris2*)
4492 # Sun ld added support for CIE v3 in .eh_frame in Solaris 11.1.
4493 if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2324; then
4494 gcc_cv_ld_eh_frame_ciev3=yes
4495 fi
4496 ;;
4497 esac
4498 fi
4499 fi
4500 AC_DEFINE_UNQUOTED(HAVE_LD_EH_FRAME_CIEV3,
4501 [`if test x"$gcc_cv_ld_eh_frame_ciev3" = xyes; then echo 1; else echo 0; fi`],
4502 [Define 0/1 if your linker supports CIE v3 in .eh_frame.])
4503 AC_MSG_RESULT($gcc_cv_ld_eh_frame_ciev3)
4504
4505 AC_MSG_CHECKING(linker position independent executable support)
4506 gcc_cv_ld_pie=no
4507 if test $in_tree_ld = yes ; then
4508 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 \
4509 && test $in_tree_ld_is_elf = yes; then
4510 gcc_cv_ld_pie=yes
4511 fi
4512 elif test x$gcc_cv_ld != x; then
4513 # Check if linker supports -pie option
4514 if $gcc_cv_ld --help 2>/dev/null | grep -- -pie > /dev/null; then
4515 gcc_cv_ld_pie=yes
4516 fi
4517 fi
4518 if test x"$gcc_cv_ld_pie" = xyes; then
4519 AC_DEFINE(HAVE_LD_PIE, 1,
4520 [Define if your linker supports -pie option.])
4521 fi
4522 AC_MSG_RESULT($gcc_cv_ld_pie)
4523
4524 AC_MSG_CHECKING(linker EH-compatible garbage collection of sections)
4525 gcc_cv_ld_eh_gc_sections=no
4526 if test $in_tree_ld = yes ; then
4527 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 \
4528 && test $in_tree_ld_is_elf = yes; then
4529 gcc_cv_ld_eh_gc_sections=yes
4530 fi
4531 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
4532 cat > conftest.s <<EOF
4533 .section .text
4534 .globl _start
4535 .type _start, @function
4536 _start:
4537 .long foo
4538 .size _start, .-_start
4539 .section .text.foo,"ax",@progbits
4540 .type foo, @function
4541 foo:
4542 .long 0
4543 .size foo, .-foo
4544 .section .gcc_except_table.foo,"a",@progbits
4545 .L0:
4546 .long 0
4547 .section .eh_frame,"a",@progbits
4548 .long .L0
4549 EOF
4550 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4551 if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4552 | grep "gc-sections option ignored" > /dev/null; then
4553 gcc_cv_ld_eh_gc_sections=no
4554 elif $gcc_cv_objdump -h conftest 2> /dev/null \
4555 | grep gcc_except_table > /dev/null; then
4556 gcc_cv_ld_eh_gc_sections=yes
4557 # If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
4558 if test x$gcc_cv_as_comdat_group != xyes; then
4559 gcc_cv_ld_eh_gc_sections=no
4560 cat > conftest.s <<EOF
4561 .section .text
4562 .globl _start
4563 .type _start, @function
4564 _start:
4565 .long foo
4566 .size _start, .-_start
4567 .section .gnu.linkonce.t.foo,"ax",@progbits
4568 .type foo, @function
4569 foo:
4570 .long 0
4571 .size foo, .-foo
4572 .section .gcc_except_table.foo,"a",@progbits
4573 .L0:
4574 .long 0
4575 .section .eh_frame,"a",@progbits
4576 .long .L0
4577 EOF
4578 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4579 if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4580 | grep "gc-sections option ignored" > /dev/null; then
4581 gcc_cv_ld_eh_gc_sections=no
4582 elif $gcc_cv_objdump -h conftest 2> /dev/null \
4583 | grep gcc_except_table > /dev/null; then
4584 gcc_cv_ld_eh_gc_sections=yes
4585 fi
4586 fi
4587 fi
4588 fi
4589 fi
4590 rm -f conftest.s conftest.o conftest
4591 fi
4592 case "$target" in
4593 hppa*-*-linux*)
4594 # ??? This apparently exposes a binutils bug with PC-relative relocations.
4595 gcc_cv_ld_eh_gc_sections=no
4596 ;;
4597 esac
4598 if test x$gcc_cv_ld_eh_gc_sections = xyes; then
4599 AC_DEFINE(HAVE_LD_EH_GC_SECTIONS, 1,
4600 [Define if your linker supports garbage collection of
4601 sections in presence of EH frames.])
4602 fi
4603 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections)
4604
4605 AC_MSG_CHECKING(linker EH garbage collection of sections bug)
4606 gcc_cv_ld_eh_gc_sections_bug=no
4607 if test $in_tree_ld = yes ; then
4608 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -lt 19 -o "$gcc_cv_gld_major_version" -lt 2 \
4609 && test $in_tree_ld_is_elf = yes; then
4610 gcc_cv_ld_eh_gc_sections_bug=yes
4611 fi
4612 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x -a x$gcc_cv_as_comdat_group = xyes; then
4613 gcc_cv_ld_eh_gc_sections_bug=yes
4614 cat > conftest.s <<EOF
4615 .section .text
4616 .globl _start
4617 .type _start, @function
4618 _start:
4619 .long foo
4620 .size _start, .-_start
4621 .section .text.startup.foo,"ax",@progbits
4622 .type foo, @function
4623 foo:
4624 .long 0
4625 .size foo, .-foo
4626 .section .gcc_except_table.foo,"a",@progbits
4627 .L0:
4628 .long 0
4629 .section .eh_frame,"a",@progbits
4630 .long .L0
4631 EOF
4632 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4633 if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4634 | grep "gc-sections option ignored" > /dev/null; then
4635 :
4636 elif $gcc_cv_objdump -h conftest 2> /dev/null \
4637 | grep gcc_except_table > /dev/null; then
4638 gcc_cv_ld_eh_gc_sections_bug=no
4639 fi
4640 fi
4641 rm -f conftest.s conftest.o conftest
4642 fi
4643 if test x$gcc_cv_ld_eh_gc_sections_bug = xyes; then
4644 AC_DEFINE(HAVE_LD_EH_GC_SECTIONS_BUG, 1,
4645 [Define if your linker has buggy garbage collection of
4646 sections support when .text.startup.foo like sections are used.])
4647 fi
4648 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections_bug)
4649
4650 # --------
4651 # UNSORTED
4652 # --------
4653
4654 AC_CACHE_CHECK(linker --as-needed support,
4655 gcc_cv_ld_as_needed,
4656 [gcc_cv_ld_as_needed=no
4657 gcc_cv_ld_as_needed_option='--as-needed'
4658 gcc_cv_ld_no_as_needed_option='--no-as-needed'
4659 if test $in_tree_ld = yes ; then
4660 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 \
4661 && test $in_tree_ld_is_elf = yes; then
4662 gcc_cv_ld_as_needed=yes
4663 fi
4664 elif test x$gcc_cv_ld != x; then
4665 # Check if linker supports --as-needed and --no-as-needed options
4666 if $gcc_cv_ld --help 2>/dev/null | grep as-needed > /dev/null; then
4667 gcc_cv_ld_as_needed=yes
4668 else
4669 case "$target" in
4670 # Solaris 2 ld always supports -z ignore/-z record.
4671 *-*-solaris2*)
4672 gcc_cv_ld_as_needed=yes
4673 gcc_cv_ld_as_needed_option="-z ignore"
4674 gcc_cv_ld_no_as_needed_option="-z record"
4675 ;;
4676 esac
4677 fi
4678 fi
4679 # --as-needed/-z ignore can only be used if libgcc_s.so.1 uses
4680 # dl_iterate_phdr, i.e. since Solaris 11.
4681 case "$target" in
4682 *-*-solaris2.1[[1-9]]*)
4683 case "$target" in
4684 i?86-*-* | x86_64-*-*)
4685 if echo "$ld_ver" | grep GNU > /dev/null; then
4686 # Doesn't work with gld on Solaris/x86 due to PR ld/12320.
4687 gcc_cv_ld_as_needed=no
4688 fi
4689 ;;
4690 esac
4691 ;;
4692 *-*-solaris2*)
4693 gcc_cv_ld_as_needed=no
4694 ;;
4695 esac
4696 ])
4697 if test x"$gcc_cv_ld_as_needed" = xyes; then
4698 AC_DEFINE(HAVE_LD_AS_NEEDED, 1,
4699 [Define if your linker supports --as-needed/--no-as-needed or equivalent options.])
4700 AC_DEFINE_UNQUOTED(LD_AS_NEEDED_OPTION, "$gcc_cv_ld_as_needed_option",
4701 [Define to the linker option to ignore unused dependencies.])
4702 AC_DEFINE_UNQUOTED(LD_NO_AS_NEEDED_OPTION, "$gcc_cv_ld_no_as_needed_option",
4703 [Define to the linker option to keep unused dependencies.])
4704 fi
4705
4706 case "$target:$tm_file" in
4707 powerpc64-*-freebsd* | powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
4708 case "$target" in
4709 *le-*-linux*)
4710 emul_name="-melf64lppc"
4711 ;;
4712 *-*-linux*)
4713 emul_name="-melf64ppc"
4714 ;;
4715 *-*-freebsd*)
4716 emul_name="-melf64ppc_fbsd"
4717 ;;
4718 esac
4719 AC_CACHE_CHECK(linker support for omitting dot symbols,
4720 gcc_cv_ld_no_dot_syms,
4721 [gcc_cv_ld_no_dot_syms=no
4722 if test x"$ld_is_gold" = xyes; then
4723 gcc_cv_ld_no_dot_syms=yes
4724 elif test $in_tree_ld = yes ; then
4725 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
4726 gcc_cv_ld_no_dot_syms=yes
4727 fi
4728 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
4729 cat > conftest1.s <<EOF
4730 .text
4731 bl .foo
4732 EOF
4733 cat > conftest2.s <<EOF
4734 .section ".opd","aw"
4735 .align 3
4736 .globl foo
4737 .type foo,@function
4738 foo:
4739 .quad .LEfoo,.TOC.@tocbase,0
4740 .text
4741 .LEfoo:
4742 blr
4743 .size foo,.-.LEfoo
4744 EOF
4745 if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
4746 && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
4747 && $gcc_cv_ld $emul_name -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
4748 gcc_cv_ld_no_dot_syms=yes
4749 fi
4750 rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
4751 fi
4752 ])
4753 if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
4754 AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
4755 [Define if your PowerPC64 linker only needs function descriptor syms.])
4756 fi
4757
4758 AC_CACHE_CHECK(linker large toc support,
4759 gcc_cv_ld_large_toc,
4760 [gcc_cv_ld_large_toc=no
4761 if test x"$ld_is_gold" = xyes; then
4762 gcc_cv_ld_large_toc=yes
4763 elif test $in_tree_ld = yes ; then
4764 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 21 -o "$gcc_cv_gld_major_version" -gt 2; then
4765 gcc_cv_ld_large_toc=yes
4766 fi
4767 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
4768 cat > conftest.s <<EOF
4769 .section ".tbss","awT",@nobits
4770 .align 3
4771 ie0: .space 8
4772 .global _start
4773 .text
4774 _start:
4775 addis 9,13,ie0@got@tprel@ha
4776 ld 9,ie0@got@tprel@l(9)
4777 EOF
4778 if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
4779 && $gcc_cv_ld $emul_name --no-toc-sort -o conftest conftest.o > /dev/null 2>&1; then
4780 gcc_cv_ld_large_toc=yes
4781 fi
4782 rm -f conftest conftest.o conftest.s
4783 fi
4784 ])
4785 if test x"$gcc_cv_ld_large_toc" = xyes; then
4786 AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
4787 [Define if your PowerPC64 linker supports a large TOC.])
4788 fi
4789 ;;
4790 esac
4791
4792 case "$target" in
4793 *-*-aix*)
4794 AC_CACHE_CHECK(linker large toc support,
4795 gcc_cv_ld_large_toc,
4796 [gcc_cv_ld_large_toc=no
4797 if test x$gcc_cv_as != x ; then
4798 cat > conftest.s <<EOF
4799 .toc
4800 LC..1:
4801 .tc a[[TC]],a[[RW]]
4802 .extern a[[RW]]
4803 .csect .text[[PR]]
4804 .largetoctest:
4805 addis 9,LC..1@u(2)
4806 ld 3,LC..1@l(9)
4807 EOF
4808 if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1; then
4809 gcc_cv_ld_large_toc=yes
4810 fi
4811 rm -f conftest conftest.o conftest.s
4812 fi
4813 ])
4814 if test x"$gcc_cv_ld_large_toc" = xyes; then
4815 AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
4816 [Define if your PowerPC64 linker supports a large TOC.])
4817 fi
4818 ;;
4819 esac
4820
4821 AC_CACHE_CHECK(linker --build-id support,
4822 gcc_cv_ld_buildid,
4823 [gcc_cv_ld_buildid=no
4824 if test $in_tree_ld = yes ; then
4825 if test "$gcc_cv_gld_major_version" -eq 2 -a \
4826 "$gcc_cv_gld_minor_version" -ge 18 -o \
4827 "$gcc_cv_gld_major_version" -gt 2 \
4828 && test $in_tree_ld_is_elf = yes; then
4829 gcc_cv_ld_buildid=yes
4830 fi
4831 elif test x$gcc_cv_ld != x; then
4832 if $gcc_cv_ld --help 2>/dev/null | grep build-id > /dev/null; then
4833 gcc_cv_ld_buildid=yes
4834 fi
4835 fi])
4836 if test x"$gcc_cv_ld_buildid" = xyes; then
4837 AC_DEFINE(HAVE_LD_BUILDID, 1,
4838 [Define if your linker supports --build-id.])
4839 fi
4840
4841 AC_ARG_ENABLE(linker-build-id,
4842 [AS_HELP_STRING([--enable-linker-build-id],
4843 [compiler will always pass --build-id to linker])],
4844 [],
4845 enable_linker_build_id=no)
4846
4847 if test x"$enable_linker_build_id" = xyes; then
4848 if test x"$gcc_cv_ld_buildid" = xyes; then
4849 AC_DEFINE(ENABLE_LD_BUILDID, 1,
4850 [Define if gcc should always pass --build-id to linker.])
4851 else
4852 AC_MSG_WARN(--build-id is not supported by your linker; --enable-linker-build-id ignored)
4853 fi
4854 fi
4855
4856 # In binutils 2.21, GNU ld gained support for new emulations fully
4857 # supporting the Solaris 2 ABI. Detect their presence in the linker used.
4858 AC_CACHE_CHECK(linker *_sol2 emulation support,
4859 gcc_cv_ld_sol2_emulation,
4860 [gcc_cv_ld_sol2_emulation=no
4861 if test $in_tree_ld = yes ; then
4862 if test "$gcc_cv_gld_major_version" -eq 2 -a \
4863 "$gcc_cv_gld_minor_version" -ge 21 -o \
4864 "$gcc_cv_gld_major_version" -gt 2 \
4865 && test $in_tree_ld_is_elf = yes; then
4866 gcc_cv_ld_sol2_emulation=yes
4867 fi
4868 elif test x$gcc_cv_ld != x; then
4869 if $gcc_cv_ld -V 2>/dev/null | sed -e '1,/Supported emulations/d;q' | \
4870 grep _sol2 > /dev/null; then
4871 gcc_cv_ld_sol2_emulation=yes
4872 fi
4873 fi])
4874 if test x"$gcc_cv_ld_sol2_emulation" = xyes; then
4875 AC_DEFINE(HAVE_LD_SOL2_EMULATION, 1,
4876 [Define if your linker supports the *_sol2 emulations.])
4877 fi
4878
4879 AC_CACHE_CHECK(linker --sysroot support,
4880 gcc_cv_ld_sysroot,
4881 [gcc_cv_ld_sysroot=no
4882 if test $in_tree_ld = yes ; then
4883 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
4884 gcc_cv_ld_sysroot=yes
4885 fi
4886 elif test x$gcc_cv_ld != x; then
4887 if $gcc_cv_ld --help 2>/dev/null | grep sysroot > /dev/null; then
4888 gcc_cv_ld_sysroot=yes
4889 fi
4890 fi])
4891 if test x"$gcc_cv_ld_sysroot" = xyes; then
4892 AC_DEFINE(HAVE_LD_SYSROOT, 1,
4893 [Define if your linker supports --sysroot.])
4894 fi
4895
4896 # Test for stack protector support in target C library.
4897 AC_CACHE_CHECK(__stack_chk_fail in target C library,
4898 gcc_cv_libc_provides_ssp,
4899 [gcc_cv_libc_provides_ssp=no
4900 case "$target" in
4901 *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
4902 # glibc 2.4 and later provides __stack_chk_fail and
4903 # either __stack_chk_guard, or TLS access to stack guard canary.
4904 GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_libc_provides_ssp=yes], [
4905 [if test -f $target_header_dir/features.h \
4906 && $EGREP '^[ ]*#[ ]*define[ ]+__GNU_LIBRARY__[ ]+([1-9][0-9]|[6-9])' \
4907 $target_header_dir/features.h > /dev/null; then
4908 if $EGREP '^[ ]*#[ ]*define[ ]+__UCLIBC__[ ]+1' \
4909 $target_header_dir/features.h > /dev/null && \
4910 test -f $target_header_dir/bits/uClibc_config.h && \
4911 $EGREP '^[ ]*#[ ]*define[ ]+__UCLIBC_HAS_SSP__[ ]+1' \
4912 $target_header_dir/bits/uClibc_config.h > /dev/null; then
4913 gcc_cv_libc_provides_ssp=yes
4914 fi
4915 # all versions of Bionic support stack protector
4916 elif test -f $target_header_dir/sys/cdefs.h \
4917 && $EGREP '^[ ]*#[ ]*define[ ]+__BIONIC__[ ]+1' \
4918 $target_header_dir/sys/cdefs.h > /dev/null; then
4919 gcc_cv_libc_provides_ssp=yes
4920 fi]])
4921 ;;
4922 *-*-gnu*)
4923 # Avoid complicated tests (see
4924 # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
4925 # simply assert that glibc does provide this, which is true for all
4926 # realistically usable GNU/Hurd configurations.
4927 gcc_cv_libc_provides_ssp=yes;;
4928 *-*-darwin* | *-*-freebsd*)
4929 AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
4930 [echo "no __stack_chk_fail on this target"])
4931 ;;
4932 *) gcc_cv_libc_provides_ssp=no ;;
4933 esac])
4934
4935 if test x$gcc_cv_libc_provides_ssp = xyes; then
4936 AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1,
4937 [Define if your target C library provides stack protector support])
4938 fi
4939
4940 # Test for <sys/sdt.h> on the target.
4941 GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
4942 AC_MSG_CHECKING(sys/sdt.h in the target C library)
4943 have_sys_sdt_h=no
4944 if test -f $target_header_dir/sys/sdt.h; then
4945 have_sys_sdt_h=yes
4946 AC_DEFINE(HAVE_SYS_SDT_H, 1,
4947 [Define if your target C library provides sys/sdt.h])
4948 fi
4949 AC_MSG_RESULT($have_sys_sdt_h)
4950
4951 # Check if TFmode long double should be used by default or not.
4952 # Some glibc targets used DFmode long double, but with glibc 2.4
4953 # and later they can use TFmode.
4954 case "$target" in
4955 powerpc*-*-linux* | \
4956 sparc*-*-linux* | \
4957 s390*-*-linux* | \
4958 alpha*-*-linux*)
4959 AC_ARG_WITH(long-double-128,
4960 [AS_HELP_STRING([--with-long-double-128],
4961 [use 128-bit long double by default])],
4962 gcc_cv_target_ldbl128="$with_long_double_128",
4963 [GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_target_ldbl128=yes], [
4964 [gcc_cv_target_ldbl128=no
4965 grep '^[ ]*#[ ]*define[ ][ ]*__LONG_DOUBLE_MATH_OPTIONAL' \
4966 $target_header_dir/bits/wordsize.h > /dev/null 2>&1 \
4967 && gcc_cv_target_ldbl128=yes
4968 ]])])
4969 ;;
4970 esac
4971 if test x$gcc_cv_target_ldbl128 = xyes; then
4972 AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
4973 [Define if TFmode long double should be the default])
4974 fi
4975
4976 AC_MSG_CHECKING(dl_iterate_phdr in target C library)
4977 gcc_cv_target_dl_iterate_phdr=unknown
4978 case "$target" in
4979 # Restrict to Solaris 11+. While most of the Solaris 11 linker changes
4980 # were backported to Solaris 10 Update 10, dl_iterate_phdr only lives in
4981 # libdl there, both complicating its use and breaking compatibility
4982 # between Solaris 10 updates.
4983 *-*-solaris2.1[[1-9]]*)
4984 # <link.h> needs both a dl_iterate_phdr declaration and support for
4985 # compilation with largefile support.
4986 if grep dl_iterate_phdr $target_header_dir/link.h > /dev/null 2>&1 \
4987 && grep 'large file capable' $target_header_dir/link.h > /dev/null 2>&1; then
4988 gcc_cv_target_dl_iterate_phdr=yes
4989 else
4990 gcc_cv_target_dl_iterate_phdr=no
4991 fi
4992 ;;
4993 esac
4994 GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
4995 if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
4996 AC_DEFINE(TARGET_DL_ITERATE_PHDR, 1,
4997 [Define if your target C library provides the `dl_iterate_phdr' function.])
4998 fi
4999 AC_MSG_RESULT($gcc_cv_target_dl_iterate_phdr)
5000
5001 # We no longer support different GC mechanisms. Emit an error if
5002 # the user configures with --with-gc.
5003 AC_ARG_WITH(gc,
5004 [AS_HELP_STRING([--with-gc={page,zone}],
5005 [this option is not supported anymore. It used to choose
5006 the garbage collection mechanism to use with the compiler])],
5007 [AC_MSG_ERROR([Configure option --with-gc is only supported up to GCC 4.7.x])],
5008 [])
5009
5010 # Libraries to use on the host. This will normally be set by the top
5011 # level Makefile. Here we simply capture the value for our Makefile.
5012 if test -z "${HOST_LIBS+set}"; then
5013 HOST_LIBS=
5014 fi
5015 AC_SUBST(HOST_LIBS)
5016
5017 # Use the system's zlib library.
5018 zlibdir=-L../zlib
5019 zlibinc="-I\$(srcdir)/../zlib"
5020 AC_ARG_WITH(system-zlib,
5021 [AS_HELP_STRING([--with-system-zlib], [use installed libz])],
5022 zlibdir=
5023 zlibinc=
5024 )
5025 AC_SUBST(zlibdir)
5026 AC_SUBST(zlibinc)
5027
5028 dnl Very limited version of automake's enable-maintainer-mode
5029
5030 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
5031 dnl maintainer-mode is disabled by default
5032 AC_ARG_ENABLE(maintainer-mode,
5033 [AS_HELP_STRING([--enable-maintainer-mode],
5034 [enable make rules and dependencies not useful
5035 (and sometimes confusing) to the casual installer])],
5036 maintainer_mode=$enableval,
5037 maintainer_mode=no)
5038
5039 AC_MSG_RESULT($maintainer_mode)
5040
5041 if test "$maintainer_mode" = "yes"; then
5042 MAINT=''
5043 else
5044 MAINT='#'
5045 fi
5046 AC_SUBST(MAINT)dnl
5047
5048 dnl Whether to prevent multiple front-ends from linking at the same time
5049
5050 AC_MSG_CHECKING([whether to avoid linking multiple front-ends at once])
5051 AC_ARG_ENABLE(link-mutex,
5052 [AS_HELP_STRING([--enable-link-mutex],
5053 [avoid linking multiple front-ends at once to avoid thrashing
5054 on the build machine])],
5055 do_link_mutex=$enableval,
5056 do_link_mutex=no)
5057 AC_MSG_RESULT($do_link_mutex)
5058
5059 if test "$do_link_mutex" = "yes"; then
5060 DO_LINK_MUTEX=true
5061 else
5062 DO_LINK_MUTEX=false
5063 fi
5064 AC_SUBST(DO_LINK_MUTEX)
5065
5066 # --------------
5067 # Language hooks
5068 # --------------
5069
5070 # Make empty files to contain the specs and options for each language.
5071 # Then add #include lines to for a compiler that has specs and/or options.
5072
5073 subdirs=
5074 lang_opt_files=
5075 lang_specs_files=
5076 lang_tree_files=
5077 # These (without "all_") are set in each config-lang.in.
5078 # `language' must be a single word so is spelled singularly.
5079 all_languages=
5080 all_compilers=
5081 all_outputs='Makefile'
5082 # List of language makefile fragments.
5083 all_lang_makefrags=
5084 # Additional files for gengtype
5085 all_gtfiles="$target_gtfiles"
5086
5087 # These are the languages that are set in --enable-languages,
5088 # and are available in the GCC tree.
5089 all_selected_languages=
5090
5091 # Add the language fragments.
5092 # Languages are added via two mechanisms. Some information must be
5093 # recorded in makefile variables, these are defined in config-lang.in.
5094 # We accumulate them and plug them into the main Makefile.
5095 # The other mechanism is a set of hooks for each of the main targets
5096 # like `clean', `install', etc.
5097
5098 language_hooks="Make-hooks"
5099
5100 for lang in ${srcdir}/*/config-lang.in
5101 do
5102 changequote(,)dnl
5103 test "$lang" = "${srcdir}/*/config-lang.in" && continue
5104
5105 lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^ ]*\).*$,\1,p' $lang`
5106 if test "x$lang_alias" = x
5107 then
5108 echo "$lang doesn't set \$language." 1>&2
5109 exit 1
5110 fi
5111 subdir="`echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
5112 subdirs="$subdirs $subdir"
5113
5114 # $gcc_subdir is where the gcc integration files are to be found
5115 # for a language, both for internal compiler purposes (compiler
5116 # sources implementing front-end to GCC tree converters), and for
5117 # build infrastructure purposes (Make-lang.in, etc.)
5118 #
5119 # This will be <subdir> (relative to $srcdir) if a line like
5120 # gcc_subdir="<subdir>" or gcc_subdir=<subdir>
5121 # is found in <langdir>/config-lang.in, and will remain <langdir>
5122 # otherwise.
5123 #
5124 # Except for the language alias (fetched above), the regular
5125 # "config-lang.in" contents are always retrieved from $gcc_subdir,
5126 # so a <langdir>/config-lang.in setting gcc_subdir typically sets
5127 # only this and the language alias.
5128
5129 gcc_subdir=`sed -n -e 's,^gcc_subdir=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^gcc_subdir=\([^ ]*\).*$,\1,p' $lang`
5130 if [ "$gcc_subdir" = "" ]; then
5131 gcc_subdir="$subdir"
5132 fi
5133
5134 case ",$enable_languages," in
5135 *,$lang_alias,*)
5136 all_selected_languages="$all_selected_languages $lang_alias"
5137 if test -f $srcdir/$gcc_subdir/lang-specs.h; then
5138 lang_specs_files="$lang_specs_files $srcdir/$gcc_subdir/lang-specs.h"
5139 fi
5140 ;;
5141 esac
5142 changequote([,])dnl
5143
5144 language=
5145 boot_language=
5146 compilers=
5147 outputs=
5148 gtfiles=
5149 subdir_requires=
5150 . ${srcdir}/$gcc_subdir/config-lang.in
5151 if test "x$language" = x
5152 then
5153 echo "${srcdir}/$gcc_subdir/config-lang.in doesn't set \$language." 1>&2
5154 exit 1
5155 fi
5156
5157 ok=:
5158 case ",$enable_languages," in
5159 *,$lang_alias,*) ;;
5160 *)
5161 for i in $subdir_requires; do
5162 test -f "${srcdir}/$i/config-lang.in" && continue
5163 ok=false
5164 break
5165 done
5166 ;;
5167 esac
5168 $ok || continue
5169
5170 all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$gcc_subdir/Make-lang.in"
5171 if test -f $srcdir/$gcc_subdir/lang.opt; then
5172 lang_opt_files="$lang_opt_files $srcdir/$gcc_subdir/lang.opt"
5173 all_opt_files="$all_opt_files $srcdir/$gcc_subdir/lang.opt"
5174 fi
5175 if test -f $srcdir/$gcc_subdir/$subdir-tree.def; then
5176 lang_tree_files="$lang_tree_files $srcdir/$gcc_subdir/$subdir-tree.def"
5177 fi
5178 all_languages="$all_languages $language"
5179 all_compilers="$all_compilers $compilers"
5180 all_outputs="$all_outputs $outputs"
5181 all_gtfiles="$all_gtfiles [[$subdir]] $gtfiles"
5182 case ",$enable_languages," in
5183 *,lto,*)
5184 AC_DEFINE(ENABLE_LTO, 1, [Define to enable LTO support.])
5185 enable_lto=yes
5186 AC_SUBST(enable_lto)
5187 ;;
5188 *) ;;
5189 esac
5190 done
5191
5192 check_languages=
5193 for language in $all_selected_languages
5194 do
5195 check_languages="$check_languages check-$language"
5196 done
5197
5198 # We link each language in with a set of hooks, reached indirectly via
5199 # lang.${target}. Only do so for selected languages.
5200
5201 rm -f Make-hooks
5202 touch Make-hooks
5203 target_list="all.cross start.encap rest.encap tags \
5204 install-common install-man install-info install-pdf install-html dvi \
5205 pdf html uninstall info man srcextra srcman srcinfo \
5206 mostlyclean clean distclean maintainer-clean install-plugin"
5207
5208 for t in $target_list
5209 do
5210 x=
5211 for lang in $all_selected_languages
5212 do
5213 x="$x $lang.$t"
5214 done
5215 echo "lang.$t: $x" >> Make-hooks
5216 done
5217
5218 # --------
5219 # Option include files
5220 # --------
5221
5222 ${AWK} -f $srcdir/opt-include.awk $all_opt_files > option-includes.mk
5223 option_includes="option-includes.mk"
5224 AC_SUBST_FILE(option_includes)
5225
5226 # --------
5227 # UNSORTED
5228 # --------
5229
5230 # Create .gdbinit.
5231
5232 echo "dir ." > .gdbinit
5233 echo "dir ${srcdir}" >> .gdbinit
5234 if test x$gdb_needs_out_file_path = xyes
5235 then
5236 echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
5237 fi
5238 if test "x$subdirs" != x; then
5239 for s in $subdirs
5240 do
5241 echo "dir ${srcdir}/$s" >> .gdbinit
5242 done
5243 fi
5244 echo "source ${srcdir}/gdbinit.in" >> .gdbinit
5245 echo "python import sys; sys.path.append('${srcdir}'); import gdbhooks" >> .gdbinit
5246
5247 # Put a breakpoint on __asan_report_error to help with debugging buffer
5248 # overflow.
5249 case "$CFLAGS" in
5250 *-fsanitize=address*)
5251 echo "source ${srcdir}/gdbasan.in" >> .gdbinit
5252 ;;
5253 esac
5254
5255 gcc_tooldir='$(libsubdir)/$(libsubdir_to_prefix)$(target_noncanonical)'
5256 AC_SUBST(gcc_tooldir)
5257 AC_SUBST(dollar)
5258
5259 # Find a directory in which to install a shared libgcc.
5260
5261 AC_ARG_ENABLE(version-specific-runtime-libs,
5262 [AS_HELP_STRING([--enable-version-specific-runtime-libs],
5263 [specify that runtime libraries should be
5264 installed in a compiler-specific directory])])
5265
5266 # Substitute configuration variables
5267 AC_SUBST(subdirs)
5268 AC_SUBST(srcdir)
5269 AC_SUBST(all_compilers)
5270 AC_SUBST(all_gtfiles)
5271 AC_SUBST(all_lang_makefrags)
5272 AC_SUBST(all_languages)
5273 AC_SUBST(all_selected_languages)
5274 AC_SUBST(build_exeext)
5275 AC_SUBST(build_install_headers_dir)
5276 AC_SUBST(build_xm_file_list)
5277 AC_SUBST(build_xm_include_list)
5278 AC_SUBST(build_xm_defines)
5279 AC_SUBST(build_file_translate)
5280 AC_SUBST(check_languages)
5281 AC_SUBST(cpp_install_dir)
5282 AC_SUBST(xmake_file)
5283 AC_SUBST(tmake_file)
5284 AC_SUBST(TM_ENDIAN_CONFIG)
5285 AC_SUBST(TM_MULTILIB_CONFIG)
5286 AC_SUBST(TM_MULTILIB_EXCEPTIONS_CONFIG)
5287 AC_SUBST(extra_gcc_objs)
5288 AC_SUBST(user_headers_inc_next_pre)
5289 AC_SUBST(user_headers_inc_next_post)
5290 AC_SUBST(extra_headers_list)
5291 AC_SUBST(extra_objs)
5292 AC_SUBST(extra_programs)
5293 AC_SUBST(float_h_file)
5294 AC_SUBST(gcc_config_arguments)
5295 AC_SUBST(gcc_gxx_include_dir)
5296 AC_SUBST(gcc_gxx_include_dir_add_sysroot)
5297 AC_SUBST(host_exeext)
5298 AC_SUBST(host_xm_file_list)
5299 AC_SUBST(host_xm_include_list)
5300 AC_SUBST(host_xm_defines)
5301 AC_SUBST(out_host_hook_obj)
5302 AC_SUBST(install)
5303 AC_SUBST(lang_opt_files)
5304 AC_SUBST(lang_specs_files)
5305 AC_SUBST(lang_tree_files)
5306 AC_SUBST(local_prefix)
5307 AC_SUBST(md_file)
5308 AC_SUBST(objc_boehm_gc)
5309 AC_SUBST(out_file)
5310 AC_SUBST(out_object_file)
5311 AC_SUBST(common_out_file)
5312 AC_SUBST(common_out_object_file)
5313 AC_SUBST(tm_file_list)
5314 AC_SUBST(tm_include_list)
5315 AC_SUBST(tm_defines)
5316 AC_SUBST(tm_p_file_list)
5317 AC_SUBST(tm_p_include_list)
5318 AC_SUBST(xm_file_list)
5319 AC_SUBST(xm_include_list)
5320 AC_SUBST(xm_defines)
5321 AC_SUBST(use_gcc_stdint)
5322 AC_SUBST(c_target_objs)
5323 AC_SUBST(cxx_target_objs)
5324 AC_SUBST(fortran_target_objs)
5325 AC_SUBST(target_cpu_default)
5326
5327 AC_SUBST_FILE(language_hooks)
5328
5329 # Echo link setup.
5330 if test x${build} = x${host} ; then
5331 if test x${host} = x${target} ; then
5332 echo "Links are now set up to build a native compiler for ${target}." 1>&2
5333 else
5334 echo "Links are now set up to build a cross-compiler" 1>&2
5335 echo " from ${host} to ${target}." 1>&2
5336 fi
5337 else
5338 if test x${host} = x${target} ; then
5339 echo "Links are now set up to build (on ${build}) a native compiler" 1>&2
5340 echo " for ${target}." 1>&2
5341 else
5342 echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2
5343 echo " from ${host} to ${target}." 1>&2
5344 fi
5345 fi
5346
5347 AC_ARG_VAR(GMPLIBS,[How to link GMP])
5348 AC_ARG_VAR(GMPINC,[How to find GMP include files])
5349
5350 AC_ARG_VAR(ISLLIBS,[How to link ISL])
5351 AC_ARG_VAR(ISLINC,[How to find ISL include files])
5352
5353 AC_ARG_VAR(CLOOGLIBS,[How to link CLOOG])
5354 AC_ARG_VAR(CLOOGINC,[How to find CLOOG include files])
5355 if test "x${CLOOGLIBS}" != "x" ; then
5356 AC_DEFINE(HAVE_cloog, 1, [Define if cloog is in use.])
5357 fi
5358
5359 # Check for plugin support
5360 AC_ARG_ENABLE(plugin,
5361 [AS_HELP_STRING([--enable-plugin], [enable plugin support])],
5362 enable_plugin=$enableval,
5363 enable_plugin=yes; default_plugin=yes)
5364
5365 pluginlibs=
5366
5367 case "${host}" in
5368 *-*-darwin*)
5369 if test x$build = x$host; then
5370 export_sym_check="nm${exeext} -g"
5371 elif test x$host = x$target; then
5372 export_sym_check="$gcc_cv_nm -g"
5373 else
5374 export_sym_check=
5375 fi
5376 ;;
5377 *)
5378 if test x$build = x$host; then
5379 export_sym_check="objdump${exeext} -T"
5380 elif test x$host = x$target; then
5381 export_sym_check="$gcc_cv_objdump -T"
5382 else
5383 export_sym_check=
5384 fi
5385 ;;
5386 esac
5387
5388 if test x"$enable_plugin" = x"yes"; then
5389
5390 AC_MSG_CHECKING([for exported symbols])
5391 if test "x$export_sym_check" != x; then
5392 echo "int main() {return 0;} int foobar() {return 0;}" > conftest.c
5393 ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest$ac_exeext > /dev/null 2>&1
5394 if $export_sym_check conftest$ac_exeext | grep -q foobar > /dev/null; then
5395 : # No need to use a flag
5396 AC_MSG_RESULT([yes])
5397 else
5398 AC_MSG_RESULT([yes])
5399 AC_MSG_CHECKING([for -rdynamic])
5400 ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest$ac_exeext > /dev/null 2>&1
5401 if $export_sym_check conftest$ac_exeext | grep -q foobar > /dev/null; then
5402 plugin_rdynamic=yes
5403 pluginlibs="-rdynamic"
5404 else
5405 plugin_rdynamic=no
5406 enable_plugin=no
5407 fi
5408 AC_MSG_RESULT([$plugin_rdynamic])
5409 fi
5410 else
5411 AC_MSG_RESULT([unable to check])
5412 fi
5413
5414 # Check -ldl
5415 saved_LIBS="$LIBS"
5416 AC_SEARCH_LIBS([dlopen], [dl])
5417 if test x"$ac_cv_search_dlopen" = x"-ldl"; then
5418 pluginlibs="$pluginlibs -ldl"
5419 fi
5420 LIBS="$saved_LIBS"
5421
5422 # Check that we can build shared objects with -fPIC -shared
5423 saved_LDFLAGS="$LDFLAGS"
5424 saved_CFLAGS="$CFLAGS"
5425 case "${host}" in
5426 *-*-darwin*)
5427 CFLAGS=`echo $CFLAGS | sed s/-mdynamic-no-pic//g`
5428 CFLAGS="$CFLAGS -fPIC"
5429 LDFLAGS="$LDFLAGS -shared -undefined dynamic_lookup"
5430 ;;
5431 *)
5432 CFLAGS="$CFLAGS -fPIC"
5433 LDFLAGS="$LDFLAGS -fPIC -shared"
5434 ;;
5435 esac
5436 AC_MSG_CHECKING([for -fPIC -shared])
5437 AC_TRY_LINK(
5438 [extern int X;],[return X == 0;],
5439 [AC_MSG_RESULT([yes]); have_pic_shared=yes],
5440 [AC_MSG_RESULT([no]); have_pic_shared=no])
5441 if test x"$have_pic_shared" != x"yes" -o x"$ac_cv_search_dlopen" = x"no"; then
5442 pluginlibs=
5443 enable_plugin=no
5444 fi
5445 LDFLAGS="$saved_LDFLAGS"
5446 CFLAGS="$saved_CFLAGS"
5447
5448 # If plugin support had been requested but not available, fail.
5449 if test x"$enable_plugin" = x"no" ; then
5450 if test x"$default_plugin" != x"yes"; then
5451 AC_MSG_ERROR([
5452 Building GCC with plugin support requires a host that supports
5453 -fPIC, -shared, -ldl and -rdynamic.])
5454 fi
5455 fi
5456 fi
5457
5458 AC_SUBST(pluginlibs)
5459 AC_SUBST(enable_plugin)
5460 if test x"$enable_plugin" = x"yes"; then
5461 AC_DEFINE(ENABLE_PLUGIN, 1, [Define to enable plugin support.])
5462 fi
5463
5464
5465 # Enable --enable-host-shared
5466 AC_ARG_ENABLE(host-shared,
5467 [AS_HELP_STRING([--enable-host-shared],
5468 [build host code as shared libraries])],
5469 [PICFLAG=-fPIC], [PICFLAG=])
5470 AC_SUBST(enable_host_shared)
5471 AC_SUBST(PICFLAG)
5472
5473
5474 AC_ARG_ENABLE(libquadmath-support,
5475 [AS_HELP_STRING([--disable-libquadmath-support],
5476 [disable libquadmath support for Fortran])],
5477 ENABLE_LIBQUADMATH_SUPPORT=$enableval,
5478 ENABLE_LIBQUADMATH_SUPPORT=yes)
5479 if test "${ENABLE_LIBQUADMATH_SUPPORT}" != "no" ; then
5480 AC_DEFINE(ENABLE_LIBQUADMATH_SUPPORT, 1,
5481 [Define to 1 to enable libquadmath support])
5482 fi
5483
5484
5485 # Specify what hash style to use by default.
5486 AC_ARG_WITH([linker-hash-style],
5487 [AC_HELP_STRING([--with-linker-hash-style={sysv,gnu,both}],
5488 [specify the linker hash style])],
5489 [case x"$withval" in
5490 xsysv)
5491 LINKER_HASH_STYLE=sysv
5492 ;;
5493 xgnu)
5494 LINKER_HASH_STYLE=gnu
5495 ;;
5496 xboth)
5497 LINKER_HASH_STYLE=both
5498 ;;
5499 *)
5500 AC_MSG_ERROR([$withval is an invalid option to --with-linker-hash-style])
5501 ;;
5502 esac],
5503 [LINKER_HASH_STYLE=''])
5504 if test x"${LINKER_HASH_STYLE}" != x; then
5505 AC_DEFINE_UNQUOTED(LINKER_HASH_STYLE, "$LINKER_HASH_STYLE",
5506 [The linker hash style])
5507 fi
5508
5509 # Configure the subdirectories
5510 # AC_CONFIG_SUBDIRS($subdirs)
5511
5512 # Create the Makefile
5513 # and configure language subdirectories
5514 AC_CONFIG_FILES($all_outputs)
5515
5516 AC_CONFIG_COMMANDS([default],
5517 [
5518 case ${CONFIG_HEADERS} in
5519 *auto-host.h:config.in*)
5520 echo > cstamp-h ;;
5521 esac
5522 # Make sure all the subdirs exist.
5523 for d in $subdirs doc build common c-family
5524 do
5525 test -d $d || mkdir $d
5526 done
5527 ],
5528 [subdirs='$subdirs'])
5529 AC_OUTPUT
5530