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

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gcc/] [gcc-4.1.1/] [gcc/] [configure.ac] - Blame information for rev 16

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

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

powered by: WebSVN 2.1.0

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