OSDN Git Service

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