[PATCH v3 wayland] build: Allow disabling building of wayland libraries

Derek Foreman derekf at osg.samsung.com
Mon Jun 15 11:17:47 PDT 2015


When cross-compiling it may be useful to build only the wayland-scanner
natively.  This patch makes it possible to disable build of the libraries.

This also allows us to relax some of the build requirements when compiling
just the scanner.

Signed-off-by: Derek Foreman <derekf at osg.samsung.com>
---
Changes from v1:
Move noinst_LTLIBRARIES = libwayland-util.la out of the ENABLE_LIBRARIES
conditional

Changes from v2:
Move AM_CFLAGS and AM_CPPFLAGS out of the conditional too, our out of tree
builds break. I've moved them off the bottom instead of to the top so
they're closer to where they were...  I think their position in the
file shouldn't matter as long as AM_CFLAGS remains below
wayland_scanner_CFLAGS?

 Makefile.am  | 51 +++++++++++++++++++++++++++------------------------
 configure.ac | 30 ++++++++++++++++++++----------
 2 files changed, 47 insertions(+), 34 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index 0ea300a..01aa770 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -15,9 +15,31 @@ dist_pkgdata_DATA =				\
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA =
 
-lib_LTLIBRARIES = libwayland-server.la libwayland-client.la
+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
+wayland_scanner = wayland-scanner
+endif
+
+libwayland_util_la_SOURCES =			\
+	src/connection.c			\
+	src/wayland-util.c			\
+	src/wayland-util.h			\
+	src/wayland-os.c			\
+	src/wayland-os.h			\
+	src/wayland-private.h
+
 noinst_LTLIBRARIES = libwayland-util.la
 
+if ENABLE_LIBRARIES
+lib_LTLIBRARIES = libwayland-server.la libwayland-client.la
+
 include_HEADERS =				\
 	src/wayland-util.h			\
 	src/wayland-server.h			\
@@ -32,14 +54,6 @@ nodist_include_HEADERS =			\
 	protocol/wayland-server-protocol.h	\
 	protocol/wayland-client-protocol.h
 
-libwayland_util_la_SOURCES =			\
-	src/connection.c			\
-	src/wayland-util.c			\
-	src/wayland-util.h			\
-	src/wayland-os.c			\
-	src/wayland-os.h			\
-	src/wayland-private.h
-
 libwayland_server_la_CFLAGS = $(FFI_CFLAGS) $(GCC_CFLAGS) -pthread
 libwayland_server_la_LIBADD = $(FFI_LIBS) libwayland-util.la -lrt -lm
 libwayland_server_la_LDFLAGS = -version-info 1:0:1
@@ -64,18 +78,6 @@ 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
-wayland_scanner = wayland-scanner
-endif
-
 protocol/%-protocol.c : $(top_srcdir)/protocol/%.xml
 	$(AM_V_GEN)$(MKDIR_P) $(dir $@) && $(wayland_scanner) code < $< > $@
 
@@ -214,12 +216,13 @@ fixed_benchmark_LDADD = libtest-runner.la
 os_wrappers_test_SOURCES = tests/os-wrappers-test.c
 os_wrappers_test_LDADD = libtest-runner.la
 
+exec_fd_leak_checker_SOURCES = tests/exec-fd-leak-checker.c
+exec_fd_leak_checker_LDADD = libtest-runner.la
+endif
+
 AM_CPPFLAGS =					\
 	-I$(top_builddir)/src			\
 	-I$(top_srcdir)/src			\
 	-I$(top_builddir)/protocol
 
 AM_CFLAGS = $(GCC_CFLAGS) $(FFI_CFLAGS)
-
-exec_fd_leak_checker_SOURCES = tests/exec-fd-leak-checker.c
-exec_fd_leak_checker_LDADD = libtest-runner.la
diff --git a/configure.ac b/configure.ac
index 952f231..39e3107 100644
--- a/configure.ac
+++ b/configure.ac
@@ -54,16 +54,11 @@ AC_SUBST(GCC_CFLAGS)
 
 AC_CHECK_FUNCS([accept4 mkostemp posix_fallocate])
 
-AC_CHECK_DECL(SFD_CLOEXEC,[],
-	      [AC_MSG_ERROR("SFD_CLOEXEC is needed to compile wayland")],
-	      [[#include <sys/signalfd.h>]])
-AC_CHECK_DECL(TFD_CLOEXEC,[],
-	      [AC_MSG_ERROR("TFD_CLOEXEC is needed to compile wayland")],
-	      [[#include <sys/timerfd.h>]])
-AC_CHECK_DECL(CLOCK_MONOTONIC,[],
-	      [AC_MSG_ERROR("CLOCK_MONOTONIC is needed to compile wayland")],
-	      [[#include <time.h>]])
-AC_CHECK_HEADERS([execinfo.h])
+AC_ARG_ENABLE([libraries],
+	      [AC_HELP_STRING([--disable-libraries],
+			      [Disable compilation of wayland libraries])],
+	      [],
+	      [enable_libraries=yes])
 
 AC_ARG_ENABLE([scanner],
               [AC_HELP_STRING([--disable-scanner],
@@ -79,11 +74,26 @@ AC_ARG_ENABLE([documentation],
 
 AM_CONDITIONAL(ENABLE_SCANNER, test "x$enable_scanner" = xyes)
 
+AM_CONDITIONAL(ENABLE_LIBRARIES, test "x$enable_libraries" = 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_libraries" = "xyes"; then
+	AC_CHECK_DECL(SFD_CLOEXEC,[],
+		      [AC_MSG_ERROR("SFD_CLOEXEC is needed to compile wayland libraries")],
+		      [[#include <sys/signalfd.h>]])
+	AC_CHECK_DECL(TFD_CLOEXEC,[],
+		      [AC_MSG_ERROR("TFD_CLOEXEC is needed to compile wayland libraries")],
+		      [[#include <sys/timerfd.h>]])
+	AC_CHECK_DECL(CLOCK_MONOTONIC,[],
+		      [AC_MSG_ERROR("CLOCK_MONOTONIC is needed to compile wayland libraries")],
+		      [[#include <time.h>]])
+	AC_CHECK_HEADERS([execinfo.h])
+fi
+
 if test "x$enable_scanner" = "xyes"; then
 	PKG_CHECK_MODULES(EXPAT, [expat], [],
 		[AC_CHECK_HEADERS(expat.h, [],
-- 
2.1.4



More information about the wayland-devel mailing list