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