[PATCH 1/5] Always build wayland-scanner

Pekka Paalanen ppaalanen at gmail.com
Mon May 26 23:22:30 PDT 2014


On Mon, 19 May 2014 17:12:39 +0200
Thierry Reding <thierry.reding at gmail.com> wrote:

> From: Thierry Reding <treding at nvidia.com>
> 
> When cross-compiling, wayland-scanner cannot be used to generate files
> because it is built for the host architecture. To overcome this, users
> currently need to instruct the build not to create wayland-scanner and
> provide a native variant in the PATH. This has the disadvantage of not
> installing the scanner either and in turn users running a distribution
> that was cross-built cannot use it.
> 
> This commit changes the build process to always create and install the
> wayland-scanner binary. The configure script determines whether to use
> the version being built or a native version found in the PATH.
> 
> Signed-off-by: Thierry Reding <treding at nvidia.com>
> ---
>  Makefile.am  | 11 +++--------
>  configure.ac | 31 ++++++++++++++++---------------
>  2 files changed, 19 insertions(+), 23 deletions(-)
> 
> diff --git a/Makefile.am b/Makefile.am
> index c15d8b8b853d..028d0d4837b5 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -61,25 +61,20 @@ nodist_libwayland_client_la_SOURCES =		\
>  
>  pkgconfig_DATA += src/wayland-client.pc src/wayland-server.pc
>  
> -if ENABLE_SCANNER
> -wayland_scanner = $(top_builddir)/wayland-scanner
>  bin_PROGRAMS = wayland-scanner
>  wayland_scanner_SOURCES = src/scanner.c
>  wayland_scanner_LDADD = $(EXPAT_LIBS) libwayland-util.la
>  $(BUILT_SOURCES) : wayland-scanner
>  pkgconfig_DATA += src/wayland-scanner.pc
> -else
> -wayland_scanner = wayland-scanner
> -endif
>  
>  protocol/%-protocol.c : $(top_srcdir)/protocol/%.xml
> -	$(AM_V_GEN)$(MKDIR_P) $(dir $@) && $(wayland_scanner) code < $< > $@
> +	$(AM_V_GEN)$(MKDIR_P) $(dir $@) && $(WAYLAND_SCANNER) code < $< > $@
>  
>  protocol/%-server-protocol.h : $(top_srcdir)/protocol/%.xml
> -	$(AM_V_GEN)$(MKDIR_P) $(dir $@) && $(wayland_scanner) server-header < $< > $@
> +	$(AM_V_GEN)$(MKDIR_P) $(dir $@) && $(WAYLAND_SCANNER) server-header < $< > $@
>  
>  protocol/%-client-protocol.h : $(top_srcdir)/protocol/%.xml
> -	$(AM_V_GEN)$(MKDIR_P) $(dir $@) && $(wayland_scanner) client-header < $< > $@
> +	$(AM_V_GEN)$(MKDIR_P) $(dir $@) && $(WAYLAND_SCANNER) client-header < $< > $@
>  
>  BUILT_SOURCES =					\
>  	$(nodist_libwayland_server_la_SOURCES)	\
> diff --git a/configure.ac b/configure.ac
> index 393310cd6699..d14142bbc8c3 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -31,6 +31,17 @@ AC_PROG_CC
>  LT_PREREQ([2.2])
>  LT_INIT
>  
> +if test "x$cross_compiling" = "xyes"; then
> +	AC_PATH_PROG(WAYLAND_SCANNER, wayland-scanner)
> +
> +	if test "x$WAYLAND_SCANNER" = "x"; then
> +		AC_MSG_ERROR([Cross-compiling but wayland-scanner not found.])
> +	fi
> +else
> +	WAYLAND_SCANNER='$(top_builddir)/wayland-scanner'
> +	AC_SUBST([WAYLAND_SCANNER])
> +fi

Is it ok to have AC_SUBST inside a condition?
I found one message where it seems to imply, that it is not a good
practice:
http://lists.gnu.org/archive/html/autoconf/2010-01/msg00091.html

Otherwise looks fine to me.


Thanks,
pq


> +
>  PKG_PROG_PKG_CONFIG()
>  PKG_CHECK_MODULES(FFI, [libffi])
>  
> @@ -52,20 +63,12 @@ AC_CHECK_DECL(CLOCK_MONOTONIC,[],
>  	      [[#include <time.h>]])
>  AC_CHECK_HEADERS([execinfo.h])
>  
> -AC_ARG_ENABLE([scanner],
> -              [AC_HELP_STRING([--disable-scanner],
> -                              [Disable compilation of wayland-scanner])],
> -              [],
> -              [enable_scanner=yes])
> -
>  AC_ARG_ENABLE([documentation],
>  	      [AC_HELP_STRING([--disable-documentation],
>  		              [Disable building the documentation])],
>  	      [],
>  	      [enable_documentation=yes])
>  
> -AM_CONDITIONAL(ENABLE_SCANNER, test "x$enable_scanner" = xyes)
> -
>  AC_ARG_WITH(icondir, [  --with-icondir=<dir>    Look for cursor icons here],
>  		     [  ICONDIR=$withval],
>  		     [  ICONDIR=${datadir}/icons])
> @@ -76,13 +79,11 @@ AC_ARG_WITH(expat, [  --with-expat=<dir>      Use expat from here],
>  		   [ expat=$withval
>  		     CPPFLAGS="$CPPFLAGS -I$withval/include"
>  		     LDFLAGS="$LDFLAGS -L$withval/lib" ] )
> -if test "x$enable_scanner" = "xyes"; then
> -	AC_CHECK_HEADERS(expat.h, [AC_DEFINE(HAVE_EXPAT_H)],
> -			 [AC_MSG_ERROR([Can't find expat.h. Please install expat.])])
> -	AC_CHECK_LIB(expat, XML_ParserCreate, [EXPAT_LIBS="-lexpat"],
> -		     [AC_MSG_ERROR([Can't find expat library. Please install expat.])])
> -	AC_SUBST(EXPAT_LIBS)
> -fi
> +AC_CHECK_HEADERS(expat.h, [AC_DEFINE(HAVE_EXPAT_H)],
> +		 [AC_MSG_ERROR([Can't find expat.h. Please install expat.])])
> +AC_CHECK_LIB(expat, XML_ParserCreate, [EXPAT_LIBS="-lexpat"],
> +	     [AC_MSG_ERROR([Can't find expat library. Please install expat.])])
> +AC_SUBST(EXPAT_LIBS)
>  
>  AC_PATH_PROG(XSLTPROC, xsltproc)
>  AM_CONDITIONAL([HAVE_XSLTPROC], [test "x$XSLTPROC" != "x"])



More information about the wayland-devel mailing list