From Craig Silverstein: don't run function pointer non-PIC tests when
[binutils-gdb.git] / gold / configure.ac
1 dnl Process this file with autoconf to produce a configure script.
2
3 AC_PREREQ(2.59)
4 AC_INIT
5 AC_CONFIG_SRCDIR([gold.cc])
6
7 AC_CANONICAL_TARGET
8
9 AM_INIT_AUTOMAKE(gold, 0.1)
10
11 AM_CONFIG_HEADER(config.h:config.in)
12
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
28 ])
29
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
41 fi
42
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
73
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])
77 fi
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])
81 fi
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])
85 fi
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])
89 fi
90
91 if test -n "$all_targets"; then
92 TARGETOBJS='$(ALL_TARGETOBJS)'
93 else
94 TARGETOBJS="$targetobjs"
95 fi
96 AC_SUBST(TARGETOBJS)
97
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
106
107 AC_C_BIGENDIAN
108
109 AC_EXEEXT
110
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)
114
115 dnl Some architectures do not support taking pointers of functions
116 dnl defined in shared libraries except in -fPIC mode. We need to
117 dnl tell the unittest framework if we're compiling for one of those
118 dnl targets, so it doesn't try to run the tests that do that.
119 AM_CONDITIONAL(FN_PTRS_IN_SO_WITHOUT_PIC, [
120 case $target_cpu in
121 i?86) true;;
122 x86_64) false;;
123 *) true;;
124 esac])
125
126 AM_BINUTILS_WARNINGS
127
128 WARN_CXXFLAGS=`echo ${WARN_CFLAGS} | sed -e 's/-Wstrict-prototypes//' -e 's/-Wmissing-prototypes//'`
129 AC_SUBST(WARN_CXXFLAGS)
130
131 dnl Force support for large files by default. This may need to be
132 dnl host dependent. If build == host, we can check getconf LFS_CFLAGS.
133 LFS_CXXFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
134 AC_SUBST(LFS_CXXFLAGS)
135
136 AC_REPLACE_FUNCS(pread)
137
138 AC_LANG_PUSH(C++)
139
140 AC_CHECK_HEADERS(tr1/unordered_set tr1/unordered_map)
141 AC_CHECK_HEADERS(ext/hash_map ext/hash_set)
142
143 dnl Test whether the compiler can specify a member templates to call.
144 AC_COMPILE_IFELSE([
145 class c { public: template<int i> void fn(); };
146 template<int i> void foo(c cv) { cv.fn<i>(); }
147 template void foo<1>(c cv);],
148 [AC_DEFINE(HAVE_MEMBER_TEMPLATE_SPECIFICATIONS, [],
149 [Whether the C++ compiler can call a template member with no arguments])])
150
151 AC_LANG_POP(C++)
152
153 AM_MAINTAINER_MODE
154
155 AC_OUTPUT(Makefile testsuite/Makefile po/Makefile.in:po/Make-in)