build: always build wayland-scanner
authorRoss Burton <ross.burton@intel.com>
Wed, 1 Jul 2015 21:51:01 +0000 (22:51 +0100)
committerDaniel Stone <daniels@collabora.com>
Fri, 17 Jul 2015 11:19:08 +0000 (12:19 +0100)
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)

[daniels: Bikeshedded naming with Ross's OK.]

Signed-off-by: Ross Burton <ross.burton@intel.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Makefile.am
configure.ac

index 58f5595..2dbc216 100644 (file)
@@ -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 USE_HOST_SCANNER
 wayland_scanner = wayland-scanner
+else
+$(BUILT_SOURCES) : wayland-scanner
+wayland_scanner = $(top_builddir)/wayland-scanner
 endif
 
 libwayland_util_la_CFLAGS = $(AM_CFLAGS)
index 3fa3cf4..7166f52 100644 (file)
@@ -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])],
+AC_ARG_WITH([host-scanner],
+              [AC_HELP_STRING([--with-host-scanner],
+                              [Use installed wayland-scanner from host PATH during build])],
               [],
-              [enable_scanner=yes])
+              [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(USE_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"])