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.
Files changed (46) hide show
  1. {libmdbx-0.3.1 → libmdbx-0.3.2}/PKG-INFO +1 -1
  2. {libmdbx-0.3.1 → libmdbx-0.3.2}/build_mdbx.py +48 -4
  3. {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/CMakeLists.txt +67 -337
  4. libmdbx-0.3.2/libmdbx/dist/COPYRIGHT +159 -0
  5. {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/ChangeLog.md +204 -4
  6. {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/GNUmakefile +82 -26
  7. {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/NOTICE +13 -9
  8. libmdbx-0.3.2/libmdbx/dist/README.md +527 -0
  9. libmdbx-0.3.2/libmdbx/dist/VERSION.json +1 -0
  10. {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/cmake/compiler.cmake +10 -14
  11. {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/cmake/profile.cmake +2 -2
  12. {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/cmake/utils.cmake +15 -197
  13. {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/config.h.in +11 -3
  14. {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/man1/mdbx_chk.1 +1 -1
  15. {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/man1/mdbx_copy.1 +1 -1
  16. {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/man1/mdbx_drop.1 +2 -2
  17. {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/man1/mdbx_dump.1 +3 -3
  18. {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/man1/mdbx_load.1 +3 -3
  19. {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/man1/mdbx_stat.1 +2 -2
  20. {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/mdbx.c +744 -555
  21. {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/mdbx.c++ +76 -49
  22. {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/mdbx.h +88 -17
  23. {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/mdbx.h++ +464 -265
  24. {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/mdbx_chk.c +39 -13
  25. {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/mdbx_copy.c +41 -16
  26. {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/mdbx_drop.c +41 -16
  27. {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/mdbx_dump.c +45 -20
  28. {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/mdbx_load.c +63 -37
  29. {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/mdbx_stat.c +42 -18
  30. libmdbx-0.3.2/libmdbx/dist/ut_and_examples/CMakeLists.txt +39 -0
  31. libmdbx-0.3.2/libmdbx/dist/ut_and_examples/README.md +11 -0
  32. libmdbx-0.3.2/libmdbx/dist/ut_and_examples/example-mdbx.c +167 -0
  33. libmdbx-0.3.2/libmdbx/dist/ut_and_examples/example-mdbx.c++ +99 -0
  34. libmdbx-0.3.2/libmdbx/dist/ut_and_examples/pcrf/pcrf_simulator.c +367 -0
  35. {libmdbx-0.3.1 → libmdbx-0.3.2}/mdbx/mdbx.py +41 -21
  36. libmdbx-0.3.2/platform_enums.c +20 -0
  37. {libmdbx-0.3.1 → libmdbx-0.3.2}/pyproject.toml +3 -1
  38. libmdbx-0.3.1/libmdbx/dist/.clang-format-ignore +0 -8
  39. libmdbx-0.3.1/libmdbx/dist/README.md +0 -857
  40. libmdbx-0.3.1/libmdbx/dist/VERSION.json +0 -1
  41. {libmdbx-0.3.1 → libmdbx-0.3.2}/LICENSE +0 -0
  42. {libmdbx-0.3.1 → libmdbx-0.3.2}/README.md +0 -0
  43. {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/LICENSE +0 -0
  44. {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/Makefile +0 -0
  45. {libmdbx-0.3.1 → libmdbx-0.3.2}/libmdbx/dist/ntdll.def +0 -0
  46. {libmdbx-0.3.1 → libmdbx-0.3.2}/mdbx/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: libmdbx
3
- Version: 0.3.1
3
+ Version: 0.3.2
4
4
  Summary: The python bindings to libmdbx.
5
5
  License-File: LICENSE
6
6
  Keywords: mdbx,libmdbx,kvdb,bindings
@@ -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-2025 Леонид Юрьев aka Leonid Yuriev <leo@yuriev.ru> ###############################################
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. } Please see README.md at
7
- # https://gitflic.ru/project/erthink/libmdbx
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
- # MithrilDB will be radically different from libmdbx by the new database format and API based on C++17, as well as the
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}/.git"
57
- AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/COPYRIGHT"
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 " "PLEASE, AVOID USING ANY OTHER TECHNIQUES.")
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 MDBX_AMALGAMATED_SOURCE)
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 libmdbx tests." ${BUILD_TESTING})
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 MDBX_BUILD_CXX
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
- set(MDBX_CXX_STANDARD 98)
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(CL_NAME ${CMAKE_C_COMPILER} NAME)
578
- string(REPLACE cl.exe lib.exe MSVC_LIB_EXE ${CL_NAME})
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 tool not found")
410
+ message(WARNING "MSVC's lib.exe not found")
592
411
  endif()
593
412
  elseif(MINGW OR MINGW64)
594
- if(NOT DLLTOOL)
595
- # Find dlltool
596
- get_filename_component(GCC_NAME ${CMAKE_C_COMPILER} NAME)
597
- string(REPLACE gcc dlltool DLLTOOL_NAME ${GCC_NAME})
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(DLLTOOL)
601
- message(STATUS "Found dlltool: ${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 ${DLLTOOL} -d "${MDBX_SOURCE_DIR}/ntdll.def" -l "${MDBX_NTDLL_EXTRA_IMPLIB}")
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
- if(NOT MDBX_AMALGAMATED_SOURCE)
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
- set(MDBX_BUILD_CXX FALSE)
737
- set(MDBX_ENABLE_TESTS FALSE)
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 CMAKE_CXX_COMPILER_LOADED)
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
- # generate version file
762
- configure_file("${MDBX_SOURCE_DIR}/version.c.in" "${CMAKE_CURRENT_BINARY_DIR}/version.c" ESCAPE_QUOTES)
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
- configure_file("${MDBX_SOURCE_DIR}/config.h.in" "${CMAKE_CURRENT_BINARY_DIR}/config.h" ESCAPE_QUOTES)
1246
- add_definitions(-DMDBX_CONFIG_H="${CMAKE_CURRENT_BINARY_DIR}/config.h")
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(NOT MDBX_AMALGAMATED_SOURCE AND MDBX_ENABLE_TESTS)
1251
- if(NOT CMAKE_CXX_COMPILER_LOADED)
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
  # ######################################################################################################################