]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/configure.ac
gthr-posix.h (__gthread_create, [...]): New functions.
[thirdparty/gcc.git] / libstdc++-v3 / configure.ac
CommitLineData
3a24bf5d 1# Process this file with autoreconf to produce a configure script.
b2dad0e3 2
8ab705be 3AC_PREREQ(2.59)
fbe057bb 4AC_INIT(package-unused, version-unused,, libstdc++)
ff66d28f
PE
5AC_CONFIG_SRCDIR(src/ios.cc)
6AC_CONFIG_HEADER(config.h)
e2c20fae 7
6706f116
AO
8# This works around the fact that libtool configuration may change LD
9# for this particular configuration, but some shells, instead of
10# keeping the changes in LD private, export them just because LD is
2c839a4e 11# exported. Only used at the end of this file.
ff66d28f 12### am handles this now? ORIGINAL_LD_FOR_MULTILIBS=$LD
6706f116 13
4e10943d 14# For libtool versioning info, format is CURRENT:REVISION:AGE
074c0065 15libtool_VERSION=6:11:0
4e10943d 16AC_SUBST(libtool_VERSION)
b2dad0e3 17
ff66d28f 18# Find the rest of the source tree framework.
076e5443 19AM_ENABLE_MULTILIB(, ..)
aebb8c22 20
58b08ac3 21# Gets build, host, target, *_vendor, *_cpu, *_os, etc.
2c839a4e
PE
22#
23# You will slowly go insane if you do not grok the following fact: when
24# building v3 as part of the compiler, the top-level /target/ becomes the
ff66d28f 25# library's /host/. configure then causes --target to default to --host,
2c839a4e
PE
26# exactly like any other package using autoconf. Therefore, 'target' and
27# 'host' will always be the same. This makes sense both for native and
28# cross compilers, just think about it for a little while. :-)
29#
30# Also, if v3 is being configured as part of a cross compiler, the top-level
31# configure script will pass the "real" host as $with_cross_host.
32#
ff66d28f
PE
33# Do not delete or change the following two lines. For why, see
34# http://gcc.gnu.org/ml/libstdc++/2003-07/msg00451.html
b2dad0e3 35AC_CANONICAL_SYSTEM
ff66d28f
PE
36target_alias=${target_alias-$host_alias}
37
38# Handy for debugging:
39#AC_MSG_NOTICE($build / $host / $target / $host_alias / $target_alias); sleep 5
40
0df3f383
PE
41if test "$build" != "$host"; then
42 # We are being configured with some form of cross compiler.
43 GLIBCXX_IS_NATIVE=false
0646b059
GK
44 case "$host","$target" in
45 # Darwin crosses can use the host system's libraries and headers,
46 # because of the fat library support. Of course, it must be the
47 # same version of Darwin on both sides. Allow the user to
48 # just say --target=foo-darwin without a version number to mean
49 # "the version on this system".
50 *-*-darwin*,*-*-darwin*)
51 hostos=`echo $host | sed 's/.*-darwin/darwin/'`
52 targetos=`echo $target | sed 's/.*-darwin/darwin/'`
53 if test $hostos = $targetos -o $targetos = darwin ; then
54 GLIBCXX_IS_NATIVE=true
55 fi
56 ;;
57
58 *)
59 GCC_NO_EXECUTABLES
60 ;;
61 esac
0df3f383
PE
62else
63 GLIBCXX_IS_NATIVE=true
64fi
65
ff66d28f
PE
66# Sets up automake. Must come after AC_CANONICAL_SYSTEM. Each of the
67# following is magically included in AUTOMAKE_OPTIONS in each Makefile.am.
68# 1.x: minimum required version
69# no-define: PACKAGE and VERSION will not be #define'd in config.h (a bunch
70# of other PACKAGE_* variables will, however, and there's nothing
fbe057bb 71# we can do about that; they come from AC_INIT).
ff66d28f
PE
72# foreign: we don't follow the normal rules for GNU packages (no COPYING
73# file in the top srcdir, etc, etc), so stop complaining.
74# no-dependencies: turns off auto dependency generation (just for now)
2d52e9e3
PE
75# -Wall: turns on all automake warnings...
76# -Wno-portability: ...except this one, since GNU make is now required.
3a24bf5d
KC
77AM_INIT_AUTOMAKE([1.9.3 no-define foreign no-dependencies -Wall -Wno-portability -Wno-override])
78AH_TEMPLATE(PACKAGE, [Name of package])
79AH_TEMPLATE(VERSION, [Version number of package])
ff66d28f 80
ff66d28f
PE
81# Runs configure.host, finds CC, CXX, and assorted other critical bits. Sets
82# up critical shell variables.
83GLIBCXX_CONFIGURE
84
be95b355
BS
85if test "x${with_newlib}" != "xyes"; then
86 AC_LIBTOOL_DLOPEN
87fi
5780a46b 88AM_PROG_LIBTOOL
34791641
PE
89AC_SUBST(enable_shared)
90AC_SUBST(enable_static)
04e78786 91
92eabea2 92# Possibly disable most of the library.
347669a0 93## TODO: Consider skipping unncessary tests altogether in this case, rather
92eabea2
PE
94## than just ignoring the results. Faster /and/ more correct, win win.
95GLIBCXX_ENABLE_HOSTED
96
0646d8a3 97# Enable compiler support that doesn't require linking.
3d7c150e 98GLIBCXX_ENABLE_SJLJ_EXCEPTIONS
92eabea2 99GLIBCXX_ENABLE_PCH($is_hosted)
e55d0e35
BK
100GLIBCXX_ENABLE_ATOMIC_BUILTINS
101GLIBCXX_ENABLE_THREADS
102
103# Checks for compiler support that don't require linking.
104GLIBCXX_CHECK_COMPILER_FEATURES
105GLIBCXX_CHECK_STANDARD_LAYOUT
b2dad0e3 106
1894e4c5 107# Enable all the variable C++ runtime options that don't require linking.
3d7c150e
BK
108GLIBCXX_ENABLE_CSTDIO
109GLIBCXX_ENABLE_CLOCALE
8b0d6051 110GLIBCXX_ENABLE_ALLOCATOR
ff66d28f 111GLIBCXX_ENABLE_CHEADERS($c_model) dnl c_model from configure.host
3d7c150e 112GLIBCXX_ENABLE_LONG_LONG([yes])
347669a0 113GLIBCXX_ENABLE_WCHAR_T([yes])
8a9b2875 114GLIBCXX_ENABLE_C99([yes])
ff66d28f
PE
115GLIBCXX_ENABLE_CONCEPT_CHECKS([no])
116GLIBCXX_ENABLE_DEBUG_FLAGS(["-g3 -O0"])
3d7c150e 117GLIBCXX_ENABLE_DEBUG([no])
6995087d 118GLIBCXX_ENABLE_PARALLEL([yes])
ff66d28f 119GLIBCXX_ENABLE_CXX_FLAGS
1165dc50 120GLIBCXX_ENABLE_FULLY_DYNAMIC_STRING([no])
b2dad0e3 121
0646d8a3
BK
122# Checks for operating systems support that don't require linking.
123GLIBCXX_CHECK_SYSTEM_ERROR
974e336b 124
0f24e8de
PC
125# For the streamoff typedef.
126GLIBCXX_CHECK_INT64_T
127
74745ec5
PC
128# For LFS support.
129GLIBCXX_CHECK_LFS
130
131# For showmanyc_helper().
132AC_CHECK_HEADERS(sys/ioctl.h sys/filio.h)
133GLIBCXX_CHECK_POLL
134GLIBCXX_CHECK_S_ISREG_OR_S_IFREG
135
136# For xsputn_2().
137AC_CHECK_HEADERS(sys/uio.h)
138GLIBCXX_CHECK_WRITEV
139
0f24e8de
PC
140# For C99 support to TR1.
141GLIBCXX_CHECK_C99_TR1
142
dd79750c
PC
143# For common values of EOF, SEEK_CUR, SEEK_END.
144GLIBCXX_CHECK_STDIO_MACROS
974e336b 145
610870b2
PC
146# For gettimeofday support.
147GLIBCXX_CHECK_GETTIMEOFDAY
148
149# For clock_gettime support.
150# NB: The default is [no], because otherwise it requires linking.
151GLIBCXX_ENABLE_CLOCK_GETTIME([no])
152
99bf8d16
PC
153AC_LC_MESSAGES
154
74745ec5
PC
155# Check for available headers.
156AC_CHECK_HEADERS([endian.h float.h fp.h ieeefp.h inttypes.h locale.h \
157machine/endian.h machine/param.h nan.h stdint.h stdlib.h string.h \
158strings.h sys/ipc.h sys/isa_defs.h sys/machine.h sys/param.h \
159sys/resource.h sys/sem.h sys/stat.h sys/time.h sys/types.h unistd.h \
160wchar.h wctype.h])
161
6995087d 162# Only do link tests if native. Else, hardcode.
0df3f383 163if $GLIBCXX_IS_NATIVE; then
b2dad0e3 164
0df3f383
PE
165 # We can do more elaborate tests that assume a working linker.
166 CANADIAN=no
167
0df3f383
PE
168 GLIBCXX_CHECK_LINKER_FEATURES
169 GLIBCXX_CHECK_MATH_SUPPORT
0df3f383 170 GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
0df3f383
PE
171 GLIBCXX_CHECK_STDLIB_SUPPORT
172
1894e4c5 173 # For /dev/random and /dev/urandom for TR1.
d8bc9819
PC
174 GLIBCXX_CHECK_RANDOM_TR1
175
cddfb1c7
BK
176 # For TLS support.
177 GCC_CHECK_TLS
178
2e575796
SE
179 # For _Unwind_GetIPInfo.
180 GCC_CHECK_UNWIND_GETIPINFO
181
5f34ed87
BK
182 # For iconv support.
183 AM_ICONV
184
0df3f383 185else
eebc608e 186
2c839a4e
PE
187 # This lets us hard-code the functionality we know we'll have in the cross
188 # target environment. "Let" is a sugar-coated word placed on an especially
189 # dull and tedious hack, actually.
190 #
3d7c150e 191 # Here's why GLIBCXX_CHECK_MATH_SUPPORT, and other autoconf macros
2c839a4e
PE
192 # that involve linking, can't be used:
193 # "cannot open sim-crt0.o"
194 # "cannot open crt0.o"
195 # etc. All this is because there currently exists no unified, consistent
196 # way for top level CC information to be passed down to target directories:
197 # newlib includes, newlib linking info, libgloss versus newlib crt0.o, etc.
198 # When all of that is done, all of this hokey, excessive AC_DEFINE junk for
199 # crosses can be removed.
200
201 # If Canadian cross, then don't pick up tools from the build directory.
0df3f383 202 # Used only in GLIBCXX_EXPORT_INCLUDES.
ff66d28f 203 if test -n "$with_cross_host" &&
f5cf58dd 204 test x"$build_alias" != x"$with_cross_host" &&
ff66d28f
PE
205 test x"$build" != x"$target";
206 then
b2dad0e3 207 CANADIAN=yes
b2dad0e3
BK
208 else
209 CANADIAN=no
b2dad0e3
BK
210 fi
211
75940b88 212 # Construct crosses by hand, eliminating bits that need ld...
3d7c150e 213 # GLIBCXX_CHECK_MATH_SUPPORT
75940b88 214
ff66d28f
PE
215 # First, test for "known" system libraries. We may be using newlib even
216 # on a hosted environment.
217 if test "x${with_newlib}" = "xyes"; then
218 os_include_dir="os/newlib"
219 AC_DEFINE(HAVE_HYPOT)
220
221 # GLIBCXX_CHECK_STDLIB_SUPPORT
222 AC_DEFINE(HAVE_STRTOF)
ff66d28f
PE
223
224 AC_DEFINE(HAVE_ACOSF)
225 AC_DEFINE(HAVE_ASINF)
226 AC_DEFINE(HAVE_ATAN2F)
227 AC_DEFINE(HAVE_ATANF)
228 AC_DEFINE(HAVE_CEILF)
229 AC_DEFINE(HAVE_COPYSIGN)
230 AC_DEFINE(HAVE_COPYSIGNF)
231 AC_DEFINE(HAVE_COSF)
232 AC_DEFINE(HAVE_COSHF)
233 AC_DEFINE(HAVE_EXPF)
234 AC_DEFINE(HAVE_FABSF)
235 AC_DEFINE(HAVE_FLOORF)
236 AC_DEFINE(HAVE_FMODF)
237 AC_DEFINE(HAVE_FREXPF)
238 AC_DEFINE(HAVE_LDEXPF)
239 AC_DEFINE(HAVE_LOG10F)
240 AC_DEFINE(HAVE_LOGF)
241 AC_DEFINE(HAVE_MODFF)
242 AC_DEFINE(HAVE_POWF)
243 AC_DEFINE(HAVE_SINF)
244 AC_DEFINE(HAVE_SINHF)
245 AC_DEFINE(HAVE_SQRTF)
246 AC_DEFINE(HAVE_TANF)
247 AC_DEFINE(HAVE_TANHF)
517da0ce 248
5f34ed87 249 AC_DEFINE(HAVE_ICONV)
ff66d28f 250 else
c41f82b2 251 GLIBCXX_CROSSCONFIG
ff66d28f 252 fi
75940b88
SE
253
254 # At some point, we should differentiate between architectures
255 # like x86, which have long double versions, and alpha/powerpc/etc.,
256 # which don't. For the time being, punt.
257 if test x"long_double_math_on_this_cpu" = x"yes"; then
258 AC_DEFINE(HAVE_ACOSL)
259 AC_DEFINE(HAVE_ASINL)
260 AC_DEFINE(HAVE_ATAN2L)
261 AC_DEFINE(HAVE_ATANL)
262 AC_DEFINE(HAVE_CEILL)
263 AC_DEFINE(HAVE_COPYSIGNL)
264 AC_DEFINE(HAVE_COSL)
265 AC_DEFINE(HAVE_COSHL)
266 AC_DEFINE(HAVE_EXPL)
267 AC_DEFINE(HAVE_FABSL)
75940b88
SE
268 AC_DEFINE(HAVE_FLOORL)
269 AC_DEFINE(HAVE_FMODL)
270 AC_DEFINE(HAVE_FREXPL)
75940b88
SE
271 AC_DEFINE(HAVE_LDEXPL)
272 AC_DEFINE(HAVE_LOG10L)
273 AC_DEFINE(HAVE_LOGL)
274 AC_DEFINE(HAVE_MODFL)
275 AC_DEFINE(HAVE_POWL)
276 AC_DEFINE(HAVE_SINCOSL)
277 AC_DEFINE(HAVE_SINL)
278 AC_DEFINE(HAVE_SINHL)
279 AC_DEFINE(HAVE_SQRTL)
280 AC_DEFINE(HAVE_TANL)
281 AC_DEFINE(HAVE_TANHL)
282 fi
2c839a4e 283
2e575796
SE
284 # Assume we have _Unwind_GetIPInfo for cross-compiles.
285 AC_DEFINE(HAVE_GETIPINFO)
b2dad0e3
BK
286fi
287
0f3e711e
JJ
288GCC_LINUX_FUTEX([AC_DEFINE(HAVE_LINUX_FUTEX, 1, [Define if futex syscall is available.])])
289
ed0840ba
AT
290GCC_HEADER_STDINT(include/gstdint.h)
291
ff66d28f 292# This depends on GLIBCXX CHECK_LINKER_FEATURES, but without it assumes no.
3d7c150e 293GLIBCXX_ENABLE_SYMVERS([yes])
98e615b4 294GLIBCXX_ENABLE_VISIBILITY([yes])
fe413112 295
6defecc2
JJ
296ac_ldbl_compat=no
297case "$target" in
f7cc5390
JM
298 powerpc*-*-linux* | \
299 powerpc*-*-gnu* | \
6defecc2
JJ
300 sparc*-*-linux* | \
301 s390*-*-linux* | \
302 alpha*-*-linux*)
303 AC_TRY_COMPILE(, [
304#if !defined __LONG_DOUBLE_128__ || (defined(__sparc__) && defined(__arch64__))
305#error no need for long double compatibility
306#endif
307 ], [ac_ldbl_compat=yes], [ac_ldbl_compat=no])
308 if test "$ac_ldbl_compat" = yes; then
309 AC_DEFINE([_GLIBCXX_LONG_DOUBLE_COMPAT],1,
310 [Define if compatibility should be provided for -mlong-double-64.])
311 port_specific_symbol_files="\$(top_srcdir)/config/os/gnu-linux/ldbl-extra.ver"
312 fi
313esac
314GLIBCXX_CONDITIONAL(GLIBCXX_LDBL_COMPAT, test $ac_ldbl_compat = yes)
315
ff66d28f 316# This depends on GLIBCXX_ENABLE_SYMVERS and GLIBCXX_IS_NATIVE.
3d7c150e 317GLIBCXX_CONFIGURE_TESTSUITE
c4c064e7 318
4a9d5109 319# Propagate the target-specific source directories through the build chain.
2c5d0ae8
BK
320ATOMICITY_SRCDIR=config/${atomicity_dir}
321ATOMIC_WORD_SRCDIR=config/${atomic_word_dir}
c2ba9709 322ATOMIC_FLAGS=${atomic_flags}
4b90c838 323CPU_DEFINES_SRCDIR=config/${cpu_defines_dir}
cc5112c9 324OS_INC_SRCDIR=config/${os_include_dir}
e4bf5dfc 325ERROR_CONSTANTS_SRCDIR=config/${error_constants_dir}
1568430f 326ABI_TWEAKS_SRCDIR=config/${abi_tweaks_dir}
2c5d0ae8
BK
327AC_SUBST(ATOMICITY_SRCDIR)
328AC_SUBST(ATOMIC_WORD_SRCDIR)
c2ba9709 329AC_SUBST(ATOMIC_FLAGS)
4b90c838 330AC_SUBST(CPU_DEFINES_SRCDIR)
1568430f 331AC_SUBST(ABI_TWEAKS_SRCDIR)
cc5112c9 332AC_SUBST(OS_INC_SRCDIR)
e4bf5dfc 333AC_SUBST(ERROR_CONSTANTS_SRCDIR)
cc5112c9 334
9268b7cb 335
ff66d28f
PE
336# Determine cross-compile flags and AM_CONDITIONALs.
337#AC_SUBST(GLIBCXX_IS_NATIVE)
0df3f383 338#AM_CONDITIONAL(CANADIAN, test $CANADIAN = yes)
ff66d28f 339# from GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT:
0df3f383 340#AM_CONDITIONAL(GLIBCXX_BUILD_LIBMATH, test $need_libmath = yes)
92eabea2 341GLIBCXX_EVALUATE_CONDITIONALS
c4d3f801 342
5e53dba6 343AC_CACHE_SAVE
b2dad0e3 344
ff66d28f 345if test ${multilib} = yes; then
b2dad0e3
BK
346 multilib_arg="--enable-multilib"
347else
348 multilib_arg=
349fi
350
0df3f383 351# Export all the install information.
3d7c150e 352GLIBCXX_EXPORT_INSTALL_INFO
1fd2f510 353
6aa43d99 354# Export all the include and flag information to Makefiles.
3d7c150e
BK
355GLIBCXX_EXPORT_INCLUDES
356GLIBCXX_EXPORT_FLAGS
e466dc8a 357
94872c09
SE
358if test "$enable_shared" = yes; then
359 LIBSUPCXX_PICFLAGS="-prefer-pic"
f8e4b51d
AO
360else
361 LIBSUPCXX_PICFLAGS=
362fi
363AC_SUBST(LIBSUPCXX_PICFLAGS)
364
ff66d28f
PE
365dnl In autoconf 2.5x, AC_OUTPUT is replaced by four AC_CONFIG_* macros,
366dnl which can all be called multiple times as needed, plus one (different)
65fc9769 367dnl AC_OUTPUT macro. This one lists the files to be created:
82ba99d5 368AC_CONFIG_FILES( \
ff66d28f 369 Makefile \
82ba99d5
PE
370 AC_FOREACH([DIR], glibcxx_SUBDIRS, [DIR/Makefile ])
371 )
ff66d28f
PE
372AC_CONFIG_FILES([scripts/testsuite_flags],[chmod +x scripts/testsuite_flags])
373
374dnl These commands are run at the end of config.status:
375AC_CONFIG_COMMANDS([default],
376[if test -n "$CONFIG_FILES"; then
377 # Multilibs need MULTISUBDIR defined correctly in certain makefiles so
378 # that multilib installs will end up installed in the correct place.
379 # The testsuite needs it for multilib-aware ABI baseline files.
380 # To work around this not being passed down from config-ml.in ->
381 # srcdir/Makefile.am -> srcdir/{src,libsupc++,...}/Makefile.am, manually
382 # append it here. Only modify Makefiles that have just been created.
0df3f383
PE
383 #
384 # Also, get rid of this simulated-VPATH thing that automake does.
385 cat > vpsed << \_EOF
386s!`test -f '$<' || echo '$(srcdir)/'`!!
387_EOF
82ba99d5 388 for i in $SUBDIRS; do
ff66d28f
PE
389 case $CONFIG_FILES in
390 *${i}/Makefile*)
391 #echo "Adding MULTISUBDIR to $i/Makefile"
0df3f383
PE
392 sed -f vpsed $i/Makefile > tmp
393 grep '^MULTISUBDIR =' Makefile >> tmp
394 mv tmp $i/Makefile
ff66d28f
PE
395 ;;
396 esac
397 done
0df3f383 398 rm vpsed
38a9323a 399 fi
ff66d28f
PE
400 (cd include && ${MAKE-make})
401],
402[
82ba99d5
PE
403# Variables needed in config.status (file generation) which aren't already
404# passed by autoconf.
405SUBDIRS="$SUBDIRS"
ff66d28f
PE
406])
407
408dnl And this actually makes things happen:
409AC_OUTPUT