OSDN Git Service

c75b39e394ecae7281884396528d9700bb385ba6
[pf3gnuchains/gcc-fork.git] / gcc / configure.in
1 # configure.in for GCC
2 # Process this file with autoconf to generate a configuration script.
3
4 # Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
5
6 #This file is part of GCC.
7
8 #GCC is free software; you can redistribute it and/or modify it under
9 #the terms of the GNU General Public License as published by the Free
10 #Software Foundation; either version 2, or (at your option) any later
11 #version.
12
13 #GCC is distributed in the hope that it will be useful, but WITHOUT
14 #ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 #FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
16 #for more details.
17
18 #You should have received a copy of the GNU General Public License
19 #along with GCC; see the file COPYING.  If not, write to the Free
20 #Software Foundation, 59 Temple Place - Suite 330, Boston, MA
21 #02111-1307, USA.
22
23 # Initialization and defaults
24 AC_PREREQ(2.13)
25 AC_INIT(tree.c)
26 AC_CONFIG_HEADER(auto-host.h:config.in)
27
28 remove=rm
29 hard_link=ln
30 symbolic_link='ln -s'
31 copy=cp
32
33 # Check for bogus environment variables.
34 # Test if LIBRARY_PATH contains the notation for the current directory
35 # since this would lead to problems installing/building glibc.
36 # LIBRARY_PATH contains the current directory if one of the following
37 # is true:
38 # - one of the terminals (":" and ";") is the first or last sign
39 # - two terminals occur directly after each other
40 # - the path contains an element with a dot in it
41 AC_MSG_CHECKING(LIBRARY_PATH variable)
42 changequote(,)dnl
43 case ${LIBRARY_PATH} in
44   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
45     library_path_setting="contains current directory"
46     ;;
47   *)
48     library_path_setting="ok"
49     ;;
50 esac
51 changequote([,])dnl
52 AC_MSG_RESULT($library_path_setting)
53 if test "$library_path_setting" != "ok"; then
54 AC_MSG_ERROR([
55 *** LIBRARY_PATH shouldn't contain the current directory when
56 *** building gcc. Please change the environment variable
57 *** and run configure again.])
58 fi
59
60 # Test if GCC_EXEC_PREFIX contains the notation for the current directory
61 # since this would lead to problems installing/building glibc.
62 # GCC_EXEC_PREFIX contains the current directory if one of the following
63 # is true:
64 # - one of the terminals (":" and ";") is the first or last sign
65 # - two terminals occur directly after each other
66 # - the path contains an element with a dot in it
67 AC_MSG_CHECKING(GCC_EXEC_PREFIX variable)
68 changequote(,)dnl
69 case ${GCC_EXEC_PREFIX} in
70   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
71     gcc_exec_prefix_setting="contains current directory"
72     ;;
73   *)
74     gcc_exec_prefix_setting="ok"
75     ;;
76 esac
77 changequote([,])dnl
78 AC_MSG_RESULT($gcc_exec_prefix_setting)
79 if test "$gcc_exec_prefix_setting" != "ok"; then
80 AC_MSG_ERROR([
81 *** GCC_EXEC_PREFIX shouldn't contain the current directory when
82 *** building gcc. Please change the environment variable
83 *** and run configure again.])
84 fi
85
86 # Check for additional parameters
87
88 # With GNU ld
89 AC_ARG_WITH(gnu-ld,
90 [  --with-gnu-ld           arrange to work with GNU ld.],
91 gnu_ld_flag="$with_gnu_ld",
92 gnu_ld_flag=no)
93
94 # With pre-defined ld
95 AC_ARG_WITH(ld,
96 [  --with-ld               arrange to use the specified ld (full pathname)],
97 DEFAULT_LINKER="$with_ld")
98 if test x"${DEFAULT_LINKER+set}" = x"set"; then
99   if test ! -x "$DEFAULT_LINKER"; then
100     AC_MSG_WARN([cannot execute: $DEFAULT_LINKER: check --with-ld or env. var. DEFAULT_LINKER])
101   elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
102     gnu_ld_flag=yes
103   fi
104   AC_DEFINE_UNQUOTED(DEFAULT_LINKER,"$DEFAULT_LINKER",
105         [Define to enable the use of a default linker.])
106 fi
107
108 # With GNU as
109 AC_ARG_WITH(gnu-as,
110 [  --with-gnu-as           arrange to work with GNU as],
111 gas_flag="$with_gnu_as",
112 gas_flag=no)
113
114 AC_ARG_WITH(as,
115 [  --with-as               arrange to use the specified as (full pathname)],
116 DEFAULT_ASSEMBLER="$with_as")
117 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
118   if test ! -x "$DEFAULT_ASSEMBLER"; then
119     AC_MSG_WARN([cannot execute: $DEFAULT_ASSEMBLER: check --with-as or env. var. DEFAULT_ASSEMBLER])
120   elif $DEFAULT_ASSEMBLER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
121     gas_flag=yes
122   fi
123   AC_DEFINE_UNQUOTED(DEFAULT_ASSEMBLER,"$DEFAULT_ASSEMBLER",
124         [Define to enable the use of a default assembler.])
125 fi
126
127 # With stabs
128 AC_ARG_WITH(stabs,
129 [  --with-stabs            arrange to use stabs instead of host debug format],
130 stabs="$with_stabs",
131 stabs=no)
132
133 # With ELF
134 AC_ARG_WITH(elf,
135 [  --with-elf              arrange to use ELF instead of host debug format],
136 elf="$with_elf",
137 elf=no)
138
139 # Specify the local prefix
140 local_prefix=
141 AC_ARG_WITH(local-prefix,
142 [  --with-local-prefix=DIR specifies directory to put local include],
143 [case "${withval}" in
144 yes)    AC_MSG_ERROR(bad value ${withval} given for local include directory prefix) ;;
145 no)     ;;
146 *)      local_prefix=$with_local_prefix ;;
147 esac])
148
149 # Default local prefix if it is empty
150 if test x$local_prefix = x; then
151         local_prefix=/usr/local
152 fi
153
154 # Don't set gcc_gxx_include_dir to gxx_include_dir since that's only
155 # passed in by the toplevel make and thus we'd get different behavior
156 # depending on where we built the sources.
157 gcc_gxx_include_dir=
158 # Specify the g++ header file directory
159 AC_ARG_WITH(gxx-include-dir,
160 [  --with-gxx-include-dir=DIR
161                           specifies directory to put g++ header files],
162 [case "${withval}" in
163 yes)    AC_MSG_ERROR(bad value ${withval} given for g++ include directory) ;;
164 no)     ;;
165 *)      gcc_gxx_include_dir=$with_gxx_include_dir ;;
166 esac])
167
168 if test x${gcc_gxx_include_dir} = x; then
169   if test x${enable_version_specific_runtime_libs} = xyes; then
170     gcc_gxx_include_dir='${libsubdir}/include/g++'
171   else
172     topsrcdir=${srcdir}/.. . ${srcdir}/../config.if
173 changequote(<<, >>)dnl
174     gcc_gxx_include_dir="\$(libsubdir)/\$(unlibsubdir)/..\`echo \$(exec_prefix) | sed -e 's|^\$(prefix)||' -e 's|/[^/]*|/..|g'\`/include/"${libstdcxx_incdir}
175 changequote([, ])dnl
176   fi
177 fi
178
179 # Determine whether or not multilibs are enabled.
180 AC_ARG_ENABLE(multilib,
181 [  --enable-multilib       enable library support for multiple ABIs],
182 [], [enable_multilib=yes])
183 AC_SUBST(enable_multilib)
184
185 # Enable expensive internal checks
186 AC_ARG_ENABLE(checking,
187 [  --enable-checking[=LIST]
188                           enable expensive run-time checks.  With LIST,
189                           enable only specific categories of checks.
190                           Categories are: misc,tree,rtl,rtlflag,gc,gcac;
191                           default is misc,tree,gc,rtlflag],
192 [ac_checking=
193 ac_tree_checking=
194 ac_rtl_checking=
195 ac_rtlflag_checking=
196 ac_gc_checking=
197 ac_gc_always_collect=
198 case "${enableval}" in
199 yes)    ac_checking=1 ; ac_tree_checking=1 ; ac_gc_checking=1 ;
200         ac_rtlflag_checking=1 ;;
201 no)     ;;
202 *)      IFS="${IFS=     }"; ac_save_IFS="$IFS"; IFS="$IFS,"
203         set fnord $enableval; shift
204         IFS="$ac_save_IFS"
205         for check
206         do
207                 case $check in
208                 misc)   ac_checking=1 ;;
209                 tree)   ac_tree_checking=1 ;;
210                 rtlflag)        ac_rtlflag_checking=1 ;;
211                 rtl)    ac_rtl_checking=1 ;;
212                 gc)     ac_gc_checking=1 ;;
213                 gcac)   ac_gc_always_collect=1 ;;
214                 *)      AC_MSG_ERROR(unknown check category $check) ;;
215                 esac
216         done
217         ;;
218 esac
219 ], 
220 # Enable some checks by default for development versions of GCC
221 [ac_checking=1; ac_tree_checking=1; ac_gc_checking=1; ac_rtlflag_checking=1;])
222 if test x$ac_checking != x ; then
223   AC_DEFINE(ENABLE_CHECKING, 1,
224 [Define if you want more run-time sanity checks.  This one gets a grab
225    bag of miscellaneous but relatively cheap checks.])
226 fi
227 if test x$ac_tree_checking != x ; then
228   AC_DEFINE(ENABLE_TREE_CHECKING, 1,
229 [Define if you want all operations on trees (the basic data
230    structure of the front ends) to be checked for dynamic type safety
231    at runtime.  This is moderately expensive.])
232 fi
233 if test x$ac_rtl_checking != x ; then
234   AC_DEFINE(ENABLE_RTL_CHECKING, 1,
235 [Define if you want all operations on RTL (the basic data structure
236    of the optimizer and back end) to be checked for dynamic type safety
237    at runtime.  This is quite expensive.])
238 fi
239 if test x$ac_rtlflag_checking != x ; then
240   AC_DEFINE(ENABLE_RTL_FLAG_CHECKING, 1,
241 [Define if you want RTL flag accesses to be checked against the RTL
242    codes that are supported for each access macro.  This is relatively
243    cheap.])
244 fi
245 if test x$ac_gc_checking != x ; then
246   AC_DEFINE(ENABLE_GC_CHECKING, 1,
247 [Define if you want the garbage collector to do object poisoning and
248    other memory allocation checks.  This is quite expensive.])
249 fi
250 if test x$ac_gc_always_collect != x ; then
251   AC_DEFINE(ENABLE_GC_ALWAYS_COLLECT, 1,
252 [Define if you want the garbage collector to operate in maximally
253    paranoid mode, validating the entire heap and collecting garbage at
254    every opportunity.  This is extremely expensive.])
255 fi
256
257 AC_ARG_WITH(cpp_install_dir,
258 [  --with-cpp-install-dir=DIR
259                           install the user visible C preprocessor in DIR
260                           (relative to PREFIX) as well as PREFIX/bin],
261 [if test x$withval = xyes; then
262   AC_MSG_ERROR([option --with-cpp-install-dir requires an argument])
263 elif test x$withval != xno; then
264   cpp_install_dir=$withval
265 fi])
266
267 # Enable __cxa_atexit for C++.
268 AC_ARG_ENABLE(__cxa_atexit,
269 [  --enable-__cxa_atexit   enable __cxa_atexit for C++],
270 [], [])
271 if test x$enable___cxa_atexit = xyes; then
272   AC_DEFINE(DEFAULT_USE_CXA_ATEXIT, 1,
273   [Define if you want to use __cxa_atexit, rather than atexit, to
274    register C++ destructors for local statics and global objects.
275    This is essential for fully standards-compliant handling of
276    destructors, but requires __cxa_atexit in libc.])
277 fi
278   
279 # Enable Multibyte Characters for C/C++
280 AC_ARG_ENABLE(c-mbchar,
281 [  --enable-c-mbchar       enable multibyte characters for C and C++],
282 if test x$enable_c_mbchar != xno; then
283   AC_DEFINE(MULTIBYTE_CHARS, 1,
284   [Define if you want the C and C++ compilers to support multibyte
285    character sets for source code.])
286 fi)
287   
288 # Enable threads
289 # Pass with no value to take the default
290 # Pass with a value to specify a thread package
291 AC_ARG_ENABLE(threads,
292 [  --enable-threads        enable thread usage for target GCC
293   --enable-threads=LIB    use LIB thread package for target GCC],,
294 enable_threads='')
295
296 enable_threads_flag=$enable_threads
297 # Check if a valid thread package
298 case x${enable_threads_flag} in
299         x | xno)
300                 # No threads
301                 target_thread_file='single'
302                 ;;
303         xyes)
304                 # default
305                 target_thread_file=''
306                 ;;
307         xdecosf1 | xirix | xmach | xos2 | xposix | xpthreads | xsingle | \
308         xsolaris | xwin32 | xdce | xrtems| xvxworks | xaix)
309                 target_thread_file=$enable_threads_flag
310                 ;;
311         *)
312                 echo "$enable_threads is an unknown thread package" 1>&2
313                 exit 1
314                 ;;
315 esac
316
317 AC_ARG_ENABLE(objc-gc,
318 [  --enable-objc-gc       enable the use of Boehm's garbage collector with
319                           the GNU Objective-C runtime],
320 if test x$enable_objc_gc = xno; then
321         objc_boehm_gc=''
322 else
323         objc_boehm_gc=1
324 fi,
325 objc_boehm_gc='')
326
327 AC_ARG_WITH(dwarf2,
328 [  --with-dwarf2           force the default debug format to be DWARF 2],
329 dwarf2="$with_dwarf2",
330 dwarf2=no)
331
332 AC_ARG_ENABLE(shared,
333 [  --disable-shared        don't provide a shared libgcc],
334 [
335   case $enable_shared in
336   yes | no) ;;
337   *)
338     enable_shared=no
339     IFS="${IFS=         }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
340     for pkg in $enableval; do
341       if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
342         enable_shared=yes
343       fi
344     done
345     IFS="$ac_save_ifs"
346     ;;
347   esac
348 ], [enable_shared=yes])
349 AC_SUBST(enable_shared)
350
351 # Determine the host, build, and target systems
352 AC_CANONICAL_SYSTEM
353
354 # Set program_transform_name
355 AC_ARG_PROGRAM
356
357 # Find the native compiler
358 AC_PROG_CC
359 AC_PROG_CC_C_O
360 # autoconf is lame and doesn't give us any substitution variable for this.
361 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
362   NO_MINUS_C_MINUS_O=yes
363 else
364   OUTPUT_OPTION='-o $@'
365 fi
366 AC_SUBST(NO_MINUS_C_MINUS_O)
367 AC_SUBST(OUTPUT_OPTION)
368
369 # See if GNAT has been installed
370 gcc_AC_PROG_GNAT
371
372 AC_CACHE_CHECK(whether ${CC-cc} accepts -Wno-long-long,
373 ac_cv_prog_cc_no_long_long,
374 [save_CFLAGS="$CFLAGS"
375 CFLAGS="-Wno-long-long"
376 AC_TRY_COMPILE(,,ac_cv_prog_cc_no_long_long=yes,
377                ac_cv_prog_cc_no_long_long=no)
378 CFLAGS="$save_CFLAGS"])
379
380 if test x$have_gnat != xno ; then 
381 AC_CACHE_CHECK(whether ${ADAC} accepts -Wno-long-long,
382 ac_cv_prog_adac_no_long_long,
383 [cat >conftest.adb <<EOF
384 procedure conftest is begin null; end conftest;
385 EOF
386 if $ADAC -Wno-long-long -c conftest.adb 1>&5 2>&5 ; then
387   ac_cv_prog_adac_no_long_long=yes
388 else
389   ac_cv_prog_adac_no_long_long=no
390 fi
391 rm -f conftest*])
392 else
393   ac_cv_prog_adac_no_long_long=yes
394 fi
395
396 strict1_warn=
397 if test $ac_cv_prog_cc_no_long_long = yes && \
398     test $ac_cv_prog_adac_no_long_long = yes ; then
399   strict1_warn="-pedantic -Wno-long-long"
400 fi
401 AC_SUBST(strict1_warn)
402
403 AC_PROG_CPP
404 AC_C_INLINE
405 gcc_AC_C_VOLATILE
406
407 gcc_AC_C_LONG_DOUBLE
408 gcc_AC_C_LONG_LONG
409 gcc_AC_C__BOOL
410
411 # sizeof(char) is 1 by definition.
412 gcc_AC_COMPILE_CHECK_SIZEOF(short)
413 gcc_AC_COMPILE_CHECK_SIZEOF(int)
414 gcc_AC_COMPILE_CHECK_SIZEOF(long)
415 if test $ac_cv_c_long_long = yes; then
416   gcc_AC_COMPILE_CHECK_SIZEOF(long long)
417 fi
418 if test $ac_cv_c___int64 = yes; then
419   gcc_AC_COMPILE_CHECK_SIZEOF(__int64)
420 fi
421
422 gcc_AC_C_CHARSET
423
424 # If the native compiler is GCC, we can enable warnings even in stage1.  
425 # That's useful for people building cross-compilers, or just running a
426 # quick `make'.
427 warn_cflags=
428 if test "x$GCC" = "xyes"; then
429   warn_cflags='$(GCC_WARN_CFLAGS)'
430 fi
431 AC_SUBST(warn_cflags)
432
433 # Stage specific cflags for build.
434 stage1_cflags=
435 case $build in
436 vax-*-*)
437   if test x$GCC = xyes
438   then
439     stage1_cflags="-Wa,-J"
440   else
441     stage1_cflags="-J"
442   fi
443   ;;
444 powerpc-*-darwin*)
445   # The spiffy cpp-precomp chokes on some legitimate constructs in GCC
446   # sources; use -no-cpp-precomp to get to GNU cpp.
447   # Apple's GCC has bugs in designated initializer handling, so disable
448   # that too.
449   stage1_cflags="-no-cpp-precomp -DHAVE_DESIGNATED_INITIALIZERS=0"
450   ;;
451 esac
452 AC_SUBST(stage1_cflags)
453
454 AC_PROG_MAKE_SET
455
456 AC_MSG_CHECKING([whether a default assembler was specified])
457 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
458     if test x"$gas_flag" = x"no"; then
459         AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER)])
460     else
461         AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)])
462     fi
463 else
464     AC_MSG_RESULT(no)
465 fi
466
467 AC_MSG_CHECKING([whether a default linker was specified])
468 if test x"${DEFAULT_LINKER+set}" = x"set"; then
469     if test x"$gnu_ld_flag" = x"no"; then
470         AC_MSG_RESULT([yes ($DEFAULT_LINKER)])
471     else
472         AC_MSG_RESULT([yes ($DEFAULT_LINKER - GNU ld)])
473     fi
474 else
475     AC_MSG_RESULT(no)
476 fi
477
478 AC_MSG_CHECKING(for GNU C library)
479 AC_CACHE_VAL(gcc_cv_glibc,
480 [AC_TRY_COMPILE(
481   [#include <features.h>],[
482 #if ! (defined __GLIBC__ || defined __GNU_LIBRARY__)
483 #error Not a GNU C library system
484 #endif], 
485   [gcc_cv_glibc=yes], 
486   gcc_cv_glibc=no)])
487 AC_MSG_RESULT($gcc_cv_glibc)
488 if test $gcc_cv_glibc = yes; then
489   AC_DEFINE(_GNU_SOURCE, 1, [Always define this when using the GNU C Library])
490 fi
491
492 # Find some useful tools
493 AC_PROG_AWK
494 gcc_AC_PROG_LN
495 gcc_AC_PROG_LN_S
496 AC_PROG_RANLIB
497 gcc_AC_PROG_INSTALL
498
499 AC_HEADER_STDC
500 AC_HEADER_TIME
501 gcc_AC_HEADER_STDBOOL
502 gcc_AC_HEADER_STRING
503 AC_HEADER_SYS_WAIT
504 AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h \
505                  fcntl.h unistd.h sys/file.h sys/time.h \
506                  sys/resource.h sys/param.h sys/times.h sys/stat.h \
507                  direct.h malloc.h langinfo.h)
508
509 # Check for thread headers.
510 AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
511 AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
512
513 # These tests can't be done till we know if we have limits.h.
514 gcc_AC_C_CHAR_BIT
515 gcc_AC_C_COMPILE_ENDIAN
516 gcc_AC_C_FLOAT_FORMAT
517
518 # See if we have the mktemp command.
519 AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
520
521 # Do we have a single-tree copy of texinfo?
522 if test -f $srcdir/../texinfo/Makefile.in; then
523   MAKEINFO='$(objdir)/../texinfo/makeinfo/makeinfo'
524   gcc_cv_prog_makeinfo_modern=yes
525   AC_MSG_RESULT([Using makeinfo from the unified source tree.])
526 else
527   # See if makeinfo has been installed and is modern enough
528   # that we can use it.
529   gcc_AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
530   [GNU texinfo.* \([0-9][0-9.]*\)],
531   [4.[1-9]*])
532 fi
533
534 if test $gcc_cv_prog_makeinfo_modern = no; then
535   AC_MSG_WARN([
536 *** Makeinfo is missing or too old.
537 *** Info documentation will not be built.])
538   BUILD_INFO=
539 else
540   BUILD_INFO=info               AC_SUBST(BUILD_INFO)
541 fi
542
543 # Is pod2man recent enough to regenerate manpages?
544 AC_MSG_CHECKING([for recent Pod::Man])
545 if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
546   AC_MSG_RESULT(yes)
547   GENERATED_MANPAGES=generated-manpages         AC_SUBST(GENERATED_MANPAGES)
548 else
549   AC_MSG_RESULT(no)
550   GENERATED_MANPAGES=
551 fi
552
553 # How about lex?
554 dnl Don't use AC_PROG_LEX; we insist on flex.
555 dnl LEXLIB is not useful in gcc.
556 if test -f $srcdir/../flex/skel.c; then
557   FLEX='$(objdir)/../flex/flex'
558 else
559   AC_CHECK_PROG(FLEX, flex, flex, false)
560 fi
561
562 # Bison?
563 # The -L switch is so bison can find its skeleton file.
564 if test -f $srcdir/../bison/bison.simple; then
565   BISON='$(objdir)/../bison/bison -L $(srcdir)/../bison/'
566 else
567   AC_CHECK_PROG(BISON, bison, bison, false)
568 fi
569
570 # These libraries may be used by collect2.
571 # We may need a special search path to get them linked.
572 AC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs,
573 [save_LIBS="$LIBS"
574 for libs in '' -lld -lmld \
575                 '-L/usr/lib/cmplrs/cc2.11 -lmld' \
576                 '-L/usr/lib/cmplrs/cc3.11 -lmld'
577 do
578         LIBS="$libs"
579         AC_TRY_LINK_FUNC(ldopen,
580                 [gcc_cv_collect2_libs="$libs"; break])
581 done
582 LIBS="$save_LIBS"
583 test -z "$gcc_cv_collect2_libs" && gcc_cv_collect2_libs='none required'])
584 case $gcc_cv_collect2_libs in
585         "none required")        ;;
586         *)      COLLECT2_LIBS=$gcc_cv_collect2_libs ;;
587 esac
588 AC_SUBST(COLLECT2_LIBS)
589
590 # When building Ada code on Alpha, we need exc_resume which is usually in
591 # -lexc.  So test for it.
592 save_LIBS="$LIBS"
593 LIBS=
594 AC_SEARCH_LIBS(exc_resume, exc)
595 GNAT_LIBEXC="$LIBS"
596 LIBS="$save_LIBS"
597 AC_SUBST(GNAT_LIBEXC)
598
599 # See if the stage1 system preprocessor understands the ANSI C
600 # preprocessor stringification operator.  (Used by symcat.h.)
601 AC_C_STRINGIZE
602
603 # Use <inttypes.h> only if it exists,
604 # doesn't clash with <sys/types.h>, and declares intmax_t.
605 AC_MSG_CHECKING(for inttypes.h)
606 AC_CACHE_VAL(gcc_cv_header_inttypes_h,
607 [AC_TRY_COMPILE(
608   [#include <sys/types.h>
609 #include <inttypes.h>],
610   [intmax_t i = -1;],
611   [gcc_cv_header_inttypes_h=yes],
612   gcc_cv_header_inttypes_h=no)])
613 AC_MSG_RESULT($gcc_cv_header_inttypes_h)
614 if test $gcc_cv_header_inttypes_h = yes; then
615   AC_DEFINE(HAVE_INTTYPES_H, 1,
616         [Define if you have a working <inttypes.h> header file.])
617 fi
618
619 dnl Disabled until we have a complete test for buggy enum bitfields.
620 dnl gcc_AC_C_ENUM_BF_UNSIGNED
621
622 AC_CHECK_FUNCS(times clock dup2 kill getrlimit setrlimit atoll atoq \
623         sysconf strsignal putc_unlocked fputc_unlocked fputs_unlocked \
624         fwrite_unlocked fprintf_unlocked getrusage nl_langinfo lstat \
625         scandir alphasort)
626
627 AC_CHECK_TYPE(ssize_t, int)
628
629 # Try to determine the array type of the second argument of getgroups
630 # for the target system (int or gid_t).
631 AC_TYPE_GETGROUPS
632 if test "${target}" = "${build}"; then
633   TARGET_GETGROUPS_T=$ac_cv_type_getgroups
634 else
635   case "${target}" in
636         # This condition may need some tweaking.  It should include all
637         # targets where the array type of the second argument of getgroups
638         # is int and the type of gid_t is not equivalent to int.
639         *-*-sunos* | *-*-ultrix*)
640                 TARGET_GETGROUPS_T=int
641                 ;;
642         *)
643                 TARGET_GETGROUPS_T=gid_t
644                 ;;
645   esac
646 fi
647 AC_SUBST(TARGET_GETGROUPS_T)
648
649 gcc_AC_FUNC_PRINTF_PTR
650
651 case "${host}" in
652 *-*-uwin*)
653   AC_MSG_ERROR([
654 *** UWIN may not be used as a host platform because
655 *** linking with posix.dll is not allowed by the GNU GPL])
656   ;;
657 *-*-*vms*)
658   # Under VMS, vfork works very different than on Unix. The standard test 
659   # won't work, and it isn't easily adaptable. It makes more sense to
660   # just force it.
661   ac_cv_func_vfork_works=yes
662   ;;
663 esac
664 AC_FUNC_VFORK
665 AC_FUNC_MMAP_ANYWHERE
666 AC_FUNC_MMAP_FILE
667
668 AM_ICONV
669
670 # We will need to find libiberty.h and ansidecl.h
671 saved_CFLAGS="$CFLAGS"
672 CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include"
673 gcc_AC_CHECK_DECLS(getenv atol sbrk abort atof getcwd getwd \
674         strsignal putc_unlocked fputs_unlocked fwrite_unlocked \
675         fprintf_unlocked strstr errno \
676         malloc realloc calloc free basename getopt clock, , ,[
677 #include "ansidecl.h"
678 #include "system.h"])
679
680 gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
681 #include "ansidecl.h"
682 #include "system.h"
683 #ifdef HAVE_SYS_RESOURCE_H
684 #include <sys/resource.h>
685 #endif
686 ])
687
688 gcc_AC_CHECK_DECLS(times, , ,[
689 #include "ansidecl.h"
690 #include "system.h"
691 #ifdef HAVE_SYS_TIMES_H
692 #include <sys/times.h>
693 #endif
694 ])
695
696 # More time-related stuff.
697 AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
698 AC_TRY_COMPILE([
699 #include "ansidecl.h"
700 #include "system.h"
701 #ifdef HAVE_SYS_TIMES_H
702 #include <sys/times.h>
703 #endif
704 ], [struct tms tms;], ac_cv_struct_tms=yes, ac_cv_struct_tms=no)])
705 if test $ac_cv_struct_tms = yes; then
706   AC_DEFINE(HAVE_STRUCT_TMS, 1,
707   [Define if <sys/times.h> defines struct tms.])
708 fi
709
710 # use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
711 # revisit after autoconf 2.50.
712 AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
713 AC_TRY_COMPILE([
714 #include "ansidecl.h"
715 #include "system.h"
716 ], [clock_t x;], gcc_cv_type_clock_t=yes, gcc_cv_type_clock_t=no)])
717 if test $gcc_cv_type_clock_t = yes; then
718   AC_DEFINE(HAVE_CLOCK_T, 1,
719   [Define if <time.h> defines clock_t.])
720 fi
721
722 # Restore CFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
723 CFLAGS="$saved_CFLAGS"
724
725 # mkdir takes a single argument on some systems. 
726 gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
727
728 # File extensions
729 manext='.1'
730 objext='.o'
731 AC_SUBST(manext)
732 AC_SUBST(objext)
733
734 config_gtfiles=
735 build_xm_file=
736 build_xm_defines=
737 build_install_headers_dir=install-headers-tar
738 build_exeext=
739 host_xm_file=
740 host_xm_defines=
741 host_xmake_file=
742 host_truncate_target=
743 host_exeext=
744
745 # Decode the host machine, then the target machine.
746 # For the host machine, we save the xm_file variable as host_xm_file;
747 # then we decode the target machine and forget everything else
748 # that came from the host machine.
749 for machine in $build $host $target; do
750         . ${srcdir}/config.gcc
751 done
752
753 extra_objs="${host_extra_objs} ${extra_objs}"
754
755 # Default the target-machine variables that were not explicitly set.
756 if test x"$tm_file" = x
757 then tm_file=$cpu_type/$cpu_type.h; fi
758
759 if test x"$extra_headers" = x
760 then extra_headers=; fi
761
762 if test x$md_file = x
763 then md_file=$cpu_type/$cpu_type.md; fi
764
765 if test x$out_file = x
766 then out_file=$cpu_type/$cpu_type.c; fi
767
768 if test x"$tmake_file" = x
769 then tmake_file=$cpu_type/t-$cpu_type
770 fi
771
772 if test x"$dwarf2" = xyes
773 then tm_file="$tm_file tm-dwarf2.h"
774 fi
775
776 if test x$float_format = x
777 then float_format=i64
778 fi
779
780 if test $float_format = none
781 then float_h_file=Makefile.in
782 else float_h_file=float-$float_format.h
783 fi
784
785 # Say what files are being used for the output code and MD file.
786 echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
787 echo "Using \`$srcdir/config/$md_file' as machine description file."
788
789 # If any of the xm_file variables contain nonexistent files, warn
790 # about them and drop them.
791
792 bx=
793 for x in $build_xm_file; do
794   if    test -f $srcdir/config/$x
795   then      bx="$bx $x"
796   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
797   fi
798 done
799 build_xm_file="$bx"
800
801 hx=
802 for x in $host_xm_file; do
803   if    test -f $srcdir/config/$x
804   then      hx="$hx $x"
805   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
806   fi
807 done
808 host_xm_file="$hx"
809
810 tx=
811 for x in $xm_file; do
812   if    test -f $srcdir/config/$x
813   then      tx="$tx $x"
814   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
815   fi
816 done
817 xm_file="$tx"
818
819 count=a
820 for f in $tm_file; do
821         count=${count}x
822 done
823 if test $count = ax; then
824         echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
825 else
826         echo "Using the following target machine macro files:"
827         for f in $tm_file; do
828                 echo "  $srcdir/config/$f"
829         done
830 fi
831
832 count=a
833 for f in $host_xm_file; do
834         count=${count}x
835 done
836 if test $count = a; then
837         :
838 elif test $count = ax; then
839         echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
840 else
841         echo "Using the following host machine macro files:"
842         for f in $host_xm_file; do
843                 echo "  $srcdir/config/$f"
844         done
845 fi
846
847 if test "$host_xm_file" != "$build_xm_file"; then
848         count=a
849         for f in $build_xm_file; do
850                 count=${count}x
851         done
852         if test $count = a; then
853                 :
854         elif test $count = ax; then
855                 echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
856         else
857                 echo "Using the following build machine macro files:"
858                 for f in $build_xm_file; do
859                         echo "  $srcdir/config/$f"
860                 done
861         fi
862 fi
863
864 if test x$thread_file = x; then
865         if test x$target_thread_file != x; then
866                 thread_file=$target_thread_file
867         else
868                 thread_file='single'
869         fi
870 fi
871
872 # auto-host.h is the file containing items generated by autoconf and is
873 # the first file included by config.h.
874 # If host=build, it is correct to have hconfig include auto-host.h
875 # as well.  If host!=build, we are in error and need to do more 
876 # work to find out the build config parameters.
877 if test x$host = x$build
878 then
879         build_auto=auto-host.h
880         FORBUILD=..
881 else
882         # We create a subdir, then run autoconf in the subdir.
883         # To prevent recursion we set host and build for the new
884         # invocation of configure to the build for this invocation
885         # of configure. 
886         tempdir=build.$$
887         rm -rf $tempdir
888         mkdir $tempdir
889         cd $tempdir
890         case ${srcdir} in
891         /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
892         *) realsrcdir=../${srcdir};;
893         esac
894         saved_CFLAGS="${CFLAGS}"
895         CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
896         ${realsrcdir}/configure \
897                 --target=$target_alias --host=$build_alias --build=$build_alias
898         CFLAGS="${saved_CFLAGS}"
899
900         # We just finished tests for the build machine, so rename
901         # the file auto-build.h in the gcc directory.
902         mv auto-host.h ../auto-build.h
903         cd ..
904         rm -rf $tempdir
905         build_auto=auto-build.h
906         FORBUILD=../$build
907 fi
908 AC_SUBST(FORBUILD)
909
910 tm_file="${tm_file} defaults.h"
911 host_xm_file="auto-host.h ansidecl.h ${host_xm_file} ${tm_file}"
912 build_xm_file="${build_auto} ansidecl.h ${build_xm_file} ${tm_file}"
913 xm_file="ansidecl.h ${xm_file} ${tm_file}"
914
915 # Truncate the target if necessary
916 if test x$host_truncate_target != x; then
917         target=`echo $target | sed -e 's/\(..............\).*/\1/'`
918 fi
919
920 # Get the version trigger filename from the toplevel
921 if test "${with_gcc_version_trigger+set}" = set; then
922         gcc_version_trigger=$with_gcc_version_trigger
923 else
924         gcc_version_trigger=${srcdir}/version.c
925 fi
926 changequote(,)dnl
927 gcc_version_full=`grep version_string ${gcc_version_trigger} | sed -e 's/.*"\([^"]*\)".*/\1/'`
928 gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
929
930 # Compile in configure arguments.
931 if test -f configargs.h ; then
932         # Being re-configured.
933         gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'`
934         gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
935 else
936         gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
937 fi
938 cat > configargs.h <<EOF
939 /* Generated automatically. */
940 static const char configuration_arguments[] = "$gcc_config_arguments";
941 static const char thread_model[] = "$thread_file";
942 EOF
943 changequote([,])dnl
944
945 # Internationalization
946 PACKAGE=gcc
947 VERSION="$gcc_version"
948 AC_SUBST(PACKAGE)
949 AC_SUBST(VERSION)
950
951 # Enable NLS support by default
952 AC_ARG_ENABLE(nls,
953   [  --enable-nls            use Native Language Support (default)],
954   , enable_nls=yes)
955
956 # if cross compiling, disable NLS support.
957 # It's not worth the trouble, at least for now.
958
959 if test "${build}" != "${host}" && test "x$enable_nls" = "xyes"; then
960   AC_MSG_WARN(Disabling NLS support for canadian cross compiler.)
961   enable_nls=no
962 fi
963
964 AM_GNU_GETTEXT
965
966 # Windows32 Registry support for specifying GCC installation paths.
967 AC_ARG_ENABLE(win32-registry,
968 [  --disable-win32-registry
969                           disable lookup of installation paths in the
970                           Registry on Windows hosts
971   --enable-win32-registry enable registry lookup (default)
972   --enable-win32-registry=KEY
973                           use KEY instead of GCC version as the last portion
974                           of the registry key],,)
975 case $host_os in
976         win32 | pe | cygwin* | mingw32* | uwin*)
977 AC_MSG_CHECKING(whether windows registry support is requested)
978 if test "x$enable_win32_registry" != xno; then
979   AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
980 [Define to 1 if installation paths should be looked up in Windows32
981    Registry. Ignored on non windows32 hosts.])
982   AC_MSG_RESULT(yes)
983   AC_SEARCH_LIBS(RegOpenKeyExA, advapi32)
984 else
985   AC_MSG_RESULT(no)
986 fi
987
988 # Check if user specified a different registry key.
989 case "x${enable_win32_registry}" in
990 x | xyes)
991   # default.
992   gcc_cv_win32_registry_key="$VERSION"
993   ;;
994 xno)
995   # no registry lookup.
996   gcc_cv_win32_registry_key=''
997   ;;
998 *)
999   # user-specified key.
1000   gcc_cv_win32_registry_key="$enable_win32_registry"
1001   ;;
1002 esac
1003
1004 if test "x$enable_win32_registry" != xno; then
1005   AC_MSG_CHECKING(registry key on windows hosts)
1006   AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$gcc_cv_win32_registry_key",
1007         [Define to be the last portion of registry key on windows hosts.])
1008   AC_MSG_RESULT($gcc_cv_win32_registry_key)
1009 fi
1010 ;;
1011 esac
1012
1013 # Get an absolute path to the GCC top-level source directory
1014 holddir=`${PWDCMD-pwd}`
1015 cd $srcdir
1016 topdir=`${PWDCMD-pwd}`
1017 cd $holddir
1018
1019 # Conditionalize the makefile for this host machine.
1020 # Make-host contains the concatenation of all host makefile fragments
1021 # [there can be more than one].  This file is built by configure.frag.
1022 host_overrides=Make-host
1023 dep_host_xmake_file=
1024 for f in .. ${host_xmake_file}
1025 do
1026         if test -f ${srcdir}/config/$f
1027         then
1028                 dep_host_xmake_file="${dep_host_xmake_file} ${srcdir}/config/$f"
1029         fi
1030 done
1031
1032 # Conditionalize the makefile for this target machine.
1033 # Make-target contains the concatenation of all host makefile fragments
1034 # [there can be more than one].  This file is built by configure.frag.
1035 target_overrides=Make-target
1036 dep_tmake_file=
1037 for f in .. ${tmake_file}
1038 do
1039         if test -f ${srcdir}/config/$f
1040         then
1041                 dep_tmake_file="${dep_tmake_file} ${srcdir}/config/$f"
1042         fi
1043 done
1044
1045 # If the host doesn't support symlinks, modify CC in
1046 # FLAGS_TO_PASS so CC="stage1/xgcc -Bstage1/" works.
1047 # Otherwise, we can use "CC=$(CC)".
1048 rm -f symtest.tem
1049 if $symbolic_link $srcdir/gcc.c symtest.tem 2>/dev/null
1050 then
1051         cc_set_by_configure="\$(CC)"
1052         quoted_cc_set_by_configure="\$(CC)"
1053         stage_prefix_set_by_configure="\$(STAGE_PREFIX)"
1054         quoted_stage_prefix_set_by_configure="\$(STAGE_PREFIX)"
1055 else
1056         rm -f symtest.tem
1057         if cp -p $srcdir/gcc.c symtest.tem 2>/dev/null
1058         then
1059                 symbolic_link="cp -p"
1060         else
1061                 symbolic_link="cp"
1062         fi
1063         cc_set_by_configure="\`case '\$(CC)' in stage*) echo '\$(CC)' | sed -e 's|stage|../stage|g';; *) echo '\$(CC)';; esac\`"
1064         quoted_cc_set_by_configure="\\\`case '\\\$(CC)' in stage*) echo '\\\$(CC)' | sed -e 's|stage|../stage|g';; *) echo '\\\$(CC)';; esac\\\`"
1065         stage_prefix_set_by_configure="\`case '\$(STAGE_PREFIX)' in stage*) echo '\$(STAGE_PREFIX)' | sed -e 's|stage|../stage|g';; *) echo '\$(STAGE_PREFIX)';; esac\`"
1066         quoted_stage_prefix_set_by_configure="\\\`case '\\\$(STAGE_PREFIX)' in stage*) echo '\\\$(STAGE_PREFIX)' | sed -e 's|stage|../stage|g';; *) echo '\\\$(STAGE_PREFIX)';; esac\\\`"
1067 fi
1068 rm -f symtest.tem
1069
1070 out_object_file=`basename $out_file .c`.o
1071
1072 tm_file_list=
1073 for f in $tm_file; do
1074   case $f in
1075     ansidecl.h )
1076        tm_file_list="${tm_file_list} \$(srcdir)/../include/ansidecl.h" ;;
1077     defaults.h )
1078        tm_file_list="${tm_file_list} \$(srcdir)/$f" ;;
1079     *) tm_file_list="${tm_file_list} \$(srcdir)/config/$f" ;;
1080   esac
1081 done
1082
1083 tm_p_file_list=
1084 for f in $tm_p_file; do
1085     tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f"
1086 done
1087
1088 host_xm_file_list=
1089 for f in $host_xm_file; do
1090   case $f in
1091     ansidecl.h )
1092        host_xm_file_list="${host_xm_file_list} \$(srcdir)/../include/ansidecl.h" ;;
1093     auto-host.h )
1094        host_xm_file_list="${host_xm_file_list} $f" ;;
1095     defaults.h )
1096        host_xm_file_list="${host_xm_file_list} \$(srcdir)/$f" ;;
1097     *) host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f" ;;
1098   esac
1099 done
1100
1101 build_xm_file_list=
1102 for f in $build_xm_file; do
1103   case $f in
1104     ansidecl.h )
1105        build_xm_file_list="${build_xm_file_list} \$(srcdir)/../include/ansidecl.h" ;;
1106     auto-build.h | auto-host.h )
1107        build_xm_file_list="${build_xm_file_list} $f" ;;
1108     defaults.h )
1109        host_xm_file_list="${host_xm_file_list} \$(srcdir)/$f" ;;
1110     *) build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f" ;;
1111   esac
1112 done
1113
1114 # Define macro CROSS_COMPILE in compilation if this is a cross-compiler.
1115 # Also use all.cross instead of all.internal and adjust SYSTEM_HEADER_DIR.
1116 CROSS=                                          AC_SUBST(CROSS)
1117 ALL=all.internal                                AC_SUBST(ALL)
1118 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' AC_SUBST(SYSTEM_HEADER_DIR)
1119 if test x$host != x$target
1120 then
1121         CROSS="-DCROSS_COMPILE"
1122         ALL=all.cross
1123         SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)'
1124         case "$host","$target" in
1125             i?86-*-*,x86_64-*-* \
1126             | powerpc*-*-*,powerpc64*-*-*)
1127                 CROSS="$CROSS -DNATIVE_CROSS" ;;
1128         esac
1129 fi
1130
1131 # If this is a cross-compiler that does not
1132 # have its own set of headers then define
1133 # inhibit_libc
1134
1135 # If this is using newlib, then define inhibit_libc in LIBGCC2_CFLAGS.
1136 # This prevents libgcc2 from containing any code which requires libc
1137 # support.
1138 inhibit_libc=
1139 if [test x$host != x$target] && [test x$with_headers = x]; then
1140        inhibit_libc=-Dinhibit_libc
1141 else
1142        if [test x$with_newlib = xyes]; then
1143                inhibit_libc=-Dinhibit_libc
1144        fi
1145 fi
1146 AC_SUBST(inhibit_libc)
1147
1148 # When building gcc with a cross-compiler, we need to adjust things so
1149 # that the generator programs are still built with the native compiler.
1150 # Also, we cannot run fixincludes or fix-header.
1151 # Note that the terminology here is wrong; it should be BUILD_* throughout.
1152 # FIXME.
1153
1154 # These are the normal (build=host) settings:
1155 BUILD_PREFIX=                   AC_SUBST(BUILD_PREFIX)
1156 BUILD_PREFIX_1=ignore-          AC_SUBST(BUILD_PREFIX_1)
1157 HOST_CC='$(CC)'                 AC_SUBST(HOST_CC)
1158 HOST_CFLAGS='$(ALL_CFLAGS)'     AC_SUBST(HOST_CFLAGS)
1159
1160 STMP_FIXINC=stmp-fixinc         AC_SUBST(STMP_FIXINC)
1161 STMP_FIXPROTO=stmp-fixproto     AC_SUBST(STMP_FIXPROTO)
1162
1163 # And these apply if build != host.
1164 if test x$build != x$host
1165 then
1166     BUILD_PREFIX=build-
1167     BUILD_PREFIX_1=build-
1168     HOST_CC='$(CC_FOR_BUILD)'
1169     HOST_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD) $(XCFLAGS)'
1170
1171     STMP_FIXINC=
1172     STMP_FIXPROTO=
1173 fi
1174
1175 # Expand extra_headers to include complete path.
1176 # This substitutes for lots of t-* files.
1177 extra_headers_list=
1178 if test "x$extra_headers" = x
1179 then true
1180 else
1181         # Prepend ${srcdir}/config/${cpu_type}/ to every entry in extra_headers.
1182         for file in $extra_headers;
1183         do
1184                 extra_headers_list="${extra_headers_list} \$(srcdir)/config/${cpu_type}/${file}"
1185         done
1186 fi
1187
1188 if test x$use_collect2 = xno; then
1189         use_collect2=
1190 fi
1191
1192 # Add a definition of USE_COLLECT2 if system wants one.
1193 if test x$use_collect2 != x
1194 then
1195         host_xm_defines="${host_xm_defines} USE_COLLECT2"
1196         xm_defines="${xm_defines} USE_COLLECT2"
1197 fi
1198
1199 # If we have gas in the build tree, make a link to it.
1200 if test -f ../gas/Makefile; then
1201         rm -f as; $symbolic_link ../gas/as-new$host_exeext as$host_exeext 2>/dev/null
1202 fi
1203
1204 # If we have nm and objdump in the build tree, make a link to them.
1205 if test -f ../binutils/Makefile; then
1206         rm -f nm; $symbolic_link ../binutils/nm-new$host_exeext nm$host_exeext 2>/dev/null
1207         rm -f objdump; $symbolic_link ../binutils/objdump$host_exeext objdump$host_exeext 2>/dev/null
1208 fi
1209
1210 # If we have ld in the build tree, make a link to it.
1211 if test -f ../ld/Makefile; then
1212         rm -f collect-ld; $symbolic_link ../ld/ld-new$host_exeext collect-ld$host_exeext 2>/dev/null
1213 fi
1214
1215 # Figure out what assembler we will be using.
1216 AC_MSG_CHECKING(what assembler to use)
1217 gcc_cv_as=
1218 gcc_cv_gas_major_version=
1219 gcc_cv_gas_minor_version=
1220 gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
1221 gcc_cv_as_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
1222 if test -x "$DEFAULT_ASSEMBLER"; then
1223         gcc_cv_as="$DEFAULT_ASSEMBLER"
1224 elif test -x "$AS"; then
1225         gcc_cv_as="$AS"
1226 elif test -x as$host_exeext; then
1227         # Build using assembler in the current directory.
1228         gcc_cv_as=./as$host_exeext
1229 elif test -f $gcc_cv_as_gas_srcdir/configure.in -a -f ../gas/Makefile; then
1230         # Single tree build which includes gas.
1231         for f in $gcc_cv_as_bfd_srcdir/configure $gcc_cv_as_gas_srcdir/configure $gcc_cv_as_gas_srcdir/configure.in $gcc_cv_as_gas_srcdir/Makefile.in
1232         do
1233 changequote(,)dnl
1234                 gcc_cv_gas_version=`grep '^VERSION=[0-9]*\.[0-9]*' $f`
1235 changequote([,])dnl
1236                 if test x$gcc_cv_gas_version != x; then
1237                         break
1238                 fi
1239         done
1240 changequote(,)dnl
1241         gcc_cv_gas_major_version=`expr "$gcc_cv_gas_version" : "VERSION=\([0-9]*\)"`
1242         gcc_cv_gas_minor_version=`expr "$gcc_cv_gas_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
1243         gcc_cv_gas_patch_version=`expr "$gcc_cv_gas_version" : "VERSION=[0-9]*\.[0-9]*\.\([0-9]*\)"`
1244 changequote([,])dnl
1245 fi
1246
1247 if test "x$gcc_cv_as" = x; then
1248         # Search the same directories that the installed compiler will
1249         # search.  Else we may find the wrong assembler and lose.  If we
1250         # do not find a suitable assembler binary, then try the user's
1251         # path.
1252         #
1253         # Also note we have to check MD_EXEC_PREFIX before checking the
1254         # user's path.  Unfortunately, there is no good way to get at the
1255         # value of MD_EXEC_PREFIX here.  So we do a brute force search
1256         # through all the known MD_EXEC_PREFIX values.  Ugh.  This needs
1257         # to be fixed as part of the make/configure rewrite too.
1258
1259         if test "x$exec_prefix" = xNONE; then
1260                 if test "x$prefix" = xNONE; then
1261                         test_prefix=/usr/local
1262                 else
1263                         test_prefix=$prefix
1264                 fi
1265         else
1266                 test_prefix=$exec_prefix
1267         fi
1268
1269         # If the loop below does not find an assembler, then use whatever
1270         # one we can find in the users's path.
1271         # user's path.
1272         if test "x$program_prefix" != xNONE; then
1273                 gcc_cv_as=${program_prefix}as$host_exeext
1274         else
1275                 gcc_cv_as=`echo as | sed ${program_transform_name}`$host_exeext
1276         fi
1277
1278         test_dirs="$test_prefix/lib/gcc-lib/$target_alias/$gcc_version \
1279                    $test_prefix/lib/gcc-lib/$target_alias \
1280                    /usr/lib/gcc/$target_alias/$gcc_version \
1281                    /usr/lib/gcc/$target_alias \
1282                    $test_prefix/$target_alias/bin/$target_alias/$gcc_version \
1283                    $test_prefix/$target_alias/bin"
1284
1285         if test x$host = x$target; then
1286             test_dirs="$test_dirs \
1287                    /usr/libexec \
1288                    /usr/ccs/gcc \
1289                    /usr/ccs/bin \
1290                    /udk/usr/ccs/bin \
1291                    /bsd43/usr/lib/cmplrs/cc \
1292                    /usr/cross64/usr/bin \
1293                    /usr/lib/cmplrs/cc \
1294                    /sysv/usr/lib/cmplrs/cc \
1295                    /svr4/usr/lib/cmplrs/cc \
1296                    /usr/bin"
1297         fi
1298
1299         for dir in $test_dirs; do
1300                 if test -x $dir/as$host_exeext; then
1301                         gcc_cv_as=$dir/as$host_exeext
1302                         break;
1303                 fi
1304         done
1305 fi
1306 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1307   AC_MSG_RESULT("newly built gas")
1308 else
1309   AC_MSG_RESULT($gcc_cv_as)
1310 fi
1311
1312 # Figure out what linker we will be using.
1313 AC_MSG_CHECKING(what linker to use)
1314 gcc_cv_ld=
1315 gcc_cv_gld_major_version=
1316 gcc_cv_gld_minor_version=
1317 gcc_cv_ld_gld_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/ld
1318 gcc_cv_ld_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
1319 if test -x "$DEFAULT_LINKER"; then
1320         gcc_cv_ld="$DEFAULT_LINKER"
1321 elif test -x "$LD"; then
1322         gcc_cv_ld="$LD"
1323 elif test -x ld$host_exeext; then
1324         # Build using linker in the current directory.
1325         gcc_cv_ld=./ld$host_exeext
1326 elif test -f $gcc_cv_ld_gld_srcdir/configure.in -a -f ../ld/Makefile; then
1327         # Single tree build which includes ld.
1328         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
1329         do
1330 changequote(,)dnl
1331                 gcc_cv_gld_version=`grep '^VERSION=[0-9]*\.[0-9]*' $f`
1332 changequote([,])dnl
1333                 if test x$gcc_cv_gld_version != x; then
1334                         break
1335                 fi
1336         done
1337 changequote(,)dnl
1338         gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
1339         gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
1340 changequote([,])dnl
1341 fi
1342
1343 if test "x$gcc_cv_ld" = x; then
1344         # Search the same directories that the installed compiler will
1345         # search.  Else we may find the wrong linker and lose.  If we
1346         # do not find a suitable linker binary, then try the user's
1347         # path.
1348         #
1349         # Also note we have to check MD_EXEC_PREFIX before checking the
1350         # user's path.  Unfortunately, there is no good way to get at the
1351         # value of MD_EXEC_PREFIX here.  So we do a brute force search
1352         # through all the known MD_EXEC_PREFIX values.  Ugh.  This needs
1353         # to be fixed as part of the make/configure rewrite too.
1354
1355         if test "x$exec_prefix" = xNONE; then
1356                 if test "x$prefix" = xNONE; then
1357                         test_prefix=/usr/local
1358                 else
1359                         test_prefix=$prefix
1360                 fi
1361         else
1362                 test_prefix=$exec_prefix
1363         fi
1364
1365         # If the loop below does not find an linker, then use whatever
1366         # one we can find in the users's path.
1367         # user's path.
1368         if test "x$program_prefix" != xNONE; then
1369                 gcc_cv_ld=${program_prefix}ld$host_exeext
1370         else
1371                 gcc_cv_ld=`echo ld | sed ${program_transform_name}`$host_exeext
1372         fi
1373
1374         test_dirs="$test_prefix/lib/gcc-lib/$target_alias/$gcc_version \
1375                    $test_prefix/lib/gcc-lib/$target_alias \
1376                    /usr/lib/gcc/$target_alias/$gcc_version \
1377                    /usr/lib/gcc/$target_alias \
1378                    $test_prefix/$target_alias/bin/$target_alias/$gcc_version \
1379                    $test_prefix/$target_alias/bin"
1380
1381         if test x$host = x$target; then
1382             test_dirs="$test_dirs \
1383                    /usr/libexec \
1384                    /usr/ccs/gcc \
1385                    /usr/ccs/bin \
1386                    /udk/usr/ccs/bin \
1387                    /bsd43/usr/lib/cmplrs/cc \
1388                    /usr/cross64/usr/bin \
1389                    /usr/lib/cmplrs/cc \
1390                    /sysv/usr/lib/cmplrs/cc \
1391                    /svr4/usr/lib/cmplrs/cc \
1392                    /usr/bin"
1393         fi
1394
1395         for dir in $test_dirs; do
1396                 if test -x $dir/ld$host_exeext; then
1397                         gcc_cv_ld=$dir/ld$host_exeext
1398                         break;
1399                 fi
1400         done
1401 fi
1402 if test x$gcc_cv_gld_major_version != x -a x$gcc_cv_gld_minor_version != x; then
1403   AC_MSG_RESULT("newly built ld")
1404 else
1405   AC_MSG_RESULT($gcc_cv_ld)
1406 fi
1407
1408 # Figure out what nm we will be using.
1409 AC_MSG_CHECKING(what nm to use)
1410 if test -x nm$host_exeext; then
1411         gcc_cv_nm=./nm$host_exeext
1412 elif test "x$program_prefix" != xNONE; then
1413         gcc_cv_nm=${program_prefix}nm$host_exeext
1414 else
1415         gcc_cv_nm=`echo nm | sed ${program_transform_name}`$host_exeext
1416 fi
1417 AC_MSG_RESULT($gcc_cv_nm)
1418
1419 # Figure out what objdump we will be using.
1420 AC_MSG_CHECKING(what objdump to use)
1421 if test -x objdump$host_exeext; then
1422         gcc_cv_objdump=./objdump$host_exeext
1423 elif test "x$program_prefix" != xNONE; then
1424         gcc_cv_objdump=${program_prefix}objdump$host_exeext
1425 else
1426         gcc_cv_objdump=`echo objdump | sed ${program_transform_name}`$host_exeext
1427 fi
1428 AC_MSG_RESULT($gcc_cv_objdump)
1429
1430 # Figure out what assembler alignment features are present.
1431 AC_MSG_CHECKING(assembler alignment features)
1432 gcc_cv_as_alignment_features=none
1433 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1434         # Gas version 2.6 and later support for .balign and .p2align.
1435         # bytes to skip when using .p2align.
1436         if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 6 -o "$gcc_cv_gas_major_version" -gt 2; then
1437                 gcc_cv_as_alignment_features=".balign and .p2align"
1438                 AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN)
1439         fi
1440         # Gas version 2.8 and later support specifying the maximum
1441         # bytes to skip when using .p2align.
1442         if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 8 -o "$gcc_cv_gas_major_version" -gt 2; then
1443                 gcc_cv_as_alignment_features=".p2align including maximum skip"
1444                 AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN)
1445         fi
1446 elif test x$gcc_cv_as != x; then
1447         # Check if we have .balign and .p2align
1448         echo ".balign  4" > conftest.s
1449         echo ".p2align  2" >> conftest.s
1450         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1451                 gcc_cv_as_alignment_features=".balign and .p2align"
1452                 AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN)
1453         fi
1454         rm -f conftest.s conftest.o
1455         # Check if specifying the maximum bytes to skip when
1456         # using .p2align is supported.
1457         echo ".p2align 4,,7" > conftest.s
1458         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1459                 gcc_cv_as_alignment_features=".p2align including maximum skip"
1460                 AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN)
1461         fi
1462         rm -f conftest.s conftest.o
1463 fi
1464 AC_MSG_RESULT($gcc_cv_as_alignment_features)
1465
1466 AC_MSG_CHECKING(assembler subsection support)
1467 gcc_cv_as_subsections=no
1468 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1469   if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 9 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
1470     gcc_cv_as_subsections="working .subsection -1"
1471   fi
1472 elif test x$gcc_cv_as != x; then
1473         # Check if we have .subsection
1474         echo ".subsection 1" > conftest.s
1475         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1476                 gcc_cv_as_subsections=".subsection"
1477                 if test x$gcc_cv_nm != x; then
1478                         cat > conftest.s <<EOF
1479 conftest_label1: .word 0
1480 .subsection -1
1481 conftest_label2: .word 0
1482 .previous
1483 EOF
1484                         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1485                                 $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
1486                                 $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
1487                                 if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1; then
1488                                         :
1489                                 else
1490                                         gcc_cv_as_subsections="working .subsection -1"
1491                                 fi
1492                         fi
1493                 fi
1494         fi
1495         rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1496 fi
1497 if test x"$gcc_cv_as_subsections" = x"working .subsection -1"; then
1498         AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
1499 [Define if your assembler supports .subsection and .subsection -1 starts
1500    emitting at the beginning of your section.])
1501 fi
1502 AC_MSG_RESULT($gcc_cv_as_subsections)
1503
1504 AC_MSG_CHECKING(assembler weak support)
1505 gcc_cv_as_weak=no
1506 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1507   if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 2 -o "$gcc_cv_gas_major_version" -gt 2; then
1508     gcc_cv_as_weak="yes"
1509   fi
1510 elif test x$gcc_cv_as != x; then
1511         # Check if we have .weak
1512         echo "  .weak foobar" > conftest.s
1513         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1514                 gcc_cv_as_weak="yes"
1515         fi
1516         rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1517 fi
1518 if test x"$gcc_cv_as_weak" = xyes; then
1519         AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])
1520 fi
1521 AC_MSG_RESULT($gcc_cv_as_weak)
1522
1523 AC_MSG_CHECKING(assembler hidden support)
1524 gcc_cv_as_hidden=no
1525 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1526   if test "$gcc_cv_gas_major_version" -eq 2     \
1527           -a "$gcc_cv_gas_minor_version" -eq 12 \
1528           -a "$gcc_cv_gas_patch_version" -ge 1  \
1529           -o "$gcc_cv_gas_major_version" -eq 2  \
1530           -a "$gcc_cv_gas_minor_version" -gt 12 \
1531           -o "$gcc_cv_gas_major_version" -gt 2  \
1532     && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
1533     gcc_cv_as_hidden="yes"
1534   fi
1535 elif test x$gcc_cv_as != x; then
1536         # Check if we have .hidden
1537         echo "  .hidden foobar" > conftest.s
1538         echo "foobar:" >> conftest.s
1539         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1540                 gcc_cv_as_hidden="yes"
1541         fi
1542         rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1543
1544         # GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
1545         # This is irritatingly difficult to feature test for.  Look for 
1546         # the date string after the version number.
1547         ld_ver=`$gcc_cv_ld --version 2>/dev/null | head -1`
1548         if echo "$ld_ver" | grep GNU > /dev/null; then
1549 changequote(,)dnl
1550                 ld_vers=`echo $ld_ver | sed -n 's,^.*[  ]\([0-9][0-9]*\.[0-9][0-9]*\(\|\.[0-9][0-9]*\)\)\([     ].*\|\)$,\1,p'`
1551                 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'`
1552                 if test 0"$ld_date" -lt 20020404; then
1553                         if test -n "$ld_date"; then
1554                                 # If there was date string, but was earlier than 2002-04-04, fail
1555                                 gcc_cv_as_hidden="no"
1556                         elif test -z "$ld_vers"; then
1557                                 # If there was no date string nor ld version number, something is wrong
1558                                 gcc_cv_as_hidden="no"
1559                         else
1560                                 ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
1561                                 ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
1562                                 ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
1563                                 test -z "$ld_vers_patch" && ld_vers_patch=0
1564                                 if test "$ld_vers_major" -lt 2; then
1565                                         gcc_cv_as_hidden="no"
1566                                 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
1567                                         gcc_cv_as_hidden="no"
1568                                 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 \
1569                                           -a "$ld_vers_patch" -eq 0; then
1570                                         gcc_cv_as_hidden="no"
1571                                 fi
1572                         fi
1573                 fi
1574 changequote([,])dnl
1575         fi
1576 fi
1577 if test x"$gcc_cv_as_hidden" = xyes; then
1578         AC_DEFINE(HAVE_GAS_HIDDEN, 1,
1579                 [Define if your assembler supports .hidden.])
1580 fi
1581 AC_MSG_RESULT($gcc_cv_as_hidden)
1582 libgcc_visibility=$gcc_cv_as_hidden
1583 AC_SUBST(libgcc_visibility)
1584
1585 AC_MSG_CHECKING(assembler leb128 support)
1586 gcc_cv_as_leb128=no
1587 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1588   if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 11 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
1589     gcc_cv_as_leb128="yes"
1590   fi
1591 elif test x$gcc_cv_as != x; then
1592         # Check if we have .[us]leb128, and support symbol arithmetic with it.
1593         cat > conftest.s <<EOF
1594         .data
1595         .uleb128 L2 - L1
1596 L1:
1597         .uleb128 1280
1598         .sleb128 -1010
1599 L2:
1600 EOF
1601         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1602                 gcc_cv_as_leb128="yes"
1603
1604                 # GAS versions before 2.11 do not support uleb128,
1605                 # despite appearing to.
1606                 # ??? There exists an elf-specific test that will crash
1607                 # the assembler.  Perhaps it's better to figure out whether
1608                 # arbitrary sections are supported and try the test.
1609                 as_ver=`$gcc_cv_as --version 2>/dev/null | head -1`
1610                 if echo "$as_ver" | grep GNU > /dev/null; then
1611 changequote(,)dnl
1612                         as_ver=`echo $as_ver | sed -e 's/GNU assembler \([0-9.][0-9.]*\).*/\1/'`
1613                         as_major=`echo $as_ver | sed 's/\..*//'`
1614                         as_minor=`echo $as_ver | sed 's/[^.]*\.\([0-9]*\).*/\1/'`
1615 changequote([,])dnl
1616                         if test $as_major -eq 2 -a $as_minor -lt 11; then
1617                                 gcc_cv_as_leb128="no"
1618                         fi
1619                 fi
1620         fi
1621         rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1622 fi
1623 if test x"$gcc_cv_as_leb128" = xyes; then
1624         AC_DEFINE(HAVE_AS_LEB128, 1,
1625                 [Define if your assembler supports .uleb128.])
1626 fi
1627 AC_MSG_RESULT($gcc_cv_as_leb128)
1628
1629 AC_MSG_CHECKING(assembler eh_frame optimization)
1630 gcc_cv_as_eh_frame=no
1631 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1632   if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 12 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
1633     gcc_cv_as_eh_frame="yes"
1634   fi
1635 elif test x$gcc_cv_as != x; then
1636         # Check if this is GAS.
1637         as_ver=`$gcc_cv_as --version < /dev/null 2> /dev/null | head -1`
1638         rm -f a.out 2> /dev/null
1639         if echo "$as_ver" | grep GNU > /dev/null; then
1640                 # Versions up to and including 2.11.0 may mis-optimize
1641                 # .eh_frame data.  Try something.
1642                 cat > conftest.s <<EOF
1643         .text
1644 .LFB1:
1645         .4byte  0
1646 .L1:
1647         .4byte  0
1648 .LFE1:
1649         .section        .eh_frame,"aw",@progbits
1650 __FRAME_BEGIN__:
1651         .4byte  .LECIE1-.LSCIE1
1652 .LSCIE1:
1653         .4byte  0x0
1654         .byte   0x1
1655         .ascii "z\0"
1656         .byte   0x1
1657         .byte   0x78
1658         .byte   0x1a
1659         .byte   0x0
1660         .byte   0x4
1661         .4byte  1
1662         .p2align 1
1663 .LECIE1:
1664 .LSFDE1:
1665         .4byte  .LEFDE1-.LASFDE1
1666 .LASFDE1:
1667         .4byte  .LASFDE1-__FRAME_BEGIN__
1668         .4byte  .LFB1
1669         .4byte  .LFE1-.LFB1
1670         .byte   0x4
1671         .4byte  .LFE1-.LFB1
1672         .byte   0x4
1673         .4byte  .L1-.LFB1
1674 .LEFDE1:
1675 EOF
1676                 cat > conftest.lit <<EOF
1677  0000 10000000 00000000 017a0001 781a0004  .........z..x...
1678  0010 01000000 12000000 18000000 00000000  ................
1679  0020 08000000 04080000 0044               .........D      
1680 EOF
1681                 cat > conftest.big <<EOF
1682  0000 00000010 00000000 017a0001 781a0004  .........z..x...
1683  0010 00000001 00000012 00000018 00000000  ................
1684  0020 00000008 04000000 0844               .........D      
1685 EOF
1686                 # If the assembler didn't choke, and we can objdump,
1687                 # and we got the correct data, then succeed.
1688                 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
1689                    && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
1690                       | tail -3 > conftest.got \
1691                    && { cmp conftest.lit conftest.got > /dev/null 2>&1 \
1692                         || cmp conftest.big conftest.got > /dev/null 2>&1; }
1693                 then
1694                         gcc_cv_as_eh_frame="yes"
1695                 else
1696                         gcc_cv_as_eh_frame="bad"
1697                         if $gcc_cv_as -o conftest.o --traditional-format /dev/null; then
1698                                 AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
1699         [Define if your assembler mis-optimizes .eh_frame data.])
1700                         fi
1701                 fi
1702         fi
1703         rm -f conftest.*
1704 fi
1705 AC_MSG_RESULT($gcc_cv_as_eh_frame)
1706
1707 AC_MSG_CHECKING(assembler section merging support)
1708 gcc_cv_as_shf_merge=no
1709 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1710   if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 12 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
1711     gcc_cv_as_shf_merge=yes
1712   fi
1713 elif test x$gcc_cv_as != x; then
1714         # Check if we support SHF_MERGE sections
1715         echo '.section .rodata.str, "aMS", @progbits, 1' > conftest.s
1716         if $gcc_cv_as --fatal-warnings -o conftest.o conftest.s > /dev/null 2>&1; then
1717                 gcc_cv_as_shf_merge=yes
1718         fi
1719         rm -f conftest.s conftest.o
1720 fi
1721 if test x"$gcc_cv_as_shf_merge" = xyes; then
1722         AC_DEFINE(HAVE_GAS_SHF_MERGE, 1,
1723 [Define if your assembler supports marking sections with SHF_MERGE flag.])
1724 fi
1725 AC_MSG_RESULT($gcc_cv_as_shf_merge)
1726
1727 AC_MSG_CHECKING(assembler thread-local storage support)
1728 gcc_cv_as_tls=no
1729 conftest_s=
1730 tls_first_major=
1731 tls_first_minor=
1732 case "$target" in
1733 changequote(,)dnl
1734   alpha*-*-*)
1735     conftest_s='
1736         .section ".tdata","awT",@progbits
1737 foo:    .long   25
1738         .text
1739         ldq     $27,__tls_get_addr($29)         !literal!1
1740         lda     $16,foo($29)                    !tlsgd!1
1741         jsr     $26,($27),__tls_get_addr        !lituse_tlsgd!1
1742         ldq     $27,__tls_get_addr($29)         !literal!2
1743         lda     $16,foo($29)                    !tlsldm!2
1744         jsr     $26,($27),__tls_get_addr        !lituse_tlsldm!2
1745         ldq     $1,foo($29)                     !gotdtprel
1746         ldah    $2,foo($29)                     !dtprelhi
1747         lda     $3,foo($2)                      !dtprello
1748         lda     $4,foo($29)                     !dtprel
1749         ldq     $1,foo($29)                     !gottprel
1750         ldah    $2,foo($29)                     !tprelhi
1751         lda     $3,foo($2)                      !tprello
1752         lda     $4,foo($29)                     !tprel'
1753         tls_first_major=2
1754         tls_first_minor=13
1755         ;;
1756   i[34567]86-*-*)
1757 changequote([,])dnl
1758     conftest_s='
1759         .section ".tdata","awT",@progbits
1760 foo:    .long   25
1761         .text
1762         movl    %gs:0, %eax
1763         leal    foo@TLSGD(,%ebx,1), %eax
1764         leal    foo@TLSLDM(%ebx), %eax
1765         leal    foo@DTPOFF(%eax), %edx
1766         movl    foo@GOTTPOFF(%ebx), %eax
1767         subl    foo@GOTTPOFF(%ebx), %eax
1768         movl    $foo@TPOFF, %eax
1769         subl    $foo@TPOFF, %eax
1770         leal    foo@NTPOFF(%ecx), %eax'
1771         tls_first_major=2
1772         tls_first_minor=13
1773         ;;
1774   ia64-*-*)
1775     conftest_s='
1776         .section ".tdata","awT",@progbits
1777 foo:    data8   25
1778         .text
1779         addl    r16 = @ltoff(@dtpmod(foo#)), gp
1780         addl    r17 = @ltoff(@dtprel(foo#)), gp
1781         addl    r18 = @ltoff(@tprel(foo#)), gp
1782         addl    r19 = @dtprel(foo#), gp
1783         adds    r21 = @dtprel(foo#), r13
1784         movl    r23 = @dtprel(foo#)
1785         addl    r20 = @tprel(foo#), gp
1786         adds    r22 = @tprel(foo#), r13
1787         movl    r24 = @tprel(foo#)'
1788         tls_first_major=2
1789         tls_first_minor=13
1790         ;;
1791 esac
1792 if test -z "$tls_first_major"; then
1793   :
1794 elif test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x
1795 then
1796   if test "$gcc_cv_gas_major_version" -eq "$tls_first_major" \
1797           -a "$gcc_cv_gas_minor_version" -ge "$tls_first_minor" \
1798           -o "$gcc_cv_gas_major_version" -gt "$tls_first_major"; then
1799     gcc_cv_as_tls=yes
1800   fi
1801 elif test x$gcc_cv_as != x; then
1802   echo "$conftest_s" > conftest.s
1803   if $gcc_cv_as --fatal-warnings -o conftest.o conftest.s > /dev/null 2>&1
1804   then
1805     gcc_cv_as_tls=yes
1806   fi
1807   rm -f conftest.s conftest.o
1808 fi
1809 if test "$gcc_cv_as_tls" = yes; then
1810   AC_DEFINE(HAVE_AS_TLS, 1,
1811             [Define if your assembler supports thread-local storage.])
1812 fi
1813 AC_MSG_RESULT($gcc_cv_as_tls)
1814
1815 case "$target" in
1816   # All TARGET_ABI_OSF targets.
1817   alpha*-*-osf* | alpha*-*-linux* | alpha*-*-*bsd*)
1818     AC_CACHE_CHECK([assembler supports explicit relocations],
1819         gcc_cv_as_explicit_relocs, [
1820         gcc_cv_as_explicit_relocs=unknown
1821         if test x$gcc_cv_gas_major_version != x \
1822                 -a x$gcc_cv_gas_minor_version != x
1823         then
1824            if test "$gcc_cv_gas_major_version" -eq 2 \
1825                    -a "$gcc_cv_gas_minor_version" -ge 12 \
1826                    -o "$gcc_cv_gas_major_version" -gt 2; then
1827               gcc_cv_as_explicit_relocs=yes
1828            fi
1829         elif test x$gcc_cv_as != x; then
1830             cat > conftest.s << 'EOF'
1831         .set nomacro
1832         .text
1833         extbl   $3, $2, $3      !lituse_bytoff!1
1834         ldq     $2, a($29)      !literal!1
1835         ldq     $4, b($29)      !literal!2
1836         ldq_u   $3, 0($2)       !lituse_base!1
1837         ldq     $27, f($29)     !literal!5
1838         jsr     $26, ($27), f   !lituse_jsr!5
1839         ldah    $29, 0($26)     !gpdisp!3
1840         lda     $0, c($29)      !gprel
1841         ldah    $1, d($29)      !gprelhigh
1842         lda     $1, d($1)       !gprellow
1843         lda     $29, 0($29)     !gpdisp!3
1844 EOF
1845             if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1846                 gcc_cv_as_explicit_relocs=yes
1847             else
1848                 gcc_cv_as_explicit_relocs=no
1849             fi
1850             rm -f conftest.s conftest.o
1851         fi
1852     ])
1853     if test "x$gcc_cv_as_explicit_relocs" = xyes; then
1854         AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
1855                 [Define if your assembler supports explicit relocations.])
1856     fi
1857     ;;
1858   sparc*-*-*)
1859     AC_CACHE_CHECK([assembler .register pseudo-op support],
1860         gcc_cv_as_register_pseudo_op, [
1861         gcc_cv_as_register_pseudo_op=unknown
1862         if test x$gcc_cv_as != x; then
1863             # Check if we have .register
1864             echo ".register %g2, #scratch" > conftest.s
1865             if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1866                 gcc_cv_as_register_pseudo_op=yes
1867             else
1868                 gcc_cv_as_register_pseudo_op=no
1869             fi
1870             rm -f conftest.s conftest.o
1871         fi
1872     ])
1873     if test "x$gcc_cv_as_register_pseudo_op" = xyes; then
1874         AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
1875                 [Define if your assembler supports .register.])
1876     fi
1877
1878     AC_CACHE_CHECK([assembler supports -relax],
1879         gcc_cv_as_relax_opt, [
1880         gcc_cv_as_relax_opt=unknown
1881         if test x$gcc_cv_as != x; then
1882             # Check if gas supports -relax
1883             echo ".text" > conftest.s
1884             if $gcc_cv_as -relax -o conftest.o conftest.s > /dev/null 2>&1; then
1885                 gcc_cv_as_relax_opt=yes
1886             else
1887                 gcc_cv_as_relax_opt=no
1888             fi
1889             rm -f conftest.s conftest.o
1890         fi
1891     ])
1892     if test "x$gcc_cv_as_relax_opt" = xyes; then
1893         AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
1894                 [Define if your assembler supports -relax option.])
1895     fi
1896
1897     AC_CACHE_CHECK([assembler and linker support unaligned pc related relocs],
1898         gcc_cv_as_sparc_ua_pcrel, [
1899         gcc_cv_as_sparc_ua_pcrel=unknown
1900         if test x$gcc_cv_as != x -a x$gcc_cv_ld != x; then
1901             gcc_cv_as_sparc_ua_pcrel=no
1902             echo ".text; foo: nop; .data; .align 4; .byte 0; .uaword %r_disp32(foo)" > conftest.s
1903             if $gcc_cv_as -K PIC -o conftest.o conftest.s > /dev/null 2>&1 \
1904                && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
1905                 gcc_cv_as_sparc_ua_pcrel=yes
1906             fi
1907             rm -f conftest.s conftest.o conftest
1908         fi
1909     ])
1910     if test "x$gcc_cv_as_sparc_ua_pcrel" = xyes; then
1911         AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
1912                 [Define if your assembler and linker support unaligned PC relative relocs.])
1913     fi
1914
1915     AC_CACHE_CHECK([assembler and linker support unaligned pc related relocs against hidden symbols],
1916         gcc_cv_as_sparc_ua_pcrel_hidden, [
1917         if test "x$gcc_cv_as_sparc_ua_pcrel" = xyes; then
1918             gcc_cv_as_sparc_ua_pcrel_hidden=unknown
1919             if test x$gcc_cv_objdump != x; then
1920                 gcc_cv_as_sparc_ua_pcrel_hidden=no
1921                 echo ".data; .align 4; .byte 0x31; .uaword %r_disp32(foo)" > conftest.s
1922                 echo ".byte 0x32, 0x33, 0x34; .global foo; .hidden foo" >> conftest.s
1923                 echo "foo: .skip 4" >> conftest.s
1924                 if $gcc_cv_as -K PIC -o conftest.o conftest.s > /dev/null 2>&1 \
1925                    && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
1926                    && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
1927                       | grep ' 31000000 07323334' > /dev/null 2>&1; then
1928                     if $gcc_cv_objdump -R conftest 2> /dev/null \
1929                        | grep 'DISP32' > /dev/null 2>&1; then
1930                         :
1931                     else
1932                         gcc_cv_as_sparc_ua_pcrel_hidden=yes
1933                     fi
1934                 fi
1935             fi
1936             rm -f conftest.s conftest.o conftest
1937         else
1938             gcc_cv_as_sparc_ua_pcrel_hidden="$gcc_cv_as_sparc_ua_pcrel"
1939         fi
1940     ])
1941     if test "x$gcc_cv_as_sparc_ua_pcrel_hidden" = xyes; then
1942         AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
1943                 [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])
1944     fi
1945
1946     if test "x$gcc_cv_as_flags64" != xno; then
1947         AC_CACHE_CHECK([for assembler offsetable %lo() support],
1948             gcc_cv_as_offsetable_lo10, [
1949             gcc_cv_as_offsetable_lo10=unknown
1950             if test "x$gcc_cv_as" != x; then
1951                 # Check if assembler has offsetable %lo()
1952                 echo "or %g1, %lo(ab) + 12, %g1" > conftest.s
1953                 echo "or %g1, %lo(ab + 12), %g1" > conftest1.s
1954                 if $gcc_cv_as $gcc_cv_as_flags64 -o conftest.o conftest.s \
1955                         > /dev/null 2>&1 &&
1956                    $gcc_cv_as $gcc_cv_as_flags64 -o conftest1.o conftest1.s \
1957                         > /dev/null 2>&1; then
1958                     if cmp conftest.o conftest1.o > /dev/null 2>&1; then
1959                         gcc_cv_as_offsetable_lo10=no
1960                     else
1961                         gcc_cv_as_offsetable_lo10=yes
1962                     fi
1963                 else
1964                     gcc_cv_as_offsetable_lo10=no
1965                 fi
1966                 rm -f conftest.s conftest.o conftest1.s conftest1.o
1967             fi
1968         ])
1969         if test "x$gcc_cv_as_offsetable_lo10" = xyes; then
1970             AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
1971                 [Define if your assembler supports offsetable %lo().])
1972         fi
1973     fi
1974
1975     ;;
1976
1977 changequote(,)dnl
1978   i[34567]86-*-* | x86_64-*-*)
1979 changequote([,])dnl
1980     AC_MSG_CHECKING(assembler instructions)
1981     gcc_cv_as_instructions=
1982     if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1983       if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 9 -o "$gcc_cv_gas_major_version" -gt 2; then
1984         gcc_cv_as_instructions="filds fists"
1985       fi
1986     elif test x$gcc_cv_as != x; then
1987         set "filds fists" "filds mem; fists mem"
1988         while test $# -gt 0
1989         do
1990                 echo "$2" > conftest.s
1991                 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1992                         gcc_cv_as_instructions=${gcc_cv_as_instructions}$1" "
1993                 fi
1994                 shift 2
1995         done
1996         rm -f conftest.s conftest.o
1997     fi
1998     if test x"$gcc_cv_as_instructions" != x; then
1999         AC_DEFINE_UNQUOTED(HAVE_GAS_`echo "$gcc_cv_as_instructions" | sed -e 's/ $//' | tr '[a-z ]' '[A-Z_]'`)
2000     fi
2001     AC_MSG_RESULT($gcc_cv_as_instructions)
2002
2003     AC_MSG_CHECKING(assembler GOTOFF in data directives)
2004     gcc_cv_as_gotoff_in_data=no
2005     if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x
2006     then
2007       if test "$gcc_cv_gas_major_version" -eq 2 \
2008          -a "$gcc_cv_gas_minor_version" -ge 11 \
2009          -o "$gcc_cv_gas_major_version" -gt 2; then
2010         gcc_cv_as_gotoff_in_data=yes
2011       fi
2012     elif test x$gcc_cv_as != x; then
2013         cat > conftest.s <<EOF
2014         .text
2015 .L0:
2016         nop
2017         .data
2018         .long .L0@GOTOFF
2019 EOF
2020         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
2021           gcc_cv_as_gotoff_in_data=yes
2022         fi
2023     fi
2024     AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
2025       [`if test $gcc_cv_as_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
2026       [Define true if the assembler supports '.long foo@GOTOFF'.])
2027     AC_MSG_RESULT($gcc_cv_as_gotoff_in_data)
2028     ;;
2029 esac
2030
2031 AC_MSG_CHECKING(assembler dwarf2 debug_line support)
2032 gcc_cv_as_dwarf2_debug_line=no
2033 # ??? Not all targets support dwarf2 debug_line, even within a version
2034 # of gas.  Moreover, we need to emit a valid instruction to trigger any
2035 # info to the output file.  So, as supported targets are added to gas 2.11,
2036 # add some instruction here to (also) show we expect this might work.
2037 # ??? Once 2.11 is released, probably need to add first known working
2038 # version to the per-target configury.
2039 case "$target" in
2040   i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-* | m68*-*-* | x86_64*-*-* | hppa*-*-*)
2041     insn="nop"
2042     ;;
2043   ia64*-*-*)
2044     insn="nop 0"
2045     ;;
2046   esac
2047 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x;
2048 then
2049   if test "$gcc_cv_gas_major_version" -eq 2 \
2050         -a "$gcc_cv_gas_minor_version" -ge 11 \
2051         -o "$gcc_cv_gas_major_version" -gt 2 \
2052      && grep 'obj_format = elf' ../gas/Makefile > /dev/null \
2053      && test x"$insn" != x ; then
2054     gcc_cv_as_dwarf2_debug_line="yes"
2055   fi
2056 elif test x$gcc_cv_as != x -a x"$insn" != x ; then
2057         echo '  .file 1 "conftest.s"' > conftest.s
2058         echo '  .loc 1 3 0' >> conftest.s
2059         echo "  $insn" >> conftest.s
2060         # ??? This fails with non-gnu grep.
2061         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
2062            && grep debug_line conftest.o > /dev/null 2>&1 ; then
2063                 # The .debug_line file table must be in the exact order that
2064                 # we specified the files, since these indices are also used
2065                 # by DW_AT_decl_file.  Approximate this test by testing if
2066                 # the assembler bitches if the same index is assigned twice.
2067                 echo '  .file 1 "foo.s"' > conftest.s
2068                 echo '  .file 1 "bar.s"' >> conftest.s
2069                 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1
2070                 then
2071                   gcc_cv_as_dwarf2_debug_line="no"
2072                 else
2073                   gcc_cv_as_dwarf2_debug_line="yes"
2074                 fi
2075         fi
2076         rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
2077 fi
2078 if test x"$gcc_cv_as_dwarf2_debug_line" = xyes; then
2079         AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
2080 [Define if your assembler supports dwarf2 .file/.loc directives,
2081    and preserves file table indices exactly as given.])
2082 fi
2083 AC_MSG_RESULT($gcc_cv_as_dwarf2_debug_line)
2084
2085 AC_MSG_CHECKING(assembler --gdwarf2 support)
2086 gcc_cv_as_gdwarf2_flag=no
2087 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x;
2088 then
2089   if test "$gcc_cv_gas_major_version" -eq 2 \
2090         -a "$gcc_cv_gas_minor_version" -ge 11 \
2091         -o "$gcc_cv_gas_major_version" -gt 2 \
2092      && grep 'obj_format = elf' ../gas/Makefile > /dev/null \
2093      && test x"$insn" != x ; then
2094     gcc_cv_as_gdwarf2_debug_flag="yes"
2095   fi
2096 elif test x$gcc_cv_as != x -a x"$insn" != x ; then
2097         echo '' > conftest.s
2098         # ??? This fails with non-gnu grep.
2099         if $gcc_cv_as --gdwarf2 -o conftest.o conftest.s > /dev/null 2>&1
2100           then
2101           gcc_cv_as_gdwarf2_flag="yes"
2102         fi
2103         rm -f conftest.s conftest.o
2104 fi
2105 if test x"$gcc_cv_as_gdwarf2_flag" = xyes; then
2106         AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
2107 [Define if your assembler supports the --gdwarf2 option.])
2108 fi
2109 AC_MSG_RESULT($gcc_cv_as_gdwarf2_flag)
2110
2111 AC_MSG_CHECKING(assembler --gstabs support)
2112 gcc_cv_as_gstabs_flag=no
2113 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x;
2114 then
2115   if test "$gcc_cv_gas_major_version" -eq 2 \
2116         -a "$gcc_cv_gas_minor_version" -ge 11 \
2117         -o "$gcc_cv_gas_major_version" -gt 2 \
2118      && grep 'obj_format = elf' ../gas/Makefile > /dev/null \
2119      && test x"$insn" != x ; then
2120     gcc_cv_as_gstabs_debug_flag="yes"
2121   fi
2122 elif test x$gcc_cv_as != x -a x"$insn" != x ; then
2123         echo '' > conftest.s
2124         # ??? This fails with non-gnu grep.
2125         if $gcc_cv_as --gstabs -o conftest.o conftest.s > /dev/null 2>&1 ; then
2126           gcc_cv_as_gstabs_flag="yes"
2127         fi
2128         rm -f conftest.s conftest.o
2129 fi
2130 if test x"$gcc_cv_as_gstabs_flag" = xyes; then
2131         AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
2132 [Define if your assembler supports the --gstabs option.])
2133 fi
2134 AC_MSG_RESULT($gcc_cv_as_gstabs_flag)
2135
2136 AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
2137 gcc_cv_ld_eh_frame_hdr=no
2138 if test x$gcc_cv_gld_major_version != x -a x$gcc_cv_gld_minor_version != x; then
2139   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 && grep 'EMUL = elf' ../ld/Makefile > /dev/null; then
2140     gcc_cv_ld_eh_frame_hdr=yes
2141   fi
2142 elif test x$gcc_cv_ld != x; then
2143         # Check if linker supports --eh-frame-hdr option
2144         if $gcc_cv_ld --help 2>/dev/null | grep eh-frame-hdr > /dev/null; then
2145                 gcc_cv_ld_eh_frame_hdr=yes
2146         fi
2147 fi
2148 if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
2149         AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
2150 [Define if your linker supports --eh-frame-hdr option.])
2151 fi
2152 AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
2153
2154 if test "$prefix" != "/usr" && test "$prefix" != "/usr/local" ; then
2155   AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include")
2156 fi
2157
2158 # Figure out what language subdirectories are present.
2159 # Look if the user specified --enable-languages="..."; if not, use
2160 # the environment variable $LANGUAGES if defined. $LANGUAGES might
2161 # go away some day.
2162 # NB:  embedded tabs in this IF block -- do not untabify
2163 if test x"${enable_languages+set}" != xset; then
2164         if test x"${LANGUAGES+set}" = xset; then
2165                 enable_languages="${LANGUAGES}"
2166                 AC_MSG_WARN([setting LANGUAGES is deprecated, use --enable-languages instead])
2167
2168         else
2169                 enable_languages=all
2170         fi
2171 else
2172         if test x"${enable_languages}" = x;
2173         then
2174                 AC_MSG_ERROR([--enable-languages needs at least one language argument])
2175         fi
2176 fi
2177 enable_languages=`echo "${enable_languages}" | sed -e 's/[[     ,]][[   ,]]*/,/g' -e 's/,$//'`
2178
2179 # First scan to see if an enabled language requires some other language.
2180 # We assume that a given config-lang.in will list all the language
2181 # front ends it requires, even if some are required indirectly.
2182 for lang in ${srcdir}/*/config-lang.in ..
2183 do
2184    case $lang in
2185     ..)
2186        ;;
2187     # The odd quoting in the next line works around
2188     # an apparent bug in bash 1.12 on linux.
2189 changequote(,)dnl
2190     ${srcdir}/[*]/config-lang.in)
2191        ;;
2192     *)
2193        lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^      ]*\).*$,\1,p' $lang`
2194        this_lang_requires=`sed -n -e 's,^lang_requires=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^lang_requires=\([^    ]*\).*$,\1,p' $lang`
2195        for other in $this_lang_requires
2196        do
2197           case ,${enable_languages}, in
2198            *,$other,*)
2199               ;;
2200            *,all,*)
2201               ;;
2202            *,$lang_alias,*)
2203               enable_languages="$enable_languages,$other"
2204               ;;
2205           esac
2206        done
2207        ;;
2208 changequote([,])dnl
2209    esac
2210 done
2211
2212 remaining_languages=${enable_languages}
2213 subdirs=
2214 for lang in ${srcdir}/*/config-lang.in ..
2215 do
2216         case $lang in
2217         ..) ;;
2218         # The odd quoting in the next line works around
2219         # an apparent bug in bash 1.12 on linux.
2220 changequote(,)dnl
2221         ${srcdir}/[*]/config-lang.in) ;;
2222         *)
2223           lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^   ]*\).*$,\1,p' $lang`
2224           this_lang_libs=`sed -n -e 's,^target_libs=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^target_libs=\([^         ]*\).*$,\1,p' $lang`
2225           build_by_default=`sed -n -e 's,^build_by_default=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^build_by_default=\([^     ]*\).*$,\1,p' $lang`
2226           if test "x$lang_alias" = x
2227           then
2228                 echo "$lang doesn't set \$language." 1>&2
2229                 exit 1
2230           fi
2231           case ${build_by_default},${enable_languages}, in
2232           *,$lang_alias,*) add_this_lang=yes ;;
2233           no,*) add_this_lang=no ;;
2234           *,all,*) add_this_lang=yes ;;
2235           *) add_this_lang=no ;;
2236           esac
2237           if test x"${add_this_lang}" = xyes; then
2238                 remaining_languages=`echo $remaining_languages | sed -e s/${lang_alias}//g`
2239                 case $lang in
2240                     ${srcdir}/ada/config-lang.in)
2241                         if test x$have_gnat = xyes ; then
2242                                 subdirs="$subdirs `echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
2243                         fi
2244                         ;;
2245                     *)
2246                         subdirs="$subdirs `echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
2247                         ;;
2248                 esac
2249           fi
2250           ;;
2251 changequote([,])dnl
2252         esac
2253 done
2254
2255 remaining_languages_check=`echo $remaining_languages | sed -e 's/,//g' -e 's/^c$//'g`
2256 if test "xxx$remaining_languages_check" != "xxx" -a "xxx$remaining_languages_check" != "xxxall" ; then
2257     remaining_languages_clean=`echo $remaining_languages | sed -e 's/^c,//' -e 's/,c,/,/' -e 's/,c$//'  -e 's/^c$//' -e 's/,,*/,/g' -e 's/^,//g' -e 's/,$//g' `
2258     echo "Language alias(es) not found: $remaining_languages_clean" 
2259     echo "Refer to the configure instructions in the doc directory"
2260     exit 1
2261 fi
2262
2263 # Make gthr-default.h if we have a thread file.
2264 gthread_flags=
2265 if test $thread_file != single; then
2266     rm -f gthr-default.h
2267     echo "#include \"gthr-${thread_file}.h\"" > gthr-default.h
2268     gthread_flags=-DHAVE_GTHR_DEFAULT
2269 fi
2270 AC_SUBST(gthread_flags)
2271
2272 # Find out what GC implementation we want, or may, use.
2273 AC_ARG_WITH(gc,
2274 [  --with-gc={simple,page} choose the garbage collection mechanism to use
2275                           with the compiler],
2276 [case "$withval" in
2277   simple | page)
2278     GGC=ggc-$withval
2279     ;;
2280   *)
2281     AC_MSG_ERROR([$withval is an invalid option to --with-gc])
2282     ;;
2283 esac],
2284 [GGC=ggc-page])
2285 AC_SUBST(GGC)
2286 echo "Using $GGC for garbage collection."
2287
2288 # Use the system's zlib library.
2289 zlibdir=-L../zlib
2290 zlibinc="-I\$(srcdir)/../zlib"
2291 AC_ARG_WITH(system-zlib,
2292 [  --with-system-zlib      use installed libz],
2293 zlibdir=
2294 zlibinc=
2295 )
2296 AC_SUBST(zlibdir)
2297 AC_SUBST(zlibinc)
2298
2299 dnl Very limited version of automake's enable-maintainer-mode
2300
2301 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
2302   dnl maintainer-mode is disabled by default
2303   AC_ARG_ENABLE(maintainer-mode,
2304 [  --enable-maintainer-mode
2305                           enable make rules and dependencies not useful
2306                           (and sometimes confusing) to the casual installer],
2307       maintainer_mode=$enableval,
2308       maintainer_mode=no)
2309
2310 AC_MSG_RESULT($maintainer_mode)
2311
2312 if test "$maintainer_mode" = "yes"; then
2313   MAINT=''
2314 else
2315   MAINT='#'
2316 fi
2317 AC_SUBST(MAINT)dnl
2318
2319 # With Setjmp/Longjmp based exception handling.
2320 AC_ARG_ENABLE(sjlj-exceptions,
2321 [  --enable-sjlj-exceptions
2322                           arrange to use setjmp/longjmp exception handling],
2323 [sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi`
2324 AC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj,
2325   [Define 0/1 to force the choice for exception handling model.])])
2326
2327 # Make empty files to contain the specs and options for each language.
2328 # Then add #include lines to for a compiler that has specs and/or options.
2329
2330 lang_specs_files=
2331 lang_options_files=
2332 lang_tree_files=
2333 for subdir in . $subdirs
2334 do
2335         if test -f $srcdir/$subdir/lang-specs.h; then
2336             lang_specs_files="$lang_specs_files $srcdir/$subdir/lang-specs.h"
2337         fi
2338         if test -f $srcdir/$subdir/lang-options.h; then
2339             lang_options_files="$lang_options_files $srcdir/$subdir/lang-options.h"
2340         fi
2341         if test -f $srcdir/$subdir/$subdir-tree.def; then
2342             lang_tree_files="$lang_tree_files $srcdir/$subdir/$subdir-tree.def"
2343         fi
2344 done
2345
2346 # These (without "all_") are set in each config-lang.in.
2347 # `language' must be a single word so is spelled singularly.
2348 all_languages=
2349 all_boot_languages=
2350 all_compilers=
2351 all_stagestuff=
2352 all_outputs='Makefile intl/Makefile fixinc/Makefile gccbug mklibgcc mkheaders'
2353 # List of language makefile fragments.
2354 all_lang_makefiles=
2355 # Files for gengtype
2356 all_gtfiles="$config_gtfiles"
2357
2358 # Add the language fragments.
2359 # Languages are added via two mechanisms.  Some information must be
2360 # recorded in makefile variables, these are defined in config-lang.in.
2361 # We accumulate them and plug them into the main Makefile.
2362 # The other mechanism is a set of hooks for each of the main targets
2363 # like `clean', `install', etc.
2364
2365 language_fragments="Make-lang"
2366 language_hooks="Make-hooks"
2367
2368 for s in .. $subdirs
2369 do
2370         if test $s != ".."
2371         then
2372                 language=
2373                 boot_language=
2374                 compilers=
2375                 stagestuff=
2376                 outputs=
2377                 gtfiles=
2378                 . ${srcdir}/$s/config-lang.in
2379                 if test "x$language" = x
2380                 then
2381                         echo "${srcdir}/$s/config-lang.in doesn't set \$language." 1>&2
2382                         exit 1
2383                 fi
2384                 all_lang_makefiles="$all_lang_makefiles ${srcdir}/$s/Make-lang.in"
2385                 if test -f ${srcdir}/$s/Makefile.in
2386                 then all_lang_makefiles="$all_lang_makefiles ${srcdir}/$s/Makefile.in"
2387                 fi
2388                 all_languages="$all_languages $language"
2389                 if test "x$boot_language" = xyes
2390                 then
2391                         all_boot_languages="$all_boot_languages $language"
2392                 fi
2393                 all_compilers="$all_compilers $compilers"
2394                 all_stagestuff="$all_stagestuff $stagestuff"
2395                 all_outputs="$all_outputs $outputs"
2396                 all_gtfiles="$all_gtfiles $gtfiles"
2397         fi
2398 done
2399
2400 check_languages=
2401 for language in .. $all_languages
2402 do
2403         if test $language != ".."
2404         then
2405                 check_languages="$check_languages check-$language"
2406         fi
2407 done
2408
2409 # Since we can't use `::' targets, we link each language in
2410 # with a set of hooks, reached indirectly via lang.${target}.
2411
2412 rm -f Make-hooks
2413 touch Make-hooks
2414 target_list="all.build all.cross start.encap rest.encap \
2415         info dvi generated-manpages \
2416         install-normal install-common install-info install-man \
2417         uninstall \
2418         mostlyclean clean distclean extraclean maintainer-clean \
2419         stage1 stage2 stage3 stage4"
2420 for t in $target_list
2421 do
2422         x=
2423         for lang in .. $all_languages
2424         do
2425                 if test $lang != ".."; then
2426                         x="$x $lang.$t"
2427                 fi
2428         done
2429         echo "lang.$t: $x" >> Make-hooks
2430 done
2431
2432 # Create .gdbinit.
2433
2434 echo "dir ." > .gdbinit
2435 echo "dir ${srcdir}" >> .gdbinit
2436 if test x$gdb_needs_out_file_path = xyes
2437 then
2438         echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
2439 fi
2440 if test "x$subdirs" != x; then
2441         for s in $subdirs
2442         do
2443                 echo "dir ${srcdir}/$s" >> .gdbinit
2444         done
2445 fi
2446 echo "source ${srcdir}/gdbinit.in" >> .gdbinit
2447
2448 # Define variables host_canonical and build_canonical
2449 # because some Cygnus local changes in the Makefile depend on them.
2450 build_canonical=${build}
2451 host_canonical=${host}
2452 target_subdir=
2453 if test "${host}" != "${target}" ; then
2454     target_subdir=${target_alias}/
2455 fi
2456 AC_SUBST(build_canonical)
2457 AC_SUBST(host_canonical)
2458 AC_SUBST(target_subdir)
2459         
2460 # If $(exec_prefix) exists and is not the same as $(prefix), then compute an
2461 # absolute path for gcc_tooldir based on inserting the number of up-directory
2462 # movements required to get from $(exec_prefix) to $(prefix) into the basic
2463 # $(libsubdir)/@(unlibsubdir) based path.
2464 # Don't set gcc_tooldir to tooldir since that's only passed in by the toplevel
2465 # make and thus we'd get different behavior depending on where we built the
2466 # sources.
2467 if test x$exec_prefix = xNONE -o x$exec_prefix = x$prefix; then
2468     gcc_tooldir='$(libsubdir)/$(unlibsubdir)/../$(target_alias)'
2469 else
2470 changequote(<<, >>)dnl
2471 # An explanation of the sed strings:
2472 #  -e 's|^\$(prefix)||'   matches and eliminates 'prefix' from 'exec_prefix'
2473 #  -e 's|/$||'            match a trailing forward slash and eliminates it
2474 #  -e 's|^[^/]|/|'        forces the string to start with a forward slash (*)
2475 #  -e 's|/[^/]*|../|g'    replaces each occurrence of /<directory> with ../
2476 #
2477 # (*) Note this pattern overwrites the first character of the string
2478 # with a forward slash if one is not already present.  This is not a
2479 # problem because the exact names of the sub-directories concerned is
2480 # unimportant, just the number of them matters.
2481 #
2482 # The practical upshot of these patterns is like this:
2483 #
2484 #  prefix     exec_prefix        result
2485 #  ------     -----------        ------
2486 #   /foo        /foo/bar          ../
2487 #   /foo/       /foo/bar          ../
2488 #   /foo        /foo/bar/         ../
2489 #   /foo/       /foo/bar/         ../
2490 #   /foo        /foo/bar/ugg      ../../
2491 #
2492     dollar='$$'
2493     gcc_tooldir="\$(libsubdir)/\$(unlibsubdir)/\`echo \$(exec_prefix) | sed -e 's|^\$(prefix)||' -e 's|/\$(dollar)||' -e 's|^[^/]|/|' -e 's|/[^/]*|../|g'\`\$(target_alias)"
2494 changequote([, ])dnl
2495 fi
2496 AC_SUBST(gcc_tooldir)
2497 AC_SUBST(dollar)
2498
2499 # Find a directory in which to install a shared libgcc.
2500
2501 AC_ARG_ENABLE(version-specific-runtime-libs,
2502 [  --enable-version-specific-runtime-libs
2503                           specify that runtime libraries should be
2504                           installed in a compiler-specific directory])
2505
2506 AC_ARG_WITH(slibdir,
2507 [  --with-slibdir=DIR      shared libraries in DIR [LIBDIR]],
2508 slibdir="$with_slibdir",
2509 if test "${enable_version_specific_runtime_libs+set}" = set; then
2510   slibdir='$(libsubdir)'
2511 elif test "$host" != "$target"; then
2512   slibdir='$(build_tooldir)/lib'
2513 else
2514   slibdir='$(libdir)'
2515 fi)
2516 AC_SUBST(slibdir)
2517
2518 # Nothing to do for FLOAT_H, float_format already handled.
2519 objdir=`${PWDCMD-pwd}`
2520 AC_SUBST(objdir)
2521
2522 # Process the language and host/target makefile fragments.
2523 ${CONFIG_SHELL-/bin/sh} $srcdir/configure.frag $srcdir "$subdirs" "$dep_host_xmake_file" "$dep_tmake_file"
2524
2525 # Substitute configuration variables
2526 AC_SUBST(subdirs)
2527 AC_SUBST(all_boot_languages)
2528 AC_SUBST(all_compilers)
2529 AC_SUBST(all_gtfiles)
2530 AC_SUBST(all_lang_makefiles)
2531 AC_SUBST(all_languages)
2532 AC_SUBST(all_stagestuff)
2533 AC_SUBST(build_exeext)
2534 AC_SUBST(build_install_headers_dir)
2535 AC_SUBST(build_xm_file_list)
2536 AC_SUBST(build_xm_file)
2537 AC_SUBST(build_xm_defines)
2538 AC_SUBST(check_languages)
2539 AC_SUBST(cc_set_by_configure)
2540 AC_SUBST(quoted_cc_set_by_configure)
2541 AC_SUBST(cpp_install_dir)
2542 AC_SUBST(dep_host_xmake_file)
2543 AC_SUBST(dep_tmake_file)
2544 AC_SUBST(extra_headers_list)
2545 AC_SUBST(extra_objs)
2546 AC_SUBST(extra_parts)
2547 AC_SUBST(extra_passes)
2548 AC_SUBST(extra_programs)
2549 AC_SUBST(float_h_file)
2550 AC_SUBST(gcc_config_arguments)
2551 AC_SUBST(gcc_gxx_include_dir)
2552 AC_SUBST(libstdcxx_incdir)
2553 AC_SUBST(gcc_version)
2554 AC_SUBST(gcc_version_full)
2555 AC_SUBST(gcc_version_trigger)
2556 AC_SUBST(host_exeext)
2557 AC_SUBST(host_extra_gcc_objs)
2558 AC_SUBST(host_xm_file_list)
2559 AC_SUBST(host_xm_file)
2560 AC_SUBST(host_xm_defines)
2561 AC_SUBST(install)
2562 AC_SUBST(lang_options_files)
2563 AC_SUBST(lang_specs_files)
2564 AC_SUBST(lang_tree_files)
2565 AC_SUBST(local_prefix)
2566 AC_SUBST(md_file)
2567 AC_SUBST(objc_boehm_gc)
2568 AC_SUBST(out_file)
2569 AC_SUBST(out_object_file)
2570 AC_SUBST(stage_prefix_set_by_configure)
2571 AC_SUBST(quoted_stage_prefix_set_by_configure)
2572 AC_SUBST(symbolic_link)
2573 AC_SUBST(thread_file)
2574 AC_SUBST(tm_file_list)
2575 AC_SUBST(tm_file)
2576 AC_SUBST(tm_p_file_list)
2577 AC_SUBST(tm_p_file)
2578 AC_SUBST(xm_file)
2579 AC_SUBST(xm_defines)
2580 AC_SUBST(target_alias)
2581 AC_SUBST(c_target_objs)
2582 AC_SUBST(cxx_target_objs)
2583 AC_SUBST(target_cpu_default)
2584
2585 AC_SUBST_FILE(target_overrides)
2586 AC_SUBST_FILE(host_overrides)
2587 AC_SUBST_FILE(language_fragments)
2588 AC_SUBST_FILE(language_hooks)
2589
2590 # Echo that links are built
2591 if test x$host = x$target
2592 then
2593         str1="native "
2594 else
2595         str1="cross-"
2596         str2=" from $host"
2597 fi
2598
2599 if test x$host != x$build
2600 then
2601         str3=" on a $build system"
2602 fi
2603
2604 if test "x$str2" != x || test "x$str3" != x
2605 then
2606         str4=
2607 fi
2608
2609 echo "Links are now set up to build a ${str1}compiler for ${target}$str4" 1>&2
2610
2611 if test "x$str2" != x || test "x$str3" != x
2612 then
2613         echo " ${str2}${str3}." 1>&2
2614 fi
2615
2616 # Truncate the target if necessary
2617 if test x$host_truncate_target != x; then
2618         target=`echo $target | sed -e 's/\(..............\).*/\1/'`
2619 fi
2620
2621 # Configure the subdirectories
2622 # AC_CONFIG_SUBDIRS($subdirs)
2623
2624 # Create the Makefile
2625 # and configure language subdirectories
2626 AC_OUTPUT($all_outputs,
2627 [
2628 case x$CONFIG_HEADERS in
2629 xauto-host.h:config.in)
2630 echo > cstamp-h ;;
2631 esac
2632 # If the host supports symlinks, point stage[1234] at ../stage[1234] so
2633 # bootstrapping and the installation procedure can still use
2634 # CC="stage1/xgcc -Bstage1/".  If the host doesn't support symlinks,
2635 # FLAGS_TO_PASS has been modified to solve the problem there.
2636 # This is virtually a duplicate of what happens in configure.lang; we do
2637 # an extra check to make sure this only happens if ln -s can be used.
2638 if test "$symbolic_link" = "ln -s"; then
2639  for d in .. ${subdirs} fixinc ; do
2640    if test $d != ..; then
2641         STARTDIR=`${PWDCMD-pwd}`
2642         cd $d
2643         for t in stage1 stage2 stage3 stage4 include
2644         do
2645                 rm -f $t
2646                 $symbolic_link ../$t $t 2>/dev/null
2647         done
2648         cd $STARTDIR
2649    fi
2650  done
2651 else true ; fi
2652 # Avoid having to add intl to our include paths.
2653 if test -f intl/libintl.h; then
2654   echo creating libintl.h
2655   echo '#include "intl/libintl.h"' >libintl.h
2656 fi
2657 ], 
2658 [subdirs='$subdirs'
2659 symbolic_link='$symbolic_link'
2660 ])