Add a TLS test case.
[external/binutils.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_WITH(sysroot,
14 [  --with-sysroot[=DIR]    search for usr/lib et al within DIR],
15 [sysroot=$withval], [sysroot=no])
16
17 if test "$sysroot" = "yes"; then
18   sysroot='${exec_prefix}/${target_alias}/sys-root'
19 elif test "$sysroot" = "no"; then
20   sysroot=
21 fi
22
23 sysroot_relocatable=0
24 if test -n "$sysroot"; then
25   case "sysroot" in
26     "${prefix}" | "${prefix}/"* | \
27     "${exec_prefix}" | "${exec_prefix}/"* | \
28     '${prefix}' | '${prefix}/'*| \
29     '${exec_prefix}' | '${exec_prefix}/'*)
30       sysroot_relocatable=1
31       ;;
32   esac
33 fi
34
35 AC_DEFINE_UNQUOTED(TARGET_SYSTEM_ROOT, "$sysroot",
36   [System root for target files])
37 AC_DEFINE_UNQUOTED(TARGET_SYSTEM_ROOT_RELOCATABLE, $sysroot_relocatable,
38   [Whether the system root can be relocated])
39
40 AC_ARG_ENABLE([targets],
41 [  --enable-targets        alternative target configurations],
42 [case "${enableval}" in
43   yes | "")
44     AC_MSG_ERROR([--enable-targets option must specify target names or 'all'])
45     ;;
46   no)
47     enable_targets=
48     ;;
49   *)
50     enable_targets=$enableval
51     ;;
52 esac],
53 [# For now, enable all targets by default
54  enable_targets=all
55 ])
56
57 # Canonicalize the enabled targets.
58 if test -n "$enable_targets"; then
59   for targ in `echo $enable_targets | sed -e 's/,/ /g'`; do
60     result=`$ac_config_sub $targ 2>/dev/null`
61     if test -n "$result"; then
62       canon_targets="$canon_targets $result"
63     else
64       # Permit unrecognized target names, like "all".
65       canon_targets="$canon_targets $targ"
66     fi
67   done
68 fi
69
70 # See which specific instantiations we need.
71 targetobjs=
72 all_targets=
73 for targ in $target $canon_targets; do
74   targ_32_little=
75   targ_32_big=
76   targ_64_little=
77   targ_64_big=
78   if test "$targ" = "all"; then
79     targ_32_little=yes
80     targ_32_big=yes
81     targ_64_little=yes
82     targ_64_big=yes
83     all_targets=yes
84   else
85     case "$targ" in
86     i?86-*)
87       targ_32_little=yes
88       targetobjs="$targetobjs i386.\$(OBJEXT)"
89       ;;
90     x86_64-*)
91       targ_64_little=yes
92       targetobjs="$targetobjs x86_64.\$(OBJEXT)"
93       ;;
94     *)
95       AC_MSG_ERROR("unsupported target $targ")
96       ;;
97     esac
98   fi
99 done
100
101 if test -n "$targ_32_little"; then
102   AC_DEFINE(HAVE_TARGET_32_LITTLE, 1,
103               [Define to support 32-bit little-endian targets])
104 fi
105 if test -n "$targ_32_big"; then
106   AC_DEFINE(HAVE_TARGET_32_BIG, 1,
107               [Define to support 32-bit big-endian targets])
108 fi
109 if test -n "$targ_64_little"; then
110   AC_DEFINE(HAVE_TARGET_64_LITTLE, 1,
111               [Define to support 64-bit little-endian targets])
112 fi
113 if test -n "$targ_64_big"; then
114   AC_DEFINE(HAVE_TARGET_64_BIG, 1,
115               [Define to support 64-bit big-endian targets])
116 fi
117
118 if test -n "$all_targets"; then
119   TARGETOBJS='$(ALL_TARGETOBJS)'
120 else
121   TARGETOBJS="$targetobjs"
122 fi
123 AC_SUBST(TARGETOBJS)
124
125 AC_PROG_CC
126 AC_PROG_CXX
127 AC_PROG_YACC
128 AC_PROG_RANLIB
129 AC_PROG_INSTALL
130 AC_PROG_LN_S
131 ZW_GNU_GETTEXT_SISTER_DIR
132 AM_PO_SUBDIRS
133
134 AC_C_BIGENDIAN
135
136 AC_EXEEXT
137
138 AM_CONDITIONAL(NATIVE_LINKER,
139   test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias")
140 AM_CONDITIONAL(GCC, test "$GCC" = yes)
141
142 dnl Some architectures do not support taking pointers of functions
143 dnl defined in shared libraries except in -fPIC mode.  We need to
144 dnl tell the unittest framework if we're compiling for one of those
145 dnl targets, so it doesn't try to run the tests that do that.
146 AM_CONDITIONAL(FN_PTRS_IN_SO_WITHOUT_PIC, [
147   case $target_cpu in
148     i?86) true;;
149     x86_64) false;;
150     *) true;;
151   esac])
152
153 dnl Test for __thread support.
154 AC_COMPILE_IFELSE([__thread int i = 1;], [tls=yes], [tls=no])
155 AM_CONDITIONAL(TLS, test "$tls" = "yes")
156
157 AM_BINUTILS_WARNINGS
158
159 WARN_CXXFLAGS=`echo ${WARN_CFLAGS} | sed -e 's/-Wstrict-prototypes//' -e 's/-Wmissing-prototypes//'`
160 AC_SUBST(WARN_CXXFLAGS)
161
162 dnl Force support for large files by default.  This may need to be
163 dnl host dependent.  If build == host, we can check getconf LFS_CFLAGS.
164 LFS_CXXFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
165 AC_SUBST(LFS_CXXFLAGS)
166
167 AC_REPLACE_FUNCS(pread)
168
169 AC_LANG_PUSH(C++)
170
171 AC_CHECK_HEADERS(tr1/unordered_set tr1/unordered_map)
172 AC_CHECK_HEADERS(ext/hash_map ext/hash_set)
173
174 dnl Test whether the compiler can specify a member templates to call.
175 AC_COMPILE_IFELSE([
176 class c { public: template<int i> void fn(); };
177 template<int i> void foo(c cv) { cv.fn<i>(); }
178 template void foo<1>(c cv);],
179 [AC_DEFINE(HAVE_MEMBER_TEMPLATE_SPECIFICATIONS, [],
180   [Whether the C++ compiler can call a template member with no arguments])])
181
182 AC_LANG_POP(C++)
183
184 AM_MAINTAINER_MODE
185
186 AC_OUTPUT(Makefile testsuite/Makefile po/Makefile.in:po/Make-in)