From df7386e7df456d1b44f2a089f11db2673bfdfa66 Mon Sep 17 00:00:00 2001 From: Ross Burton Date: Wed, 1 Jul 2015 23:04:45 +0100 Subject: wayland: always build wayland-scanner By passing --disable-scanner to use a native wayland-scanner binary a target wayland-scanner binary isn't built, which is a problem if you want to use it on the target or in a SDK. Instead, always build a target wayland-scanner binary, and have an option to control whether that binary or a host-provided binary is used at build time. [ YOCTO #7931 ] (From OE-Core rev: 7aeeaf287169d4d7de5349626caa93a3941c2c35) Signed-off-by: Ross Burton Signed-off-by: Richard Purdie --- .../wayland/wayland/always-build-scanner.patch | 105 +++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 meta/recipes-graphics/wayland/wayland/always-build-scanner.patch (limited to 'meta/recipes-graphics/wayland/wayland') diff --git a/meta/recipes-graphics/wayland/wayland/always-build-scanner.patch b/meta/recipes-graphics/wayland/wayland/always-build-scanner.patch new file mode 100644 index 0000000000..5e0e6bf12a --- /dev/null +++ b/meta/recipes-graphics/wayland/wayland/always-build-scanner.patch @@ -0,0 +1,105 @@ +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"]) -- cgit v1.2.3-54-g00ecf