On Monday, 2019-09-09 16:51:16 -0700, Alan Coopersmith wrote:
On Solaris, sys/sysmacros.h has long-deprecated copies of major() & minor() but not makedev(). sys/mkdev.h has all three and is the preferred choice.
So we check for sys/mkdev.h first, as autoconf's AC_HEADER_MAJOR does.
Reviewed-by: Eric Engestrom eric.engestrom@intel.com
Alternatively, how about this? ---8<--- diff --git a/meson.build b/meson.build index bc5cfc588d0c621a9725..263f691ab2b9107f5be1 100644 --- a/meson.build +++ b/meson.build @@ -183,9 +183,14 @@ foreach header : ['sys/sysctl.h', 'sys/select.h', 'alloca.h'] config.set('HAVE_' + header.underscorify().to_upper(), cc.compiles('#include <@0@>'.format(header), name : '@0@ works'.format(header))) endforeach -if cc.has_header_symbol('sys/sysmacros.h', 'major') +if (cc.has_header_symbol('sys/sysmacros.h', 'major') and + cc.has_header_symbol('sys/sysmacros.h', 'minor') and + cc.has_header_symbol('sys/sysmacros.h', 'makedev')) config.set10('MAJOR_IN_SYSMACROS', true) -elif cc.has_header_symbol('sys/mkdev.h', 'major') +endif +if (cc.has_header_symbol('sys/mkdev.h', 'major') and + cc.has_header_symbol('sys/mkdev.h', 'minor') and + cc.has_header_symbol('sys/mkdev.h', 'makedev')) config.set10('MAJOR_IN_MKDEV', true) endif config.set10('HAVE_OPEN_MEMSTREAM', cc.has_function('open_memstream')) --->8---
Makes both checks independent and represent the reality of what's wanted more accurately (despite the historical name of the macro).
Fixes build failure with error: ../xf86drm.c: In function ‘drmOpenMinor’: ../xf86drm.c:454:30: error: implicit declaration of function ‘makedev’ [-Werror=implicit-function-declaration] 454 | return drmOpenDevice(makedev(DRM_MAJOR, minor), minor, type); | ^~~~~~~
Signed-off-by: Alan Coopersmith alan.coopersmith@oracle.com
meson.build | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/meson.build b/meson.build index bc5cfc58..a3363c32 100644 --- a/meson.build +++ b/meson.build @@ -183,10 +183,10 @@ foreach header : ['sys/sysctl.h', 'sys/select.h', 'alloca.h'] config.set('HAVE_' + header.underscorify().to_upper(), cc.compiles('#include <@0@>'.format(header), name : '@0@ works'.format(header))) endforeach -if cc.has_header_symbol('sys/sysmacros.h', 'major')
- config.set10('MAJOR_IN_SYSMACROS', true)
-elif cc.has_header_symbol('sys/mkdev.h', 'major') +if cc.has_header_symbol('sys/mkdev.h', 'major') config.set10('MAJOR_IN_MKDEV', true) +elif cc.has_header_symbol('sys/sysmacros.h', 'major')
- config.set10('MAJOR_IN_SYSMACROS', true)
endif config.set10('HAVE_OPEN_MEMSTREAM', cc.has_function('open_memstream'))
-- 2.15.2