Artifact 7e74a6b54b592898c27dbcb4ed42e2b5aa186d81:


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.]).