summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2018-12-04 16:59:01 +0100
committerMarcel Holtmann <marcel@holtmann.org>2018-12-04 17:21:08 +0100
commit0093cd61b1e4f199bca45f8c2f8eb2d5a30e847d (patch)
tree7ba152e499d7ca0f1ae2cfbb73983a8ffbb09e7a
parent8eda0a753507903a13af27a69df19cddf9bec23f (diff)
downloadbluez-0093cd61b1e4f199bca45f8c2f8eb2d5a30e847d.tar.gz
build: Add support for internal and external ELL configuration
-rw-r--r--.gitignore3
-rw-r--r--Makefile.am89
-rw-r--r--Makefile.mesh21
-rw-r--r--Makefile.tools5
-rw-r--r--README31
-rwxr-xr-xbootstrap-configure1
-rw-r--r--configure.ac15
7 files changed, 138 insertions, 27 deletions
diff --git a/.gitignore b/.gitignore
index a6cb3c798..24587305a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,8 +30,9 @@ autom4te.cache
test-driver
test-suite.log
coverage.info
-
coverage
+ell
+
lib/bluez.pc
lib/bluetooth
src/builtin.h
diff --git a/Makefile.am b/Makefile.am
index 4045f9fbf..165c3bd30 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -28,7 +28,7 @@ pkgincludedir = $(includedir)/bluetooth
pkginclude_HEADERS =
-AM_CFLAGS = $(WARNING_CFLAGS) $(MISC_CFLAGS) $(UDEV_CFLAGS)
+AM_CFLAGS = $(WARNING_CFLAGS) $(MISC_CFLAGS) $(UDEV_CFLAGS) $(ell_cflags)
AM_LDFLAGS = $(MISC_LDFLAGS)
if DATAFILES
@@ -73,7 +73,7 @@ extra_sources = lib/uuid.c
local_headers = $(foreach file,$(lib_headers), lib/bluetooth/$(notdir $(file)))
-BUILT_SOURCES = $(local_headers) src/builtin.h
+BUILT_SOURCES = $(local_headers) $(ell_built_sources) src/builtin.h
if LIBRARY
pkginclude_HEADERS += $(lib_headers)
@@ -96,6 +96,66 @@ gdbus_libgdbus_internal_la_SOURCES = gdbus/gdbus.h \
gdbus/mainloop.c gdbus/watch.c \
gdbus/object.c gdbus/client.c gdbus/polkit.c
+if EXTERNAL_ELL
+ell_cflags = @ELL_CFLAGS@
+ell_ldadd = @ELL_LIBS@
+ell_dependencies =
+ell_built_sources =
+else
+ell_cflags =
+ell_ldadd = ell/libell-internal.la
+ell_dependencies = $(ell_ldadd)
+ell_built_sources = ell/internal ell/ell.h
+
+noinst_LTLIBRARIES += ell/libell-internal.la
+
+ell_headers = ell/util.h \
+ ell/log.h \
+ ell/queue.h \
+ ell/hashmap.h \
+ ell/random.h \
+ ell/signal.h \
+ ell/timeout.h \
+ ell/io.h \
+ ell/idle.h \
+ ell/main.h \
+ ell/strv.h \
+ ell/string.h \
+ ell/dbus.h \
+ ell/dbus-service.h \
+ ell/dbus-client.h
+
+ell_sources = ell/private.h ell/missing.h \
+ ell/util.c \
+ ell/log.c \
+ ell/queue.c \
+ ell/hashmap.c \
+ ell/random.c \
+ ell/signal.c \
+ ell/timeout.c \
+ ell/io.c \
+ ell/idle.c \
+ ell/main.c \
+ ell/strv.c \
+ ell/string.c \
+ ell/dbus-private.h \
+ ell/dbus.c \
+ ell/dbus-message.c \
+ ell/dbus-util.c \
+ ell/dbus-service.c \
+ ell/dbus-client.c \
+ ell/dbus-name-cache.c \
+ ell/dbus-filter.c \
+ ell/gvariant-private.h \
+ ell/gvariant-util.c \
+ ell/siphash-private.h \
+ ell/siphash.c
+
+ell_libell_internal_la_SOURCES = $(ell_headers) $(ell_sources)
+endif
+
+CLEANFILES += $(ell_built_sources)
+
noinst_LTLIBRARIES += src/libshared-glib.la src/libshared-mainloop.la
shared_sources = src/shared/io.h src/shared/timeout.h \
@@ -137,11 +197,11 @@ src_libshared_mainloop_la_SOURCES = $(shared_sources) \
src/shared/timeout-mainloop.c \
src/shared/mainloop.h src/shared/mainloop.c
-if ELL
+if LIBSHARED_ELL
+noinst_LTLIBRARIES += src/libshared-ell.la
+
src_libshared_ell_la_SOURCES = $(shared_sources) \
src/shared/io-ell.c
-src_libshared_ell_la_CPPFLAGS = $(AM_CPPFLAGS) $(ELL_CFLAGS)
-noinst_LTLIBRARIES += src/libshared-ell.la
endif
attrib_sources = attrib/att.h attrib/att-database.h attrib/att.c \
@@ -482,6 +542,8 @@ DISTCHECK_CONFIGURE_FLAGS = --disable-datafiles --enable-library \
--enable-midi \
--enable-manpages \
--enable-android \
+ --enable-mesh \
+ --enable-btpclient \
--disable-systemd \
--disable-udev
@@ -513,6 +575,23 @@ lib/bluetooth/%.h: lib/%.h
$(AM_V_at)$(MKDIR_P) lib/bluetooth
$(AM_V_GEN)$(LN_S) -f $(abspath $<) $@
+ell/internal: Makefile
+ $(AM_V_at)$(MKDIR_P) ell
+ $(AM_V_GEN)for f in $(ell_headers) $(ell_sources) ; do \
+ if [ ! -f $$f ] ; then \
+ $(LN_S) -t ell -f $(abs_srcdir)/../ell/$$f ; \
+ fi \
+ done > $@
+
+ell/ell.h: Makefile
+ $(AM_V_at)echo -n > $@
+ $(AM_V_GEN)for f in $(ell_headers) ; do \
+ echo "#include <$$f>" >> $@ ; \
+ done
+
+maintainer-clean-local:
+ -rm -rf ell
+
if COVERAGE
clean-coverage:
@lcov --directory $(top_builddir) --zerocounters
diff --git a/Makefile.mesh b/Makefile.mesh
index 9cc5b5ecf..a9c387e08 100644
--- a/Makefile.mesh
+++ b/Makefile.mesh
@@ -1,4 +1,5 @@
if MESH
+
mesh_sources = mesh/mesh.h mesh/mesh.c \
mesh/net_keys.h mesh/net_keys.c \
mesh/mesh-io.h mesh/mesh-io.c \
@@ -21,26 +22,16 @@ mesh_sources = mesh/mesh.h mesh/mesh.c \
mesh/mesh-defs.h
libexec_PROGRAMS += mesh/meshd
-mesh_meshd_CPPFLAGS = $(AM_CPPFLAGS) $(ELL_CFLAGS)
-
mesh_meshd_SOURCES = $(mesh_sources) mesh/main.c
-
-mesh_meshd_LDADD = src/shared/ecc.lo src/shared/queue.lo src/shared/io-ell.lo \
- src/shared/util.lo src/shared/hci.lo src/shared/mgmt.lo \
- $(DBUS_LIBS) $(ELL_LIBS) -ljson-c
+mesh_meshd_LDADD = src/libshared-ell.la $(ell_ldadd) -ljson-c
+mesh_meshd_DEPENDENCIES = $(ell_dependencies)
noinst_PROGRAMS += mesh/btmesh
-mesh_btmesh_SOURCES = $(mesh_sources) \
- mesh/agent.h \
+mesh_btmesh_SOURCES = $(mesh_sources) mesh/agent.h \
mesh/agent.c \
mesh/btmesh.c
-
-mesh_btmesh_CPPFLAGS = $(AM_CPPFLAGS) $(ELL_CFLAGS)
-
-mesh_btmesh_LDADD = src/shared/ecc.lo src/shared/queue.lo src/shared/io-ell.lo \
- src/shared/util.lo src/shared/hci.lo src/shared/mgmt.lo \
- src/libshared-mainloop.la \
- -lreadline $(ELL_LIBS) -ljson-c
+mesh_btmesh_LDADD = src/libshared-mainloop.la $(ell_ldadd) -lreadline -ljson-c
+mesh_btmesh_DEPENDENCIES = $(ell_dependencies)
endif
diff --git a/Makefile.tools b/Makefile.tools
index 55e769d8c..0de712866 100644
--- a/Makefile.tools
+++ b/Makefile.tools
@@ -469,6 +469,7 @@ if BTPCLIENT
noinst_PROGRAMS += tools/btpclient
tools_btpclient_SOURCES = tools/btpclient.c src/shared/btp.c src/shared/btp.h
-tools_btpclient_CPPFLAGS = $(AM_CPPFLAGS) $(ELL_CFLAGS)
-tools_btpclient_LDADD = $(ELL_LIBS) lib/libbluetooth-internal.la
+tools_btpclient_LDADD = lib/libbluetooth-internal.la \
+ src/libshared-ell.la $(ell_ldadd)
+tools_btpclient_DEPENDENCIES = $(ell_dependencies)
endif
diff --git a/README b/README
index 5da6029e7..1c5c140fb 100644
--- a/README
+++ b/README
@@ -26,6 +26,37 @@ To compile and install run:
make && make install
+Embedded Linux library
+======================
+
+In order to compile mesh support and test client utility the development
+version of Embedded Linux library is required to be present. The development
+repositories can be found here:
+
+ git://git.kernel.org/pub/scm/libs/ell/ell.git
+ https://kernel.googlesource.com/pub/scm/libs/ell/ell.git
+
+The build systems requires that the Embedded Linux library source code
+is available on the same top level directory as the source code:
+
+ .
+ |--- ell
+ | |--- ell
+ | `--- unit
+ `--- bluez
+ |--- src
+ `--- tools
+
+It is not required to build or install Embedded Linux library. The build
+will happen when building the binaries and it will then be linked internally.
+
+When using --enable-external-ell build option, it is not required that the
+Embedded Linux library source code is available in the top level directory.
+
+When neither --enable-mesh nor --enable-btpclient is specified, then this
+part is irrelevant and Embedded Linux library is not required.
+
+
Configuration and options
=========================
diff --git a/bootstrap-configure b/bootstrap-configure
index b14b4553b..cc44ae74f 100755
--- a/bootstrap-configure
+++ b/bootstrap-configure
@@ -24,5 +24,6 @@ fi
--enable-sixaxis \
--enable-midi \
--enable-mesh \
+ --enable-btpclient \
--enable-logger \
--disable-datafiles $*
diff --git a/configure.ac b/configure.ac
index ee4199f4d..f46e38122 100644
--- a/configure.ac
+++ b/configure.ac
@@ -248,13 +248,20 @@ AC_ARG_ENABLE(btpclient, AC_HELP_STRING([--enable-btpclient],
[enable BTP client]), [enable_btpclient=${enableval}])
AM_CONDITIONAL(BTPCLIENT, test "${enable_btpclient}" = "yes")
-if (test "${enable_btpclient}" = "yes" || test "${enable_mesh}" = "yes"); then
- PKG_CHECK_MODULES(ELL, ell >= 0.14, enable_ell=yes,
- AC_MSG_ERROR(ell library >= 0.14 is required))
+AC_ARG_ENABLE([external_ell], AC_HELP_STRING([--enable-external-ell],
+ [enable external Embedded Linux library]),
+ [enable_external_ell=${enableval}])
+if (test "${enable_external_ell}" = "yes"); then
+ PKG_CHECK_MODULES(ELL, ell >= 0.14, dummy=yes,
+ AC_MSG_ERROR(Embedded Linux library >= 0.14 is required))
AC_SUBST(ELL_CFLAGS)
AC_SUBST(ELL_LIBS)
fi
-AM_CONDITIONAL(ELL, test "${enable_ell}" = "yes")
+AM_CONDITIONAL(EXTERNAL_ELL, test "${enable_external_ell}" = "yes" ||
+ (test "${enable_btpclient}" != "yes" &&
+ test "${enable_mesh}" != "yes"))
+AM_CONDITIONAL(LIBSHARED_ELL, test "${enable_btpclient}" = "yes" ||
+ test "${enable_mesh}" = "yes")
AC_ARG_ENABLE(client, AC_HELP_STRING([--disable-client],
[disable command line client]), [enable_client=${enableval}])