https://github.com/linux-nvme/libnvme/pull/724 From f78a97acf9cdec1031d81f0e8a3956fc8f28c33c Mon Sep 17 00:00:00 2001 From: Sam James Date: Sat, 30 Sep 2023 06:38:53 +0100 Subject: [PATCH 1/2] test: handle POSIX ioctl prototype glibc has the following prototype for ioctl: int ioctl(int fd, unsigned long request, ...) POSIX (inc. musl) has the following for ioctl: int ioctl(int fd, int request, ...) Check which prototype is used in to avoid a conflict and conditionally define the right one for the system. Bug: https://bugs.gentoo.org/914921 Signed-off-by: Sam James --- a/meson.build +++ b/meson.build @@ -230,6 +230,16 @@ conf.set( ), description: 'Is network address and service translation available' ) +conf.set( + 'HAVE_GLIBC_IOCTL', + cc.compiles( + '''#include + int ioctl(int fd, unsigned long request, ...); + ''', + name: 'ioctl has glibc-style prototype' + ), + description: 'Is ioctl the glibc interface (rather than POSIX)' +) if cc.has_function_attribute('fallthrough') conf.set('fallthrough', '__attribute__((__fallthrough__))') --- a/test/ioctl/mock.c +++ b/test/ioctl/mock.c @@ -114,7 +114,11 @@ void end_mock_cmds(void) } \ }) +#ifdef HAVE_GLIBC_IOCTL int ioctl(int fd, unsigned long request, ...) +#else +int ioctl(int fd, int request, ...) +#endif { struct mock_cmds *mock_cmds; bool result64; @@ -141,7 +145,7 @@ int ioctl(int fd, unsigned long request, ...) result64 = true; break; default: - fail("unexpected %s %lu", __func__, request); + fail("unexpected %s %lu", __func__, (unsigned long) request); } check(mock_cmds->remaining_cmds, "unexpected %s command", mock_cmds->name); From 149c006d23da60e168485ede722730dc2b725e6b Mon Sep 17 00:00:00 2001 From: Sam James Date: Sat, 30 Sep 2023 06:43:39 +0100 Subject: [PATCH 2/2] meson: make building tests conditional Just like we do for docs. Signed-off-by: Sam James --- a/meson.build +++ b/meson.build @@ -273,7 +273,9 @@ subdir('internal') subdir('ccan') subdir('src') subdir('libnvme') -subdir('test') +if get_option('tests') + subdir('test') +endif subdir('examples') subdir('doc') --- a/meson_options.txt +++ b/meson_options.txt @@ -6,6 +6,7 @@ option('rstdir', type : 'string', value : '', description : 'directory for ReST option('docs', type : 'combo', choices : ['false', 'html', 'man', 'rst', 'all'], description : 'install documentation') option('docs-build', type : 'boolean', value : false, description : 'build documentation') +option('tests', type : 'boolean', value : true, description : 'build tests') option('python', type : 'feature', value: 'auto', description : 'Generate libnvme python bindings') option('openssl', type : 'feature', value: 'auto', description : 'OpenSSL support')