Clean up target handling--only build required files, warn about
[binutils.git] / gold / configure.ac
blob500568e829680fd6308c6e5738b1078d9f57a0cb
1 dnl Process this file with autoconf to produce a configure script.
3 AC_PREREQ(2.59)
4 AC_INIT
5 AC_CONFIG_SRCDIR([gold.cc])
7 AC_CANONICAL_TARGET
9 AM_INIT_AUTOMAKE(gold, 0.1)
11 AM_CONFIG_HEADER(config.h:config.in)
13 AC_ARG_ENABLE([targets],
14 [  --enable-targets        alternative target configurations],
15 [case "${enableval}" in
16   yes | "")
17     AC_MSG_ERROR([--enable-targets option must specify target names or 'all'])
18     ;;
19   no)
20     enable_targets=
21     ;;
22   *)
23     enable_targets=$enableval
24     ;;
25 esac],
26 [# For now, enable all targets by default
27  enable_targets=all
30 # Canonicalize the enabled targets.
31 if test -n "$enable_targets"; then
32   for targ in `echo $enable_targets | sed -e 's/,/ /g'`; do
33     result=`$ac_config_sub $targ 2>/dev/null`
34     if test -n "$result"; then
35       canon_targets="$canon_targets $result"
36     else
37       # Permit unrecognized target names, like "all".
38       canon_targets="$canon_targets $targ"
39     fi
40   done
43 # See which specific instantiations we need.
44 targetobjs=
45 all_targets=
46 for targ in $target $canon_targets; do
47   targ_32_little=
48   targ_32_big=
49   targ_64_little=
50   targ_64_big=
51   if test "$targ" = "all"; then
52     targ_32_little=yes
53     targ_32_big=yes
54     targ_64_little=yes
55     targ_64_big=yes
56     all_targets=yes
57   else
58     case "$targ" in
59     i?86-*)
60       targ_32_little=yes
61       targetobjs="$targetobjs i386.\$(OBJEXT)"
62       ;;
63     x86_64-*)
64       targ_64_little=yes
65       targetobjs="$targetobjs x86_64.\$(OBJEXT)"
66       ;;
67     *)
68       AC_MSG_ERROR("unsupported target $targ")
69       ;;
70     esac
71   fi
72 done
74 if test -n "$targ_32_little"; then
75   AC_DEFINE(HAVE_TARGET_32_LITTLE, 1,
76               [Define to support 32-bit little-endian targets])
78 if test -n "$targ_32_big"; then
79   AC_DEFINE(HAVE_TARGET_32_BIG, 1,
80               [Define to support 32-bit big-endian targets])
82 if test -n "$targ_64_little"; then
83   AC_DEFINE(HAVE_TARGET_64_LITTLE, 1,
84               [Define to support 64-bit little-endian targets])
86 if test -n "$targ_64_big"; then
87   AC_DEFINE(HAVE_TARGET_64_BIG, 1,
88               [Define to support 64-bit big-endian targets])
91 if test -n "$all_targets"; then
92   TARGETOBJS='$(ALL_TARGETOBJS)'
93 else
94   TARGETOBJS="$targetobjs"
96 AC_SUBST(TARGETOBJS)
98 AC_PROG_CC
99 AC_PROG_CXX
100 AC_PROG_YACC
101 AC_PROG_RANLIB
102 AC_PROG_INSTALL
103 AC_PROG_LN_S
104 ZW_GNU_GETTEXT_SISTER_DIR
105 AM_PO_SUBDIRS
107 AC_C_BIGENDIAN
109 AC_EXEEXT
111 AM_CONDITIONAL(NATIVE_LINKER,
112   test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias")
113 AM_CONDITIONAL(GCC, test "$GCC" = yes)
115 AM_BINUTILS_WARNINGS
117 WARN_CXXFLAGS=`echo ${WARN_CFLAGS} | sed -e 's/-Wstrict-prototypes//' -e 's/-Wmissing-prototypes//'`
118 AC_SUBST(WARN_CXXFLAGS)
120 dnl Force support for large files by default.  This may need to be
121 dnl host dependent.  If build == host, we can check getconf LFS_CFLAGS.
122 LFS_CXXFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
123 AC_SUBST(LFS_CXXFLAGS)
125 AC_REPLACE_FUNCS(pread)
127 AC_LANG_PUSH(C++)
129 AC_CHECK_HEADERS(tr1/unordered_set tr1/unordered_map)
130 AC_CHECK_HEADERS(ext/hash_map ext/hash_set)
132 dnl Test whether the compiler can specify a member templates to call.
133 AC_COMPILE_IFELSE([
134 class c { public: template<int i> void fn(); };
135 template<int i> void foo(c cv) { cv.fn<i>(); }
136 template void foo<1>(c cv);],
137 [AC_DEFINE(HAVE_MEMBER_TEMPLATE_SPECIFICATIONS, [],
138   [Whether the C++ compiler can call a template member with no arguments])])
140 AC_LANG_POP(C++)
142 AM_MAINTAINER_MODE
144 AC_OUTPUT(Makefile testsuite/Makefile po/Makefile.in:po/Make-in)