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