OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [configure.ac] - Blame information for rev 867

Go to most recent revision | Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.