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