libgo: Only build iopl and ioperm on 386, amd64, alpha GNU/Linux.
[gcc.git] / libgo / configure.ac
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
14 libtool_VERSION=1:0:0
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 -Wall])
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 AM_MAINTAINER_MODE
35
36 AC_PROG_LD
37 AC_PROG_RANLIB
38 AC_CHECK_TOOL(OBJCOPY, objcopy, missing-objcopy)
39
40 AC_LIBTOOL_DLOPEN
41 AM_PROG_LIBTOOL
42 AC_SUBST(enable_shared)
43 AC_SUBST(enable_static)
44
45 CC_FOR_BUILD=${CC_FOR_BUILD:-gcc}
46 AC_SUBST(CC_FOR_BUILD)
47
48 AC_PROG_AWK
49
50 WARN_FLAGS='-Wall -Wextra -Wwrite-strings -Wcast-qual'
51 AC_SUBST(WARN_FLAGS)
52
53 dnl FIXME: This should be controlled by --enable-maintainer-mode.
54 WERROR="-Werror"
55 AC_SUBST(WERROR)
56
57 glibgo_toolexecdir=no
58 glibgo_toolexeclibdir=no
59 glibgo_prefixdir=$prefix
60
61 AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
62 AC_ARG_ENABLE([version-specific-runtime-libs],
63 AC_HELP_STRING([--enable-version-specific-runtime-libs],
64 [Specify that runtime libraries should be installed in a compiler-specific directory]),
65 [case "$enableval" in
66 yes) version_specific_libs=yes ;;
67 no) version_specific_libs=no ;;
68 *) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
69 esac],
70 [version_specific_libs=no])
71 AC_MSG_RESULT($version_specific_libs)
72
73 # Version-specific runtime libs processing.
74 if test $version_specific_libs = yes; then
75 glibgo_toolexecdir='${libdir}/gcc/${host_alias}'
76 glibgo_toolexeclibdir='${toolexecdir}/${gcc_version}$(MULTISUBDIR)'
77 fi
78
79 # Calculate glibgo_toolexecdir, glibgo_toolexeclibdir
80 # Install a library built with a cross compiler in tooldir, not libdir.
81 if test x"$glibgo_toolexecdir" = x"no"; then
82 if test -n "$with_cross_host" &&
83 test x"$with_cross_host" != x"no"; then
84 glibgo_toolexecdir='${exec_prefix}/${host_alias}'
85 glibgo_toolexeclibdir='${toolexecdir}/lib'
86 else
87 glibgo_toolexecdir='${libdir}/gcc/${host_alias}'
88 glibgo_toolexeclibdir='${libdir}'
89 fi
90 multi_os_directory=`$CC -print-multi-os-directory`
91 case $multi_os_directory in
92 .) ;; # Avoid trailing /.
93 *) glibgo_toolexeclibdir=$glibgo_toolexeclibdir/$multi_os_directory ;;
94 esac
95 fi
96
97 AC_SUBST(glibgo_prefixdir)
98 AC_SUBST(glibgo_toolexecdir)
99 AC_SUBST(glibgo_toolexeclibdir)
100
101 # See if the user wants to configure without libffi. Some
102 # architectures don't support it. FIXME: We should set a default
103 # based on the host.
104 AC_ARG_WITH(libffi,
105 AS_HELP_STRING([--without-libffi],
106 [don't use libffi]),
107 [:],
108 [with_libffi=${with_libffi_default-yes}])
109
110 LIBFFI=
111 LIBFFIINCS=
112 if test "$with_libffi" != no; then
113 AC_DEFINE(USE_LIBFFI, 1, [Define if we're to use libffi.])
114 LIBFFI=../libffi/libffi_convenience.la
115 LIBFFIINCS='-I$(top_srcdir)/../libffi/include -I../libffi/include'
116 fi
117 AC_SUBST(LIBFFI)
118 AC_SUBST(LIBFFIINCS)
119
120 # Used to tell GNU make to include a file without telling automake to
121 # include it.
122 go_include="-include"
123 AC_SUBST(go_include)
124
125 is_darwin=no
126 is_freebsd=no
127 is_irix=no
128 is_linux=no
129 is_rtems=no
130 is_solaris=no
131 GOOS=unknown
132 case ${host} in
133 *-*-darwin*) is_darwin=yes; GOOS=darwin ;;
134 *-*-freebsd*) is_freebsd=yes; GOOS=freebsd ;;
135 *-*-irix6*) is_irix=yes; GOOS=irix ;;
136 *-*-linux*) is_linux=yes; GOOS=linux ;;
137 *-*-netbsd*) is_netbsd=yes; GOOS=netbsd ;;
138 *-*-rtems*) is_rtems=yes; GOOS=rtems ;;
139 *-*-solaris2*) is_solaris=yes; GOOS=solaris ;;
140 esac
141 AM_CONDITIONAL(LIBGO_IS_DARWIN, test $is_darwin = yes)
142 AM_CONDITIONAL(LIBGO_IS_FREEBSD, test $is_freebsd = yes)
143 AM_CONDITIONAL(LIBGO_IS_IRIX, test $is_irix = yes)
144 AM_CONDITIONAL(LIBGO_IS_LINUX, test $is_linux = yes)
145 AM_CONDITIONAL(LIBGO_IS_NETBSD, test $is_netbsd = yes)
146 AM_CONDITIONAL(LIBGO_IS_RTEMS, test $is_rtems = yes)
147 AM_CONDITIONAL(LIBGO_IS_SOLARIS, test $is_solaris = yes)
148 AC_SUBST(GOOS)
149
150 dnl N.B. Keep in sync with gcc/testsuite/go.test/go-test.exp (go-set-goarch).
151 is_386=no
152 is_alpha=no
153 is_arm=no
154 is_m68k=no
155 mips_abi=unknown
156 is_ppc=no
157 is_ppc64=no
158 is_sparc=no
159 is_sparc64=no
160 is_x86_64=no
161 GOARCH=unknown
162 case ${host} in
163 alpha*-*-*)
164 is_alpha=yes
165 GOARCH=alpha
166 ;;
167 arm*-*-* | strongarm*-*-* | ep9312*-*-* | xscale-*-*)
168 is_arm=yes
169 GOARCH=arm
170 ;;
171 changequote(,)dnl
172 i[34567]86-*-* | x86_64-*-*)
173 changequote([,])dnl
174 AC_COMPILE_IFELSE([
175 #ifdef __x86_64__
176 #error 64-bit
177 #endif],
178 [is_386=yes], [is_x86_64=yes])
179 if test "$is_386" = "yes"; then
180 GOARCH=386
181 else
182 GOARCH=amd64
183 fi
184 ;;
185 m68k*-*-*)
186 is_m68k=yes
187 GOARCH=m68k
188 ;;
189 mips*-*-*)
190 AC_COMPILE_IFELSE([
191 #if _MIPS_SIM != _ABIO32
192 #error not o32
193 #endif],
194 [mips_abi="o32"],
195 [AC_COMPILE_IFELSE([
196 #if _MIPS_SIM != _ABIN32
197 #error not n32
198 #endif],
199 [mips_abi="n32"],
200 [AC_COMPILE_IFELSE([
201 #if _MIPS_SIM != _ABI64
202 #error not n64
203 #endif],
204 [mips_abi="n64"],
205 [AC_COMPILE_IFELSE([
206 #if _MIPS_SIM != _ABIO64
207 #error not o64
208 #endif],
209 [mips_abi="o64"],
210 [AC_MSG_ERROR([unknown MIPS ABI])
211 [mips_abi="n32"]])])])])
212 case "$mips_abi" in
213 "o32") GOARCH=mipso32 ;;
214 "n32") GOARCH=mipsn32 ;;
215 "n64") GOARCH=mipsn64 ;;
216 "o64") GOARCH=mipso64 ;;
217 esac
218 ;;
219 rs6000*-*-* | powerpc*-*-*)
220 AC_COMPILE_IFELSE([
221 #ifdef _ARCH_PPC64
222 #error 64-bit
223 #endif],
224 [is_ppc=yes], [is_ppc64=yes])
225 if test "$is_ppc" = "yes"; then
226 GOARCH=ppc
227 else
228 GOARCH=ppc64
229 fi
230 ;;
231 sparc*-*-*)
232 AC_COMPILE_IFELSE([
233 #if defined(__sparcv9) || defined(__arch64__)
234 #error 64-bit
235 #endif],
236 [is_sparc=yes], [is_sparc64=yes])
237 if test "$is_sparc" = "yes"; then
238 GOARCH=sparc
239 else
240 GOARCH=sparc64
241 fi
242 ;;
243 esac
244 AM_CONDITIONAL(LIBGO_IS_386, test $is_386 = yes)
245 AM_CONDITIONAL(LIBGO_IS_ALPHA, test $is_alpha = yes)
246 AM_CONDITIONAL(LIBGO_IS_ARM, test $is_arm = yes)
247 AM_CONDITIONAL(LIBGO_IS_M68K, test $is_m68k = yes)
248 AM_CONDITIONAL(LIBGO_IS_MIPS, test $mips_abi != unknown)
249 AM_CONDITIONAL(LIBGO_IS_MIPSO32, test $mips_abi = o32)
250 AM_CONDITIONAL(LIBGO_IS_MIPSN32, test $mips_abi = n32)
251 AM_CONDITIONAL(LIBGO_IS_MIPSN64, test $mips_abi = n64)
252 AM_CONDITIONAL(LIBGO_IS_MIPSO64, test $mips_abi = o64)
253 AM_CONDITIONAL(LIBGO_IS_PPC, test $is_ppc = yes)
254 AM_CONDITIONAL(LIBGO_IS_PPC64, test $is_ppc64 = yes)
255 AM_CONDITIONAL(LIBGO_IS_SPARC, test $is_sparc = yes)
256 AM_CONDITIONAL(LIBGO_IS_SPARC64, test $is_sparc64 = yes)
257 AM_CONDITIONAL(LIBGO_IS_X86_64, test $is_x86_64 = yes)
258 AC_SUBST(GOARCH)
259
260 dnl Some files are only present when needed for specific architectures.
261 GO_LIBCALL_OS_FILE=
262 GO_LIBCALL_OS_ARCH_FILE=
263 GO_SYSCALL_OS_FILE=
264 GO_SYSCALL_OS_ARCH_FILE=
265 if test -f ${srcdir}/go/syscall/libcall_${GOOS}.go; then
266 GO_LIBCALL_OS_FILE=go/syscall/libcall_${GOOS}.go
267 fi
268 if test -f ${srcdir}/go/syscall/libcall_${GOOS}_${GOARCH}.go; then
269 GO_LIBCALL_OS_ARCH_FILE=go/syscall/libcall_${GOOS}_${GOARCH}.go
270 fi
271 if test -f ${srcdir}/go/syscall/syscall_${GOOS}.go; then
272 GO_SYSCALL_OS_FILE=go/syscall/syscall_${GOOS}.go
273 fi
274 if test -f ${srcdir}/go/syscall/syscall_${GOOS}_${GOARCH}.go; then
275 GO_SYSCALL_OS_ARCH_FILE=go/syscall/syscall_${GOOS}_${GOARCH}.go
276 fi
277 AC_SUBST(GO_LIBCALL_OS_FILE)
278 AC_SUBST(GO_LIBCALL_OS_ARCH_FILE)
279 AC_SUBST(GO_SYSCALL_OS_FILE)
280 AC_SUBST(GO_SYSCALL_OS_ARCH_FILE)
281
282 dnl Special flags used to generate sysinfo.go.
283 OSCFLAGS="-D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
284 case "$target" in
285 mips-sgi-irix6.5*)
286 # IRIX 6 needs _XOPEN_SOURCE=500 for the XPG5 version of struct
287 # msghdr in <sys/socket.h>.
288 OSCFLAGS="$OSCFLAGS -D_XOPEN_SOURCE=500"
289 ;;
290 *-*-solaris2.[[89]])
291 # Solaris 8/9 need this so struct msghdr gets the msg_control
292 # etc. fields in <sys/socket.h> (_XPG4_2).
293 OSCFLAGS="$OSCFLAGS -D_XOPEN_SOURCE=500 -D_XOPEN_SOURCE_EXTENDED -D__EXTENSIONS__"
294 ;;
295 *-*-solaris2.1[[01]])
296 # Solaris 10+ needs this so struct msghdr gets the msg_control
297 # etc. fields in <sys/socket.h> (_XPG4_2). _XOPEN_SOURCE=600 as
298 # above doesn't work with C99.
299 OSCFLAGS="$OSCFLAGS -std=gnu99 -D_XOPEN_SOURCE=600 -D__EXTENSIONS__"
300 ;;
301 esac
302 AC_SUBST(OSCFLAGS)
303
304 dnl Use -fsplit-stack when compiling C code if available.
305 AC_CACHE_CHECK([whether -fsplit-stack is supported],
306 [libgo_cv_c_split_stack_supported],
307 [CFLAGS_hold=$CFLAGS
308 CFLAGS="$CFLAGS -fsplit-stack"
309 AC_COMPILE_IFELSE([[int i;]],
310 [libgo_cv_c_split_stack_supported=yes],
311 [libgo_cv_c_split_stack_supported=no])
312 CFLAGS=$CFLAGS_hold])
313 if test "$libgo_cv_c_split_stack_supported" = yes; then
314 SPLIT_STACK=-fsplit-stack
315 AC_DEFINE(USING_SPLIT_STACK, 1,
316 [Define if the compiler supports -fsplit-stack])
317 else
318 SPLIT_STACK=
319 fi
320 AC_SUBST(SPLIT_STACK)
321 AM_CONDITIONAL(USING_SPLIT_STACK,
322 test "$libgo_cv_c_split_stack_supported" = yes)
323
324 dnl Check whether the linker does stack munging when calling from
325 dnl split-stack into non-split-stack code. We check this by looking
326 dnl at the --help output. FIXME: This is only half right: it's
327 dnl possible for the linker to support this for some targets but not
328 dnl others.
329 AC_CACHE_CHECK([whether linker supports split stack],
330 [libgo_cv_c_linker_supports_split_stack],
331 libgo_cv_c_linker_supports_split_stack=no
332 if $LD --help 2>/dev/null | grep split-stack-adjust-size >/dev/null 2>&1; then
333 libgo_cv_c_linker_supports_split_stack=yes
334 fi)
335 if test "$libgo_cv_c_linker_supports_split_stack" = yes; then
336 AC_DEFINE(LINKER_SUPPORTS_SPLIT_STACK, 1,
337 [Define if the linker support split stack adjustments])
338 fi
339
340 dnl Test for the -lm library.
341 MATH_LIBS=
342 AC_CHECK_LIB([m], [sqrt], MATH_LIBS=-lm)
343 AC_SUBST(MATH_LIBS)
344
345 dnl Test for -lsocket and -lnsl. Copied from libjava/configure.ac.
346 AC_CACHE_CHECK([for socket libraries], libgo_cv_lib_sockets,
347 [libgo_cv_lib_sockets=
348 libgo_check_both=no
349 AC_CHECK_FUNC(connect, libgo_check_socket=no, libgo_check_socket=yes)
350 if test "$libgo_check_socket" = "yes"; then
351 unset ac_cv_func_connect
352 AC_CHECK_LIB(socket, main, libgo_cv_lib_sockets="-lsocket",
353 libgo_check_both=yes)
354 fi
355 if test "$libgo_check_both" = "yes"; then
356 libgo_old_libs=$LIBS
357 LIBS="$LIBS -lsocket -lnsl"
358 unset ac_cv_func_accept
359 AC_CHECK_FUNC(accept,
360 [libgo_check_nsl=no
361 libgo_cv_lib_sockets="-lsocket -lnsl"])
362 unset ac_cv_func_accept
363 LIBS=$libgo_old_libs
364 fi
365 unset ac_cv_func_gethostbyname
366 libgo_old_libs="$LIBS"
367 AC_CHECK_FUNC(gethostbyname, ,
368 [AC_CHECK_LIB(nsl, main,
369 [libgo_cv_lib_sockets="$libgo_cv_lib_sockets -lnsl"])])
370 unset ac_cv_func_gethostbyname
371 LIBS=$libgo_old_libs
372 ])
373 NET_LIBS="$libgo_cv_lib_sockets"
374 AC_SUBST(NET_LIBS)
375
376 dnl Test whether the compiler supports the -pthread option.
377 AC_CACHE_CHECK([whether -pthread is supported],
378 [libgo_cv_lib_pthread],
379 [CFLAGS_hold=$CFLAGS
380 CFLAGS="$CFLAGS -pthread"
381 AC_COMPILE_IFELSE([[int i;]],
382 [libgo_cv_lib_pthread=yes],
383 [libgo_cv_lib_pthread=no])
384 CFLAGS=$CFLAGS_hold])
385 PTHREAD_CFLAGS=
386 if test "$libgo_cv_lib_pthread" = yes; then
387 PTHREAD_CFLAGS=-pthread
388 fi
389 AC_SUBST(PTHREAD_CFLAGS)
390
391 dnl Test for the -lpthread library.
392 PTHREAD_LIBS=
393 AC_CHECK_LIB([pthread], [pthread_create], PTHREAD_LIBS=-lpthread)
394 AC_SUBST(PTHREAD_LIBS)
395
396 dnl Test if -lrt is required for sched_yield.
397 AC_SEARCH_LIBS([sched_yield], [rt])
398
399 AC_C_BIGENDIAN
400
401 GCC_CHECK_UNWIND_GETIPINFO
402
403 AC_ARG_ENABLE(sjlj-exceptions,
404 AC_HELP_STRING([--enable-sjlj-exceptions],
405 [force use of builtin_setjmp for exceptions]),
406 [case "$enableval" in
407 yes|no|auto) ;;
408 *) AC_MSG_ERROR([unknown argument to --enable-sjlj-exceptions]) ;;
409 esac],
410 [enable_sjlj_exceptions=auto])
411
412 AC_CACHE_CHECK([whether to use setjmp/longjmp exceptions],
413 [libgo_cv_lib_sjlj_exceptions],
414 [AC_LANG_CONFTEST(
415 [AC_LANG_SOURCE([
416 void bar ();
417 void clean (int *);
418 void foo ()
419 {
420 int i __attribute__ ((cleanup (clean)));
421 bar();
422 }
423 ])])
424 CFLAGS_hold=$CFLAGS
425 CFLAGS="--save-temps -fexceptions"
426 libgo_cv_lib_sjlj_exceptions=unknown
427 AS_IF([ac_fn_c_try_compile],
428 [if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1; then
429 libgo_cv_lib_sjlj_exceptions=yes
430 elif grep _Unwind_Resume conftest.s >/dev/null 2>&1; then
431 libgo_cv_lib_sjlj_exceptions=no
432 fi])
433 CFLAGS=$CFLAGS_hold
434 rm -f conftest*
435 ])
436
437 if test "$enable_sjlj_exceptions" = "auto"; then
438 enable_sjlj_exceptions=$libgo_cv_lib_sjlj_exceptions
439 fi
440
441 case $enable_sjlj_exceptions in
442 yes)
443 AC_DEFINE(LIBGO_SJLJ_EXCEPTIONS, 1,
444 [Define if the C++ compiler is configured for setjmp/longjmp exceptions.])
445 ;;
446 no)
447 ;;
448 *)
449 AC_MSG_ERROR([unable to detect exception model])
450 ;;
451 esac
452
453 AC_CHECK_HEADERS(sys/mman.h syscall.h sys/epoll.h sys/ptrace.h sys/syscall.h sys/user.h sys/utsname.h sys/select.h sys/socket.h net/if.h)
454
455 AC_CHECK_HEADERS([linux/filter.h linux/netlink.h linux/rtnetlink.h], [], [],
456 [#ifdef HAVE_SYS_SOCKET_H
457 #include <sys/socket.h>
458 #endif
459 ])
460
461 AM_CONDITIONAL(HAVE_SYS_MMAN_H, test "$ac_cv_header_sys_mman_h" = yes)
462
463 AC_CHECK_FUNCS(strerror_r strsignal wait4 mincore setenv)
464 AM_CONDITIONAL(HAVE_STRERROR_R, test "$ac_cv_func_strerror_r" = yes)
465 AM_CONDITIONAL(HAVE_WAIT4, test "$ac_cv_func_wait4" = yes)
466
467 CFLAGS_hold="$CFLAGS"
468 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
469 LIBS_hold="$LIBS"
470 LIBS="$LIBS $PTHREAD_LIBS"
471 AC_CHECK_FUNCS(sem_timedwait)
472 CFLAGS="$CFLAGS_hold"
473 LIBS="$LIBS_hold"
474
475 AC_CACHE_CHECK([for __sync_bool_compare_and_swap_4],
476 [libgo_cv_func___sync_bool_compare_and_swap_4],
477 [AC_LINK_IFELSE([
478 typedef unsigned int uint32 __attribute__ ((mode (SI)));
479 uint32 i;
480 int main() { return __sync_bool_compare_and_swap (&i, 0, 1); }
481 ],
482 [libgo_cv_func___sync_bool_compare_and_swap_4=yes],
483 [libgo_cv_func___sync_bool_compare_and_swap_4=no])])
484 if test "$libgo_cv_func___sync_bool_compare_and_swap_4" = "yes"; then
485 AC_DEFINE(HAVE_SYNC_BOOL_COMPARE_AND_SWAP_4, 1,
486 [Define to 1 if the compiler provides the __sync_bool_compare_and_swap function for uint32])
487 fi
488
489 AC_CACHE_CHECK([for __sync_fetch_and_add_4],
490 [libgo_cv_func___sync_fetch_and_add_4],
491 [AC_LINK_IFELSE([
492 typedef unsigned int uint32 __attribute__ ((mode (SI)));
493 uint32 i;
494 int main() { return __sync_fetch_and_add (&i, 1); }
495 ],
496 [libgo_cv_func___sync_fetch_and_add_4=yes],
497 [libgo_cv_func___sync_fetch_and_add_4=no])])
498 if test "$libgo_cv_func___sync_fetch_and_add_4" = "yes"; then
499 AC_DEFINE(HAVE_SYNC_FETCH_AND_ADD_4, 1,
500 [Define to 1 if the compiler provides the __sync_fetch_and_add function for uint32])
501 fi
502
503 dnl For x86 we want to use the -minline-all-stringops option to avoid
504 dnl forcing a stack split when calling memcpy and friends.
505 AC_CACHE_CHECK([whether compiler supports -minline-all-stringops],
506 [libgo_cv_c_stringops],
507 [CFLAGS_hold=$CFLAGS
508 CFLAGS="$CFLAGS -minline-all-stringops"
509 AC_COMPILE_IFELSE([int i;],
510 [libgo_cv_c_stringops=yes],
511 [libgo_cv_c_stringops=no])
512 CFLAGS=$CFLAGS_hold])
513 STRINGOPS_FLAG=
514 if test "$libgo_cv_c_stringops" = yes; then
515 STRINGOPS_FLAG=-minline-all-stringops
516 fi
517 AC_SUBST(STRINGOPS_FLAG)
518
519 CFLAGS_hold=$CFLAGS
520 CFLAGS="$CFLAGS -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE"
521 AC_CHECK_TYPES(off64_t)
522 CFLAGS=$CFLAGS_hold
523
524 dnl Work out the size of the epoll_events struct on GNU/Linux.
525 AC_CACHE_CHECK([epoll_event size],
526 [libgo_cv_c_epoll_event_size],
527 [AC_COMPUTE_INT(libgo_cv_c_epoll_event_size,
528 [sizeof (struct epoll_event)],
529 [#include <sys/epoll.h>],
530 [libgo_cv_c_epoll_event_size=0])])
531 SIZEOF_STRUCT_EPOLL_EVENT=${libgo_cv_c_epoll_event_size}
532 AC_SUBST(SIZEOF_STRUCT_EPOLL_EVENT)
533
534 dnl Work out the offset of the fd field in the epoll_events struct on
535 dnl GNU/Linux.
536 AC_CACHE_CHECK([epoll_event data.fd offset],
537 [libgo_cv_c_epoll_event_fd_offset],
538 [AC_COMPUTE_INT(libgo_cv_c_epoll_event_fd_offset,
539 [offsetof (struct epoll_event, data.fd)],
540 [#include <stddef.h>
541 #include <sys/epoll.h>],
542 [libgo_cv_c_epoll_event_fd_offset=0])])
543 STRUCT_EPOLL_EVENT_FD_OFFSET=${libgo_cv_c_epoll_event_fd_offset}
544 AC_SUBST(STRUCT_EPOLL_EVENT_FD_OFFSET)
545
546 AC_CACHE_SAVE
547
548 if test ${multilib} = yes; then
549 multilib_arg="--enable-multilib"
550 else
551 multilib_arg=
552 fi
553
554 AC_CONFIG_FILES(Makefile testsuite/Makefile)
555
556 AC_CONFIG_COMMANDS([default],
557 [if test -n "$CONFIG_FILES"; then
558 # Multilibs need MULTISUBDIR defined correctly in certain makefiles so
559 # that multilib installs will end up installed in the correct place.
560 # The testsuite needs it for multilib-aware ABI baseline files.
561 # To work around this not being passed down from config-ml.in ->
562 # srcdir/Makefile.am -> srcdir/{src,libsupc++,...}/Makefile.am, manually
563 # append it here. Only modify Makefiles that have just been created.
564 #
565 # Also, get rid of this simulated-VPATH thing that automake does.
566 cat > vpsed << \_EOF
567 s!`test -f '$<' || echo '$(srcdir)/'`!!
568 _EOF
569 for i in $SUBDIRS; do
570 case $CONFIG_FILES in
571 *${i}/Makefile*)
572 #echo "Adding MULTISUBDIR to $i/Makefile"
573 sed -f vpsed $i/Makefile > tmp
574 grep '^MULTISUBDIR =' Makefile >> tmp
575 mv tmp $i/Makefile
576 ;;
577 esac
578 done
579 rm vpsed
580 fi
581 ],
582 [
583 # Variables needed in config.status (file generation) which aren't already
584 # passed by autoconf.
585 SUBDIRS="$SUBDIRS"
586 ])
587
588 AC_OUTPUT