[gnome-bluetooth/wip/hadess/split-ui-libs] lib: Split UI and non-UI libraries
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-bluetooth/wip/hadess/split-ui-libs] lib: Split UI and non-UI libraries
- Date: Tue, 18 Jan 2022 17:38:12 +0000 (UTC)
commit 4b0b60eb666af9dd9ac792a8800a30827799a907
Author: Bastien Nocera <hadess hadess net>
Date: Tue Jan 18 17:54:10 2022 +0100
lib: Split UI and non-UI libraries
Both UI and non-UI libraries export a pkg-config file. Only the non-UI
library exports a Gir as it's the only one that gets to be used from a
non-native program (gnome-shell).
lib/gnome-bluetooth-ui.map | 9 ++++++
lib/gnome-bluetooth.map | 9 ------
lib/meson.build | 80 +++++++++++++++++++++++++++++++++++-----------
lib/test-pin.c | 2 +-
meson.build | 1 +
sendto/meson.build | 2 +-
tests/meson.build | 4 +--
7 files changed, 75 insertions(+), 32 deletions(-)
---
diff --git a/lib/gnome-bluetooth-ui.map b/lib/gnome-bluetooth-ui.map
new file mode 100644
index 00000000..70adc806
--- /dev/null
+++ b/lib/gnome-bluetooth-ui.map
@@ -0,0 +1,9 @@
+{
+global:
+ bluetooth_settings_widget_get_type;
+ bluetooth_settings_widget_new;
+ bluetooth_settings_widget_get_default_adapter_powered;
+ bluetooth_settings_widget_set_default_adapter_powered;
+local:
+ *;
+};
diff --git a/lib/gnome-bluetooth.map b/lib/gnome-bluetooth.map
index 94e97603..02e00cb2 100644
--- a/lib/gnome-bluetooth.map
+++ b/lib/gnome-bluetooth.map
@@ -34,15 +34,6 @@ global:
bluetooth_agent_set_display_passkey_func;
bluetooth_agent_set_display_pincode_func;
bluetooth_agent_set_authorize_service_func;
- bluetooth_settings_widget_get_type;
- bluetooth_settings_widget_new;
- bluetooth_settings_widget_get_default_adapter_powered;
- bluetooth_settings_widget_set_default_adapter_powered;
- bluetooth_pairing_dialog_new;
- bluetooth_pairing_dialog_get_type;
- bluetooth_pairing_dialog_set_mode;
- bluetooth_pairing_dialog_get_mode;
- bluetooth_pairing_dialog_set_pin_entered;
local:
*;
};
diff --git a/lib/meson.build b/lib/meson.build
index 978cd596..8b9e3fe9 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -4,12 +4,14 @@ enum_headers = files('bluetooth-enums.h')
headers = enum_headers + files(
'bluetooth-client.h',
- 'bluetooth-settings-widget.h',
'bluetooth-utils.h',
)
+ui_headers = headers + files(
+ 'bluetooth-settings-widget.h',
+)
install_headers(
- headers,
+ ui_headers,
subdir: gnomebt_api_name,
)
@@ -17,16 +19,17 @@ sources = files(
'bluetooth-agent.c',
'bluetooth-client.c',
'bluetooth-device.c',
+ 'bluetooth-utils.c',
+ 'pin.c',
+)
+
+ui_sources = sources + files(
'bluetooth-pairing-dialog.c',
'bluetooth-settings-obexpush.c',
'bluetooth-settings-row.c',
'bluetooth-settings-widget.c',
- 'bluetooth-utils.c',
- 'pin.c',
)
-built_sources = []
-
resource_data = files(
'bluetooth-pairing-dialog.ui',
'bluetooth-settings.css',
@@ -34,7 +37,7 @@ resource_data = files(
'settings.ui',
)
-built_sources += gnome.compile_resources(
+ui_built_sources = gnome.compile_resources(
'bluetooth-settings-resources',
'bluetooth.gresource.xml',
c_name: 'bluetooth_settings',
@@ -44,13 +47,11 @@ built_sources += gnome.compile_resources(
enum_sources = gnome.mkenums_simple(
'gnome-bluetooth-enum-types',
- sources : headers,
+ sources : enum_headers,
)
-built_sources += enum_sources
client = 'bluetooth-client'
-
-built_sources += gnome.gdbus_codegen(
+client_built_sources = gnome.gdbus_codegen(
client + '-glue',
client + '.xml',
interface_prefix: 'org.bluez',
@@ -58,15 +59,26 @@ built_sources += gnome.gdbus_codegen(
deps = [
gio_dep,
+]
+
+private_deps = [
+ gio_unix_dep,
+ libudev_dep,
+ m_dep,
+]
+
+ui_deps = [
+ gio_dep,
gtk_dep,
libadwaita_dep,
]
-private_deps = [
+ui_private_deps = [
gio_unix_dep,
gsound_dep,
libnotify_dep,
libudev_dep,
+ m_dep,
]
cflags = [
@@ -79,10 +91,10 @@ ldflags = cc.get_supported_link_arguments('-Wl,--version-script,' + symbol_map)
libgnome_bluetooth = shared_library(
gnomebt_api_name,
- sources: sources + built_sources,
+ sources: sources + enum_sources + client_built_sources,
version: libversion,
include_directories: top_inc,
- dependencies: deps + private_deps + [m_dep],
+ dependencies: deps + private_deps,
c_args: cflags,
link_args: ldflags,
link_depends: symbol_map,
@@ -99,7 +111,7 @@ pkg.generate(
libraries: libgnome_bluetooth,
version: gnomebt_version,
name: gnomebt_api_name,
- description: 'Widgets for Bluetooth device selection',
+ description: 'Bluetooth libraries for gnome-shell',
filebase: gnomebt_api_name,
subdirs: gnomebt_api_name,
requires: deps,
@@ -112,7 +124,6 @@ if enable_gir
gir_incs = [
'GModule-2.0',
'GObject-2.0',
- 'Gtk-4.0',
]
gnome.generate_gir(
@@ -144,6 +155,38 @@ if enable_gir
)
endif
+ui_symbol_map = meson.current_source_dir() / (meson.project_name() + '-ui.map')
+ui_ldflags = cc.get_supported_link_arguments('-Wl,--version-script,' + ui_symbol_map)
+
+libgnome_bluetooth_ui = shared_library(
+ gnomebt_ui_api_name,
+ sources: ui_sources + enum_sources + client_built_sources + ui_built_sources,
+ version: libversion,
+ include_directories: top_inc,
+ dependencies: ui_deps + ui_private_deps,
+ c_args: cflags,
+ link_args: ui_ldflags,
+ link_depends: ui_symbol_map,
+ install: true,
+)
+
+libgnome_bluetooth_ui_dep = declare_dependency(
+ link_with: libgnome_bluetooth_ui,
+ include_directories: lib_inc,
+ dependencies: ui_deps,
+)
+
+pkg.generate(
+ libraries: libgnome_bluetooth_ui,
+ version: gnomebt_version,
+ name: gnomebt_ui_api_name,
+ description: 'Bluetooth libraries for gnome-control-center',
+ filebase: gnomebt_ui_api_name,
+ subdirs: gnomebt_api_name,
+ requires: deps,
+ variables: 'exec_prefix=${prefix}',
+)
+
test_names = [
'test-agent',
'test-class',
@@ -156,11 +199,10 @@ test_names = [
foreach name: test_names
executable(
name,
- [name + '.c'] + built_sources,
+ [name + '.c'] + ui_sources + ui_built_sources + enum_sources + client_built_sources,
include_directories: top_inc,
- dependencies: deps + private_deps,
+ dependencies: ui_deps + ui_private_deps,
c_args: cflags,
- link_with: libgnome_bluetooth,
)
endforeach
diff --git a/lib/test-pin.c b/lib/test-pin.c
index 7403c069..405d1e4f 100644
--- a/lib/test-pin.c
+++ b/lib/test-pin.c
@@ -1,5 +1,5 @@
-#include "pin.c"
#include "bluetooth-enums.h"
+#include "pin.h"
int main (int argc, char **argv)
{
diff --git a/meson.build b/meson.build
index 1b27f533..895c5070 100644
--- a/meson.build
+++ b/meson.build
@@ -12,6 +12,7 @@ gnomebt_major_version = version_array[0].to_int()
gnomebt_api_version = '3.0'
gnomebt_api_name = '@0@-@1@'.format(meson.project_name(), gnomebt_api_version)
+gnomebt_ui_api_name = '@0@-ui-@1@'.format(meson.project_name(), gnomebt_api_version)
gnomebt_gettext_package = gnomebt_api_name
gnomebt_gir_ns = 'GnomeBluetooth'
diff --git a/sendto/meson.build b/sendto/meson.build
index 3e233a03..7694b692 100644
--- a/sendto/meson.build
+++ b/sendto/meson.build
@@ -4,7 +4,7 @@ executable(
name,
'main.c',
include_directories: top_inc,
- dependencies: libgnome_bluetooth_dep,
+ dependencies: [libgnome_bluetooth_dep, gtk_dep],
install: true,
)
diff --git a/tests/meson.build b/tests/meson.build
index 1d1b2e0e..7582027a 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -18,7 +18,7 @@ endif
test_bluetooth_device = executable('test-bluetooth-device',
'test-bluetooth-device.c',
include_directories: lib_inc,
- dependencies: deps + private_deps,
+ dependencies: deps,
c_args: cflags,
link_with: libgnome_bluetooth,
)
@@ -30,7 +30,7 @@ test('test-bluetooth-device-test',
test_bluetooth_utils = executable('test-bluetooth-utils',
[ 'test-bluetooth-utils.c', enum_sources ],
include_directories: [ top_inc, lib_inc],
- dependencies: deps + private_deps,
+ dependencies: deps,
c_args: cflags,
link_with: libgnome_bluetooth,
)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]