[PATCH wayland] scanner: Add autoconf macro to check for the proper scanner

Quentin Glidic sardemff7+wayland at sardemff7.net
Fri Aug 18 09:36:17 UTC 2017


On 8/18/17 11:30 AM, Quentin Glidic wrote:
> From: Quentin Glidic <sardemff7+git at sardemff7.net>
> 
> Projects have been using various ways to check for the wayland-scanner,
> mostly based on their developper own use case, and often not allowing
> others use cases to work without a workaround.
> 
> Hopefully this macro will support all use cases without needing user
> action.
> 
> Signed-off-by: Quentin Glidic <sardemff7+git at sardemff7.net>
> ---
> 
> Everyone should test this macro for their own project and use cases.
> Using the ${WAYLAND_SCANNER} variable should just work (assuming you have the proper
> wayland package built in the expected env). In very very rare cases, setting the
> WAYLAND_SCANNER variable as a ./configure argument may be needed, but nothing else.
> 
> Please let me know with enough details if your use case is not working with it.

Forgot the CCs while sending the patch.


>   wayland-scanner.m4 | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
>   1 file changed, 54 insertions(+)
> 
> diff --git a/wayland-scanner.m4 b/wayland-scanner.m4
> index 4e4222a..37e0548 100644
> --- a/wayland-scanner.m4
> +++ b/wayland-scanner.m4
> @@ -1,3 +1,5 @@
> +#serial 2
> +
>   AC_DEFUN([WAYLAND_SCANNER_RULES], [
>       PKG_PROG_PKG_CONFIG
>   
> @@ -11,3 +13,55 @@ AC_DEFUN([WAYLAND_SCANNER_RULES], [
>   
>       AC_SUBST([wayland_protocoldir], [$1])
>   ])
> +
> +
> +AC_DEFUN([_WL_PROG_WAYLAND_SCANNER_VERSION_CHECK], [
> +    wl_cv_scanner_version=`${WAYLAND_SCANNER} --version 2>&1 | sed 's/^wayland-scanner //'`
> +    AS_VERSION_COMPARE([${wl_cv_scanner_version}], [${wl_cv_scanner_wanted_version}], [], [
> +        wl_cv_scanner_found=yes
> +    ], [])
> +])
> +
> +# WL_PROG_WAYLAND_SCANNER()
> +AC_DEFUN([WL_PROG_WAYLAND_SCANNER], [
> +    AC_REQUIRE([AC_CANONICAL_BUILD])
> +    AC_REQUIRE([PKG_PROG_PKG_CONFIG])
> +    wl_cv_native_pkg_config=
> +    AS_IF([test x${cross_compiling} = xyes], [
> +        wl_cv_native_pkg_config=${build}-pkg-config
> +        AC_PATH_PROGS([wl_cv_native_pkg_config], [${build}-pkg-config])
> +    ])
> +    AC_ARG_VAR([WAYLAND_SCANNER], [wayland-scanner executable])
> +    wl_cv_scanner_found=no
> +    wl_cv_scanner_wanted_version=`${PKG_CONFIG} --modversion wayland-server`
> +    AC_MSG_CHECKING([that wayland-client and wayland-server versions are the same])
> +    AS_IF([test ${wl_cv_scanner_wanted_version} = `${PKG_CONFIG} --modversion wayland-client`], [
> +        AC_MSG_RESULT([ok])
> +    ], [
> +        AC_MSG_ERROR([mismatch])
> +    ])
> +    AC_MSG_CHECKING([for wayland-scanner ${wl_cv_scanner_wanted_version}])
> +    AS_IF([test x${ac_cv_env_WAYLAND_SCANNER_set} = xset], [
> +        _WL_PROG_WAYLAND_SCANNER_VERSION_CHECK()
> +    ])
> +    AS_IF([test x${cross_compiling} = xyes -a x${wl_cv_native_pkg_config} != xno], [
> +        AS_IF([AC_RUN_LOG([${wl_cv_native_pkg_config} --exists --print-errors wayland-scanner = ${wl_cv_scanner_wanted_version}])], [
> +            WAYLAND_SCANNER=`${wl_cv_native_pkg_config} --variable=wayland_scanner wayland-scanner = ${wl_cv_scanner_wanted_version}`
> +            _WL_PROG_WAYLAND_SCANNER_VERSION_CHECK()
> +        ])
> +    ])
> +    AS_IF([test x${wl_cv_scanner_found} = xno], [
> +        AS_IF([AC_RUN_LOG([${PKG_CONFIG} --exists --print-errors wayland-scanner = ${wl_cv_scanner_wanted_version}])], [
> +            WAYLAND_SCANNER=`${PKG_CONFIG} --variable=wayland_scanner wayland-scanner = ${wl_cv_scanner_wanted_version}`
> +            _WL_PROG_WAYLAND_SCANNER_VERSION_CHECK()
> +        ])
> +    ])
> +    AS_IF([test x${wl_cv_scanner_found} = xno], [
> +        AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner])
> +        _WL_PROG_WAYLAND_SCANNER_VERSION_CHECK()
> +    ])
> +    AS_IF([test x${wl_cv_scanner_found} = xno], [
> +        AC_MSG_ERROR([no usable wayland-scanner executable version ${wl_cv_scanner_wanted_version}])
> +    ])
> +    AC_MSG_RESULT([${WAYLAND_SCANNER}])
> +])
> 


-- 

Quentin “Sardem FF7” Glidic


More information about the wayland-devel mailing list