Skip to content

Commit a7ee636

Browse files
committed
libnvme: make fabrics optional
The fabrics part is rather large and usually is not necessary for embedded use cases. Also it is very Linux specific and makes any porting attempts really hard. Thus make the fabrics part optional. Signed-off-by: Daniel Wagner <[email protected]>
1 parent 56f4b49 commit a7ee636

15 files changed

Lines changed: 209 additions & 128 deletions

libnvme/examples/meson.build

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,17 @@ executable(
3535
],
3636
)
3737

38-
executable(
39-
'discover-loop',
40-
['discover-loop.c'],
41-
dependencies: [
42-
config_dep,
43-
ccan_dep,
44-
libnvme_dep,
45-
],
46-
)
38+
if want_fabrics
39+
executable(
40+
'discover-loop',
41+
['discover-loop.c'],
42+
dependencies: [
43+
config_dep,
44+
ccan_dep,
45+
libnvme_dep,
46+
],
47+
)
48+
endif
4749

4850
executable(
4951
'mi-mctp',
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,12 @@ extern "C" {
1515
#endif
1616

1717
#include <nvme/cmds.h>
18-
#include <nvme/fabrics.h>
18+
@FABRICS_INCLUDE@
1919
#include <nvme/filters.h>
2020
#include <nvme/ioctl.h>
2121
#include <nvme/lib-types.h>
2222
#include <nvme/lib.h>
2323
#include <nvme/linux.h>
24-
#include <nvme/nbft.h>
2524
#include <nvme/tree.h>
2625
#include <nvme/types.h>
2726
#include <nvme/util.h>

libnvme/src/libnvme.ld

Lines changed: 0 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -221,70 +221,6 @@ LIBNVME_3 {
221221
nvme_uuid_from_string;
222222
nvme_uuid_random;
223223
nvme_uuid_to_string;
224-
nvmf_add_ctrl;
225-
nvmf_adrfam_str;
226-
nvmf_cms_str;
227-
nvmf_config_modify;
228-
nvmf_connect;
229-
nvmf_connect_config_json;
230-
nvmf_connect_ctrl;
231-
nvmf_context_create;
232-
nvmf_context_set_connection;
233-
nvmf_context_set_crypto;
234-
nvmf_context_set_device;
235-
nvmf_context_set_discovery_cbs;
236-
nvmf_context_set_discovery_defaults;
237-
nvmf_context_set_fabrics_config;
238-
nvmf_context_set_hostnqn;
239-
nvmf_context_set_persistent;
240-
nvmf_default_config;
241-
nvmf_discovery;
242-
nvmf_discovery_config_file;
243-
nvmf_discovery_config_json;
244-
nvmf_discovery_ctx_already_connected_set;
245-
nvmf_discovery_ctx_connected_set;
246-
nvmf_discovery_ctx_create;
247-
nvmf_discovery_ctx_ctrlkey_set;
248-
nvmf_discovery_ctx_decide_retry_set;
249-
nvmf_discovery_ctx_default_fabrics_config_set;
250-
nvmf_discovery_ctx_device_set;
251-
nvmf_discovery_ctx_discovery_log_set;
252-
nvmf_discovery_ctx_host_iface_set;
253-
nvmf_discovery_ctx_host_traddr_set;
254-
nvmf_discovery_ctx_hostid_set;
255-
nvmf_discovery_ctx_hostkey_set;
256-
nvmf_discovery_ctx_hostnqn_set;
257-
nvmf_discovery_ctx_keep_alive_timeout;
258-
nvmf_discovery_ctx_keyring_set;
259-
nvmf_discovery_ctx_max_retries;
260-
nvmf_discovery_ctx_parser_cleanup_set;
261-
nvmf_discovery_ctx_parser_init_set;
262-
nvmf_discovery_ctx_parser_next_line_set;
263-
nvmf_discovery_ctx_persistent_set;
264-
nvmf_discovery_ctx_subsysnqn_set;
265-
nvmf_discovery_ctx_tls_key_identity_set;
266-
nvmf_discovery_ctx_tls_key_set;
267-
nvmf_discovery_ctx_traddr_set;
268-
nvmf_discovery_ctx_transport_set;
269-
nvmf_discovery_ctx_trsvcid_set;
270-
nvmf_discovery_nbft;
271-
nvmf_eflags_str;
272-
nvmf_exat_ptr_next;
273-
nvmf_free_uri;
274-
nvmf_get_default_trsvcid;
275-
nvmf_get_discovery_log;
276-
nvmf_get_discovery_wargs;
277-
nvmf_is_registration_supported;
278-
nvmf_nbft_free;
279-
nvmf_nbft_read_files;
280-
nvmf_prtype_str;
281-
nvmf_qptype_str;
282-
nvmf_register_ctrl;
283-
nvmf_sectype_str;
284-
nvmf_subtype_str;
285-
nvmf_treq_str;
286-
nvmf_trtype_str;
287-
nvmf_update_config;
288224
local:
289225
*;
290226
};

libnvme/src/libnvmf.ld

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# SPDX-License-Identifier: LGPL-2.1-or-later
2+
3+
LIBNVMF_3 {
4+
global:
5+
nvmf_add_ctrl;
6+
nvmf_adrfam_str;
7+
nvmf_cms_str;
8+
nvmf_config_modify;
9+
nvmf_connect;
10+
nvmf_connect_config_json;
11+
nvmf_connect_ctrl;
12+
nvmf_context_create;
13+
nvmf_context_set_connection;
14+
nvmf_context_set_crypto;
15+
nvmf_context_set_device;
16+
nvmf_context_set_discovery_cbs;
17+
nvmf_context_set_discovery_defaults;
18+
nvmf_context_set_fabrics_config;
19+
nvmf_context_set_hostnqn;
20+
nvmf_context_set_persistent;
21+
nvmf_default_config;
22+
nvmf_discovery;
23+
nvmf_discovery_config_file;
24+
nvmf_discovery_config_json;
25+
nvmf_discovery_ctx_already_connected_set;
26+
nvmf_discovery_ctx_connected_set;
27+
nvmf_discovery_ctx_create;
28+
nvmf_discovery_ctx_ctrlkey_set;
29+
nvmf_discovery_ctx_decide_retry_set;
30+
nvmf_discovery_ctx_default_fabrics_config_set;
31+
nvmf_discovery_ctx_device_set;
32+
nvmf_discovery_ctx_discovery_log_set;
33+
nvmf_discovery_ctx_host_iface_set;
34+
nvmf_discovery_ctx_host_traddr_set;
35+
nvmf_discovery_ctx_hostid_set;
36+
nvmf_discovery_ctx_hostkey_set;
37+
nvmf_discovery_ctx_hostnqn_set;
38+
nvmf_discovery_ctx_keep_alive_timeout;
39+
nvmf_discovery_ctx_keyring_set;
40+
nvmf_discovery_ctx_max_retries;
41+
nvmf_discovery_ctx_parser_cleanup_set;
42+
nvmf_discovery_ctx_parser_init_set;
43+
nvmf_discovery_ctx_parser_next_line_set;
44+
nvmf_discovery_ctx_persistent_set;
45+
nvmf_discovery_ctx_subsysnqn_set;
46+
nvmf_discovery_ctx_tls_key_identity_set;
47+
nvmf_discovery_ctx_tls_key_set;
48+
nvmf_discovery_ctx_traddr_set;
49+
nvmf_discovery_ctx_transport_set;
50+
nvmf_discovery_ctx_trsvcid_set;
51+
nvmf_discovery_nbft;
52+
nvmf_eflags_str;
53+
nvmf_exat_ptr_next;
54+
nvmf_free_uri;
55+
nvmf_get_default_trsvcid;
56+
nvmf_get_discovery_log;
57+
nvmf_get_discovery_wargs;
58+
nvmf_is_registration_supported;
59+
nvmf_nbft_free;
60+
nvmf_nbft_read_files;
61+
nvmf_prtype_str;
62+
nvmf_qptype_str;
63+
nvmf_register_ctrl;
64+
nvmf_sectype_str;
65+
nvmf_subtype_str;
66+
nvmf_treq_str;
67+
nvmf_trtype_str;
68+
nvmf_update_config;
69+
local:
70+
*;
71+
};

libnvme/src/meson.build

Lines changed: 50 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,41 @@ sources = [
1010
'nvme/base64.c',
1111
'nvme/cmds.c',
1212
'nvme/crc32.c',
13-
'nvme/fabrics.c',
1413
'nvme/filters.c',
1514
'nvme/ioctl.c',
1615
'nvme/lib.c',
1716
'nvme/linux.c',
1817
'nvme/log.c',
1918
'nvme/mi-mctp.c',
2019
'nvme/mi.c',
21-
'nvme/nbft.c',
2220
'nvme/sysfs.c',
2321
'nvme/tree.c',
2422
'nvme/util.c',
2523
]
24+
headers = [
25+
'nvme/accessors.h',
26+
'nvme/cmds.h',
27+
'nvme/filters.h',
28+
'nvme/ioctl.h',
29+
'nvme/lib-types.h',
30+
'nvme/lib.h',
31+
'nvme/linux.h',
32+
'nvme/mi.h',
33+
'nvme/tree.h',
34+
'nvme/types.h',
35+
'nvme/util.h',
36+
]
37+
38+
if want_fabrics
39+
sources += [
40+
'nvme/fabrics.c',
41+
'nvme/nbft.c',
42+
]
43+
headers += [
44+
'nvme/fabrics.h',
45+
'nvme/nbft.h',
46+
]
47+
endif
2648

2749
if json_c_dep.found()
2850
sources += 'nvme/json.c'
@@ -42,16 +64,36 @@ deps = [
4264
openssl_dep,
4365
]
4466

45-
ldfile = 'libnvme.ld'
67+
nvme_ld = meson.current_source_dir() / 'libnvme.ld'
68+
nvmf_ld = meson.current_source_dir() / 'libnvmf.ld'
69+
70+
link_args = [
71+
'-Wl,--version-script=@0@'.format(nvme_ld),
72+
'-Wl,--version-script=@0@'.format(accessors_ld_full_path),
73+
]
74+
75+
libconf = configuration_data()
76+
if want_fabrics
77+
link_args += '-Wl,--version-script=@0@'.format(nvmf_ld)
78+
libconf.set('FABRICS_INCLUDE',
79+
'#include <nvme/fabrics.h>\n#include <nvme/nbft.h>')
80+
else
81+
libconf.set('FABRICS_INCLUDE', '')
82+
endif
83+
84+
libnvme_header = configure_file(
85+
input: 'libnvme.h.in',
86+
output: 'libnvme.h',
87+
configuration: libconf,
88+
install: true,
89+
install_dir: prefixdir / get_option('includedir')
90+
)
4691

4792
libnvme = library(
4893
'nvme', # produces libnvme.so
4994
sources,
5095
version: libnvme_so_version,
51-
link_args: [
52-
'-Wl,--version-script=@0@'.format(meson.current_source_dir() / ldfile),
53-
'-Wl,--version-script=@0@'.format(accessors_ld_full_path),
54-
],
96+
link_args: link_args,
5597
dependencies: deps,
5698
install: true,
5799
)
@@ -90,27 +132,12 @@ libnvme_test_dep = declare_dependency(
90132
mode = 'rw-r--r--'
91133
install_headers(
92134
[
93-
'libnvme.h',
94135
'libnvme-mi.h',
95136
],
96137
install_mode: mode,
97138
)
98139
install_headers(
99-
[
100-
'nvme/accessors.h',
101-
'nvme/cmds.h',
102-
'nvme/fabrics.h',
103-
'nvme/filters.h',
104-
'nvme/ioctl.h',
105-
'nvme/lib-types.h',
106-
'nvme/lib.h',
107-
'nvme/linux.h',
108-
'nvme/mi.h',
109-
'nvme/nbft.h',
110-
'nvme/tree.h',
111-
'nvme/types.h',
112-
'nvme/util.h',
113-
],
140+
headers,
114141
subdir: 'nvme',
115142
install_mode: mode,
116143
)

libnvme/test/ioctl/meson.build

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -52,17 +52,19 @@ ana = executable(
5252
)
5353
test('libnvme - ana', ana, env: mock_ioctl_env)
5454

55-
discovery = executable(
56-
'test-discovery',
57-
'discovery.c',
58-
dependencies: [
59-
config_dep,
60-
ccan_dep,
61-
libnvme_dep,
62-
],
63-
link_with: mock_ioctl,
64-
)
65-
test('libnvme - discovery', discovery, env: mock_ioctl_env)
55+
if want_fabrics
56+
discovery = executable(
57+
'test-discovery',
58+
'discovery.c',
59+
dependencies: [
60+
config_dep,
61+
ccan_dep,
62+
libnvme_dep,
63+
],
64+
link_with: mock_ioctl,
65+
)
66+
test('libnvme - discovery', discovery, env: mock_ioctl_env)
67+
endif
6668

6769
features = executable(
6870
'test-features',

libnvme/test/meson.build

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -101,17 +101,19 @@ uuid = executable(
101101

102102
test('libnvme - uuid', uuid)
103103

104-
uriparser = executable(
105-
'test-uriparser',
106-
['uriparser.c'],
107-
dependencies: [
108-
config_dep,
109-
ccan_dep,
110-
libnvme_dep,
111-
],
112-
)
104+
if want_fabrics
105+
uriparser = executable(
106+
'test-uriparser',
107+
['uriparser.c'],
108+
dependencies: [
109+
config_dep,
110+
ccan_dep,
111+
libnvme_dep,
112+
],
113+
)
113114

114115
test('libnvme - uriparser', uriparser)
116+
endif
115117

116118
if conf.get('HAVE_NETDB')
117119
mock_ifaddrs = library(
@@ -162,7 +164,9 @@ psk = executable(
162164
test('libnvme - psk', psk)
163165

164166
subdir('ioctl')
165-
subdir('nbft')
167+
if want_fabrics
168+
subdir('nbft')
169+
endif
166170

167171
if json_c_dep.found()
168172
subdir('sysfs')

0 commit comments

Comments
 (0)