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.21 by root, Thu Dec 14 10:08:20 2023 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 char *const argv[] = { "foo", "bar", 0 };
84 int res = fexecve (-1, argv, 0);
85 return 0;
86}
87]])],ac_cv_fexecve=yes,ac_cv_fexecve=no)])
88test $ac_cv_fexecve = yes && AC_DEFINE(HAVE_FEXECVE, 1, fexecve(2) is available)
89
90AC_CACHE_CHECK([for siginfo_t], ac_cv_siginfo_t, [AC_LINK_IFELSE([AC_LANG_SOURCE([
91#include <signal.h>
92int main (void)
93{
94 siginfo_t si;
95 si.si_code;
96 si.si_pid;
97 si.si_uid;
98 si.si_value.sival_int;
99 si.si_value.sival_ptr;
100 return 0;
101}
102])],ac_cv_siginfo_t=yes,ac_cv_siginfo_t=no)])
103test $ac_cv_siginfo_t = yes && AC_DEFINE(HAVE_SIGINFO_T, 1, have siginfo_t in signal.h)
104
105AC_CACHE_CHECK([for unix-style syscall interface], ac_cv_syscall, [AC_LINK_IFELSE([AC_LANG_SOURCE([
106#include <unistd.h>
107#include <sys/syscall.h>
108int main (void)
109{
110 long res = syscall (SYS_exit, 0);
111 return 0;
112}
113])],ac_cv_syscall=yes,ac_cv_syscall=no)])
114test $ac_cv_syscall = yes && AC_DEFINE(HAVE_SYSCALL, 1, unix syscall interface)
115
64AC_CACHE_CHECK([for splice, vmsplice and tee], ac_cv_linux_splice, [AC_LINK_IFELSE([AC_LANG_SOURCE([ 116AC_CACHE_CHECK([for splice, vmsplice and tee], ac_cv_linux_splice, [AC_LINK_IFELSE([AC_LANG_SOURCE([
117#include <sys/types.h>
65#include <fcntl.h> 118#include <fcntl.h>
119#include <sys/uio.h>
66int main (void) 120int main (void)
67{ 121{
68 ssize_t res; 122 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); 123 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); 124 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) 129test $ac_cv_linux_splice = yes && AC_DEFINE(HAVE_LINUX_SPLICE, 1, splice/vmsplice/tee(2) are available)
76 130
77AC_CACHE_CHECK(for pipe2, ac_cv_pipe2, [AC_LINK_IFELSE([AC_LANG_SOURCE([[ 131AC_CACHE_CHECK(for pipe2, ac_cv_pipe2, [AC_LINK_IFELSE([AC_LANG_SOURCE([[
78#include <fcntl.h> 132#include <fcntl.h>
79#include <unistd.h> 133#include <unistd.h>
134int main (void)
135{
80int res; 136 int res;
81int main (void)
82{
83 res = pipe2 (0, 0); 137 res = pipe2 (0, 0);
84 return 0; 138 return 0;
85} 139}
86]])],ac_cv_pipe2=yes,ac_cv_pipe2=no)]) 140]])],ac_cv_pipe2=yes,ac_cv_pipe2=no)])
87test $ac_cv_pipe2 = yes && AC_DEFINE(HAVE_PIPE2, 1, pipe2(2) is available) 141test $ac_cv_pipe2 = yes && AC_DEFINE(HAVE_PIPE2, 1, pipe2(2) is available)
88 142
89AC_CACHE_CHECK(for eventfd, ac_cv_eventfd, [AC_LINK_IFELSE([AC_LANG_SOURCE([[ 143AC_CACHE_CHECK(for eventfd, ac_cv_eventfd, [AC_LINK_IFELSE([AC_LANG_SOURCE([[
90#include <sys/eventfd.h> 144#include <sys/eventfd.h>
145int main (void)
146{
91int res; 147 int res;
92int main (void)
93{
94 res = eventfd (1, EFD_CLOEXEC | EFD_NONBLOCK); 148 res = eventfd (1, EFD_CLOEXEC | EFD_NONBLOCK);
95 return 0; 149 return 0;
96} 150}
97]])],ac_cv_eventfd=yes,ac_cv_eventfd=no)]) 151]])],ac_cv_eventfd=yes,ac_cv_eventfd=no)])
98test $ac_cv_eventfd = yes && AC_DEFINE(HAVE_EVENTFD, 1, eventfd(2) is available) 152test $ac_cv_eventfd = yes && AC_DEFINE(HAVE_EVENTFD, 1, eventfd(2) is available)
99 153
100AC_CACHE_CHECK(for timerfd, ac_cv_timerfd, [AC_LINK_IFELSE([AC_LANG_SOURCE([[ 154AC_CACHE_CHECK(for timerfd_*, ac_cv_timerfd, [AC_LINK_IFELSE([AC_LANG_SOURCE([[
101#include <sys/timerfd.h> 155#include <sys/timerfd.h>
102int res;
103int main (void) 156int main (void)
104{ 157{
105 struct itimerspec its; 158 struct itimerspec its;
159 int res;
106 res = timerfd_create (CLOCK_REALTIME, TFD_CLOEXEC | TFD_NONBLOCK); 160 res = timerfd_create (CLOCK_REALTIME, TFD_CLOEXEC | TFD_NONBLOCK);
107 res = timerfd_settime (res, TFD_TIMER_ABSTIME /*| TFD_TIMER_CANCEL_ON_SET*/, &its, 0); 161 res = timerfd_settime (res, TFD_TIMER_ABSTIME /*| TFD_TIMER_CANCEL_ON_SET*/, &its, 0);
108 res = timerfd_gettime (res, &its); 162 res = timerfd_gettime (res, &its);
109 return 0; 163 return 0;
110} 164}
111]])],ac_cv_timerfd=yes,ac_cv_timerfd=no)]) 165]])],ac_cv_timerfd=yes,ac_cv_timerfd=no)])
112test $ac_cv_timerfd = yes && AC_DEFINE(HAVE_TIMERFD, 1, timerfd_*(2) are available) 166test $ac_cv_timerfd = yes && AC_DEFINE(HAVE_TIMERFD, 1, timerfd_*(2) are available)
113 167
168AC_CACHE_CHECK(for memfd_create, ac_cv_memfd_create, [AC_LINK_IFELSE([AC_LANG_SOURCE([[
169#include <sys/mman.h>
170int main (void)
171{
172 int res = memfd_create ("name", MFD_CLOEXEC | MFD_ALLOW_SEALING);
173 return 0;
174}
175]])],ac_cv_memfd_create=yes,ac_cv_memfd_create=no)])
176test $ac_cv_memfd_create = yes && AC_DEFINE(HAVE_MEMFD_CREATE, 1, memfd_create(2) is available)
177
114AC_CACHE_CHECK(for copy_file_range, ac_cv_copy_file_range, [AC_LINK_IFELSE([AC_LANG_SOURCE([[ 178AC_CACHE_CHECK(for copy_file_range, ac_cv_copy_file_range, [AC_LINK_IFELSE([AC_LANG_SOURCE([[
115#include <unistd.h> 179#include <unistd.h>
116#include <sys/syscall.h> 180#include <sys/syscall.h>
117/*#include <linux/copy.h>*/ 181/*#include <linux/copy.h>*/
182int main (void)
183{
118int res; 184 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);*/ 185 /*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); 186 res = syscall (SYS_copy_file_range, 0, 0, 0, 0, 0, 0);
123 return 0; 187 return 0;
124} 188}
125]])],ac_cv_copy_file_range=yes,ac_cv_copy_file_range=no)]) 189]])],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([[ 192AC_CACHE_CHECK(for st_xtimensec, ac_cv_xtimensec, [AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
129#include "EXTERN.h" 193#include "EXTERN.h"
130#include "perl.h" 194#include "perl.h"
131#include "XSUB.h" 195#include "XSUB.h"
132 196
133int res;
134int main (void) 197int main (void)
135{ 198{
136 return PL_statcache.st_atimensec 199 return PL_statcache.st_atimensec
137 + PL_statcache.st_mtimensec 200 + PL_statcache.st_mtimensec
138 + PL_statcache.st_ctimensec; 201 + PL_statcache.st_ctimensec;
139 return 0;
140} 202}
141]])],ac_cv_xtimensec=yes,ac_cv_xtimensec=no)]) 203]])],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) 204test $ac_cv_xtimensec = yes && AC_DEFINE(HAVE_ST_XTIMENSEC, 1, stat nanosecond access by st_xtimensec)
143 205
144AC_CACHE_CHECK(for st_xtimespec, ac_cv_xtimespec, [AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ 206AC_CACHE_CHECK(for st_xtimespec, ac_cv_xtimespec, [AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
145#include "EXTERN.h" 207#include "EXTERN.h"
146#include "perl.h" 208#include "perl.h"
147#include "XSUB.h" 209#include "XSUB.h"
148 210
149int res;
150int main (void) 211int main (void)
151{ 212{
152 return PL_statcache.st_atim.tv_nsec 213 return PL_statcache.st_atim.tv_nsec
153 + PL_statcache.st_mtim.tv_nsec 214 + PL_statcache.st_mtim.tv_nsec
154 + PL_statcache.st_ctim.tv_nsec; 215 + PL_statcache.st_ctim.tv_nsec;
155} 216}
156]])],ac_cv_xtimespec=yes,ac_cv_xtimespec=no)]) 217]])],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) 218test $ac_cv_xtimespec = yes && AC_DEFINE(HAVE_ST_XTIMESPEC, 1, stat nanosecond access by st_xtimespec)
158 219
220# apparently, True64 uses st_u[amc]time, aix uses at_[amc]time_n and apple uses st_[amc,birth]timespec?
221
222AC_CACHE_CHECK(for st_birthtimensec, ac_cv_birthtimensec, [AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
223#include "EXTERN.h"
224#include "perl.h"
225#include "XSUB.h"
226
227int main (void)
228{
229 return PL_statcache.st_birthtime + PL_statcache.st_birthtimensec;
230}
231]])],ac_cv_birthtimensec=yes,ac_cv_birthtimensec=no)])
232test $ac_cv_birthtimensec = yes && AC_DEFINE(HAVE_ST_BIRTHTIMENSEC, 1, birthtime nanosecond access by st_birthtimensec)
233
234AC_CACHE_CHECK(for st_birthtimespec, ac_cv_birthtimespec, [AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
235#include "EXTERN.h"
236#include "perl.h"
237#include "XSUB.h"
238
239int main (void)
240{
241 return PL_statcache.st_birthtim.tv_sec + PL_statcache.st_birthtim.tv_nsec;
242}
243]])],ac_cv_birthtimespec=yes,ac_cv_birthtimespec=no)])
244test $ac_cv_birthtimespec = yes && AC_DEFINE(HAVE_ST_BIRTHTIMESPEC, 1, birthtime nanosecond access by st_birthtimespec)
245
246AC_CACHE_CHECK(for st_gen, ac_cv_st_gen, [AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
247#include "EXTERN.h"
248#include "perl.h"
249#include "XSUB.h"
250
251int main (void)
252{
253 return PL_statcache.st_gen;
254}
255]])],ac_cv_st_gen=yes,ac_cv_st_gen=no)])
256test $ac_cv_st_gen = yes && AC_DEFINE(HAVE_ST_GEN, 1, stat st_gen member)
257
258AC_CACHE_CHECK(for statx, ac_cv_statx, [AC_LINK_IFELSE([AC_LANG_SOURCE([[
259#include <sys/types.h>
260#include <sys/stat.h>
261#include <unistd.h>
262#include <fcntl.h>
263int res;
264int main (void)
265{
266 struct statx sx;
267 int res;
268 res = statx (AT_FDCWD, ".",
269 AT_EMPTY_PATH | AT_NO_AUTOMOUNT | AT_SYMLINK_NOFOLLOW | AT_STATX_SYNC_AS_STAT | AT_STATX_FORCE_SYNC | AT_STATX_DONT_SYNC,
270 STATX_ALL, &sx);
271 STATX_TYPE; STATX_MODE; STATX_NLINK; STATX_UID; STATX_GID; STATX_ATIME; STATX_MTIME; STATX_CTIME;
272 STATX_INO; STATX_SIZE; STATX_BLOCKS; STATX_BASIC_STATS; STATX_BTIME; STATX_ALL;
273 STATX_ATTR_COMPRESSED; STATX_ATTR_IMMUTABLE; STATX_ATTR_APPEND; STATX_ATTR_NODUMP; STATX_ATTR_ENCRYPTED;
274 return 0;
275}
276]])],ac_cv_statx=yes,ac_cv_statx=no)])
277test $ac_cv_statx = yes && AC_DEFINE(HAVE_STATX, 1, statx(2) is available)
278
279AC_CACHE_CHECK(for accept4, ac_cv_accept4, [AC_LINK_IFELSE([AC_LANG_SOURCE([[
280#include <sys/types.h>
281#include <sys/socket.h>
282int main (void)
283{
284 int res = accept4 (1, (struct sockaddr *)0, (socklen_t)0, SOCK_NONBLOCK | SOCK_CLOEXEC);
285 return 0;
286}
287]])],ac_cv_accept4=yes,ac_cv_accept4=no)])
288test $ac_cv_accept4 = yes && AC_DEFINE(HAVE_ACCEPT4, 1, accept4(2) is available)
289
290AC_CHECK_HEADERS([sys/mount.h])
291AC_CACHE_CHECK(for mount, ac_cv_mount, [AC_LINK_IFELSE([AC_LANG_SOURCE([[
292#include <sys/mount.h>
293int main (void)
294{
295 int res = mount ("path", "path", "fstype", MS_RDONLY, 0);
296 return 0;
297}
298]])],ac_cv_mount=yes,ac_cv_mount=no)])
299test $ac_cv_mount = yes && AC_DEFINE(HAVE_MOUNT, 1, mount is available)
300AC_CACHE_CHECK(for umount, ac_cv_umount, [AC_LINK_IFELSE([AC_LANG_SOURCE([[
301#include <sys/mount.h>
302int main (void)
303{
304 int res = umount ("path");
305 return 0;
306}
307]])],ac_cv_umount=yes,ac_cv_umount=no)])
308test $ac_cv_umount = yes && AC_DEFINE(HAVE_UMOUNT, 1, umount is available)
309AC_CACHE_CHECK(for umount2, ac_cv_umount2, [AC_LINK_IFELSE([AC_LANG_SOURCE([[
310#include <sys/mount.h>
311int main (void)
312{
313 int res = umount2 ("path", MNT_FORCE|MNT_DETACH);
314 return 0;
315}
316]])],ac_cv_umount2=yes,ac_cv_umount2=no)])
317test $ac_cv_umount2 = yes && AC_DEFINE(HAVE_UMOUNT2, 1, umount2 is available)
318
159AC_OUTPUT 319AC_OUTPUT
160 320

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines