]> granicus.if.org Git - p11-kit/commitdiff
meson: PKCS#11 modules should only export C_GetFunctionList
authorJan Alexander Steffens (heftig) <jan.steffens@gmail.com>
Tue, 10 Sep 2019 18:08:25 +0000 (18:08 +0000)
committerDaiki Ueno <ueno@gnu.org>
Wed, 11 Sep 2019 08:57:10 +0000 (10:57 +0200)
p11-kit/meson.build
p11-kit/p11-module.def [new file with mode: 0644]
p11-kit/p11-module.map [new file with mode: 0644]
trust/meson.build

index beb0fb285f83f8c714f129f174068fd588bf9dc5..e2d807b40c90baedb8440e319089b63d7b12bf8e 100644 (file)
@@ -81,12 +81,22 @@ meson.add_install_script(
   datadir / 'p11-kit' / 'modules'
 )
 
+p11_module_symbol_map = meson.current_source_dir() / 'p11-module.map'
+p11_module_ldflags = cc.get_supported_link_arguments([
+  '-Wl,--version-script,' + p11_module_symbol_map
+])
+p11_module_symbol_def = meson.current_source_dir() / 'p11-module.def'
+
 if host_system != 'windows'
   shared_module('p11-kit-client',
                 'client.c', 'client-init.c',
                 name_prefix: '',
                 include_directories: [configinc, commoninc],
+                link_args: p11_module_ldflags,
+                link_depends: [p11_module_symbol_map,
+                               p11_module_symbol_def],
                 link_with: [libp11_kit_internal],
+                vs_module_defs: p11_module_symbol_def,
                 install: true,
                 install_dir: p11_module_path)
 endif
diff --git a/p11-kit/p11-module.def b/p11-kit/p11-module.def
new file mode 100644 (file)
index 0000000..c4a8158
--- /dev/null
@@ -0,0 +1,2 @@
+EXPORTS
+C_GetFunctionList
diff --git a/p11-kit/p11-module.map b/p11-kit/p11-module.map
new file mode 100644 (file)
index 0000000..8b9c384
--- /dev/null
@@ -0,0 +1,6 @@
+{
+       global:
+               C_GetFunctionList;
+       local:
+               *;
+};
index b6cb260422d97e77c6a73f9fbf137cbb78273d9b..c5b978b8663e3bc9668119400caa2ed01121fece 100644 (file)
@@ -48,9 +48,13 @@ shared_module('p11-kit-trust',
               libtrust_sources,
               'module-init.c',
               name_prefix: '',
-             c_args: p11_kit_trust_c_args,
+              c_args: p11_kit_trust_c_args,
               dependencies: [libp11_library_dep] + libtasn1_deps,
+              link_args: p11_module_ldflags,
+              link_depends: [p11_module_symbol_map,
+                             p11_module_symbol_def],
               link_with: libtrust_data,
+              vs_module_defs: p11_module_symbol_def,
               install: true,
               install_dir: prefix / p11_module_path)