[PATCH] build: always build wayland-scanner

Bryce Harrington bryce at osg.samsung.com
Mon Jul 6 12:40:54 PDT 2015


On Wed, Jul 01, 2015 at 10:51:01PM +0100, Ross Burton wrote:
> The previous idiom for building a cross-compiled Wayland is to build once for
> the build host (with --enable-scanner --disable-libraries) to get a
> wayland-scanner binary that can then be used in a cross-compile (with
> --disable-scanner).  The problem with this is that the cross wayland is missing
> a wayland-scanner binary, which means you then can't do any Wayland development
> on the target.
> 
> Instead, always build wayland-scanner for the target and change
> --enable/disable-scanner to --with/without-host-scanner.  Normal builds use the
> default of --without-host-scanner and run the wayland-scanner it just built, and
> cross-compiled builds pass --with-host-scanner to use a previously built host
> scanner but still get a wayland-scanner to install.
> 
> (a theoretically neater solution would be to build two scanners if required (one
> to run and one to install), but automake makes this overly complicated)

An even cleaner solution would be to break the scanner out as a separate
source package from libwayland.  Then all this mess can be handled
through normal package dependencies.

> Signed-off-by: Ross Burton <ross.burton at intel.com>
> ---
>  Makefile.am  |  9 +++++----
>  configure.ac | 34 ++++++++++++++++------------------
>  2 files changed, 21 insertions(+), 22 deletions(-)
> 
> diff --git a/Makefile.am b/Makefile.am
> index 58f5595..151c54b 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -22,16 +22,17 @@ dist_pkgdata_DATA =				\
>  pkgconfigdir = $(libdir)/pkgconfig
>  pkgconfig_DATA =
>  
> -if ENABLE_SCANNER
> -wayland_scanner = $(top_builddir)/wayland-scanner
>  bin_PROGRAMS = wayland-scanner
>  wayland_scanner_SOURCES = src/scanner.c
>  wayland_scanner_CFLAGS = $(EXPAT_CFLAGS) $(AM_CFLAGS)
>  wayland_scanner_LDADD = $(EXPAT_LIBS) libwayland-util.la
> -$(BUILT_SOURCES) : wayland-scanner
>  pkgconfig_DATA += src/wayland-scanner.pc
> -else
> +
> +if HOST_SCANNER
>  wayland_scanner = wayland-scanner
> +else
> +$(BUILT_SOURCES) : wayland-scanner
> +wayland_scanner = $(top_builddir)/wayland-scanner
>  endif
>  
>  libwayland_util_la_CFLAGS = $(AM_CFLAGS)
> diff --git a/configure.ac b/configure.ac
> index 3fa3cf4..61d23bf 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -59,11 +59,11 @@ AC_ARG_ENABLE([libraries],
>  	      [],
>  	      [enable_libraries=yes])
>  
> -AC_ARG_ENABLE([scanner],
> -              [AC_HELP_STRING([--disable-scanner],
> -                              [Disable compilation of wayland-scanner])],
> -              [],
> -              [enable_scanner=yes])
> +AC_ARG_WITH([host-scanner],
> +            [AC_HELP_STRING([--with-host-scanner],
> +                            [Use a host wayland-scanner])],
> +            [],
> +            [with_host_scanner=no])
>  
>  AC_ARG_ENABLE([documentation],
>  	      [AC_HELP_STRING([--disable-documentation],
> @@ -71,7 +71,7 @@ AC_ARG_ENABLE([documentation],
>  	      [],
>  	      [enable_documentation=yes])
>  
> -AM_CONDITIONAL(ENABLE_SCANNER, test "x$enable_scanner" = xyes)
> +AM_CONDITIONAL(HOST_SCANNER, test "x$with_host_scanner" = xyes)
>  
>  AM_CONDITIONAL(ENABLE_LIBRARIES, test "x$enable_libraries" = xyes)
>  
> @@ -94,18 +94,16 @@ if test "x$enable_libraries" = "xyes"; then
>  	AC_CHECK_HEADERS([execinfo.h])
>  fi
>  
> -if test "x$enable_scanner" = "xyes"; then
> -	PKG_CHECK_MODULES(EXPAT, [expat], [],
> -		[AC_CHECK_HEADERS(expat.h, [],
> -			[AC_MSG_ERROR([Can't find expat.h. Please install expat.])])
> -		 SAVE_LIBS="$LIBS"
> -		 AC_SEARCH_LIBS(XML_ParserCreate, expat, [],
> -			[AC_MSG_ERROR([Can't find expat library. Please install expat.])])
> -		 EXPAT_LIBS="$LIBS"
> -		 LIBS="$SAVE_LIBS"
> -		 AC_SUBST(EXPAT_LIBS)
> -		])
> -fi
> +PKG_CHECK_MODULES(EXPAT, [expat], [],
> +	[AC_CHECK_HEADERS(expat.h, [],
> +		[AC_MSG_ERROR([Can't find expat.h. Please install expat.])])
> +	 SAVE_LIBS="$LIBS"
> +	 AC_SEARCH_LIBS(XML_ParserCreate, expat, [],
> +		[AC_MSG_ERROR([Can't find expat library. Please install expat.])])
> +	 EXPAT_LIBS="$LIBS"
> +	 LIBS="$SAVE_LIBS"
> +	 AC_SUBST(EXPAT_LIBS)
> +	])
>  
>  AC_PATH_PROG(XSLTPROC, xsltproc)
>  AM_CONDITIONAL([HAVE_XSLTPROC], [test "x$XSLTPROC" != "x"])
> -- 
> 2.1.4
> 
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel


More information about the wayland-devel mailing list