summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIñigo Martínez <inigomartinez@gmail.com>2018-08-13 23:52:05 +0200
committerDaniel Playfair Cal <daniel.playfair.cal@gmail.com>2020-12-19 12:15:21 +1100
commit7526617ab25d314f646c5ae874197b8846de2a64 (patch)
tree2beda3ec7b84ac7220bf24dff9814cc594f6abb0
parentf441731684fefd91186955587bc4210191cba665 (diff)
downloaddconf-7526617ab25d314f646c5ae874197b8846de2a64.tar.gz
build: Remove libdconf-common-hidden
`libdconf-common-hidden` is built to hide symbols not necessary in the `gsettings` gio module that only needs to expose `g_io_module_[load|query|unload]` symbols. To achieve this a symbol map along with `version-script` linker flag is used. Thanks to this only the necessary symbols are exposed, building `libdconf-common-hidden` static library is not necessary anymore and the existing dependencies can be used.
-rw-r--r--common/meson.build14
-rw-r--r--gsettings/meson.build15
-rw-r--r--gsettings/symbol.map8
3 files changed, 16 insertions, 21 deletions
diff --git a/common/meson.build b/common/meson.build
index 61af2f9..befa9bc 100644
--- a/common/meson.build
+++ b/common/meson.build
@@ -30,17 +30,3 @@ libdconf_common_dep = declare_dependency(
dependencies: glib_dep,
link_with: libdconf_common,
)
-
-libdconf_common_hidden = static_library(
- 'dconf-common-hidden',
- sources: sources,
- include_directories: top_inc,
- dependencies: glib_dep,
- c_args: dconf_c_args + cc.get_supported_arguments('-fvisibility=hidden'),
- pic: true,
-)
-
-libdconf_common_hidden_dep = declare_dependency(
- dependencies: glib_dep,
- link_with: libdconf_common_hidden,
-)
diff --git a/gsettings/meson.build b/gsettings/meson.build
index ee0f723..9463453 100644
--- a/gsettings/meson.build
+++ b/gsettings/meson.build
@@ -1,18 +1,19 @@
-# We use the libraries directly, as the dependency objects use
-# link_whole; this avoids the gsettings backend module exposing
-# symbols other than g_io_module_*
backend_deps = [
- libdconf_common_hidden,
- libdconf_gdbus_thread,
+ libdconf_common_dep,
+ libdconf_gdbus_thread_dep,
]
+symbol_map = join_paths(meson.current_source_dir(), 'symbol.map')
+ldflags = cc.get_supported_link_arguments('-Wl,--version-script,@0@'.format(symbol_map))
+
libdconf_settings = shared_library(
'dconfsettings',
sources: 'dconfsettingsbackend.c',
include_directories: top_inc,
- link_with: backend_deps,
- dependencies: gio_dep,
+ dependencies: backend_deps,
c_args: dconf_c_args,
+ link_args: ldflags,
+ link_depends: symbol_map,
install: true,
install_dir: gio_module_dir,
)
diff --git a/gsettings/symbol.map b/gsettings/symbol.map
new file mode 100644
index 0000000..43ed5a7
--- /dev/null
+++ b/gsettings/symbol.map
@@ -0,0 +1,8 @@
+{
+global:
+ g_io_module_load;
+ g_io_module_unload;
+ g_io_module_query;
+local:
+ *;
+};