0000: 64 6e 6c 20 2d 2a 2d 20 41 75 74 6f 63 6f 6e 66 dnl -*- Autoconf
0010: 20 2d 2a 2d 0a 64 6e 6c 20 43 6f 70 79 72 69 67 -*-.dnl Copyrig
0020: 68 74 20 28 43 29 20 31 39 39 33 2d 32 30 30 39 ht (C) 1993-2009
0030: 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46 Free Software F
0040: 6f 75 6e 64 61 74 69 6f 6e 2c 20 49 6e 63 2e 0a oundation, Inc..
0050: 64 6e 6c 20 54 68 69 73 20 66 69 6c 65 20 69 73 dnl This file is
0060: 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 2c 20 free software,
0070: 64 69 73 74 72 69 62 75 74 65 64 20 75 6e 64 65 distributed unde
0080: 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 r the terms of t
0090: 68 65 20 47 4e 55 0a 64 6e 6c 20 47 65 6e 65 72 he GNU.dnl Gener
00a0: 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 al Public Licens
00b0: 65 2e 20 20 41 73 20 61 20 73 70 65 63 69 61 6c e. As a special
00c0: 20 65 78 63 65 70 74 69 6f 6e 20 74 6f 20 74 68 exception to th
00d0: 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 0a 64 6e e GNU General.dn
00e0: 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 l Public License
00f0: 2c 20 74 68 69 73 20 66 69 6c 65 20 6d 61 79 20 , this file may
0100: 62 65 20 64 69 73 74 72 69 62 75 74 65 64 20 61 be distributed a
0110: 73 20 70 61 72 74 20 6f 66 20 61 20 70 72 6f 67 s part of a prog
0120: 72 61 6d 0a 64 6e 6c 20 74 68 61 74 20 63 6f 6e ram.dnl that con
0130: 74 61 69 6e 73 20 61 20 63 6f 6e 66 69 67 75 72 tains a configur
0140: 61 74 69 6f 6e 20 73 63 72 69 70 74 20 67 65 6e ation script gen
0150: 65 72 61 74 65 64 20 62 79 20 41 75 74 6f 63 6f erated by Autoco
0160: 6e 66 2c 20 75 6e 64 65 72 0a 64 6e 6c 20 74 68 nf, under.dnl th
0170: 65 20 73 61 6d 65 20 64 69 73 74 72 69 62 75 74 e same distribut
0180: 69 6f 6e 20 74 65 72 6d 73 20 61 73 20 74 68 65 ion terms as the
0190: 20 72 65 73 74 20 6f 66 20 74 68 61 74 20 70 72 rest of that pr
01a0: 6f 67 72 61 6d 2e 0a 0a 64 6e 6c 20 46 72 6f 6d ogram...dnl From
01b0: 20 42 72 75 6e 6f 20 48 61 69 62 6c 65 2c 20 4d Bruno Haible, M
01c0: 61 72 63 75 73 20 44 61 6e 69 65 6c 73 2c 20 53 arcus Daniels, S
01d0: 61 6d 20 53 74 65 69 6e 67 6f 6c 64 2e 0a 0a 41 am Steingold...A
01e0: 43 5f 50 52 45 52 45 51 28 32 2e 35 37 29 0a 0a C_PREREQ(2.57)..
01f0: 41 43 5f 44 45 46 55 4e 28 5b 43 4c 5f 4d 4d 41 AC_DEFUN([CL_MMA
0200: 50 5d 2c 0a 5b 41 43 5f 42 45 46 4f 52 45 28 5b P],.[AC_BEFORE([
0210: 24 30 5d 2c 20 5b 43 4c 5f 4d 55 4e 4d 41 50 5d $0], [CL_MUNMAP]
0220: 29 41 43 5f 42 45 46 4f 52 45 28 5b 24 30 5d 2c )AC_BEFORE([$0],
0230: 20 5b 43 4c 5f 4d 50 52 4f 54 45 43 54 5d 29 0a [CL_MPROTECT]).
0240: 41 43 5f 43 48 45 43 4b 5f 48 45 41 44 45 52 28 AC_CHECK_HEADER(
0250: 73 79 73 2f 6d 6d 61 6e 2e 68 2c 20 2c 20 6e 6f sys/mman.h, , no
0260: 5f 6d 6d 61 70 3d 31 29 64 6e 6c 0a 69 66 20 74 _mmap=1)dnl.if t
0270: 65 73 74 20 2d 7a 20 22 24 6e 6f 5f 6d 6d 61 70 est -z "$no_mmap
0280: 22 3b 20 74 68 65 6e 0a 41 43 5f 43 48 45 43 4b "; then.AC_CHECK
0290: 5f 46 55 4e 43 28 6d 6d 61 70 2c 20 2c 20 6e 6f _FUNC(mmap, , no
02a0: 5f 6d 6d 61 70 3d 31 29 64 6e 6c 0a 69 66 20 74 _mmap=1)dnl.if t
02b0: 65 73 74 20 2d 7a 20 22 24 6e 6f 5f 6d 6d 61 70 est -z "$no_mmap
02c0: 22 3b 20 74 68 65 6e 0a 41 43 5f 44 45 46 49 4e "; then.AC_DEFIN
02d0: 45 28 5b 48 41 56 45 5f 4d 4d 41 50 5d 2c 5b 5d E([HAVE_MMAP],[]
02e0: 2c 5b 68 61 76 65 20 3c 73 79 73 2f 6d 6d 61 70 ,[have <sys/mmap
02f0: 2e 68 3e 20 61 6e 64 20 74 68 65 20 6d 6d 61 70 .h> and the mmap
0300: 28 29 20 66 75 6e 63 74 69 6f 6e 5d 29 0a 41 43 () function]).AC
0310: 5f 43 41 43 48 45 5f 43 48 45 43 4b 28 66 6f 72 _CACHE_CHECK(for
0320: 20 77 6f 72 6b 69 6e 67 20 6d 6d 61 70 2c 20 63 working mmap, c
0330: 6c 5f 63 76 5f 66 75 6e 63 5f 6d 6d 61 70 5f 77 l_cv_func_mmap_w
0340: 6f 72 6b 73 2c 20 5b 0a 63 61 73 65 20 22 24 68 orks, [.case "$h
0350: 6f 73 74 22 20 69 6e 0a 20 20 69 5b 33 34 35 36 ost" in. i[3456
0360: 37 5d 38 36 2d 2a 2d 73 79 73 76 34 2a 29 0a 20 7]86-*-sysv4*).
0370: 20 20 20 23 20 55 4e 49 58 5f 53 59 53 56 5f 55 # UNIX_SYSV_U
0380: 48 43 5f 31 0a 20 20 20 20 61 76 6f 69 64 3d 30 HC_1. avoid=0
0390: 78 30 38 30 30 30 30 30 30 20 3b 3b 0a 20 20 6d x08000000 ;;. m
03a0: 69 70 73 2d 73 67 69 2d 69 72 69 78 2a 20 7c 20 ips-sgi-irix* |
03b0: 6d 69 70 73 2d 64 65 63 2d 75 6c 74 72 69 78 2a mips-dec-ultrix*
03c0: 29 0a 20 20 20 20 23 20 55 4e 49 58 5f 49 52 49 ). # UNIX_IRI
03d0: 58 2c 20 55 4e 49 58 5f 44 45 43 5f 55 4c 54 52 X, UNIX_DEC_ULTR
03e0: 49 58 0a 20 20 20 20 61 76 6f 69 64 3d 30 78 31 IX. avoid=0x1
03f0: 30 30 30 30 30 30 30 20 3b 3b 0a 20 20 72 73 36 0000000 ;;. rs6
0400: 30 30 30 2d 69 62 6d 2d 61 69 78 2a 29 0a 20 20 000-ibm-aix*).
0410: 20 20 23 20 55 4e 49 58 5f 41 49 58 0a 20 20 20 # UNIX_AIX.
0420: 20 61 76 6f 69 64 3d 30 78 32 30 30 30 30 30 30 avoid=0x2000000
0430: 30 20 3b 3b 0a 20 20 2a 29 0a 20 20 20 20 61 76 0 ;;. *). av
0440: 6f 69 64 3d 30 20 3b 3b 0a 65 73 61 63 0a 6d 6d oid=0 ;;.esac.mm
0450: 61 70 5f 70 72 6f 67 5f 31 3d 27 0a 23 69 6e 63 ap_prog_1='.#inc
0460: 6c 75 64 65 20 3c 73 74 64 6c 69 62 2e 68 3e 0a lude <stdlib.h>.
0470: 23 69 66 64 65 66 20 48 41 56 45 5f 55 4e 49 53 #ifdef HAVE_UNIS
0480: 54 44 5f 48 0a 23 69 6e 63 6c 75 64 65 20 3c 75 TD_H.#include <u
0490: 6e 69 73 74 64 2e 68 3e 0a 23 65 6e 64 69 66 0a nistd.h>.#endif.
04a0: 23 69 6e 63 6c 75 64 65 20 3c 66 63 6e 74 6c 2e #include <fcntl.
04b0: 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 h>.#include <sys
04c0: 2f 74 79 70 65 73 2e 68 3e 0a 23 69 6e 63 6c 75 /types.h>.#inclu
04d0: 64 65 20 3c 73 79 73 2f 6d 6d 61 6e 2e 68 3e 0a de <sys/mman.h>.
04e0: 69 6e 74 20 6d 61 69 6e 20 28 29 20 7b 0a 27 0a int main () {.'.
04f0: 6d 6d 61 70 5f 70 72 6f 67 5f 32 3d 22 23 64 65 mmap_prog_2="#de
0500: 66 69 6e 65 20 62 69 74 73 5f 74 6f 5f 61 76 6f fine bits_to_avo
0510: 69 64 20 24 61 76 6f 69 64 22 27 0a 23 64 65 66 id $avoid"'.#def
0520: 69 6e 65 20 6d 79 5f 73 68 69 66 74 20 32 34 0a ine my_shift 24.
0530: 23 64 65 66 69 6e 65 20 6d 79 5f 6c 6f 77 20 20 #define my_low
0540: 20 31 0a 23 69 66 64 65 66 20 46 4f 52 5f 53 55 1.#ifdef FOR_SU
0550: 4e 34 5f 32 39 0a 23 64 65 66 69 6e 65 20 6d 79 N4_29.#define my
0560: 5f 68 69 67 68 20 20 33 31 0a 23 64 65 66 69 6e _high 31.#defin
0570: 65 20 6d 79 5f 73 69 7a 65 20 20 33 32 37 36 38 e my_size 32768
0580: 20 2f 2a 20 68 6f 70 65 20 74 68 61 74 20 33 32 /* hope that 32
0590: 37 36 38 20 69 73 20 61 20 6d 75 6c 74 69 70 6c 768 is a multipl
05a0: 65 20 6f 66 20 74 68 65 20 70 61 67 65 20 73 69 e of the page si
05b0: 7a 65 20 2a 2f 0a 2f 2a 20 69 2a 33 32 20 4b 42 ze */./* i*32 KB
05c0: 20 66 6f 72 20 69 3d 31 2e 2e 33 31 20 67 69 76 for i=1..31 giv
05d0: 65 73 20 61 20 74 6f 74 61 6c 20 6f 66 20 31 35 es a total of 15
05e0: 2e 35 20 4d 42 2c 20 77 68 69 63 68 20 69 73 20 .5 MB, which is
05f0: 63 6c 6f 73 65 20 74 6f 20 77 68 61 74 20 77 65 close to what we
0600: 20 6e 65 65 64 20 2a 2f 0a 23 65 6c 73 65 0a 23 need */.#else.#
0610: 64 65 66 69 6e 65 20 6d 79 5f 68 69 67 68 20 20 define my_high
0620: 36 34 0a 23 64 65 66 69 6e 65 20 6d 79 5f 73 69 64.#define my_si
0630: 7a 65 20 20 38 31 39 32 20 2f 2a 20 68 6f 70 65 ze 8192 /* hope
0640: 20 74 68 61 74 20 38 31 39 32 20 69 73 20 61 20 that 8192 is a
0650: 6d 75 6c 74 69 70 6c 65 20 6f 66 20 74 68 65 20 multiple of the
0660: 70 61 67 65 20 73 69 7a 65 20 2a 2f 0a 2f 2a 20 page size */./*
0670: 69 2a 38 20 4b 42 20 66 6f 72 20 69 3d 31 2e 2e i*8 KB for i=1..
0680: 36 34 20 67 69 76 65 73 20 61 20 74 6f 74 61 6c 64 gives a total
0690: 20 6f 66 20 31 36 2e 32 35 20 4d 42 2c 20 77 68 of 16.25 MB, wh
06a0: 69 63 68 20 69 73 20 63 6c 6f 73 65 20 74 6f 20 ich is close to
06b0: 77 68 61 74 20 77 65 20 6e 65 65 64 20 2a 2f 0a what we need */.
06c0: 23 65 6e 64 69 66 0a 20 7b 6c 6f 6e 67 20 69 3b #endif. {long i;
06d0: 0a 23 64 65 66 69 6e 65 20 69 5f 6f 6b 28 69 29 .#define i_ok(i)
06e0: 20 20 28 28 69 29 20 26 20 28 62 69 74 73 5f 74 ((i) & (bits_t
06f0: 6f 5f 61 76 6f 69 64 20 3e 3e 20 6d 79 5f 73 68 o_avoid >> my_sh
0700: 69 66 74 29 20 3d 3d 20 30 29 0a 20 20 66 6f 72 ift) == 0). for
0710: 20 28 69 3d 6d 79 5f 6c 6f 77 3b 20 69 3c 3d 6d (i=my_low; i<=m
0720: 79 5f 68 69 67 68 3b 20 69 2b 2b 29 0a 20 20 20 y_high; i++).
0730: 20 69 66 20 28 69 5f 6f 6b 28 69 29 29 0a 20 20 if (i_ok(i)).
0740: 20 20 20 20 7b 20 63 61 64 64 72 5f 74 20 61 64 { caddr_t ad
0750: 64 72 20 3d 20 28 63 61 64 64 72 5f 74 29 28 69 dr = (caddr_t)(i
0760: 20 3c 3c 20 6d 79 5f 73 68 69 66 74 29 3b 0a 2f << my_shift);./
0770: 2a 20 43 68 65 63 6b 20 66 6f 72 20 38 20 4d 42 * Check for 8 MB
0780: 2c 20 6e 6f 74 20 31 36 20 4d 42 2e 20 54 68 69 , not 16 MB. Thi
0790: 73 20 69 73 20 6d 6f 72 65 20 6c 69 6b 65 6c 79 s is more likely
07a0: 20 74 6f 20 77 6f 72 6b 20 6f 6e 20 53 6f 6c 61 to work on Sola
07b0: 72 69 73 20 32 2e 20 2a 2f 0a 23 69 66 20 62 69 ris 2. */.#if bi
07c0: 74 73 5f 74 6f 5f 61 76 6f 69 64 0a 20 20 20 20 ts_to_avoid.
07d0: 20 20 20 20 6c 6f 6e 67 20 73 69 7a 65 20 3d 20 long size =
07e0: 69 2a 6d 79 5f 73 69 7a 65 3b 0a 23 65 6c 73 65 i*my_size;.#else
07f0: 0a 20 20 20 20 20 20 20 20 6c 6f 6e 67 20 73 69 . long si
0800: 7a 65 20 3d 20 28 28 69 2b 31 29 2f 32 29 2a 6d ze = ((i+1)/2)*m
0810: 79 5f 73 69 7a 65 3b 0a 23 65 6e 64 69 66 0a 20 y_size;.#endif.
0820: 20 20 20 20 20 20 20 69 66 20 28 6d 6d 61 70 28 if (mmap(
0830: 61 64 64 72 2c 73 69 7a 65 2c 50 52 4f 54 5f 52 addr,size,PROT_R
0840: 45 41 44 7c 50 52 4f 54 5f 57 52 49 54 45 2c 66 EAD|PROT_WRITE,f
0850: 6c 61 67 73 7c 4d 41 50 5f 46 49 58 45 44 2c 66 lags|MAP_FIXED,f
0860: 64 2c 30 29 20 3d 3d 20 28 76 6f 69 64 2a 29 2d d,0) == (void*)-
0870: 31 29 20 65 78 69 74 28 31 29 3b 0a 20 20 20 20 1) exit(1);.
0880: 7d 0a 23 64 65 66 69 6e 65 20 78 28 69 29 20 20 }.#define x(i)
0890: 2a 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 *(unsigned char
08a0: 2a 29 20 28 28 69 3c 3c 6d 79 5f 73 68 69 66 74 *) ((i<<my_shift
08b0: 29 20 2b 20 28 69 2a 69 29 29 0a 23 64 65 66 69 ) + (i*i)).#defi
08c0: 6e 65 20 79 28 69 29 20 20 28 75 6e 73 69 67 6e ne y(i) (unsign
08d0: 65 64 20 63 68 61 72 29 28 28 33 2a 69 2d 34 29 ed char)((3*i-4)
08e0: 2a 28 37 2a 69 2b 33 29 29 0a 20 20 66 6f 72 20 *(7*i+3)). for
08f0: 28 69 3d 6d 79 5f 6c 6f 77 3b 20 69 3c 3d 6d 79 (i=my_low; i<=my
0900: 5f 68 69 67 68 3b 20 69 2b 2b 29 20 69 66 20 28 _high; i++) if (
0910: 69 5f 6f 6b 28 69 29 29 20 7b 20 78 28 69 29 20 i_ok(i)) { x(i)
0920: 3d 20 79 28 69 29 3b 20 7d 0a 20 20 66 6f 72 20 = y(i); }. for
0930: 28 69 3d 6d 79 5f 68 69 67 68 3b 20 69 3e 3d 6d (i=my_high; i>=m
0940: 79 5f 6c 6f 77 3b 20 69 2d 2d 29 20 69 66 20 28 y_low; i--) if (
0950: 69 5f 6f 6b 28 69 29 29 20 7b 20 69 66 20 28 78 i_ok(i)) { if (x
0960: 28 69 29 20 21 3d 20 79 28 69 29 29 20 65 78 69 (i) != y(i)) exi
0970: 74 28 31 29 3b 20 7d 0a 20 20 65 78 69 74 28 30 t(1); }. exit(0
0980: 29 3b 0a 7d 7d 0a 27 0a 41 43 5f 54 52 59 5f 52 );.}}.'.AC_TRY_R
0990: 55 4e 28 47 4c 5f 4e 4f 43 52 41 53 48 5b 24 6d UN(GL_NOCRASH[$m
09a0: 6d 61 70 5f 70 72 6f 67 5f 31 0a 20 20 69 6e 74 map_prog_1. int
09b0: 20 66 6c 61 67 73 20 3d 20 4d 41 50 5f 41 4e 4f flags = MAP_ANO
09c0: 4e 20 7c 20 4d 41 50 5f 50 52 49 56 41 54 45 3b N | MAP_PRIVATE;
09d0: 0a 20 20 69 6e 74 20 66 64 20 3d 20 2d 31 3b 0a . int fd = -1;.
09e0: 20 20 6e 6f 63 72 61 73 68 5f 69 6e 69 74 28 29 nocrash_init()
09f0: 3b 0a 24 6d 6d 61 70 5f 70 72 6f 67 5f 32 0a 5d ;.$mmap_prog_2.]
0a00: 2c 20 68 61 76 65 5f 6d 6d 61 70 5f 61 6e 6f 6e , have_mmap_anon
0a10: 3d 31 0a 63 6c 5f 63 76 5f 66 75 6e 63 5f 6d 6d =1.cl_cv_func_mm
0a20: 61 70 5f 61 6e 6f 6e 3d 79 65 73 2c 20 2c 0a 3a ap_anon=yes, ,.:
0a30: 20 23 20 57 68 65 6e 20 63 72 6f 73 73 2d 63 6f # When cross-co
0a40: 6d 70 69 6c 69 6e 67 2c 20 64 6f 6e 27 74 20 61 mpiling, don't a
0a50: 73 73 75 6d 65 20 61 6e 79 74 68 69 6e 67 2e 0a ssume anything..
0a60: 29 0a 41 43 5f 54 52 59 5f 52 55 4e 28 47 4c 5f ).AC_TRY_RUN(GL_
0a70: 4e 4f 43 52 41 53 48 5b 24 6d 6d 61 70 5f 70 72 NOCRASH[$mmap_pr
0a80: 6f 67 5f 31 0a 20 20 69 6e 74 20 66 6c 61 67 73 og_1. int flags
0a90: 20 3d 20 4d 41 50 5f 41 4e 4f 4e 59 4d 4f 55 53 = MAP_ANONYMOUS
0aa0: 20 7c 20 4d 41 50 5f 50 52 49 56 41 54 45 3b 0a | MAP_PRIVATE;.
0ab0: 20 20 69 6e 74 20 66 64 20 3d 20 2d 31 3b 0a 20 int fd = -1;.
0ac0: 20 6e 6f 63 72 61 73 68 5f 69 6e 69 74 28 29 3b nocrash_init();
0ad0: 0a 24 6d 6d 61 70 5f 70 72 6f 67 5f 32 0a 5d 2c .$mmap_prog_2.],
0ae0: 20 68 61 76 65 5f 6d 6d 61 70 5f 61 6e 6f 6e 3d have_mmap_anon=
0af0: 31 0a 63 6c 5f 63 76 5f 66 75 6e 63 5f 6d 6d 61 1.cl_cv_func_mma
0b00: 70 5f 61 6e 6f 6e 79 6d 6f 75 73 3d 79 65 73 2c p_anonymous=yes,
0b10: 20 2c 0a 3a 20 23 20 57 68 65 6e 20 63 72 6f 73 ,.: # When cros
0b20: 73 2d 63 6f 6d 70 69 6c 69 6e 67 2c 20 64 6f 6e s-compiling, don
0b30: 27 74 20 61 73 73 75 6d 65 20 61 6e 79 74 68 69 't assume anythi
0b40: 6e 67 2e 0a 29 0a 41 43 5f 54 52 59 5f 52 55 4e ng..).AC_TRY_RUN
0b50: 28 47 4c 5f 4e 4f 43 52 41 53 48 5b 24 6d 6d 61 (GL_NOCRASH[$mma
0b60: 70 5f 70 72 6f 67 5f 31 0a 23 69 66 6e 64 65 66 p_prog_1.#ifndef
0b70: 20 4d 41 50 5f 46 49 4c 45 0a 23 64 65 66 69 6e MAP_FILE.#defin
0b80: 65 20 4d 41 50 5f 46 49 4c 45 20 30 0a 23 65 6e e MAP_FILE 0.#en
0b90: 64 69 66 0a 20 20 69 6e 74 20 66 6c 61 67 73 20 dif. int flags
0ba0: 3d 20 4d 41 50 5f 46 49 4c 45 20 7c 20 4d 41 50 = MAP_FILE | MAP
0bb0: 5f 50 52 49 56 41 54 45 3b 0a 20 20 69 6e 74 20 _PRIVATE;. int
0bc0: 66 64 20 3d 20 6f 70 65 6e 28 22 2f 64 65 76 2f fd = open("/dev/
0bd0: 7a 65 72 6f 22 2c 4f 5f 52 44 4f 4e 4c 59 2c 30 zero",O_RDONLY,0
0be0: 36 36 36 29 3b 0a 20 20 69 66 20 28 66 64 3c 30 666);. if (fd<0
0bf0: 29 20 65 78 69 74 28 31 29 3b 0a 20 20 6e 6f 63 ) exit(1);. noc
0c00: 72 61 73 68 5f 69 6e 69 74 28 29 3b 0a 24 6d 6d rash_init();.$mm
0c10: 61 70 5f 70 72 6f 67 5f 32 0a 5d 2c 20 68 61 76 ap_prog_2.], hav
0c20: 65 5f 6d 6d 61 70 5f 64 65 76 7a 65 72 6f 3d 31 e_mmap_devzero=1
0c30: 0a 63 6c 5f 63 76 5f 66 75 6e 63 5f 6d 6d 61 70 .cl_cv_func_mmap
0c40: 5f 64 65 76 7a 65 72 6f 3d 79 65 73 2c 0a 72 65 _devzero=yes,.re
0c50: 74 72 79 5f 6d 6d 61 70 3d 31 2c 0a 3a 20 23 20 try_mmap=1,.: #
0c60: 57 68 65 6e 20 63 72 6f 73 73 2d 63 6f 6d 70 69 When cross-compi
0c70: 6c 69 6e 67 2c 20 64 6f 6e 27 74 20 61 73 73 75 ling, don't assu
0c80: 6d 65 20 61 6e 79 74 68 69 6e 67 2e 0a 29 0a 69 me anything..).i
0c90: 66 20 74 65 73 74 20 2d 6e 20 22 24 72 65 74 72 f test -n "$retr
0ca0: 79 5f 6d 6d 61 70 22 3b 20 74 68 65 6e 0a 41 43 y_mmap"; then.AC
0cb0: 5f 54 52 59 5f 52 55 4e 28 47 4c 5f 4e 4f 43 52 _TRY_RUN(GL_NOCR
0cc0: 41 53 48 5b 23 64 65 66 69 6e 65 20 46 4f 52 5f ASH[#define FOR_
0cd0: 53 55 4e 34 5f 32 39 0a 24 6d 6d 61 70 5f 70 72 SUN4_29.$mmap_pr
0ce0: 6f 67 5f 31 0a 23 69 66 6e 64 65 66 20 4d 41 50 og_1.#ifndef MAP
0cf0: 5f 46 49 4c 45 0a 23 64 65 66 69 6e 65 20 4d 41 _FILE.#define MA
0d00: 50 5f 46 49 4c 45 20 30 0a 23 65 6e 64 69 66 0a P_FILE 0.#endif.
0d10: 20 20 69 6e 74 20 66 6c 61 67 73 20 3d 20 4d 41 int flags = MA
0d20: 50 5f 46 49 4c 45 20 7c 20 4d 41 50 5f 50 52 49 P_FILE | MAP_PRI
0d30: 56 41 54 45 3b 0a 20 20 69 6e 74 20 66 64 20 3d VATE;. int fd =
0d40: 20 6f 70 65 6e 28 22 2f 64 65 76 2f 7a 65 72 6f open("/dev/zero
0d50: 22 2c 4f 5f 52 44 4f 4e 4c 59 2c 30 36 36 36 29 ",O_RDONLY,0666)
0d60: 3b 0a 20 20 69 66 20 28 66 64 3c 30 29 20 65 78 ;. if (fd<0) ex
0d70: 69 74 28 31 29 3b 0a 20 20 6e 6f 63 72 61 73 68 it(1);. nocrash
0d80: 5f 69 6e 69 74 28 29 3b 0a 24 6d 6d 61 70 5f 70 _init();.$mmap_p
0d90: 72 6f 67 5f 32 0a 5d 2c 20 68 61 76 65 5f 6d 6d rog_2.], have_mm
0da0: 61 70 5f 64 65 76 7a 65 72 6f 3d 31 0a 63 6c 5f ap_devzero=1.cl_
0db0: 63 76 5f 66 75 6e 63 5f 6d 6d 61 70 5f 64 65 76 cv_func_mmap_dev
0dc0: 7a 65 72 6f 5f 73 75 6e 34 5f 32 39 3d 79 65 73 zero_sun4_29=yes
0dd0: 2c 20 2c 0a 3a 20 23 20 57 68 65 6e 20 63 72 6f , ,.: # When cro
0de0: 73 73 2d 63 6f 6d 70 69 6c 69 6e 67 2c 20 64 6f ss-compiling, do
0df0: 6e 27 74 20 61 73 73 75 6d 65 20 61 6e 79 74 68 n't assume anyth
0e00: 69 6e 67 2e 0a 29 0a 66 69 0a 69 66 20 74 65 73 ing..).fi.if tes
0e10: 74 20 2d 6e 20 22 24 68 61 76 65 5f 6d 6d 61 70 t -n "$have_mmap
0e20: 5f 61 6e 6f 6e 22 20 2d 6f 20 2d 6e 20 22 24 68 _anon" -o -n "$h
0e30: 61 76 65 5f 6d 6d 61 70 5f 64 65 76 7a 65 72 6f ave_mmap_devzero
0e40: 22 3b 20 74 68 65 6e 0a 63 6c 5f 63 76 5f 66 75 "; then.cl_cv_fu
0e50: 6e 63 5f 6d 6d 61 70 5f 77 6f 72 6b 73 3d 79 65 nc_mmap_works=ye
0e60: 73 0a 65 6c 73 65 0a 63 6c 5f 63 76 5f 66 75 6e s.else.cl_cv_fun
0e70: 63 5f 6d 6d 61 70 5f 77 6f 72 6b 73 3d 6e 6f 0a c_mmap_works=no.
0e80: 66 69 0a 5d 29 0a 69 66 20 74 65 73 74 20 22 24 fi.]).if test "$
0e90: 63 6c 5f 63 76 5f 66 75 6e 63 5f 6d 6d 61 70 5f cl_cv_func_mmap_
0ea0: 61 6e 6f 6e 22 20 3d 20 79 65 73 3b 20 74 68 65 anon" = yes; the
0eb0: 6e 0a 41 43 5f 44 45 46 49 4e 45 28 5b 48 41 56 n.AC_DEFINE([HAV
0ec0: 45 5f 4d 4d 41 50 5f 41 4e 4f 4e 5d 2c 5b 5d 2c E_MMAP_ANON],[],
0ed0: 5b 3c 73 79 73 2f 6d 6d 61 6e 2e 68 3e 20 64 65 [<sys/mman.h> de
0ee0: 66 69 6e 65 73 20 4d 41 50 5f 41 4e 4f 4e 20 61 fines MAP_ANON a
0ef0: 6e 64 20 6d 6d 61 70 69 6e 67 20 77 69 74 68 20 nd mmaping with
0f00: 4d 41 50 5f 41 4e 4f 4e 20 77 6f 72 6b 73 5d 29 MAP_ANON works])
0f10: 0a 66 69 0a 69 66 20 74 65 73 74 20 22 24 63 6c .fi.if test "$cl
0f20: 5f 63 76 5f 66 75 6e 63 5f 6d 6d 61 70 5f 61 6e _cv_func_mmap_an
0f30: 6f 6e 79 6d 6f 75 73 22 20 3d 20 79 65 73 3b 20 onymous" = yes;
0f40: 74 68 65 6e 0a 41 43 5f 44 45 46 49 4e 45 28 5b then.AC_DEFINE([
0f50: 48 41 56 45 5f 4d 4d 41 50 5f 41 4e 4f 4e 59 4d HAVE_MMAP_ANONYM
0f60: 4f 55 53 5d 2c 5b 5d 2c 5b 3c 73 79 73 2f 6d 6d OUS],[],[<sys/mm
0f70: 61 6e 2e 68 3e 20 64 65 66 69 6e 65 73 20 4d 41 an.h> defines MA
0f80: 50 5f 41 4e 4f 4e 59 4d 4f 55 53 20 61 6e 64 20 P_ANONYMOUS and
0f90: 6d 6d 61 70 69 6e 67 20 77 69 74 68 20 4d 41 50 mmaping with MAP
0fa0: 5f 41 4e 4f 4e 59 4d 4f 55 53 20 77 6f 72 6b 73 _ANONYMOUS works
0fb0: 5d 29 0a 66 69 0a 69 66 20 74 65 73 74 20 22 24 ]).fi.if test "$
0fc0: 63 6c 5f 63 76 5f 66 75 6e 63 5f 6d 6d 61 70 5f cl_cv_func_mmap_
0fd0: 64 65 76 7a 65 72 6f 22 20 3d 20 79 65 73 3b 20 devzero" = yes;
0fe0: 74 68 65 6e 0a 41 43 5f 44 45 46 49 4e 45 28 5b then.AC_DEFINE([
0ff0: 48 41 56 45 5f 4d 4d 41 50 5f 44 45 56 5a 45 52 HAVE_MMAP_DEVZER
1000: 4f 5d 2c 5b 5d 2c 5b 6d 6d 61 70 69 6e 67 20 6f O],[],[mmaping o
1010: 66 20 74 68 65 20 73 70 65 63 69 61 6c 20 64 65 f the special de
1020: 76 69 63 65 20 2f 64 65 76 2f 7a 65 72 6f 20 77 vice /dev/zero w
1030: 6f 72 6b 73 5d 29 0a 66 69 0a 69 66 20 74 65 73 orks]).fi.if tes
1040: 74 20 22 24 63 6c 5f 63 76 5f 66 75 6e 63 5f 6d t "$cl_cv_func_m
1050: 6d 61 70 5f 64 65 76 7a 65 72 6f 5f 73 75 6e 34 map_devzero_sun4
1060: 5f 32 39 22 20 3d 20 79 65 73 3b 20 74 68 65 6e _29" = yes; then
1070: 0a 41 43 5f 44 45 46 49 4e 45 28 5b 48 41 56 45 .AC_DEFINE([HAVE
1080: 5f 4d 4d 41 50 5f 44 45 56 5a 45 52 4f 5f 53 55 _MMAP_DEVZERO_SU
1090: 4e 34 5f 32 39 5d 2c 5b 5d 2c 5b 6d 6d 61 70 69 N4_29],[],[mmapi
10a0: 6e 67 20 6f 66 20 74 68 65 20 73 70 65 63 69 61 ng of the specia
10b0: 6c 20 64 65 76 69 63 65 20 2f 64 65 76 2f 7a 65 l device /dev/ze
10c0: 72 6f 20 77 6f 72 6b 73 2c 20 62 75 74 20 6f 6e ro works, but on
10d0: 6c 79 20 6f 6e 20 61 64 64 72 65 73 73 65 73 20 ly on addresses
10e0: 3c 20 32 5e 32 39 5d 29 0a 66 69 0a 66 69 0a 66 < 2^29]).fi.fi.f
10f0: 69 0a 5d 29 0a i.]).