Name: bluetooth-agent
Summary: Bluetooth agent packages that support various external profiles
-Version: 0.1.1
+Version: 0.6.0
Release: 1
Group: Network & Connectivity/Bluetooth
License: Apache-2.0
BuildRequires: pkgconfig(aul)
BuildRequires: pkgconfig(bluetooth-api)
-%if "%{?profile}" == "wearable" || "%{?profile}" == "ivi"
+BuildRequires: pkgconfig(capi-media-audio-io)
+
+# The profile macro usage with the following comments may be removed after
+# Tizen OBS build projects are merged. However, each vendor may keep using
+# such if/endif statement to skip building profiles not interested
+
+# This usage of profile macro does NOT conflict 4.0 configurability.
+%if "%{?profile}" != "mobile" && "%{?profile}" != "tv"
+# Original: wearable, ivi. Added: common, "undefined"
BuildRequires: pkgconfig(alarm-service)
BuildRequires: pkgconfig(capi-appfw-app-manager)
BuildRequires: pkgconfig(capi-system-device)
-%else
+%endif
+# This usage of profile macro does NOT conflict 4.0 configurability.
+%if "%{?profile}" != "wearable" && "%{?profile}" != "ivi"
+# Original: common, mobile, tv. Added: "undefined"
BuildRequires: pkgconfig(contacts-service2)
BuildRequires: pkgconfig(msg-service)
BuildRequires: pkgconfig(email-service)
%endif
BuildRequires: pkgconfig(capi-system-info)
-BuildRequires: pkgconfig(dbus-glib-1)
+BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(tapi)
BuildRequires: pkgconfig(dlog)
BuildRequires: pkgconfig(vconf)
BuildRequires: pkgconfig(appsvc)
BuildRequires: pkgconfig(capi-appfw-application)
+BuildRequires: pkgconfig(capi-network-connection)
+BuildRequires: pkgconfig(capi-network-bluetooth)
BuildRequires: pkgconfig(capi-media-image-util)
BuildRequires: pkgconfig(contacts-service2)
BuildRequires: pkgconfig(libexif)
BuildRequires: pkgconfig(gio-2.0)
BuildRequires: cmake
Requires: security-config
+%if 0%{?gcov:1}
+BuildRequires: gtest-devel
+BuildRequires: lcov
+%endif
+
+#Requires: %{name}-compat = %{version}-%{release}
+#Recommends: %{name}-profile_common = %{version}-%{release}
%description
Bluetooth agent packages that support various external profiles
+%package hfp_ag
+Summary: Bluetooth agent for HFP(Hands-Free Profile)'s AG(Audio Gate) role
+Requires: %{name} = %{version}-%{release}
+Group: Network & Connectivity/Bluetooth
+%description hfp_ag
+Bluetooth agent binary compiled for HFP(Hands-Free Profile)'s AG(Audio Gate) role
+
+%package hfp_hf
+Summary: Bluetooth agent for HFP(Hands-Free Profile)'s HF(Hands-Free) role
+Requires: %{name} = %{version}-%{release}
+Group: Network & Connectivity/Bluetooth
+%description hfp_hf
+Bluetooth agent binary compiled for HFP(Hands-Free Profile)'s HF(Hands-Free) role
+
+%package map
+Summary: Bluetooth agent for MAP(Message Access Profile) server
+Requires: %{name} = %{version}-%{release}
+Group: Network & Connectivity/Bluetooth
+%description map
+Bluetooth agent binary compiled for MAP(Message Access Profile) server
+
+%package pbap
+Summary: Bluetooth agent for PBAP(PhoneBook Access Profile) server
+Requires: %{name} = %{version}-%{release}
+Group: Network & Connectivity/Bluetooth
+%description pbap
+Bluetooth agent binary compiled for PBAP(PhoneBook Access Profile) server
+
+%package hid
+Summary: Bluetooth agent for HID(Human Interface Device)'s device role
+Requires: %{name} = %{version}-%{release}
+Group: Network & Connectivity/Bluetooth
+%description hid
+Bluetooth agent binary compiled for HID(Human Interface Device)'s device role
+
+%package ipsp
+Summary: Bluetooth agent for IPSP(Internet Protocol Support Profile)
+Requires: %{name} = %{version}-%{release}
+Group: Network & Connectivity/Bluetooth
+%description ipsp
+Bluetooth agent binary compiled for IPSP(Internet Protocol Support Profile)
+
+%package tool
+Summary: Test Application for HF
+
+%description tool
+Test Application for HF
+
%prep
%setup -q
cp %{SOURCE1001} .
export CFLAGS="$CFLAGS -DTIZEN_DEBUG_ENABLE"
export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE"
export FFLAGS="$FFLAGS -DTIZEN_DEBUG_ENABLE"
-#export CFLAGS="$CFLAGS -DTIZEN_MEDIA_ENHANCE"
-export CFLAGS="$CFLAGS -DTIZEN_BT_HFP_AG_ENABLE"
+export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_MEDIA_ENHANCE"
+export CFLAGS="$CFLAGS -DTIZEN_FEATURE_BT_HFP_AG"
+export CFLAGS="$CFLAGS -DTIZEN_SUPPORT_DUAL_HF"
-%ifarch aarch64
+%ifarch aarch64 x86_64 riscv64
echo arch64
export CFLAGS+=" -DARCH64"
export CXXFLAGS+=" -DARCH64"
export FFLAGS+=" -DARCH64"
%endif
-%ifarch x86_64
-echo x86_64
-export CFLAGS+=" -DARCH64"
-export CXXFLAGS+=" -DARCH64"
-export FFLAGS+=" -DARCH64"
-%endif
+export CFLAGS+=" -fpie -DTIZEN_FEATURE_BP_PBAP_SIM -fvisibility=hidden "
+export CXXFLAGS+=" -fpie -DTIZEN_FEATURE_BP_PBAP_SIM -fvisibility=hidden "
-%if "%{?profile}" == "wearable"
-export CFLAGS="$CFLAGS -DTIZEN_WEARABLE"
-export CFLAGS="$CFLAGS -DTIZEN_SUPPORT_LUNAR_DEVICE"
-%else
-export CFLAGS="$CFLAGS -DTIZEN_KIRAN"
-%endif
+export LDFLAGS+=" -Wl,--rpath=/usr/lib -Wl,--as-needed -Wl,--unresolved-symbols=ignore-in-shared-libs -pie"
-%if "%{?profile}" == "ivi"
-export CFLAGS="$CFLAGS -DTIZEN_PROFILE_IVI"
+export CFLAGS_DEFAULT="$CFLAGS"
+
+%if 0%{?gcov:1}
+export CFLAGS+=" -fprofile-arcs -ftest-coverage"
+export CXXFLAGS+=" -fprofile-arcs -ftest-coverage"
+export FFLAGS+=" -fprofile-arcs -ftest-coverage"
+export LDFLAGS+=" -lgcov"
%endif
-export CFLAGS+=" -fpie -DPBAP_SIM_ENABLE -fvisibility=hidden "
-export CXXFLAGS+=" -fpie -DPBAP_SIM_ENABLE -fvisibility=hidden "
+# Build All (wearalbe/ivi/common/tv/mobile)
+%cmake . -DCMAKE_INSTALL_PREFIX=/usr \
+ -DTIZEN_FEATURE_BT_HFP_AG=1 \
+ -DBUILD_GTESTS=%{?gcov:1}%{!?gcov:0} \
+ -DBUILD_GCOV=%{?gcov:1}%{!?gcov:0}
-export LDFLAGS+=" -Wl,--rpath=/usr/lib -Wl,--as-needed -Wl,--unresolved-symbols=ignore-in-shared-libs -pie"
+make VERBOSE=1
-cmake . -DCMAKE_INSTALL_PREFIX=/usr \
-%if "%{?profile}" == "wearable"
- -DTIZEN_WEARABLE=1 \
-%else
- -DTIZEN_WEARABLE=0 \
+%if 0%{?gcov:1}
+mkdir -p gcov-obj
+find . -name '*.gcno' -exec cp '{}' gcov-obj ';'
%endif
-%if "%{?profile}" == "ivi"
- -DTIZEN_PROFILE_IVI=1 \
-%endif
- -DTIZEN_BT_HFP_AG_ENABLE=1
-
-make VERBOSE=1
%install
rm -rf %{buildroot}
%make_install
-install -D -m 0644 LICENSE %{buildroot}%{_datadir}/license/bluetooth-agent
-#mkdir -p %{buildroot}%{_unitdir}/multi-user.target.wants
-#%if "%{?profile}" != "wearable"
-#install -m 0644 packaging/bluetooth-ag-agent.service %{buildroot}%{_unitdir}/
-#ln -s ../bluetooth-ag-agent.service %{buildroot}%{_unitdir}/multi-user.target.wants/bluetooth-ag-agent.service
-#%endif
-#%if 0%{?sec_product_feature_bt_map_server_enable}
-install -D -m 0644 packaging/bluetooth-map-agent.service %{buildroot}%{_libdir}/systemd/user/bluetooth-map-agent.service
+mkdir -p %{buildroot}%{_unitdir}/multi-user.target.wants/
+
+# This usage of profile macro does NOT conflict 4.0 configurability.
+#%if "%{?profile}" != "mobile" && "%{?profile}" != "tv"
+# Original: wearable, ivi. Added: common, "undefined"
+#mkdir -p %{buildroot}%{_datadir}/dbus-1/system-services
+#mkdir -p %{buildroot}%{_bindir}/
+#install -D -m 0644 %{buildroot}/usr/share/dbus-1/system-services/org.bluez.hf_agent.service %{buildroot}%{_datadir}/dbus-1/system-services/
+#install -D -m 0644 %{buildroot}/usr/share/dbus-1/system-services/org.bluez.ipsp_agent.service %{buildroot}%{_datadir}/dbus-1/system-services/
+#install -D -m 0644 %{buildroot}/usr/bin/bluetooth-hf-agent %{buildroot}%{_bindir}/
+#install -D -m 0644 %{buildroot}/usr/bin/bluetooth-ipsp-agent %{buildroot}%{_bindir}/
#%endif
-install -D -m 0644 packaging/bluetooth-pbap-agent.service %{buildroot}%{_libdir}/systemd/system/bluetooth-pbap-agent.service
+install -D -m 0644 packaging/bluetooth-map-agent.service %{buildroot}%{_unitdir}/bluetooth-map-agent.service
+install -D -m 0644 packaging/bluetooth-pbap-agent.service %{buildroot}%{_unitdir}/bluetooth-pbap-agent.service
+install -D -m 0644 packaging/bluetooth-ag-agent.service %{buildroot}%{_unitdir}/bluetooth-ag-agent.service
+install -D -m 0644 packaging/bluetooth-hf-agent.service %{buildroot}%{_unitdir}/bluetooth-hf-agent.service
+install -D -m 0644 packaging/bluetooth-hid-agent.service %{buildroot}%{_unitdir}/bluetooth-hid-agent.service
+ln -s ../bluetooth-hf-agent.service %{buildroot}%{_unitdir}/multi-user.target.wants/bluetooth-hf-agent.service
+
+%if 0%{?gcov:1}
+mkdir -p %{buildroot}%{_datadir}/gcov/obj/%{name}
+install -m 0644 gcov-obj/* %{buildroot}%{_datadir}/gcov/obj/%{name}/
+%endif
-%post
-%if 0%{?sec_product_feature_bt_map_server_enable}
-ln -sf %{_libdir}/systemd/user/bluetooth-map-agent.service %{_sysconfdir}/systemd/default-extra-dependencies/ignore-units.d/
+%check
+%if 0%{?gcov:1}
+pushd unittest
+./run_coverage.sh
+popd
%endif
-ln -sf %{_libdir}/systemd/system/bluetooth-pbap-agent.service %{_sysconfdir}/systemd/default-extra-dependencies/ignore-units.d/
%files
%manifest %{name}.manifest
+%license LICENSE
%defattr(-, root, root)
-%if "%{?profile}" == "wearable" || "%{?profile}" == "ivi"
+%exclude %{_bindir}/gtest-bluetooth-agent
+%exclude %{_libdir}/lib*
+%exclude %{_datadir}/gcov/obj/*
+
+%files hfp_ag
+%manifest %{name}.manifest
+%license LICENSE
+%{_bindir}/bluetooth-ag-agent
+%attr(0666,-,-) /var/lib/bluetooth/voice-recognition-blacklist
+%{_datadir}/dbus-1/system-services/org.bluez.ag_agent.service
+%{_sysconfdir}/dbus-1/system.d/bluetooth-ag-agent.conf
+%{_unitdir}/bluetooth-ag-agent.service
+#%exclude %{_unitdir}/bluetooth-map-agent.service
+#%exclude %{_unitdir}/bluetooth-pbap-agent.service
+
+%files hfp_hf
+%manifest %{name}.manifest
+%license LICENSE
%{_bindir}/bluetooth-hf-agent
%{_datadir}/dbus-1/system-services/org.bluez.hf_agent.service
-%exclude %{_libdir}/systemd/user/bluetooth-map-agent.service
-%exclude %{_libdir}/systemd/system/bluetooth-pbap-agent.service
-%else
-%{_bindir}/bluetooth-ag-agent
+%{_sysconfdir}/dbus-1/system.d/bluetooth-hf-agent.conf
+%{_unitdir}/bluetooth-hf-agent.service
+%{_unitdir}/multi-user.target.wants/bluetooth-hf-agent.service
+#%exclude %{_unitdir}/bluetooth-map-agent.service
+#%exclude %{_unitdir}/bluetooth-pbap-agent.service
+
+%files map
+%manifest %{name}.manifest
+%license LICENSE
%{_bindir}/bluetooth-map-agent
+%{_datadir}/dbus-1/system-services/org.bluez.map_agent.service
+%{_unitdir}/bluetooth-map-agent.service
+%{_sysconfdir}/dbus-1/system.d/bluetooth_map_agent.conf
+
+%files pbap
+%manifest %{name}.manifest
+%license LICENSE
%{_bindir}/bluetooth-pb-agent
%{_datadir}/dbus-1/system-services/org.bluez.pb_agent.service
-%{_datadir}/dbus-1/services/org.bluez.map_agent.service
-%{_datadir}/dbus-1/system-services/org.bluez.ag_agent.service
-#%{_usrlibdir}/systemd/system/bluetooth-ag-agent.service
-#%{_usrlibdir}/systemd/system/multi-user.target.wants/bluetooth-ag-agent.service
-%attr(0666,-,-) /var/lib/bluetooth/voice-recognition-blacklist
-%{_sysconfdir}/dbus-1/system.d/bluetooth-ag-agent.conf
-%{_libdir}/systemd/user/bluetooth-map-agent.service
-%{_libdir}/systemd/system/bluetooth-pbap-agent.service
-%endif
-%{_datadir}/license/bluetooth-agent
+%{_unitdir}/bluetooth-pbap-agent.service
+%{_sysconfdir}/dbus-1/system.d/bluetooth_pb_agent.conf
+
+%files hid
+%manifest %{name}.manifest
+%license LICENSE
+%{_bindir}/bluetooth-hid-agent
+%{_datadir}/dbus-1/system-services/org.bluez.hid_agent.service
+%{_unitdir}/bluetooth-hid-agent.service
+%{_sysconfdir}/dbus-1/system.d/bluetooth-hid-agent.conf
+
+%files ipsp
+%manifest %{name}.manifest
+%license LICENSE
+%{_bindir}/bluetooth-ipsp-agent
+%{_datadir}/dbus-1/system-services/org.bluez.ipsp_agent.service
+%{_sysconfdir}/dbus-1/system.d/bluetooth-ipsp-agent.conf
+
+%files tool
+%{_bindir}/hf-test