1 # configure.in for GNU CC
2 # Process this file with autoconf to generate a configuration script.
4 # Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
6 #This file is part of GNU CC.
8 #GNU CC is free software; you can redistribute it and/or modify
9 #it under the terms of the GNU General Public License as published by
10 #the Free Software Foundation; either version 2, or (at your option)
13 #GNU CC is distributed in the hope that it will be useful,
14 #but WITHOUT ANY WARRANTY; without even the implied warranty of
15 #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 #GNU General Public License for more details.
18 #You should have received a copy of the GNU General Public License
19 #along with GNU CC; see the file COPYING. If not, write to
20 #the Free Software Foundation, 59 Temple Place - Suite 330,
21 #Boston, MA 02111-1307, USA.
23 # Initialization and defaults
26 AC_CONFIG_HEADER(auto-host.h:config.in)
33 # Check for additional parameters
37 [ --with-gnu-ld arrange to work with GNU ld.],
38 gnu_ld_flag="$with_gnu_ld",
43 [ --with-ld arrange to use the specified ld (full pathname)],
44 DEFAULT_LINKER="$with_ld")
45 if test x"${DEFAULT_LINKER+set}" = x"set"; then
46 if test ! -x "$DEFAULT_LINKER"; then
47 AC_MSG_WARN([cannot execute: $DEFAULT_LINKER: check --with-ld or env. var. DEFAULT_LINKER])
48 elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
51 AC_DEFINE_UNQUOTED(DEFAULT_LINKER,"$DEFAULT_LINKER",
52 [Define to enable the use of a default linker.])
57 [ --with-gnu-as arrange to work with GNU as],
58 gas_flag="$with_gnu_as",
62 [ --with-as arrange to use the specified as (full pathname)],
63 DEFAULT_ASSEMBLER="$with_as")
64 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
65 if test ! -x "$DEFAULT_ASSEMBLER"; then
66 AC_MSG_WARN([cannot execute: $DEFAULT_ASSEMBLER: check --with-as or env. var. DEFAULT_ASSEMBLER])
67 elif $DEFAULT_ASSEMBLER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
70 AC_DEFINE_UNQUOTED(DEFAULT_ASSEMBLER,"$DEFAULT_ASSEMBLER",
71 [Define to enable the use of a default assembler.])
76 [ --with-stabs arrange to use stabs instead of host debug format],
82 [ --with-elf arrange to use ELF instead of host debug format],
86 # Specify the local prefix
88 AC_ARG_WITH(local-prefix,
89 [ --with-local-prefix=DIR specifies directory to put local include],
91 yes) AC_MSG_ERROR(bad value ${withval} given for local include directory prefix) ;;
93 *) local_prefix=$with_local_prefix ;;
96 # Default local prefix if it is empty
97 if test x$local_prefix = x; then
98 local_prefix=/usr/local
101 # Enable Multibyte Characters for C/C++
102 AC_ARG_ENABLE(c-mbchar,
103 [ --enable-c-mbchar enable multibyte characters for C and C++],
104 if test x$enable_c_mbchar != xno; then
105 AC_DEFINE(MULTIBYTE_CHARS, 1,
106 [Define if you want the C and C++ compilers to support multibyte
107 character sets for source code.])
110 # Find the native compiler
113 # autoconf is lame and doesn't give us any substitution variable for this.
114 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
115 NO_MINUS_C_MINUS_O=yes
117 OUTPUT_OPTION='-o $@'
119 AC_SUBST(NO_MINUS_C_MINUS_O)
120 AC_SUBST(OUTPUT_OPTION)
125 # sizeof(char) is 1 by definition.
126 gcc_AC_COMPILE_CHECK_SIZEOF(short)
127 gcc_AC_COMPILE_CHECK_SIZEOF(int)
128 gcc_AC_COMPILE_CHECK_SIZEOF(long)
132 # If the native compiler is GCC, we can enable warnings even in stage1.
133 # That's useful for people building cross-compilers, or just running a
136 if test "x$GCC" = "xyes"; then
137 warn_cflags='$(GCC_WARN_CFLAGS)'
139 AC_SUBST(warn_cflags)
143 AC_MSG_CHECKING([whether a default assembler was specified])
144 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
145 if test x"$gas_flag" = x"no"; then
146 AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER)])
148 AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)])
154 AC_MSG_CHECKING([whether a default linker was specified])
155 if test x"${DEFAULT_LINKER+set}" = x"set"; then
156 if test x"$gnu_ld_flag" = x"no"; then
157 AC_MSG_RESULT([yes ($DEFAULT_LINKER)])
159 AC_MSG_RESULT([yes ($DEFAULT_LINKER - GNU ld)])
165 AC_MSG_CHECKING(for GNU C library)
166 AC_CACHE_VAL(gcc_cv_glibc,
168 [#include <features.h>],[
169 #if ! (defined __GLIBC__ || defined __GNU_LIBRARY__)
170 #error Not a GNU C library system
174 AC_MSG_RESULT($gcc_cv_glibc)
175 if test $gcc_cv_glibc = yes; then
176 AC_DEFINE(_GNU_SOURCE, 1, [Always define this when using the GNU C Library])
179 # Find some useful tools
189 AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h \
190 fcntl.h unistd.h sys/file.h sys/time.h \
191 sys/resource.h sys/param.h sys/times.h sys/stat.h \
192 direct.h malloc.h langinfo.h)
194 # Check for thread headers.
196 # These tests can't be done till we know if we have limits.h.
198 gcc_AC_C_COMPILE_ENDIAN
200 # See if we have the mktemp command.
201 AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
203 AC_CHECK_PROG(STRIP, strip, strip, :)
205 # See if the stage1 system preprocessor understands the ANSI C
206 # preprocessor stringification operator. (Used by symcat.h.)
209 # Use <inttypes.h> only if it exists,
210 # doesn't clash with <sys/types.h>, and declares intmax_t.
211 AC_MSG_CHECKING(for inttypes.h)
212 AC_CACHE_VAL(gcc_cv_header_inttypes_h,
214 [#include <sys/types.h>
215 #include <inttypes.h>],
217 [gcc_cv_header_inttypes_h=yes],
218 gcc_cv_header_inttypes_h=no)])
219 AC_MSG_RESULT($gcc_cv_header_inttypes_h)
220 if test $gcc_cv_header_inttypes_h = yes; then
221 AC_DEFINE(HAVE_INTTYPES_H, 1,
222 [Define if you have a working <inttypes.h> header file.])
225 dnl Disabled until we have a complete test for buggy enum bitfields.
226 dnl gcc_AC_C_ENUM_BF_UNSIGNED
228 AC_CHECK_FUNCS(times clock strchr strrchr lstat)
230 AC_CHECK_TYPE(ssize_t, int)
232 AC_FUNC_MMAP_ANYWHERE
235 # We will need to find libiberty.h and ansidecl.h
236 saved_CFLAGS="$CFLAGS"
237 CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include"
238 gcc_AC_CHECK_DECLS(getenv abort errno \
239 malloc realloc calloc free getopt clock, , ,[
240 #include "ansidecl.h"
241 #include "system.h"])
243 gcc_AC_CHECK_DECLS(times, , ,[
244 #include "ansidecl.h"
246 #ifdef HAVE_SYS_TIMES_H
247 #include <sys/times.h>
251 # More time-related stuff.
252 AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
254 #include "ansidecl.h"
256 #ifdef HAVE_SYS_TIMES_H
257 #include <sys/times.h>
259 ], [struct tms tms;], ac_cv_struct_tms=yes, ac_cv_struct_tms=no)])
260 if test $ac_cv_struct_tms = yes; then
261 AC_DEFINE(HAVE_STRUCT_TMS, 1,
262 [Define if <sys/times.h> defines struct tms.])
265 # use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
266 # revisit after autoconf 2.50.
267 AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
269 #include "ansidecl.h"
271 ], [clock_t x;], gcc_cv_type_clock_t=yes, gcc_cv_type_clock_t=no)])
272 if test $gcc_cv_type_clock_t = yes; then
273 AC_DEFINE(HAVE_CLOCK_T, 1,
274 [Define if <time.h> defines clock_t.])
277 # Restore CFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
278 CFLAGS="$saved_CFLAGS"
280 # mkdir takes a single argument on some systems.
281 gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
291 build_install_headers_dir=install-headers-tar
296 host_truncate_target=
299 # Decode the host machine, then the target machine.
300 # For the host machine, we save the xm_file variable as host_xm_file;
301 # then we decode the target machine and forget everything else
302 # that came from the host machine.
303 #for machine in $build $host $target; do
304 # . ${srcdir}/config.gcc
307 extra_objs="${host_extra_objs} ${extra_objs}"
309 # Default the target-machine variables that were not explicitly set.
310 if test x"$tm_file" = x
311 then tm_file=$cpu_type/$cpu_type.h; fi
313 if test x"$extra_headers" = x
314 then extra_headers=; fi
316 if test x$md_file = x
317 then md_file=$cpu_type/$cpu_type.md; fi
319 if test x$out_file = x
320 then out_file=$cpu_type/$cpu_type.c; fi
322 if test x"$tmake_file" = x
323 then tmake_file=$cpu_type/t-$cpu_type
326 if test x"$dwarf2" = xyes
327 then tm_file="$tm_file tm-dwarf2.h"
330 # Handle cpp installation.
331 if test x$enable_cpp != xno
333 tmake_file="$tmake_file t-install-cpp"
336 # auto-host.h is the file containing items generated by autoconf and is
337 # the first file included by config.h.
338 # If host=build, it is correct to have hconfig include auto-host.h
339 # as well. If host!=build, we are in error and need to do more
340 # work to find out the build config parameters.
341 if test x$host = x$build
343 build_auto=auto-host.h
345 # We create a subdir, then run autoconf in the subdir.
346 # To prevent recursion we set host and build for the new
347 # invocation of configure to the build for this invocation
354 /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
355 *) realsrcdir=../${srcdir};;
357 CC=${CC_FOR_BUILD} ${realsrcdir}/configure \
358 --target=$target --host=$build --build=$build
360 # We just finished tests for the build machine, so rename
361 # the file auto-build.h in the gcc directory.
362 mv auto-host.h ../auto-build.h
365 build_auto=auto-build.h
368 tm_file="${tm_file} defaults.h"
369 host_xm_file="auto-host.h ansidecl.h ${host_xm_file} ${tm_file}"
370 build_xm_file="${build_auto} ansidecl.h ${build_xm_file} ${tm_file}"
371 xm_file="ansidecl.h ${xm_file} ${tm_file}"
373 # Truncate the target if necessary
374 if test x$host_truncate_target != x; then
375 target=`echo $target | sed -e 's/\(..............\).*/\1/'`
378 # Get the version trigger filename from the toplevel
379 if test "${with_gcc_version_trigger+set}" = set; then
380 gcc_version_trigger=$with_gcc_version_trigger
382 gcc_version_trigger=${srcdir}/version.c
385 gcc_version_full=`grep version_string ${gcc_version_trigger} | sed -e 's/.*"\([^"]*\)".*/\1/'`
386 gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
388 # Compile in configure arguments.
389 if test -f configargs.h ; then
390 # Being re-configured.
391 gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'`
392 gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
394 gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
396 cat > configargs.h <<EOF
397 /* Generated automatically. */
398 static const char configuration_arguments[] = "$gcc_config_arguments";
399 static const char thread_model[] = "$thread_file";
403 # Internationalization
405 VERSION="$gcc_version"
406 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE",
407 [Define to the name of the distribution.])
408 AC_DEFINE_UNQUOTED(VERSION, "$VERSION",
409 [Define to the version of the distribution.])
415 # Get an absolute path to the GCC top-level source directory
421 out_object_file=`basename $out_file .c`.o
423 # Figure out what assembler we will be using.
424 AC_MSG_CHECKING(what assembler to use)
426 gcc_cv_gas_major_version=
427 gcc_cv_gas_minor_version=
428 gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
429 if test -x "$DEFAULT_ASSEMBLER"; then
430 gcc_cv_as="$DEFAULT_ASSEMBLER"
431 elif test -x "$AS"; then
433 elif test -x as$host_exeext; then
434 # Build using assembler in the current directory.
435 gcc_cv_as=./as$host_exeext
436 elif test -f $gcc_cv_as_gas_srcdir/configure.in -a -f ../gas/Makefile; then
437 # Single tree build which includes gas.
438 for f in $gcc_cv_as_gas_srcdir/configure $gcc_cv_as_gas_srcdir/configure.in $gcc_cv_as_gas_srcdir/Makefile.in
441 gcc_cv_gas_version=`grep '^VERSION=[0-9]*\.[0-9]*' $f`
443 if test x$gcc_cv_gas_version != x; then
448 gcc_cv_gas_major_version=`expr "$gcc_cv_gas_version" : "VERSION=\([0-9]*\)"`
449 gcc_cv_gas_minor_version=`expr "$gcc_cv_gas_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
453 if test "x$gcc_cv_as" = x -a x$host = x$target; then
455 # Search the same directories that the installed compiler will
456 # search. Else we may find the wrong assembler and lose. If we
457 # do not find a suitable assembler binary, then try the user's
460 # Also note we have to check MD_EXEC_PREFIX before checking the
461 # user's path. Unfortunately, there is no good way to get at the
462 # value of MD_EXEC_PREFIX here. So we do a brute force search
463 # through all the known MD_EXEC_PREFIX values. Ugh. This needs
464 # to be fixed as part of the make/configure rewrite too.
466 if test "x$exec_prefix" = xNONE; then
467 if test "x$prefix" = xNONE; then
468 test_prefix=/usr/local
473 test_prefix=$exec_prefix
476 # If the loop below does not find an assembler, then use whatever
477 # one we can find in the users's path.
479 gcc_cv_as=as$host_exeext
481 test_dirs="$test_prefix/lib/gcc-lib/$target/$gcc_version \
482 $test_prefix/lib/gcc-lib/$target \
483 /usr/lib/gcc/$target/$gcc_version \
484 /usr/lib/gcc/$target \
485 $test_prefix/$target/bin/$target/$gcc_version \
486 $test_prefix/$target/bin \
491 /bsd43/usr/lib/cmplrs/cc \
492 /usr/cross64/usr/bin \
494 /sysv/usr/lib/cmplrs/cc \
495 /svr4/usr/lib/cmplrs/cc \
498 for dir in $test_dirs; do
499 if test -f $dir/as$host_exeext; then
500 gcc_cv_as=$dir/as$host_exeext
505 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
506 AC_MSG_RESULT("newly built gas")
508 AC_MSG_RESULT($gcc_cv_as)
511 # Figure out what nm we will be using.
512 AC_MSG_CHECKING(what nm to use)
513 if test -x nm$host_exeext; then
514 gcc_cv_nm=./nm$host_exeext
515 elif test x$host = x$target; then
517 gcc_cv_nm=nm$host_exeext
519 AC_MSG_RESULT($gcc_cv_nm)
521 dnl Very limited version of automake's enable-maintainer-mode
523 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
524 dnl maintainer-mode is disabled by default
525 AC_ARG_ENABLE(maintainer-mode,
526 [ --enable-maintainer-mode
527 enable make rules and dependencies not useful
528 (and sometimes confusing) to the casual installer],
529 maintainer_mode=$enableval,
532 AC_MSG_RESULT($maintainer_mode)
534 if test "$maintainer_mode" = "yes"; then
541 # These (without "all_") are set in each config-lang.in.
542 # `language' must be a single word so is spelled singularly.
544 all_outputs='Makefile'
545 # List of language makefile fragments.
547 # Add the language fragments.
548 # Languages are added via two mechanisms. Some information must be
549 # recorded in makefile variables, these are defined in config-lang.in.
550 # We accumulate them and plug them into the main Makefile.
551 # The other mechanism is a set of hooks for each of the main targets
552 # like `clean', `install', etc.
554 language_fragments="Make-lang"
556 # Define variables host_canonical and build_canonical
557 # because some Cygnus local changes in the Makefile depend on them.
558 build_canonical=${build}
559 host_canonical=${host}
561 if test "${host}" != "${target}" ; then
562 target_subdir=${target_alias}/
564 AC_SUBST(build_canonical)
565 AC_SUBST(host_canonical)
566 AC_SUBST(target_subdir)
568 # Nothing to do for FLOAT_H, float_format already handled.
572 # Substitute configuration variables
573 AC_SUBST(all_stagestuff)
574 AC_SUBST(build_exeext)
575 AC_SUBST(build_install_headers_dir)
576 AC_SUBST(build_xm_file_list)
577 AC_SUBST(build_xm_file)
578 AC_SUBST(build_xm_defines)
579 AC_SUBST(check_languages)
580 AC_SUBST(dep_host_xmake_file)
581 AC_SUBST(dep_tmake_file)
582 AC_SUBST(extra_c_flags)
583 AC_SUBST(extra_headers_list)
585 AC_SUBST(extra_parts)
586 AC_SUBST(extra_passes)
587 AC_SUBST(extra_programs)
588 AC_SUBST(gcc_config_arguments)
589 AC_SUBST(gcc_version)
590 AC_SUBST(gcc_version_full)
591 AC_SUBST(gcc_version_trigger)
592 AC_SUBST(host_exeext)
593 AC_SUBST(host_extra_gcc_objs)
595 AC_SUBST(lang_tree_files)
596 AC_SUBST(local_prefix)
599 AC_SUBST(out_object_file)
600 AC_SUBST(symbolic_link)
601 AC_SUBST(thread_file)
602 AC_SUBST(c_target_objs)
604 AC_SUBST_FILE(target_overrides)
605 AC_SUBST_FILE(host_overrides)
606 AC_SUBST(cross_defines)
607 AC_SUBST_FILE(cross_overrides)
608 AC_SUBST_FILE(build_overrides)
610 # Create the Makefile
611 # and configure language subdirectories
612 AC_OUTPUT($all_outputs,
614 case x$CONFIG_HEADERS in
615 xauto-host.h:config.in)
619 # Avoid having to add intl to our include paths.
620 if test -f intl/libintl.h; then
621 echo creating libintl.h
622 echo '#include "intl/libintl.h"' >libintl.h
629 target_alias='${target_alias}'
631 symbolic_link='${symbolic_link}'
632 program_transform_set='${program_transform_set}'
633 program_transform_name='${program_transform_name}'
634 dep_host_xmake_file='${dep_host_xmake_file}'
635 host_xmake_file='${host_xmake_file}'
636 dep_tmake_file='${dep_tmake_file}'
637 tmake_file='${tmake_file}'
638 thread_file='${thread_file}'
639 gcc_config_arguments='${gcc_config_arguments}'
640 gcc_version='${gcc_version}'
641 gcc_version_full='${gcc_version_full}'
642 gcc_version_trigger='${gcc_version_trigger}'
643 local_prefix='${local_prefix}'
644 build_install_headers_dir='${build_install_headers_dir}'
645 build_exeext='${build_exeext}'
646 host_exeext='${host_exeext}'
647 out_file='${out_file}'
648 gdb_needs_out_file_path='${gdb_needs_out_file_path}'
649 SET_MAKE='${SET_MAKE}'
650 target_list='${target_list}'
651 target_overrides='${target_overrides}'
652 host_overrides='${host_overrides}'
653 cross_defines='${cross_defines}'
654 cross_overrides='${cross_overrides}'
655 build_overrides='${build_overrides}'
656 cpp_install_dir='${cpp_install_dir}'