summaryrefslogtreecommitdiff
path: root/extmod
diff options
context:
space:
mode:
Diffstat (limited to 'extmod')
-rw-r--r--extmod/berkeley-db/berkeley_db_config_port.h16
-rw-r--r--extmod/extmod.cmake16
-rw-r--r--extmod/extmod.mk10
-rw-r--r--extmod/modbtree.c4
4 files changed, 31 insertions, 15 deletions
diff --git a/extmod/berkeley-db/berkeley_db_config_port.h b/extmod/berkeley-db/berkeley_db_config_port.h
new file mode 100644
index 000000000..41e4acd81
--- /dev/null
+++ b/extmod/berkeley-db/berkeley_db_config_port.h
@@ -0,0 +1,16 @@
+// Berkeley-db configuration.
+
+#define __DBINTERFACE_PRIVATE 1
+#define mpool_error printf
+#define abort abort_
+#define virt_fd_t void*
+
+#ifdef MICROPY_BERKELEY_DB_DEFPSIZE
+#define DEFPSIZE MICROPY_BERKELEY_DB_DEFPSIZE
+#endif
+
+#ifdef MICROPY_BERKELEY_DB_MINCACHE
+#define MINCACHE MICROPY_BERKELEY_DB_MINCACHE
+#endif
+
+__attribute__((noreturn)) void abort_(void);
diff --git a/extmod/extmod.cmake b/extmod/extmod.cmake
index 957580d15..60f1a23ad 100644
--- a/extmod/extmod.cmake
+++ b/extmod/extmod.cmake
@@ -132,27 +132,27 @@ if(MICROPY_PY_BTREE)
)
target_include_directories(micropy_extmod_btree PRIVATE
- ${MICROPY_LIB_BERKELEY_DIR}/PORT/include
+ ${MICROPY_LIB_BERKELEY_DIR}/include
)
+ if(NOT BERKELEY_DB_CONFIG_FILE)
+ set(BERKELEY_DB_CONFIG_FILE "${MICROPY_DIR}/extmod/berkeley-db/berkeley_db_config_port.h")
+ endif()
+
target_compile_definitions(micropy_extmod_btree PRIVATE
- __DBINTERFACE_PRIVATE=1
- mpool_error=printf
- abort=abort_
- "virt_fd_t=void*"
+ BERKELEY_DB_CONFIG_FILE="${BERKELEY_DB_CONFIG_FILE}"
)
# The include directories and compile definitions below are needed to build
# modbtree.c and should be added to the main MicroPython target.
list(APPEND MICROPY_INC_CORE
- "${MICROPY_LIB_BERKELEY_DIR}/PORT/include"
+ "${MICROPY_LIB_BERKELEY_DIR}/include"
)
list(APPEND MICROPY_DEF_CORE
MICROPY_PY_BTREE=1
- __DBINTERFACE_PRIVATE=1
- "virt_fd_t=void*"
+ BERKELEY_DB_CONFIG_FILE="${BERKELEY_DB_CONFIG_FILE}"
)
list(APPEND MICROPY_SOURCE_EXTMOD
diff --git a/extmod/extmod.mk b/extmod/extmod.mk
index bf686fbbb..f7c6f9988 100644
--- a/extmod/extmod.mk
+++ b/extmod/extmod.mk
@@ -381,8 +381,10 @@ endif
ifeq ($(MICROPY_PY_BTREE),1)
BTREE_DIR = lib/berkeley-db-1.xx
-BTREE_DEFS = -D__DBINTERFACE_PRIVATE=1 -Dmpool_error=printf -Dabort=abort_ "-Dvirt_fd_t=void*" $(BTREE_DEFS_EXTRA)
-INC += -I$(TOP)/$(BTREE_DIR)/PORT/include
+BERKELEY_DB_CONFIG_FILE ?= \"extmod/berkeley-db/berkeley_db_config_port.h\"
+CFLAGS_EXTMOD += -DBERKELEY_DB_CONFIG_FILE=$(BERKELEY_DB_CONFIG_FILE)
+CFLAGS_EXTMOD += $(BTREE_DEFS_EXTRA)
+INC += -I$(TOP)/$(BTREE_DIR)/include
SRC_THIRDPARTY_C += $(addprefix $(BTREE_DIR)/,\
btree/bt_close.c \
btree/bt_conv.c \
@@ -401,9 +403,7 @@ SRC_THIRDPARTY_C += $(addprefix $(BTREE_DIR)/,\
)
CFLAGS_EXTMOD += -DMICROPY_PY_BTREE=1
# we need to suppress certain warnings to get berkeley-db to compile cleanly
-# and we have separate BTREE_DEFS so the definitions don't interfere with other source code
-$(BUILD)/$(BTREE_DIR)/%.o: CFLAGS += -Wno-old-style-definition -Wno-sign-compare -Wno-unused-parameter -Wno-deprecated-non-prototype -Wno-unknown-warning-option $(BTREE_DEFS)
-$(BUILD)/extmod/modbtree.o: CFLAGS += $(BTREE_DEFS)
+$(BUILD)/$(BTREE_DIR)/%.o: CFLAGS += -Wno-old-style-definition -Wno-sign-compare -Wno-unused-parameter -Wno-deprecated-non-prototype -Wno-unknown-warning-option
endif
################################################################################
diff --git a/extmod/modbtree.c b/extmod/modbtree.c
index f8c38e0ad..55c13ac91 100644
--- a/extmod/modbtree.c
+++ b/extmod/modbtree.c
@@ -57,8 +57,8 @@
#undef CIRCLEQ_INSERT_TAIL
#undef CIRCLEQ_REMOVE
-#include <db.h>
-#include <../../btree/btree.h>
+#include "berkeley-db/db.h"
+#include "berkeley-db/btree.h"
typedef struct _mp_obj_btree_t {
mp_obj_base_t base;