Skip to content
  • Pekka Paalanen's avatar
    configure: fix sys/sysmacros.h check · 14a7e371
    Pekka Paalanen authored
    This patch is a copy of
    https://cgit.freedesktop.org/mesa/drm/commit/?id=7040fea0280bad527ed4b3d5eee7d7bfbf303efc
    by Adam Jackson.
    
    Commit 43c5a65b "configure.ac: use
    AC_HEADER_MAJOR to detect major()/minor()" started using AC_HEADER_MAJOR
    to detect the header where major() is defined. This caused a regression
    on systems where glibc is still providing a deprecated definition of
    major() through sys/types.h, leading to a bunch of compiler warnings:
    
    /home/pq/git/weston/libweston/launcher-logind.c: In function ‘launcher_logind_open’:
    /home/pq/git/weston/libweston/launcher-logind.c:182:13: warning: In the GNU C Library, "major" is defined
     by <sys/sysmacros.h>. For historical compatibility, it is
     currently defined by <sys/types.h> as well, but we plan to
     remove this soon. To use "major", include <sys/sysmacros.h>
     directly. If you did not intend to use a system-defined macro
     "major", you should undefine it after including <sys/types.h>.
      fd = launcher_logind_take_device(wl, major(st.st_rdev),
    
    The issue has been discussed earlier on
    https://lists.gnu.org/archive/html/autoconf/2016-09/msg00013.html
    
    
    
    Work around the issue by causing the warning to trigger a build failure
    inside AC_HEADER_MAJOR test, so that we get MAJOR_IN_SYSMACROS defined.
    
    Cc: Adam Jackson <ajax@redhat.com>
    Cc: Emil Velikov <emil.l.velikov@gmail.com>
    Cc: Sergei Trofimovich <slyfox@gentoo.org>
    Signed-off-by: default avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
    Reviewed-by: default avatarDaniel Stone <daniels@collabora.com>
    Reviewed-by: default avatarEmil Velikov <emil.velikov@collabora.com>
    14a7e371