assert(long_max > 100000)
conf.set_quoted('LONG_MAX_STR', '@0@'.format(long_max))
-decl_headers = '''
-#include <dirent.h>
-#include <sched.h>
-#include <sys/mount.h>
-'''
-
-foreach decl : [
- 'struct mount_attr',
- 'struct dirent64',
- 'struct sched_attr',
- ]
-
+foreach ident : [
+ ['struct dirent64', '''##include <dirent.h>'''], # for musl, but only for compile time check, see dirent-util.h
+ ['struct mount_attr', '''#include <sys/mount.h>'''], # since glibc-2.36
+ ['struct sched_attr', '''#include <sched.h>'''], # since glibc-2.41
+]
# We get -1 if the size cannot be determined
- have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
+ have = cc.sizeof(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE') > 0
- if decl == 'struct mount_attr'
+ if ident[0] == 'struct mount_attr'
if have
want_linux_fs_h = false
else
- have = cc.sizeof(decl,
- prefix : decl_headers + '#include <linux/fs.h>',
+ have = cc.sizeof(ident[0],
+ prefix : ident[1] + '\n#include <linux/fs.h>',
args : '-D_GNU_SOURCE') > 0
want_linux_fs_h = have
endif
endif
- conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
+ conf.set10('HAVE_' + ident[0].underscorify().to_upper(), have)
endforeach
conf.set10('WANT_LINUX_FS_H', want_linux_fs_h)
foreach ident : [
- ['fchmodat2', '''#include <stdlib.h>
- #include <fcntl.h>'''], # no known header declares fchmodat2
- ['pivot_root', '''#include <stdlib.h>
- #include <unistd.h>'''], # no known header declares pivot_root
- ['ioprio_get', '''#include <sched.h>'''], # no known header declares ioprio_get
- ['ioprio_set', '''#include <sched.h>'''], # no known header declares ioprio_set
- ['sched_setattr', '''#include <sched.h>'''],
- ['kcmp', '''#include <linux/kcmp.h>'''],
- ['keyctl', '''#include <sys/types.h>
- #include <keyutils.h>'''],
- ['bpf', '''#include <sys/syscall.h>
- #include <unistd.h>'''],
- ['set_mempolicy', '''#include <stdlib.h>
- #include <unistd.h>'''],
- ['get_mempolicy', '''#include <stdlib.h>
- #include <unistd.h>'''],
- ['pidfd_send_signal', '''#include <stdlib.h>
- #include <unistd.h>
- #include <signal.h>
- #include <sys/wait.h>
- #include <sys/pidfd.h>'''],
- ['pidfd_open', '''#include <stdlib.h>
- #include <unistd.h>
- #include <signal.h>
- #include <sys/wait.h>
- #include <sys/pidfd.h>'''],
- ['rt_tgsigqueueinfo', '''#include <stdlib.h>
- #include <unistd.h>
- #include <signal.h>
- #include <sys/wait.h>'''],
- ['mallinfo', '''#include <malloc.h>'''],
- ['mallinfo2', '''#include <malloc.h>'''],
- ['execveat', '''#include <unistd.h>'''],
- ['close_range', '''#include <unistd.h>'''],
- ['epoll_pwait2', '''#include <sys/epoll.h>'''],
- ['mount_setattr', '''#include <sys/mount.h>'''],
- ['move_mount', '''#include <sys/mount.h>'''],
- ['open_tree', '''#include <sys/mount.h>'''],
- ['fsopen', '''#include <sys/mount.h>'''],
- ['fsconfig', '''#include <sys/mount.h>'''],
- ['fsmount', '''#include <sys/mount.h>'''],
- ['getdents64', '''#include <dirent.h>'''],
- ['pidfd_spawn', '''#include <spawn.h>'''],
- ['strerrorname_np', '''#include <string.h>'''],
- ['quotactl_fd', '''#include <sys/quota.h>'''],
- ['setxattrat', '''#include <sys/xattr.h>'''], # no known header declares setxattrat
- ['removexattrat', '''#include <sys/xattr.h>'''], # no known header declares removexattrat
+ ['set_mempolicy', '''#include <sys/syscall.h>'''], # declared at numaif.h provided by libnuma, which we do not use
+ ['get_mempolicy', '''#include <sys/syscall.h>'''], # declared at numaif.h provided by libnuma, which we do not use
+ ['getdents64', '''#include <dirent.h>'''], # since glibc-2.30, but check it for musl
+ ['strerrorname_np', '''#include <string.h>'''], # since glibc-2.32
+ ['mallinfo', '''#include <malloc.h>'''], # deprecated since glibc-2.33, but check it for musl
+ ['mallinfo2', '''#include <malloc.h>'''], # since glibc-2.33
+ ['execveat', '''#include <unistd.h>'''], # since glibc-2.34
+ ['close_range', '''#include <unistd.h>'''], # since glibc-2.34
+ ['epoll_pwait2', '''#include <sys/epoll.h>'''], # since glibc-2.35
+ ['fsconfig', '''#include <sys/mount.h>'''], # since glibc-2.36
+ ['fsmount', '''#include <sys/mount.h>'''], # since glibc-2.36
+ ['fsopen', '''#include <sys/mount.h>'''], # since glibc-2.36
+ ['mount_setattr', '''#include <sys/mount.h>'''], # since glibc-2.36
+ ['move_mount', '''#include <sys/mount.h>'''], # since glibc-2.36
+ ['open_tree', '''#include <sys/mount.h>'''], # since glibc-2.36
+ ['pidfd_open', '''#include <sys/pidfd.h>'''], # since glibc-2.36
+ ['pidfd_send_signal', '''#include <sys/pidfd.h>'''], # since glibc-2.36
+ ['pidfd_spawn', '''#include <spawn.h>'''], # since glibc-2.39
+ ['sched_setattr', '''#include <sched.h>'''], # since glibc-2.41
+ ['ioprio_get', '''#include <sched.h>'''], # no known header declares ioprio_get
+ ['ioprio_set', '''#include <sched.h>'''], # no known header declares ioprio_set
+ ['rt_tgsigqueueinfo', '''#include <signal.h>'''], # no known header declares rt_tgsigqueueinfo
+ ['quotactl_fd', '''#include <sys/quota.h>'''], # no known header declares quotactl_fd
+ ['fchmodat2', '''#include <sys/stat.h>'''], # no known header declares fchmodat2
+ ['bpf', '''#include <sys/syscall.h>'''], # no known header declares bpf
+ ['kcmp', '''#include <sys/syscall.h>'''], # no known header declares kcmp
+ ['keyctl', '''#include <sys/syscall.h>'''], # no known header declares keyctl
+ ['pivot_root', '''#include <sys/syscall.h>'''], # no known header declares pivot_root
+ ['setxattrat', '''#include <sys/xattr.h>'''], # no known header declares setxattrat
+ ['removexattrat', '''#include <sys/xattr.h>'''], # no known header declares removexattrat
]
have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')