1 # Do not create provides from emulator .so files because the main package
2 # should anchor any reverse-dependencies
3 %global __provides_exclude_from ^(.*\\.emulator)$
6 %define _dumpdir /opt/etc/dump.d/module.d
7 %define _varlibdir /opt/var/lib
10 Summary: Bluetooth framework for BlueZ and Obexd. This package is Bluetooth framework based on BlueZ and Obexd stack.
13 Group: Network & Connectivity/Bluetooth
15 Source0: %{name}-%{version}.tar.gz
16 Source1001: bluetooth-frwk.manifest
18 Requires: bluetooth-tools
20 %define bt_bluez_hal ENABLED
21 %define bt_gatt_client_fd DISABLED
23 BuildRequires: pkgconfig(aul)
24 BuildRequires: pkgconfig(dlog)
25 BuildRequires: pkgconfig(glib-2.0)
26 BuildRequires: pkgconfig(gio-2.0)
27 BuildRequires: pkgconfig(gio-unix-2.0)
28 BuildRequires: pkgconfig(syspopup-caller)
29 BuildRequires: pkgconfig(vconf)
30 BuildRequires: pkgconfig(libxml-2.0)
31 BuildRequires: pkgconfig(capi-network-connection)
32 BuildRequires: pkgconfig(alarm-service)
33 BuildRequires: pkgconfig(capi-content-mime-type)
34 BuildRequires: pkgconfig(eventsystem)
35 BuildRequires: pkgconfig(libsoup-2.4)
36 BuildRequires: pkgconfig(capi-network-tethering)
38 BuildRequires: pkgconfig(cynara-client)
39 BuildRequires: pkgconfig(cynara-creds-gdbus)
40 BuildRequires: pkgconfig(libtzplatform-config)
41 BuildRequires: pkgconfig(storage)
42 BuildRequires: pkgconfig(capi-system-info)
43 BuildRequires: pkgconfig(capi-appfw-app-control)
44 BuildRequires: pkgconfig(gmock)
46 Requires(post): /usr/bin/vconftool
47 Requires(post): /sbin/ldconfig
48 Requires(postun): /sbin/ldconfig
51 Bluetooth framework for BlueZ and Obexd. This package is Bluetooth framework based on BlueZ and Obexd stack.
52 This package contains API set for BT GAP, BT SDP, and BT RFCOMM.
54 %package profile_common
55 Summary: bluetooth-frwk service and conf files for common profile
56 Requires: %{name} = %{version}-%{release}
57 Conflicts: %{name}-profile_mobile
58 Conflicts: %{name}-profile_wearable
59 Conflicts: %{name}-profile_tv
60 Conflicts: %{name}-profile_ivi
61 %description profile_common
62 Bluetooth framework configuration and service files for Tizen common profile
64 %package profile_mobile
65 Summary: bluetooth-frwk service and conf files for mobile profile
66 Requires: %{name} = %{version}-%{release}
67 Conflicts: %{name}-profile_common
68 Conflicts: %{name}-profile_wearable
69 Conflicts: %{name}-profile_tv
70 Conflicts: %{name}-profile_ivi
71 %description profile_mobile
72 Bluetooth framework configuration and service files for Tizen mobile profile
75 %ifarch %{ix86} || %{arm}
76 %package extension-TM1
77 Summary: bluetooth-frwk service and conf files for mobile TM1
78 Requires: %{name}-profile_mobile = %{version}-%{release}
79 %description extension-TM1
80 Bluetooth framework configuration and service files for Tizen mobile TM1
83 %package profile_wearable
84 Summary: bluetooth-frwk service and conf files for wearable profile
85 Requires: %{name} = %{version}-%{release}
86 Conflicts: %{name}-profile_mobile
87 Conflicts: %{name}-profile_common
88 Conflicts: %{name}-profile_tv
89 Conflicts: %{name}-profile_ivi
90 %description profile_wearable
91 Bluetooth framework configuration and service files for Tizen wearable profile
94 Summary: bluetooth-frwk service and conf files for tv profile
95 Requires: %{name} = %{version}-%{release}
96 Conflicts: %{name}-profile_mobile
97 Conflicts: %{name}-profile_wearable
98 Conflicts: %{name}-profile_common
99 Conflicts: %{name}-profile_ivi
100 %description profile_tv
101 Bluetooth framework configuration and service files for Tizen tv profile
104 Summary: bluetooth-frwk service and conf files for ivi profile
105 Requires: %{name} = %{version}-%{release}
106 Conflicts: %{name}-profile_mobile
107 Conflicts: %{name}-profile_wearable
108 Conflicts: %{name}-profile_tv
109 Conflicts: %{name}-profile_common
110 %description profile_ivi
111 Bluetooth framework configuration and service files for Tizen ivi profile
113 %ifarch %{ix86} x86_64
114 %package extension-emulator
115 Summary: bluetooth-frwk service and conf files for emulator
116 Requires: %{name} = %{version}-%{release}
117 %description extension-emulator
118 bluetooth-frwk service and conf files for emulator
119 %endif // ifarch %{ix86} x86_64
122 Summary: Bluetooth framework for BlueZ and Obexd
123 Group: Development/Libraries
124 Requires: %{name} = %{version}-%{release}
127 This package is development files for Bluetooth framework based on BlueZ and Obexd stack.
128 This package contains API set for BT GAP, BT SDP, and BT RFCOMM.
131 Summary: Bluetooth Service daemon
132 Group: Network & Connectivity/Bluetooth
133 Requires: %{name} = %{version}-%{release}
136 This package is Bluetooth Service daemon to manage BT services.
139 Summary: Bluetooth HTTP Proxy Service daemon
140 Group: Network & Connectivity/Bluetooth
141 Requires: %{name} = %{version}-%{release}
143 %description httpproxy
144 This package is Bluetooth HTTP Proxy Service daemon
147 Summary: Bluetooth OTP Service daemon
148 Group: Network & Connectivity/Bluetooth
149 Requires: %{name} = %{version}-%{release}
152 This package is Bluetooth OTP Service daemon
155 Summary: Bluetooth Core daemon
156 Group: Network & Connectivity/Bluetooth
157 Requires: %{name} = %{version}-%{release}
160 This package is Bluetooth core daemon to manage activation / deactivation.
163 Summary: Bluetooth test application
164 Group: Network & Connectivity/Bluetooth
165 Requires: %{name} = %{version}-%{release}
168 This package is Bluetooth test application.
171 Summary: Bluetooth OAL
172 Group: Network & Connectivity/Bluetooth
173 Requires: %{name} = %{version}-%{release}
176 This package is BT stack common interface.
178 %package plugin-headed
179 Summary: Bluetooth plugin Headed
180 Group: Network & Connectivity/Bluetooth
181 Requires: %{name} = %{version}-%{release}
183 %description plugin-headed
184 This package is Bluetooth plugin to manage UI and syspopup
186 %package -n bluetooth-haltests
187 Summary: HAL Test package for bluetooth OAL
189 Requires: %{name} = %{version}-%{release}
191 %description -n bluetooth-haltests
192 This package is C-API test application.
200 export CFLAGS="$CFLAGS -DTIZEN_DEBUG_ENABLE"
201 export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_OBEX"
202 export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_PAN_NAP"
203 export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_IPSP"
204 export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE"
205 export FFLAGS="$FFLAGS -DTIZEN_DEBUG_ENABLE"
206 export CFLAGS="$CFLAGS -DTIZEN_GATT_CLIENT"
208 %define _servicefile packaging/bluetooth-frwk-common.service
209 %define _servicedir starter.target.wants
211 %if "%{?profile}" == "mobile"
212 export CFLAGS="$CFLAGS -DTIZEN_FEATURE_NETWORK_TETHERING_ENABLE -DTIZEN_FEATURE_FLIGHTMODE_ENABLED -DTIZEN_PROFILE_MOBILE -DTIZEN_FEATURE_TELEPHONY_ENABLED"
213 %if "%{?tizen_target_name}" == "TM1"
214 %define _servicefile packaging/bluetooth-frwk-mobile-sprd.service
216 %define _servicefile packaging/bluetooth-frwk-mobile.service
218 %define _servicedir multi-user.target.wants
221 %if "%{?profile}" == "wearable"
222 export CFLAGS="$CFLAGS -DTIZEN_PROFILE_WEARABLE -DTIZEN_FEATURE_FLIGHTMODE_ENABLED"
223 %define _servicefile packaging/bluetooth-frwk-wearable.service
224 %define _servicedir multi-user.target.wants
227 %if "%{?profile}" == "tv"
228 export CFLAGS="$CFLAGS -DUSB_BLUETOOTH -DTIZEN_TV -DAUTO_ACCEPT"
229 %define _servicefile packaging/bluetooth-frwk-tv.service
230 %define _servicedir multi-user.target.wants
233 %if "%{?profile}" == "ivi"
234 export CFLAGS="$CFLAGS -DTIZEN_PROFILE_IVI"
235 %define _servicefile packaging/bluetooth-frwk-wearable.service
236 %define _servicedir multi-user.target.wants
240 #export CFLAGS="$CFLAGS -Wall -g -fvisibility=hidden -fPIC"
241 export CFLAGS="$CFLAGS -fpie"
242 export CFLAGS+=" -DARCH64"
243 export CXXFLAGS+=" -DARCH64"
244 export FFLAGS+=" -DARCH64"
246 export CFLAGS="$CFLAGS -fpie"
247 export LDFLAGS="$CFLAGS -pie"
250 %if %{bt_bluez_hal} == ENABLED
251 export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_RFCOMM_DIRECT -DTIZEN_BT_HAL"
253 export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_RFCOMM_DIRECT"
255 export LDFLAGS="$CFLAGS -Wl,--rpath=%{_libdir} -Wl,--as-needed -Wl,--unresolved-symbols=ignore-in-shared-libs"
257 %if %{bt_gatt_client_fd} == DISABLED
258 export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_GATT_CLIENT_FD_DISABLE"
261 %ifarch %{ix86} x86_64
262 export CFLAGS+=" -DTIZEN_TEST_EMUL"
263 export CXXFLAGS+=" -DTIZEN_TEST_EMUL"
264 export FFLAGS+=" -DTIZEN_TEST_EMUL"
267 %if %{bt_bluez_hal} == ENABLED
268 export BT_INCLUDE_OAL_BLUEZ=ENABLED
269 export CFLAGS="$CFLAGS -DTIZEN_BT_INCLUDE_OAL_BLUEZ"
271 export BT_INCLUDE_OAL_BLUEZ=DISABLED
274 export CFLAGS_DEFAULT="$CFLAGS"
275 export CXXFLAGS_DEFAULT="$CXXFLAGS"
276 export FFLAGS_DEFAULT="$FFLAGS"
279 %ifarch %{ix86} || %{arm}
281 export CFLAGS="$CFLAGS_DEFAULT -DTIZEN_FEATURE_RADIO -DTIZEN_FEATURE_BT_RFCOMM_DIRECT"
282 export CXXFLAGS="$CXXFLAGS_DEFAULT -DTIZEN_FEATURE_RADIO -DTIZEN_FEATURE_BT_RFCOMM_DIRECT"
283 export FFLAGS="$FFLAGS_DEFAULT -DTIZEN_FEATURE_RADIO -DTIZEN_FEATURE_BT_RFCOMM_DIRECT"
285 cmake . -DCMAKE_INSTALL_PREFIX=/usr \
286 -DCMAKE_LIB_DIR=%{_libdir} \
287 -DTZ_SYS_USER_GROUP=%TZ_SYS_USER_GROUP \
288 -DTZ_SYS_DEFAULT_USER=%TZ_SYS_DEFAULT_USER \
289 -DLIBNOTIFY_SUPPORT=Off \
290 -DLIBNOTIFICATION_SUPPORT=Off
296 cp %{buildroot}%{_bindir}/bt-core tm1/bt-core.tm1
300 %ifarch %{ix86} x86_64
301 export CFLAGS="${CFLAGS} -DTIZEN_TEST_EMUL -DTIZEN_FEATURE_BT_RFCOMM_DIRECT"
302 export CXXFLAGS="${CXXFLAGS} -DTIZEN_TEST_EMUL -DTIZEN_FEATURE_BT_RFCOMM_DIRECT"
303 export FFLAGS="${FFLAGS} -DTIZEN_TEST_EMUL -DTIZEN_FEATURE_BT_RFCOMM_DIRECT"
305 mkdir -p build_emulator
307 cmake . -DCMAKE_INSTALL_PREFIX=/usr \
308 -DCMAKE_LIB_DIR=%{_libdir} \
309 -DTZ_SYS_USER_GROUP=%TZ_SYS_USER_GROUP \
310 -DTZ_SYS_DEFAULT_USER=%TZ_SYS_DEFAULT_USER \
311 -DLIBNOTIFY_SUPPORT=Off \
312 -DLIBNOTIFICATION_SUPPORT=Off
318 cp %{buildroot}%{_libdir}/libbluetooth-api.so* build_emulator/
319 pushd build_emulator/
320 for FILE in libbluetooth-api.so*; do mv "${FILE}" "${FILE}.emulator"; done
324 # non-extension-TM1 / non-extension-emulator
326 export CFLAGS="$CFLAGS_DEFAULT -DTIZEN_FEATURE_BT_RFCOMM_DIRECT"
327 export CXXFLAGS="$CXXFLAGS_DEFAULT -DTIZEN_FEATURE_BT_RFCOMM_DIRECT"
328 export FFLAGS="$FFLAGS_DEFAULT -DTIZEN_FEATURE_BT_RFCOMM_DIRECT"
332 export CFLAGS+=" -DARCH64"
333 export CXXFLAGS+=" -DARCH64"
334 export FFLAGS+=" -DARCH64"
337 cmake . -DCMAKE_INSTALL_PREFIX=/usr \
338 -DCMAKE_LIB_DIR=%{_libdir} \
339 -DTZ_SYS_USER_GROUP=%TZ_SYS_USER_GROUP \
340 -DTZ_SYS_DEFAULT_USER=%TZ_SYS_DEFAULT_USER \
341 -DLIBNOTIFY_SUPPORT=Off \
342 -DLIBNOTIFICATION_SUPPORT=Off
351 mkdir -p %{buildroot}%{_unitdir}/starter.target.wants
352 mkdir -p %{buildroot}%{_unitdir}/multi-user.target.wants
353 mkdir -p %{buildroot}/%{_prefix}/lib/udev/rules.d
355 cp packaging/99-bluetooth-rfkill.rules %{buildroot}/%{_prefix}/lib/udev/rules.d/99-bluetooth-rfkill.rules
358 %ifarch %{ix86} x86_64
359 cp build_emulator/libbluetooth-api.so*.emulator %{buildroot}%{_libdir}/
360 #mv %{buildroot}/%{_bindir}/bt-service-emul %{buildroot}/%{_bindir}/bt-service
363 # Rename the postfix (.mobile, .tv, ..) at post script
365 install -m 0644 packaging/bluetooth-frwk-mobile.service %{buildroot}%{_unitdir}/bluetooth-frwk.service.mobile
368 %ifarch %{ix86} || %{arm}
369 cp tm1/bt-core.tm1 %{buildroot}%{_bindir}/
370 install -m 0644 packaging/bluetooth-frwk-mobile-sprd.service %{buildroot}%{_unitdir}/bluetooth-frwk.service.tm1
374 install -m 0644 packaging/bluetooth-frwk-wearable.service %{buildroot}%{_unitdir}/bluetooth-frwk.service.wearable
375 # On IVI bt-service needs to be run as 'app' even if there is a 'guest' user.
376 cp %{buildroot}%{_datadir}/dbus-1/system-services/org.projectx.bt.service %{buildroot}%{_datadir}/dbus-1/system-services/org.projectx.bt.service.ivi
377 sed -i 's/%TZ_SYS_DEFAULT_USER/app/' %{buildroot}%{_datadir}/dbus-1/system-services/org.projectx.bt.service.ivi
380 install -m 0644 packaging/bluetooth-frwk-tv.service %{buildroot}%{_unitdir}/bluetooth-frwk.service.tv
383 install -m 0644 packaging/bluetooth-frwk-common.service %{buildroot}%{_unitdir}/bluetooth-frwk.service.common
386 install -m 0644 bt-core/bluetooth-frwk-core.service %{buildroot}%{_unitdir}/bluetooth-frwk-core.service
389 ln -s ../bluetooth-frwk.service %{buildroot}%{_unitdir}/multi-user.target.wants/bluetooth-frwk.service
390 ln -s ../bluetooth-frwk.service %{buildroot}%{_unitdir}/starter.target.wants/bluetooth-frwk.service
393 mkdir -p %{_sysconfdir}/systemd/default-extra-dependencies/ignore-units.d
394 ln -sf %{_libdir}/systemd/system/bluetooth-frwk-core.service %{_libdir}/systemd/system/multi-user.target.wants/bluetooth-frwk-core.service
395 ln -sf %{_libdir}/systemd/system/bluetooth-frwk-core.service %{_sysconfdir}/systemd/default-extra-dependencies/ignore-units.d/
398 %postun -p /sbin/ldconfig
401 /usr/bin/chsmack -a '_' %{_varlibdir}/bluetooth/auto-pair-blacklist
402 /usr/bin/chown network_fw:network_fw %{_varlibdir}/bluetooth/auto-pair-blacklist
405 %manifest %{name}.manifest
407 %defattr(-, root, root)
408 %{_libdir}/libbluetooth-api.so.*
409 %exclude %{_libdir}/libbluetooth-api.so*.emulator
412 %defattr(-, root, root)
413 %{_includedir}/bt-service/bluetooth-api.h
414 %{_includedir}/bt-service/bluetooth-hid-api.h
415 %{_includedir}/bt-service/bluetooth-audio-api.h
416 %{_includedir}/bt-service/bluetooth-telephony-api.h
417 %{_includedir}/bt-service/bluetooth-media-control.h
418 %{_includedir}/bt-service/bluetooth-scmst-api.h
419 %{_includedir}/bt-service/bluetooth-ipsp-api.h
420 %{_includedir}/bt-service/bluetooth-gatt-server-api.h
421 %{_includedir}/bt-service/bluetooth-gatt-client-api.h
422 %{_libdir}/pkgconfig/bluetooth-api.pc
423 %{_libdir}/libbluetooth-api.so
426 %ifarch %{ix86} x86_64
427 %post extension-emulator
429 for FILE in libbluetooth-api.so*.emulator; do mv "${FILE}" "${FILE%.emulator}"; done
431 %preun extension-emulator
433 for FILE in libbluetooth-api.so*; do mv "${FILE}" "${FILE}.emulator"; done
435 %files extension-emulator
436 %manifest %{name}.manifest
437 %defattr(-, root, root)
438 %{_libdir}/libbluetooth-api.so.*.emulator
439 %{_libdir}/libbluetooth-api.so.emulator
443 %manifest %{name}.manifest
445 %defattr(-, root, root)
446 %{_bindir}/bt-service
447 %{_sysconfdir}/dbus-1/system.d/bluetooth-frwk-service.conf
448 %{_bindir}/bluetooth-frwk-test
449 %{_varlibdir}/bluetooth
450 %{_prefix}/etc/bluetooth
451 %attr(-,network_fw,network_fw) %{_varlibdir}/bluetooth/auto-pair-blacklist
454 %manifest %{name}.manifest
456 %defattr(-, root, root)
457 %{_bindir}/bt-httpproxy
458 %{_datadir}/dbus-1/system-services/org.projectx.httpproxy.service
459 %{_sysconfdir}/dbus-1/system.d/bluetooth-frwk-httpproxy.conf
463 %manifest %{name}.manifest
465 %defattr(-, root, root)
467 %{_datadir}/dbus-1/system-services/org.projectx.otp.service
468 %{_sysconfdir}/dbus-1/system.d/bluetooth-frwk-otp.conf
471 %manifest %{name}.manifest
473 %defattr(-, root, root)
474 %{_unitdir}/bluetooth-frwk-core.service
475 %{_datadir}/dbus-1/system-services/org.projectx.bt_core.service
477 %{_sysconfdir}/dbus-1/system.d/bluetooth-frwk-core.conf
478 %{_prefix}/lib/udev/rules.d/99-bluetooth-rfkill.rules
481 %manifest %{name}.manifest
483 %defattr(-, root, root)
484 %{_bindir}/bluetooth-frwk-test
485 #%{_bindir}/bluetooth-gatt-test
486 #%{_bindir}/bluetooth-advertising-test
489 %manifest %{name}.manifest
491 %defattr(-, root, root)
492 %{_libdir}/bt-plugin-headed.so
496 mv bluetooth-frwk.service.common bluetooth-frwk.service
498 %preun profile_common
500 mv bluetooth-frwk.service bluetooth-frwk.service.common
502 %files profile_common
504 %{_unitdir}/multi-user.target.wants/bluetooth-frwk.service
505 %exclude %{_unitdir}/starter.target.wants/bluetooth-frwk.service
506 %{_unitdir}/bluetooth-frwk.service.common
507 %{_datadir}/dbus-1/system-services/org.projectx.bt.service
511 mv bluetooth-frwk.service.mobile bluetooth-frwk.service
513 %preun profile_mobile
515 mv bluetooth-frwk.service bluetooth-frwk.service.mobile
517 %files profile_mobile
519 %{_unitdir}/multi-user.target.wants/bluetooth-frwk.service
520 %{_unitdir}/bluetooth-frwk.service.mobile
521 %{_datadir}/dbus-1/system-services/org.projectx.bt.service
524 %ifarch %{ix86} || %{arm}
527 mv bluetooth-frwk.service.tm1 bluetooth-frwk.service
530 mv bt-core.tm1 bt-core
534 mv bluetooth-frwk.service bluetooth-frwk.service.tm1
537 mv bt-core bt-core.tm1
540 %{_unitdir}/bluetooth-frwk.service.tm1
542 %defattr(-, root, root)
543 %{_bindir}/bt-core.tm1
546 %post profile_wearable
548 mv bluetooth-frwk.service.wearable bluetooth-frwk.service
550 %preun profile_wearable
552 mv bluetooth-frwk.service bluetooth-frwk.service.wearable
554 %files profile_wearable
556 %{_unitdir}/multi-user.target.wants/bluetooth-frwk.service
557 %{_unitdir}/bluetooth-frwk.service.wearable
558 %{_datadir}/dbus-1/system-services/org.projectx.bt.service
562 mv bluetooth-frwk.service.tv bluetooth-frwk.service
566 mv bluetooth-frwk.service bluetooth-frwk.service.tv
570 %{_unitdir}/multi-user.target.wants/bluetooth-frwk.service
571 %{_unitdir}/bluetooth-frwk.service.tv
572 %{_datadir}/dbus-1/system-services/org.projectx.bt.service
574 # Note: ivi reuses bluetooth-frwk.service.wearable
577 mv bluetooth-frwk.service.wearable bluetooth-frwk.service
579 pushd %{_datadir}/dbus-1/system-services
580 mv org.projectx.bt.service.ivi org.projectx.bt.service
584 mv bluetooth-frwk.service bluetooth-frwk.service.wearable
586 pushd %{_datadir}/dbus-1/system-services
587 mv org.projectx.bt.service org.projectx.bt.service.ivi
591 %{_unitdir}/multi-user.target.wants/bluetooth-frwk.service
592 %{_unitdir}/bluetooth-frwk.service.wearable
593 %{_datadir}/dbus-1/system-services/org.projectx.bt.service.ivi
596 %manifest %{name}.manifest
597 %defattr(-, root, root)
598 %{_libdir}/libbt-oal.so*
599 %{_sysconfdir}/dbus-1/system.d/bluetooth-frwk-gap-agent.conf
601 %if %{bt_bluez_hal} == ENABLED
602 %{_libdir}/libbluetooth.default.so*
605 %files -n bluetooth-haltests
606 %manifest %{name}.manifest
607 %{_bindir}/bluetooth-haltests