]> code.ossystems Code Review - openembedded-core.git/commitdiff
wayland: always build wayland-scanner
authorRoss Burton <ross.burton@intel.com>
Wed, 1 Jul 2015 22:04:45 +0000 (23:04 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 2 Jul 2015 22:07:26 +0000 (23:07 +0100)
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 ]

Signed-off-by: Ross Burton <ross.burton@intel.com>
meta/recipes-graphics/wayland/wayland/always-build-scanner.patch [new file with mode: 0644]
meta/recipes-graphics/wayland/wayland_1.8.1.bb

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 (file)
index 0000000..5e0e6bf
--- /dev/null
@@ -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"])
index 5b367453cc38d58247c5afab9a832275bb9e04cf..ac631af1fb97f504f8418dfafb689151301c2a3a 100644 (file)
@@ -10,14 +10,15 @@ LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://COPYING;md5=1d4476a7d98dd5691c53d4d43a510c72 \
                     file://src/wayland-server.c;endline=21;md5=079ae21dbf98ada52ec23744851b0a5c"
 
-SRC_URI = "http://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz"
+SRC_URI = "http://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
+           file://always-build-scanner.patch"
 SRC_URI[md5sum] = "6e877877c3e04cfb865cfcd0733c9ab1"
 SRC_URI[sha256sum] = "f17c938d1c24fd0a10f650a623a2775d329db3168b5732e498b08388ec776fc8"
 
 SRC_URI_append_class-native = " \
     file://disable-macro-checks-not-used-for-scanner.patch \
     "
-EXTRA_OECONF_class-native = "--disable-documentation --enable-scanner"
+EXTRA_OECONF_class-native = "--disable-documentation"
 
 inherit autotools pkgconfig
 
@@ -26,7 +27,7 @@ BBCLASSEXTEND = "native"
 
 DEPENDS = "expat libffi wayland-native"
 
-EXTRA_OECONF = "--disable-documentation --disable-scanner"
+EXTRA_OECONF = "--disable-documentation --with-host-scanner"
 
 # Wayland installs a M4 macro for other projects to use, which uses the target
 # pkg-config to find files.  Replace pkg-config with pkg-config-native.
@@ -40,3 +41,6 @@ sysroot_stage_all_append_class-target () {
        rm ${SYSROOT_DESTDIR}/${datadir}/aclocal/wayland-scanner.m4
        cp ${STAGING_DATADIR_NATIVE}/aclocal/wayland-scanner.m4 ${SYSROOT_DESTDIR}/${datadir}/aclocal/
 }
+
+FILES_${PN} = "${libdir}/*${SOLIBS}"
+FILES_${PN}-dev += "${bindir} ${datadir}/wayland"