Diff between e4424b2aed4df92139133850a7edc25d35ce2f8d and 9b912ea92537cf9add1e50fac54fd58f80db9c6b

Changed Files

File Additions Deletions Status
Makefile.am +56 -53 modified
Makefile.plugins +0 -1 modified
Makefile.tools +60 -167 modified
android/Makefile.am +20 -66 modified

Full Patch

diff --git a/Makefile.am b/Makefile.am
index 14b4f55..a2e89c7 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -95,11 +95,40 @@ gdbus_libgdbus_internal_la_SOURCES = gdbus/gdbus.h \
 				gdbus/mainloop.c gdbus/watch.c \
 				gdbus/object.c gdbus/client.c gdbus/polkit.c
 
+noinst_LTLIBRARIES += src/libshared-glib.la src/libshared-mainloop.la
+
+shared_sources = src/shared/io.h src/shared/timeout.h \
+			src/shared/queue.h src/shared/queue.c \
+			src/shared/util.h src/shared/util.c \
+			src/shared/mgmt.h src/shared/mgmt.c \
+			src/shared/crypto.h src/shared/crypto.c \
+			src/shared/ringbuf.h src/shared/ringbuf.c \
+			src/shared/tester.h src/shared/tester.c \
+			src/shared/hciemu.h src/shared/hciemu.c \
+			src/shared/hci.h src/shared/hci.c \
+			src/shared/hfp.h src/shared/hfp.c \
+			src/shared/uhid.h src/shared/uhid.c \
+			src/shared/pcap.h src/shared/pcap.c \
+			src/shared/btsnoop.h src/shared/btsnoop.c \
+			src/shared/att-types.h \
+			src/shared/att.h src/shared/att.c \
+			src/shared/gatt-helpers.h src/shared/gatt-helpers.c \
+			src/shared/gatt-client.h src/shared/gatt-client.c \
+			src/shared/gatt-db.h src/shared/gatt-db.c
+
+src_libshared_glib_la_SOURCES = $(shared_sources) \
+				src/shared/io-glib.c \
+				src/shared/timeout-glib.c
+
+src_libshared_mainloop_la_SOURCES = $(shared_sources) \
+				src/shared/io-mainloop.c \
+				src/shared/timeout-mainloop.c \
+				monitor/mainloop.h monitor/mainloop.c
+
 attrib_sources = attrib/att.h attrib/att-database.h attrib/att.c \
 		attrib/gatt.h attrib/gatt.c \
 		attrib/gattrib.h attrib/gattrib.c \
-		attrib/gatt-service.h attrib/gatt-service.c \
-		src/shared/crypto.h src/shared/crypto.c
+		attrib/gatt-service.h attrib/gatt-service.c
 
 btio_sources = btio/btio.h btio/btio.c
 
@@ -151,22 +180,18 @@ src_bluetoothd_SOURCES = $(builtin_sources) \
 			src/gatt.h src/gatt.c \
 			src/device.h src/device.c src/attio.h \
 			src/dbus-common.c src/dbus-common.h \
-			src/eir.h src/eir.c \
-			src/shared/io.h src/shared/io-glib.c \
-			src/shared/timeout.h src/shared/timeout-glib.c \
-			src/shared/queue.h src/shared/queue.c \
-			src/shared/util.h src/shared/util.c \
-			src/shared/mgmt.h src/shared/mgmt.c \
-			src/shared/att-types.h src/shared/att.h src/shared/att.c \
-			src/shared/gatt-helpers.h src/shared/gatt-helpers.c \
-			src/shared/gatt-client.h src/shared/gatt-client.c
-src_bluetoothd_LDADD = lib/libbluetooth-internal.la gdbus/libgdbus-internal.la \
+			src/eir.h src/eir.c
+src_bluetoothd_LDADD = lib/libbluetooth-internal.la \
+			gdbus/libgdbus-internal.la \
+			src/libshared-glib.la \
 			@GLIB_LIBS@ @DBUS_LIBS@ -ldl -lrt
 src_bluetoothd_LDFLAGS = $(AM_LDFLAGS) -Wl,--export-dynamic \
 				-Wl,--version-script=$(srcdir)/src/bluetooth.ver
 
 src_bluetoothd_DEPENDENCIES = lib/libbluetooth-internal.la \
-				gdbus/libgdbus-internal.la src/bluetooth.service
+				gdbus/libgdbus-internal.la \
+				src/libshared-glib.la \
+				src/bluetooth.service
 
 src_bluetoothd_CFLAGS = $(AM_CFLAGS) -DBLUETOOTH_PLUGIN_BUILTIN \
 					-DPLUGINDIR=\""$(build_plugindir)"\"
@@ -245,85 +270,63 @@ unit_test_textfile_LDADD = @GLIB_LIBS@
 unit_test_crc_SOURCES = unit/test-crc.c monitor/crc.h monitor/crc.c
 unit_test_crc_LDADD = @GLIB_LIBS@
 
-unit_test_crypto_SOURCES = unit/test-crypto.c \
-				src/shared/crypto.h src/shared/crypto.c
-unit_test_crypto_LDADD = @GLIB_LIBS@
+unit_test_crypto_SOURCES = unit/test-crypto.c
+unit_test_crypto_LDADD = src/libshared-glib.la @GLIB_LIBS@
 
 unit_tests += unit/test-ringbuf unit/test-queue
 
-unit_test_ringbuf_SOURCES = unit/test-ringbuf.c \
-				src/shared/util.h src/shared/util.c \
-				src/shared/ringbuf.h src/shared/ringbuf.c
-unit_test_ringbuf_LDADD = @GLIB_LIBS@
+unit_test_ringbuf_SOURCES = unit/test-ringbuf.c
+unit_test_ringbuf_LDADD = src/libshared-glib.la @GLIB_LIBS@
 
-unit_test_queue_SOURCES = unit/test-queue.c \
-				src/shared/util.h src/shared/util.c \
-				src/shared/queue.h src/shared/queue.c
-unit_test_queue_LDADD = @GLIB_LIBS@
+unit_test_queue_SOURCES = unit/test-queue.c
+unit_test_queue_LDADD = src/libshared-glib.la @GLIB_LIBS@
 
 unit_tests += unit/test-mgmt
 
-unit_test_mgmt_SOURCES = unit/test-mgmt.c \
-				src/shared/io.h src/shared/io-glib.c \
-				src/shared/queue.h src/shared/queue.c \
-				src/shared/util.h src/shared/util.c \
-				src/shared/mgmt.h src/shared/mgmt.c
-unit_test_mgmt_LDADD = @GLIB_LIBS@
+unit_test_mgmt_SOURCES = unit/test-mgmt.c
+unit_test_mgmt_LDADD = src/libshared-glib.la @GLIB_LIBS@
 
 unit_tests += unit/test-uhid
 
-unit_test_uhid_SOURCES = unit/test-uhid.c \
-				src/shared/uhid.h src/shared/uhid.c \
-				src/shared/io.h src/shared/io-glib.c \
-				src/shared/util.h src/shared/util.c \
-				src/shared/queue.h src/shared/queue.c
-unit_test_uhid_LDADD = @GLIB_LIBS@
+unit_test_uhid_SOURCES = unit/test-uhid.c
+unit_test_uhid_LDADD = src/libshared-glib.la @GLIB_LIBS@
 
 unit_tests += unit/test-sdp
 
 unit_test_sdp_SOURCES = unit/test-sdp.c \
-				src/shared/util.h src/shared/util.c \
 				src/sdpd.h src/sdpd-database.c \
 				src/log.h src/log.c \
 				src/sdpd-service.c src/sdpd-request.c
-unit_test_sdp_LDADD = lib/libbluetooth-internal.la @GLIB_LIBS@
+unit_test_sdp_LDADD = lib/libbluetooth-internal.la \
+				src/libshared-glib.la @GLIB_LIBS@
 
 unit_tests += unit/test-avdtp
 
 unit_test_avdtp_SOURCES = unit/test-avdtp.c \
-				src/shared/util.h src/shared/util.c \
 				src/log.h src/log.c \
 				android/avdtp.c android/avdtp.h
-unit_test_avdtp_LDADD = @GLIB_LIBS@
+unit_test_avdtp_LDADD = src/libshared-glib.la @GLIB_LIBS@
 
 unit_tests += unit/test-avctp
 
 unit_test_avctp_SOURCES = unit/test-avctp.c \
-				src/shared/util.h src/shared/util.c \
 				src/log.h src/log.c \
 				android/avctp.c android/avctp.h
-unit_test_avctp_LDADD = @GLIB_LIBS@
+unit_test_avctp_LDADD = src/libshared-glib.la @GLIB_LIBS@
 
 unit_tests += unit/test-avrcp
 
 unit_test_avrcp_SOURCES = unit/test-avrcp.c \
-				src/shared/util.h src/shared/util.c \
 				src/log.h src/log.c \
 				android/avctp.c android/avctp.h \
 				android/avrcp-lib.c android/avrcp-lib.h
-unit_test_avrcp_LDADD = @GLIB_LIBS@ lib/libbluetooth-internal.la
+unit_test_avrcp_LDADD = lib/libbluetooth-internal.la \
+				src/libshared-glib.la @GLIB_LIBS@
 
 unit_tests += unit/test-hfp
 
-unit_test_hfp_SOURCES = unit/test-hfp.c \
-				src/shared/io.h src/shared/io-glib.c \
-				src/shared/queue.h src/shared/queue.c \
-				src/shared/util.h src/shared/util.c \
-				src/shared/mgmt.h src/shared/mgmt.c \
-				src/shared/ringbuf.h src/shared/ringbuf.c \
-				src/shared/hfp.h src/shared/hfp.c
-
-unit_test_hfp_LDADD = @GLIB_LIBS@
+unit_test_hfp_SOURCES = unit/test-hfp.c
+unit_test_hfp_LDADD = src/libshared-glib.la @GLIB_LIBS@
 
 unit_tests += unit/test-gdbus-client
 
diff --git a/Makefile.plugins b/Makefile.plugins
index 7a02d9f..e615450 100644
--- a/Makefile.plugins
+++ b/Makefile.plugins
@@ -56,7 +56,6 @@ builtin_modules += input
 builtin_sources += profiles/input/manager.c \
 			profiles/input/server.h profiles/input/server.c \
 			profiles/input/device.h profiles/input/device.c \
-			src/shared/uhid.h src/shared/uhid.c \
 			profiles/input/hidp_defs.h
 
 builtin_modules += hog
diff --git a/Makefile.tools b/Makefile.tools
index 4807813..8f744fe 100644
--- a/Makefile.tools
+++ b/Makefile.tools
@@ -14,7 +14,6 @@ if MONITOR
 bin_PROGRAMS += monitor/btmon
 
 monitor_btmon_SOURCES = monitor/main.c monitor/bt.h \
-				monitor/mainloop.h monitor/mainloop.c \
 				monitor/display.h monitor/display.c \
 				monitor/hcidump.h monitor/hcidump.c \
 				monitor/ellisys.h monitor/ellisys.c \
@@ -30,12 +29,9 @@ monitor_btmon_SOURCES = monitor/main.c monitor/bt.h \
 				monitor/uuid.h monitor/uuid.c \
 				monitor/hwdb.h monitor/hwdb.c \
 				monitor/keys.h monitor/keys.c \
-				monitor/analyze.h monitor/analyze.c \
-				src/shared/util.h src/shared/util.c \
-				src/shared/queue.h src/shared/queue.c \
-				src/shared/crypto.h src/shared/crypto.c \
-				src/shared/btsnoop.h src/shared/btsnoop.c
-monitor_btmon_LDADD = lib/libbluetooth-internal.la @UDEV_LIBS@
+				monitor/analyze.h monitor/analyze.c
+monitor_btmon_LDADD = lib/libbluetooth-internal.la \
+				src/libshared-mainloop.la @UDEV_LIBS@
 endif
 
 if EXPERIMENTAL
@@ -46,11 +42,6 @@ noinst_PROGRAMS += emulator/btvirt emulator/b1ee emulator/hfp tools/3dsp \
 					tools/rfcomm-tester
 
 emulator_btvirt_SOURCES = emulator/main.c monitor/bt.h \
-				monitor/mainloop.h monitor/mainloop.c \
-				src/shared/timeout.h \
-				src/shared/timeout-mainloop.c \
-				src/shared/util.h src/shared/util.c \
-				src/shared/crypto.h src/shared/crypto.c \
 				emulator/serial.h emulator/serial.c \
 				emulator/server.h emulator/server.c \
 				emulator/vhci.h emulator/vhci.c \
@@ -59,120 +50,63 @@ emulator_btvirt_SOURCES = emulator/main.c monitor/bt.h \
 				emulator/smp.c \
 				emulator/amp.h emulator/amp.c \
 				emulator/le.h emulator/le.c
-emulator_btvirt_LDADD = lib/libbluetooth-internal.la
-
-emulator_b1ee_SOURCES = emulator/b1ee.c monitor/mainloop.h monitor/mainloop.c
-
-emulator_hfp_SOURCES = emulator/hfp.c \
-				monitor/mainloop.h monitor/mainloop.c \
-				src/shared/io.h src/shared/io-mainloop.c \
-				src/shared/util.h src/shared/util.c \
-				src/shared/queue.h src/shared/queue.c \
-				src/shared/ringbuf.h src/shared/ringbuf.c \
-				src/shared/hfp.h src/shared/hfp.c
-
-tools_3dsp_SOURCES = tools/3dsp.c monitor/bt.h \
-				monitor/mainloop.h monitor/mainloop.c \
-				src/shared/io.h src/shared/io-mainloop.c \
-				src/shared/timeout.h \
-				src/shared/timeout-mainloop.c \
-				src/shared/hci.h src/shared/hci.c \
-				src/shared/util.h src/shared/util.c \
-				src/shared/queue.h src/shared/queue.c \
-				src/shared/ringbuf.h src/shared/ringbuf.c
+emulator_btvirt_LDADD = lib/libbluetooth-internal.la src/libshared-mainloop.la
+
+emulator_b1ee_SOURCES = emulator/b1ee.c
+emulator_b1ee_LDADD = src/libshared-mainloop.la
+
+emulator_hfp_SOURCES = emulator/hfp.c
+emulator_hfp_LDADD = src/libshared-mainloop.la
+
+tools_3dsp_SOURCES = tools/3dsp.c monitor/bt.h
+tools_3dsp_LDADD = src/libshared-mainloop.la
 
 tools_mgmt_tester_SOURCES = tools/mgmt-tester.c monitor/bt.h \
 				emulator/btdev.h emulator/btdev.c \
 				emulator/bthost.h emulator/bthost.c \
-				emulator/smp.c \
-				src/shared/crypto.h src/shared/crypto.c \
-				src/shared/io.h src/shared/io-glib.c \
-				src/shared/queue.h src/shared/queue.c \
-				src/shared/util.h src/shared/util.c \
-				src/shared/mgmt.h src/shared/mgmt.c \
-				src/shared/hciemu.h src/shared/hciemu.c \
-				src/shared/tester.h src/shared/tester.c \
-				src/shared/timeout.h src/shared/timeout-glib.c
-tools_mgmt_tester_LDADD = lib/libbluetooth-internal.la @GLIB_LIBS@
+				emulator/smp.c
+tools_mgmt_tester_LDADD = lib/libbluetooth-internal.la \
+				src/libshared-glib.la @GLIB_LIBS@
 
 tools_l2cap_tester_SOURCES = tools/l2cap-tester.c monitor/bt.h \
 				emulator/btdev.h emulator/btdev.c \
 				emulator/bthost.h emulator/bthost.c \
-				emulator/smp.c \
-				src/shared/crypto.h src/shared/crypto.c \
-				src/shared/io.h src/shared/io-glib.c \
-				src/shared/queue.h src/shared/queue.c \
-				src/shared/util.h src/shared/util.c \
-				src/shared/mgmt.h src/shared/mgmt.c \
-				src/shared/hciemu.h src/shared/hciemu.c \
-				src/shared/tester.h src/shared/tester.c \
-				src/shared/timeout.h src/shared/timeout-glib.c
-tools_l2cap_tester_LDADD = lib/libbluetooth-internal.la @GLIB_LIBS@
+				emulator/smp.c
+tools_l2cap_tester_LDADD = lib/libbluetooth-internal.la \
+				src/libshared-glib.la @GLIB_LIBS@
 
 tools_rfcomm_tester_SOURCES = tools/rfcomm-tester.c monitor/bt.h \
 				emulator/btdev.h emulator/btdev.c \
 				emulator/bthost.h emulator/bthost.c \
-				emulator/smp.c \
-				src/shared/crypto.h src/shared/crypto.c \
-				src/shared/io.h src/shared/io-glib.c \
-				src/shared/queue.h src/shared/queue.c \
-				src/shared/util.h src/shared/util.c \
-				src/shared/mgmt.h src/shared/mgmt.c \
-				src/shared/hciemu.h src/shared/hciemu.c \
-				src/shared/tester.h src/shared/tester.c \
-				src/shared/timeout.h src/shared/timeout-glib.c
-tools_rfcomm_tester_LDADD = lib/libbluetooth-internal.la @GLIB_LIBS@
+				emulator/smp.c
+tools_rfcomm_tester_LDADD = lib/libbluetooth-internal.la \
+				src/libshared-glib.la @GLIB_LIBS@
 
 tools_smp_tester_SOURCES = tools/smp-tester.c monitor/bt.h \
 				emulator/btdev.h emulator/btdev.c \
 				emulator/bthost.h emulator/bthost.c \
-				emulator/smp.c \
-				src/shared/crypto.h src/shared/crypto.c \
-				src/shared/io.h src/shared/io-glib.c \
-				src/shared/queue.h src/shared/queue.c \
-				src/shared/util.h src/shared/util.c \
-				src/shared/mgmt.h src/shared/mgmt.c \
-				src/shared/hciemu.h src/shared/hciemu.c \
-				src/shared/tester.h src/shared/tester.c \
-				src/shared/timeout.h src/shared/timeout-glib.c
-tools_smp_tester_LDADD = lib/libbluetooth-internal.la @GLIB_LIBS@
+				emulator/smp.c
+tools_smp_tester_LDADD = lib/libbluetooth-internal.la \
+				src/libshared-glib.la @GLIB_LIBS@
 
 tools_gap_tester_SOURCES = tools/gap-tester.c monitor/bt.h \
 				emulator/btdev.h emulator/btdev.c \
 				emulator/bthost.h emulator/bthost.c \
-				emulator/smp.c \
-				src/shared/crypto.h src/shared/crypto.c \
-				src/shared/util.h src/shared/util.c \
-				src/shared/queue.h src/shared/queue.c \
-				src/shared/hciemu.h src/shared/hciemu.c \
-				src/shared/tester.h src/shared/tester.c \
-				src/shared/timeout.h src/shared/timeout-glib.c
+				emulator/smp.c
 tools_gap_tester_LDADD =  lib/libbluetooth-internal.la \
 				gdbus/libgdbus-internal.la \
+				src/libshared-glib.la \
 				@GLIB_LIBS@ @DBUS_LIBS@
 
 tools_sco_tester_SOURCES = tools/sco-tester.c monitor/bt.h \
 				emulator/btdev.h emulator/btdev.c \
 				emulator/bthost.h emulator/bthost.c \
-				emulator/smp.c \
-				src/shared/crypto.h src/shared/crypto.c \
-				src/shared/io.h src/shared/io-glib.c \
-				src/shared/queue.h src/shared/queue.c \
-				src/shared/util.h src/shared/util.c \
-				src/shared/mgmt.h src/shared/mgmt.c \
-				src/shared/hciemu.h src/shared/hciemu.c \
-				src/shared/tester.h src/shared/tester.c \
-				src/shared/timeout.h src/shared/timeout-glib.c
-tools_sco_tester_LDADD = lib/libbluetooth-internal.la @GLIB_LIBS@
-
-tools_hci_tester_SOURCES = tools/hci-tester.c monitor/bt.h \
-				src/shared/io.h src/shared/io-glib.c \
-				src/shared/hci.h src/shared/hci.c \
-				src/shared/util.h src/shared/util.c \
-				src/shared/queue.h src/shared/queue.c \
-				src/shared/ringbuf.h src/shared/ringbuf.c \
-				src/shared/tester.h src/shared/tester.c
-tools_hci_tester_LDADD = @GLIB_LIBS@
+				emulator/smp.c
+tools_sco_tester_LDADD = lib/libbluetooth-internal.la \
+				src/libshared-glib.la @GLIB_LIBS@
+
+tools_hci_tester_SOURCES = tools/hci-tester.c monitor/bt.h
+tools_hci_tester_LDADD = src/libshared-glib.la @GLIB_LIBS@
 endif
 
 if TOOLS
@@ -243,13 +177,8 @@ tools_bccmd_SOURCES = tools/bccmd.c tools/csr.h tools/csr.c \
 			tools/csr_bcsp.c tools/ubcsp.h tools/ubcsp.c
 tools_bccmd_LDADD = lib/libbluetooth-internal.la
 
-tools_bluemoon_SOURCES = tools/bluemoon.c monitor/bt.h \
-				monitor/mainloop.h monitor/mainloop.c \
-				src/shared/io.h src/shared/io-mainloop.c \
-				src/shared/hci.h src/shared/hci.c \
-				src/shared/util.h src/shared/util.c \
-				src/shared/queue.h src/shared/queue.c \
-				src/shared/ringbuf.h src/shared/ringbuf.c
+tools_bluemoon_SOURCES = tools/bluemoon.c monitor/bt.h
+tools_bluemoon_LDADD = src/libshared-mainloop.la
 
 tools_mpris_proxy_SOURCES = tools/mpris-proxy.c
 tools_mpris_proxy_LDADD = gdbus/libgdbus-internal.la @GLIB_LIBS@ @DBUS_LIBS@
@@ -301,72 +230,37 @@ tools_hwdb_LDADD = lib/libbluetooth-internal.la
 
 tools_hcieventmask_LDADD = lib/libbluetooth-internal.la
 
-tools_btmgmt_SOURCES = tools/btmgmt.c src/uuid-helper.c \
-				monitor/mainloop.h monitor/mainloop.c \
-				src/shared/io.h src/shared/io-mainloop.c \
-				src/shared/queue.h src/shared/queue.c \
-				src/shared/util.h src/shared/util.c \
-				src/shared/mgmt.h src/shared/mgmt.c
-tools_btmgmt_LDADD = lib/libbluetooth-internal.la
-
-tools_btinfo_SOURCES = tools/btinfo.c monitor/bt.h \
-				monitor/mainloop.h monitor/mainloop.c \
-				src/shared/io.h src/shared/io-mainloop.c \
-				src/shared/timeout.h \
-				src/shared/timeout-mainloop.c \
-				src/shared/hci.h src/shared/hci.c \
-				src/shared/util.h src/shared/util.c \
-				src/shared/queue.h src/shared/queue.c \
-				src/shared/ringbuf.h src/shared/ringbuf.c
-
-tools_btattach_SOURCES = tools/btattach.c monitor/bt.h \
-				monitor/mainloop.h monitor/mainloop.c \
-				src/shared/io.h src/shared/io-mainloop.c \
-				src/shared/timeout.h \
-				src/shared/timeout-mainloop.c \
-				src/shared/hci.h src/shared/hci.c \
-				src/shared/util.h src/shared/util.c \
-				src/shared/queue.h src/shared/queue.c \
-				src/shared/ringbuf.h src/shared/ringbuf.c
-
-tools_btsnoop_SOURCES = tools/btsnoop.c \
-				src/shared/pcap.h src/shared/pcap.c \
-				src/shared/btsnoop.h src/shared/btsnoop.c
-
-tools_btproxy_SOURCES = tools/btproxy.c monitor/bt.h \
-				monitor/mainloop.h monitor/mainloop.c \
-				src/shared/util.h src/shared/util.c
+tools_btmgmt_SOURCES = tools/btmgmt.c src/uuid-helper.c
+tools_btmgmt_LDADD = lib/libbluetooth-internal.la src/libshared-mainloop.la
+
+tools_btinfo_SOURCES = tools/btinfo.c monitor/bt.h
+tools_btinfo_LDADD = src/libshared-mainloop.la
+
+tools_btattach_SOURCES = tools/btattach.c monitor/bt.h
+tools_btattach_LDADD = src/libshared-mainloop.la
+
+tools_btsnoop_SOURCES = tools/btsnoop.c
+tools_btsnoop_LDADD = src/libshared-mainloop.la
+
+tools_btproxy_SOURCES = tools/btproxy.c monitor/bt.h
+tools_btproxy_LDADD = src/libshared-mainloop.la
 
 tools_btiotest_SOURCES = tools/btiotest.c btio/btio.h btio/btio.c
 tools_btiotest_LDADD = lib/libbluetooth-internal.la @GLIB_LIBS@
 
-tools_cltest_SOURCES = tools/cltest.c monitor/mainloop.h monitor/mainloop.c
-tools_cltest_LDADD = lib/libbluetooth-internal.la
+tools_cltest_SOURCES = tools/cltest.c
+tools_cltest_LDADD = lib/libbluetooth-internal.la src/libshared-mainloop.la
 
 tools_seq2bseq_SOURCES = tools/seq2bseq.c
 
 tools_hex2hcd_SOURCES = tools/hex2hcd.c
 
-tools_ibeacon_SOURCES = tools/ibeacon.c monitor/bt.h \
-				monitor/mainloop.h monitor/mainloop.c \
-				src/shared/io.h src/shared/io-mainloop.c \
-				src/shared/timeout.h \
-				src/shared/timeout-mainloop.c \
-				src/shared/hci.h src/shared/hci.c \
-				src/shared/util.h src/shared/util.c \
-				src/shared/queue.h src/shared/queue.c \
-				src/shared/ringbuf.h src/shared/ringbuf.c
-
-tools_btgatt_client_SOURCES = tools/btgatt-client.c src/uuid-helper.c \
-				monitor/mainloop.h monitor/mainloop.c \
-				src/shared/io.h src/shared/io-mainloop.c \
-				src/shared/queue.h src/shared/queue.c \
-				src/shared/util.h src/shared/util.c \
-				src/shared/timeout.h src/shared/timeout-mainloop.c \
-				src/shared/att-types.h src/shared/att.h src/shared/att.c \
-				src/shared/gatt-helpers.h src/shared/gatt-helpers.c \
-				src/shared/gatt-client.h src/shared/gatt-client.c
-tools_btgatt_client_LDADD = lib/libbluetooth-internal.la
+tools_ibeacon_SOURCES = tools/ibeacon.c monitor/bt.h
+tools_ibeacon_LDADD = src/libshared-mainloop.la
+
+tools_btgatt_client_SOURCES = tools/btgatt-client.c src/uuid-helper.c
+tools_btgatt_client_LDADD = lib/libbluetooth-internal.la \
+				src/libshared-mainloop.la
 
 EXTRA_DIST += tools/bdaddr.1
 endif
@@ -380,10 +274,9 @@ attrib_gatttool_SOURCES = attrib/gatttool.c attrib/att.c attrib/gatt.c \
 				attrib/gattrib.c btio/btio.c \
 				attrib/gatttool.h attrib/interactive.c \
 				attrib/utils.c src/log.c client/display.c \
-				client/display.h \
-				src/shared/crypto.h src/shared/crypto.c
-
-attrib_gatttool_LDADD = lib/libbluetooth-internal.la @GLIB_LIBS@ -lreadline
+				client/display.h
+attrib_gatttool_LDADD = lib/libbluetooth-internal.la \
+			src/libshared-glib.la @GLIB_LIBS@ -lreadline
 
 tools_obex_client_tool_SOURCES = $(gobex_sources) $(btio_sources) \
 						tools/obex-client-tool.c
diff --git a/android/Makefile.am b/android/Makefile.am
index 59caf61..214082c 100644
--- a/android/Makefile.am
+++ b/android/Makefile.am
@@ -6,14 +6,13 @@ android_plugindir = $(abs_top_srcdir)/android/.libs
 
 noinst_PROGRAMS += android/system-emulator
 
-android_system_emulator_SOURCES = android/system-emulator.c \
-					monitor/mainloop.h monitor/mainloop.c
+android_system_emulator_SOURCES = android/system-emulator.c
+android_system_emulator_LDADD = src/libshared-mainloop.la
 
 noinst_PROGRAMS += android/bluetoothd-snoop
 
-android_bluetoothd_snoop_SOURCES = android/bluetoothd-snoop.c \
-				monitor/mainloop.h monitor/mainloop.c \
-				src/shared/btsnoop.h src/shared/btsnoop.c
+android_bluetoothd_snoop_SOURCES = android/bluetoothd-snoop.c
+android_bluetoothd_snoop_LDADD = src/libshared-mainloop.la
 
 noinst_PROGRAMS += android/bluetoothd
 
@@ -27,15 +26,6 @@ android_bluetoothd_SOURCES = android/main.c \
 				src/sdpd-service.c src/sdpd-request.c \
 				src/uuid-helper.h src/uuid-helper.c \
 				src/eir.h src/eir.c \
-				src/shared/io.h src/shared/io-glib.c \
-				src/shared/queue.h src/shared/queue.c \
-				src/shared/util.h src/shared/util.c \
-				src/shared/mgmt.h src/shared/mgmt.c \
-				src/shared/ringbuf.h src/shared/ringbuf.c \
-				src/shared/hfp.h src/shared/hfp.c \
-				src/shared/gatt-db.h src/shared/gatt-db.c \
-				src/shared/crypto.h src/shared/crypto.c \
-				src/shared/uhid.h src/shared/uhid.c \
 				android/bluetooth.h android/bluetooth.c \
 				android/hidhost.h android/hidhost.c \
 				android/scpp.h android/scpp.c \
@@ -62,8 +52,8 @@ android_bluetoothd_SOURCES = android/main.c \
 				btio/btio.h btio/btio.c \
 				src/sdp-client.h src/sdp-client.c \
 				profiles/network/bnep.h profiles/network/bnep.c
-
-android_bluetoothd_LDADD = lib/libbluetooth-internal.la @GLIB_LIBS@
+android_bluetoothd_LDADD = lib/libbluetooth-internal.la \
+				src/libshared-glib.la @GLIB_LIBS@
 
 plugin_LTLIBRARIES += android/bluetooth.default.la
 
@@ -96,7 +86,6 @@ android_bluetooth_default_la_SOURCES = android/hal.h android/hal-bluetooth.c \
 					android/hal-log.h \
 					android/hal-ipc.h android/hal-ipc.c \
 					android/hal-utils.h android/hal-utils.c
-
 android_bluetooth_default_la_CFLAGS = $(AM_CFLAGS) -I$(srcdir)/android
 android_bluetooth_default_la_LDFLAGS = $(AM_LDFLAGS) -module -avoid-version \
 					-no-undefined
@@ -107,9 +96,7 @@ android_mcaptest_SOURCES = android/mcaptest.c \
 				src/log.h src/log.c \
 				btio/btio.h btio/btio.c \
 				android/mcap-lib.h android/mcap-lib.c
-
 android_mcaptest_CFLAGS = $(AM_CFLAGS)
-
 android_mcaptest_LDADD = lib/libbluetooth-internal.la @GLIB_LIBS@
 
 noinst_PROGRAMS += android/avdtptest
@@ -118,9 +105,7 @@ android_avdtptest_SOURCES = android/avdtptest.c \
 				src/log.h src/log.c \
 				btio/btio.h btio/btio.c \
 				android/avdtp.h android/avdtp.c
-
 android_avdtptest_CFLAGS = $(AM_CFLAGS)
-
 android_avdtptest_LDADD = lib/libbluetooth-internal.la @GLIB_LIBS@
 
 noinst_PROGRAMS += android/haltest
@@ -147,10 +132,8 @@ android_haltest_SOURCES = android/client/haltest.c \
 				android/client/if-sco.c \
 				android/hardware/hardware.c \
 				android/hal-utils.h android/hal-utils.c
-
 android_haltest_CFLAGS = $(AM_CFLAGS) -I$(srcdir)/android \
 				-DPLUGINDIR=\""$(android_plugindir)"\"
-
 android_haltest_LDFLAGS = -pthread -ldl -lm
 
 noinst_PROGRAMS += android/android-tester
@@ -158,14 +141,6 @@ noinst_PROGRAMS += android/android-tester
 android_android_tester_SOURCES = emulator/btdev.h emulator/btdev.c \
 				emulator/bthost.h emulator/bthost.c \
 				emulator/smp.c \
-				src/shared/crypto.h src/shared/crypto.c \
-				src/shared/io.h src/shared/io-glib.c \
-				src/shared/queue.h src/shared/queue.c \
-				src/shared/util.h src/shared/util.c \
-				src/shared/mgmt.h src/shared/mgmt.c \
-				src/shared/hciemu.h src/shared/hciemu.c \
-				src/shared/tester.h src/shared/tester.c \
-				src/shared/timeout.h src/shared/timeout-glib.c \
 				monitor/rfcomm.h \
 				android/hardware/hardware.c \
 				android/tester-bluetooth.c \
@@ -177,12 +152,10 @@ android_android_tester_SOURCES = emulator/btdev.h emulator/btdev.c \
 				android/tester-avrcp.c \
 				android/tester-gatt.c \
 				android/tester-main.h android/tester-main.c
-
 android_android_tester_CFLAGS = $(AM_CFLAGS) -I$(srcdir)/android \
 				-DPLUGINDIR=\""$(android_plugindir)"\"
-
-android_android_tester_LDADD = lib/libbluetooth-internal.la @GLIB_LIBS@
-
+android_android_tester_LDADD = lib/libbluetooth-internal.la \
+				src/libshared-glib.la @GLIB_LIBS@
 android_android_tester_LDFLAGS = -pthread -ldl
 
 noinst_PROGRAMS += android/ipc-tester
@@ -190,20 +163,13 @@ noinst_PROGRAMS += android/ipc-tester
 android_ipc_tester_SOURCES = emulator/btdev.h emulator/btdev.c \
 				emulator/bthost.h emulator/bthost.c \
 				emulator/smp.c \
-				src/shared/crypto.h src/shared/crypto.c \
-				src/shared/io.h src/shared/io-glib.c \
-				src/shared/queue.h src/shared/queue.c \
-				src/shared/util.h src/shared/util.c \
-				src/shared/mgmt.h src/shared/mgmt.c \
-				src/shared/hciemu.h src/shared/hciemu.c \
-				src/shared/tester.h src/shared/tester.c \
-				src/shared/timeout.h src/shared/timeout-glib.c \
 				android/hal-utils.h android/hal-utils.c \
 				android/ipc-common.h android/ipc-tester.c
-
 android_ipc_tester_CFLAGS = $(AM_CFLAGS) -I$(srcdir)/android
+android_ipc_tester_LDADD = lib/libbluetooth-internal.la \
+				src/libshared-glib.la @GLIB_LIBS@
 
-android_ipc_tester_LDADD = lib/libbluetooth-internal.la @GLIB_LIBS@
+plugin_LTLIBRARIES += android/audio.a2dp.default.la
 
 android_audio_a2dp_default_la_SOURCES = android/audio-msg.h \
 					android/hal-msg.h \
@@ -214,9 +180,14 @@ android_audio_a2dp_default_la_SOURCES = android/audio-msg.h \
 					android/hardware/audio.h \
 					android/hardware/audio_effect.h \
 					android/hardware/hardware.h \
-					android/system/audio.h \
-					src/shared/queue.h \
-					src/shared/queue.c
+					android/system/audio.h
+android_audio_a2dp_default_la_CFLAGS = $(AM_CFLAGS) -I$(srcdir)/android \
+					@SBC_CFLAGS@
+android_audio_a2dp_default_la_LIBADD = src/libshared-mainloop.la @SBC_LIBS@
+android_audio_a2dp_default_la_LDFLAGS = $(AM_LDFLAGS) -module -avoid-version \
+					-no-undefined -pthread -lrt
+
+plugin_LTLIBRARIES += android/audio.sco.default.la
 
 android_audio_sco_default_la_SOURCES = android/hal-log.h \
 					android/sco-msg.h \
@@ -227,34 +198,17 @@ android_audio_sco_default_la_SOURCES = android/hal-log.h \
 					android/audio_utils/resampler.c \
 					android/audio_utils/resampler.h \
 					android/system/audio.h
-
 android_audio_sco_default_la_CFLAGS = $(AM_CFLAGS) -I$(srcdir)/android
-
 android_audio_sco_default_la_LIBADD = @SPEEXDSP_LIBS@
-
 android_audio_sco_default_la_LDFLAGS = $(AM_LDFLAGS) -module -avoid-version \
 					-no-undefined -lrt
-
-plugin_LTLIBRARIES += android/audio.sco.default.la
-
 unit_tests += android/test-ipc
 
 android_test_ipc_SOURCES = android/test-ipc.c \
-				src/shared/util.h src/shared/util.c \
 				src/log.h src/log.c \
 				android/ipc-common.h \
 				android/ipc.c android/ipc.h
-android_test_ipc_LDADD = @GLIB_LIBS@
-
-plugin_LTLIBRARIES += android/audio.a2dp.default.la
-
-android_audio_a2dp_default_la_CFLAGS = $(AM_CFLAGS) -I$(srcdir)/android \
-					@SBC_CFLAGS@
-
-android_audio_a2dp_default_la_LIBADD = @SBC_LIBS@
-
-android_audio_a2dp_default_la_LDFLAGS = $(AM_LDFLAGS) -module -avoid-version \
-					-no-undefined -pthread -lrt
+android_test_ipc_LDADD = src/libshared-glib.la @GLIB_LIBS@
 
 endif