[PATCH] configure.ac: use AC_HEADER_MAJOR to detect major()/minor()

Quentin Glidic sardemff7+wayland at sardemff7.net
Tue May 23 10:03:40 UTC 2017


On 3/13/17 11:40 AM, Sergei Trofimovich wrote:
> Before the change build failed on Gentoo as:
> 
>    libweston/weston_launch-weston-launch.o: In function `handle_open':
>    weston/libweston/weston-launch.c:363: undefined reference to `major'
>    weston/libweston/weston-launch.c:365: undefined reference to `major'
>    weston/libweston/weston-launch.c:325: undefined reference to `major'
>    weston/libweston/weston-launch.c:326: undefined reference to `major'
>    libweston/weston_launch-weston-launch.o: In function `setup_tty':
>    weston/libweston/weston-launch.c:548: undefined reference to `major'
>    weston/libweston/weston-launch.c:548: undefined reference to `minor'
>    weston/libweston/weston-launch.c:555: undefined reference to `major'
>    weston/libweston/weston-launch.c:558: undefined reference to `minor'
>    libweston/weston_launch-weston-launch.o: In function `close_input_fds':
>    weston/libweston/weston-launch.c:451: undefined reference to `major'
> 
> glibc plans to remove <sys/sysmacros.h> from glibc's <sys/types.h>:
>      https://sourceware.org/ml/libc-alpha/2015-11/msg00253.html
> 
> Gentoo already applied glibc patch to experimental glibc-2.24
> to start preparingfor the change.
> 
> Autoconf has AC_HEADER_MAJOR to find out which header defines
> reqiured macros:
>      https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Particular-Headers.html
> 
> This change should also increase portability across other libcs.
> 
> Bug: https://bugs.gentoo.org/610652
> Signed-off-by: Sergei Trofimovich <slyfox at gentoo.org>

We added sys/sysmacros.h includes in 
c4d7f66c12853b9575366dd9f4a7960ec5694934.
This patch is still relevant, but needs rebasing.

Also, please move the #ifdef and #include where we currently have the 
sysmacros.h #include. And no "#    include" indentation.

Thanks,


> ---
>   configure.ac                       | 1 +
>   libweston/launcher-direct.c        | 8 ++++++++
>   libweston/launcher-logind.c        | 8 ++++++++
>   libweston/launcher-weston-launch.c | 7 +++++++
>   libweston/weston-launch.c          | 8 ++++++++
>   5 files changed, 32 insertions(+)
> 
> diff --git a/configure.ac b/configure.ac
> index 9df85d20..b99e7fdd 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -34,6 +34,7 @@ AC_CONFIG_MACRO_DIR([m4])
>   
>   AC_USE_SYSTEM_EXTENSIONS
>   AC_SYS_LARGEFILE
> +AC_HEADER_MAJOR
>   
>   AM_INIT_AUTOMAKE([1.11 parallel-tests foreign no-dist-gzip dist-xz color-tests subdir-objects])
>   
> diff --git a/libweston/launcher-direct.c b/libweston/launcher-direct.c
> index 4195cf65..16bac5f4 100644
> --- a/libweston/launcher-direct.c
> +++ b/libweston/launcher-direct.c
> @@ -46,6 +46,14 @@
>   #define KDSKBMUTE	0x4B51
>   #endif
>   
> +/* major()/minor() */
> +#ifdef MAJOR_IN_MKDEV
> +#    include <sys/mkdev.h>
> +#endif
> +#ifdef MAJOR_IN_SYSMACROS
> +#    include <sys/sysmacros.h>
> +#endif
> +
>   #ifdef HAVE_LIBDRM
>   
>   #include <xf86drm.h>
> diff --git a/libweston/launcher-logind.c b/libweston/launcher-logind.c
> index 8de1ed11..663cff28 100644
> --- a/libweston/launcher-logind.c
> +++ b/libweston/launcher-logind.c
> @@ -44,6 +44,14 @@
>   
>   #define DRM_MAJOR 226
>   
> +/* major()/minor() */
> +#ifdef MAJOR_IN_MKDEV
> +#    include <sys/mkdev.h>
> +#endif
> +#ifdef MAJOR_IN_SYSMACROS
> +#    include <sys/sysmacros.h>
> +#endif
> +
>   struct launcher_logind {
>   	struct weston_launcher base;
>   	struct weston_compositor *compositor;
> diff --git a/libweston/launcher-weston-launch.c b/libweston/launcher-weston-launch.c
> index 930f4e0c..3f7dde50 100644
> --- a/libweston/launcher-weston-launch.c
> +++ b/libweston/launcher-weston-launch.c
> @@ -74,6 +74,13 @@ drmSetMaster(int drm_fd)
>   
>   #endif
>   
> +/* major()/minor() */
> +#ifdef MAJOR_IN_MKDEV
> +#    include <sys/mkdev.h>
> +#endif
> +#ifdef MAJOR_IN_SYSMACROS
> +#    include <sys/sysmacros.h>
> +#endif
>   
>   union cmsg_data { unsigned char b[4]; int fd; };
>   
> diff --git a/libweston/weston-launch.c b/libweston/weston-launch.c
> index 140fde1d..5fe0c4a9 100644
> --- a/libweston/weston-launch.c
> +++ b/libweston/weston-launch.c
> @@ -92,6 +92,14 @@ drmSetMaster(int drm_fd)
>   
>   #endif
>   
> +/* major()/minor() */
> +#ifdef MAJOR_IN_MKDEV
> +#    include <sys/mkdev.h>
> +#endif
> +#ifdef MAJOR_IN_SYSMACROS
> +#    include <sys/sysmacros.h>
> +#endif
> +
>   struct weston_launch {
>   	struct pam_conv pc;
>   	pam_handle_t *ph;
> 


-- 

Quentin “Sardem FF7” Glidic


More information about the wayland-devel mailing list