]> git.ipfire.org Git - thirdparty/gcc.git/blame - libgo/configure.ac
match.c (gfc_match_allocate): Check for NULL pointer.
[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
bc998d03 14libtool_VERSION=12: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 266 GOARCH_FAMILY=IA64
319e41dc 267 GOARCH_CACHELINESIZE=128
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
6222bddc
ILT
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/in_syst.h netinet/ip.h netinet/ip_mroute.h netinet/if_ether.h)
579
580AC_CHECK_HEADERS([netinet/icmp6.h], [], [],
581[#include <netinet/in.h>
582])
adb0401d 583
1410c222 584AC_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
585[#ifdef HAVE_SYS_SOCKET_H
586#include <sys/socket.h>
587#endif
588])
589
2aeaf0fb
ILT
590AC_CACHE_CHECK([whether <ustat.h> can be used],
591[libgo_cv_c_ustat_h],
dbe1e4a5
ILT
592[CFLAGS_hold=$CFLAGS
593CFLAGS="$CFLAGS -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE $OSCFLAGS"
2aeaf0fb
ILT
594AC_COMPILE_IFELSE(
595[AC_LANG_SOURCE([
596#include <sys/types.h>
597#ifdef HAVE_LINUX_FILTER_H
598#include <linux/filter.h>
599#endif
600#include <ustat.h>
dbe1e4a5
ILT
601])], [libgo_cv_c_ustat_h=yes], [libgo_cv_c_ustat_h=no])
602CFLAGS=$CFLAGS_hold])
2aeaf0fb
ILT
603if test $libgo_cv_c_ustat_h = yes; then
604 AC_DEFINE(HAVE_USTAT_H, 1,
605 [Define to 1 if you have the <ustat.h> header file and it works.])
606fi
607
7a938933 608AM_CONDITIONAL(HAVE_SYS_MMAN_H, test "$ac_cv_header_sys_mman_h" = yes)
8955c80a 609
f8d9fa9e 610AC_CHECK_FUNCS(strerror_r strsignal wait4 mincore setenv unsetenv dl_iterate_phdr)
8955c80a 611AM_CONDITIONAL(HAVE_STRERROR_R, test "$ac_cv_func_strerror_r" = yes)
0b3189e7 612AM_CONDITIONAL(HAVE_WAIT4, test "$ac_cv_func_wait4" = yes)
7a938933 613
f163907e 614AC_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 615AC_TYPE_OFF_T
e02ed81e
ILT
616AC_CHECK_TYPES([loff_t])
617
324612b3
ILT
618LIBS_hold="$LIBS"
619LIBS="$LIBS -lm"
620AC_CHECK_FUNCS(cosl expl logl sinl tanl acosl asinl atanl atan2l expm1l ldexpl log10l log1pl)
621LIBS="$LIBS_hold"
622
08ee945e
ILT
623CFLAGS_hold="$CFLAGS"
624CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
625LIBS_hold="$LIBS"
626LIBS="$LIBS $PTHREAD_LIBS"
627AC_CHECK_FUNCS(sem_timedwait)
628CFLAGS="$CFLAGS_hold"
629LIBS="$LIBS_hold"
630
d2b480bc
ILT
631LIBS_hold="$LIBS"
632LIBS="$LIBS $MATH_LIBS"
633AC_CHECK_FUNCS(matherr)
634LIBS="$LIBS_hold"
635
a7c48c8e
ILT
636AC_CACHE_CHECK([for __sync_bool_compare_and_swap_4],
637[libgo_cv_func___sync_bool_compare_and_swap_4],
638[AC_LINK_IFELSE([
639typedef unsigned int uint32 __attribute__ ((mode (SI)));
640uint32 i;
641int main() { return __sync_bool_compare_and_swap (&i, 0, 1); }
642],
643[libgo_cv_func___sync_bool_compare_and_swap_4=yes],
644[libgo_cv_func___sync_bool_compare_and_swap_4=no])])
645if test "$libgo_cv_func___sync_bool_compare_and_swap_4" = "yes"; then
646 AC_DEFINE(HAVE_SYNC_BOOL_COMPARE_AND_SWAP_4, 1,
647 [Define to 1 if the compiler provides the __sync_bool_compare_and_swap function for uint32])
648fi
649
12e3c396
ILT
650AC_CACHE_CHECK([for __sync_bool_compare_and_swap_8],
651[libgo_cv_func___sync_bool_compare_and_swap_8],
652[AC_LINK_IFELSE([
653typedef unsigned int uint64 __attribute__ ((mode (DI)));
654uint64 i;
655int main() { return __sync_bool_compare_and_swap (&i, 0, 1); }
656],
657[libgo_cv_func___sync_bool_compare_and_swap_8=yes],
658[libgo_cv_func___sync_bool_compare_and_swap_8=no])])
659if test "$libgo_cv_func___sync_bool_compare_and_swap_8" = "yes"; then
660 AC_DEFINE(HAVE_SYNC_BOOL_COMPARE_AND_SWAP_8, 1,
661 [Define to 1 if the compiler provides the __sync_bool_compare_and_swap function for uint64])
662fi
663
084996f1
ILT
664AC_CACHE_CHECK([for __sync_fetch_and_add_4],
665[libgo_cv_func___sync_fetch_and_add_4],
666[AC_LINK_IFELSE([
667typedef unsigned int uint32 __attribute__ ((mode (SI)));
668uint32 i;
669int main() { return __sync_fetch_and_add (&i, 1); }
670],
671[libgo_cv_func___sync_fetch_and_add_4=yes],
672[libgo_cv_func___sync_fetch_and_add_4=no])])
673if test "$libgo_cv_func___sync_fetch_and_add_4" = "yes"; then
674 AC_DEFINE(HAVE_SYNC_FETCH_AND_ADD_4, 1,
675 [Define to 1 if the compiler provides the __sync_fetch_and_add function for uint32])
676fi
677
12e3c396
ILT
678AC_CACHE_CHECK([for __sync_add_and_fetch_8],
679[libgo_cv_func___sync_add_and_fetch_8],
680[AC_LINK_IFELSE([
681typedef unsigned int uint64 __attribute__ ((mode (DI)));
682uint64 i;
683int main() { return __sync_add_and_fetch (&i, 1); }
684],
685[libgo_cv_func___sync_add_and_fetch_8=yes],
686[libgo_cv_func___sync_add_and_fetch_8=no])])
687if test "$libgo_cv_func___sync_add_and_fetch_8" = "yes"; then
688 AC_DEFINE(HAVE_SYNC_ADD_AND_FETCH_8, 1,
689 [Define to 1 if the compiler provides the __sync_add_and_fetch function for uint64])
690fi
691
7a938933
ILT
692dnl For x86 we want to use the -minline-all-stringops option to avoid
693dnl forcing a stack split when calling memcpy and friends.
694AC_CACHE_CHECK([whether compiler supports -minline-all-stringops],
f2ee78b8 695[libgo_cv_c_stringops],
7a938933
ILT
696[CFLAGS_hold=$CFLAGS
697CFLAGS="$CFLAGS -minline-all-stringops"
698AC_COMPILE_IFELSE([int i;],
f2ee78b8
ILT
699[libgo_cv_c_stringops=yes],
700[libgo_cv_c_stringops=no])
7a938933
ILT
701CFLAGS=$CFLAGS_hold])
702STRINGOPS_FLAG=
f2ee78b8 703if test "$libgo_cv_c_stringops" = yes; then
7a938933
ILT
704 STRINGOPS_FLAG=-minline-all-stringops
705fi
706AC_SUBST(STRINGOPS_FLAG)
707
9d465faf
ILT
708dnl For x86 we want to compile the math library with -mfancy-math-387
709dnl -funsafe-math-optimizations so that we can use the builtin
710dnl instructions directly.
711AC_CACHE_CHECK([whether compiler supports -mfancy-math-387],
712[libgo_cv_c_fancymath],
713[CFLAGS_hold=$CFLAGS
714CFLAGS="$CFLAGS -mfancy-math-387"
715AC_COMPILE_IFELSE([int i;],
716[libgo_cv_c_fancymath=yes],
717[libgo_cv_c_fancymath=no])
718CFLAGS=$CFLAGS_hold])
719MATH_FLAG=
720if test "$libgo_cv_c_fancymath" = yes; then
721 MATH_FLAG="-mfancy-math-387 -funsafe-math-optimizations"
33a9145b
ILT
722else
723 MATH_FLAG="-ffp-contract=off"
9d465faf
ILT
724fi
725AC_SUBST(MATH_FLAG)
726
7a938933
ILT
727CFLAGS_hold=$CFLAGS
728CFLAGS="$CFLAGS -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE"
e02ed81e 729AC_CHECK_TYPES([off64_t])
7a938933
ILT
730CFLAGS=$CFLAGS_hold
731
207c35fa
ILT
732dnl Work out the size of the epoll_events struct on GNU/Linux.
733AC_CACHE_CHECK([epoll_event size],
734[libgo_cv_c_epoll_event_size],
735[AC_COMPUTE_INT(libgo_cv_c_epoll_event_size,
736[sizeof (struct epoll_event)],
737[#include <sys/epoll.h>],
738[libgo_cv_c_epoll_event_size=0])])
739SIZEOF_STRUCT_EPOLL_EVENT=${libgo_cv_c_epoll_event_size}
740AC_SUBST(SIZEOF_STRUCT_EPOLL_EVENT)
741
742dnl Work out the offset of the fd field in the epoll_events struct on
743dnl GNU/Linux.
744AC_CACHE_CHECK([epoll_event data.fd offset],
745[libgo_cv_c_epoll_event_fd_offset],
746[AC_COMPUTE_INT(libgo_cv_c_epoll_event_fd_offset,
747[offsetof (struct epoll_event, data.fd)],
748[#include <stddef.h>
749#include <sys/epoll.h>],
750[libgo_cv_c_epoll_event_fd_offset=0])])
751STRUCT_EPOLL_EVENT_FD_OFFSET=${libgo_cv_c_epoll_event_fd_offset}
752AC_SUBST(STRUCT_EPOLL_EVENT_FD_OFFSET)
753
476013d6 754dnl Check if <sys/stat.h> uses timespec_t for st_?tim members. Introduced
082fc7e8 755dnl in Solaris 11.4 for XPG7 compatibility.
476013d6
ILT
756AC_EGREP_HEADER([timespec_t.*st_atim], [sys/stat.h],
757 [have_stat_timespec=yes], [have_stat_timespec=no])
758AM_CONDITIONAL(HAVE_STAT_TIMESPEC, test $have_stat_timespec = yes)
759
d2b480bc
ILT
760dnl See if struct exception is defined in <math.h>.
761AC_CHECK_TYPE([struct exception],
762[libgo_has_struct_exception=yes],
763[libgo_has_struct_exception=no],
764[#include <math.h>])
765if test "$libgo_has_struct_exception" = "yes"; then
766 AC_DEFINE(HAVE_STRUCT_EXCEPTION, 1,
767 [Define to 1 if <math.h> defines struct exception])
768fi
769
7f57843f
ILT
770dnl See whether setcontext changes the value of TLS variables.
771AC_CACHE_CHECK([whether setcontext clobbers TLS variables],
772[libgo_cv_lib_setcontext_clobbers_tls],
e6c5817d
ILT
773[CFLAGS_hold="$CFLAGS"
774CFLAGS="$PTHREAD_CFLAGS"
775LIBS_hold="$LIBS"
7f57843f 776LIBS="$LIBS $PTHREAD_LIBS"
e6c5817d
ILT
777AC_CHECK_SIZEOF([void *])
778AS_VAR_ARITH([ptr_type_size], [$ac_cv_sizeof_void_p \* 8])
7f57843f
ILT
779AC_RUN_IFELSE(
780 [AC_LANG_SOURCE([
781#include <pthread.h>
782#include <stdlib.h>
783#include <ucontext.h>
784#include <unistd.h>
785
786__thread int tls;
787
788static char stack[[10 * 1024 * 1024]];
789static ucontext_t c;
790
791/* Called via makecontext/setcontext. */
792
793static void
794cfn (void)
795{
796 exit (tls);
797}
798
799/* Called via pthread_create. */
800
801static void *
802tfn (void *dummy)
803{
804 /* The thread should still see this value after calling
805 setcontext. */
806 tls = 0;
807
808 setcontext (&c);
809
810 /* The call to setcontext should not return. */
811 abort ();
812}
813
814int
815main ()
816{
817 pthread_t tid;
818
819 /* The thread should not see this value. */
820 tls = 1;
821
822 if (getcontext (&c) < 0)
823 abort ();
824
825 c.uc_stack.ss_sp = stack;
ca59d219
ILT
826#ifdef MAKECONTEXT_STACK_TOP
827 c.uc_stack.ss_sp += sizeof stack;
828#endif
7f57843f
ILT
829 c.uc_stack.ss_flags = 0;
830 c.uc_stack.ss_size = sizeof stack;
831 c.uc_link = NULL;
832 makecontext (&c, cfn, 0);
833
834 if (pthread_create (&tid, NULL, tfn, NULL) != 0)
835 abort ();
836
837 if (pthread_join (tid, NULL) != 0)
838 abort ();
839
840 /* The thread should have called exit. */
841 abort ();
842}
843])],
844[libgo_cv_lib_setcontext_clobbers_tls=no],
845[libgo_cv_lib_setcontext_clobbers_tls=yes],
e6c5817d
ILT
846[case "$target:$ptr_type_size" in
847 i?86-*-solaris2.1[[01]]:64 | x86_64*-*-solaris2.1[[01]]:64)
848 libgo_cv_lib_setcontext_clobbers_tls=yes ;;
849 *)
850 libgo_cv_lib_setcontext_clobbers_tls=no ;;
7f57843f
ILT
851 esac
852])
e6c5817d 853CFLAGS="$CFLAGS_hold"
7f57843f
ILT
854LIBS="$LIBS_hold"
855])
856if test "$libgo_cv_lib_setcontext_clobbers_tls" = "yes"; then
857 AC_DEFINE(SETCONTEXT_CLOBBERS_TLS, 1,
858 [Define if setcontext clobbers TLS variables])
859fi
860
cc1a9ac8
ILT
861AC_CACHE_CHECK([whether .eh_frame section should be read-only],
862libgo_cv_ro_eh_frame, [
863libgo_cv_ro_eh_frame=no
864echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
865if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
866 if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
867 libgo_cv_ro_eh_frame=yes
868 elif grep '.section.*eh_frame.*#alloc' conftest.c \
869 | grep -v '#write' > /dev/null; then
870 libgo_cv_ro_eh_frame=yes
871 fi
872fi
873rm -f conftest.*
874])
875if test "x$libgo_cv_ro_eh_frame" = xyes; then
876 AC_DEFINE(EH_FRAME_FLAGS, "a",
877 [Define to the flags needed for the .section .eh_frame directive.])
878else
879 AC_DEFINE(EH_FRAME_FLAGS, "aw",
880 [Define to the flags needed for the .section .eh_frame directive.])
881fi
882
a819231d
ILT
883AC_CACHE_CHECK([if compiler supports -Qunused-arguments],
884[libgo_cv_c_unused_arguments],
885[CFLAGS_hold=$CFLAGS
886CFLAGS="$CFLAGS -Qunused-arguments"
887AC_COMPILE_IFELSE([[int i;]],
888[libgo_cv_c_unused_arguments=yes],
889[libgo_cv_c_unused_arguments=no])
890CFLAGS=$CFLAGS_hold])
891
cc1a9ac8
ILT
892AC_CACHE_CHECK([if assembler supports GNU comdat group syntax],
893libgo_cv_as_comdat_gnu, [
894echo '.section .text,"axG",@progbits,.foo,comdat' > conftest.s
a819231d
ILT
895CFLAGS_hold=$CFLAGS
896if test "$libgo_cv_c_unused_arguments" = yes; then
897 CFLAGS="$CFLAGS -Qunused-arguments"
898fi
cc1a9ac8
ILT
899if $CC $CFLAGS -c conftest.s > /dev/null 2>&1; then
900 libgo_cv_as_comdat_gnu=yes
901else
902 libgo_cv_as_comdat_gnu=no
903fi
a819231d 904CFLAGS=$CFLAGS_hold
cc1a9ac8
ILT
905])
906if test "x$libgo_cv_as_comdat_gnu" = xyes; then
907 AC_DEFINE(HAVE_AS_COMDAT_GAS, 1,
908 [Define if your assembler supports GNU comdat group syntax.])
909fi
910
911AC_CACHE_CHECK([assembler supports pc related relocs],
912libgo_cv_as_x86_pcrel, [
913libgo_cv_as_x86_pcrel=yes
914echo '.text; foo: nop; .data; .long foo-.; .text' > conftest.s
a819231d
ILT
915CFLAGS_hold=$CFLAGS
916if test "$libgo_cv_c_unused_arguments" = yes; then
917 CFLAGS="$CFLAGS -Qunused-arguments"
918fi
cc1a9ac8
ILT
919if $CC $CFLAGS -c conftest.s 2>&1 | $EGREP -i 'illegal|warning' > /dev/null; then
920 libgo_cv_as_x86_pcrel=no
921fi
a819231d 922CFLAGS=$CFLAGS_hold
cc1a9ac8
ILT
923])
924if test "x$libgo_cv_as_x86_pcrel" = xyes; then
925 AC_DEFINE(HAVE_AS_X86_PCREL, 1,
926 [Define if your assembler supports PC relative relocs.])
927fi
928
929AC_CACHE_CHECK([assembler supports unwind section type],
930libgo_cv_as_x86_64_unwind_section_type, [
931libgo_cv_as_x86_64_unwind_section_type=yes
932echo '.section .eh_frame,"a",@unwind' > conftest.s
a819231d
ILT
933CFLAGS_hold=$CFLAGS
934if test "$libgo_cv_c_unused_arguments" = yes; then
935 CFLAGS="$CFLAGS -Qunused-arguments"
936fi
cc1a9ac8
ILT
937if $CC $CFLAGS -c conftest.s 2>&1 | grep -i warning > /dev/null; then
938 libgo_cv_as_x86_64_unwind_section_type=no
939fi
a819231d 940CFLAGS=$CFLAGS_hold
cc1a9ac8
ILT
941])
942if test "x$libgo_cv_as_x86_64_unwind_section_type" = xyes; then
943 AC_DEFINE(HAVE_AS_X86_64_UNWIND_SECTION_TYPE, 1,
944 [Define if your assembler supports unwind section type.])
945fi
946
b379f8d8
ILT
947AC_CACHE_CHECK([assembler supports AES instructions],
948libgo_cv_as_x86_aes, [
949libgo_cv_as_x86_aes=yes
950echo 'aesenc %xmm0, %xmm1' > conftest.s
951CFLAGS_hold=$CFLAGS
952if test "$libgo_cv_c_unused_arguments" = yes; then
953 CFLAGS="$CFLAGS -Qunused-arguments"
954fi
955if $CC $CFLAGS -c conftest.s 2>&1 | grep -i error > /dev/null; then
956 libgo_cv_as_x86_aes=no
957fi
958CFLAGS=$CFLAGS_hold
959])
960if test "x$libgo_cv_as_x86_aes" = xyes; then
961 AC_DEFINE(HAVE_AS_X86_AES, 1,
962 [Define if your assembler supports AES instructions.])
963fi
964
7a938933
ILT
965AC_CACHE_SAVE
966
967if test ${multilib} = yes; then
968 multilib_arg="--enable-multilib"
969else
970 multilib_arg=
971fi
972
973AC_CONFIG_FILES(Makefile testsuite/Makefile)
974
975AC_CONFIG_COMMANDS([default],
976[if test -n "$CONFIG_FILES"; then
977 # Multilibs need MULTISUBDIR defined correctly in certain makefiles so
978 # that multilib installs will end up installed in the correct place.
979 # The testsuite needs it for multilib-aware ABI baseline files.
980 # To work around this not being passed down from config-ml.in ->
981 # srcdir/Makefile.am -> srcdir/{src,libsupc++,...}/Makefile.am, manually
982 # append it here. Only modify Makefiles that have just been created.
983 #
984 # Also, get rid of this simulated-VPATH thing that automake does.
985 cat > vpsed << \_EOF
986s!`test -f '$<' || echo '$(srcdir)/'`!!
987_EOF
988 for i in $SUBDIRS; do
989 case $CONFIG_FILES in
990 *${i}/Makefile*)
991 #echo "Adding MULTISUBDIR to $i/Makefile"
992 sed -f vpsed $i/Makefile > tmp
993 grep '^MULTISUBDIR =' Makefile >> tmp
994 mv tmp $i/Makefile
995 ;;
996 esac
997 done
998 rm vpsed
999 fi
1000],
1001[
1002# Variables needed in config.status (file generation) which aren't already
1003# passed by autoconf.
1004SUBDIRS="$SUBDIRS"
1005])
1006
1007AC_OUTPUT