aclocal.m4
上传用户:xiejiait
上传日期:2007-01-06
资源大小:881k
文件大小:19k
源码类别:

SCSI/ASPI

开发平台:

MultiPlatform

  1. dnl @(#)aclocal.m4 1.2 00/01/10 Copyright 1998 J. Schilling
  2. dnl Set VARIABLE to VALUE in C-string form, verbatim, or 1.
  3. dnl AC_DEFINE_STRING(VARIABLE [, VALUE])
  4. define(AC_DEFINE_STRING,
  5. [cat >> confdefs.h <<EOF
  6. [#define] $1 ifelse($#, 2, "[$2]", $#, 3, "[$2]", 1)
  7. EOF
  8. ])
  9. dnl Similar, but perform shell substitutions $ `  once on VALUE.
  10. define(AC_DEFINE_UNQUOTED_STRING,
  11. [cat >> confdefs.h <<EOF
  12. [#define] $1 ifelse($#, 2, "[$2]", $#, 3, "[$2]", 1)
  13. EOF
  14. ])
  15. dnl Checks if structure 'stat' have field 'st_spare1'.
  16. dnl Defines HAVE_ST_SPARE1 on success.
  17. AC_DEFUN(AC_STRUCT_ST_SPARE1,
  18. [AC_CACHE_CHECK([if struct stat contains st_spare1], ac_cv_struct_st_spare1,
  19.                 [AC_TRY_COMPILE([#include <sys/types.h>
  20. #include <sys/stat.h>],
  21.                                 [struct  stat s; s.st_spare1 = 0;],
  22.                                 [ac_cv_struct_st_spare1=yes],
  23.                                 [ac_cv_struct_st_spare1=no])])
  24. if test $ac_cv_struct_st_spare1 = yes; then
  25.   AC_DEFINE(HAVE_ST_SPARE1)
  26. fi])
  27. dnl Checks if structure 'stat' have field 'st_atim.tv_nsec'.
  28. dnl Defines HAVE_ST_NSEC on success.
  29. AC_DEFUN(AC_STRUCT_ST_NSEC,
  30. [AC_CACHE_CHECK([if struct stat contains st_atim.tv_nsec], ac_cv_struct_st_nsec,
  31.                 [AC_TRY_COMPILE([#include <sys/types.h>
  32. #include <sys/stat.h>],
  33.                                 [struct  stat s; s.st_atim.tv_nsec = 0;],
  34.                                 [ac_cv_struct_st_nsec=yes],
  35.                                 [ac_cv_struct_st_nsec=no])])
  36. if test $ac_cv_struct_st_nsec = yes; then
  37.   AC_DEFINE(HAVE_ST_NSEC)
  38. fi])
  39. dnl Checks if structure 'mtget' have field 'mt_dsreg'.
  40. dnl Defines HAVE_MTGET_DSREG on success.
  41. AC_DEFUN(AC_STRUCT_MTGET_DSREG,
  42. [AC_CACHE_CHECK([if struct mtget contains mt_dsreg], ac_cv_struct_mtget_dsreg,
  43.                 [AC_TRY_COMPILE([#include <sys/types.h>
  44. #include <sys/mtio.h>],
  45.                                 [struct  mtget t; t.mt_dsreg = 0;],
  46.                                 [ac_cv_struct_mtget_dsreg=yes],
  47.                                 [ac_cv_struct_mtget_dsreg=no])])
  48. if test $ac_cv_struct_mtget_dsreg = yes; then
  49.   AC_DEFINE(HAVE_MTGET_DSREG)
  50. fi])
  51. dnl Checks if structure 'mtget' have field 'mt_resid'.
  52. dnl Defines HAVE_MTGET_RESID on success.
  53. AC_DEFUN(AC_STRUCT_MTGET_RESID,
  54. [AC_CACHE_CHECK([if struct mtget contains mt_resid], ac_cv_struct_mtget_resid,
  55.                 [AC_TRY_COMPILE([#include <sys/types.h>
  56. #include <sys/mtio.h>],
  57.                                 [struct  mtget t; t.mt_resid = 0;],
  58.                                 [ac_cv_struct_mtget_resid=yes],
  59.                                 [ac_cv_struct_mtget_resid=no])])
  60. if test $ac_cv_struct_mtget_resid = yes; then
  61.   AC_DEFINE(HAVE_MTGET_RESID)
  62. fi])
  63. dnl Checks if structure 'mtget' have field 'mt_fileno'.
  64. dnl Defines HAVE_MTGET_FILENO on success.
  65. AC_DEFUN(AC_STRUCT_MTGET_FILENO,
  66. [AC_CACHE_CHECK([if struct mtget contains mt_fileno],
  67.                 ac_cv_struct_mtget_fileno,
  68.                 [AC_TRY_COMPILE([#include <sys/types.h>
  69. #include <sys/mtio.h>],
  70.                 [struct  mtget t; t.mt_fileno = 0;],
  71.                  [ac_cv_struct_mtget_fileno=yes],
  72.                  [ac_cv_struct_mtget_fileno=no])])
  73. if test $ac_cv_struct_mtget_fileno = yes; then
  74.   AC_DEFINE(HAVE_MTGET_FILENO)
  75. fi])
  76. dnl Checks if structure 'mtget' have field 'mt_blkno'.
  77. dnl Defines HAVE_MTGET_BLKNO on success.
  78. AC_DEFUN(AC_STRUCT_MTGET_BLKNO,
  79. [AC_CACHE_CHECK([if struct mtget contains mt_blkno], ac_cv_struct_mtget_blkno,
  80.                 [AC_TRY_COMPILE([#include <sys/types.h>
  81. #include <sys/mtio.h>],
  82.                                 [struct  mtget t; t.mt_blkno = 0;],
  83.                                 [ac_cv_struct_mtget_blkno=yes],
  84.                                 [ac_cv_struct_mtget_blkno=no])])
  85. if test $ac_cv_struct_mtget_blkno = yes; then
  86.   AC_DEFINE(HAVE_MTGET_BLKNO)
  87. fi])
  88. dnl Checks for illegal declaration of 'union semun' in sys/sem.h.
  89. dnl Defines HAVE_UNION_SEMUN on success.
  90. AC_DEFUN(AC_STRUCT_UNION_SEMUN,
  91. [AC_CACHE_CHECK([if an illegal declaration for union semun in sys/sem.h exists], ac_cv_struct_union_semun,
  92.                 [AC_TRY_COMPILE([#include <sys/types.h>
  93. #include <sys/ipc.h>
  94. #include <sys/sem.h>], [union semun s;],
  95.                 [ac_cv_struct_union_semun=yes],
  96.                 [ac_cv_struct_union_semun=no])])
  97. if test $ac_cv_struct_union_semun = yes; then
  98.   AC_DEFINE(HAVE_UNION_SEMUN)
  99. fi])
  100. dnl Checks if 'union wait' is declared in 'wait.h' or 'sys/wait.h'.
  101. dnl Defines HAVE_UNION_WAIT on success.
  102. AC_DEFUN(AC_STRUCT_UNION_WAIT,
  103. [AC_CACHE_CHECK([if union wait is declared in wait.h or sys/wait.h], ac_cv_struct_union_wait,
  104.                 [AC_TRY_COMPILE([#include <sys/types.h>
  105. #if defined(HAVE_WAIT_H)
  106. # include <wait.h>
  107. #else
  108. #include <sys/wait.h>
  109. #endif], [union wait w;],
  110.                 [ac_cv_struct_union_wait=yes],
  111.                 [ac_cv_struct_union_wait=no])])
  112. if test $ac_cv_struct_union_wait = yes; then
  113.   AC_DEFINE(HAVE_UNION_WAIT)
  114. fi])
  115. dnl Checks if 'struct rusage' is declared in sys/resource.h.
  116. dnl Defines HAVE_STRUCT_RUSAGE on success.
  117. AC_DEFUN(AC_STRUCT_RUSAGE,
  118. [AC_CACHE_CHECK([if struct rusage is declared in sys/resource.h], ac_cv_struct_rusage,
  119.                 [AC_TRY_COMPILE([#include <sys/time.h>
  120. #include <sys/resource.h>], [struct rusage r;],
  121.                 [ac_cv_struct_rusage=yes],
  122.                 [ac_cv_struct_rusage=no])])
  123. if test $ac_cv_struct_rusage = yes; then
  124.   AC_DEFINE(HAVE_STRUCT_RUSAGE)
  125. fi])
  126. dnl Checks wether major(), minor() and makedev() are defined in
  127. dnl 'sys/mkdev.h' or in 'sys/sysmacros.h. Defines MAJOR_IN_MKDEV or
  128. dnl MAJOR_IN_SYSMACROS or nothing.
  129. AC_DEFUN(AC_HEADER_MAKEDEV,
  130. [AC_CACHE_CHECK([for header file containing  major(), minor() and makedev()],
  131.                ac_cv_header_makedev,
  132. [ac_cv_header_makedev=none
  133. AC_TRY_COMPILE([#include <sys/types.h>
  134. #include <sys/mkdev.h>],
  135.                [int i = major(0); i = minor(0); i = makedev(0,0);],
  136.                 [ac_cv_header_makedev=sys/mkdev.h])
  137. if test $ac_cv_header_makedev = none; then
  138.   AC_TRY_COMPILE([#include <sys/types.h>
  139. #include <sys/sysmacros.h>],
  140.                  [int i = major(0); i = minor(0); i = makedev(0,0);],
  141.                  [ac_cv_header_makedev=sys/sysmacros.h])
  142. fi])
  143. if test $ac_cv_header_makedev = sys/mkdev.h; then
  144.   AC_DEFINE(MAJOR_IN_MKDEV)
  145. fi
  146. if test $ac_cv_header_makedev = sys/sysmacros.h; then
  147.   AC_DEFINE(MAJOR_IN_SYSMACROS)
  148. fi])
  149. dnl Checks for USG derived STDIO
  150. dnl Defines HAVE_USG_STDIO on success.
  151. AC_DEFUN(AC_HEADER_USG_STDIO,
  152. [AC_CACHE_CHECK([for USG derived STDIO], ac_cv_header_usg_stdio,
  153.                 [AC_TRY_LINK([#include <stdio.h>],
  154. [FILE    *f;
  155. int     flag;
  156. int     count;
  157. char    *ptr;
  158. f = fopen("confdefs.h", "r");
  159. _filbuf(f); /* HP-UX-11.x has __filbuf() */
  160. flag  = f->_flag & _IONBF;
  161. flag |= f->_flag & _IOERR;
  162. flag |= f->_flag & _IOEOF;
  163. count = f->_cnt;
  164. ptr = (char *)f->_ptr;
  165. fclose(f);],
  166.                 [ac_cv_header_usg_stdio=yes],
  167.                 [ac_cv_header_usg_stdio=no])])
  168. if test $ac_cv_header_usg_stdio = yes; then
  169.   AC_DEFINE(HAVE_USG_STDIO)
  170. fi])
  171. dnl Checks for errno definition in <errno.h>
  172. dnl Defines HAVE_ERRNO_DEF on success.
  173. AC_DEFUN(AC_HEADER_ERRNO_DEF,
  174. [AC_CACHE_CHECK([for errno definition in errno.h], ac_cv_header_errno_def,
  175.                 [AC_TRY_COMPILE([#include <errno.h>],
  176. [errno = 0;],
  177.                 [ac_cv_header_errno_def=yes],
  178.                 [ac_cv_header_errno_def=no])])
  179. if test $ac_cv_header_errno_def = yes; then
  180.   AC_DEFINE(HAVE_ERRNO_DEF)
  181. fi])
  182. dnl Checks for UNIX-98 compliant <inttypes.h>
  183. dnl Defines HAVE_INTTYPES_H on success.
  184. AC_DEFUN(AC_HEADER_INTTYPES,
  185. [AC_CACHE_CHECK([for UNIX-98 compliant inttypes.h], ac_cv_header_inttypes,
  186.                 [AC_TRY_COMPILE([#include <inttypes.h>],
  187. [int8_t c; uint8_t uc; int16_t s; uint16_t us; int32_t i; uint32_t ui;
  188. int64_t ll; uint64_t ull;
  189. intptr_t ip; uintptr_t uip;],
  190.                 [ac_cv_header_inttypes=yes],
  191.                 [ac_cv_header_inttypes=no])])
  192. if test $ac_cv_header_inttypes = yes; then
  193.   AC_DEFINE(HAVE_INTTYPES_H)
  194. fi])
  195. dnl Checks for type long long
  196. dnl Defines HAVE_LONGLONG on success.
  197. AC_DEFUN(AC_TYPE_LONGLONG,
  198. [AC_CACHE_CHECK([for type long long], ac_cv_type_longlong,
  199.                 [AC_TRY_COMPILE([], [long long i;],
  200.                 [ac_cv_type_longlong=yes],
  201.                 [ac_cv_type_longlong=no])])
  202. if test $ac_cv_type_longlong = yes; then
  203.   AC_DEFINE(HAVE_LONGLONG)
  204. fi])
  205. dnl Checks if C-compiler orders bitfields htol
  206. dnl Defines BITFIELDS_HTOL on success.
  207. AC_DEFUN(AC_C_BITFIELDS,
  208. [AC_CACHE_CHECK([whether bitorder in bitfields is htol], ac_cv_c_bitfields_htol,
  209.                 [AC_TRY_RUN([
  210. struct {
  211. unsigned char x1:4;
  212. unsigned char x2:4;
  213. } a;
  214. main()
  215. {
  216. char *cp;
  217. cp = (char *)&a;
  218. *cp = 0x12;
  219. exit(a.x1 == 2);}],
  220.                 [ac_cv_c_bitfields_htol=yes],
  221.                 [ac_cv_c_bitfields_htol=no])])
  222. if test $ac_cv_c_bitfields_htol = yes; then
  223.   AC_DEFINE(BITFIELDS_HTOL)
  224. fi])
  225. dnl Checks if C-compiler understands prototypes
  226. dnl Defines PROTOTYPES on success.
  227. AC_DEFUN(AC_TYPE_PROTOTYPES,
  228. [AC_CACHE_CHECK([for prototypes], ac_cv_type_prototypes,
  229.                 [AC_TRY_RUN([
  230. doit(int i, ...)
  231. {return 0;}
  232. main(int ac, char *av[])
  233. { doit(1, 2, 3);
  234. exit(0);}],
  235.                 [ac_cv_type_prototypes=yes],
  236.                 [ac_cv_type_prototypes=no])])
  237. if test $ac_cv_type_prototypes = yes; then
  238.   AC_DEFINE(PROTOTYPES)
  239. fi])
  240. dnl Checks for type size_t
  241. dnl Defines HAVE_SIZE_T_ on success.
  242. AC_DEFUN(AC_TYPE_SIZE_T_,
  243. [AC_CACHE_CHECK([for type size_t], ac_cv_type_size_t_,
  244.                 [AC_TRY_COMPILE([#include <sys/types.h>], [size_t s;],
  245.                 [ac_cv_type_size_t_=yes],
  246.                 [ac_cv_type_size_t_=no])])
  247. if test $ac_cv_type_size_t_ = yes; then
  248.   AC_DEFINE(HAVE_SIZE_T)
  249. else
  250.   AC_DEFINE(NO_SIZE_T)
  251. fi])
  252. dnl Checks if type char is unsigned
  253. dnl Defines CHAR_IS_UNSIGNED on success.
  254. AC_DEFUN(AC_TYPE_CHAR,
  255. [AC_CACHE_CHECK([if char is unsigned], ac_cv_type_char_unsigned,
  256.                 [AC_TRY_RUN([
  257. main()
  258. {
  259. char c;
  260. c = -1;
  261. exit(c < 0);}],
  262. [ac_cv_type_char_unsigned=yes],
  263. [ac_cv_type_char_unsigned=no],
  264. [ac_cv_type_char_unsigned=no])]) 
  265. if test $ac_cv_type_char_unsigned = yes; then
  266.   AC_DEFINE(CHAR_IS_UNSIGNED)
  267. fi])
  268. dnl Checks if function/macro va_copy() is available
  269. dnl Defines HAVE_VA_COPY on success.
  270. AC_DEFUN(AC_FUNC_VA_COPY,
  271. [AC_CACHE_CHECK([for va_copy], ac_cv_func_va_copy,
  272.                 [AC_TRY_LINK([
  273. #ifdef HAVE_STDARG_H
  274. # include <stdarg.h>
  275. #else
  276. # include <varargs.h>
  277. #endif], 
  278. [
  279. va_list a, b;
  280. va_copy(a, b);],
  281.                 [ac_cv_func_va_copy=yes],
  282.                 [ac_cv_func_va_copy=no])])
  283. if test $ac_cv_func_va_copy = yes; then
  284.   AC_DEFINE(HAVE_VA_COPY)
  285. fi])
  286. dnl Checks if function/macro __va_copy() is available
  287. dnl Defines HAVE__VA_COPY on success.
  288. AC_DEFUN(AC_FUNC__VA_COPY,
  289. [AC_CACHE_CHECK([for __va_copy], ac_cv_func__va_copy,
  290.                 [AC_TRY_LINK([
  291. #ifdef HAVE_STDARG_H
  292. # include <stdarg.h>
  293. #else
  294. # include <varargs.h>
  295. #endif], 
  296. [
  297. va_list a, b;
  298. __va_copy(a, b);],
  299.                 [ac_cv_func__va_copy=yes],
  300.                 [ac_cv_func__va_copy=no])])
  301. if test $ac_cv_func__va_copy = yes; then
  302.   AC_DEFINE(HAVE__VA_COPY)
  303. fi])
  304. dnl Checks if va_list is an array
  305. dnl Defines VA_LIST_IS_ARRAY on success.
  306. AC_DEFUN(AC_TYPE_VA_LIST,
  307. [AC_CACHE_CHECK([if va_list is an array], ac_cv_type_va_list_array,
  308.                 [AC_TRY_LINK([
  309. #ifdef HAVE_STDARG_H
  310. # include <stdarg.h>
  311. #else
  312. # include <varargs.h>
  313. #endif
  314. ],
  315. [
  316. va_list a, b;
  317. a = b;],
  318. [ac_cv_type_va_list_array=no],
  319. [ac_cv_type_va_list_array=yes])]) 
  320. if test $ac_cv_type_va_list_array = yes; then
  321.   AC_DEFINE(VA_LIST_IS_ARRAY)
  322. fi])
  323. dnl Checks if quotactl is present as ioctl
  324. dnl Defines HAVE_QUOTAIOCTL on success.
  325. AC_DEFUN(AC_FUNC_QUOTAIOCTL,
  326. [AC_CACHE_CHECK([if quotactl is an ioctl], ac_cv_func_quotaioctl,
  327.                 [AC_TRY_LINK([#include <sys/types.h>
  328. #include <sys/fs/ufs_quota.h>],
  329. [struct quotctl q; ioctl(0, Q_QUOTACTL, &q)],
  330. [ac_cv_func_quotaioctl=yes],
  331. [ac_cv_func_quotaioctl=no])]) 
  332. if test $ac_cv_func_quotaioctl = yes; then
  333.   AC_DEFINE(HAVE_QUOTAIOCTL)
  334. fi])
  335. dnl Checks if function __dtoa() is available
  336. dnl Defines HAVE_DTOA on success.
  337. AC_DEFUN(AC_FUNC_DTOA,
  338. [AC_CACHE_CHECK([for __dtoa], ac_cv_func_dtoa,
  339.                 [AC_TRY_LINK([extern  char *__dtoa();], 
  340. [int decpt; int sign; char *ep; char *bp;
  341. bp = __dtoa(0.0, 2, 6, &decpt, &sign, &ep);],
  342.                 [ac_cv_func_dtoa=yes],
  343.                 [ac_cv_func_dtoa=no])])
  344. if test $ac_cv_func_dtoa = yes; then
  345.   AC_DEFINE(HAVE_DTOA)
  346. fi])
  347. dnl Checks if working ecvt() exists
  348. dnl Defines HAVE_ECVT on success.
  349. AC_DEFUN(AC_FUNC_ECVT,
  350. [AC_CACHE_CHECK([for working ecvt() ], ac_cv_func_ecvt,
  351.                 [AC_TRY_RUN([
  352. sprintf(s)
  353. char *s;
  354. {
  355. strcpy(s, "DEAD");
  356. }
  357. main()
  358. {
  359. int a, b;
  360. /* exit (strcmp("DEAD", ecvt(1.9, 2, &a, &b)) == 0);*/
  361. exit (strcmp("19", ecvt(1.9, 2, &a, &b)) != 0);
  362. }],
  363.                 [ac_cv_func_ecvt=yes],
  364.                 [ac_cv_func_ecvt=no])])
  365. if test $ac_cv_func_ecvt = yes; then
  366.   AC_DEFINE(HAVE_ECVT)
  367. fi])
  368. dnl Checks if working fcvt() exists
  369. dnl Defines HAVE_FCVT on success.
  370. AC_DEFUN(AC_FUNC_FCVT,
  371. [AC_CACHE_CHECK([for working fcvt() ], ac_cv_func_fcvt,
  372.                 [AC_TRY_RUN([
  373. sprintf(s)
  374. char *s;
  375. {
  376. strcpy(s, "DEAD");
  377. }
  378. main()
  379. {
  380. int a, b;
  381. /* exit (strcmp("DEAD", fcvt(1.9, 2, &a, &b)) == 0);*/
  382. exit (strcmp("190", fcvt(1.9, 2, &a, &b)) != 0);
  383. }],
  384.                 [ac_cv_func_fcvt=yes],
  385.                 [ac_cv_func_fcvt=no])])
  386. if test $ac_cv_func_fcvt = yes; then
  387.   AC_DEFINE(HAVE_FCVT)
  388. fi])
  389. dnl Checks if working gcvt() exists
  390. dnl Defines HAVE_GCVT on success.
  391. AC_DEFUN(AC_FUNC_GCVT,
  392. [AC_CACHE_CHECK([for working gcvt() ], ac_cv_func_gcvt,
  393.                 [AC_TRY_RUN([
  394. sprintf(s)
  395. char *s;
  396. {
  397. strcpy(s, "DEAD");
  398. }
  399. main()
  400. {
  401. char buf[32];
  402. /* exit (strcmp("DEAD", gcvt(1.9, 10, buf)) == 0);*/
  403. exit (strcmp("1.9", gcvt(1.9, 10, buf)) != 0);
  404. }],
  405.                 [ac_cv_func_gcvt=yes],
  406.                 [ac_cv_func_gcvt=no])])
  407. if test $ac_cv_func_gcvt = yes; then
  408.   AC_DEFINE(HAVE_GCVT)
  409. fi])
  410. dnl Checks if function uname() is available
  411. dnl Defines HAVE_UNAME on success.
  412. AC_DEFUN(AC_FUNC_UNAME,
  413. [AC_CACHE_CHECK([for uname], ac_cv_func_uname,
  414.                 [AC_TRY_LINK([#include <sys/utsname.h>], 
  415. [struct utsname un;
  416. uname(&un);],
  417.                 [ac_cv_func_uname=yes],
  418.                 [ac_cv_func_uname=no])])
  419. if test $ac_cv_func_uname = yes; then
  420.   AC_DEFINE(HAVE_UNAME)
  421. fi])
  422. dnl Checks if function mlockall() is available
  423. dnl beware HP-UX 10.x it contains a bad mlockall() in libc
  424. dnl Defines HAVE_MLOCKALL on success.
  425. AC_DEFUN(AC_FUNC_MLOCKALL,
  426. [AC_CACHE_CHECK([for mlockall], ac_cv_func_mlockall,
  427.                 [AC_TRY_RUN([
  428. #include <sys/types.h>
  429. #include <sys/mman.h>
  430. #include <errno.h>
  431. main()
  432. {
  433. if (mlockall(MCL_CURRENT|MCL_FUTURE) < 0) {
  434. if (errno == EPERM || errno ==  EACCES)
  435. exit(0);
  436. exit(-1);
  437. }
  438. exit(0);
  439. }
  440. ],
  441.                 [ac_cv_func_mlockall=yes],
  442.                 [ac_cv_func_mlockall=no])])
  443. if test $ac_cv_func_mlockall = yes; then
  444.   AC_DEFINE(HAVE_MLOCKALL)
  445. fi])
  446. dnl Checks if mmap() works to get shared memory
  447. dnl Defines HAVE_SMMAP on success.
  448. AC_DEFUN(AC_FUNC_SMMAP,
  449. [AC_CACHE_CHECK([if mmap works to get shared memory], ac_cv_func_smmap,
  450.                 [AC_TRY_RUN([
  451. #include <sys/types.h>
  452. #include <sys/mman.h>
  453. char *
  454. mkshare()
  455. {
  456.         int     size = 8192;
  457.         int     f;
  458.         char    *addr;
  459. #ifdef  MAP_ANONYMOUS   /* HP/UX */
  460.         f = -1;
  461.         addr = mmap(0, size, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, f, 0);
  462. #else
  463.         if ((f = open("/dev/zero", 2)) < 0)
  464.                 exit(1);
  465.         addr = mmap(0, size, PROT_READ|PROT_WRITE, MAP_SHARED, f, 0);
  466. #endif
  467.         if (addr == (char *)-1)
  468.                 exit(1);
  469.         close(f);
  470.         return (addr);
  471. }
  472. main()
  473. {
  474.         char    *addr;
  475.         
  476.         addr = mkshare(8192);
  477.         *addr = 'I';
  478.         switch (fork()) {
  479.         case -1:
  480.                 printf("helpn"); exit(1);
  481.         case 0: /* child */
  482.                 *addr = 'N';
  483.                 _exit(0);
  484.                 break;
  485.         default: /* parent */
  486.                 wait(0);
  487.                 sleep(1);
  488.                 break;
  489.         }
  490.         if (*addr != 'N')
  491.                 exit(1);
  492.         exit(0);
  493. }
  494. ], 
  495.                 [ac_cv_func_smmap=yes],
  496.                 [ac_cv_func_smmap=no],
  497.                 [ac_cv_func_smmap=no])])
  498. if test $ac_cv_func_smmap = yes; then
  499.   AC_DEFINE(HAVE_SMMAP)
  500. fi])
  501. dnl Checks if sys_siglist[] exists
  502. dnl Defines HAVE_SYS_SIGLIST on success.
  503. AC_DEFUN(AC_FUNC_SYS_SIGLIST,
  504. [AC_CACHE_CHECK([for sys_siglist], ac_cv_func_sys_siglist,
  505.                 [AC_TRY_RUN([
  506. main()
  507. { extern char *sys_siglist[];
  508. if (sys_siglist[1] == 0)
  509. exit(1);
  510. exit(0);}],
  511.                 [ac_cv_func_sys_siglist=yes],
  512.                 [ac_cv_func_sys_siglist=no])])
  513. if test $ac_cv_func_sys_siglist = yes; then
  514.   AC_DEFINE(HAVE_SYS_SIGLIST)
  515. fi])
  516. dnl Checks for maximum number of bits in minor device number
  517. AC_DEFUN(AC_CHECK_MINOR_BITS,
  518. [AC_REQUIRE([AC_HEADER_MAKEDEV])dnl
  519. changequote(<<, >>)dnl
  520. define(<<AC_MACRO_NAME>>, DEV_MINOR_BITS)dnl
  521. dnl The cache variable name.
  522. define(<<AC_CV_NAME>>, ac_cv_dev_minor_bits)dnl
  523. changequote([, ])dnl
  524. AC_MSG_CHECKING(bits in minor device number)
  525. AC_CACHE_VAL(AC_CV_NAME,
  526. [AC_TRY_RUN([#include <stdio.h>
  527. #include <sys/types.h>
  528. #ifdef major
  529. # define _FOUND_MAJOR_
  530. #endif
  531. #ifdef MAJOR_IN_MKDEV
  532. # include <sys/mkdev.h>
  533. # define _FOUND_MAJOR_
  534. #endif
  535. #ifndef _FOUND_MAJOR_
  536. # ifdef MAJOR_IN_SYSMACROS
  537. # include <sys/sysmacros.h>
  538. # define _FOUND_MAJOR_
  539. # endif
  540. #endif
  541. #ifndef _FOUND_MAJOR_
  542. # if defined(hpux) || defined(__hpux__) || defined(__hpux)
  543. # include <sys/mknod.h>
  544. # define _FOUND_MAJOR_
  545. # endif
  546. #endif
  547. #ifndef _FOUND_MAJOR_
  548. # define major(dev) (((dev) >> 8) & 0xFF)
  549. # define minor(dev) ((dev) & 0xFF)
  550. # define makedev(majo, mino) (((majo) << 8) | (mino))
  551. #endif
  552. main()
  553. {
  554. long l = 1;
  555. int i;
  556. int m;
  557. int c = 0;
  558. FILE *f=fopen("conftestval", "w");
  559. if (!f) exit(1);
  560. for (i=1, m=0; i <= 32; i++, l<<=1) {
  561. if (minor(l) == 0 && c == 0)
  562. c = m;
  563. if (minor(l) != 0)
  564. m = i;
  565. }
  566. fprintf(f, "%dn", m);
  567. exit(0);
  568. }], AC_CV_NAME=`cat conftestval`, AC_CV_NAME=0, ifelse([$2], , , AC_CV_NAME=$2))])dnl
  569. AC_MSG_RESULT($AC_CV_NAME)
  570. AC_DEFINE_UNQUOTED(AC_MACRO_NAME, $AC_CV_NAME)
  571. undefine([AC_MACRO_NAME])dnl
  572. undefine([AC_CV_NAME])dnl
  573. ])
  574. dnl Checks for maximum number of bits in minor device numbers are non contiguous
  575. dnl Defines DEV_MINOR_NONCONTIG on success.
  576. AC_DEFUN(AC_CHECK_MINOR_NONCONTIG,
  577. [AC_REQUIRE([AC_HEADER_MAKEDEV])dnl
  578. AC_CACHE_CHECK([whether bits in minor device numbers are non contiguous], ac_cv_dev_minor_noncontig,
  579.                 [AC_TRY_RUN([
  580. #include <sys/types.h>
  581. #ifdef major
  582. # define _FOUND_MAJOR_
  583. #endif
  584. #ifdef MAJOR_IN_MKDEV
  585. # include <sys/mkdev.h>
  586. # define _FOUND_MAJOR_
  587. #endif
  588. #ifndef _FOUND_MAJOR_
  589. # ifdef MAJOR_IN_SYSMACROS
  590. # include <sys/sysmacros.h>
  591. # define _FOUND_MAJOR_
  592. # endif
  593. #endif
  594. #ifndef _FOUND_MAJOR_
  595. # if defined(hpux) || defined(__hpux__) || defined(__hpux)
  596. # include <sys/mknod.h>
  597. # define _FOUND_MAJOR_
  598. # endif
  599. #endif
  600. #ifndef _FOUND_MAJOR_
  601. # define major(dev) (((dev) >> 8) & 0xFF)
  602. # define minor(dev) ((dev) & 0xFF)
  603. # define makedev(majo, mino) (((majo) << 8) | (mino))
  604. #endif
  605. main()
  606. {
  607. long l = 1;
  608. int i;
  609. int m;
  610. int c = 0;
  611. for (i=1, m=0; i <= 32; i++, l<<=1) {
  612. if (minor(l) == 0 && c == 0)
  613. c = m;
  614. if (minor(l) != 0)
  615. m = i;
  616. }
  617. exit (m == c);}],
  618.                 [ac_cv_dev_minor_noncontig=yes],
  619.                 [ac_cv_dev_minor_noncontig=no])])
  620. if test $ac_cv_dev_minor_noncontig = yes; then
  621.   AC_DEFINE(DEV_MINOR_NONCONTIG)
  622. fi])