Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 1 | build: always build wayland-scanner |
| 2 | |
| 3 | The previous idiom for building a cross-compiled Wayland is to build once for |
| 4 | the build host (with --enable-scanner --disable-libraries) to get a |
| 5 | wayland-scanner binary that can then be used in a cross-compile (with |
| 6 | --disable-scanner). The problem with this is that the cross wayland is missing |
| 7 | a wayland-scanner binary, which means you then can't do any Wayland development |
| 8 | on the target. |
| 9 | |
| 10 | Instead, always build wayland-scanner for the target and change |
| 11 | --enable/disable-scanner to --with/without-host-scanner. Normal builds use the |
| 12 | default of --without-host-scanner and run the wayland-scanner it just built, and |
| 13 | cross-compiled builds pass --with-host-scanner to use a previously built host |
| 14 | scanner but still get a wayland-scanner to install. |
| 15 | |
| 16 | (a theoretically neater solution would be to build two scanners if required (one |
| 17 | to run and one to install), but automake makes this overly complicated) |
| 18 | |
| 19 | Signed-off-by: Ross Burton <ross.burton@intel.com> |
| 20 | Upstream-Status: Submitted |
| 21 | |
| 22 | diff --git a/Makefile.am b/Makefile.am |
| 23 | index c19494f..c2d929b 100644 |
| 24 | --- a/Makefile.am |
| 25 | +++ b/Makefile.am |
| 26 | @@ -64,16 +64,17 @@ nodist_libwayland_client_la_SOURCES = \ |
| 27 | |
| 28 | pkgconfig_DATA += src/wayland-client.pc src/wayland-server.pc |
| 29 | |
| 30 | -if ENABLE_SCANNER |
| 31 | -wayland_scanner = $(top_builddir)/wayland-scanner |
| 32 | bin_PROGRAMS = wayland-scanner |
| 33 | wayland_scanner_SOURCES = src/scanner.c |
| 34 | wayland_scanner_CFLAGS = $(EXPAT_CFLAGS) $(AM_CFLAGS) |
| 35 | wayland_scanner_LDADD = $(EXPAT_LIBS) libwayland-util.la |
| 36 | -$(BUILT_SOURCES) : wayland-scanner |
| 37 | pkgconfig_DATA += src/wayland-scanner.pc |
| 38 | -else |
| 39 | + |
| 40 | +if HOST_SCANNER |
| 41 | wayland_scanner = wayland-scanner |
| 42 | +else |
| 43 | +$(BUILT_SOURCES) : wayland-scanner |
| 44 | +wayland_scanner = $(top_builddir)/wayland-scanner |
| 45 | endif |
| 46 | |
| 47 | protocol/%-protocol.c : $(top_srcdir)/protocol/%.xml |
| 48 | diff --git a/configure.ac b/configure.ac |
| 49 | index c2a804e..de0b02f 100644 |
| 50 | --- a/configure.ac |
| 51 | +++ b/configure.ac |
| 52 | @@ -65,11 +65,11 @@ AC_CHECK_DECL(CLOCK_MONOTONIC,[], |
| 53 | [[#include <time.h>]]) |
| 54 | AC_CHECK_HEADERS([execinfo.h]) |
| 55 | |
| 56 | -AC_ARG_ENABLE([scanner], |
| 57 | - [AC_HELP_STRING([--disable-scanner], |
| 58 | - [Disable compilation of wayland-scanner])], |
| 59 | - [], |
| 60 | - [enable_scanner=yes]) |
| 61 | +AC_ARG_WITH([host-scanner], |
| 62 | + [AC_HELP_STRING([--with-host-scanner], |
| 63 | + [Use a host wayland-scanner])], |
| 64 | + [], |
| 65 | + [with_host_scanner=no]) |
| 66 | |
| 67 | AC_ARG_ENABLE([documentation], |
| 68 | [AC_HELP_STRING([--disable-documentation], |
| 69 | @@ -77,25 +77,23 @@ AC_ARG_ENABLE([documentation], |
| 70 | [], |
| 71 | [enable_documentation=yes]) |
| 72 | |
| 73 | -AM_CONDITIONAL(ENABLE_SCANNER, test "x$enable_scanner" = xyes) |
| 74 | +AM_CONDITIONAL(HOST_SCANNER, test "x$with_host_scanner" = xyes) |
| 75 | |
| 76 | AC_ARG_WITH(icondir, [ --with-icondir=<dir> Look for cursor icons here], |
| 77 | [ ICONDIR=$withval], |
| 78 | [ ICONDIR=${datadir}/icons]) |
| 79 | AC_SUBST([ICONDIR]) |
| 80 | |
| 81 | -if test "x$enable_scanner" = "xyes"; then |
| 82 | - PKG_CHECK_MODULES(EXPAT, [expat], [], |
| 83 | - [AC_CHECK_HEADERS(expat.h, [], |
| 84 | - [AC_MSG_ERROR([Can't find expat.h. Please install expat.])]) |
| 85 | - SAVE_LIBS="$LIBS" |
| 86 | - AC_SEARCH_LIBS(XML_ParserCreate, expat, [], |
| 87 | - [AC_MSG_ERROR([Can't find expat library. Please install expat.])]) |
| 88 | - EXPAT_LIBS="$LIBS" |
| 89 | - LIBS="$SAVE_LIBS" |
| 90 | - AC_SUBST(EXPAT_LIBS) |
| 91 | - ]) |
| 92 | -fi |
| 93 | +PKG_CHECK_MODULES(EXPAT, [expat], [], |
| 94 | + [AC_CHECK_HEADERS(expat.h, [], |
| 95 | + [AC_MSG_ERROR([Can't find expat.h. Please install expat.])]) |
| 96 | + SAVE_LIBS="$LIBS" |
| 97 | + AC_SEARCH_LIBS(XML_ParserCreate, expat, [], |
| 98 | + [AC_MSG_ERROR([Can't find expat library. Please install expat.])]) |
| 99 | + EXPAT_LIBS="$LIBS" |
| 100 | + LIBS="$SAVE_LIBS" |
| 101 | + AC_SUBST(EXPAT_LIBS) |
| 102 | + ]) |
| 103 | |
| 104 | AC_PATH_PROG(XSLTPROC, xsltproc) |
| 105 | AM_CONDITIONAL([HAVE_XSLTPROC], [test "x$XSLTPROC" != "x"]) |