ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/IO-AIO/configure.ac
(Generate patch)

Comparing IO-AIO/configure.ac (file contents):
Revision 1.6 by root, Sun Aug 12 05:21:35 2018 UTC vs.
Revision 1.20 by root, Wed Sep 28 08:24:25 2022 UTC

12# for these to work, you need to run autoheader in IO::AIO, not libeio :( 12# for these to work, you need to run autoheader in IO::AIO, not libeio :(
13 13
14AC_CACHE_CHECK(for set/getrlimit, ac_cv_rlimits, [AC_LINK_IFELSE([AC_LANG_SOURCE([[ 14AC_CACHE_CHECK(for set/getrlimit, ac_cv_rlimits, [AC_LINK_IFELSE([AC_LANG_SOURCE([[
15#include <sys/time.h> 15#include <sys/time.h>
16#include <sys/resource.h> 16#include <sys/resource.h>
17int res;
18int main (void) 17int main (void)
19{ 18{
20 struct rlimit srl; 19 struct rlimit srl;
20 int res;
21 srl.rlim_cur = srl.rlim_max = RLIM_INFINITY; 21 srl.rlim_cur = srl.rlim_max = RLIM_INFINITY;
22 res = getrlimit (RLIMIT_NOFILE, &srl); 22 res = getrlimit (RLIMIT_NOFILE, &srl);
23 res = setrlimit (RLIMIT_NOFILE, &srl); 23 res = setrlimit (RLIMIT_NOFILE, &srl);
24 return 0; 24 return 0;
25} 25}
59test $ac_cv_posix_fadvise = yes && AC_DEFINE(HAVE_POSIX_FADVISE, 1, posix_fadvise(2) is available) 59test $ac_cv_posix_fadvise = yes && AC_DEFINE(HAVE_POSIX_FADVISE, 1, posix_fadvise(2) is available)
60 60
61dnl lots of linux specifics 61dnl lots of linux specifics
62AC_CHECK_HEADERS([linux/fs.h linux/fiemap.h]) 62AC_CHECK_HEADERS([linux/fs.h linux/fiemap.h])
63 63
64dnl glibc major/minor macros
65AC_CHECK_HEADERS([sys/sysmacros.h])
66
67dnl solaris major/minor
68AC_CHECK_HEADERS([sys/mkdev.h])
69
70dnl readv / preadv, vmsplice
71AC_CHECK_HEADERS([sys/uio.h])
72
73dnl fexecve has always been in the single unix specification
74dnl but some atrocities (like opsnbsd and osx) claim implementing it
75dnl but then not definining it. ugh. garbage. and fexecve would be
76dnl useful for security, but, no, not on openbsd. we'd rather lie
77dnl about it.
78AC_CACHE_CHECK(for fexecve, ac_cv_fexecve, [AC_LINK_IFELSE([AC_LANG_SOURCE([[
79#include <fcntl.h>
80#include <unistd.h>
81int main (void)
82{
83 int res = fexecve (-1, "argv", 0);
84 return 0;
85}
86]])],ac_cv_fexecve=yes,ac_cv_fexecve=no)])
87test $ac_cv_fexecve = yes && AC_DEFINE(HAVE_FEXECVE, 1, fexecve(2) is available)
88
89AC_CACHE_CHECK([for siginfo_t], ac_cv_siginfo_t, [AC_LINK_IFELSE([AC_LANG_SOURCE([
90#include <signal.h>
91int main (void)
92{
93 siginfo_t si;
94 si.si_code;
95 si.si_pid;
96 si.si_uid;
97 si.si_value.sival_int;
98 si.si_value.sival_ptr;
99 return 0;
100}
101])],ac_cv_siginfo_t=yes,ac_cv_siginfo_t=no)])
102test $ac_cv_siginfo_t = yes && AC_DEFINE(HAVE_SIGINFO_T, 1, have siginfo_t in signal.h)
103
104AC_CACHE_CHECK([for unix-style syscall interface], ac_cv_syscall, [AC_LINK_IFELSE([AC_LANG_SOURCE([
105#include <unistd.h>
106#include <sys/syscall.h>
107int main (void)
108{
109 long res = syscall (SYS_exit, 0);
110 return 0;
111}
112])],ac_cv_syscall=yes,ac_cv_syscall=no)])
113test $ac_cv_syscall = yes && AC_DEFINE(HAVE_SYSCALL, 1, unix syscall interface)
114
64AC_CACHE_CHECK([for splice, vmsplice and tee], ac_cv_linux_splice, [AC_LINK_IFELSE([AC_LANG_SOURCE([ 115AC_CACHE_CHECK([for splice, vmsplice and tee], ac_cv_linux_splice, [AC_LINK_IFELSE([AC_LANG_SOURCE([
116#include <sys/types.h>
65#include <fcntl.h> 117#include <fcntl.h>
118#include <sys/uio.h>
66int main (void) 119int main (void)
67{ 120{
68 ssize_t res; 121 ssize_t res;
69 res = splice ((int)0, (loff_t)0, (int)0, (loff_t *)0, (size_t)0, SPLICE_F_MOVE | SPLICE_F_NONBLOCK | SPLICE_F_MORE); 122 res = splice ((int)0, (loff_t)0, (int)0, (loff_t *)0, (size_t)0, SPLICE_F_MOVE | SPLICE_F_NONBLOCK | SPLICE_F_MORE);
70 res = tee ((int)0, (int)0, (size_t)0, SPLICE_F_NONBLOCK); 123 res = tee ((int)0, (int)0, (size_t)0, SPLICE_F_NONBLOCK);
75test $ac_cv_linux_splice = yes && AC_DEFINE(HAVE_LINUX_SPLICE, 1, splice/vmsplice/tee(2) are available) 128test $ac_cv_linux_splice = yes && AC_DEFINE(HAVE_LINUX_SPLICE, 1, splice/vmsplice/tee(2) are available)
76 129
77AC_CACHE_CHECK(for pipe2, ac_cv_pipe2, [AC_LINK_IFELSE([AC_LANG_SOURCE([[ 130AC_CACHE_CHECK(for pipe2, ac_cv_pipe2, [AC_LINK_IFELSE([AC_LANG_SOURCE([[
78#include <fcntl.h> 131#include <fcntl.h>
79#include <unistd.h> 132#include <unistd.h>
133int main (void)
134{
80int res; 135 int res;
81int main (void)
82{
83 res = pipe2 (0, 0); 136 res = pipe2 (0, 0);
84 return 0; 137 return 0;
85} 138}
86]])],ac_cv_pipe2=yes,ac_cv_pipe2=no)]) 139]])],ac_cv_pipe2=yes,ac_cv_pipe2=no)])
87test $ac_cv_pipe2 = yes && AC_DEFINE(HAVE_PIPE2, 1, pipe2(2) is available) 140test $ac_cv_pipe2 = yes && AC_DEFINE(HAVE_PIPE2, 1, pipe2(2) is available)
88 141
89AC_CACHE_CHECK(for eventfd, ac_cv_eventfd, [AC_LINK_IFELSE([AC_LANG_SOURCE([[ 142AC_CACHE_CHECK(for eventfd, ac_cv_eventfd, [AC_LINK_IFELSE([AC_LANG_SOURCE([[
90#include <sys/eventfd.h> 143#include <sys/eventfd.h>
144int main (void)
145{
91int res; 146 int res;
92int main (void)
93{
94 res = eventfd (1, EFD_CLOEXEC | EFD_NONBLOCK); 147 res = eventfd (1, EFD_CLOEXEC | EFD_NONBLOCK);
95 return 0; 148 return 0;
96} 149}
97]])],ac_cv_eventfd=yes,ac_cv_eventfd=no)]) 150]])],ac_cv_eventfd=yes,ac_cv_eventfd=no)])
98test $ac_cv_eventfd = yes && AC_DEFINE(HAVE_EVENTFD, 1, eventfd(2) is available) 151test $ac_cv_eventfd = yes && AC_DEFINE(HAVE_EVENTFD, 1, eventfd(2) is available)
99 152
100AC_CACHE_CHECK(for timerfd, ac_cv_timerfd, [AC_LINK_IFELSE([AC_LANG_SOURCE([[ 153AC_CACHE_CHECK(for timerfd_*, ac_cv_timerfd, [AC_LINK_IFELSE([AC_LANG_SOURCE([[
101#include <sys/timerfd.h> 154#include <sys/timerfd.h>
102int res;
103int main (void) 155int main (void)
104{ 156{
105 struct itimerspec its; 157 struct itimerspec its;
158 int res;
106 res = timerfd_create (CLOCK_REALTIME, TFD_CLOEXEC | TFD_NONBLOCK); 159 res = timerfd_create (CLOCK_REALTIME, TFD_CLOEXEC | TFD_NONBLOCK);
107 res = timerfd_settime (res, TFD_TIMER_ABSTIME /*| TFD_TIMER_CANCEL_ON_SET*/, &its, 0); 160 res = timerfd_settime (res, TFD_TIMER_ABSTIME /*| TFD_TIMER_CANCEL_ON_SET*/, &its, 0);
108 res = timerfd_gettime (res, &its); 161 res = timerfd_gettime (res, &its);
109 return 0; 162 return 0;
110} 163}
111]])],ac_cv_timerfd=yes,ac_cv_timerfd=no)]) 164]])],ac_cv_timerfd=yes,ac_cv_timerfd=no)])
112test $ac_cv_timerfd = yes && AC_DEFINE(HAVE_TIMERFD, 1, timerfd_*(2) are available) 165test $ac_cv_timerfd = yes && AC_DEFINE(HAVE_TIMERFD, 1, timerfd_*(2) are available)
113 166
167AC_CACHE_CHECK(for memfd_create, ac_cv_memfd_create, [AC_LINK_IFELSE([AC_LANG_SOURCE([[
168#include <sys/mman.h>
169int main (void)
170{
171 int res = memfd_create ("name", MFD_CLOEXEC | MFD_ALLOW_SEALING);
172 return 0;
173}
174]])],ac_cv_memfd_create=yes,ac_cv_memfd_create=no)])
175test $ac_cv_memfd_create = yes && AC_DEFINE(HAVE_MEMFD_CREATE, 1, memfd_create(2) is available)
176
114AC_CACHE_CHECK(for copy_file_range, ac_cv_copy_file_range, [AC_LINK_IFELSE([AC_LANG_SOURCE([[ 177AC_CACHE_CHECK(for copy_file_range, ac_cv_copy_file_range, [AC_LINK_IFELSE([AC_LANG_SOURCE([[
115#include <unistd.h> 178#include <unistd.h>
116#include <sys/syscall.h> 179#include <sys/syscall.h>
117/*#include <linux/copy.h>*/ 180/*#include <linux/copy.h>*/
181int main (void)
182{
118int res; 183 int res;
119int main (void)
120{
121 /*res = syscall (SYS_copy_file_range, 0, 0, 0, 0, 0, COPY_FR_REFLINK | COPY_FR_DEDUP | COPY_FR_COPY);*/ 184 /*res = syscall (SYS_copy_file_range, 0, 0, 0, 0, 0, COPY_FR_REFLINK | COPY_FR_DEDUP | COPY_FR_COPY);*/
122 res = syscall (SYS_copy_file_range, 0, 0, 0, 0, 0, 0); 185 res = syscall (SYS_copy_file_range, 0, 0, 0, 0, 0, 0);
123 return 0; 186 return 0;
124} 187}
125]])],ac_cv_copy_file_range=yes,ac_cv_copy_file_range=no)]) 188]])],ac_cv_copy_file_range=yes,ac_cv_copy_file_range=no)])
128AC_CACHE_CHECK(for st_xtimensec, ac_cv_xtimensec, [AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ 191AC_CACHE_CHECK(for st_xtimensec, ac_cv_xtimensec, [AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
129#include "EXTERN.h" 192#include "EXTERN.h"
130#include "perl.h" 193#include "perl.h"
131#include "XSUB.h" 194#include "XSUB.h"
132 195
133int res;
134int main (void) 196int main (void)
135{ 197{
136 return PL_statcache.st_atimensec 198 return PL_statcache.st_atimensec
137 + PL_statcache.st_mtimensec 199 + PL_statcache.st_mtimensec
138 + PL_statcache.st_ctimensec; 200 + PL_statcache.st_ctimensec;
139 return 0;
140} 201}
141]])],ac_cv_xtimensec=yes,ac_cv_xtimensec=no)]) 202]])],ac_cv_xtimensec=yes,ac_cv_xtimensec=no)])
142test $ac_cv_xtimensec = yes && AC_DEFINE(HAVE_ST_XTIMENSEC, 1, stat nanosecond access by st_xtimensec) 203test $ac_cv_xtimensec = yes && AC_DEFINE(HAVE_ST_XTIMENSEC, 1, stat nanosecond access by st_xtimensec)
143 204
144AC_CACHE_CHECK(for st_xtimespec, ac_cv_xtimespec, [AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ 205AC_CACHE_CHECK(for st_xtimespec, ac_cv_xtimespec, [AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
145#include "EXTERN.h" 206#include "EXTERN.h"
146#include "perl.h" 207#include "perl.h"
147#include "XSUB.h" 208#include "XSUB.h"
148 209
149int res;
150int main (void) 210int main (void)
151{ 211{
152 return PL_statcache.st_atim.tv_nsec 212 return PL_statcache.st_atim.tv_nsec
153 + PL_statcache.st_mtim.tv_nsec 213 + PL_statcache.st_mtim.tv_nsec
154 + PL_statcache.st_ctim.tv_nsec; 214 + PL_statcache.st_ctim.tv_nsec;
155} 215}
156]])],ac_cv_xtimespec=yes,ac_cv_xtimespec=no)]) 216]])],ac_cv_xtimespec=yes,ac_cv_xtimespec=no)])
157test $ac_cv_xtimespec = yes && AC_DEFINE(HAVE_ST_XTIMESPEC, 1, stat nanosecond access by st_xtimespec) 217test $ac_cv_xtimespec = yes && AC_DEFINE(HAVE_ST_XTIMESPEC, 1, stat nanosecond access by st_xtimespec)
158 218
219# apparently, True64 uses st_u[amc]time, aix uses at_[amc]time_n and apple uses st_[amc,birth]timespec?
220
221AC_CACHE_CHECK(for st_birthtimensec, ac_cv_birthtimensec, [AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
222#include "EXTERN.h"
223#include "perl.h"
224#include "XSUB.h"
225
226int main (void)
227{
228 return PL_statcache.st_birthtime + PL_statcache.st_birthtimensec;
229}
230]])],ac_cv_birthtimensec=yes,ac_cv_birthtimensec=no)])
231test $ac_cv_birthtimensec = yes && AC_DEFINE(HAVE_ST_BIRTHTIMENSEC, 1, birthtime nanosecond access by st_birthtimensec)
232
233AC_CACHE_CHECK(for st_birthtimespec, ac_cv_birthtimespec, [AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
234#include "EXTERN.h"
235#include "perl.h"
236#include "XSUB.h"
237
238int main (void)
239{
240 return PL_statcache.st_birthtim.tv_sec + PL_statcache.st_birthtim.tv_nsec;
241}
242]])],ac_cv_birthtimespec=yes,ac_cv_birthtimespec=no)])
243test $ac_cv_birthtimespec = yes && AC_DEFINE(HAVE_ST_BIRTHTIMESPEC, 1, birthtime nanosecond access by st_birthtimespec)
244
245AC_CACHE_CHECK(for st_gen, ac_cv_st_gen, [AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
246#include "EXTERN.h"
247#include "perl.h"
248#include "XSUB.h"
249
250int main (void)
251{
252 return PL_statcache.st_gen;
253}
254]])],ac_cv_st_gen=yes,ac_cv_st_gen=no)])
255test $ac_cv_st_gen = yes && AC_DEFINE(HAVE_ST_GEN, 1, stat st_gen member)
256
257AC_CACHE_CHECK(for statx, ac_cv_statx, [AC_LINK_IFELSE([AC_LANG_SOURCE([[
258#include <sys/types.h>
259#include <sys/stat.h>
260#include <unistd.h>
261#include <fcntl.h>
262int res;
263int main (void)
264{
265 struct statx sx;
266 int res;
267 res = statx (AT_FDCWD, ".",
268 AT_EMPTY_PATH | AT_NO_AUTOMOUNT | AT_SYMLINK_NOFOLLOW | AT_STATX_SYNC_AS_STAT | AT_STATX_FORCE_SYNC | AT_STATX_DONT_SYNC,
269 STATX_ALL, &sx);
270 STATX_TYPE; STATX_MODE; STATX_NLINK; STATX_UID; STATX_GID; STATX_ATIME; STATX_MTIME; STATX_CTIME;
271 STATX_INO; STATX_SIZE; STATX_BLOCKS; STATX_BASIC_STATS; STATX_BTIME; STATX_ALL;
272 STATX_ATTR_COMPRESSED; STATX_ATTR_IMMUTABLE; STATX_ATTR_APPEND; STATX_ATTR_NODUMP; STATX_ATTR_ENCRYPTED;
273 return 0;
274}
275]])],ac_cv_statx=yes,ac_cv_statx=no)])
276test $ac_cv_statx = yes && AC_DEFINE(HAVE_STATX, 1, statx(2) is available)
277
278AC_CACHE_CHECK(for accept4, ac_cv_accept4, [AC_LINK_IFELSE([AC_LANG_SOURCE([[
279#include <sys/types.h>
280#include <sys/socket.h>
281int main (void)
282{
283 int res = accept4 (1, (struct sockaddr *)0, (socklen_t)0, SOCK_NONBLOCK | SOCK_CLOEXEC);
284 return 0;
285}
286]])],ac_cv_accept4=yes,ac_cv_accept4=no)])
287test $ac_cv_accept4 = yes && AC_DEFINE(HAVE_ACCEPT4, 1, accept4(2) is available)
288
289AC_CHECK_HEADERS([sys/mount.h])
290AC_CACHE_CHECK(for mount, ac_cv_mount, [AC_LINK_IFELSE([AC_LANG_SOURCE([[
291#include <sys/mount.h>
292int main (void)
293{
294 int res = mount ("path", "path", "fstype", MS_RDONLY, 0);
295 return 0;
296}
297]])],ac_cv_mount=yes,ac_cv_mount=no)])
298test $ac_cv_mount = yes && AC_DEFINE(HAVE_MOUNT, 1, mount is available)
299AC_CACHE_CHECK(for umount, ac_cv_umount, [AC_LINK_IFELSE([AC_LANG_SOURCE([[
300#include <sys/mount.h>
301int main (void)
302{
303 int res = umount ("path");
304 return 0;
305}
306]])],ac_cv_umount=yes,ac_cv_umount=no)])
307test $ac_cv_umount = yes && AC_DEFINE(HAVE_UMOUNT, 1, umount is available)
308AC_CACHE_CHECK(for umount2, ac_cv_umount2, [AC_LINK_IFELSE([AC_LANG_SOURCE([[
309#include <sys/mount.h>
310int main (void)
311{
312 int res = umount2 ("path", MNT_FORCE|MNT_DETACH);
313 return 0;
314}
315]])],ac_cv_umount2=yes,ac_cv_umount2=no)])
316test $ac_cv_umount2 = yes && AC_DEFINE(HAVE_UMOUNT2, 1, umount2 is available)
317
159AC_OUTPUT 318AC_OUTPUT
160 319

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines