Artifact 85ed795606740f7df722cd37262699b49413f35a:


0000: 64 6e 6c 20 43 6f 70 79 72 69 67 68 74 20 28 43  dnl Copyright (C
0010: 29 20 31 39 39 33 2d 32 30 30 32 20 46 72 65 65  ) 1993-2002 Free
0020: 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61   Software Founda
0030: 74 69 6f 6e 2c 20 49 6e 63 2e 0a 64 6e 6c 20 54  tion, Inc..dnl T
0040: 68 69 73 20 66 69 6c 65 20 69 73 20 66 72 65 65  his file is free
0050: 20 73 6f 66 74 77 61 72 65 2c 20 64 69 73 74 72   software, distr
0060: 69 62 75 74 65 64 20 75 6e 64 65 72 20 74 68 65  ibuted under the
0070: 20 74 65 72 6d 73 20 6f 66 20 74 68 65 20 47 4e   terms of the GN
0080: 55 0a 64 6e 6c 20 47 65 6e 65 72 61 6c 20 50 75  U.dnl General Pu
0090: 62 6c 69 63 20 4c 69 63 65 6e 73 65 2e 20 20 41  blic License.  A
00a0: 73 20 61 20 73 70 65 63 69 61 6c 20 65 78 63 65  s a special exce
00b0: 70 74 69 6f 6e 20 74 6f 20 74 68 65 20 47 4e 55  ption to the GNU
00c0: 20 47 65 6e 65 72 61 6c 0a 64 6e 6c 20 50 75 62   General.dnl Pub
00d0: 6c 69 63 20 4c 69 63 65 6e 73 65 2c 20 74 68 69  lic License, thi
00e0: 73 20 66 69 6c 65 20 6d 61 79 20 62 65 20 64 69  s file may be di
00f0: 73 74 72 69 62 75 74 65 64 20 61 73 20 70 61 72  stributed as par
0100: 74 20 6f 66 20 61 20 70 72 6f 67 72 61 6d 0a 64  t of a program.d
0110: 6e 6c 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73  nl that contains
0120: 20 61 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e   a configuration
0130: 20 73 63 72 69 70 74 20 67 65 6e 65 72 61 74 65   script generate
0140: 64 20 62 79 20 41 75 74 6f 63 6f 6e 66 2c 20 75  d by Autoconf, u
0150: 6e 64 65 72 0a 64 6e 6c 20 74 68 65 20 73 61 6d  nder.dnl the sam
0160: 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 20 74  e distribution t
0170: 65 72 6d 73 20 61 73 20 74 68 65 20 72 65 73 74  erms as the rest
0180: 20 6f 66 20 74 68 61 74 20 70 72 6f 67 72 61 6d   of that program
0190: 2e 0a 0a 64 6e 6c 20 46 72 6f 6d 20 42 72 75 6e  ...dnl From Brun
01a0: 6f 20 48 61 69 62 6c 65 2c 20 4d 61 72 63 75 73  o Haible, Marcus
01b0: 20 44 61 6e 69 65 6c 73 2c 20 53 61 6d 20 53 74   Daniels, Sam St
01c0: 65 69 6e 67 6f 6c 64 2e 0a 0a 41 43 5f 50 52 45  eingold...AC_PRE
01d0: 52 45 51 28 32 2e 31 33 29 0a 0a 41 43 5f 44 45  REQ(2.13)..AC_DE
01e0: 46 55 4e 28 5b 43 4c 5f 50 43 43 5f 53 54 52 55  FUN([CL_PCC_STRU
01f0: 43 54 5f 52 45 54 55 52 4e 5d 2c 0a 5b 41 43 5f  CT_RETURN],.[AC_
0200: 43 41 43 48 45 5f 43 48 45 43 4b 28 5b 66 6f 72  CACHE_CHECK([for
0210: 20 70 63 63 20 6e 6f 6e 2d 72 65 65 6e 74 72 61   pcc non-reentra
0220: 6e 74 20 73 74 72 75 63 74 20 72 65 74 75 72 6e  nt struct return
0230: 20 63 6f 6e 76 65 6e 74 69 6f 6e 5d 2c 20 63 6c   convention], cl
0240: 5f 63 76 5f 63 5f 73 74 72 75 63 74 5f 72 65 74  _cv_c_struct_ret
0250: 75 72 6e 5f 73 74 61 74 69 63 2c 20 5b 0a 73 61  urn_static, [.sa
0260: 76 65 5f 43 46 4c 41 47 53 3d 22 24 43 46 4c 41  ve_CFLAGS="$CFLA
0270: 47 53 22 0a 74 65 73 74 20 24 43 43 5f 47 43 43  GS".test $CC_GCC
0280: 20 3d 20 74 72 75 65 20 26 26 20 43 46 4c 41 47   = true && CFLAG
0290: 53 3d 22 24 43 46 4c 41 47 53 20 2d 4f 30 22 0a  S="$CFLAGS -O0".
02a0: 41 43 5f 54 52 59 5f 52 55 4e 28 5b 74 79 70 65  AC_TRY_RUN([type
02b0: 64 65 66 20 73 74 72 75 63 74 20 7b 20 69 6e 74  def struct { int
02c0: 20 61 3b 20 69 6e 74 20 62 3b 20 69 6e 74 20 63   a; int b; int c
02d0: 3b 20 69 6e 74 20 64 3b 20 69 6e 74 20 65 3b 20  ; int d; int e; 
02e0: 7d 20 66 6f 6f 3b 0a 66 6f 6f 20 66 6f 6f 66 75  } foo;.foo foofu
02f0: 6e 20 28 29 20 7b 20 73 74 61 74 69 63 20 66 6f  n () { static fo
0300: 6f 20 66 6f 6f 70 69 20 3d 20 7b 33 31 34 31 2c  o foopi = {3141,
0310: 35 39 32 36 2c 35 33 35 38 2c 39 37 39 33 2c 32  5926,5358,9793,2
0320: 33 38 35 7d 3b 20 72 65 74 75 72 6e 20 66 6f 6f  385}; return foo
0330: 70 69 3b 20 7d 0a 66 6f 6f 2a 20 28 2a 66 75 6e  pi; }.foo* (*fun
0340: 29 20 28 29 20 3d 20 28 66 6f 6f 2a 20 28 2a 29  ) () = (foo* (*)
0350: 20 28 29 29 20 66 6f 6f 66 75 6e 3b 0a 69 6e 74   ()) foofun;.int
0360: 20 6d 61 69 6e 28 29 0a 7b 20 66 6f 6f 20 66 6f   main().{ foo fo
0370: 6f 31 3b 0a 20 20 66 6f 6f 2a 20 66 6f 6f 70 74  o1;.  foo* foopt
0380: 72 31 3b 0a 20 20 66 6f 6f 20 66 6f 6f 32 3b 0a  r1;.  foo foo2;.
0390: 20 20 66 6f 6f 2a 20 66 6f 6f 70 74 72 32 3b 0a    foo* fooptr2;.
03a0: 20 20 66 6f 6f 31 20 3d 20 66 6f 6f 66 75 6e 28    foo1 = foofun(
03b0: 29 3b 20 66 6f 6f 70 74 72 31 20 3d 20 28 2a 66  ); fooptr1 = (*f
03c0: 75 6e 29 28 26 66 6f 6f 31 29 3b 0a 20 20 66 6f  un)(&foo1);.  fo
03d0: 6f 32 20 3d 20 66 6f 6f 66 75 6e 28 29 3b 20 66  o2 = foofun(); f
03e0: 6f 6f 70 74 72 32 20 3d 20 28 2a 66 75 6e 29 28  ooptr2 = (*fun)(
03f0: 26 66 6f 6f 32 29 3b 0a 20 20 65 78 69 74 28 21  &foo2);.  exit(!
0400: 28 66 6f 6f 70 74 72 31 20 3d 3d 20 66 6f 6f 70  (fooptr1 == foop
0410: 74 72 32 20 26 26 20 66 6f 6f 70 74 72 31 2d 3e  tr2 && fooptr1->
0420: 63 20 3d 3d 20 35 33 35 38 29 29 3b 0a 7d 5d 2c  c == 5358));.}],
0430: 20 63 6c 5f 63 76 5f 63 5f 73 74 72 75 63 74 5f   cl_cv_c_struct_
0440: 72 65 74 75 72 6e 5f 73 74 61 74 69 63 3d 79 65  return_static=ye
0450: 73 2c 20 72 6d 20 2d 66 20 63 6f 72 65 0a 63 6c  s, rm -f core.cl
0460: 5f 63 76 5f 63 5f 73 74 72 75 63 74 5f 72 65 74  _cv_c_struct_ret
0470: 75 72 6e 5f 73 74 61 74 69 63 3d 6e 6f 2c 0a 64  urn_static=no,.d
0480: 6e 6c 20 57 68 65 6e 20 63 72 6f 73 73 2d 63 6f  nl When cross-co
0490: 6d 70 69 6c 69 6e 67 2c 20 64 6f 6e 27 74 20 61  mpiling, don't a
04a0: 73 73 75 6d 65 20 61 6e 79 74 68 69 6e 67 2e 0a  ssume anything..
04b0: 64 6e 6c 20 54 68 65 72 65 20 61 72 65 20 65 76  dnl There are ev
04c0: 65 6e 20 77 65 69 72 64 65 72 20 72 65 74 75 72  en weirder retur
04d0: 6e 20 76 61 6c 75 65 20 70 61 73 73 69 6e 67 20  n value passing 
04e0: 63 6f 6e 76 65 6e 74 69 6f 6e 73 20 74 68 61 6e  conventions than
04f0: 20 70 63 63 2e 0a 63 6c 5f 63 76 5f 63 5f 73 74   pcc..cl_cv_c_st
0500: 72 75 63 74 5f 72 65 74 75 72 6e 5f 73 74 61 74  ruct_return_stat
0510: 69 63 3d 22 67 75 65 73 73 69 6e 67 20 6e 6f 22  ic="guessing no"
0520: 29 0a 43 46 4c 41 47 53 3d 22 24 73 61 76 65 5f  ).CFLAGS="$save_
0530: 43 46 4c 41 47 53 22 0a 5d 29 0a 63 61 73 65 20  CFLAGS".]).case 
0540: 22 24 63 6c 5f 63 76 5f 63 5f 73 74 72 75 63 74  "$cl_cv_c_struct
0550: 5f 72 65 74 75 72 6e 5f 73 74 61 74 69 63 22 20  _return_static" 
0560: 69 6e 0a 20 20 2a 79 65 73 29 20 41 43 5f 44 45  in.  *yes) AC_DE
0570: 46 49 4e 45 28 5f 5f 50 43 43 5f 53 54 52 55 43  FINE(__PCC_STRUC
0580: 54 5f 52 45 54 55 52 4e 5f 5f 29 20 3b 3b 0a 20  T_RETURN__) ;;. 
0590: 20 2a 6e 6f 29 20 3b 3b 0a 65 73 61 63 0a 5d 29   *no) ;;.esac.])
05a0: 0a                                               .