elfcpp:/
[deliverable/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
5 AC_INIT(gold, 0.1)
6 AC_CONFIG_SRCDIR(gold.cc)
7
8 AC_CANONICAL_TARGET
9
10 AM_INIT_AUTOMAKE
11
12 AM_CONFIG_HEADER(config.h:config.in)
13
14 AC_ARG_WITH(sysroot,
15 [ --with-sysroot[=DIR] search for usr/lib et al within DIR],
16 [sysroot=$withval], [sysroot=no])
17
18 if test "$sysroot" = "yes"; then
19 sysroot='${exec_prefix}/${target_alias}/sys-root'
20 elif test "$sysroot" = "no"; then
21 sysroot=
22 fi
23
24 sysroot_relocatable=0
25 if test -n "$sysroot"; then
26 case "sysroot" in
27 "${prefix}" | "${prefix}/"* | \
28 "${exec_prefix}" | "${exec_prefix}/"* | \
29 '${prefix}' | '${prefix}/'*| \
30 '${exec_prefix}' | '${exec_prefix}/'*)
31 sysroot_relocatable=1
32 ;;
33 esac
34 fi
35
36 AC_DEFINE_UNQUOTED(TARGET_SYSTEM_ROOT, "$sysroot",
37 [System root for target files])
38 AC_DEFINE_UNQUOTED(TARGET_SYSTEM_ROOT_RELOCATABLE, $sysroot_relocatable,
39 [Whether the system root can be relocated])
40
41 dnl For now threads are a configure time option.
42 AC_ARG_ENABLE([threads],
43 [ --enable-threads multi-threaded linking],
44 [case "${enableval}" in
45 yes | "") threads=yes ;;
46 no) threads=no ;;
47 *) threads=yes ;;
48 esac],
49 [threads=no])
50 if test "$threads" = "yes"; then
51 AC_DEFINE(ENABLE_THREADS, 1,
52 [Define to do multi-threaded linking])
53 fi
54 AM_CONDITIONAL(THREADS, test "$threads" = "yes")
55
56 AC_ARG_ENABLE([plugins],
57 [ --enable-plugins linker plugins],
58 [case "${enableval}" in
59 yes | "") plugins=yes ;;
60 no) plugins=no ;;
61 *) plugins=yes ;;
62 esac],
63 [plugins=no])
64 if test "$plugins" = "yes"; then
65 AC_DEFINE(ENABLE_PLUGINS, 1,
66 [Define to enable linker plugins])
67 fi
68 AM_CONDITIONAL(PLUGINS, test "$plugins" = "yes")
69
70 AC_ARG_ENABLE([targets],
71 [ --enable-targets alternative target configurations],
72 [case "${enableval}" in
73 yes | "")
74 AC_MSG_ERROR([--enable-targets option must specify target names or 'all'])
75 ;;
76 no)
77 enable_targets=
78 ;;
79 *)
80 enable_targets=$enableval
81 ;;
82 esac],
83 [# For now, enable all targets by default
84 enable_targets=all
85 ])
86
87 # Canonicalize the enabled targets.
88 if test -n "$enable_targets"; then
89 for targ in `echo $enable_targets | sed -e 's/,/ /g'`; do
90 result=`$ac_config_sub $targ 2>/dev/null`
91 if test -n "$result"; then
92 canon_targets="$canon_targets $result"
93 else
94 # Permit unrecognized target names, like "all".
95 canon_targets="$canon_targets $targ"
96 fi
97 done
98 fi
99
100 # See which specific instantiations we need.
101 targetobjs=
102 all_targets=
103 default_machine=
104 default_size=
105 default_big_endian=
106 targ_32_little=
107 targ_32_big=
108 targ_64_little=
109 targ_64_big=
110 for targ in $target $canon_targets; do
111 if test "$targ" = "all"; then
112 targ_32_little=yes
113 targ_32_big=yes
114 targ_64_little=yes
115 targ_64_big=yes
116 all_targets=yes
117 else
118 . ${srcdir}/configure.tgt
119
120 if test "$targ_obj" = "UNKNOWN"; then
121 AC_MSG_ERROR("unsupported target $targ")
122 else
123 targetobjs="$targetobjs ${targ_obj}.\$(OBJEXT)"
124 if test "$targ_extra_obj" != ""; then
125 targetobjs="$targetobjs ${targ_extra_obj}.\$(OBJEXT)"
126 fi
127 if test "$targ_size" = "32" -o "$targ_extra_size" = "32"; then
128 if test "$targ_big_endian" = "true" \
129 -o "$targ_extra_big_endian" = "true"; then
130 targ_32_big=yes
131 fi
132 if test "$targ_big_endian" = "false" \
133 -o "$targ_extra_big_endian" = "false"; then
134 targ_32_little=yes
135 fi
136 fi
137 if test "$targ_size" = "64" -o "$targ_extra_size" = "64"; then
138 if test "$targ_big_endian" = "true" \
139 -o "$targ_extra_big_endian" = "true"; then
140 targ_64_big=yes
141 fi
142 if test "$targ_big_endian" = "false" \
143 -o "$targ_extra_big_endian" = "false"; then
144 targ_64_little=yes
145 fi
146 fi
147
148 if test "$target" = "$targ"; then
149 default_machine=$targ_machine
150 default_size=$targ_size
151 default_big_endian=$targ_big_endian
152 fi
153 fi
154 fi
155 done
156
157 if test -n "$targ_32_little"; then
158 AC_DEFINE(HAVE_TARGET_32_LITTLE, 1,
159 [Define to support 32-bit little-endian targets])
160 fi
161 if test -n "$targ_32_big"; then
162 AC_DEFINE(HAVE_TARGET_32_BIG, 1,
163 [Define to support 32-bit big-endian targets])
164 fi
165 if test -n "$targ_64_little"; then
166 AC_DEFINE(HAVE_TARGET_64_LITTLE, 1,
167 [Define to support 64-bit little-endian targets])
168 fi
169 if test -n "$targ_64_big"; then
170 AC_DEFINE(HAVE_TARGET_64_BIG, 1,
171 [Define to support 64-bit big-endian targets])
172 fi
173
174 if test -n "$all_targets"; then
175 TARGETOBJS='$(ALL_TARGETOBJS)'
176 else
177 TARGETOBJS="$targetobjs"
178 fi
179 AC_SUBST(TARGETOBJS)
180
181 AC_DEFINE_UNQUOTED(GOLD_DEFAULT_MACHINE, $default_machine,
182 [Default machine code])
183 AC_DEFINE_UNQUOTED(GOLD_DEFAULT_SIZE, $default_size,
184 [Default size (32 or 64)])
185 AC_DEFINE_UNQUOTED(GOLD_DEFAULT_BIG_ENDIAN, $default_big_endian,
186 [Default big endian (true or false)])
187
188 AC_PROG_CC
189 AC_PROG_CXX
190 AC_PROG_YACC
191 AC_PROG_RANLIB
192 AC_PROG_INSTALL
193 AC_PROG_LN_S
194
195 AC_GNU_SOURCE
196
197 ZW_GNU_GETTEXT_SISTER_DIR
198 AM_PO_SUBDIRS
199
200 AC_C_BIGENDIAN
201
202 AC_EXEEXT
203
204 AM_CONDITIONAL(NATIVE_LINKER,
205 test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias")
206 AM_CONDITIONAL(GCC, test "$GCC" = yes)
207
208 dnl Some architectures do not support taking pointers of functions
209 dnl defined in shared libraries except in -fPIC mode. We need to
210 dnl tell the unittest framework if we're compiling for one of those
211 dnl targets, so it doesn't try to run the tests that do that.
212 AM_CONDITIONAL(FN_PTRS_IN_SO_WITHOUT_PIC, [
213 case $target_cpu in
214 i?86) true;;
215 x86_64) false;;
216 sparc64) false;;
217 *) true;;
218 esac])
219
220 dnl Test for __thread support.
221 AC_CACHE_CHECK([for thread support], [gold_cv_c_thread],
222 [AC_COMPILE_IFELSE([__thread int i = 1;],
223 [gold_cv_c_thread=yes], [gold_cv_c_thread=no])])
224
225 AM_CONDITIONAL(TLS, test "$gold_cv_c_thread" = "yes")
226
227 dnl On GNU/Linux TLS in static programs only works when using glibc
228 dnl 2.4 or later.
229 AC_CACHE_CHECK([for glibc >= 2.4], [gold_cv_lib_glibc24],
230 [AC_COMPILE_IFELSE([
231 #include <features.h>
232 #if !defined __GLIBC__
233 error
234 #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4)
235 error
236 #endif
237 ], [gold_cv_lib_glibc24=yes], [gold_cv_lib_glibc24=no])])
238
239 AM_CONDITIONAL(STATIC_TLS, test "$gold_cv_lib_glibc24" = "yes")
240
241 dnl Test for #pragma omp threadprivate
242 AC_CACHE_CHECK([for omp support], [gold_cv_c_threadprivate],
243 [save_CFLAGS="$CFLAGS"
244 CFLAGS="$CFLAGS -fopenmp"
245 AC_COMPILE_IFELSE([
246 #include <omp.h>
247 int i;
248 #pragma omp threadprivate (i)
249 ], [gold_cv_c_threadprivate=yes], [gold_cv_c_threadprivate=no])
250 CFLAGS="$save_CFLAGS"])
251 if test "$gold_cv_c_threadprivate" = "yes"; then
252 AC_DEFINE(HAVE_OMP_SUPPORT, 1,
253 [Define if compiler supports #pragma omp threadprivate])
254 fi
255 AM_CONDITIONAL(OMP_SUPPORT, test "$gold_cv_c_threadprivate" = "yes")
256
257 dnl Test for the -ftls-dialect=gnu2 option.
258 save_CFLAGS="$CFLAGS"
259 CFLAGS="$CFLAGS -mtls-dialect=gnu2"
260 AC_COMPILE_IFELSE([int i;], [have_tls_gnu2=yes], [have_tls_gnu2=no])
261 CFLAGS="$save_CFLAGS"
262 AM_CONDITIONAL(TLS_GNU2_DIALECT, test "$have_tls_gnu2" = "yes")
263
264 dnl On GNU/Linux TLS descriptors are supported by the dynamic loader
265 dnl only with glibc 2.9 or later.
266 AC_CACHE_CHECK([for glibc >= 2.9], [gold_cv_lib_glibc29],
267 [AC_COMPILE_IFELSE([
268 #include <features.h>
269 #if !defined __GLIBC__
270 error
271 #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 9)
272 error
273 #endif
274 ], [gold_cv_lib_glibc29=yes], [gold_cv_lib_glibc29=no])])
275
276 AM_CONDITIONAL(TLS_DESCRIPTORS, test "$gold_cv_lib_glibc29" = "yes")
277
278 dnl Check whether the compiler supports constructor priorities in
279 dnl attributes, which were added in gcc 4.3.
280 AC_CACHE_CHECK([for constructor priorities], [gold_cv_c_conprio],
281 [AC_COMPILE_IFELSE([void f() __attribute__ ((constructor (1)));],
282 [gold_cv_c_conprio=yes], [gold_cv_c_conprio=no])])
283
284 AM_CONDITIONAL(CONSTRUCTOR_PRIORITY, test "$gold_cv_c_conprio" = "yes")
285
286 dnl Test for the -frandom-seed option.
287 AC_CACHE_CHECK([for -frandom-seed support], [gold_cv_c_random_seed],
288 [save_CFLAGS="$CFLAGS"
289 CFLAGS="$CFLAGS -frandom-seed=foo"
290 AC_COMPILE_IFELSE([int i;], [gold_cv_c_random_seed=yes],
291 [gold_cv_c_random_seed=no])
292 CFLAGS="$save_CFLAGS"])
293 if test "$gold_cv_c_random_seed" = "yes"; then
294 # In Makefile, '$@' will be expanded to be the name of the file
295 # being built, providing a unique seed for each file.
296 RANDOM_SEED_CFLAGS=-frandom-seed=\$@
297 fi
298 AC_SUBST(RANDOM_SEED_CFLAGS)
299
300 AM_BINUTILS_WARNINGS
301
302 WARN_CXXFLAGS=`echo ${WARN_CFLAGS} | sed -e 's/-Wstrict-prototypes//' -e 's/-Wmissing-prototypes//'`
303 AC_SUBST(WARN_CXXFLAGS)
304
305 dnl Force support for large files by default. This may need to be
306 dnl host dependent. If build == host, we can check getconf LFS_CFLAGS.
307 LFS_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
308 AC_SUBST(LFS_CFLAGS)
309
310 AC_REPLACE_FUNCS(pread)
311
312 # Link in zlib if we can. This allows us to write compressed sections.
313 AC_SEARCH_LIBS(zlibVersion, z, [AC_CHECK_HEADERS(zlib.h)])
314 AM_CONDITIONAL(HAVE_ZLIB, test "$ac_cv_search_zlibVersion" != "no")
315
316 AC_LANG_PUSH(C++)
317
318 AC_CHECK_HEADERS(tr1/unordered_set tr1/unordered_map)
319 AC_CHECK_HEADERS(ext/hash_map ext/hash_set)
320 AC_CHECK_HEADERS(byteswap.h)
321 AC_CHECK_FUNCS(mallinfo)
322
323 # gcc 4.3.0 doesn't recognize the printf attribute on a template
324 # function. Check for that. This is gcc bug 35546. This test can
325 # probably be removed after the bug has been fixed for a while.
326 AC_CACHE_CHECK([whether we can use attributes with template functions],
327 [gold_cv_template_attribute],
328 [AC_COMPILE_IFELSE([
329 template<typename T> extern void foo(const char*, ...)
330 __attribute__ ((__format__ (__printf__, 1, 2)));
331 template<typename T> void foo(const char* format, ...) {}
332 void bar() { foo<int>("%s\n", "foo"); }
333 ], [gold_cv_template_attribute=yes], [gold_cv_template_attribute=no])])
334 if test "$gold_cv_template_attribute" = "yes"; then
335 AC_DEFINE(HAVE_TEMPLATE_ATTRIBUTES, 1,
336 [Define if attributes work on C++ templates])
337 fi
338
339 AC_LANG_POP(C++)
340
341 AM_MAINTAINER_MODE
342
343 AC_OUTPUT(Makefile testsuite/Makefile po/Makefile.in:po/Make-in)
This page took 0.037128 seconds and 5 git commands to generate.