On Wed, Jul 01, 2015 at 10:51:01PM +0100, Ross Burton wrote: > 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)
An even cleaner solution would be to break the scanner out as a separate source package from libwayland. Then all this mess can be handled through normal package dependencies. > Signed-off-by: Ross Burton <[email protected]> > --- > Makefile.am | 9 +++++---- > configure.ac | 34 ++++++++++++++++------------------ > 2 files changed, 21 insertions(+), 22 deletions(-) > > diff --git a/Makefile.am b/Makefile.am > index 58f5595..151c54b 100644 > --- a/Makefile.am > +++ b/Makefile.am > @@ -22,16 +22,17 @@ dist_pkgdata_DATA = \ > pkgconfigdir = $(libdir)/pkgconfig > pkgconfig_DATA = > > -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 > > libwayland_util_la_CFLAGS = $(AM_CFLAGS) > diff --git a/configure.ac b/configure.ac > index 3fa3cf4..61d23bf 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -59,11 +59,11 @@ AC_ARG_ENABLE([libraries], > [], > [enable_libraries=yes]) > > -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], > @@ -71,7 +71,7 @@ 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) > > AM_CONDITIONAL(ENABLE_LIBRARIES, test "x$enable_libraries" = xyes) > > @@ -94,18 +94,16 @@ if test "x$enable_libraries" = "xyes"; then > AC_CHECK_HEADERS([execinfo.h]) > fi > > -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"]) > -- > 2.1.4 > > _______________________________________________ > wayland-devel mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/wayland-devel _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
