diff --git a/nimble/host/mesh/include/mesh/glue.h b/nimble/host/mesh/include/mesh/glue.h
index abe3dd5..8c9166c 100644
--- a/nimble/host/mesh/include/mesh/glue.h
+++ b/nimble/host/mesh/include/mesh/glue.h
@@ -404,6 +404,7 @@
 #define CONFIG_SETTINGS                       BLE_MESH_SETTINGS
 #define CONFIG_BT_MESH_PROVISIONER            BLE_MESH_PROVISIONER
 #define CONFIG_BT_MESH_PROV_DEVICE            BLE_MESH_PROV_DEVICE
+#define CONFIG_BT_MESH_CDB                    BLE_MESH_CDB
 
 /* Above flags are used with IS_ENABLED macro */
 #define IS_ENABLED(config) MYNEWT_VAL(config)
@@ -442,7 +443,6 @@
 #define CONFIG_BT_MESH_RELAY                     MYNEWT_VAL(BLE_MESH_RELAY)
 #define CONFIG_BT_MESH_RELAY_RETRANSMIT_COUNT    MYNEWT_VAL(BLE_MESH_RELAY_RETRANSMIT_COUNT)
 #define CONFIG_BT_MESH_GATT_PROXY_ENABLED        MYNEWT_VAL(BLE_MESH_GATT_PROXY_ENABLED)
-#define CONFIG_BT_MESH_CDB                       BLE_MESH_CDB
 
 #define printk console_printf
 
diff --git a/nimble/host/mesh/src/app_keys.c b/nimble/host/mesh/src/app_keys.c
index a6c32bf..9582bbd 100644
--- a/nimble/host/mesh/src/app_keys.c
+++ b/nimble/host/mesh/src/app_keys.c
@@ -504,4 +504,4 @@
 			app_key_del(app);
 		}
 	}
-}
\ No newline at end of file
+}
diff --git a/nimble/host/mesh/src/cdb.c b/nimble/host/mesh/src/cdb.c
index bcca3b9..459730e 100644
--- a/nimble/host/mesh/src/cdb.c
+++ b/nimble/host/mesh/src/cdb.c
@@ -4,7 +4,6 @@
  * SPDX-License-Identifier: Apache-2.0
  */
 
-#if BLE_MESH_CDB
 #define BT_DBG_ENABLED MYNEWT_VAL(BLE_MESH_DEBUG_CDB)
 #define LOG_MODULE_NAME bt_mesh_cdb
 #include "log/log.h"
@@ -16,7 +15,7 @@
 #include "mesh_priv.h"
 #include "mesh/glue.h"
 
-
+#if MYNEWT_VAL(BLE_MESH_CDB)
 struct bt_mesh_cdb bt_mesh_cdb = {
 	.nodes = {
 		[0 ... (CONFIG_BT_MESH_NODE_COUNT - 1)] = {
diff --git a/nimble/host/mesh/src/mesh.c b/nimble/host/mesh/src/mesh.c
index bfb0e1a..bbb4ee3 100644
--- a/nimble/host/mesh/src/mesh.c
+++ b/nimble/host/mesh/src/mesh.c
@@ -399,4 +399,4 @@
 	bt_mesh_model_foreach(model_start, NULL);
 
 	return 0;
-}
\ No newline at end of file
+}
diff --git a/nimble/host/mesh/src/provisioner.c b/nimble/host/mesh/src/provisioner.c
index 371c1f6..d69aa66 100644
--- a/nimble/host/mesh/src/provisioner.c
+++ b/nimble/host/mesh/src/provisioner.c
@@ -37,7 +37,7 @@
 
 static int reset_state(void)
 {
-#if BLE_MESH_CDB
+#if MYNEWT_VAL(BLE_MESH_CDB)
 	if (prov_device.node != NULL) {
 		bt_mesh_cdb_node_del(prov_device.node, false);
 	}
@@ -238,7 +238,7 @@
 		prov_fail(PROV_ERR_NVAL_FMT);
 		return;
 	}
-#if BLE_MESH_CDB
+#if MYNEWT_VAL(BLE_MESH_CDB)
 	prov_device.node =
 		bt_mesh_cdb_node_alloc(prov_device.uuid,
 				       prov_device.addr, data[0],
@@ -454,7 +454,7 @@
 static void send_prov_data(void)
 {
 	struct os_mbuf *pdu = PROV_BUF(34);
-#if BLE_MESH_CDB
+#if MYNEWT_VAL(BLE_MESH_CDB)
 	struct bt_mesh_cdb_subnet *sub;
 #endif
 	uint8_t session_key[16];
@@ -490,7 +490,7 @@
 	}
 
 	BT_DBG("DevKey: %s", bt_hex(prov_device.node->dev_key, 16));
-#if BLE_MESH_CDB
+#if MYNEWT_VAL(BLE_MESH_CDB)
 	sub = bt_mesh_cdb_subnet_get(prov_device.node->net_idx);
 	if (sub == NULL) {
 		BT_ERR("No subnet with net_idx %u",
@@ -500,7 +500,7 @@
 	}
 #endif
 	bt_mesh_prov_buf_init(pdu, PROV_DATA);
-#if BLE_MESH_CDB
+#if MYNEWT_VAL(BLE_MESH_CDB)
 	net_buf_simple_add_mem(pdu, sub->keys[sub->kr_flag].net_key, 16);
 	net_buf_simple_add_be16(pdu, prov_device.node->net_idx);
 	net_buf_simple_add_u8(pdu, bt_mesh_cdb_subnet_flags(sub));
@@ -537,9 +537,11 @@
 	       bt_hex(node->dev_key, 16), node->net_idx, node->num_elem,
 	       node->addr);
 
+#if MYNEWT_VAL(BLE_MESH_CDB)
 	if (IS_ENABLED(CONFIG_BT_SETTINGS)) {
 		bt_mesh_store_cdb_node(node);
 	}
+#endif
 
 	prov_device.node = NULL;
 	prov_link_close(PROV_BEARER_LINK_STATUS_SUCCESS);
@@ -743,4 +745,4 @@
 
 	return err;
 }
-#endif
\ No newline at end of file
+#endif
diff --git a/nimble/host/mesh/src/settings.c b/nimble/host/mesh/src/settings.c
index 537bd78..30fbf5a 100644
--- a/nimble/host/mesh/src/settings.c
+++ b/nimble/host/mesh/src/settings.c
@@ -147,9 +147,6 @@
 static struct key_update cdb_key_updates[
 					MYNEWT_VAL(BLE_MESH_CDB_SUBNET_COUNT) +
 					MYNEWT_VAL(BLE_MESH_CDB_APP_KEY_COUNT)];
-#else
-static struct node_update cdb_node_updates[0];
-static struct key_update cdb_key_updates[0];
 #endif
 
 int settings_name_next(char *name, char **next)
@@ -1477,6 +1474,7 @@
 	}
 }
 
+#if MYNEWT_VAL(BLE_MESH_CDB)
 static void clear_cdb(void)
 {
 	int err;
@@ -1752,6 +1750,7 @@
 
 	return match;
 }
+#endif
 
 static void encode_mod_path(struct bt_mesh_model *mod, bool vnd,
 			    const char *key, char *path, size_t path_len)
@@ -2002,6 +2001,7 @@
 		store_pending_va();
 	}
 
+#if MYNEWT_VAL(BLE_MESH_CDB)
 	if (IS_ENABLED(CONFIG_BT_MESH_CDB)) {
 		if (atomic_test_and_clear_bit(bt_mesh_cdb.flags,
 					      BT_MESH_CDB_SUBNET_PENDING)) {
@@ -2023,6 +2023,7 @@
 			store_pending_cdb_keys();
 		}
 	}
+#endif
 }
 
 void bt_mesh_store_rpl(struct bt_mesh_rpl *entry)
@@ -2210,6 +2211,7 @@
 	schedule_store(BT_MESH_VA_PENDING);
 }
 
+#if MYNEWT_VAL(BLE_MESH_CDB)
 static void schedule_cdb_store(int flag)
 {
 	atomic_set_bit(bt_mesh_cdb.flags, flag);
@@ -2402,6 +2404,7 @@
 
 	schedule_cdb_store(BT_MESH_CDB_KEYS_PENDING);
 }
+#endif
 
 int bt_mesh_model_data_store(struct bt_mesh_model *mod, bool vnd,
 			     			 const char *name, const void *data,
diff --git a/nimble/host/mesh/src/shell.c b/nimble/host/mesh/src/shell.c
index d597ed6..1ac4caf 100644
--- a/nimble/host/mesh/src/shell.c
+++ b/nimble/host/mesh/src/shell.c
@@ -2719,7 +2719,7 @@
 	NULL, "[Fault ID]", NULL
 };
 
-#if BLE_MESH_CDB
+#if MYNEWT_VAL(BLE_MESH_CDB)
 struct shell_cmd_help cmd_cdb_create_help = {
 	NULL, "[NetKey]", NULL
 };
