From: Daniel Wagner Date: Tue, 7 Feb 2023 08:46:44 +0000 (+0100) Subject: nvme: Make json-c optional again X-Git-Tag: v2.4~71^2 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=ca819b349ef4b7bba3ef2b450108b80bb81601a5;p=users%2Fsagi%2Fnvme-cli.git nvme: Make json-c optional again But with the price that functionality is missing. Signed-off-by: Daniel Wagner --- diff --git a/meson.build b/meson.build index 2a720a66..9d8d4cfb 100644 --- a/meson.build +++ b/meson.build @@ -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') diff --git a/meson_options.txt b/meson_options.txt index 04843ea5..677942ae 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -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') diff --git a/nvme-print-json.h b/nvme-print-json.h index 43b200e5..6720d454 100644 --- a/nvme-print-json.h +++ b/nvme-print-json.h @@ -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_ diff --git a/plugins/meson.build b/plugins/meson.build index c92b2089..2cf2486f 100644 --- a/plugins/meson.build +++ b/plugins/meson.build @@ -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 diff --git a/util/json.h b/util/json.h index 1312cb81..6e35a26e 100644 --- a/util/json.h +++ b/util/json.h @@ -2,6 +2,7 @@ #ifndef __JSON__H #define __JSON__H +#ifdef CONFIG_JSONC #include #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 diff --git a/util/meson.build b/util/meson.build index f658c043..f149d031 100644 --- a/util/meson.build +++ b/util/meson.build @@ -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