libmdbx 0.1.0__tar.gz → 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {libmdbx-0.1.0 → libmdbx-0.2.0}/PKG-INFO +36 -5
- libmdbx-0.2.0/README.md +44 -0
- {libmdbx-0.1.0 → libmdbx-0.2.0}/build_mdbx.py +22 -4
- libmdbx-0.2.0/libmdbx/dist/GNUmakefile +384 -0
- libmdbx-0.2.0/libmdbx/dist/VERSION.txt +1 -0
- libmdbx-0.1.0/libmdbx/src/core.c → libmdbx-0.2.0/libmdbx/dist/mdbx.c +32531 -23060
- libmdbx-0.2.0/libmdbx/dist/mdbx.c++ +5889 -0
- libmdbx-0.2.0/libmdbx/dist/mdbx_chk.c +5998 -0
- libmdbx-0.2.0/libmdbx/dist/mdbx_copy.c +4292 -0
- libmdbx-0.2.0/libmdbx/dist/mdbx_drop.c +4331 -0
- libmdbx-0.2.0/libmdbx/dist/mdbx_dump.c +4661 -0
- libmdbx-0.2.0/libmdbx/dist/mdbx_load.c +5007 -0
- libmdbx-0.2.0/libmdbx/dist/mdbx_stat.c +4668 -0
- {libmdbx-0.1.0 → libmdbx-0.2.0}/mdbx/mdbx.py +736 -505
- {libmdbx-0.1.0 → libmdbx-0.2.0}/pyproject.toml +3 -3
- libmdbx-0.1.0/README.md +0 -13
- libmdbx-0.1.0/libmdbx/.clang-format +0 -3
- libmdbx-0.1.0/libmdbx/.git +0 -1
- libmdbx-0.1.0/libmdbx/.gitignore +0 -47
- libmdbx-0.1.0/libmdbx/.le.ini +0 -40
- libmdbx-0.1.0/libmdbx/AUTHORS +0 -34
- libmdbx-0.1.0/libmdbx/CMakeSettings.json +0 -26
- libmdbx-0.1.0/libmdbx/COPYRIGHT +0 -22
- libmdbx-0.1.0/libmdbx/GNUmakefile +0 -852
- libmdbx-0.1.0/libmdbx/TODO.md +0 -29
- libmdbx-0.1.0/libmdbx/docs/Doxyfile.in +0 -2645
- libmdbx-0.1.0/libmdbx/docs/_preface.md +0 -47
- libmdbx-0.1.0/libmdbx/docs/_restrictions.md +0 -220
- libmdbx-0.1.0/libmdbx/docs/_starting.md +0 -242
- libmdbx-0.1.0/libmdbx/docs/_toc.md +0 -41
- libmdbx-0.1.0/libmdbx/example/CMakeLists.txt +0 -6
- libmdbx-0.1.0/libmdbx/example/README.md +0 -1
- libmdbx-0.1.0/libmdbx/example/example-mdbx.c +0 -167
- libmdbx-0.1.0/libmdbx/example/sample-bdb.txt +0 -77
- libmdbx-0.1.0/libmdbx/packages/buildroot/0001-package-libmdbx-new-package-library-database.patch +0 -173
- libmdbx-0.1.0/libmdbx/packages/rpm.obsolete/CMakeLists.txt +0 -184
- libmdbx-0.1.0/libmdbx/packages/rpm.obsolete/build.sh +0 -18
- libmdbx-0.1.0/libmdbx/packages/rpm.obsolete/package.sh +0 -25
- libmdbx-0.1.0/libmdbx/src/alloy.c +0 -25
- libmdbx-0.1.0/libmdbx/src/base.h +0 -778
- libmdbx-0.1.0/libmdbx/src/bits.md +0 -34
- libmdbx-0.1.0/libmdbx/src/debug_begin.h +0 -42
- libmdbx-0.1.0/libmdbx/src/debug_end.h +0 -15
- libmdbx-0.1.0/libmdbx/src/internals.h +0 -1794
- libmdbx-0.1.0/libmdbx/src/lck-posix.c +0 -956
- libmdbx-0.1.0/libmdbx/src/lck-windows.c +0 -914
- libmdbx-0.1.0/libmdbx/src/mdbx.c++ +0 -1841
- libmdbx-0.1.0/libmdbx/src/mdbx_chk.c +0 -1864
- libmdbx-0.1.0/libmdbx/src/mdbx_copy.c +0 -158
- libmdbx-0.1.0/libmdbx/src/mdbx_drop.c +0 -197
- libmdbx-0.1.0/libmdbx/src/mdbx_dump.c +0 -527
- libmdbx-0.1.0/libmdbx/src/mdbx_load.c +0 -873
- libmdbx-0.1.0/libmdbx/src/mdbx_stat.c +0 -534
- libmdbx-0.1.0/libmdbx/src/options.h +0 -524
- libmdbx-0.1.0/libmdbx/src/osal.c +0 -3522
- libmdbx-0.1.0/libmdbx/src/osal.h +0 -962
- libmdbx-0.1.0/libmdbx/src/version.c.in +0 -46
- libmdbx-0.1.0/libmdbx/src/wingetopt.c +0 -88
- libmdbx-0.1.0/libmdbx/src/wingetopt.h +0 -30
- libmdbx-0.1.0/libmdbx/test/CMakeLists.txt +0 -197
- libmdbx-0.1.0/libmdbx/test/append.c++ +0 -261
- libmdbx-0.1.0/libmdbx/test/base.h++ +0 -134
- libmdbx-0.1.0/libmdbx/test/cases.c++ +0 -134
- libmdbx-0.1.0/libmdbx/test/chrono.c++ +0 -157
- libmdbx-0.1.0/libmdbx/test/chrono.h++ +0 -99
- libmdbx-0.1.0/libmdbx/test/config.c++ +0 -731
- libmdbx-0.1.0/libmdbx/test/config.h++ +0 -359
- libmdbx-0.1.0/libmdbx/test/copy.c++ +0 -38
- libmdbx-0.1.0/libmdbx/test/dead.c++ +0 -52
- libmdbx-0.1.0/libmdbx/test/dump-load.sh +0 -40
- libmdbx-0.1.0/libmdbx/test/extra/dbi.c++ +0 -38
- libmdbx-0.1.0/libmdbx/test/extra/dupfixed_addodd.c +0 -93
- libmdbx-0.1.0/libmdbx/test/extra/dupfixed_multiple.c++ +0 -210
- libmdbx-0.1.0/libmdbx/test/extra/early_close_dbi.c++ +0 -110
- libmdbx-0.1.0/libmdbx/test/extra/maindb_ordinal.c++ +0 -59
- libmdbx-0.1.0/libmdbx/test/extra/pcrf/README.md +0 -2
- libmdbx-0.1.0/libmdbx/test/extra/pcrf/pcrf_test.c +0 -413
- libmdbx-0.1.0/libmdbx/test/extra/upsert_alldups.c +0 -195
- libmdbx-0.1.0/libmdbx/test/hill.c++ +0 -472
- libmdbx-0.1.0/libmdbx/test/jitter.c++ +0 -188
- libmdbx-0.1.0/libmdbx/test/keygen.c++ +0 -392
- libmdbx-0.1.0/libmdbx/test/keygen.h++ +0 -149
- libmdbx-0.1.0/libmdbx/test/log.c++ +0 -374
- libmdbx-0.1.0/libmdbx/test/log.h++ +0 -107
- libmdbx-0.1.0/libmdbx/test/long_stochastic.sh +0 -548
- libmdbx-0.1.0/libmdbx/test/main.c++ +0 -743
- libmdbx-0.1.0/libmdbx/test/nested.c++ +0 -355
- libmdbx-0.1.0/libmdbx/test/osal-unix.c++ +0 -662
- libmdbx-0.1.0/libmdbx/test/osal-windows.c++ +0 -463
- libmdbx-0.1.0/libmdbx/test/osal.h++ +0 -48
- libmdbx-0.1.0/libmdbx/test/stochastic_small.sh +0 -458
- libmdbx-0.1.0/libmdbx/test/stub/LICENSE +0 -24
- libmdbx-0.1.0/libmdbx/test/stub/README.md +0 -8
- libmdbx-0.1.0/libmdbx/test/stub/pthread_barrier.c +0 -106
- libmdbx-0.1.0/libmdbx/test/stub/pthread_barrier.h +0 -79
- libmdbx-0.1.0/libmdbx/test/test.c++ +0 -1286
- libmdbx-0.1.0/libmdbx/test/test.h++ +0 -336
- libmdbx-0.1.0/libmdbx/test/try.c++ +0 -28
- libmdbx-0.1.0/libmdbx/test/ttl.c++ +0 -269
- libmdbx-0.1.0/libmdbx/test/utils.c++ +0 -220
- libmdbx-0.1.0/libmdbx/test/utils.h++ +0 -360
- libmdbx-0.1.0/libmdbx/test/valgrind_suppress.txt +0 -609
- {libmdbx-0.1.0 → libmdbx-0.2.0}/LICENSE +0 -0
- {libmdbx-0.1.0/libmdbx → libmdbx-0.2.0/libmdbx/dist}/CMakeLists.txt +0 -0
- {libmdbx-0.1.0/libmdbx → libmdbx-0.2.0/libmdbx/dist}/ChangeLog.md +0 -0
- {libmdbx-0.1.0/libmdbx → libmdbx-0.2.0/libmdbx/dist}/LICENSE +0 -0
- {libmdbx-0.1.0/libmdbx → libmdbx-0.2.0/libmdbx/dist}/Makefile +0 -0
- {libmdbx-0.1.0/libmdbx → libmdbx-0.2.0/libmdbx/dist}/README.md +0 -0
- {libmdbx-0.1.0/libmdbx → libmdbx-0.2.0/libmdbx/dist}/cmake/compiler.cmake +0 -0
- {libmdbx-0.1.0/libmdbx → libmdbx-0.2.0/libmdbx/dist}/cmake/profile.cmake +0 -0
- {libmdbx-0.1.0/libmdbx → libmdbx-0.2.0/libmdbx/dist}/cmake/utils.cmake +0 -0
- {libmdbx-0.1.0/libmdbx/src → libmdbx-0.2.0/libmdbx/dist}/config.h.in +0 -0
- {libmdbx-0.1.0/libmdbx/src → libmdbx-0.2.0/libmdbx/dist}/man1/mdbx_chk.1 +0 -0
- {libmdbx-0.1.0/libmdbx/src → libmdbx-0.2.0/libmdbx/dist}/man1/mdbx_copy.1 +0 -0
- {libmdbx-0.1.0/libmdbx/src → libmdbx-0.2.0/libmdbx/dist}/man1/mdbx_drop.1 +0 -0
- {libmdbx-0.1.0/libmdbx/src → libmdbx-0.2.0/libmdbx/dist}/man1/mdbx_dump.1 +0 -0
- {libmdbx-0.1.0/libmdbx/src → libmdbx-0.2.0/libmdbx/dist}/man1/mdbx_load.1 +0 -0
- {libmdbx-0.1.0/libmdbx/src → libmdbx-0.2.0/libmdbx/dist}/man1/mdbx_stat.1 +0 -0
- {libmdbx-0.1.0/libmdbx → libmdbx-0.2.0/libmdbx/dist}/mdbx.h +0 -0
- {libmdbx-0.1.0/libmdbx → libmdbx-0.2.0/libmdbx/dist}/mdbx.h++ +0 -0
- {libmdbx-0.1.0/libmdbx/src → libmdbx-0.2.0/libmdbx/dist}/ntdll.def +0 -0
- {libmdbx-0.1.0 → libmdbx-0.2.0}/mdbx/__init__.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: libmdbx
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: The python bindings to libmdbx.
|
|
5
5
|
Home-page: https://github.com/wtdcode/mdbx-py
|
|
6
6
|
Keywords: mdbx,libmdbx,kvdb,bindings
|
|
@@ -17,9 +17,7 @@ Description-Content-Type: text/markdown
|
|
|
17
17
|
|
|
18
18
|
# Python bindings for libmdbx
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
Originally forked from [libmdbx](https://github.com/erthink/libmdbx/tree/python-bindings) with a few bugs fixed.
|
|
20
|
+
Python bindings for libmdbx.
|
|
23
21
|
|
|
24
22
|
Try it with
|
|
25
23
|
|
|
@@ -27,4 +25,37 @@ Try it with
|
|
|
27
25
|
pip install libmdbx
|
|
28
26
|
```
|
|
29
27
|
|
|
30
|
-
Contributions and feedbacks are highly welcome.
|
|
28
|
+
Contributions and feedbacks are highly welcome.
|
|
29
|
+
|
|
30
|
+
## Usage
|
|
31
|
+
|
|
32
|
+
A quick sample to read all values from the default database:
|
|
33
|
+
|
|
34
|
+
```python
|
|
35
|
+
with Env(...) as env:
|
|
36
|
+
with env.ro_transaction() as txn:
|
|
37
|
+
with txn.cursor() as cur:
|
|
38
|
+
for k, v in cur.iter():
|
|
39
|
+
...
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Manual build
|
|
43
|
+
|
|
44
|
+
Clone the repo
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
git clone https://github.com/wtdcode/mdbx-py
|
|
48
|
+
git submodule update --init --recursive
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Install via poetry
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
poetry install
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
That's it!
|
|
58
|
+
|
|
59
|
+
## Credits
|
|
60
|
+
|
|
61
|
+
Forked from [libmdbx](https://github.com/erthink/libmdbx/tree/python-bindings)
|
libmdbx-0.2.0/README.md
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Python bindings for libmdbx
|
|
2
|
+
|
|
3
|
+
Python bindings for libmdbx.
|
|
4
|
+
|
|
5
|
+
Try it with
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pip install libmdbx
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Contributions and feedbacks are highly welcome.
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
A quick sample to read all values from the default database:
|
|
16
|
+
|
|
17
|
+
```python
|
|
18
|
+
with Env(...) as env:
|
|
19
|
+
with env.ro_transaction() as txn:
|
|
20
|
+
with txn.cursor() as cur:
|
|
21
|
+
for k, v in cur.iter():
|
|
22
|
+
...
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Manual build
|
|
26
|
+
|
|
27
|
+
Clone the repo
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
git clone https://github.com/wtdcode/mdbx-py
|
|
31
|
+
git submodule update --init --recursive
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Install via poetry
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
poetry install
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
That's it!
|
|
41
|
+
|
|
42
|
+
## Credits
|
|
43
|
+
|
|
44
|
+
Forked from [libmdbx](https://github.com/erthink/libmdbx/tree/python-bindings)
|
|
@@ -16,8 +16,13 @@ SO_FILE = {
|
|
|
16
16
|
|
|
17
17
|
def ensure_dependency():
|
|
18
18
|
subprocess.check_call(["cmake", "--version"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
|
|
20
|
+
def have_git():
|
|
21
|
+
try:
|
|
22
|
+
subprocess.check_call(["git", "--version"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
|
23
|
+
return True
|
|
24
|
+
except Exception as e:
|
|
25
|
+
return False
|
|
21
26
|
|
|
22
27
|
def build(setup_kws: dict):
|
|
23
28
|
ensure_dependency()
|
|
@@ -25,6 +30,19 @@ def build(setup_kws: dict):
|
|
|
25
30
|
pwd = Path(__file__).parent.resolve()
|
|
26
31
|
out_lib = pwd / "mdbx" / "lib"
|
|
27
32
|
libmdbx_source = pwd / "libmdbx"
|
|
33
|
+
dist_folder = libmdbx_source / "dist"
|
|
34
|
+
|
|
35
|
+
# If there is already dist
|
|
36
|
+
if not dist_folder.exists():
|
|
37
|
+
if sys.platform in ["linux", "linux2", "darwin"]:
|
|
38
|
+
subprocess.check_call(["make", "dist"], cwd=libmdbx_source)
|
|
39
|
+
|
|
40
|
+
if have_git() and (libmdbx_source / ".git").exists():
|
|
41
|
+
source_folder = libmdbx_source
|
|
42
|
+
elif dist_folder.exists():
|
|
43
|
+
source_folder = dist_folder
|
|
44
|
+
else:
|
|
45
|
+
raise RuntimeError("Either we need git or we must have a dist available. Did you init submodules?")
|
|
28
46
|
|
|
29
47
|
tmpdir = None
|
|
30
48
|
if debug:
|
|
@@ -55,7 +73,7 @@ def build(setup_kws: dict):
|
|
|
55
73
|
]
|
|
56
74
|
|
|
57
75
|
cmake_gen += [
|
|
58
|
-
"-S", str(
|
|
76
|
+
"-S", str(source_folder.absolute()), "-B", str(tmpdir_path.absolute())
|
|
59
77
|
]
|
|
60
78
|
cmake_gen += build_type
|
|
61
79
|
subprocess.check_call(
|
|
@@ -69,7 +87,7 @@ def build(setup_kws: dict):
|
|
|
69
87
|
if out_lib.exists():
|
|
70
88
|
shutil.rmtree(out_lib)
|
|
71
89
|
os.makedirs(out_lib, exist_ok=True)
|
|
72
|
-
shutil.copy(
|
|
90
|
+
shutil.copy(source_folder / "LICENSE", out_lib)
|
|
73
91
|
|
|
74
92
|
if sys.platform != "win32":
|
|
75
93
|
subprocess.check_call(
|
|
@@ -0,0 +1,384 @@
|
|
|
1
|
+
# This makefile is for GNU Make 3.80 or above, and nowadays provided
|
|
2
|
+
# just for compatibility and preservation of traditions.
|
|
3
|
+
#
|
|
4
|
+
# Please use CMake in case of any difficulties or
|
|
5
|
+
# problems with this old-school's magic.
|
|
6
|
+
#
|
|
7
|
+
################################################################################
|
|
8
|
+
#
|
|
9
|
+
# Basic internal definitions. For a customizable variables and options see below.
|
|
10
|
+
#
|
|
11
|
+
$(info // The GNU Make $(MAKE_VERSION))
|
|
12
|
+
SHELL := $(shell env bash -c 'echo $$BASH')
|
|
13
|
+
MAKE_VERx3 := $(shell printf "%3s%3s%3s" $(subst ., ,$(MAKE_VERSION)))
|
|
14
|
+
make_lt_3_81 := $(shell expr "$(MAKE_VERx3)" "<" " 3 81")
|
|
15
|
+
ifneq ($(make_lt_3_81),0)
|
|
16
|
+
$(error Please use GNU Make 3.81 or above)
|
|
17
|
+
endif
|
|
18
|
+
make_ge_4_1 := $(shell expr "$(MAKE_VERx3)" ">=" " 4 1")
|
|
19
|
+
SRC_PROBE_C := $(shell [ -f mdbx.c ] && echo mdbx.c || echo src/osal.c)
|
|
20
|
+
SRC_PROBE_CXX := $(shell [ -f mdbx.c++ ] && echo mdbx.c++ || echo src/mdbx.c++)
|
|
21
|
+
UNAME := $(shell uname -s 2>/dev/null || echo Unknown)
|
|
22
|
+
|
|
23
|
+
define cxx_filesystem_probe
|
|
24
|
+
int main(int argc, const char*argv[]) {
|
|
25
|
+
mdbx::filesystem::path probe(argv[0]);
|
|
26
|
+
if (argc != 1) throw mdbx::filesystem::filesystem_error(std::string("fake"), std::error_code());
|
|
27
|
+
return mdbx::filesystem::is_directory(probe.relative_path());
|
|
28
|
+
}
|
|
29
|
+
endef
|
|
30
|
+
#
|
|
31
|
+
################################################################################
|
|
32
|
+
#
|
|
33
|
+
# Use `make options` to list the available libmdbx build options.
|
|
34
|
+
#
|
|
35
|
+
# Note that the defaults should already be correct for most platforms;
|
|
36
|
+
# you should not need to change any of these. Read their descriptions
|
|
37
|
+
# in README and source code (see src/options.h) if you do.
|
|
38
|
+
#
|
|
39
|
+
|
|
40
|
+
# install sandbox
|
|
41
|
+
DESTDIR ?=
|
|
42
|
+
INSTALL ?= install
|
|
43
|
+
# install prefixes (inside sandbox)
|
|
44
|
+
prefix ?= /usr/local
|
|
45
|
+
mandir ?= $(prefix)/man
|
|
46
|
+
# lib/bin suffix for multiarch/biarch, e.g. '.x86_64'
|
|
47
|
+
suffix ?=
|
|
48
|
+
|
|
49
|
+
# toolchain
|
|
50
|
+
CC ?= gcc
|
|
51
|
+
CXX ?= g++
|
|
52
|
+
CFLAGS_EXTRA ?=
|
|
53
|
+
LD ?= ld
|
|
54
|
+
|
|
55
|
+
# build options
|
|
56
|
+
MDBX_BUILD_OPTIONS ?=-DNDEBUG=1
|
|
57
|
+
MDBX_BUILD_TIMESTAMP ?=$(shell date +%Y-%m-%dT%H:%M:%S%z)
|
|
58
|
+
MDBX_BUILD_CXX ?= YES
|
|
59
|
+
|
|
60
|
+
# probe and compose common compiler flags with variable expansion trick (seems this work two times per session for GNU Make 3.81)
|
|
61
|
+
CFLAGS ?= $(strip $(eval CFLAGS := -std=gnu11 -O2 -g -Wall -Werror -Wextra -Wpedantic -ffunction-sections -fPIC -fvisibility=hidden -pthread -Wno-error=attributes $$(shell for opt in -fno-semantic-interposition -Wno-unused-command-line-argument -Wno-tautological-compare; do [ -z "$$$$($(CC) '-DMDBX_BUILD_FLAGS="probe"' $$$${opt} -c $(SRC_PROBE_C) -o /dev/null >/dev/null 2>&1 || echo failed)" ] && echo "$$$${opt} "; done)$(CFLAGS_EXTRA))$(CFLAGS))
|
|
62
|
+
|
|
63
|
+
# choosing C++ standard with variable expansion trick (seems this work two times per session for GNU Make 3.81)
|
|
64
|
+
CXXSTD ?= $(eval CXXSTD := $$(shell for std in gnu++23 c++23 gnu++2b c++2b gnu++20 c++20 gnu++2a c++2a gnu++17 c++17 gnu++1z c++1z gnu++14 c++14 gnu++1y c++1y gnu+11 c++11 gnu++0x c++0x; do $(CXX) -std=$$$${std} -c $(SRC_PROBE_CXX) -o /dev/null 2>probe4std-$$$${std}.err >/dev/null && echo "-std=$$$${std}" && exit; done))$(CXXSTD)
|
|
65
|
+
CXXFLAGS ?= $(strip $(CXXSTD) $(filter-out -std=gnu11,$(CFLAGS)))
|
|
66
|
+
|
|
67
|
+
# libraries and options for linking
|
|
68
|
+
EXE_LDFLAGS ?= -pthread
|
|
69
|
+
ifneq ($(make_ge_4_1),1)
|
|
70
|
+
# don't use variable expansion trick as workaround for bugs of GNU Make before 4.1
|
|
71
|
+
LIBS ?= $(shell $(uname2libs))
|
|
72
|
+
LDFLAGS ?= $(shell $(uname2ldflags))
|
|
73
|
+
LIB_STDCXXFS ?= $(shell echo '$(cxx_filesystem_probe)' | cat mdbx.h++ - | sed $$'1s/\xef\xbb\xbf//' | $(CXX) -x c++ $(CXXFLAGS) -Wno-error - -Wl,--allow-multiple-definition -lstdc++fs $(LIBS) $(LDFLAGS) $(EXE_LDFLAGS) -o /dev/null 2>probe4lstdfs.err >/dev/null && echo '-Wl,--allow-multiple-definition -lstdc++fs')
|
|
74
|
+
else
|
|
75
|
+
# using variable expansion trick to avoid repeaded probes
|
|
76
|
+
LIBS ?= $(eval LIBS := $$(shell $$(uname2libs)))$(LIBS)
|
|
77
|
+
LDFLAGS ?= $(eval LDFLAGS := $$(shell $$(uname2ldflags)))$(LDFLAGS)
|
|
78
|
+
LIB_STDCXXFS ?= $(eval LIB_STDCXXFS := $$(shell echo '$$(cxx_filesystem_probe)' | cat mdbx.h++ - | sed $$$$'1s/\xef\xbb\xbf//' | $(CXX) -x c++ $(CXXFLAGS) -Wno-error - -Wl,--allow-multiple-definition -lstdc++fs $(LIBS) $(LDFLAGS) $(EXE_LDFLAGS) -o /dev/null 2>probe4lstdfs.err >/dev/null && echo '-Wl,--allow-multiple-definition -lstdc++fs'))$(LIB_STDCXXFS)
|
|
79
|
+
endif
|
|
80
|
+
|
|
81
|
+
################################################################################
|
|
82
|
+
|
|
83
|
+
define uname2sosuffix
|
|
84
|
+
case "$(UNAME)" in
|
|
85
|
+
Darwin*|Mach*) echo dylib;;
|
|
86
|
+
CYGWIN*|MINGW*|MSYS*|Windows*) echo dll;;
|
|
87
|
+
*) echo so;;
|
|
88
|
+
esac
|
|
89
|
+
endef
|
|
90
|
+
|
|
91
|
+
define uname2ldflags
|
|
92
|
+
case "$(UNAME)" in
|
|
93
|
+
CYGWIN*|MINGW*|MSYS*|Windows*)
|
|
94
|
+
echo '-Wl,--gc-sections,-O1';
|
|
95
|
+
;;
|
|
96
|
+
*)
|
|
97
|
+
$(LD) --help 2>/dev/null | grep -q -- --gc-sections && echo '-Wl,--gc-sections,-z,relro,-O1';
|
|
98
|
+
$(LD) --help 2>/dev/null | grep -q -- -dead_strip && echo '-Wl,-dead_strip';
|
|
99
|
+
;;
|
|
100
|
+
esac
|
|
101
|
+
endef
|
|
102
|
+
|
|
103
|
+
# TIP: try add the'-Wl, --no-as-needed,-lrt' for ability to built with modern glibc, but then use with the old.
|
|
104
|
+
define uname2libs
|
|
105
|
+
case "$(UNAME)" in
|
|
106
|
+
CYGWIN*|MINGW*|MSYS*|Windows*)
|
|
107
|
+
echo '-lm -lntdll -lwinmm';
|
|
108
|
+
;;
|
|
109
|
+
*SunOS*|*Solaris*)
|
|
110
|
+
echo '-lm -lkstat -lrt';
|
|
111
|
+
;;
|
|
112
|
+
*Darwin*|OpenBSD*)
|
|
113
|
+
echo '-lm';
|
|
114
|
+
;;
|
|
115
|
+
*)
|
|
116
|
+
echo '-lm -lrt';
|
|
117
|
+
;;
|
|
118
|
+
esac
|
|
119
|
+
endef
|
|
120
|
+
|
|
121
|
+
SO_SUFFIX := $(shell $(uname2sosuffix))
|
|
122
|
+
HEADERS := mdbx.h mdbx.h++
|
|
123
|
+
LIBRARIES := libmdbx.a libmdbx.$(SO_SUFFIX)
|
|
124
|
+
TOOLS := mdbx_stat mdbx_copy mdbx_dump mdbx_load mdbx_chk mdbx_drop
|
|
125
|
+
MANPAGES := mdbx_stat.1 mdbx_copy.1 mdbx_dump.1 mdbx_load.1 mdbx_chk.1 mdbx_drop.1
|
|
126
|
+
TIP := // TIP:
|
|
127
|
+
|
|
128
|
+
.PHONY: all help options lib libs tools clean install uninstall check_buildflags_tag tools-static
|
|
129
|
+
.PHONY: install-strip install-no-strip strip libmdbx mdbx show-options lib-static lib-shared
|
|
130
|
+
|
|
131
|
+
boolean = $(if $(findstring $(strip $($1)),YES Yes yes y ON On on 1 true True TRUE),1,$(if $(findstring $(strip $($1)),NO No no n OFF Off off 0 false False FALSE),,$(error Wrong value `$($1)` of $1 for YES/NO option)))
|
|
132
|
+
select_by = $(if $(call boolean,$(1)),$(2),$(3))
|
|
133
|
+
|
|
134
|
+
ifeq ("$(origin V)", "command line")
|
|
135
|
+
MDBX_BUILD_VERBOSE := $(V)
|
|
136
|
+
endif
|
|
137
|
+
ifndef MDBX_BUILD_VERBOSE
|
|
138
|
+
MDBX_BUILD_VERBOSE := 0
|
|
139
|
+
endif
|
|
140
|
+
|
|
141
|
+
ifeq ($(call boolean,MDBX_BUILD_VERBOSE),1)
|
|
142
|
+
QUIET :=
|
|
143
|
+
HUSH :=
|
|
144
|
+
$(info $(TIP) Use `make V=0` for quiet.)
|
|
145
|
+
else
|
|
146
|
+
QUIET := @
|
|
147
|
+
HUSH := >/dev/null
|
|
148
|
+
$(info $(TIP) Use `make V=1` for verbose.)
|
|
149
|
+
endif
|
|
150
|
+
|
|
151
|
+
all: show-options $(LIBRARIES) $(TOOLS)
|
|
152
|
+
|
|
153
|
+
help:
|
|
154
|
+
@echo " make all - build libraries and tools"
|
|
155
|
+
@echo " make help - print this help"
|
|
156
|
+
@echo " make options - list build options"
|
|
157
|
+
@echo " make lib - build libraries, also lib-static and lib-shared"
|
|
158
|
+
@echo " make tools - build the tools"
|
|
159
|
+
@echo " make tools-static - build the tools with statically linking with system libraries and compiler runtime"
|
|
160
|
+
@echo " make clean "
|
|
161
|
+
@echo " make install "
|
|
162
|
+
@echo " make uninstall "
|
|
163
|
+
@echo ""
|
|
164
|
+
@echo " make strip - strip debug symbols from binaries"
|
|
165
|
+
@echo " make install-no-strip - install explicitly without strip"
|
|
166
|
+
@echo " make install-strip - install explicitly with strip"
|
|
167
|
+
@echo ""
|
|
168
|
+
@echo " make bench - run ioarena-benchmark"
|
|
169
|
+
@echo " make bench-couple - run ioarena-benchmark for mdbx and lmdb"
|
|
170
|
+
@echo " make bench-triplet - run ioarena-benchmark for mdbx, lmdb, sqlite3"
|
|
171
|
+
@echo " make bench-quartet - run ioarena-benchmark for mdbx, lmdb, rocksdb, wiredtiger"
|
|
172
|
+
@echo " make bench-clean - remove temp database(s) after benchmark"
|
|
173
|
+
|
|
174
|
+
show-options:
|
|
175
|
+
@echo " MDBX_BUILD_OPTIONS = $(MDBX_BUILD_OPTIONS)"
|
|
176
|
+
@echo " MDBX_BUILD_CXX = $(MDBX_BUILD_CXX)"
|
|
177
|
+
@echo " MDBX_BUILD_TIMESTAMP = $(MDBX_BUILD_TIMESTAMP)"
|
|
178
|
+
@echo '$(TIP) Use `make options` to listing available build options.'
|
|
179
|
+
@echo $(call select_by,MDBX_BUILD_CXX," CXX =`which $(CXX)` | `$(CXX) --version | head -1`"," CC =`which $(CC)` | `$(CC) --version | head -1`")
|
|
180
|
+
@echo $(call select_by,MDBX_BUILD_CXX," CXXFLAGS =$(CXXFLAGS)"," CFLAGS =$(CFLAGS)")
|
|
181
|
+
@echo $(call select_by,MDBX_BUILD_CXX," LDFLAGS =$(LDFLAGS) $(LIB_STDCXXFS) $(LIBS) $(EXE_LDFLAGS)"," LDFLAGS =$(LDFLAGS) $(LIBS) $(EXE_LDFLAGS)")
|
|
182
|
+
@echo '$(TIP) Use `make help` to listing available targets.'
|
|
183
|
+
|
|
184
|
+
options:
|
|
185
|
+
@echo " INSTALL =$(INSTALL)"
|
|
186
|
+
@echo " DESTDIR =$(DESTDIR)"
|
|
187
|
+
@echo " prefix =$(prefix)"
|
|
188
|
+
@echo " mandir =$(mandir)"
|
|
189
|
+
@echo " suffix =$(suffix)"
|
|
190
|
+
@echo ""
|
|
191
|
+
@echo " CC =$(CC)"
|
|
192
|
+
@echo " CFLAGS_EXTRA =$(CFLAGS_EXTRA)"
|
|
193
|
+
@echo " CFLAGS =$(CFLAGS)"
|
|
194
|
+
@echo " CXX =$(CXX)"
|
|
195
|
+
@echo " CXXSTD =$(CXXSTD)"
|
|
196
|
+
@echo " CXXFLAGS =$(CXXFLAGS)"
|
|
197
|
+
@echo ""
|
|
198
|
+
@echo " LD =$(LD)"
|
|
199
|
+
@echo " LDFLAGS =$(LDFLAGS)"
|
|
200
|
+
@echo " EXE_LDFLAGS =$(EXE_LDFLAGS)"
|
|
201
|
+
@echo " LIBS =$(LIBS)"
|
|
202
|
+
@echo ""
|
|
203
|
+
@echo " MDBX_BUILD_OPTIONS = $(MDBX_BUILD_OPTIONS)"
|
|
204
|
+
@echo " MDBX_BUILD_TIMESTAMP = $(MDBX_BUILD_TIMESTAMP)"
|
|
205
|
+
@echo ""
|
|
206
|
+
@echo "## Assortment items for MDBX_BUILD_OPTIONS:"
|
|
207
|
+
@echo "## Note that the defaults should already be correct for most platforms;"
|
|
208
|
+
@echo "## you should not need to change any of these. Read their descriptions"
|
|
209
|
+
@echo "## in README and source code (see mdbx.c) if you do."
|
|
210
|
+
@grep -h '#ifndef MDBX_' mdbx.c | grep -v BUILD | uniq | sed 's/#ifndef / /'
|
|
211
|
+
|
|
212
|
+
lib libs libmdbx mdbx: libmdbx.a libmdbx.$(SO_SUFFIX)
|
|
213
|
+
|
|
214
|
+
tools: $(TOOLS)
|
|
215
|
+
tools-static: $(addsuffix .static,$(TOOLS)) $(addsuffix .static-lto,$(TOOLS))
|
|
216
|
+
|
|
217
|
+
strip: all
|
|
218
|
+
@echo ' STRIP libmdbx.$(SO_SUFFIX) $(TOOLS)'
|
|
219
|
+
$(TRACE )strip libmdbx.$(SO_SUFFIX) $(TOOLS)
|
|
220
|
+
|
|
221
|
+
clean:
|
|
222
|
+
@echo ' REMOVE ...'
|
|
223
|
+
$(QUIET)rm -rf $(TOOLS) mdbx_test @* *.[ao] *.[ls]o *.$(SO_SUFFIX) *.dSYM *~ tmp.db/* \
|
|
224
|
+
*.gcov *.log *.err src/*.o test/*.o mdbx_example dist \
|
|
225
|
+
config.h src/config.h src/version.c *.tar* buildflags.tag \
|
|
226
|
+
mdbx_*.static mdbx_*.static-lto
|
|
227
|
+
|
|
228
|
+
MDBX_BUILD_FLAGS =$(strip MDBX_BUILD_CXX=$(MDBX_BUILD_CXX) $(MDBX_BUILD_OPTIONS) $(call select_by,MDBX_BUILD_CXX,$(CXXFLAGS) $(LDFLAGS) $(LIB_STDCXXFS) $(LIBS),$(CFLAGS) $(LDFLAGS) $(LIBS)))
|
|
229
|
+
check_buildflags_tag:
|
|
230
|
+
$(QUIET)if [ "$(MDBX_BUILD_FLAGS)" != "$$(cat buildflags.tag 2>&1)" ]; then \
|
|
231
|
+
echo -n " CLEAN for build with specified flags..." && \
|
|
232
|
+
$(MAKE) IOARENA=false CXXSTD= -s clean >/dev/null && echo " Ok" && \
|
|
233
|
+
echo '$(MDBX_BUILD_FLAGS)' > buildflags.tag; \
|
|
234
|
+
fi
|
|
235
|
+
|
|
236
|
+
buildflags.tag: check_buildflags_tag
|
|
237
|
+
|
|
238
|
+
lib-static libmdbx.a: mdbx-static.o $(call select_by,MDBX_BUILD_CXX,mdbx++-static.o)
|
|
239
|
+
@echo ' AR $@'
|
|
240
|
+
$(QUIET)$(AR) rcs $@ $? $(HUSH)
|
|
241
|
+
|
|
242
|
+
lib-shared libmdbx.$(SO_SUFFIX): mdbx-dylib.o $(call select_by,MDBX_BUILD_CXX,mdbx++-dylib.o)
|
|
243
|
+
@echo ' LD $@'
|
|
244
|
+
$(QUIET)$(call select_by,MDBX_BUILD_CXX,$(CXX) $(CXXFLAGS),$(CC) $(CFLAGS)) $^ -pthread -shared $(LDFLAGS) $(call select_by,MDBX_BUILD_CXX,$(LIB_STDCXXFS)) $(LIBS) -o $@
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
################################################################################
|
|
248
|
+
# Amalgamated source code, i.e. distributed after `make dist`
|
|
249
|
+
MAN_SRCDIR := man1/
|
|
250
|
+
|
|
251
|
+
config.h: buildflags.tag mdbx.c $(lastword $(MAKEFILE_LIST))
|
|
252
|
+
@echo ' MAKE $@'
|
|
253
|
+
$(QUIET)(echo '#define MDBX_BUILD_TIMESTAMP "$(MDBX_BUILD_TIMESTAMP)"' \
|
|
254
|
+
&& echo "#define MDBX_BUILD_FLAGS \"$$(cat buildflags.tag)\"" \
|
|
255
|
+
&& echo '#define MDBX_BUILD_COMPILER "$(shell (LC_ALL=C $(CC) --version || echo 'Please use GCC or CLANG compatible compiler') | head -1)"' \
|
|
256
|
+
&& echo '#define MDBX_BUILD_TARGET "$(shell set -o pipefail; (LC_ALL=C $(CC) -v 2>&1 | grep -i '^Target:' | cut -d ' ' -f 2- || (LC_ALL=C $(CC) --version | grep -qi e2k && echo E2K) || echo 'Please use GCC or CLANG compatible compiler') | head -1)"' \
|
|
257
|
+
) >$@
|
|
258
|
+
|
|
259
|
+
mdbx-dylib.o: config.h mdbx.c mdbx.h $(lastword $(MAKEFILE_LIST))
|
|
260
|
+
@echo ' CC $@'
|
|
261
|
+
$(QUIET)$(CC) $(CFLAGS) $(MDBX_BUILD_OPTIONS) '-DMDBX_CONFIG_H="config.h"' -DLIBMDBX_EXPORTS=1 -c mdbx.c -o $@
|
|
262
|
+
|
|
263
|
+
mdbx-static.o: config.h mdbx.c mdbx.h $(lastword $(MAKEFILE_LIST))
|
|
264
|
+
@echo ' CC $@'
|
|
265
|
+
$(QUIET)$(CC) $(CFLAGS) $(MDBX_BUILD_OPTIONS) '-DMDBX_CONFIG_H="config.h"' -ULIBMDBX_EXPORTS -c mdbx.c -o $@
|
|
266
|
+
|
|
267
|
+
mdbx++-dylib.o: config.h mdbx.c++ mdbx.h mdbx.h++ $(lastword $(MAKEFILE_LIST))
|
|
268
|
+
@echo ' CC $@'
|
|
269
|
+
$(QUIET)$(CXX) $(CXXFLAGS) $(MDBX_BUILD_OPTIONS) '-DMDBX_CONFIG_H="config.h"' -DLIBMDBX_EXPORTS=1 -c mdbx.c++ -o $@
|
|
270
|
+
|
|
271
|
+
mdbx++-static.o: config.h mdbx.c++ mdbx.h mdbx.h++ $(lastword $(MAKEFILE_LIST))
|
|
272
|
+
@echo ' CC $@'
|
|
273
|
+
$(QUIET)$(CXX) $(CXXFLAGS) $(MDBX_BUILD_OPTIONS) '-DMDBX_CONFIG_H="config.h"' -ULIBMDBX_EXPORTS -c mdbx.c++ -o $@
|
|
274
|
+
|
|
275
|
+
mdbx_%: mdbx_%.c mdbx-static.o
|
|
276
|
+
@echo ' CC+LD $@'
|
|
277
|
+
$(QUIET)$(CC) $(CFLAGS) $(MDBX_BUILD_OPTIONS) '-DMDBX_CONFIG_H="config.h"' $^ $(EXE_LDFLAGS) $(LIBS) -o $@
|
|
278
|
+
|
|
279
|
+
mdbx_%.static: mdbx_%.c mdbx-static.o
|
|
280
|
+
@echo ' CC+LD $@'
|
|
281
|
+
$(QUIET)$(CC) $(CFLAGS) $(MDBX_BUILD_OPTIONS) '-DMDBX_CONFIG_H="config.h"' $^ $(EXE_LDFLAGS) -static -Wl,--strip-all -o $@
|
|
282
|
+
|
|
283
|
+
mdbx_%.static-lto: mdbx_%.c config.h mdbx.c mdbx.h
|
|
284
|
+
@echo ' CC+LD $@'
|
|
285
|
+
$(QUIET)$(CC) $(CFLAGS) -Os -flto $(MDBX_BUILD_OPTIONS) '-DLIBMDBX_API=' '-DMDBX_CONFIG_H="config.h"' \
|
|
286
|
+
$< mdbx.c $(EXE_LDFLAGS) $(LIBS) -static -Wl,--strip-all -o $@
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
install: $(LIBRARIES) $(TOOLS) $(HEADERS)
|
|
290
|
+
@echo ' INSTALLING...'
|
|
291
|
+
$(QUIET)mkdir -p $(DESTDIR)$(prefix)/bin$(suffix) && \
|
|
292
|
+
$(INSTALL) -p $(EXE_INSTALL_FLAGS) $(TOOLS) $(DESTDIR)$(prefix)/bin$(suffix)/ && \
|
|
293
|
+
mkdir -p $(DESTDIR)$(prefix)/lib$(suffix)/ && \
|
|
294
|
+
$(INSTALL) -p $(EXE_INSTALL_FLAGS) $(filter-out libmdbx.a,$(LIBRARIES)) $(DESTDIR)$(prefix)/lib$(suffix)/ && \
|
|
295
|
+
mkdir -p $(DESTDIR)$(prefix)/lib$(suffix)/ && \
|
|
296
|
+
$(INSTALL) -p libmdbx.a $(DESTDIR)$(prefix)/lib$(suffix)/ && \
|
|
297
|
+
mkdir -p $(DESTDIR)$(prefix)/include/ && \
|
|
298
|
+
$(INSTALL) -p -m 444 $(HEADERS) $(DESTDIR)$(prefix)/include/ && \
|
|
299
|
+
mkdir -p $(DESTDIR)$(mandir)/man1/ && \
|
|
300
|
+
$(INSTALL) -p -m 444 $(addprefix $(MAN_SRCDIR), $(MANPAGES)) $(DESTDIR)$(mandir)/man1/
|
|
301
|
+
|
|
302
|
+
install-strip: EXE_INSTALL_FLAGS = -s
|
|
303
|
+
install-strip: install
|
|
304
|
+
|
|
305
|
+
install-no-strip: EXE_INSTALL_FLAGS =
|
|
306
|
+
install-no-strip: install
|
|
307
|
+
|
|
308
|
+
uninstall:
|
|
309
|
+
@echo ' UNINSTALLING/REMOVE...'
|
|
310
|
+
$(QUIET)rm -f $(addprefix $(DESTDIR)$(prefix)/bin$(suffix)/,$(TOOLS)) \
|
|
311
|
+
$(addprefix $(DESTDIR)$(prefix)/lib$(suffix)/,$(LIBRARIES)) \
|
|
312
|
+
$(addprefix $(DESTDIR)$(prefix)/include/,$(HEADERS)) \
|
|
313
|
+
$(addprefix $(DESTDIR)$(mandir)/man1/,$(MANPAGES))
|
|
314
|
+
|
|
315
|
+
################################################################################
|
|
316
|
+
# Benchmarking by ioarena
|
|
317
|
+
|
|
318
|
+
ifeq ($(origin IOARENA),undefined)
|
|
319
|
+
IOARENA := $(shell \
|
|
320
|
+
(test -x ../ioarena/@BUILD/src/ioarena && echo ../ioarena/@BUILD/src/ioarena) || \
|
|
321
|
+
(test -x ../../@BUILD/src/ioarena && echo ../../@BUILD/src/ioarena) || \
|
|
322
|
+
(test -x ../../src/ioarena && echo ../../src/ioarena) || which ioarena 2>&- || \
|
|
323
|
+
(echo false && echo '$(TIP) Clone and build the https://abf.io/erthink/ioarena.git within a neighbouring directory for availability of benchmarking.' >&2))
|
|
324
|
+
endif
|
|
325
|
+
NN ?= 25000000
|
|
326
|
+
BENCH_CRUD_MODE ?= nosync
|
|
327
|
+
|
|
328
|
+
bench-clean:
|
|
329
|
+
@echo ' REMOVE bench-*.txt _ioarena/*'
|
|
330
|
+
$(QUIET)rm -rf bench-*.txt _ioarena/*
|
|
331
|
+
|
|
332
|
+
re-bench: bench-clean bench
|
|
333
|
+
|
|
334
|
+
ifeq ($(or $(IOARENA),false),false)
|
|
335
|
+
bench bench-quartet bench-triplet bench-couple:
|
|
336
|
+
$(QUIET)echo 'The `ioarena` benchmark is required.' >&2 && \
|
|
337
|
+
echo 'Please clone and build the https://abf.io/erthink/ioarena.git within a neighbouring `ioarena` directory.' >&2 && \
|
|
338
|
+
false
|
|
339
|
+
|
|
340
|
+
else
|
|
341
|
+
|
|
342
|
+
.PHONY: bench bench-clean bench-couple re-bench bench-quartet bench-triplet
|
|
343
|
+
|
|
344
|
+
define bench-rule
|
|
345
|
+
bench-$(1)_$(2).txt: $(3) $(IOARENA) $(lastword $(MAKEFILE_LIST))
|
|
346
|
+
@echo ' RUNNING ioarena for $1/$2...'
|
|
347
|
+
$(QUIET)(export LD_LIBRARY_PATH="./:$$$${LD_LIBRARY_PATH}"; \
|
|
348
|
+
ldd $(IOARENA) | grep -i $(1) && \
|
|
349
|
+
$(IOARENA) -D $(1) -B batch -m $(BENCH_CRUD_MODE) -n $(2) \
|
|
350
|
+
| tee $$@ | grep throughput | sed 's/throughput/batch×N/' && \
|
|
351
|
+
$(IOARENA) -D $(1) -B crud -m $(BENCH_CRUD_MODE) -n $(2) \
|
|
352
|
+
| tee -a $$@ | grep throughput | sed 's/throughput/ crud/' && \
|
|
353
|
+
$(IOARENA) -D $(1) -B iterate,get,iterate,get,iterate -m $(BENCH_CRUD_MODE) -r 4 -n $(2) \
|
|
354
|
+
| tee -a $$@ | grep throughput | sed '0,/throughput/{s/throughput/iterate/};s/throughput/ get/' && \
|
|
355
|
+
$(IOARENA) -D $(1) -B delete -m $(BENCH_CRUD_MODE) -n $(2) \
|
|
356
|
+
| tee -a $$@ | grep throughput | sed 's/throughput/ delete/' && \
|
|
357
|
+
true) || mv -f $$@ $$@.error
|
|
358
|
+
|
|
359
|
+
endef
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
$(eval $(call bench-rule,mdbx,$(NN),libmdbx.$(SO_SUFFIX)))
|
|
363
|
+
|
|
364
|
+
$(eval $(call bench-rule,sophia,$(NN)))
|
|
365
|
+
$(eval $(call bench-rule,leveldb,$(NN)))
|
|
366
|
+
$(eval $(call bench-rule,rocksdb,$(NN)))
|
|
367
|
+
$(eval $(call bench-rule,wiredtiger,$(NN)))
|
|
368
|
+
$(eval $(call bench-rule,forestdb,$(NN)))
|
|
369
|
+
$(eval $(call bench-rule,lmdb,$(NN)))
|
|
370
|
+
$(eval $(call bench-rule,nessdb,$(NN)))
|
|
371
|
+
$(eval $(call bench-rule,sqlite3,$(NN)))
|
|
372
|
+
$(eval $(call bench-rule,ejdb,$(NN)))
|
|
373
|
+
$(eval $(call bench-rule,vedisdb,$(NN)))
|
|
374
|
+
$(eval $(call bench-rule,dummy,$(NN)))
|
|
375
|
+
bench: bench-mdbx_$(NN).txt
|
|
376
|
+
bench-quartet: bench-mdbx_$(NN).txt bench-lmdb_$(NN).txt bench-rocksdb_$(NN).txt bench-wiredtiger_$(NN).txt
|
|
377
|
+
bench-triplet: bench-mdbx_$(NN).txt bench-lmdb_$(NN).txt bench-sqlite3_$(NN).txt
|
|
378
|
+
bench-couple: bench-mdbx_$(NN).txt bench-lmdb_$(NN).txt
|
|
379
|
+
|
|
380
|
+
# $(eval $(call bench-rule,debug,10))
|
|
381
|
+
# .PHONY: bench-debug
|
|
382
|
+
# bench-debug: bench-debug_10.txt
|
|
383
|
+
|
|
384
|
+
endif
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.12.12.0
|