OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgo/] [configure.ac] - Blame information for rev 747

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 747 jeremybenn
# 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
 
60
AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
61
AC_ARG_ENABLE([version-specific-runtime-libs],
62
  AC_HELP_STRING([--enable-version-specific-runtime-libs],
63
                 [Specify that runtime libraries should be installed in a compiler-specific directory]),
64
  [case "$enableval" in
65
    yes) version_specific_libs=yes ;;
66
    no)  version_specific_libs=no ;;
67
    *)   AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
68
   esac],
69
  [version_specific_libs=no])
70
AC_MSG_RESULT($version_specific_libs)
71
 
72
# Version-specific runtime libs processing.
73
if test $version_specific_libs = yes; then
74
  glibgo_toolexecdir='${libdir}/gcc/${host_alias}'
75
  glibgo_toolexeclibdir='${toolexecdir}/${gcc_version}$(MULTISUBDIR)'
76
fi
77
 
78
# Calculate glibgo_toolexecdir, glibgo_toolexeclibdir
79
# Install a library built with a cross compiler in tooldir, not libdir.
80
if test -n "$with_cross_host" &&
81
   test x"$with_cross_host" != x"no"; then
82
  nover_glibgo_toolexecdir='${exec_prefix}/${host_alias}'
83
  nover_glibgo_toolexeclibdir='${toolexecdir}/lib'
84
else
85
  nover_glibgo_toolexecdir='${libdir}/gcc/${host_alias}'
86
  nover_glibgo_toolexeclibdir='${libdir}'
87
fi
88
multi_os_directory=`$CC -print-multi-os-directory`
89
case $multi_os_directory in
90
  .) ;; # Avoid trailing /.
91
  *) nover_glibgo_toolexeclibdir=${nover_glibgo_toolexeclibdir}/${multi_os_directory} ;;
92
esac
93
 
94
if test x"$glibgo_toolexecdir" = x"no"; then
95
  glibgo_toolexecdir="${nover_glibgo_toolexecdir}"
96
  glibgo_toolexeclibdir="${nover_glibgo_toolexeclibdir}"
97
fi
98
 
99
AC_SUBST(glibgo_toolexecdir)
100
AC_SUBST(glibgo_toolexeclibdir)
101
AC_SUBST(nover_glibgo_toolexeclibdir)
102
 
103
# See if the user wants to configure without libffi.  Some
104
# architectures don't support it.  FIXME: We should set a default
105
# based on the host.
106
AC_ARG_WITH(libffi,
107
  AS_HELP_STRING([--without-libffi],
108
                 [don't use libffi]),
109
  [:],
110
  [with_libffi=${with_libffi_default-yes}])
111
 
112
LIBFFI=
113
LIBFFIINCS=
114
if test "$with_libffi" != no; then
115
   AC_DEFINE(USE_LIBFFI, 1, [Define if we're to use libffi.])
116
   LIBFFI=../libffi/libffi_convenience.la
117
   LIBFFIINCS='-I$(top_srcdir)/../libffi/include -I../libffi/include'
118
fi
119
AC_SUBST(LIBFFI)
120
AC_SUBST(LIBFFIINCS)
121
 
122
# Used to tell GNU make to include a file without telling automake to
123
# include it.
124
go_include="-include"
125
AC_SUBST(go_include)
126
 
127
is_darwin=no
128
is_freebsd=no
129
is_irix=no
130
is_linux=no
131
is_netbsd=no
132
is_rtems=no
133
is_solaris=no
134
GOOS=unknown
135
case ${host} in
136
  *-*-darwin*)   is_darwin=yes;  GOOS=darwin ;;
137
  *-*-freebsd*)  is_freebsd=yes; GOOS=freebsd ;;
138
  *-*-irix6*)    is_irix=yes;    GOOS=irix ;;
139
  *-*-linux*)    is_linux=yes;   GOOS=linux ;;
140
  *-*-netbsd*)   is_netbsd=yes;  GOOS=netbsd ;;
141
  *-*-rtems*)    is_rtems=yes;   GOOS=rtems ;;
142
  *-*-solaris2*) is_solaris=yes; GOOS=solaris ;;
143
esac
144
AM_CONDITIONAL(LIBGO_IS_DARWIN, test $is_darwin = yes)
145
AM_CONDITIONAL(LIBGO_IS_FREEBSD, test $is_freebsd = yes)
146
AM_CONDITIONAL(LIBGO_IS_IRIX, test $is_irix = yes)
147
AM_CONDITIONAL(LIBGO_IS_LINUX, test $is_linux = yes)
148
AM_CONDITIONAL(LIBGO_IS_NETBSD, test $is_netbsd = yes)
149
AM_CONDITIONAL(LIBGO_IS_RTEMS, test $is_rtems = yes)
150
AM_CONDITIONAL(LIBGO_IS_SOLARIS, test $is_solaris = yes)
151
AC_SUBST(GOOS)
152
 
153
dnl N.B. Keep in sync with gcc/testsuite/go.test/go-test.exp (go-set-goarch).
154
is_386=no
155
is_alpha=no
156
is_arm=no
157
is_m68k=no
158
mips_abi=unknown
159
is_ppc=no
160
is_ppc64=no
161
is_sparc=no
162
is_sparc64=no
163
is_x86_64=no
164
GOARCH=unknown
165
case ${host} in
166
  alpha*-*-*)
167
    is_alpha=yes
168
    GOARCH=alpha
169
    ;;
170
  arm*-*-* | strongarm*-*-* | ep9312*-*-* | xscale-*-*)
171
    is_arm=yes
172
    GOARCH=arm
173
    ;;
174
changequote(,)dnl
175
  i[34567]86-*-* | x86_64-*-*)
176
changequote([,])dnl
177
    AC_COMPILE_IFELSE([
178
#ifdef __x86_64__
179
#error 64-bit
180
#endif],
181
[is_386=yes], [is_x86_64=yes])
182
    if test "$is_386" = "yes"; then
183
      GOARCH=386
184
    else
185
      GOARCH=amd64
186
    fi
187
    ;;
188
  m68k*-*-*)
189
    is_m68k=yes
190
    GOARCH=m68k
191
    ;;
192
  mips*-*-*)
193
    AC_COMPILE_IFELSE([
194
#if _MIPS_SIM != _ABIO32
195
#error not o32
196
#endif],
197
[mips_abi="o32"],
198
        [AC_COMPILE_IFELSE([
199
#if _MIPS_SIM != _ABIN32
200
#error not n32
201
#endif],
202
[mips_abi="n32"],
203
        [AC_COMPILE_IFELSE([
204
#if _MIPS_SIM != _ABI64
205
#error not n64
206
#endif],
207
[mips_abi="n64"],
208
        [AC_COMPILE_IFELSE([
209
#if _MIPS_SIM != _ABIO64
210
#error not o64
211
#endif],
212
[mips_abi="o64"],
213
        [AC_MSG_ERROR([unknown MIPS ABI])
214
[mips_abi="n32"]])])])])
215
    case "$mips_abi" in
216
    "o32") GOARCH=mipso32 ;;
217
    "n32") GOARCH=mipsn32 ;;
218
    "n64") GOARCH=mipsn64 ;;
219
    "o64") GOARCH=mipso64 ;;
220
    esac
221
    ;;
222
  rs6000*-*-* | powerpc*-*-*)
223
    AC_COMPILE_IFELSE([
224
#ifdef _ARCH_PPC64
225
#error 64-bit
226
#endif],
227
[is_ppc=yes], [is_ppc64=yes])
228
    if test "$is_ppc" = "yes"; then
229
      GOARCH=ppc
230
    else
231
      GOARCH=ppc64
232
    fi
233
    ;;
234
  sparc*-*-*)
235
    AC_COMPILE_IFELSE([
236
#if defined(__sparcv9) || defined(__arch64__)
237
#error 64-bit
238
#endif],
239
[is_sparc=yes], [is_sparc64=yes])
240
    if test "$is_sparc" = "yes"; then
241
      GOARCH=sparc
242
    else
243
      GOARCH=sparc64
244
    fi
245
    ;;
246
esac
247
AM_CONDITIONAL(LIBGO_IS_386, test $is_386 = yes)
248
AM_CONDITIONAL(LIBGO_IS_ALPHA, test $is_alpha = yes)
249
AM_CONDITIONAL(LIBGO_IS_ARM, test $is_arm = yes)
250
AM_CONDITIONAL(LIBGO_IS_M68K, test $is_m68k = yes)
251
AM_CONDITIONAL(LIBGO_IS_MIPS, test $mips_abi != unknown)
252
AM_CONDITIONAL(LIBGO_IS_MIPSO32, test $mips_abi = o32)
253
AM_CONDITIONAL(LIBGO_IS_MIPSN32, test $mips_abi = n32)
254
AM_CONDITIONAL(LIBGO_IS_MIPSN64, test $mips_abi = n64)
255
AM_CONDITIONAL(LIBGO_IS_MIPSO64, test $mips_abi = o64)
256
AM_CONDITIONAL(LIBGO_IS_PPC, test $is_ppc = yes)
257
AM_CONDITIONAL(LIBGO_IS_PPC64, test $is_ppc64 = yes)
258
AM_CONDITIONAL(LIBGO_IS_SPARC, test $is_sparc = yes)
259
AM_CONDITIONAL(LIBGO_IS_SPARC64, test $is_sparc64 = yes)
260
AM_CONDITIONAL(LIBGO_IS_X86_64, test $is_x86_64 = yes)
261
AC_SUBST(GOARCH)
262
 
263
dnl Some files are only present when needed for specific architectures.
264
GO_LIBCALL_OS_FILE=
265
GO_LIBCALL_OS_ARCH_FILE=
266
GO_SYSCALL_OS_FILE=
267
GO_SYSCALL_OS_ARCH_FILE=
268
if test -f ${srcdir}/go/syscall/libcall_${GOOS}.go; then
269
  GO_LIBCALL_OS_FILE=go/syscall/libcall_${GOOS}.go
270
fi
271
if test -f ${srcdir}/go/syscall/libcall_${GOOS}_${GOARCH}.go; then
272
  GO_LIBCALL_OS_ARCH_FILE=go/syscall/libcall_${GOOS}_${GOARCH}.go
273
fi
274
if test -f ${srcdir}/go/syscall/syscall_${GOOS}.go; then
275
  GO_SYSCALL_OS_FILE=go/syscall/syscall_${GOOS}.go
276
fi
277
if test -f ${srcdir}/go/syscall/syscall_${GOOS}_${GOARCH}.go; then
278
  GO_SYSCALL_OS_ARCH_FILE=go/syscall/syscall_${GOOS}_${GOARCH}.go
279
fi
280
AC_SUBST(GO_LIBCALL_OS_FILE)
281
AC_SUBST(GO_LIBCALL_OS_ARCH_FILE)
282
AC_SUBST(GO_SYSCALL_OS_FILE)
283
AC_SUBST(GO_SYSCALL_OS_ARCH_FILE)
284
 
285
dnl Special flags used to generate sysinfo.go.
286
OSCFLAGS="-D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
287
case "$target" in
288
    mips-sgi-irix6.5*)
289
        # IRIX 6 needs _XOPEN_SOURCE=500 for the XPG5 version of struct
290
        # msghdr in .
291
        OSCFLAGS="$OSCFLAGS -D_XOPEN_SOURCE=500"
292
        ;;
293
    *-*-solaris2.[[89]])
294
        # Solaris 8/9 need this so struct msghdr gets the msg_control
295
        # etc. fields in  (_XPG4_2).
296
        OSCFLAGS="$OSCFLAGS -D_XOPEN_SOURCE=500 -D_XOPEN_SOURCE_EXTENDED -D__EXTENSIONS__"
297
        ;;
298
    *-*-solaris2.1[[01]])
299
        # Solaris 10+ needs this so struct msghdr gets the msg_control
300
        # etc. fields in  (_XPG4_2).  _XOPEN_SOURCE=600 as
301
        # above doesn't work with C99.
302
        OSCFLAGS="$OSCFLAGS -std=gnu99 -D_XOPEN_SOURCE=600 -D__EXTENSIONS__"
303
        ;;
304
esac
305
AC_SUBST(OSCFLAGS)
306
 
307
dnl Use -fsplit-stack when compiling C code if available.
308
AC_CACHE_CHECK([whether -fsplit-stack is supported],
309
[libgo_cv_c_split_stack_supported],
310
[CFLAGS_hold=$CFLAGS
311
CFLAGS="$CFLAGS -fsplit-stack"
312
AC_COMPILE_IFELSE([[int i;]],
313
[libgo_cv_c_split_stack_supported=yes],
314
[libgo_cv_c_split_stack_supported=no])
315
CFLAGS=$CFLAGS_hold])
316
if test "$libgo_cv_c_split_stack_supported" = yes; then
317
  SPLIT_STACK=-fsplit-stack
318
  AC_DEFINE(USING_SPLIT_STACK, 1,
319
                [Define if the compiler supports -fsplit-stack])
320
else
321
  SPLIT_STACK=
322
fi
323
AC_SUBST(SPLIT_STACK)
324
AM_CONDITIONAL(USING_SPLIT_STACK,
325
        test "$libgo_cv_c_split_stack_supported" = yes)
326
 
327
dnl Check whether the linker does stack munging when calling from
328
dnl split-stack into non-split-stack code.  We check this by looking
329
dnl at the --help output.  FIXME: This is only half right: it's
330
dnl possible for the linker to support this for some targets but not
331
dnl others.
332
AC_CACHE_CHECK([whether linker supports split stack],
333
[libgo_cv_c_linker_supports_split_stack],
334
libgo_cv_c_linker_supports_split_stack=no
335
if $LD --help 2>/dev/null | grep split-stack-adjust-size >/dev/null 2>&1; then
336
  libgo_cv_c_linker_supports_split_stack=yes
337
fi)
338
if test "$libgo_cv_c_linker_supports_split_stack" = yes; then
339
  AC_DEFINE(LINKER_SUPPORTS_SPLIT_STACK, 1,
340
            [Define if the linker support split stack adjustments])
341
fi
342
 
343
dnl Test for the -lm library.
344
MATH_LIBS=
345
AC_CHECK_LIB([m], [sqrt], MATH_LIBS=-lm)
346
AC_SUBST(MATH_LIBS)
347
 
348
dnl Test for -lsocket and -lnsl.  Copied from libjava/configure.ac.
349
AC_CACHE_CHECK([for socket libraries], libgo_cv_lib_sockets,
350
  [libgo_cv_lib_sockets=
351
   libgo_check_both=no
352
   AC_CHECK_FUNC(connect, libgo_check_socket=no, libgo_check_socket=yes)
353
   if test "$libgo_check_socket" = "yes"; then
354
     unset ac_cv_func_connect
355
     AC_CHECK_LIB(socket, main, libgo_cv_lib_sockets="-lsocket",
356
                  libgo_check_both=yes)
357
   fi
358
   if test "$libgo_check_both" = "yes"; then
359
     libgo_old_libs=$LIBS
360
     LIBS="$LIBS -lsocket -lnsl"
361
     unset ac_cv_func_accept
362
     AC_CHECK_FUNC(accept,
363
                   [libgo_check_nsl=no
364
                    libgo_cv_lib_sockets="-lsocket -lnsl"])
365
     unset ac_cv_func_accept
366
     LIBS=$libgo_old_libs
367
   fi
368
   unset ac_cv_func_gethostbyname
369
   libgo_old_libs="$LIBS"
370
   AC_CHECK_FUNC(gethostbyname, ,
371
                 [AC_CHECK_LIB(nsl, main,
372
                        [libgo_cv_lib_sockets="$libgo_cv_lib_sockets -lnsl"])])
373
   unset ac_cv_func_gethostbyname
374
   LIBS=$libgo_old_libs
375
])
376
NET_LIBS="$libgo_cv_lib_sockets"
377
AC_SUBST(NET_LIBS)
378
 
379
dnl Test whether the compiler supports the -pthread option.
380
AC_CACHE_CHECK([whether -pthread is supported],
381
[libgo_cv_lib_pthread],
382
[CFLAGS_hold=$CFLAGS
383
CFLAGS="$CFLAGS -pthread"
384
AC_COMPILE_IFELSE([[int i;]],
385
[libgo_cv_lib_pthread=yes],
386
[libgo_cv_lib_pthread=no])
387
CFLAGS=$CFLAGS_hold])
388
PTHREAD_CFLAGS=
389
if test "$libgo_cv_lib_pthread" = yes; then
390
  PTHREAD_CFLAGS=-pthread
391
fi
392
AC_SUBST(PTHREAD_CFLAGS)
393
 
394
dnl Test for the -lpthread library.
395
PTHREAD_LIBS=
396
AC_CHECK_LIB([pthread], [pthread_create], PTHREAD_LIBS=-lpthread)
397
AC_SUBST(PTHREAD_LIBS)
398
 
399
dnl Test if -lrt is required for sched_yield.
400
AC_SEARCH_LIBS([sched_yield], [rt])
401
 
402
AC_C_BIGENDIAN
403
 
404
GCC_CHECK_UNWIND_GETIPINFO
405
 
406
AC_ARG_ENABLE(sjlj-exceptions,
407
  AC_HELP_STRING([--enable-sjlj-exceptions],
408
                 [force use of builtin_setjmp for exceptions]),
409
  [case "$enableval" in
410
   yes|no|auto) ;;
411
   *) AC_MSG_ERROR([unknown argument to --enable-sjlj-exceptions]) ;;
412
   esac],
413
  [enable_sjlj_exceptions=auto])
414
 
415
AC_CACHE_CHECK([whether to use setjmp/longjmp exceptions],
416
[libgo_cv_lib_sjlj_exceptions],
417
[AC_LANG_CONFTEST(
418
  [AC_LANG_SOURCE([
419
void bar ();
420
void clean (int *);
421
void foo ()
422
{
423
  int i __attribute__ ((cleanup (clean)));
424
  bar();
425
}
426
])])
427
CFLAGS_hold=$CFLAGS
428
CFLAGS="--save-temps -fexceptions"
429
libgo_cv_lib_sjlj_exceptions=unknown
430
AS_IF([ac_fn_c_try_compile],
431
  [if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1; then
432
    libgo_cv_lib_sjlj_exceptions=yes
433
  elif grep _Unwind_Resume conftest.s >/dev/null 2>&1; then
434
    libgo_cv_lib_sjlj_exceptions=no
435
  fi])
436
CFLAGS=$CFLAGS_hold
437
rm -f conftest*
438
])
439
 
440
if test "$enable_sjlj_exceptions" = "auto"; then
441
  enable_sjlj_exceptions=$libgo_cv_lib_sjlj_exceptions
442
fi
443
 
444
case $enable_sjlj_exceptions in
445
yes)
446
  AC_DEFINE(LIBGO_SJLJ_EXCEPTIONS, 1,
447
        [Define if the C++ compiler is configured for setjmp/longjmp exceptions.])
448
  ;;
449
no)
450
  ;;
451
*)
452
  AC_MSG_ERROR([unable to detect exception model])
453
  ;;
454
esac
455
 
456
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 sys/prctl.h sys/mount.h sys/vfs.h sys/statfs.h)
457
 
458
AC_CHECK_HEADERS([linux/filter.h linux/netlink.h linux/rtnetlink.h], [], [],
459
[#ifdef HAVE_SYS_SOCKET_H
460
#include 
461
#endif
462
])
463
 
464
AM_CONDITIONAL(HAVE_SYS_MMAN_H, test "$ac_cv_header_sys_mman_h" = yes)
465
 
466
AC_CHECK_FUNCS(strerror_r strsignal wait4 mincore setenv)
467
AM_CONDITIONAL(HAVE_STRERROR_R, test "$ac_cv_func_strerror_r" = yes)
468
AM_CONDITIONAL(HAVE_WAIT4, test "$ac_cv_func_wait4" = yes)
469
 
470
AC_CHECK_FUNCS(epoll_create1 faccessat fallocate fchmodat fchownat futimesat inotify_add_watch inotify_init inotify_rm_watch mkdirat mknodat openat renameat splice tee unlinkat unshare)
471
AC_TYPE_OFF_T
472
AC_CHECK_TYPES([loff_t])
473
 
474
CFLAGS_hold="$CFLAGS"
475
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
476
LIBS_hold="$LIBS"
477
LIBS="$LIBS $PTHREAD_LIBS"
478
AC_CHECK_FUNCS(sem_timedwait)
479
CFLAGS="$CFLAGS_hold"
480
LIBS="$LIBS_hold"
481
 
482
LIBS_hold="$LIBS"
483
LIBS="$LIBS $MATH_LIBS"
484
AC_CHECK_FUNCS(matherr)
485
LIBS="$LIBS_hold"
486
 
487
AC_CACHE_CHECK([for __sync_bool_compare_and_swap_4],
488
[libgo_cv_func___sync_bool_compare_and_swap_4],
489
[AC_LINK_IFELSE([
490
typedef unsigned int uint32  __attribute__ ((mode (SI)));
491
uint32 i;
492
int main() { return __sync_bool_compare_and_swap (&i, 0, 1); }
493
],
494
[libgo_cv_func___sync_bool_compare_and_swap_4=yes],
495
[libgo_cv_func___sync_bool_compare_and_swap_4=no])])
496
if test "$libgo_cv_func___sync_bool_compare_and_swap_4" = "yes"; then
497
  AC_DEFINE(HAVE_SYNC_BOOL_COMPARE_AND_SWAP_4, 1,
498
    [Define to 1 if the compiler provides the __sync_bool_compare_and_swap function for uint32])
499
fi
500
 
501
AC_CACHE_CHECK([for __sync_bool_compare_and_swap_8],
502
[libgo_cv_func___sync_bool_compare_and_swap_8],
503
[AC_LINK_IFELSE([
504
typedef unsigned int uint64  __attribute__ ((mode (DI)));
505
uint64 i;
506
int main() { return __sync_bool_compare_and_swap (&i, 0, 1); }
507
],
508
[libgo_cv_func___sync_bool_compare_and_swap_8=yes],
509
[libgo_cv_func___sync_bool_compare_and_swap_8=no])])
510
if test "$libgo_cv_func___sync_bool_compare_and_swap_8" = "yes"; then
511
  AC_DEFINE(HAVE_SYNC_BOOL_COMPARE_AND_SWAP_8, 1,
512
    [Define to 1 if the compiler provides the __sync_bool_compare_and_swap function for uint64])
513
fi
514
 
515
AC_CACHE_CHECK([for __sync_fetch_and_add_4],
516
[libgo_cv_func___sync_fetch_and_add_4],
517
[AC_LINK_IFELSE([
518
typedef unsigned int uint32  __attribute__ ((mode (SI)));
519
uint32 i;
520
int main() { return __sync_fetch_and_add (&i, 1); }
521
],
522
[libgo_cv_func___sync_fetch_and_add_4=yes],
523
[libgo_cv_func___sync_fetch_and_add_4=no])])
524
if test "$libgo_cv_func___sync_fetch_and_add_4" = "yes"; then
525
  AC_DEFINE(HAVE_SYNC_FETCH_AND_ADD_4, 1,
526
    [Define to 1 if the compiler provides the __sync_fetch_and_add function for uint32])
527
fi
528
 
529
AC_CACHE_CHECK([for __sync_add_and_fetch_8],
530
[libgo_cv_func___sync_add_and_fetch_8],
531
[AC_LINK_IFELSE([
532
typedef unsigned int uint64  __attribute__ ((mode (DI)));
533
uint64 i;
534
int main() { return __sync_add_and_fetch (&i, 1); }
535
],
536
[libgo_cv_func___sync_add_and_fetch_8=yes],
537
[libgo_cv_func___sync_add_and_fetch_8=no])])
538
if test "$libgo_cv_func___sync_add_and_fetch_8" = "yes"; then
539
  AC_DEFINE(HAVE_SYNC_ADD_AND_FETCH_8, 1,
540
    [Define to 1 if the compiler provides the __sync_add_and_fetch function for uint64])
541
fi
542
 
543
dnl For x86 we want to use the -minline-all-stringops option to avoid
544
dnl forcing a stack split when calling memcpy and friends.
545
AC_CACHE_CHECK([whether compiler supports -minline-all-stringops],
546
[libgo_cv_c_stringops],
547
[CFLAGS_hold=$CFLAGS
548
CFLAGS="$CFLAGS -minline-all-stringops"
549
AC_COMPILE_IFELSE([int i;],
550
[libgo_cv_c_stringops=yes],
551
[libgo_cv_c_stringops=no])
552
CFLAGS=$CFLAGS_hold])
553
STRINGOPS_FLAG=
554
if test "$libgo_cv_c_stringops" = yes; then
555
  STRINGOPS_FLAG=-minline-all-stringops
556
fi
557
AC_SUBST(STRINGOPS_FLAG)
558
 
559
dnl For x86 we want to compile the math library with -mfancy-math-387
560
dnl -funsafe-math-optimizations so that we can use the builtin
561
dnl instructions directly.
562
AC_CACHE_CHECK([whether compiler supports -mfancy-math-387],
563
[libgo_cv_c_fancymath],
564
[CFLAGS_hold=$CFLAGS
565
CFLAGS="$CFLAGS -mfancy-math-387"
566
AC_COMPILE_IFELSE([int i;],
567
[libgo_cv_c_fancymath=yes],
568
[libgo_cv_c_fancymath=no])
569
CFLAGS=$CFLAGS_hold])
570
MATH_FLAG=
571
if test "$libgo_cv_c_fancymath" = yes; then
572
  MATH_FLAG="-mfancy-math-387 -funsafe-math-optimizations"
573
fi
574
AC_SUBST(MATH_FLAG)
575
 
576
CFLAGS_hold=$CFLAGS
577
CFLAGS="$CFLAGS -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE"
578
AC_CHECK_TYPES([off64_t])
579
CFLAGS=$CFLAGS_hold
580
 
581
dnl Work out the size of the epoll_events struct on GNU/Linux.
582
AC_CACHE_CHECK([epoll_event size],
583
[libgo_cv_c_epoll_event_size],
584
[AC_COMPUTE_INT(libgo_cv_c_epoll_event_size,
585
[sizeof (struct epoll_event)],
586
[#include ],
587
[libgo_cv_c_epoll_event_size=0])])
588
SIZEOF_STRUCT_EPOLL_EVENT=${libgo_cv_c_epoll_event_size}
589
AC_SUBST(SIZEOF_STRUCT_EPOLL_EVENT)
590
 
591
dnl Work out the offset of the fd field in the epoll_events struct on
592
dnl GNU/Linux.
593
AC_CACHE_CHECK([epoll_event data.fd offset],
594
[libgo_cv_c_epoll_event_fd_offset],
595
[AC_COMPUTE_INT(libgo_cv_c_epoll_event_fd_offset,
596
[offsetof (struct epoll_event, data.fd)],
597
[#include 
598
#include ],
599
[libgo_cv_c_epoll_event_fd_offset=0])])
600
STRUCT_EPOLL_EVENT_FD_OFFSET=${libgo_cv_c_epoll_event_fd_offset}
601
AC_SUBST(STRUCT_EPOLL_EVENT_FD_OFFSET)
602
 
603
dnl See if struct exception is defined in .
604
AC_CHECK_TYPE([struct exception],
605
[libgo_has_struct_exception=yes],
606
[libgo_has_struct_exception=no],
607
[#include ])
608
if test "$libgo_has_struct_exception" = "yes"; then
609
  AC_DEFINE(HAVE_STRUCT_EXCEPTION, 1,
610
            [Define to 1 if  defines struct exception])
611
fi
612
 
613
dnl Check if makecontext expects the uc_stack member of ucontext to point
614
dnl to the top of the stack.
615
case "$target" in
616
  sparc*-*-solaris2.[[89]]*)
617
    libgo_cv_lib_makecontext_stack_top=yes
618
    ;;
619
  *)
620
    libgo_cv_lib_makecontext_stack_top=no
621
    ;;
622
esac
623
if test "$libgo_cv_lib_makecontext_stack_top" = "yes"; then
624
  AC_DEFINE(MAKECONTEXT_STACK_TOP, 1,
625
            [Define if makecontext expects top of stack in uc_stack.])
626
fi
627
 
628
dnl See whether setcontext changes the value of TLS variables.
629
AC_CACHE_CHECK([whether setcontext clobbers TLS variables],
630
[libgo_cv_lib_setcontext_clobbers_tls],
631
[CFLAGS_hold="$CFLAGS"
632
CFLAGS="$PTHREAD_CFLAGS"
633
LIBS_hold="$LIBS"
634
LIBS="$LIBS $PTHREAD_LIBS"
635
AC_CHECK_SIZEOF([void *])
636
AS_VAR_ARITH([ptr_type_size], [$ac_cv_sizeof_void_p \* 8])
637
AC_RUN_IFELSE(
638
  [AC_LANG_SOURCE([
639
#include 
640
#include 
641
#include 
642
#include 
643
 
644
__thread int tls;
645
 
646
static char stack[[10 * 1024 * 1024]];
647
static ucontext_t c;
648
 
649
/* Called via makecontext/setcontext.  */
650
 
651
static void
652
cfn (void)
653
{
654
  exit (tls);
655
}
656
 
657
/* Called via pthread_create.  */
658
 
659
static void *
660
tfn (void *dummy)
661
{
662
  /* The thread should still see this value after calling
663
     setcontext.  */
664
  tls = 0;
665
 
666
  setcontext (&c);
667
 
668
  /* The call to setcontext should not return.  */
669
  abort ();
670
}
671
 
672
int
673
main ()
674
{
675
  pthread_t tid;
676
 
677
  /* The thread should not see this value.  */
678
  tls = 1;
679
 
680
  if (getcontext (&c) < 0)
681
    abort ();
682
 
683
  c.uc_stack.ss_sp = stack;
684
#ifdef MAKECONTEXT_STACK_TOP
685
  c.uc_stack.ss_sp += sizeof stack;
686
#endif
687
  c.uc_stack.ss_flags = 0;
688
  c.uc_stack.ss_size = sizeof stack;
689
  c.uc_link = NULL;
690
  makecontext (&c, cfn, 0);
691
 
692
  if (pthread_create (&tid, NULL, tfn, NULL) != 0)
693
    abort ();
694
 
695
  if (pthread_join (tid, NULL) != 0)
696
    abort ();
697
 
698
  /* The thread should have called exit.  */
699
  abort ();
700
}
701
])],
702
[libgo_cv_lib_setcontext_clobbers_tls=no],
703
[libgo_cv_lib_setcontext_clobbers_tls=yes],
704
[case "$target:$ptr_type_size" in
705
  i?86-*-solaris2.1[[01]]:64 | x86_64*-*-solaris2.1[[01]]:64)
706
    libgo_cv_lib_setcontext_clobbers_tls=yes ;;
707
  *)
708
    libgo_cv_lib_setcontext_clobbers_tls=no ;;
709
 esac
710
])
711
CFLAGS="$CFLAGS_hold"
712
LIBS="$LIBS_hold"
713
])
714
if test "$libgo_cv_lib_setcontext_clobbers_tls" = "yes"; then
715
  AC_DEFINE(SETCONTEXT_CLOBBERS_TLS, 1,
716
            [Define if setcontext clobbers TLS variables])
717
fi
718
 
719
AC_CACHE_SAVE
720
 
721
if test ${multilib} = yes; then
722
  multilib_arg="--enable-multilib"
723
else
724
  multilib_arg=
725
fi
726
 
727
AC_CONFIG_FILES(Makefile testsuite/Makefile)
728
 
729
AC_CONFIG_COMMANDS([default],
730
[if test -n "$CONFIG_FILES"; then
731
   # Multilibs need MULTISUBDIR defined correctly in certain makefiles so
732
   # that multilib installs will end up installed in the correct place.
733
   # The testsuite needs it for multilib-aware ABI baseline files.
734
   # To work around this not being passed down from config-ml.in ->
735
   # srcdir/Makefile.am -> srcdir/{src,libsupc++,...}/Makefile.am, manually
736
   # append it here.  Only modify Makefiles that have just been created.
737
   #
738
   # Also, get rid of this simulated-VPATH thing that automake does.
739
   cat > vpsed << \_EOF
740
s!`test -f '$<' || echo '$(srcdir)/'`!!
741
_EOF
742
   for i in $SUBDIRS; do
743
    case $CONFIG_FILES in
744
     *${i}/Makefile*)
745
       #echo "Adding MULTISUBDIR to $i/Makefile"
746
       sed -f vpsed $i/Makefile > tmp
747
       grep '^MULTISUBDIR =' Makefile >> tmp
748
       mv tmp $i/Makefile
749
       ;;
750
    esac
751
   done
752
   rm vpsed
753
 fi
754
],
755
[
756
# Variables needed in config.status (file generation) which aren't already
757
# passed by autoconf.
758
SUBDIRS="$SUBDIRS"
759
])
760
 
761
AC_OUTPUT

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.