]> git.ipfire.org Git - thirdparty/gcc.git/blame - libgo/configure.ac
PR c++/81236 - ICE with template-id in generic lambda
[thirdparty/gcc.git] / libgo / configure.ac
CommitLineData
7a938933
ILT
1# configure.ac -- Go library configure script.
2
3# Copyright 2009 The Go Authors. All rights reserved.
4# Use of this source code is governed by a BSD-style
5# license that can be found in the LICENSE file.
6
7# Process this file with autoreconf to produce configure.
8
9AC_PREREQ(2.64)
10AC_INIT(package-unused, version-unused,, libgo)
11AC_CONFIG_SRCDIR(Makefile.am)
12AC_CONFIG_HEADER(config.h)
13
a0488df4 14libtool_VERSION=11:0:0
7a938933
ILT
15AC_SUBST(libtool_VERSION)
16
17AM_ENABLE_MULTILIB(, ..)
18
19AC_CANONICAL_SYSTEM
20target_alias=${target_alias-$host_alias}
21
ee6440f8 22AM_INIT_AUTOMAKE([1.9.3 no-define foreign no-dist -Wall -Wno-portability])
7a938933
ILT
23AH_TEMPLATE(PACKAGE, [Name of package])
24AH_TEMPLATE(VERSION, [Version number of package])
25
26m4_rename([_AC_ARG_VAR_PRECIOUS],[glibgo_PRECIOUS])
27m4_define([_AC_ARG_VAR_PRECIOUS],[])
28AC_PROG_CC
29AC_PROG_GO
30m4_rename_force([glibgo_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
31
32AC_SUBST(CFLAGS)
33
f163907e
ILT
34case ${host} in
35 *-*-aix*)
36 # static hash tables crashes on AIX when libgo is built with O2
37 CFLAGS="$CFLAGS -fno-section-anchors"
38 GOCFLAGS="$GOCFLAGS -fno-section-anchors"
39 ;;
40esac
41
7a938933
ILT
42AM_MAINTAINER_MODE
43
44AC_PROG_LD
45AC_PROG_RANLIB
46AC_CHECK_TOOL(OBJCOPY, objcopy, missing-objcopy)
47
48AC_LIBTOOL_DLOPEN
49AM_PROG_LIBTOOL
50AC_SUBST(enable_shared)
51AC_SUBST(enable_static)
52
d983a802
ILT
53CC_FOR_BUILD=${CC_FOR_BUILD:-gcc}
54AC_SUBST(CC_FOR_BUILD)
55
de27caac
ILT
56AC_PROG_AWK
57
7a938933
ILT
58WARN_FLAGS='-Wall -Wextra -Wwrite-strings -Wcast-qual'
59AC_SUBST(WARN_FLAGS)
60
0d4668c1
ILT
61AC_ARG_ENABLE(werror, [AS_HELP_STRING([--enable-werror],
62 [turns on -Werror @<:@default=yes@:>@])])
63if test "x$enable_werror" != "xno"; then
64 WERROR="-Werror"
65fi
7a938933
ILT
66AC_SUBST(WERROR)
67
68glibgo_toolexecdir=no
69glibgo_toolexeclibdir=no
7a938933
ILT
70
71AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
72AC_ARG_ENABLE([version-specific-runtime-libs],
73 AC_HELP_STRING([--enable-version-specific-runtime-libs],
74 [Specify that runtime libraries should be installed in a compiler-specific directory]),
75 [case "$enableval" in
76 yes) version_specific_libs=yes ;;
77 no) version_specific_libs=no ;;
78 *) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
79 esac],
80 [version_specific_libs=no])
81AC_MSG_RESULT($version_specific_libs)
82
83# Version-specific runtime libs processing.
84if test $version_specific_libs = yes; then
85 glibgo_toolexecdir='${libdir}/gcc/${host_alias}'
86 glibgo_toolexeclibdir='${toolexecdir}/${gcc_version}$(MULTISUBDIR)'
87fi
88
89# Calculate glibgo_toolexecdir, glibgo_toolexeclibdir
90# Install a library built with a cross compiler in tooldir, not libdir.
317ea7c0
ILT
91if test -n "$with_cross_host" &&
92 test x"$with_cross_host" != x"no"; then
93 nover_glibgo_toolexecdir='${exec_prefix}/${host_alias}'
94 nover_glibgo_toolexeclibdir='${toolexecdir}/lib'
95else
96 nover_glibgo_toolexecdir='${libdir}/gcc/${host_alias}'
97 nover_glibgo_toolexeclibdir='${libdir}'
98fi
6c76a95d 99multi_os_directory=`$GOC -print-multi-os-directory`
317ea7c0
ILT
100case $multi_os_directory in
101 .) ;; # Avoid trailing /.
102 *) nover_glibgo_toolexeclibdir=${nover_glibgo_toolexeclibdir}/${multi_os_directory} ;;
103esac
104
7a938933 105if test x"$glibgo_toolexecdir" = x"no"; then
317ea7c0
ILT
106 glibgo_toolexecdir="${nover_glibgo_toolexecdir}"
107 glibgo_toolexeclibdir="${nover_glibgo_toolexeclibdir}"
7a938933
ILT
108fi
109
7a938933
ILT
110AC_SUBST(glibgo_toolexecdir)
111AC_SUBST(glibgo_toolexeclibdir)
317ea7c0 112AC_SUBST(nover_glibgo_toolexeclibdir)
7a938933
ILT
113
114# See if the user wants to configure without libffi. Some
115# architectures don't support it. FIXME: We should set a default
116# based on the host.
117AC_ARG_WITH(libffi,
118 AS_HELP_STRING([--without-libffi],
119 [don't use libffi]),
120 [:],
121 [with_libffi=${with_libffi_default-yes}])
122
123LIBFFI=
124LIBFFIINCS=
125if test "$with_libffi" != no; then
126 AC_DEFINE(USE_LIBFFI, 1, [Define if we're to use libffi.])
127 LIBFFI=../libffi/libffi_convenience.la
128 LIBFFIINCS='-I$(top_srcdir)/../libffi/include -I../libffi/include'
129fi
130AC_SUBST(LIBFFI)
131AC_SUBST(LIBFFIINCS)
5302cd02 132AM_CONDITIONAL(USE_LIBFFI, test "$with_liffi" != "no")
7a938933 133
9a85ed03
ILT
134# See if the user wants to configure without libatomic. This is useful if we are
135# on an architecture for which libgo does not need an atomic support library and
136# libatomic does not support our C compiler.
137AC_ARG_WITH(libatomic,
138 AS_HELP_STRING([--without-libatomic],
139 [don't use libatomic]),
140 [:],
141 [with_libatomic=${with_libatomic_default-yes}])
142
143LIBATOMIC=
144if test "$with_libatomic" != no; then
145 LIBATOMIC=../libatomic/libatomic_convenience.la
146fi
147AC_SUBST(LIBATOMIC)
148
18c70075
ILT
149# Used to tell GNU make to include a file without telling automake to
150# include it.
151go_include="-include"
152AC_SUBST(go_include)
153
a8464243
ILT
154# All known GOOS values. This is the union of all operating systems
155# supported by the gofrontend and all operating systems supported by
156# the gc toolchain.
f163907e 157ALLGOOS="aix android darwin dragonfly freebsd irix linux netbsd openbsd plan9 rtems solaris windows"
a8464243 158
7a938933
ILT
159is_darwin=no
160is_freebsd=no
654d2ec0 161is_irix=no
7a938933 162is_linux=no
1efa38d1 163is_netbsd=no
4ccad563 164is_openbsd=no
f038dae6 165is_dragonfly=no
7a938933 166is_rtems=no
f2ee78b8 167is_solaris=no
f163907e 168is_aix=no
c3b5b97b 169GOOS=unknown
7a938933 170case ${host} in
f2ee78b8
ILT
171 *-*-darwin*) is_darwin=yes; GOOS=darwin ;;
172 *-*-freebsd*) is_freebsd=yes; GOOS=freebsd ;;
654d2ec0 173 *-*-irix6*) is_irix=yes; GOOS=irix ;;
f2ee78b8 174 *-*-linux*) is_linux=yes; GOOS=linux ;;
df4aa89a 175 *-*-netbsd*) is_netbsd=yes; GOOS=netbsd ;;
4ccad563 176 *-*-openbsd*) is_openbsd=yes; GOOS=openbsd ;;
f038dae6 177 *-*-dragonfly*) is_dragonfly=yes; GOOS=dragonfly ;;
f2ee78b8
ILT
178 *-*-rtems*) is_rtems=yes; GOOS=rtems ;;
179 *-*-solaris2*) is_solaris=yes; GOOS=solaris ;;
f163907e 180 *-*-aix*) is_aix=yes; GOOS=aix ;;
7a938933
ILT
181esac
182AM_CONDITIONAL(LIBGO_IS_DARWIN, test $is_darwin = yes)
183AM_CONDITIONAL(LIBGO_IS_FREEBSD, test $is_freebsd = yes)
654d2ec0 184AM_CONDITIONAL(LIBGO_IS_IRIX, test $is_irix = yes)
7a938933 185AM_CONDITIONAL(LIBGO_IS_LINUX, test $is_linux = yes)
df4aa89a 186AM_CONDITIONAL(LIBGO_IS_NETBSD, test $is_netbsd = yes)
4ccad563 187AM_CONDITIONAL(LIBGO_IS_OPENBSD, test $is_openbsd = yes)
824393bd 188AM_CONDITIONAL(LIBGO_IS_DRAGONFLY, test $is_dragonfly = yes)
7a938933 189AM_CONDITIONAL(LIBGO_IS_RTEMS, test $is_rtems = yes)
f2ee78b8 190AM_CONDITIONAL(LIBGO_IS_SOLARIS, test $is_solaris = yes)
f163907e 191AM_CONDITIONAL(LIBGO_IS_AIX, test $is_aix = yes)
22b955cc 192AM_CONDITIONAL(LIBGO_IS_BSD, test $is_darwin = yes -o $is_dragonfly = yes -o $is_freebsd = yes -o $is_netbsd = yes -o $is_openbsd = yes)
c3b5b97b 193AC_SUBST(GOOS)
a8464243 194AC_SUBST(ALLGOOS)
7a938933 195
7134cf28
ILT
196dnl Test whether we need to use DejaGNU or whether we can use the
197dnl simpler gotest approach. We can only use gotest for a native
198dnl build.
199USE_DEJAGNU=no
200case ${host} in
201 *-*-rtems*) USE_DEJAGNU=yes ;;
553752e1 202 ${build}) ;;
7134cf28
ILT
203 *) USE_DEJAGNU=yes ;;
204esac
205AC_SUBST(USE_DEJAGNU)
206
a8464243
ILT
207# All known GOARCH values. This is the union of all architectures
208# supported by the gofrontend and all architectures supported by the
209# gc toolchain.
210# N.B. Keep in sync with gcc/testsuite/go.test/go-test.exp (go-set-goarch).
b95cd48b 211ALLGOARCH="386 alpha amd64 amd64p32 arm armbe arm64 arm64be ia64 m68k mips mipsle mips64 mips64le mips64p32 mips64p32le ppc ppc64 ppc64le s390 s390x sparc sparc64"
a8464243
ILT
212
213# All known GOARCH_FAMILY values.
214ALLGOARCHFAMILY="I386 ALPHA AMD64 ARM ARM64 IA64 M68K MIPS MIPS64 PPC PPC64 S390 S390X SPARC SPARC64"
215
c3b5b97b 216GOARCH=unknown
a8464243
ILT
217GOARCH_FAMILY=unknown
218GOARCH_BIGENDIAN=0
219GOARCH_CACHELINESIZE=64
220GOARCH_PHYSPAGESIZE=4096
221GOARCH_PCQUANTUM=1
222GOARCH_INT64ALIGN=8
223GOARCH_HUGEPAGESIZE=0
224GOARCH_MINFRAMESIZE=0
7a938933 225case ${host} in
e59b9171 226 alpha*-*-*)
e59b9171 227 GOARCH=alpha
a8464243
ILT
228 GOARCH_FAMILY=ALPHA
229 GOARCH_PHYSPAGESIZE=8192
230 GOARCH_PCQUANTUM=4
e59b9171 231 ;;
71d0d50a 232 aarch64-*-*)
71d0d50a 233 GOARCH=arm64
a8464243
ILT
234 GOARCH_FAMILY=ARM64
235 GOARCH_CACHELINESIZE=32
236 GOARCH_PHYSPAGESIZE=65536
f6c7d678 237 GOARCH_PCQUANTUM=4
a8464243 238 GOARCH_MINFRAMESIZE=8
71d0d50a 239 ;;
ca11cc98 240 arm*-*-* | strongarm*-*-* | ep9312*-*-* | xscale-*-*)
ca11cc98 241 GOARCH=arm
a8464243
ILT
242 GOARCH_FAMILY=ARM
243 GOARCH_CACHELINESIZE=32
244 GOARCH_PCQUANTUM=4
a8464243 245 GOARCH_MINFRAMESIZE=4
ca11cc98 246 ;;
7a938933 247changequote(,)dnl
c3b5b97b 248 i[34567]86-*-* | x86_64-*-*)
7a938933 249changequote([,])dnl
4a299bf4 250 AC_COMPILE_IFELSE([
c3b5b97b
ILT
251#ifdef __x86_64__
252#error 64-bit
253#endif],
a8464243
ILT
254[GOARCH=386
255GOARCH_FAMILY=I386
256GOARCH_INT64ALIGN=4
257GOARCH_HUGEPAGESIZE="1 << 21"
258],
259[GOARCH=amd64
260GOARCH_FAMILY=AMD64
261GOARCH_HUGEPAGESIZE="1 << 21"
262])
7a938933 263 ;;
4f8e688a 264 ia64-*-*)
4f8e688a 265 GOARCH=ia64
a8464243
ILT
266 GOARCH_FAMILY=IA64
267 GOARCH_CACHELINESIZE=16384
307dde6f 268 GOARCH_PHYSPAGESIZE=65536
4f8e688a 269 ;;
ca11cc98 270 m68k*-*-*)
ca11cc98 271 GOARCH=m68k
a8464243
ILT
272 GOARCH_FAMILY=M68K
273 GOARCH_BIGENDIAN=1
274 GOARCH_CACHELINESIZE=16
275 GOARCH_PCQUANTUM=4
0f366729 276 GOARCH_INT64ALIGN=2
ca11cc98
ILT
277 ;;
278 mips*-*-*)
4a299bf4 279 AC_COMPILE_IFELSE([
85a09210
ILT
280#if _MIPS_SIM != _ABIO32
281#error not o32
ca11cc98 282#endif],
85a09210
ILT
283[mips_abi="o32"],
284 [AC_COMPILE_IFELSE([
285#if _MIPS_SIM != _ABIN32
286#error not n32
287#endif],
288[mips_abi="n32"],
289 [AC_COMPILE_IFELSE([
290#if _MIPS_SIM != _ABI64
291#error not n64
292#endif],
293[mips_abi="n64"],
85a09210 294 [AC_MSG_ERROR([unknown MIPS ABI])
b95cd48b 295[mips_abi="n32"]])])])
85a09210 296 case "$mips_abi" in
1701a9d8
ILT
297 "o32") GOARCH=mips ;;
298 "n32") GOARCH=mips64p32 ;;
299 "n64") GOARCH=mips64 ;;
85a09210 300 esac
a8464243
ILT
301 case "$mips_abi" in
302 "o32" | "n32")
303 GOARCH_FAMILY=MIPS
a8464243
ILT
304 GOARCH_MINFRAMESIZE=4
305 ;;
b95cd48b 306 "n64")
a8464243
ILT
307 GOARCH_FAMILY=MIPS64
308 GOARCH_MINFRAMESIZE=8
309 ;;
310 esac
311 case "${host}" in
1701a9d8
ILT
312 mips*el-*-*)
313 GOARCH="${GOARCH}le"
a8464243
ILT
314 ;;
315 *)
316 GOARCH_BIGENDIAN=1
317 ;;
318 esac
319 GOARCH_CACHELINESIZE=32
320 GOARCH_PHYSPAGESIZE=16384
321 GOARCH_PCQUANTUM=4
ca11cc98
ILT
322 ;;
323 rs6000*-*-* | powerpc*-*-*)
4a299bf4 324 AC_COMPILE_IFELSE([
ca11cc98
ILT
325#ifdef _ARCH_PPC64
326#error 64-bit
327#endif],
a8464243
ILT
328[GOARCH=ppc
329GOARCH_FAMILY=PPC
330GOARCH_BIGENDIAN=1
a8464243
ILT
331],
332 [
333GOARCH_FAMILY=PPC64
334AC_COMPILE_IFELSE([
6f7ccafa
ILT
335#if defined(_BIG_ENDIAN) || defined(__BIG_ENDIAN__)
336#error 64be
337#endif],
a8464243
ILT
338[GOARCH=ppc64le
339],
340[GOARCH=ppc64
341GOARCH_BIGENDIAN=1
342])])
343 GOARCH_PHYSPAGESIZE=65536
344 GOARCH_PCQUANTUM=4
345 GOARCH_MINFRAMESIZE=32
7a938933 346 ;;
1fec5f52
ILT
347 s390*-*-*)
348 AC_COMPILE_IFELSE([
349#if defined(__s390x__)
350#error 64-bit
351#endif],
a8464243
ILT
352[GOARCH=s390
353GOARCH_FAMILY=S390
a8464243
ILT
354GOARCH_MINFRAMESIZE=4
355], [GOARCH=s390x
356GOARCH_FAMILY=S390X
357GOARCH_MINFRAMESIZE=8
358])
359 GOARCH_BIGENDIAN=1
360 GOARCH_CACHELINESIZE=256
361 GOARCH_PCQUANTUM=2
1fec5f52 362 ;;
f2ee78b8 363 sparc*-*-*)
4a299bf4 364 AC_COMPILE_IFELSE([
f2ee78b8
ILT
365#if defined(__sparcv9) || defined(__arch64__)
366#error 64-bit
367#endif],
a8464243
ILT
368[GOARCH=sparc
369GOARCH_FAMILY=SPARC
a8464243
ILT
370],
371[GOARCH=sparc64
372GOARCH_FAMILY=SPARC64
373])
374 GOARCH_BIGENDIAN=1
375 GOARCH_PHYSPAGESIZE=8192
376 GOARCH_PCQUANTUM=4
f2ee78b8 377 ;;
7a938933 378esac
c3b5b97b 379AC_SUBST(GOARCH)
a8464243
ILT
380AC_SUBST(GOARCH_FAMILY)
381AC_SUBST(GOARCH_BIGENDIAN)
382AC_SUBST(GOARCH_CACHELINESIZE)
383AC_SUBST(GOARCH_PHYSPAGESIZE)
384AC_SUBST(GOARCH_PCQUANTUM)
385AC_SUBST(GOARCH_INT64ALIGN)
386AC_SUBST(GOARCH_HUGEPAGESIZE)
387AC_SUBST(GOARCH_MINFRAMESIZE)
388AC_SUBST(ALLGOARCH)
389AC_SUBST(ALLGOARCHFAMILY)
7a938933 390
ca11cc98 391dnl Some files are only present when needed for specific architectures.
de27caac
ILT
392GO_LIBCALL_OS_FILE=
393GO_LIBCALL_OS_ARCH_FILE=
394GO_SYSCALL_OS_FILE=
395GO_SYSCALL_OS_ARCH_FILE=
204b9fc2
ILT
396if test -f "${srcdir}/go/syscall/libcall_${GOOS}.go"; then
397 GO_LIBCALL_OS_FILE="go/syscall/libcall_${GOOS}.go"
de27caac 398fi
204b9fc2
ILT
399if test -f "${srcdir}/go/syscall/libcall_${GOOS}_${GOARCH}.go"; then
400 GO_LIBCALL_OS_ARCH_FILE="go/syscall/libcall_${GOOS}_${GOARCH}.go"
de27caac 401fi
204b9fc2
ILT
402if test -f "${srcdir}/go/syscall/syscall_${GOOS}.go"; then
403 GO_SYSCALL_OS_FILE="go/syscall/syscall_${GOOS}.go"
de27caac 404fi
204b9fc2
ILT
405if test -f "${srcdir}/go/syscall/syscall_${GOOS}_${GOARCH}.go"; then
406 GO_SYSCALL_OS_ARCH_FILE="go/syscall/syscall_${GOOS}_${GOARCH}.go"
ca11cc98 407fi
de27caac
ILT
408AC_SUBST(GO_LIBCALL_OS_FILE)
409AC_SUBST(GO_LIBCALL_OS_ARCH_FILE)
410AC_SUBST(GO_SYSCALL_OS_FILE)
411AC_SUBST(GO_SYSCALL_OS_ARCH_FILE)
ca11cc98 412
d48be5df
ILT
413dnl Special flags used to generate sysinfo.go.
414OSCFLAGS="-D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
90630d19 415case "$target" in
9f3b1e6c
ILT
416 mips-sgi-irix6.5*)
417 # IRIX 6 needs _XOPEN_SOURCE=500 for the XPG5 version of struct
418 # msghdr in <sys/socket.h>.
d48be5df 419 OSCFLAGS="$OSCFLAGS -D_XOPEN_SOURCE=500"
9f3b1e6c 420 ;;
90630d19
ILT
421 *-*-solaris2.1[[01]])
422 # Solaris 10+ needs this so struct msghdr gets the msg_control
bbe847a1 423 # etc. fields in <sys/socket.h> (_XPG4_2). _XOPEN_SOURCE=600 as
90630d19 424 # above doesn't work with C99.
bbe847a1 425 OSCFLAGS="$OSCFLAGS -std=gnu99 -D_XOPEN_SOURCE=600 -D__EXTENSIONS__"
90630d19
ILT
426 ;;
427esac
428AC_SUBST(OSCFLAGS)
429
08934aed
ILT
430dnl Check if assembler supports disabling hardware capability support.
431GCC_CHECK_ASSEMBLER_HWCAP
c3c54e0f 432
7a938933
ILT
433dnl Use -fsplit-stack when compiling C code if available.
434AC_CACHE_CHECK([whether -fsplit-stack is supported],
f2ee78b8 435[libgo_cv_c_split_stack_supported],
7a938933
ILT
436[CFLAGS_hold=$CFLAGS
437CFLAGS="$CFLAGS -fsplit-stack"
438AC_COMPILE_IFELSE([[int i;]],
f2ee78b8
ILT
439[libgo_cv_c_split_stack_supported=yes],
440[libgo_cv_c_split_stack_supported=no])
7a938933 441CFLAGS=$CFLAGS_hold])
c33c18cd
ILT
442
443dnl Make sure the linker permits -fsplit-stack. Old versions of gold will
444dnl reject split-stack code calling non-split-stack code on targets
445dnl they don't support.
446AC_CACHE_CHECK([whether linker supports split/non-split linked together],
447[libgo_cv_c_linker_split_non_split],
448[cat > conftest1.c << EOF
449extern void f();
450int main() { f(); return 0; }
451EOF
452cat > conftest2.c << EOF
453void f() {}
454EOF
207f844e
ILT
455$CC -c -fsplit-stack $CFLAGS $CPPFLAGS conftest1.c >/dev/null 2>&1
456$CC -c $CFLAGS $CPPFLAGS conftest2.c > /dev/null 2>&1
457if $CC -o conftest conftest1.$ac_objext conftest2.$ac_objext > /dev/null 2>&1; then
c33c18cd
ILT
458 libgo_cv_c_linker_split_non_split=yes
459else
460 libgo_cv_c_linker_split_non_split=no
461fi
462rm -f conftest1.* conftest2.* conftest])
463
464if test "$libgo_cv_c_split_stack_supported" = yes -a "$libgo_cv_c_linker_split_non_split" = yes; then
7a938933
ILT
465 SPLIT_STACK=-fsplit-stack
466 AC_DEFINE(USING_SPLIT_STACK, 1,
467 [Define if the compiler supports -fsplit-stack])
468else
469 SPLIT_STACK=
470fi
471AC_SUBST(SPLIT_STACK)
472AM_CONDITIONAL(USING_SPLIT_STACK,
c33c18cd 473 test "$libgo_cv_c_split_stack_supported" = yes -a "$libgo_cv_c_linker_split_non_split" = yes)
7a938933 474
a2bf11d1
ILT
475dnl If the compiler supports split-stack but the linker does not, then
476dnl we need to explicitly disable split-stack for Go.
477if test "$libgo_cv_c_split_stack_supported" = yes -a "$libgo_cv_c_linker_split_non_split" = no; then
478 GO_SPLIT_STACK=-fno-split-stack
479else
480 GO_SPLIT_STACK=
481fi
482AC_SUBST(GO_SPLIT_STACK)
483
7a938933
ILT
484dnl Check whether the linker does stack munging when calling from
485dnl split-stack into non-split-stack code. We check this by looking
486dnl at the --help output. FIXME: This is only half right: it's
487dnl possible for the linker to support this for some targets but not
488dnl others.
c33c18cd
ILT
489dnl This is slightly different from the above check, which is whether
490dnl the linker permits the call at all.
7a938933 491AC_CACHE_CHECK([whether linker supports split stack],
f2ee78b8 492[libgo_cv_c_linker_supports_split_stack],
f56c5dd1
ILT
493[libgo_cv_c_linker_supports_split_stack=no
494if $GOC -Wl,--help 2>/dev/null | grep split-stack-adjust-size >/dev/null 2>&1; then
f2ee78b8 495 libgo_cv_c_linker_supports_split_stack=yes
f56c5dd1 496fi])
f2ee78b8 497if test "$libgo_cv_c_linker_supports_split_stack" = yes; then
7a938933
ILT
498 AC_DEFINE(LINKER_SUPPORTS_SPLIT_STACK, 1,
499 [Define if the linker support split stack adjustments])
500fi
501
4c46b5f0
ILT
502AC_CACHE_CHECK([whether compiler is llgo],
503[libgo_cv_c_goc_is_llgo],
504[libgo_cv_c_goc_is_llgo=no
505if $GOC -dumpversion 2>/dev/null | grep llgo >/dev/null 2>&1; then
506 libgo_cv_c_goc_is_llgo=yes
507fi])
508AM_CONDITIONAL(GOC_IS_LLGO, test "$libgo_cv_c_goc_is_llgo" = yes)
509
505b439a
ILT
510dnl Test for the -lm library.
511MATH_LIBS=
512AC_CHECK_LIB([m], [sqrt], MATH_LIBS=-lm)
513AC_SUBST(MATH_LIBS)
514
f2ee78b8
ILT
515dnl Test for -lsocket and -lnsl. Copied from libjava/configure.ac.
516AC_CACHE_CHECK([for socket libraries], libgo_cv_lib_sockets,
517 [libgo_cv_lib_sockets=
518 libgo_check_both=no
519 AC_CHECK_FUNC(connect, libgo_check_socket=no, libgo_check_socket=yes)
520 if test "$libgo_check_socket" = "yes"; then
521 unset ac_cv_func_connect
522 AC_CHECK_LIB(socket, main, libgo_cv_lib_sockets="-lsocket",
523 libgo_check_both=yes)
524 fi
525 if test "$libgo_check_both" = "yes"; then
526 libgo_old_libs=$LIBS
527 LIBS="$LIBS -lsocket -lnsl"
528 unset ac_cv_func_accept
529 AC_CHECK_FUNC(accept,
530 [libgo_check_nsl=no
531 libgo_cv_lib_sockets="-lsocket -lnsl"])
532 unset ac_cv_func_accept
533 LIBS=$libgo_old_libs
534 fi
535 unset ac_cv_func_gethostbyname
536 libgo_old_libs="$LIBS"
537 AC_CHECK_FUNC(gethostbyname, ,
538 [AC_CHECK_LIB(nsl, main,
539 [libgo_cv_lib_sockets="$libgo_cv_lib_sockets -lnsl"])])
540 unset ac_cv_func_gethostbyname
88cf4de8
ILT
541 AC_CHECK_FUNC(sendfile, ,
542 [AC_CHECK_LIB(sendfile, main,
543 [libgo_cv_lib_sockets="$libgo_cv_lib_sockets -lsendfile"])])
f2ee78b8
ILT
544 LIBS=$libgo_old_libs
545])
546NET_LIBS="$libgo_cv_lib_sockets"
547AC_SUBST(NET_LIBS)
548
6c94a9fa
ILT
549dnl Test whether the compiler supports the -pthread option.
550AC_CACHE_CHECK([whether -pthread is supported],
f2ee78b8 551[libgo_cv_lib_pthread],
6c94a9fa
ILT
552[CFLAGS_hold=$CFLAGS
553CFLAGS="$CFLAGS -pthread"
554AC_COMPILE_IFELSE([[int i;]],
f2ee78b8
ILT
555[libgo_cv_lib_pthread=yes],
556[libgo_cv_lib_pthread=no])
6c94a9fa
ILT
557CFLAGS=$CFLAGS_hold])
558PTHREAD_CFLAGS=
f2ee78b8 559if test "$libgo_cv_lib_pthread" = yes; then
6c94a9fa
ILT
560 PTHREAD_CFLAGS=-pthread
561fi
562AC_SUBST(PTHREAD_CFLAGS)
563
564dnl Test for the -lpthread library.
565PTHREAD_LIBS=
566AC_CHECK_LIB([pthread], [pthread_create], PTHREAD_LIBS=-lpthread)
567AC_SUBST(PTHREAD_LIBS)
568
bbbe8b33 569dnl Test if -lrt is required for sched_yield or nanosleep or clock_gettime.
ed4ebabc 570AC_SEARCH_LIBS([sched_yield], [rt])
ae135907 571AC_SEARCH_LIBS([nanosleep], [rt])
bbbe8b33 572AC_SEARCH_LIBS([clock_gettime], [rt])
ed4ebabc 573
7a938933
ILT
574AC_C_BIGENDIAN
575
576GCC_CHECK_UNWIND_GETIPINFO
577
8d4b68a7 578AC_CHECK_HEADERS(port.h sched.h semaphore.h sys/file.h sys/mman.h syscall.h sys/epoll.h sys/event.h sys/inotify.h sys/ptrace.h sys/syscall.h sys/user.h sys/utsname.h sys/select.h sys/socket.h net/if.h net/if_arp.h net/route.h netpacket/packet.h sys/prctl.h sys/mount.h sys/vfs.h sys/statfs.h sys/timex.h sys/sysinfo.h utime.h linux/ether.h linux/fs.h linux/ptrace.h linux/reboot.h netinet/icmp6.h netinet/in_syst.h netinet/ip.h netinet/ip_mroute.h netinet/if_ether.h)
adb0401d 579
1410c222 580AC_CHECK_HEADERS([linux/filter.h linux/if_addr.h linux/if_ether.h linux/if_tun.h linux/netlink.h linux/rtnetlink.h], [], [],
adb0401d
ILT
581[#ifdef HAVE_SYS_SOCKET_H
582#include <sys/socket.h>
583#endif
584])
585
2aeaf0fb
ILT
586AC_CACHE_CHECK([whether <ustat.h> can be used],
587[libgo_cv_c_ustat_h],
dbe1e4a5
ILT
588[CFLAGS_hold=$CFLAGS
589CFLAGS="$CFLAGS -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE $OSCFLAGS"
2aeaf0fb
ILT
590AC_COMPILE_IFELSE(
591[AC_LANG_SOURCE([
592#include <sys/types.h>
593#ifdef HAVE_LINUX_FILTER_H
594#include <linux/filter.h>
595#endif
596#include <ustat.h>
dbe1e4a5
ILT
597])], [libgo_cv_c_ustat_h=yes], [libgo_cv_c_ustat_h=no])
598CFLAGS=$CFLAGS_hold])
2aeaf0fb
ILT
599if test $libgo_cv_c_ustat_h = yes; then
600 AC_DEFINE(HAVE_USTAT_H, 1,
601 [Define to 1 if you have the <ustat.h> header file and it works.])
602fi
603
7a938933 604AM_CONDITIONAL(HAVE_SYS_MMAN_H, test "$ac_cv_header_sys_mman_h" = yes)
8955c80a 605
f8d9fa9e 606AC_CHECK_FUNCS(strerror_r strsignal wait4 mincore setenv unsetenv dl_iterate_phdr)
8955c80a 607AM_CONDITIONAL(HAVE_STRERROR_R, test "$ac_cv_func_strerror_r" = yes)
0b3189e7 608AM_CONDITIONAL(HAVE_WAIT4, test "$ac_cv_func_wait4" = yes)
7a938933 609
f163907e 610AC_CHECK_FUNCS(accept4 dup3 epoll_create1 faccessat fallocate fchmodat fchownat futimesat getxattr inotify_add_watch inotify_init inotify_init1 inotify_rm_watch listxattr mkdirat mknodat open64 openat pipe2 removexattr renameat setxattr sync_file_range splice syscall tee unlinkat unshare utimensat)
5d46bf05 611AC_TYPE_OFF_T
e02ed81e
ILT
612AC_CHECK_TYPES([loff_t])
613
324612b3
ILT
614LIBS_hold="$LIBS"
615LIBS="$LIBS -lm"
616AC_CHECK_FUNCS(cosl expl logl sinl tanl acosl asinl atanl atan2l expm1l ldexpl log10l log1pl)
617LIBS="$LIBS_hold"
618
08ee945e
ILT
619CFLAGS_hold="$CFLAGS"
620CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
621LIBS_hold="$LIBS"
622LIBS="$LIBS $PTHREAD_LIBS"
623AC_CHECK_FUNCS(sem_timedwait)
624CFLAGS="$CFLAGS_hold"
625LIBS="$LIBS_hold"
626
d2b480bc
ILT
627LIBS_hold="$LIBS"
628LIBS="$LIBS $MATH_LIBS"
629AC_CHECK_FUNCS(matherr)
630LIBS="$LIBS_hold"
631
a7c48c8e
ILT
632AC_CACHE_CHECK([for __sync_bool_compare_and_swap_4],
633[libgo_cv_func___sync_bool_compare_and_swap_4],
634[AC_LINK_IFELSE([
635typedef unsigned int uint32 __attribute__ ((mode (SI)));
636uint32 i;
637int main() { return __sync_bool_compare_and_swap (&i, 0, 1); }
638],
639[libgo_cv_func___sync_bool_compare_and_swap_4=yes],
640[libgo_cv_func___sync_bool_compare_and_swap_4=no])])
641if test "$libgo_cv_func___sync_bool_compare_and_swap_4" = "yes"; then
642 AC_DEFINE(HAVE_SYNC_BOOL_COMPARE_AND_SWAP_4, 1,
643 [Define to 1 if the compiler provides the __sync_bool_compare_and_swap function for uint32])
644fi
645
12e3c396
ILT
646AC_CACHE_CHECK([for __sync_bool_compare_and_swap_8],
647[libgo_cv_func___sync_bool_compare_and_swap_8],
648[AC_LINK_IFELSE([
649typedef unsigned int uint64 __attribute__ ((mode (DI)));
650uint64 i;
651int main() { return __sync_bool_compare_and_swap (&i, 0, 1); }
652],
653[libgo_cv_func___sync_bool_compare_and_swap_8=yes],
654[libgo_cv_func___sync_bool_compare_and_swap_8=no])])
655if test "$libgo_cv_func___sync_bool_compare_and_swap_8" = "yes"; then
656 AC_DEFINE(HAVE_SYNC_BOOL_COMPARE_AND_SWAP_8, 1,
657 [Define to 1 if the compiler provides the __sync_bool_compare_and_swap function for uint64])
658fi
659
084996f1
ILT
660AC_CACHE_CHECK([for __sync_fetch_and_add_4],
661[libgo_cv_func___sync_fetch_and_add_4],
662[AC_LINK_IFELSE([
663typedef unsigned int uint32 __attribute__ ((mode (SI)));
664uint32 i;
665int main() { return __sync_fetch_and_add (&i, 1); }
666],
667[libgo_cv_func___sync_fetch_and_add_4=yes],
668[libgo_cv_func___sync_fetch_and_add_4=no])])
669if test "$libgo_cv_func___sync_fetch_and_add_4" = "yes"; then
670 AC_DEFINE(HAVE_SYNC_FETCH_AND_ADD_4, 1,
671 [Define to 1 if the compiler provides the __sync_fetch_and_add function for uint32])
672fi
673
12e3c396
ILT
674AC_CACHE_CHECK([for __sync_add_and_fetch_8],
675[libgo_cv_func___sync_add_and_fetch_8],
676[AC_LINK_IFELSE([
677typedef unsigned int uint64 __attribute__ ((mode (DI)));
678uint64 i;
679int main() { return __sync_add_and_fetch (&i, 1); }
680],
681[libgo_cv_func___sync_add_and_fetch_8=yes],
682[libgo_cv_func___sync_add_and_fetch_8=no])])
683if test "$libgo_cv_func___sync_add_and_fetch_8" = "yes"; then
684 AC_DEFINE(HAVE_SYNC_ADD_AND_FETCH_8, 1,
685 [Define to 1 if the compiler provides the __sync_add_and_fetch function for uint64])
686fi
687
7a938933
ILT
688dnl For x86 we want to use the -minline-all-stringops option to avoid
689dnl forcing a stack split when calling memcpy and friends.
690AC_CACHE_CHECK([whether compiler supports -minline-all-stringops],
f2ee78b8 691[libgo_cv_c_stringops],
7a938933
ILT
692[CFLAGS_hold=$CFLAGS
693CFLAGS="$CFLAGS -minline-all-stringops"
694AC_COMPILE_IFELSE([int i;],
f2ee78b8
ILT
695[libgo_cv_c_stringops=yes],
696[libgo_cv_c_stringops=no])
7a938933
ILT
697CFLAGS=$CFLAGS_hold])
698STRINGOPS_FLAG=
f2ee78b8 699if test "$libgo_cv_c_stringops" = yes; then
7a938933
ILT
700 STRINGOPS_FLAG=-minline-all-stringops
701fi
702AC_SUBST(STRINGOPS_FLAG)
703
9d465faf
ILT
704dnl For x86 we want to compile the math library with -mfancy-math-387
705dnl -funsafe-math-optimizations so that we can use the builtin
706dnl instructions directly.
707AC_CACHE_CHECK([whether compiler supports -mfancy-math-387],
708[libgo_cv_c_fancymath],
709[CFLAGS_hold=$CFLAGS
710CFLAGS="$CFLAGS -mfancy-math-387"
711AC_COMPILE_IFELSE([int i;],
712[libgo_cv_c_fancymath=yes],
713[libgo_cv_c_fancymath=no])
714CFLAGS=$CFLAGS_hold])
715MATH_FLAG=
716if test "$libgo_cv_c_fancymath" = yes; then
717 MATH_FLAG="-mfancy-math-387 -funsafe-math-optimizations"
33a9145b
ILT
718else
719 MATH_FLAG="-ffp-contract=off"
9d465faf
ILT
720fi
721AC_SUBST(MATH_FLAG)
722
7a938933
ILT
723CFLAGS_hold=$CFLAGS
724CFLAGS="$CFLAGS -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE"
e02ed81e 725AC_CHECK_TYPES([off64_t])
7a938933
ILT
726CFLAGS=$CFLAGS_hold
727
207c35fa
ILT
728dnl Work out the size of the epoll_events struct on GNU/Linux.
729AC_CACHE_CHECK([epoll_event size],
730[libgo_cv_c_epoll_event_size],
731[AC_COMPUTE_INT(libgo_cv_c_epoll_event_size,
732[sizeof (struct epoll_event)],
733[#include <sys/epoll.h>],
734[libgo_cv_c_epoll_event_size=0])])
735SIZEOF_STRUCT_EPOLL_EVENT=${libgo_cv_c_epoll_event_size}
736AC_SUBST(SIZEOF_STRUCT_EPOLL_EVENT)
737
738dnl Work out the offset of the fd field in the epoll_events struct on
739dnl GNU/Linux.
740AC_CACHE_CHECK([epoll_event data.fd offset],
741[libgo_cv_c_epoll_event_fd_offset],
742[AC_COMPUTE_INT(libgo_cv_c_epoll_event_fd_offset,
743[offsetof (struct epoll_event, data.fd)],
744[#include <stddef.h>
745#include <sys/epoll.h>],
746[libgo_cv_c_epoll_event_fd_offset=0])])
747STRUCT_EPOLL_EVENT_FD_OFFSET=${libgo_cv_c_epoll_event_fd_offset}
748AC_SUBST(STRUCT_EPOLL_EVENT_FD_OFFSET)
749
476013d6
ILT
750dnl Check if <sys/stat.h> uses timespec_t for st_?tim members. Introduced
751dnl in Solaris 12 for XPG7 compatibility.
752AC_EGREP_HEADER([timespec_t.*st_atim], [sys/stat.h],
753 [have_stat_timespec=yes], [have_stat_timespec=no])
754AM_CONDITIONAL(HAVE_STAT_TIMESPEC, test $have_stat_timespec = yes)
755
d2b480bc
ILT
756dnl See if struct exception is defined in <math.h>.
757AC_CHECK_TYPE([struct exception],
758[libgo_has_struct_exception=yes],
759[libgo_has_struct_exception=no],
760[#include <math.h>])
761if test "$libgo_has_struct_exception" = "yes"; then
762 AC_DEFINE(HAVE_STRUCT_EXCEPTION, 1,
763 [Define to 1 if <math.h> defines struct exception])
764fi
765
7f57843f
ILT
766dnl See whether setcontext changes the value of TLS variables.
767AC_CACHE_CHECK([whether setcontext clobbers TLS variables],
768[libgo_cv_lib_setcontext_clobbers_tls],
e6c5817d
ILT
769[CFLAGS_hold="$CFLAGS"
770CFLAGS="$PTHREAD_CFLAGS"
771LIBS_hold="$LIBS"
7f57843f 772LIBS="$LIBS $PTHREAD_LIBS"
e6c5817d
ILT
773AC_CHECK_SIZEOF([void *])
774AS_VAR_ARITH([ptr_type_size], [$ac_cv_sizeof_void_p \* 8])
7f57843f
ILT
775AC_RUN_IFELSE(
776 [AC_LANG_SOURCE([
777#include <pthread.h>
778#include <stdlib.h>
779#include <ucontext.h>
780#include <unistd.h>
781
782__thread int tls;
783
784static char stack[[10 * 1024 * 1024]];
785static ucontext_t c;
786
787/* Called via makecontext/setcontext. */
788
789static void
790cfn (void)
791{
792 exit (tls);
793}
794
795/* Called via pthread_create. */
796
797static void *
798tfn (void *dummy)
799{
800 /* The thread should still see this value after calling
801 setcontext. */
802 tls = 0;
803
804 setcontext (&c);
805
806 /* The call to setcontext should not return. */
807 abort ();
808}
809
810int
811main ()
812{
813 pthread_t tid;
814
815 /* The thread should not see this value. */
816 tls = 1;
817
818 if (getcontext (&c) < 0)
819 abort ();
820
821 c.uc_stack.ss_sp = stack;
ca59d219
ILT
822#ifdef MAKECONTEXT_STACK_TOP
823 c.uc_stack.ss_sp += sizeof stack;
824#endif
7f57843f
ILT
825 c.uc_stack.ss_flags = 0;
826 c.uc_stack.ss_size = sizeof stack;
827 c.uc_link = NULL;
828 makecontext (&c, cfn, 0);
829
830 if (pthread_create (&tid, NULL, tfn, NULL) != 0)
831 abort ();
832
833 if (pthread_join (tid, NULL) != 0)
834 abort ();
835
836 /* The thread should have called exit. */
837 abort ();
838}
839])],
840[libgo_cv_lib_setcontext_clobbers_tls=no],
841[libgo_cv_lib_setcontext_clobbers_tls=yes],
e6c5817d
ILT
842[case "$target:$ptr_type_size" in
843 i?86-*-solaris2.1[[01]]:64 | x86_64*-*-solaris2.1[[01]]:64)
844 libgo_cv_lib_setcontext_clobbers_tls=yes ;;
845 *)
846 libgo_cv_lib_setcontext_clobbers_tls=no ;;
7f57843f
ILT
847 esac
848])
e6c5817d 849CFLAGS="$CFLAGS_hold"
7f57843f
ILT
850LIBS="$LIBS_hold"
851])
852if test "$libgo_cv_lib_setcontext_clobbers_tls" = "yes"; then
853 AC_DEFINE(SETCONTEXT_CLOBBERS_TLS, 1,
854 [Define if setcontext clobbers TLS variables])
855fi
856
cc1a9ac8
ILT
857AC_CACHE_CHECK([whether .eh_frame section should be read-only],
858libgo_cv_ro_eh_frame, [
859libgo_cv_ro_eh_frame=no
860echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
861if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
862 if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
863 libgo_cv_ro_eh_frame=yes
864 elif grep '.section.*eh_frame.*#alloc' conftest.c \
865 | grep -v '#write' > /dev/null; then
866 libgo_cv_ro_eh_frame=yes
867 fi
868fi
869rm -f conftest.*
870])
871if test "x$libgo_cv_ro_eh_frame" = xyes; then
872 AC_DEFINE(EH_FRAME_FLAGS, "a",
873 [Define to the flags needed for the .section .eh_frame directive.])
874else
875 AC_DEFINE(EH_FRAME_FLAGS, "aw",
876 [Define to the flags needed for the .section .eh_frame directive.])
877fi
878
a819231d
ILT
879AC_CACHE_CHECK([if compiler supports -Qunused-arguments],
880[libgo_cv_c_unused_arguments],
881[CFLAGS_hold=$CFLAGS
882CFLAGS="$CFLAGS -Qunused-arguments"
883AC_COMPILE_IFELSE([[int i;]],
884[libgo_cv_c_unused_arguments=yes],
885[libgo_cv_c_unused_arguments=no])
886CFLAGS=$CFLAGS_hold])
887
cc1a9ac8
ILT
888AC_CACHE_CHECK([if assembler supports GNU comdat group syntax],
889libgo_cv_as_comdat_gnu, [
890echo '.section .text,"axG",@progbits,.foo,comdat' > conftest.s
a819231d
ILT
891CFLAGS_hold=$CFLAGS
892if test "$libgo_cv_c_unused_arguments" = yes; then
893 CFLAGS="$CFLAGS -Qunused-arguments"
894fi
cc1a9ac8
ILT
895if $CC $CFLAGS -c conftest.s > /dev/null 2>&1; then
896 libgo_cv_as_comdat_gnu=yes
897else
898 libgo_cv_as_comdat_gnu=no
899fi
a819231d 900CFLAGS=$CFLAGS_hold
cc1a9ac8
ILT
901])
902if test "x$libgo_cv_as_comdat_gnu" = xyes; then
903 AC_DEFINE(HAVE_AS_COMDAT_GAS, 1,
904 [Define if your assembler supports GNU comdat group syntax.])
905fi
906
907AC_CACHE_CHECK([assembler supports pc related relocs],
908libgo_cv_as_x86_pcrel, [
909libgo_cv_as_x86_pcrel=yes
910echo '.text; foo: nop; .data; .long foo-.; .text' > conftest.s
a819231d
ILT
911CFLAGS_hold=$CFLAGS
912if test "$libgo_cv_c_unused_arguments" = yes; then
913 CFLAGS="$CFLAGS -Qunused-arguments"
914fi
cc1a9ac8
ILT
915if $CC $CFLAGS -c conftest.s 2>&1 | $EGREP -i 'illegal|warning' > /dev/null; then
916 libgo_cv_as_x86_pcrel=no
917fi
a819231d 918CFLAGS=$CFLAGS_hold
cc1a9ac8
ILT
919])
920if test "x$libgo_cv_as_x86_pcrel" = xyes; then
921 AC_DEFINE(HAVE_AS_X86_PCREL, 1,
922 [Define if your assembler supports PC relative relocs.])
923fi
924
925AC_CACHE_CHECK([assembler supports unwind section type],
926libgo_cv_as_x86_64_unwind_section_type, [
927libgo_cv_as_x86_64_unwind_section_type=yes
928echo '.section .eh_frame,"a",@unwind' > conftest.s
a819231d
ILT
929CFLAGS_hold=$CFLAGS
930if test "$libgo_cv_c_unused_arguments" = yes; then
931 CFLAGS="$CFLAGS -Qunused-arguments"
932fi
cc1a9ac8
ILT
933if $CC $CFLAGS -c conftest.s 2>&1 | grep -i warning > /dev/null; then
934 libgo_cv_as_x86_64_unwind_section_type=no
935fi
a819231d 936CFLAGS=$CFLAGS_hold
cc1a9ac8
ILT
937])
938if test "x$libgo_cv_as_x86_64_unwind_section_type" = xyes; then
939 AC_DEFINE(HAVE_AS_X86_64_UNWIND_SECTION_TYPE, 1,
940 [Define if your assembler supports unwind section type.])
941fi
942
b379f8d8
ILT
943AC_CACHE_CHECK([assembler supports AES instructions],
944libgo_cv_as_x86_aes, [
945libgo_cv_as_x86_aes=yes
946echo 'aesenc %xmm0, %xmm1' > conftest.s
947CFLAGS_hold=$CFLAGS
948if test "$libgo_cv_c_unused_arguments" = yes; then
949 CFLAGS="$CFLAGS -Qunused-arguments"
950fi
951if $CC $CFLAGS -c conftest.s 2>&1 | grep -i error > /dev/null; then
952 libgo_cv_as_x86_aes=no
953fi
954CFLAGS=$CFLAGS_hold
955])
956if test "x$libgo_cv_as_x86_aes" = xyes; then
957 AC_DEFINE(HAVE_AS_X86_AES, 1,
958 [Define if your assembler supports AES instructions.])
959fi
960
7a938933
ILT
961AC_CACHE_SAVE
962
963if test ${multilib} = yes; then
964 multilib_arg="--enable-multilib"
965else
966 multilib_arg=
967fi
968
969AC_CONFIG_FILES(Makefile testsuite/Makefile)
970
971AC_CONFIG_COMMANDS([default],
972[if test -n "$CONFIG_FILES"; then
973 # Multilibs need MULTISUBDIR defined correctly in certain makefiles so
974 # that multilib installs will end up installed in the correct place.
975 # The testsuite needs it for multilib-aware ABI baseline files.
976 # To work around this not being passed down from config-ml.in ->
977 # srcdir/Makefile.am -> srcdir/{src,libsupc++,...}/Makefile.am, manually
978 # append it here. Only modify Makefiles that have just been created.
979 #
980 # Also, get rid of this simulated-VPATH thing that automake does.
981 cat > vpsed << \_EOF
982s!`test -f '$<' || echo '$(srcdir)/'`!!
983_EOF
984 for i in $SUBDIRS; do
985 case $CONFIG_FILES in
986 *${i}/Makefile*)
987 #echo "Adding MULTISUBDIR to $i/Makefile"
988 sed -f vpsed $i/Makefile > tmp
989 grep '^MULTISUBDIR =' Makefile >> tmp
990 mv tmp $i/Makefile
991 ;;
992 esac
993 done
994 rm vpsed
995 fi
996],
997[
998# Variables needed in config.status (file generation) which aren't already
999# passed by autoconf.
1000SUBDIRS="$SUBDIRS"
1001])
1002
1003AC_OUTPUT