build: always build wayland-scanner 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) Signed-off-by: Ross Burton Upstream-Status: Submitted diff --git a/Makefile.am b/Makefile.am index c19494f..c2d929b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -64,16 +64,17 @@ 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_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 protocol/%-protocol.c : $(top_srcdir)/protocol/%.xml diff --git a/configure.ac b/configure.ac index c2a804e..de0b02f 100644 --- a/configure.ac +++ b/configure.ac @@ -65,11 +65,11 @@ AC_CHECK_DECL(CLOCK_MONOTONIC,[], [[#include ]]) AC_CHECK_HEADERS([execinfo.h]) -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], @@ -77,25 +77,23 @@ 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) AC_ARG_WITH(icondir, [ --with-icondir= Look for cursor icons here], [ ICONDIR=$withval], [ ICONDIR=${datadir}/icons]) AC_SUBST([ICONDIR]) -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"])