]> www.infradead.org Git - users/sagi/nvme-cli.git/commitdiff
nvme: Make json-c optional again
authorDaniel Wagner <dwagner@suse.de>
Tue, 7 Feb 2023 08:46:44 +0000 (09:46 +0100)
committerDaniel Wagner <dwagner@suse.de>
Fri, 10 Feb 2023 15:32:24 +0000 (16:32 +0100)
But with the price that functionality is missing.

Signed-off-by: Daniel Wagner <dwagner@suse.de>
meson.build
meson_options.txt
nvme-print-json.h
plugins/meson.build
util/json.h
util/meson.build

index 2a720a6647e2b913e8d95497b83b362605c6408a..9d8d4cfb1eea622faf23d3118d74f4480e5cb00c 100644 (file)
@@ -50,14 +50,19 @@ libnvme_mi_dep = dependency('libnvme-mi', required: true,
                          fallback : ['libnvme', 'libnvme_mi_dep'])
 
 # Check for libjson-c availability
-json_c_dep = dependency('json-c', required: true, version: '>=0.13',
-                        fallback : ['json-c', 'json_c_dep'])
-if json_c_dep.version().version_compare('>=0.14')
-  conf.set('CONFIG_JSONC_14', true, description: 'Is json-c at least 0.14?')
-  requires = 'Requires: json-c >= 0.14'
+if get_option('json-c').disabled()
+    json_c_dep = dependency('', required: false)
 else
-  requires = 'Requires: json-c >= 0.13'
+    json_c_dep = dependency('json-c', required: true, version: '>=0.13',
+                            fallback : ['json-c', 'json_c_dep'])
+    if json_c_dep.version().version_compare('>=0.14')
+        conf.set('CONFIG_JSONC_14', true, description: 'Is json-c at least 0.14?')
+        requires = 'Requires: json-c >= 0.14'
+    else
+        requires = 'Requires: json-c >= 0.13'
+    endif
 endif
+conf.set('CONFIG_JSONC', json_c_dep.found(), description: 'Is json-c available?')
 
 # Check for libhugetlbfs availability (optional)
 if cc.has_header('hugetlbfs.h')
@@ -239,12 +244,16 @@ sources = [
   'nvme.c',
   'nvme-models.c',
   'nvme-print.c',
-  'nvme-print-json.c',
   'nvme-rpmb.c',
   'nvme-wrap.c',
   'plugin.c',
   'libnvme-wrap.c',
 ]
+if json_c_dep.found()
+    sources += [
+        'nvme-print-json.c',
+    ]
+endif
 
 subdir('ccan')
 subdir('plugins')
index 04843ea5461aa741ad0c98c4a1ebb1024469d426..677942aea892c273c422bf1785d6d3827e512da1 100644 (file)
@@ -9,3 +9,4 @@ option('nvme-tests', type : 'boolean', value : false, description: 'Run tests ag
 option('docs', type : 'combo', choices : ['false', 'html', 'man', 'all'], description : 'install documentation')
 option('docs-build', type : 'boolean', value : false, description : 'build documentation')
 option('pdc-enabled', type: 'boolean', value : false, description : 'set default Persistent Discovery Controllers behavior')
+option('json-c', type: 'feature', value: 'auto', description: 'JSON suppport')
index 43b200e5a7c31ff5d581c2656b6c20a6c8fd2c32..6720d454cb44c8b411c41175f9308bd7eedd669d 100644 (file)
@@ -3,6 +3,8 @@
 
 #include "nvme-print.h"
 
+#ifdef CONFIG_JSONC
+
 void json_simple_topology(nvme_root_t r);
 void json_print_list_items(nvme_root_t r,
                           enum nvme_print_flags flags);
@@ -81,4 +83,64 @@ void json_predictable_latency_per_nvmset(
 void json_discovery_log(struct nvmf_discovery_log *log, int numrec);
 void json_connect_msg(nvme_ctrl_t c);
 
+#else /* !CONFIG_JSONC */
+
+#define json_simple_topology(r)
+#define json_print_list_items(r, flags)
+#define json_sanitize_log(sanitize_log, devname)
+#define json_self_test_log(self_test, dst_entries)
+#define json_ana_log(ana_log, devname)
+#define json_smart_log(smart, nsid, flags)
+#define json_support_log(support_log)
+#define json_endurance_log(endurance_group, group_id)
+#define json_effects_log_list(list)
+#define json_changed_ns_list_log(log, devname)
+#define json_fw_log(fw_log, devname)
+#define json_error_log(err_log, entries)
+#define json_nvme_resv_report(status, bytes, eds)
+#define json_nvme_endurance_group_list(endgrp_list)
+#define json_id_domain_list(id_dom)
+#define json_nvme_id_uuid_list(uuid_list)
+#define json_nvme_id_ns_granularity_list(glist)
+#define json_nvme_list_secondary_ctrl(sc_list, count)
+#define json_nvme_primary_ctrl_cap(caps)
+#define json_nvme_id_nvmset(nvmset)
+#define json_nvme_list_ctrl(ctrl_list, num)
+#define json_nvme_zns_report_zones(report, descs, ext_size, report_size, zone_list)
+#define json_nvme_list_ctrl(ctrl_list, num)
+#define json_nvme_list_ns(ns_list)
+#define json_nvme_zns_id_ns(ns, id_ns)
+#define json_nvme_zns_id_ctrl(ctrl)
+#define json_nvme_nvm_id_ns(nvm_ns, ns, cap_only)
+#define json_nvme_id_ctrl_nvm(ctrl_nvm)
+#define json_nvme_id_ctrl(ctrl, vs)
+#define json_nvme_id_ns_descs(data)
+#define json_nvme_cmd_set_independent_id_ns(ns)
+#define json_ctrl_registers(bar)
+#define json_nvme_id_ns(ns, cap_only)
+#define json_print_nvme_subsystem_list(r, show_ana)
+#define json_supported_cap_config_log(cap_log)
+#define json_nvme_fdp_ruh_status(status, len)
+#define json_nvme_fdp_events(log)
+#define json_nvme_fdp_stats(log)
+#define json_nvme_fdp_usage(log, len)
+#define json_nvme_fdp_configs(log, len)
+#define json_media_unit_stat_log(mus)
+#define json_boot_part_log(bp_log)
+#define json_mi_cmd_support_effects_log(mi_cmd_log)
+#define json_fid_support_effects_log(fid_log)
+#define json_resv_notif_log(resv)
+#define json_endurance_group_event_agg_log(endurance_log, log_entries)
+#define json_lba_status_log(lba_status)
+#define add_bitmap(i, seb, root, json_flag)
+#define json_persistent_event_log(pevent_log_info, size)
+#define json_predictable_latency_event_agg_log(pea_log, log_entries)
+#define json_predictable_latency_per_nvmset(plpns_log, nvmset_id)
+
+/* fabrics.c */
+#define json_discovery_log(log, numrec)
+#define json_connect_msg(c)
+
+#endif /* !CONFIG_JSONC */
+
 #endif // NVME_PRINT_JSON_H_
index c92b2089b16d0f2db6fc086f781aeacb0610edde..2cf2486fe2f2193ed16d609464bf1bce853c8de0 100644 (file)
@@ -1,29 +1,31 @@
 # SPDX-License-Identifier: GPL-2.0-or-later
 
-sources += [
-  'plugins/amzn/amzn-nvme.c',
-  'plugins/dell/dell-nvme.c',
-  'plugins/dera/dera-nvme.c',
-  'plugins/huawei/huawei-nvme.c',
-  'plugins/intel/intel-nvme.c',
-  'plugins/innogrit/innogrit-nvme.c', 
-  'plugins/memblaze/memblaze-nvme.c',
-  'plugins/micron/micron-nvme.c',
-  'plugins/netapp/netapp-nvme.c',
-  'plugins/nvidia/nvidia-nvme.c',
-  'plugins/scaleflux/sfx-nvme.c',
-  'plugins/seagate/seagate-nvme.c',
-  'plugins/shannon/shannon-nvme.c',
-  'plugins/solidigm/solidigm-nvme.c',
-  'plugins/toshiba/toshiba-nvme.c',
-  'plugins/transcend/transcend-nvme.c',
-  'plugins/virtium/virtium-nvme.c',
-  'plugins/wdc/wdc-utils.c',
-  'plugins/wdc/wdc-nvme.c',
-  'plugins/ymtc/ymtc-nvme.c',
-  'plugins/zns/zns.c',
-  'plugins/inspur/inspur-nvme.c',
-  'plugins/fdp/fdp.c',
-]
-subdir('solidigm')
-subdir('ocp')
+if json_c_dep.found()
+  sources += [
+    'plugins/amzn/amzn-nvme.c',
+    'plugins/dell/dell-nvme.c',
+    'plugins/dera/dera-nvme.c',
+    'plugins/fdp/fdp.c',
+    'plugins/huawei/huawei-nvme.c',
+    'plugins/innogrit/innogrit-nvme.c',
+    'plugins/inspur/inspur-nvme.c',
+    'plugins/intel/intel-nvme.c',
+    'plugins/memblaze/memblaze-nvme.c',
+    'plugins/micron/micron-nvme.c',
+    'plugins/netapp/netapp-nvme.c',
+    'plugins/nvidia/nvidia-nvme.c',
+    'plugins/scaleflux/sfx-nvme.c',
+    'plugins/seagate/seagate-nvme.c',
+    'plugins/shannon/shannon-nvme.c',
+    'plugins/solidigm/solidigm-nvme.c',
+    'plugins/toshiba/toshiba-nvme.c',
+    'plugins/transcend/transcend-nvme.c',
+    'plugins/virtium/virtium-nvme.c',
+    'plugins/wdc/wdc-nvme.c',
+    'plugins/wdc/wdc-utils.c',
+    'plugins/ymtc/ymtc-nvme.c',
+    'plugins/zns/zns.c',
+  ]
+  subdir('solidigm')
+  subdir('ocp')
+endif
index 1312cb81dbe37314e96046596a6eee4b26608b89..6e35a26e257f7e5bd4c5753dffe41527d29d3d6b 100644 (file)
@@ -2,6 +2,7 @@
 #ifndef __JSON__H
 #define __JSON__H
 
+#ifdef CONFIG_JSONC
 #include <json.h>
 #include "util/types.h"
 
@@ -48,4 +49,11 @@ struct json_object *util_json_object_new_uint128(nvme_uint128_t val);
 struct json_object *util_json_object_new_uint128(nvme_uint128_t val);
 
 uint64_t util_json_object_get_uint64(struct json_object *obj);
+
+#else /* !CONFIG_JSONC */
+
+struct json_object;
+
+#endif
+
 #endif
index f658c043e0d79a22e977b00c1aefaec18bc3405e..f149d031956680746f34cfa155969e7f5b1f5dbf 100644 (file)
@@ -5,7 +5,12 @@ sources += [
   'util/base64.c',
   'util/cleanup.c',
   'util/crc32.c',
-  'util/json.c',
   'util/suffix.c',
   'util/types.c',
 ]
+
+if json_c_dep.found()
+  sources += [
+    'util/json.c',
+  ]
+endif