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 .