aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-graphics/wayland/wayland/always-build-scanner.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-graphics/wayland/wayland/always-build-scanner.patch')
-rw-r--r--meta/recipes-graphics/wayland/wayland/always-build-scanner.patch105
1 files changed, 105 insertions, 0 deletions
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 <ross.burton@intel.com>
+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 <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_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=<dir> 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"])