libmdbx 0.3.1__tar.gz → 0.3.2__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.3.1 → libmdbx-0.3.2}/PKG-INFO +1 -1
- {libmdbx-0.3.1 → libmdbx-0.3.2}/build_mdbx.py +48 -4
- {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/CMakeLists.txt +67 -337
- libmdbx-0.3.2/libmdbx/dist/COPYRIGHT +159 -0
- {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/ChangeLog.md +204 -4
- {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/GNUmakefile +82 -26
- {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/NOTICE +13 -9
- libmdbx-0.3.2/libmdbx/dist/README.md +527 -0
- libmdbx-0.3.2/libmdbx/dist/VERSION.json +1 -0
- {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/cmake/compiler.cmake +10 -14
- {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/cmake/profile.cmake +2 -2
- {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/cmake/utils.cmake +15 -197
- {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/config.h.in +11 -3
- {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/man1/mdbx_chk.1 +1 -1
- {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/man1/mdbx_copy.1 +1 -1
- {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/man1/mdbx_drop.1 +2 -2
- {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/man1/mdbx_dump.1 +3 -3
- {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/man1/mdbx_load.1 +3 -3
- {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/man1/mdbx_stat.1 +2 -2
- {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/mdbx.c +744 -555
- {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/mdbx.c++ +76 -49
- {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/mdbx.h +88 -17
- {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/mdbx.h++ +464 -265
- {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/mdbx_chk.c +39 -13
- {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/mdbx_copy.c +41 -16
- {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/mdbx_drop.c +41 -16
- {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/mdbx_dump.c +45 -20
- {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/mdbx_load.c +63 -37
- {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/mdbx_stat.c +42 -18
- libmdbx-0.3.2/libmdbx/dist/ut_and_examples/CMakeLists.txt +39 -0
- libmdbx-0.3.2/libmdbx/dist/ut_and_examples/README.md +11 -0
- libmdbx-0.3.2/libmdbx/dist/ut_and_examples/example-mdbx.c +167 -0
- libmdbx-0.3.2/libmdbx/dist/ut_and_examples/example-mdbx.c++ +99 -0
- libmdbx-0.3.2/libmdbx/dist/ut_and_examples/pcrf/pcrf_simulator.c +367 -0
- {libmdbx-0.3.1 → libmdbx-0.3.2}/mdbx/mdbx.py +41 -21
- libmdbx-0.3.2/platform_enums.c +20 -0
- {libmdbx-0.3.1 → libmdbx-0.3.2}/pyproject.toml +3 -1
- libmdbx-0.3.1/libmdbx/dist/.clang-format-ignore +0 -8
- libmdbx-0.3.1/libmdbx/dist/README.md +0 -857
- libmdbx-0.3.1/libmdbx/dist/VERSION.json +0 -1
- {libmdbx-0.3.1 → libmdbx-0.3.2}/LICENSE +0 -0
- {libmdbx-0.3.1 → libmdbx-0.3.2}/README.md +0 -0
- {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/LICENSE +0 -0
- {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/Makefile +0 -0
- {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/ntdll.def +0 -0
- {libmdbx-0.3.1 → libmdbx-0.3.2}/mdbx/__init__.py +0 -0
|
@@ -6,6 +6,8 @@ import sys
|
|
|
6
6
|
import multiprocessing
|
|
7
7
|
import shutil
|
|
8
8
|
import platform
|
|
9
|
+
import json
|
|
10
|
+
import re
|
|
9
11
|
|
|
10
12
|
SO_FILE = {
|
|
11
13
|
"linux": "libmdbx.so",
|
|
@@ -29,8 +31,10 @@ def build(setup_kws: dict):
|
|
|
29
31
|
debug = "DEBUG" in os.environ
|
|
30
32
|
pwd = Path(__file__).parent.resolve()
|
|
31
33
|
out_lib = pwd / "mdbx" / "lib"
|
|
34
|
+
mdbx_py = pwd / "mdbx"/ "mdbx.py"
|
|
32
35
|
libmdbx_source = pwd / "libmdbx"
|
|
33
36
|
dist_folder = libmdbx_source / "dist"
|
|
37
|
+
platform_enums = pwd / "platform_enums.c"
|
|
34
38
|
|
|
35
39
|
# If there is already dist
|
|
36
40
|
if not dist_folder.exists():
|
|
@@ -69,11 +73,18 @@ def build(setup_kws: dict):
|
|
|
69
73
|
plat = 'Win32' if platform.architecture()[0] == '32bit' else 'x64'
|
|
70
74
|
cmake_gen += [
|
|
71
75
|
"-G", "Visual Studio 17 2022",
|
|
72
|
-
"-A", plat
|
|
76
|
+
"-A", plat,
|
|
77
|
+
# CMake >= 4.4 reports c_std_23 for MSVC, so libmdbx would pick
|
|
78
|
+
# /std:clatest, where MSVC chokes on the C23 attributes in mdbx.c.
|
|
79
|
+
"-DCMAKE_C_STANDARD=11"
|
|
73
80
|
]
|
|
74
81
|
|
|
75
82
|
cmake_gen += [
|
|
76
|
-
"-S", str(source_folder.absolute()), "-B", str(tmpdir_path.absolute())
|
|
83
|
+
"-S", str(source_folder.absolute()), "-B", str(tmpdir_path.absolute()),
|
|
84
|
+
# The non-amalgamated tree builds libmdbx's own test suite by default,
|
|
85
|
+
# which does not compile with MSVC: test/extra/rename_dbi.c wants
|
|
86
|
+
# unistd.h. We only ever consume the library itself.
|
|
87
|
+
"-DMDBX_ENABLE_TESTS=OFF"
|
|
77
88
|
]
|
|
78
89
|
cmake_gen += build_type
|
|
79
90
|
subprocess.check_call(
|
|
@@ -103,6 +114,39 @@ def build(setup_kws: dict):
|
|
|
103
114
|
cwd=tmpdir_path
|
|
104
115
|
)
|
|
105
116
|
shutil.copy(tmpdir_path / conf / SO_FILE, out_lib)
|
|
106
|
-
|
|
117
|
+
|
|
118
|
+
enum_exe = tmpdir_path / "platform_enums"
|
|
119
|
+
if sys.platform == "win32":
|
|
120
|
+
enum_exe = enum_exe.with_suffix(".exe")
|
|
121
|
+
plat = 'Win32' if platform.architecture()[0] == '32bit' else 'x64'
|
|
122
|
+
conf = 'Debug' if debug else 'Release'
|
|
123
|
+
# Compile with MSVC
|
|
124
|
+
subprocess.check_call([
|
|
125
|
+
"cl", str(platform_enums),
|
|
126
|
+
f"/I{source_folder.absolute()}",
|
|
127
|
+
f"/Fe{enum_exe}"
|
|
128
|
+
], cwd=tmpdir_path)
|
|
129
|
+
else:
|
|
130
|
+
# Compile with GCC/Clang
|
|
131
|
+
subprocess.check_call([
|
|
132
|
+
"gcc", str(platform_enums),
|
|
133
|
+
f"-I{source_folder.absolute()}",
|
|
134
|
+
"-o", str(enum_exe)
|
|
135
|
+
], cwd=tmpdir_path)
|
|
136
|
+
|
|
137
|
+
output = subprocess.check_output([str(enum_exe)], text=True)
|
|
138
|
+
mdbx_errors = json.loads(output)
|
|
139
|
+
|
|
140
|
+
content = mdbx_py.read_text()
|
|
141
|
+
|
|
142
|
+
for key, value in mdbx_errors.items():
|
|
143
|
+
pattern = re.compile(rf"{key}\s*=\s*.*$", re.MULTILINE)
|
|
144
|
+
replacement = f"{key} = {value}"
|
|
145
|
+
content, n = pattern.subn(replacement, content)
|
|
146
|
+
if n == 0:
|
|
147
|
+
print(f"Warning: {key} not found in {mdbx_py}")
|
|
148
|
+
|
|
149
|
+
mdbx_py.write_text(content)
|
|
150
|
+
|
|
107
151
|
if __name__ == "__main__":
|
|
108
|
-
build({})
|
|
152
|
+
build({})
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
# Copyright (c) 2020-
|
|
1
|
+
# Copyright (c) 2020-2026 Леонид Юрьев aka Leonid Yuriev <leo@yuriev.ru> ###############################################
|
|
2
2
|
# SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
#
|
|
4
|
-
# Donations are welcome to ETH `0xD104d8f8B2dC312aaD74899F83EBf3EEBDC1EA3A
|
|
4
|
+
# Donations are welcome to ETH `0xD104d8f8B2dC312aaD74899F83EBf3EEBDC1EA3A`,
|
|
5
|
+
# BTC `bc1qzvl9uegf2ea6cwlytnanrscyv8snwsvrc0xfsu`, SOL `FTCTgbHajoLVZGr8aEFWMzx3NDMyS5wXJgfeMTmJznRi`.
|
|
6
|
+
# Всё будет хорошо!
|
|
5
7
|
|
|
6
|
-
# libmdbx = { Revised and extended descendant of Symas LMDB. }
|
|
7
|
-
# https://
|
|
8
|
+
# libmdbx = { Revised and extended descendant of Symas LMDB. }
|
|
9
|
+
# Please see README.md at https://sourcecraft.dev/dqdkfa/libmdbx
|
|
8
10
|
#
|
|
9
11
|
# Libmdbx is superior to LMDB in terms of features and reliability, not inferior in performance. libmdbx works on Linux,
|
|
10
12
|
# FreeBSD, MacOS X and other systems compliant with POSIX.1-2008, but also support Windows as a complementary platform.
|
|
@@ -12,10 +14,8 @@
|
|
|
12
14
|
# The next version is under active non-public development and will be released as MithrilDB and libmithrildb for
|
|
13
15
|
# libraries & packages. Admittedly mythical Mithril is resembling silver but being stronger and lighter than steel.
|
|
14
16
|
# Therefore MithrilDB is rightly relevant name.
|
|
15
|
-
#
|
|
16
|
-
#
|
|
17
|
-
# Apache 2.0 License. The goal of this revolution is to provide a clearer and robust API, add more features and new
|
|
18
|
-
# valuable properties of database.
|
|
17
|
+
# MithrilDB will be radically different from libmdbx by the new database format and API based on C++20.
|
|
18
|
+
# The goal of this revolution is to provide a clearer and robust API, add more features and new valuable properties.
|
|
19
19
|
|
|
20
20
|
if(CMAKE_VERSION VERSION_LESS 3.8.2)
|
|
21
21
|
cmake_minimum_required(VERSION 3.0.2)
|
|
@@ -53,122 +53,12 @@ endif()
|
|
|
53
53
|
|
|
54
54
|
cmake_policy(SET CMP0054 NEW)
|
|
55
55
|
|
|
56
|
-
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}
|
|
57
|
-
|
|
58
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE"
|
|
59
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/NOTICE"
|
|
60
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/README.md"
|
|
61
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/mdbx.h"
|
|
62
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/mdbx.h++"
|
|
63
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/alloy.c"
|
|
64
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/api-cold.c"
|
|
65
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/api-copy.c"
|
|
66
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/api-cursor.c"
|
|
67
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/api-dbi.c"
|
|
68
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/api-env.c"
|
|
69
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/api-extra.c"
|
|
70
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/api-key-transform.c"
|
|
71
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/api-misc.c"
|
|
72
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/api-opts.c"
|
|
73
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/api-range-estimate.c"
|
|
74
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/api-txn-data.c"
|
|
75
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/api-txn.c"
|
|
76
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/atomics-ops.h"
|
|
77
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/atomics-types.h"
|
|
78
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/audit.c"
|
|
79
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/chk.c"
|
|
80
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/cogs.c"
|
|
81
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/cogs.h"
|
|
82
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/coherency.c"
|
|
83
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/config.h.in"
|
|
84
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/cursor.c"
|
|
85
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/cursor.h"
|
|
86
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/dbi.c"
|
|
87
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/dbi.h"
|
|
88
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/debug_begin.h"
|
|
89
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/debug_end.h"
|
|
90
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/dpl.c"
|
|
91
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/dpl.h"
|
|
92
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/dxb.c"
|
|
93
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/env.c"
|
|
94
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/essentials.h"
|
|
95
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/gc-get.c"
|
|
96
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/gc-put.c"
|
|
97
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/gc.h"
|
|
98
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/global.c"
|
|
99
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/internals.h"
|
|
100
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/layout-dxb.h"
|
|
101
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/layout-lck.h"
|
|
102
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/lck-posix.c"
|
|
103
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/lck-windows.c"
|
|
104
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/lck.c"
|
|
105
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/lck.h"
|
|
106
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/logging_and_debug.c"
|
|
107
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/logging_and_debug.h"
|
|
108
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/man1/mdbx_chk.1"
|
|
109
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/man1/mdbx_copy.1"
|
|
110
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/man1/mdbx_drop.1"
|
|
111
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/man1/mdbx_dump.1"
|
|
112
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/man1/mdbx_load.1"
|
|
113
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/man1/mdbx_stat.1"
|
|
114
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/mdbx.c++"
|
|
115
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/meta.c"
|
|
116
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/meta.h"
|
|
117
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/mvcc-readers.c"
|
|
118
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/node.c"
|
|
119
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/node.h"
|
|
120
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/ntdll.def"
|
|
121
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/options.h"
|
|
122
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/osal.c"
|
|
123
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/osal.h"
|
|
124
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/page-get.c"
|
|
125
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/page-iov.c"
|
|
126
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/page-iov.h"
|
|
127
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/page-ops.c"
|
|
128
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/page-ops.h"
|
|
129
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/tree-search.c"
|
|
130
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/pnl.c"
|
|
131
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/pnl.h"
|
|
132
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/preface.h"
|
|
133
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/proto.h"
|
|
134
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/refund.c"
|
|
135
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/sort.h"
|
|
136
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/spill.c"
|
|
137
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/spill.h"
|
|
138
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/table.c"
|
|
139
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/tls.c"
|
|
140
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/tls.h"
|
|
141
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/tools/chk.c"
|
|
142
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/tools/copy.c"
|
|
143
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/tools/drop.c"
|
|
144
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/tools/dump.c"
|
|
145
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/tools/load.c"
|
|
146
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/tools/stat.c"
|
|
147
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/tools/wingetopt.c"
|
|
148
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/tools/wingetopt.h"
|
|
149
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/tree-ops.c"
|
|
150
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/txl.c"
|
|
151
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/txl.h"
|
|
152
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/txn.c"
|
|
153
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/unaligned.h"
|
|
154
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/utils.c"
|
|
155
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/utils.h"
|
|
156
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/version.c.in"
|
|
157
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/walk.c"
|
|
158
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/walk.h"
|
|
159
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/windows-import.c"
|
|
160
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/windows-import.h"
|
|
161
|
-
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt")
|
|
162
|
-
set(MDBX_AMALGAMATED_SOURCE FALSE)
|
|
163
|
-
find_program(GIT git)
|
|
164
|
-
if(NOT GIT)
|
|
165
|
-
message(SEND_ERROR "Git command-line tool not found")
|
|
166
|
-
endif()
|
|
167
|
-
set(MDBX_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
|
168
|
-
elseif(
|
|
169
|
-
EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/VERSION.json"
|
|
56
|
+
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/VERSION.json"
|
|
57
|
+
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/COPYRIGHT"
|
|
170
58
|
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE"
|
|
171
59
|
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/NOTICE"
|
|
60
|
+
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/README.md"
|
|
61
|
+
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/GNUmakefile"
|
|
172
62
|
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/mdbx.c"
|
|
173
63
|
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/mdbx.c++"
|
|
174
64
|
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/mdbx.h"
|
|
@@ -186,8 +76,9 @@ elseif(
|
|
|
186
76
|
else()
|
|
187
77
|
message(
|
|
188
78
|
FATAL_ERROR
|
|
189
|
-
"\nThe set of libmdbx source code files is incomplete!
|
|
190
|
-
"Instead just follow the https://libmdbx.dqdkfa.ru/usage.html
|
|
79
|
+
"\nThe set of libmdbx source code files is incomplete!"
|
|
80
|
+
" Instead just follow the https://libmdbx.dqdkfa.ru/usage.html"
|
|
81
|
+
" PLEASE, AVOID USING ANY OTHER TECHNIQUES.")
|
|
191
82
|
endif()
|
|
192
83
|
|
|
193
84
|
# Provide version
|
|
@@ -206,9 +97,6 @@ endif()
|
|
|
206
97
|
if(DEFINED PROJECT_NAME AND NOT MDBX_FORCE_BUILD_AS_MAIN_PROJECT)
|
|
207
98
|
set(SUBPROJECT ON)
|
|
208
99
|
set(NOT_SUBPROJECT OFF)
|
|
209
|
-
if(NOT MDBX_AMALGAMATED_SOURCE AND NOT DEFINED BUILD_TESTING)
|
|
210
|
-
set(BUILD_TESTING OFF)
|
|
211
|
-
endif()
|
|
212
100
|
enable_language(C)
|
|
213
101
|
else()
|
|
214
102
|
set(SUBPROJECT OFF)
|
|
@@ -228,25 +116,18 @@ else()
|
|
|
228
116
|
endif()
|
|
229
117
|
|
|
230
118
|
project(libmdbx C)
|
|
231
|
-
if(NOT MDBX_AMALGAMATED_SOURCE AND NOT DEFINED BUILD_TESTING)
|
|
232
|
-
set(BUILD_TESTING ON)
|
|
233
|
-
endif()
|
|
234
119
|
endif()
|
|
235
120
|
|
|
236
|
-
if(NOT
|
|
121
|
+
if(NOT ((DEFINED BUILD_TESTING AND NOT BUILD_TESTING) OR (DEFINED MDBX_ENABLE_TESTS AND NOT MDBX_ENABLE_TESTS)))
|
|
237
122
|
include(CTest)
|
|
238
|
-
option(MDBX_ENABLE_TESTS "Build
|
|
239
|
-
elseif(DEFINED MDBX_ENABLE_TESTS AND MDBX_ENABLE_TESTS)
|
|
240
|
-
message(WARNING "MDBX_ENABLE_TESTS=${MDBX_ENABLE_TESTS}: But amalgamated source code don't includes tests.")
|
|
241
|
-
set(MDBX_ENABLE_TESTS OFF)
|
|
123
|
+
option(MDBX_ENABLE_TESTS "Build MDBX tests" ${BUILD_TESTING})
|
|
242
124
|
endif()
|
|
243
125
|
|
|
244
126
|
# Try to find a C++ compiler unless sure that this is unnecessary.
|
|
245
127
|
if(NOT CMAKE_CXX_COMPILER_LOADED)
|
|
246
128
|
include(CheckLanguage)
|
|
247
|
-
if(NOT DEFINED MDBX_BUILD_CXX
|
|
248
|
-
OR
|
|
249
|
-
OR (NOT MDBX_AMALGAMATED_SOURCE AND (NOT DEFINED MDBX_ENABLE_TESTS OR MDBX_ENABLE_TESTS)))
|
|
129
|
+
if(NOT (DEFINED MDBX_BUILD_CXX AND NOT MDBX_BUILD_CXX)
|
|
130
|
+
OR NOT (DEFINED MDBX_ENABLE_TESTS AND NOT MDBX_ENABLE_TESTS))
|
|
250
131
|
check_language(CXX)
|
|
251
132
|
if(CMAKE_CXX_COMPILER)
|
|
252
133
|
enable_language(CXX)
|
|
@@ -443,68 +324,6 @@ else()
|
|
|
443
324
|
set(LTO_ENABLED FALSE)
|
|
444
325
|
endif()
|
|
445
326
|
|
|
446
|
-
if(NOT MDBX_AMALGAMATED_SOURCE)
|
|
447
|
-
find_program(VALGRIND valgrind)
|
|
448
|
-
if(VALGRIND)
|
|
449
|
-
# (LY) cmake is ugly and nasty. Therefore memcheck-options should be defined before including ctest. Otherwise
|
|
450
|
-
# ctest may ignore it.
|
|
451
|
-
set(MEMORYCHECK_SUPPRESSIONS_FILE
|
|
452
|
-
"${CMAKE_CURRENT_SOURCE_DIR}/test/valgrind_suppress.txt"
|
|
453
|
-
CACHE FILEPATH "Suppressions file for Valgrind" FORCE)
|
|
454
|
-
set(MEMORYCHECK_COMMAND_OPTIONS
|
|
455
|
-
"--trace-children=yes --leak-check=full --track-origins=yes --track-origins=yes --error-exitcode=42 --error-markers=@ --errors-for-leak-kinds=definite --fair-sched=yes --suppressions=${MEMORYCHECK_SUPPRESSIONS_FILE}"
|
|
456
|
-
CACHE STRING "Valgrind options" FORCE)
|
|
457
|
-
set(VALGRIND_COMMAND_OPTIONS
|
|
458
|
-
"${MEMORYCHECK_COMMAND_OPTIONS}"
|
|
459
|
-
CACHE STRING "Valgrind options" FORCE)
|
|
460
|
-
endif()
|
|
461
|
-
|
|
462
|
-
# Enable 'make tags' target.
|
|
463
|
-
find_program(CTAGS ctags)
|
|
464
|
-
if(CTAGS)
|
|
465
|
-
add_custom_target(
|
|
466
|
-
tags
|
|
467
|
-
COMMAND ${CTAGS} -R -f tags
|
|
468
|
-
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
|
469
|
-
add_custom_target(ctags DEPENDS tags)
|
|
470
|
-
endif(CTAGS)
|
|
471
|
-
|
|
472
|
-
if(UNIX)
|
|
473
|
-
find_program(CLANG_FORMAT NAMES clang-format-13 clang-format)
|
|
474
|
-
if(CLANG_FORMAT)
|
|
475
|
-
execute_process(COMMAND ${CLANG_FORMAT} "--version" OUTPUT_VARIABLE clang_format_version_info)
|
|
476
|
-
string(REGEX MATCH "version ([0-9]+)\\.([0-9]+)\\.([0-9]+)(.*)?" clang_format_version_info CLANG_FORMAT_VERSION)
|
|
477
|
-
if(clang_format_version_info AND NOT CLANG_FORMAT_VERSION VERSION_LESS 13.0)
|
|
478
|
-
# Enable 'make reformat' target.
|
|
479
|
-
add_custom_target(
|
|
480
|
-
reformat
|
|
481
|
-
VERBATIM
|
|
482
|
-
COMMAND git ls-files | grep -E \\.\(c|cxx|cc|cpp|h|hxx|hpp\)\(\\.in\)?\$ | xargs ${CLANG_FORMAT} -i
|
|
483
|
-
--style=file
|
|
484
|
-
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
|
|
485
|
-
endif()
|
|
486
|
-
endif()
|
|
487
|
-
endif()
|
|
488
|
-
|
|
489
|
-
if(NOT "${PROJECT_BINARY_DIR}" STREQUAL "${PROJECT_SOURCE_DIR}")
|
|
490
|
-
add_custom_target(distclean)
|
|
491
|
-
add_custom_command(
|
|
492
|
-
TARGET distclean
|
|
493
|
-
POST_BUILD
|
|
494
|
-
COMMAND ${CMAKE_COMMAND} -E remove_directory "${PROJECT_BINARY_DIR}"
|
|
495
|
-
COMMENT "Removing the build directory and its content")
|
|
496
|
-
elseif(IS_DIRECTORY .git AND GIT)
|
|
497
|
-
add_custom_target(distclean)
|
|
498
|
-
add_custom_command(
|
|
499
|
-
TARGET distclean
|
|
500
|
-
POST_BUILD
|
|
501
|
-
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
|
502
|
-
COMMAND ${GIT} submodule foreach --recursive git clean -f -X -d
|
|
503
|
-
COMMAND ${GIT} clean -f -X -d
|
|
504
|
-
COMMENT "Removing all build files from the source directory")
|
|
505
|
-
endif()
|
|
506
|
-
endif(NOT MDBX_AMALGAMATED_SOURCE)
|
|
507
|
-
|
|
508
327
|
set(MDBX_MANAGE_BUILD_FLAGS_DEFAULT ON)
|
|
509
328
|
endif(SUBPROJECT)
|
|
510
329
|
|
|
@@ -538,7 +357,8 @@ if(NOT DEFINED MDBX_CXX_STANDARD)
|
|
|
538
357
|
elseif(CXX_FALLBACK_GNU11 OR CXX_FALLBACK_11)
|
|
539
358
|
set(MDBX_CXX_STANDARD 11)
|
|
540
359
|
else()
|
|
541
|
-
|
|
360
|
+
message(NOTICE "The C++ example will be skipped, since C++20 standard is unavailable or C++ API of libmdbx was disabled.")
|
|
361
|
+
set(MDBX_CXX_STANDARD 0)
|
|
542
362
|
endif()
|
|
543
363
|
endif()
|
|
544
364
|
|
|
@@ -574,9 +394,8 @@ if(WIN32 AND EXISTS "${MDBX_SOURCE_DIR}/ntdll.def")
|
|
|
574
394
|
if(MSVC)
|
|
575
395
|
if(NOT MSVC_LIB_EXE)
|
|
576
396
|
# Find lib.exe
|
|
577
|
-
get_filename_component(
|
|
578
|
-
|
|
579
|
-
find_program(MSVC_LIB_EXE ${MSVC_LIB_EXE})
|
|
397
|
+
get_filename_component(CC_DIR ${CMAKE_C_COMPILER} DIRECTORY)
|
|
398
|
+
find_program(MSVC_LIB_EXE "lib.exe" HINTS ${CC_DIR})
|
|
580
399
|
endif()
|
|
581
400
|
if(MSVC_LIB_EXE)
|
|
582
401
|
message(STATUS "Found MSVC's lib tool: ${MSVC_LIB_EXE}")
|
|
@@ -588,25 +407,24 @@ if(WIN32 AND EXISTS "${MDBX_SOURCE_DIR}/ntdll.def")
|
|
|
588
407
|
COMMAND ${MSVC_LIB_EXE} /def:"${MDBX_SOURCE_DIR}/ntdll.def" /out:"${MDBX_NTDLL_EXTRA_IMPLIB}"
|
|
589
408
|
${INITIAL_CMAKE_STATIC_LINKER_FLAGS})
|
|
590
409
|
else()
|
|
591
|
-
message(WARNING "MSVC's lib
|
|
410
|
+
message(WARNING "MSVC's lib.exe not found")
|
|
592
411
|
endif()
|
|
593
412
|
elseif(MINGW OR MINGW64)
|
|
594
|
-
if(NOT
|
|
595
|
-
# Find dlltool
|
|
596
|
-
get_filename_component(
|
|
597
|
-
|
|
598
|
-
find_program(DLLTOOL NAMES ${DLLTOOL_NAME})
|
|
413
|
+
if(NOT MINGW_DLLTOOL_EXE)
|
|
414
|
+
# Find dlltool.exe
|
|
415
|
+
get_filename_component(CC_DIR ${CMAKE_C_COMPILER} DIRECTORY)
|
|
416
|
+
find_program(MINGW_DLLTOOL_EXE "dlltool.exe" HINTS ${CC_DIR})
|
|
599
417
|
endif()
|
|
600
|
-
if(
|
|
601
|
-
message(STATUS "Found dlltool: ${
|
|
418
|
+
if(MINGW_DLLTOOL_EXE)
|
|
419
|
+
message(STATUS "Found MINGW's dlltool: ${MINGW_DLLTOOL_EXE}")
|
|
602
420
|
set(MDBX_NTDLL_EXTRA_IMPLIB "${CMAKE_CURRENT_BINARY_DIR}/mdbx_ntdll_extra.a")
|
|
603
421
|
add_custom_command(
|
|
604
422
|
OUTPUT "${MDBX_NTDLL_EXTRA_IMPLIB}"
|
|
605
423
|
COMMENT "Create extra-import-library for ntdll.dll"
|
|
606
424
|
MAIN_DEPENDENCY "${MDBX_SOURCE_DIR}/ntdll.def"
|
|
607
|
-
COMMAND ${
|
|
425
|
+
COMMAND ${MINGW_DLLTOOL_EXE} -d "${MDBX_SOURCE_DIR}/ntdll.def" -l "${MDBX_NTDLL_EXTRA_IMPLIB}")
|
|
608
426
|
else()
|
|
609
|
-
message(WARNING "dlltool not found")
|
|
427
|
+
message(WARNING "MINGW's dlltool.exe not found")
|
|
610
428
|
endif()
|
|
611
429
|
endif()
|
|
612
430
|
|
|
@@ -688,8 +506,7 @@ add_option(MDBX TRUST_RTC "Does a system have battery-backed Real-Time Clock or
|
|
|
688
506
|
mark_as_advanced(MDBX_TRUST_RTC)
|
|
689
507
|
add_option(MDBX FORCE_ASSERTIONS "Force enable assertion checking" OFF)
|
|
690
508
|
add_option(
|
|
691
|
-
MDBX
|
|
692
|
-
DISABLE_VALIDATION
|
|
509
|
+
MDBX DISABLE_VALIDATION
|
|
693
510
|
"Disable some checks to reduce an overhead and detection probability of database corruption to a values closer to the LMDB"
|
|
694
511
|
OFF)
|
|
695
512
|
mark_as_advanced(MDBX_DISABLE_VALIDATION)
|
|
@@ -702,15 +519,8 @@ mark_as_advanced(MDBX_ENABLE_PROFGC)
|
|
|
702
519
|
add_option(MDBX ENABLE_DBI_SPARSE
|
|
703
520
|
"Support for sparse sets of DBI handles to reduce overhead when starting and processing transactions" ON)
|
|
704
521
|
add_option(MDBX ENABLE_DBI_LOCKFREE "Support for deferred releasing and a lockfree path to quickly open DBI handles" ON)
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
if(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE_UPPERCASE STREQUAL "DEBUG")
|
|
708
|
-
set(MDBX_ALLOY_BUILD_DEFAULT OFF)
|
|
709
|
-
else()
|
|
710
|
-
set(MDBX_ALLOY_BUILD_DEFAULT ON)
|
|
711
|
-
endif()
|
|
712
|
-
add_option(MDBX ALLOY_BUILD "Build MDBX library through single/alloyed object file" ${MDBX_ALLOY_BUILD_DEFAULT})
|
|
713
|
-
endif()
|
|
522
|
+
add_option(MDBX USE_FALLOCATE "Using posix_fallocate() or fcntl(F_PREALLOCATE) on OSX" AUTO)
|
|
523
|
+
mark_as_advanced(MDBX_USE_FALLOCATE)
|
|
714
524
|
|
|
715
525
|
if((MDBX_BUILD_TOOLS OR MDBX_ENABLE_TESTS) AND MDBX_BUILD_SHARED_LIBRARY)
|
|
716
526
|
add_option(MDBX LINK_TOOLS_NONSTATIC "Link MDBX tools with non-static libmdbx" OFF)
|
|
@@ -718,23 +528,34 @@ else()
|
|
|
718
528
|
unset(MDBX_LINK_TOOLS_NONSTATIC CACHE)
|
|
719
529
|
endif()
|
|
720
530
|
|
|
531
|
+
set(MDBX_CXX_AVAILABLE FALSE)
|
|
721
532
|
if(CMAKE_CXX_COMPILER_LOADED
|
|
722
|
-
AND MDBX_CXX_STANDARD LESS 83
|
|
723
533
|
AND NOT MDBX_CXX_STANDARD LESS 11)
|
|
724
|
-
if(NOT MDBX_AMALGAMATED_SOURCE)
|
|
725
|
-
option(MDBX_ENABLE_TESTS "Build MDBX tests" ${BUILD_TESTING})
|
|
726
|
-
endif()
|
|
727
534
|
if(NOT MDBX_WITHOUT_MSVC_CRT
|
|
728
535
|
AND NOT (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8)
|
|
729
536
|
AND NOT (CMAKE_COMPILER_IS_CLANG AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.9)
|
|
730
537
|
AND NOT (MSVC AND MSVC_VERSION LESS 1900))
|
|
538
|
+
set(MDBX_CXX_AVAILABLE TRUE)
|
|
731
539
|
option(MDBX_BUILD_CXX "Build C++ portion" ON)
|
|
732
540
|
else()
|
|
541
|
+
if(DEFINED MDBX_BUILD_CXX AND MDBX_BUILD_CXX)
|
|
542
|
+
if(MDBX_WITHOUT_MSVC_CRT)
|
|
543
|
+
message(
|
|
544
|
+
WARNING
|
|
545
|
+
"MDBX_BUILD_CXX=${MDBX_BUILD_CXX}: But MDBX_WITHOUT_MSVC_CRT=${MDBX_WITHOUT_MSVC_CRT} which does not allow the use of C++."
|
|
546
|
+
)
|
|
547
|
+
else()
|
|
548
|
+
message(WARNING "MDBX_BUILD_CXX=${MDBX_BUILD_CXX}: But there is no suitable C++ compiler available.")
|
|
549
|
+
endif()
|
|
550
|
+
endif()
|
|
733
551
|
set(MDBX_BUILD_CXX FALSE)
|
|
734
552
|
endif()
|
|
735
553
|
else()
|
|
736
|
-
|
|
737
|
-
|
|
554
|
+
if(DEFINED MDBX_BUILD_CXX AND MDBX_BUILD_CXX)
|
|
555
|
+
message(WARNING "MDBX_BUILD_CXX=${MDBX_BUILD_CXX}: But there is no suitable C++11 compiler available.")
|
|
556
|
+
endif()
|
|
557
|
+
set(MDBX_ENABLE_TESTS OFF)
|
|
558
|
+
set(MDBX_BUILD_CXX OFF)
|
|
738
559
|
endif()
|
|
739
560
|
|
|
740
561
|
if(CI)
|
|
@@ -743,8 +564,8 @@ endif()
|
|
|
743
564
|
|
|
744
565
|
# ######################################################################################################################
|
|
745
566
|
|
|
746
|
-
if(MDBX_BUILD_CXX AND NOT
|
|
747
|
-
message(FATAL_ERROR "MDBX_BUILD_CXX=${MDBX_BUILD_CXX}: The C++ compiler is required to build the C++API.")
|
|
567
|
+
if(MDBX_BUILD_CXX AND NOT MDBX_CXX_AVAILABLE)
|
|
568
|
+
message(FATAL_ERROR "MDBX_BUILD_CXX=${MDBX_BUILD_CXX}: The C++ 11 compiler is required to build the C++API.")
|
|
748
569
|
endif()
|
|
749
570
|
|
|
750
571
|
if(MDBX_BUILD_CXX)
|
|
@@ -754,107 +575,16 @@ endif()
|
|
|
754
575
|
|
|
755
576
|
# sources list
|
|
756
577
|
set(LIBMDBX_PUBLIC_HEADERS mdbx.h)
|
|
757
|
-
set(LIBMDBX_SOURCES mdbx.h "${CMAKE_CURRENT_BINARY_DIR}/config.h")
|
|
578
|
+
set(LIBMDBX_SOURCES mdbx.h "${CMAKE_CURRENT_BINARY_DIR}/config-cmake.h")
|
|
758
579
|
if(MDBX_AMALGAMATED_SOURCE)
|
|
759
580
|
list(APPEND LIBMDBX_SOURCES mdbx.c)
|
|
760
581
|
else()
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
file(SHA256 "${CMAKE_CURRENT_BINARY_DIR}/version.c" MDBX_SOURCERY_DIGEST)
|
|
764
|
-
string(MAKE_C_IDENTIFIER "${MDBX_GIT_DESCRIBE}" MDBX_SOURCERY_SUFFIX)
|
|
765
|
-
set(MDBX_BUILD_SOURCERY "${MDBX_SOURCERY_DIGEST}_${MDBX_SOURCERY_SUFFIX}")
|
|
766
|
-
|
|
767
|
-
if(MDBX_ALLOY_BUILD)
|
|
768
|
-
list(APPEND LIBMDBX_SOURCES "${MDBX_SOURCE_DIR}/alloy.c")
|
|
769
|
-
include_directories("${MDBX_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}")
|
|
770
|
-
else()
|
|
771
|
-
list(
|
|
772
|
-
APPEND
|
|
773
|
-
LIBMDBX_SOURCES
|
|
774
|
-
"${MDBX_SOURCE_DIR}/api-cold.c"
|
|
775
|
-
"${MDBX_SOURCE_DIR}/api-copy.c"
|
|
776
|
-
"${MDBX_SOURCE_DIR}/api-cursor.c"
|
|
777
|
-
"${MDBX_SOURCE_DIR}/api-dbi.c"
|
|
778
|
-
"${MDBX_SOURCE_DIR}/api-env.c"
|
|
779
|
-
"${MDBX_SOURCE_DIR}/api-extra.c"
|
|
780
|
-
"${MDBX_SOURCE_DIR}/api-key-transform.c"
|
|
781
|
-
"${MDBX_SOURCE_DIR}/api-misc.c"
|
|
782
|
-
"${MDBX_SOURCE_DIR}/api-opts.c"
|
|
783
|
-
"${MDBX_SOURCE_DIR}/api-range-estimate.c"
|
|
784
|
-
"${MDBX_SOURCE_DIR}/api-txn-data.c"
|
|
785
|
-
"${MDBX_SOURCE_DIR}/api-txn.c"
|
|
786
|
-
"${MDBX_SOURCE_DIR}/atomics-ops.h"
|
|
787
|
-
"${MDBX_SOURCE_DIR}/atomics-types.h"
|
|
788
|
-
"${MDBX_SOURCE_DIR}/audit.c"
|
|
789
|
-
"${MDBX_SOURCE_DIR}/chk.c"
|
|
790
|
-
"${MDBX_SOURCE_DIR}/cogs.c"
|
|
791
|
-
"${MDBX_SOURCE_DIR}/cogs.h"
|
|
792
|
-
"${MDBX_SOURCE_DIR}/coherency.c"
|
|
793
|
-
"${MDBX_SOURCE_DIR}/cursor.c"
|
|
794
|
-
"${MDBX_SOURCE_DIR}/cursor.h"
|
|
795
|
-
"${MDBX_SOURCE_DIR}/dbi.c"
|
|
796
|
-
"${MDBX_SOURCE_DIR}/dbi.h"
|
|
797
|
-
"${MDBX_SOURCE_DIR}/dpl.c"
|
|
798
|
-
"${MDBX_SOURCE_DIR}/dpl.h"
|
|
799
|
-
"${MDBX_SOURCE_DIR}/dxb.c"
|
|
800
|
-
"${MDBX_SOURCE_DIR}/env.c"
|
|
801
|
-
"${MDBX_SOURCE_DIR}/essentials.h"
|
|
802
|
-
"${MDBX_SOURCE_DIR}/gc-get.c"
|
|
803
|
-
"${MDBX_SOURCE_DIR}/gc-put.c"
|
|
804
|
-
"${MDBX_SOURCE_DIR}/gc.h"
|
|
805
|
-
"${MDBX_SOURCE_DIR}/global.c"
|
|
806
|
-
"${MDBX_SOURCE_DIR}/internals.h"
|
|
807
|
-
"${MDBX_SOURCE_DIR}/layout-dxb.h"
|
|
808
|
-
"${MDBX_SOURCE_DIR}/layout-lck.h"
|
|
809
|
-
"${MDBX_SOURCE_DIR}/lck.c"
|
|
810
|
-
"${MDBX_SOURCE_DIR}/lck.h"
|
|
811
|
-
"${MDBX_SOURCE_DIR}/logging_and_debug.c"
|
|
812
|
-
"${MDBX_SOURCE_DIR}/logging_and_debug.h"
|
|
813
|
-
"${MDBX_SOURCE_DIR}/meta.c"
|
|
814
|
-
"${MDBX_SOURCE_DIR}/meta.h"
|
|
815
|
-
"${MDBX_SOURCE_DIR}/mvcc-readers.c"
|
|
816
|
-
"${MDBX_SOURCE_DIR}/node.c"
|
|
817
|
-
"${MDBX_SOURCE_DIR}/node.h"
|
|
818
|
-
"${MDBX_SOURCE_DIR}/options.h"
|
|
819
|
-
"${MDBX_SOURCE_DIR}/osal.c"
|
|
820
|
-
"${MDBX_SOURCE_DIR}/osal.h"
|
|
821
|
-
"${MDBX_SOURCE_DIR}/page-get.c"
|
|
822
|
-
"${MDBX_SOURCE_DIR}/page-iov.c"
|
|
823
|
-
"${MDBX_SOURCE_DIR}/page-iov.h"
|
|
824
|
-
"${MDBX_SOURCE_DIR}/page-ops.c"
|
|
825
|
-
"${MDBX_SOURCE_DIR}/page-ops.h"
|
|
826
|
-
"${MDBX_SOURCE_DIR}/tree-search.c"
|
|
827
|
-
"${MDBX_SOURCE_DIR}/pnl.c"
|
|
828
|
-
"${MDBX_SOURCE_DIR}/pnl.h"
|
|
829
|
-
"${MDBX_SOURCE_DIR}/preface.h"
|
|
830
|
-
"${MDBX_SOURCE_DIR}/proto.h"
|
|
831
|
-
"${MDBX_SOURCE_DIR}/refund.c"
|
|
832
|
-
"${MDBX_SOURCE_DIR}/sort.h"
|
|
833
|
-
"${MDBX_SOURCE_DIR}/spill.c"
|
|
834
|
-
"${MDBX_SOURCE_DIR}/spill.h"
|
|
835
|
-
"${MDBX_SOURCE_DIR}/table.c"
|
|
836
|
-
"${MDBX_SOURCE_DIR}/tls.c"
|
|
837
|
-
"${MDBX_SOURCE_DIR}/tls.h"
|
|
838
|
-
"${MDBX_SOURCE_DIR}/tree-ops.c"
|
|
839
|
-
"${MDBX_SOURCE_DIR}/txl.c"
|
|
840
|
-
"${MDBX_SOURCE_DIR}/txl.h"
|
|
841
|
-
"${MDBX_SOURCE_DIR}/txn.c"
|
|
842
|
-
"${MDBX_SOURCE_DIR}/unaligned.h"
|
|
843
|
-
"${MDBX_SOURCE_DIR}/utils.c"
|
|
844
|
-
"${MDBX_SOURCE_DIR}/utils.h"
|
|
845
|
-
"${MDBX_SOURCE_DIR}/walk.c"
|
|
846
|
-
"${MDBX_SOURCE_DIR}/walk.h"
|
|
847
|
-
"${CMAKE_CURRENT_BINARY_DIR}/version.c")
|
|
848
|
-
if(NOT MSVC)
|
|
849
|
-
list(APPEND LIBMDBX_SOURCES "${MDBX_SOURCE_DIR}/lck-posix.c")
|
|
850
|
-
endif()
|
|
851
|
-
if(NOT APPLE)
|
|
852
|
-
list(APPEND LIBMDBX_SOURCES "${MDBX_SOURCE_DIR}/windows-import.h" "${MDBX_SOURCE_DIR}/windows-import.c"
|
|
853
|
-
"${MDBX_SOURCE_DIR}/lck-windows.c")
|
|
854
|
-
endif()
|
|
855
|
-
include_directories("${MDBX_SOURCE_DIR}")
|
|
582
|
+
if(NOT CMAKE_CURRENT_LIST_FILE)
|
|
583
|
+
set(CMAKE_CURRENT_LIST_FILE "CMakeLists.txt")
|
|
856
584
|
endif()
|
|
585
|
+
message(FATAL_ERROR "This \"${CMAKE_CURRENT_LIST_FILE}\" has been trimmed and is therefore intended only for build from an amalgamated form of the source code.")
|
|
857
586
|
endif(MDBX_AMALGAMATED_SOURCE)
|
|
587
|
+
|
|
858
588
|
if(MDBX_BUILD_CXX)
|
|
859
589
|
message(STATUS "Use C${MDBX_C_STANDARD} and C++${MDBX_CXX_STANDARD} for libmdbx")
|
|
860
590
|
list(APPEND LIBMDBX_PUBLIC_HEADERS mdbx.h++)
|
|
@@ -938,8 +668,10 @@ target_setup_options(mdbx-static)
|
|
|
938
668
|
libmdbx_setup_libs(mdbx-static INTERFACE)
|
|
939
669
|
if(MDBX_BUILD_SHARED_LIBRARY)
|
|
940
670
|
set_target_properties(mdbx-static PROPERTIES OUTPUT_NAME mdbx-static)
|
|
671
|
+
set(MDBX_LIBRARY mdbx)
|
|
941
672
|
else()
|
|
942
673
|
set_target_properties(mdbx-static PROPERTIES OUTPUT_NAME mdbx)
|
|
674
|
+
set(MDBX_LIBRARY mdbx-static)
|
|
943
675
|
endif()
|
|
944
676
|
target_include_directories(mdbx-static INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
|
|
945
677
|
|
|
@@ -1241,17 +973,15 @@ foreach(item IN LISTS options)
|
|
|
1241
973
|
message(STATUS "${item}: ${value}")
|
|
1242
974
|
endforeach(item)
|
|
1243
975
|
|
|
1244
|
-
# provide config.h for library build info
|
|
1245
|
-
|
|
1246
|
-
|
|
976
|
+
# provide config-cmake.h for library build info
|
|
977
|
+
file(REMOVE "${MDBX_SOURCE_DIR}/config-cmake.h")
|
|
978
|
+
configure_file("${MDBX_SOURCE_DIR}/config.h.in" "${CMAKE_CURRENT_BINARY_DIR}/config-cmake.h" ESCAPE_QUOTES)
|
|
979
|
+
add_definitions(-DMDBX_CONFIG_H="${CMAKE_CURRENT_BINARY_DIR}/config-cmake.h")
|
|
1247
980
|
|
|
1248
981
|
# ######################################################################################################################
|
|
1249
982
|
|
|
1250
|
-
if(
|
|
1251
|
-
|
|
1252
|
-
message(FATAL_ERROR "MDBX_ENABLE_TESTS=${MDBX_ENABLE_TESTS}: The C++ compiler is required to build the tests.")
|
|
1253
|
-
endif()
|
|
1254
|
-
add_subdirectory(test)
|
|
983
|
+
if(MDBX_ENABLE_TESTS)
|
|
984
|
+
add_subdirectory(ut_and_examples)
|
|
1255
985
|
endif()
|
|
1256
986
|
|
|
1257
987
|
# ######################################################################################################################
|