1################################################################################
2#
3# bluez5_utils
4#
5################################################################################
6
7# Keep the version and patches in sync with bluez5_utils-headers
8BLUEZ5_UTILS_VERSION = 5.75
9BLUEZ5_UTILS_SOURCE = bluez-$(BLUEZ5_UTILS_VERSION).tar.xz
10BLUEZ5_UTILS_SITE = $(BR2_KERNEL_MIRROR)/linux/bluetooth
11# 0001-configure.ac-Fix-disable-cups.patch
12# 0002-configure.ac-fix-sixaxis-build-without-tools.patch
13BLUEZ5_UTILS_AUTORECONF = YES
14BLUEZ5_UTILS_INSTALL_STAGING = YES
15BLUEZ5_UTILS_LICENSE = GPL-2.0+, LGPL-2.1+
16BLUEZ5_UTILS_LICENSE_FILES = COPYING COPYING.LIB
17BLUEZ5_UTILS_CPE_ID_VENDOR = bluez
18BLUEZ5_UTILS_CPE_ID_PRODUCT = bluez
19
20BLUEZ5_UTILS_DEPENDENCIES = \
21	$(if $(BR2_PACKAGE_BLUEZ5_UTILS_HEADERS),bluez5_utils-headers) \
22	dbus \
23	libglib2
24
25BLUEZ5_UTILS_CONF_OPTS = \
26	--enable-library \
27	--disable-cups \
28	--disable-datafiles \
29	--disable-manpages \
30	--disable-asan \
31	--disable-lsan \
32	--disable-ubsan \
33	--disable-pie \
34	--with-dbusconfdir=/etc
35
36ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_OBEX),y)
37BLUEZ5_UTILS_CONF_OPTS += --enable-obex
38BLUEZ5_UTILS_DEPENDENCIES += libical
39else
40BLUEZ5_UTILS_CONF_OPTS += --disable-obex
41endif
42
43ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_CLIENT),y)
44BLUEZ5_UTILS_CONF_OPTS += --enable-client
45BLUEZ5_UTILS_DEPENDENCIES += readline
46else
47BLUEZ5_UTILS_CONF_OPTS += --disable-client
48endif
49
50ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_MONITOR),y)
51BLUEZ5_UTILS_CONF_OPTS += --enable-monitor
52else
53BLUEZ5_UTILS_CONF_OPTS += --disable-monitor
54endif
55
56ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_TOOLS),y)
57BLUEZ5_UTILS_CONF_OPTS += --enable-tools
58else
59BLUEZ5_UTILS_CONF_OPTS += --disable-tools
60endif
61
62# experimental plugins
63ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_EXPERIMENTAL),y)
64BLUEZ5_UTILS_CONF_OPTS += --enable-experimental
65else
66BLUEZ5_UTILS_CONF_OPTS += --disable-experimental
67endif
68
69# enable audio plugins (a2dp and avrcp)
70ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_AUDIO),y)
71BLUEZ5_UTILS_CONF_OPTS += \
72	--enable-a2dp \
73	--enable-avrcp \
74	--enable-bap \
75	--enable-mcp \
76	--enable-vcp
77else
78BLUEZ5_UTILS_CONF_OPTS += \
79	--disable-a2dp \
80	--disable-avrcp \
81	--disable-bap \
82	--disable-mcp \
83	--disable-vcp
84endif
85
86# enable health plugin
87ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HEALTH),y)
88BLUEZ5_UTILS_CONF_OPTS += --enable-health
89else
90BLUEZ5_UTILS_CONF_OPTS += --disable-health
91endif
92
93# enable hid plugin
94ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HID),y)
95BLUEZ5_UTILS_CONF_OPTS += --enable-hid
96else
97BLUEZ5_UTILS_CONF_OPTS += --disable-hid
98endif
99
100# enable hog plugin
101ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HOG),y)
102BLUEZ5_UTILS_CONF_OPTS += --enable-hog
103else
104BLUEZ5_UTILS_CONF_OPTS += --disable-hog
105endif
106
107# enable mesh profile
108ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_MESH),y)
109BLUEZ5_UTILS_CONF_OPTS += --enable-external-ell --enable-mesh
110BLUEZ5_UTILS_DEPENDENCIES += ell json-c readline
111else
112BLUEZ5_UTILS_CONF_OPTS += --disable-external-ell --disable-mesh
113endif
114
115# enable midi profile
116ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_MIDI),y)
117BLUEZ5_UTILS_CONF_OPTS += --enable-midi
118BLUEZ5_UTILS_DEPENDENCIES += alsa-lib
119else
120BLUEZ5_UTILS_CONF_OPTS += --disable-midi
121endif
122
123# enable network plugin
124ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_NETWORK),y)
125BLUEZ5_UTILS_CONF_OPTS += --enable-network
126else
127BLUEZ5_UTILS_CONF_OPTS += --disable-network
128endif
129
130# enable nfc plugin
131ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_NFC),y)
132BLUEZ5_UTILS_CONF_OPTS += --enable-nfc
133else
134BLUEZ5_UTILS_CONF_OPTS += --disable-nfc
135endif
136
137# enable sap plugin
138ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SAP),y)
139BLUEZ5_UTILS_CONF_OPTS += --enable-sap
140else
141BLUEZ5_UTILS_CONF_OPTS += --disable-sap
142endif
143
144# enable sixaxis plugin
145ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SIXAXIS),y)
146BLUEZ5_UTILS_CONF_OPTS += --enable-sixaxis
147else
148BLUEZ5_UTILS_CONF_OPTS += --disable-sixaxis
149endif
150
151ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED),y)
152# install gatttool (For some reason upstream choose not to do it by default)
153# gattool depends on the client for readline
154ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_CLIENT),y)
155define BLUEZ5_UTILS_INSTALL_GATTTOOL
156	$(INSTALL) -D -m 0755 $(@D)/attrib/gatttool $(TARGET_DIR)/usr/bin/gatttool
157endef
158BLUEZ5_UTILS_POST_INSTALL_TARGET_HOOKS += BLUEZ5_UTILS_INSTALL_GATTTOOL
159endif
160
161# hciattach_bcm43xx defines default firmware path in `/etc/firmware`, but
162# Broadcom firmware blobs are usually located in `/lib/firmware`.
163BLUEZ5_UTILS_CONF_ENV += \
164	CPPFLAGS='$(TARGET_CPPFLAGS) -DFIRMWARE_DIR=\"/lib/firmware\"'
165BLUEZ5_UTILS_CONF_OPTS += --enable-deprecated
166else
167BLUEZ5_UTILS_CONF_OPTS += --disable-deprecated
168endif
169
170# enable test
171ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_TEST),y)
172BLUEZ5_UTILS_CONF_OPTS += --enable-test
173else
174BLUEZ5_UTILS_CONF_OPTS += --disable-test
175endif
176
177# enable hid2hci tool
178ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_TOOLS_HID2HCI),y)
179BLUEZ5_UTILS_CONF_OPTS += --enable-hid2hci
180else
181BLUEZ5_UTILS_CONF_OPTS += --disable-hid2hci
182endif
183
184# use udev if available
185ifeq ($(BR2_PACKAGE_HAS_UDEV),y)
186BLUEZ5_UTILS_CONF_OPTS += --enable-udev
187BLUEZ5_UTILS_DEPENDENCIES += udev
188else
189BLUEZ5_UTILS_CONF_OPTS += --disable-udev
190endif
191
192# integrate with systemd if available
193ifeq ($(BR2_PACKAGE_SYSTEMD),y)
194BLUEZ5_UTILS_CONF_OPTS += --enable-systemd
195BLUEZ5_UTILS_DEPENDENCIES += systemd
196else
197BLUEZ5_UTILS_CONF_OPTS += --disable-systemd
198endif
199
200define BLUEZ5_UTILS_INSTALL_INIT_SYSV
201	$(INSTALL) -m 0755 -D package/bluez5_utils/S40bluetoothd \
202		$(TARGET_DIR)/etc/init.d/S40bluetoothd
203endef
204
205$(eval $(autotools-package))
206