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