Skip to content

Commit 0d7c124

Browse files
committed
mdbx: deduplicate/reduce amalgamated source code (v0.14.1-356-gadaf1352).
2026-01-28 mdbx: extract `wingetopt` into separated amalgamated file because of different licence. 2026-01-28 mdbx-cmake: update headed notice. 2026-01-28 mdbx: add `amalgam.in` header. 2026-01-28 mdbx-make: fix LDFLAGS for tools. 2026-01-28 mdbx-make: filter-out 'pragma once' from C++-probe. 2026-01-28 mdbx-test: drop unused code. 2026-01-28 mdbx: deduplicate/reduce amalgamated source code. 2026-01-28 mdbx: refine 64x64-to-128 multiplication. 2026-01-27 mdbx-make: cutoff useless C-portion of code from amalgamated `mdbx.c++`
1 parent 9d07450 commit 0d7c124

17 files changed

+4755
-31918
lines changed

.gitignore

Lines changed: 0 additions & 47 deletions
This file was deleted.

CMakeLists.txt

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
# Copyright (c) 2020-2026 Леонид Юрьев aka Leonid Yuriev <leo@yuriev.ru> ###############################################
22
# SPDX-License-Identifier: Apache-2.0
33
#
4-
# Donations are welcome to ETH `0xD104d8f8B2dC312aaD74899F83EBf3EEBDC1EA3A`,
4+
# libmdbx (aka MDBX) is an extremely fast, compact, powerful, embeddedable, transactional key-value storage engine with
5+
# open-source code. MDBX has a specific set of properties and capabilities, focused on creating unique lightweight
6+
# solutions. Please visit https://libmdbx.dqdkfa.ru for more information, changelog, documentation, C++ API description
7+
# and links to the original git repo with the source code. Questions, feedback and suggestions are welcome to the
8+
# Telegram' group https://t.me/libmdbx.
9+
#
10+
# The libmdbx code will forever remain open and with high-quality free support, as far as the life circumstances of the
11+
# project participants allow. Donations are welcome to ETH `0xD104d8f8B2dC312aaD74899F83EBf3EEBDC1EA3A`,
512
# BTC `bc1qzvl9uegf2ea6cwlytnanrscyv8snwsvrc0xfsu`, SOL `FTCTgbHajoLVZGr8aEFWMzx3NDMyS5wXJgfeMTmJznRi`.
613
# Всё будет хорошо!
7-
8-
# libmdbx = { Revised and extended descendant of Symas LMDB. }
9-
# Please see README.md at https://sourcecraft.dev/dqdkfa/libmdbx
10-
#
11-
# Libmdbx is superior to LMDB in terms of features and reliability, not inferior in performance. libmdbx works on Linux,
12-
# FreeBSD, MacOS X and other systems compliant with POSIX.1-2008, but also support Windows as a complementary platform.
1314
#
1415
# The next version is under active non-public development and will be released as MithrilDB and libmithrildb for
1516
# libraries & packages. Admittedly mythical Mithril is resembling silver but being stronger and lighter than steel.
@@ -62,6 +63,7 @@ if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/VERSION.json"
6263
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/mdbx.c"
6364
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/mdbx.c++"
6465
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/mdbx.h"
66+
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/mdbx-internals.h"
6567
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/mdbx.h++"
6668
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/mdbx_chk.c"
6769
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/mdbx_copy.c"
@@ -758,14 +760,18 @@ endif()
758760

759761
# build mdbx-tools
760762
if(MDBX_BUILD_TOOLS)
761-
set(WINGETOPT_SRC "")
762-
if(WIN32)
763+
if(MDBX_AMALGAMATED_SOURCE)
764+
set(WINGETOPT_SRC ${MDBX_SOURCE_DIR}/mdbx-wingetopt.h)
765+
else()
763766
set(WINGETOPT_SRC ${MDBX_SOURCE_DIR}/tools/wingetopt.c ${MDBX_SOURCE_DIR}/tools/wingetopt.h)
764767
endif()
768+
if(NOT WIN32)
769+
set(WINGETOPT_SRC "")
770+
endif()
765771

766772
foreach(TOOL chk copy stat dump load drop)
767773
if(MDBX_AMALGAMATED_SOURCE)
768-
add_executable(mdbx_${TOOL} mdbx.h ${MDBX_SOURCE_DIR}/mdbx_${TOOL}.c)
774+
add_executable(mdbx_${TOOL} mdbx.h ${MDBX_SOURCE_DIR}/mdbx_${TOOL}.c ${WINGETOPT_SRC})
769775
else()
770776
add_executable(mdbx_${TOOL} mdbx.h ${MDBX_SOURCE_DIR}/tools/${TOOL}.c ${WINGETOPT_SRC})
771777
endif()

GNUmakefile

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,12 @@ ifneq ($(make_ge_4_1),1)
7878
# don't use variable expansion trick as workaround for bugs of GNU Make before 4.1
7979
LIBS ?= $(shell $(uname2libs))
8080
LDFLAGS ?= $(shell $(uname2ldflags))
81-
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')
81+
LIB_STDCXXFS ?= $(shell echo '$(cxx_filesystem_probe)' | cat mdbx.h++ - | sed $$'1s/\xef\xbb\xbf//' | grep -v 'pragma once' | $(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')
8282
else
8383
# using variable expansion trick to avoid repeaded probes
8484
LIBS ?= $(eval LIBS := $$(shell $$(uname2libs)))$(LIBS)
8585
LDFLAGS ?= $(eval LDFLAGS := $$(shell $$(uname2ldflags)))$(LDFLAGS)
86-
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)
86+
LIB_STDCXXFS ?= $(eval LIB_STDCXXFS := $$(shell echo '$$(cxx_filesystem_probe)' | cat mdbx.h++ - | sed $$$$'1s/\xef\xbb\xbf//' | grep -v '#pragma once' | $(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)
8787
endif
8888

8989
ifneq ($(make_ge_4_4),1)
@@ -347,34 +347,34 @@ config-gnumake.h: @buildflags.tag mdbx.c $(lastword $(MAKEFILE_LIST)) LICENSE NO
347347
&& echo '#define MDBX_BUILD_METADATA "$(MDBX_BUILD_METADATA)"' \
348348
) >$@
349349

350-
mdbx-dylib.o: config-gnumake.h mdbx.c mdbx.h $(lastword $(MAKEFILE_LIST)) LICENSE NOTICE COPYRIGHT
350+
mdbx-dylib.o: config-gnumake.h mdbx.c mdbx.h mdbx-internals.h $(lastword $(MAKEFILE_LIST)) LICENSE NOTICE COPYRIGHT
351351
@echo ' CC $@'
352352
$(QUIET)$(CC) $(CFLAGS) $(MDBX_BUILD_OPTIONS) '-DMDBX_CONFIG_H="config-gnumake.h"' -DLIBMDBX_EXPORTS=1 -c mdbx.c -o $@
353353

354-
mdbx-static.o: config-gnumake.h mdbx.c mdbx.h $(lastword $(MAKEFILE_LIST)) LICENSE NOTICE COPYRIGHT
354+
mdbx-static.o: config-gnumake.h mdbx.c mdbx.h mdbx-internals.h $(lastword $(MAKEFILE_LIST)) LICENSE NOTICE COPYRIGHT
355355
@echo ' CC $@'
356356
$(QUIET)$(CC) $(CFLAGS) $(MDBX_BUILD_OPTIONS) '-DMDBX_CONFIG_H="config-gnumake.h"' -ULIBMDBX_EXPORTS -c mdbx.c -o $@
357357

358-
mdbx++-dylib.o: config-gnumake.h mdbx.c++ $(HEADERS) $(lastword $(MAKEFILE_LIST)) LICENSE NOTICE COPYRIGHT
358+
mdbx++-dylib.o: config-gnumake.h mdbx.c++ $(HEADERS) mdbx-internals.h $(lastword $(MAKEFILE_LIST)) LICENSE NOTICE COPYRIGHT
359359
@echo ' CC $@'
360360
$(QUIET)$(CXX) $(CXXFLAGS) $(MDBX_BUILD_OPTIONS) '-DMDBX_CONFIG_H="config-gnumake.h"' -DLIBMDBX_EXPORTS=1 -c mdbx.c++ -o $@
361361

362-
mdbx++-static.o: config-gnumake.h mdbx.c++ $(HEADERS) $(lastword $(MAKEFILE_LIST)) LICENSE NOTICE COPYRIGHT
362+
mdbx++-static.o: config-gnumake.h mdbx.c++ $(HEADERS) mdbx-internals.h $(lastword $(MAKEFILE_LIST)) LICENSE NOTICE COPYRIGHT
363363
@echo ' CC $@'
364364
$(QUIET)$(CXX) $(CXXFLAGS) $(MDBX_BUILD_OPTIONS) '-DMDBX_CONFIG_H="config-gnumake.h"' -ULIBMDBX_EXPORTS -c mdbx.c++ -o $@
365365

366-
mdbx_%: mdbx_%.c mdbx-static.o
366+
mdbx_%: mdbx_%.c mdbx-static.o mdbx-wingetopt.h
367367
@echo ' CC+LD $@'
368-
$(QUIET)$(CC) $(CFLAGS) $(MDBX_BUILD_OPTIONS) '-DMDBX_CONFIG_H="config-gnumake.h"' $^ $(EXE_LDFLAGS) $(LIBS) -o $@
368+
$(QUIET)$(CC) $(CFLAGS) $(MDBX_BUILD_OPTIONS) '-DMDBX_CONFIG_H="config-gnumake.h"' $< mdbx-static.o $(LDFLAGS) $(EXE_LDFLAGS) $(LIBS) -o $@
369369

370370
mdbx_%.static: mdbx_%.c mdbx-static.o
371371
@echo ' CC+LD $@'
372-
$(QUIET)$(CC) $(CFLAGS) $(MDBX_BUILD_OPTIONS) '-DMDBX_CONFIG_H="config-gnumake.h"' $^ $(EXE_LDFLAGS) -static -Wl,--strip-all -o $@
372+
$(QUIET)$(CC) $(CFLAGS) $(MDBX_BUILD_OPTIONS) '-DMDBX_CONFIG_H="config-gnumake.h"' $^ $(LDFLAGS) $(EXE_LDFLAGS) -static -Wl,--strip-all -o $@
373373

374374
mdbx_%.static-lto: mdbx_%.c config-gnumake.h mdbx.c mdbx.h
375375
@echo ' CC+LD $@'
376376
$(QUIET)$(CC) $(CFLAGS) -Os -flto $(MDBX_BUILD_OPTIONS) '-DLIBMDBX_API=' '-DMDBX_CONFIG_H="config-gnumake.h"' \
377-
$< mdbx.c $(EXE_LDFLAGS) $(LIBS) -static -Wl,--strip-all -o $@
377+
$< mdbx.c $(LDFLAGS) $(EXE_LDFLAGS) $(LIBS) -static -Wl,--strip-all -o $@
378378

379379
check smoke: test
380380

VERSION.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{ "git_describe": "v0.14.1-347-g34df8a6f", "git_timestamp": "2026-01-27T16:33:56+03:00", "git_tree": "93d7d95077dd6ce88eabe1259347e95ad56c5bd3", "git_commit": "34df8a6fcd56785fa2309daa0887eebff4f7b7c7", "semver": "0.14.1.347" }
1+
{ "git_describe": "v0.14.1-356-gadaf1352", "git_timestamp": "2026-01-29T18:08:07+03:00", "git_tree": "246a9ed8d7ad2d018c9bb365d96efd954af8debd", "git_commit": "adaf135226e1d53dd5cf49e1cba09eea202b32b2", "semver": "0.14.1.356" }

config.h.in

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
/* This is CMake-template for libmdbx's config.h
1+
/* This file is part of the libmdbx amalgamated source code (v0.14.1-356-gadaf1352 at 2026-01-29T18:08:07+03:00),
2+
* it is the template for libmdbx's config.h
23
******************************************************************************/
34

45
/* *INDENT-OFF* */

0 commit comments

Comments
 (0)