mdbx-make: support for MinGW.

This commit is contained in:
Леонид Юрьев (Leonid Yuriev) 2022-03-30 18:13:44 +03:00
parent 6f37c8e57f
commit ebf7bf7583

View File

@ -37,9 +37,8 @@ CXXSTD ?= $(eval CXXSTD := $$(shell PROBE=$$$$([ -f mdbx.c++ ] && echo mdbx.c++
CXXFLAGS = $(strip $(CXXSTD) $(filter-out -std=gnu11,$(CFLAGS))) CXXFLAGS = $(strip $(CXXSTD) $(filter-out -std=gnu11,$(CFLAGS)))
# TIP: Try append '--no-as-needed,-lrt' for ability to built with modern glibc, but then use with the old. # TIP: Try append '--no-as-needed,-lrt' for ability to built with modern glibc, but then use with the old.
LIBS ?= $(strip -lm $(shell uname | grep -qi SunOS && echo "-lkstat") $(shell uname | grep -qi -e Darwin -e OpenBSD || echo "-lrt") $(shell uname | grep -qi Windows && echo "-lntdll")) LIBS ?= $(shell $(uname2libs))
LDFLAGS ?= $(shell $(uname2ldflags))
LDFLAGS ?= $(strip $(shell $(LD) --help 2>/dev/null | grep -q -- --gc-sections && echo '-Wl,--gc-sections,-z,relro,-O1')$(shell $(LD) --help 2>/dev/null | grep -q -- -dead_strip && echo '-Wl,-dead_strip'))
EXE_LDFLAGS ?= -pthread EXE_LDFLAGS ?= -pthread
################################################################################ ################################################################################
@ -52,6 +51,33 @@ define uname2sosuffix
*) echo so;; *) echo so;;
esac esac
endef endef
define uname2ldflags
case "$(UNAME)" in
CYGWIN*|MINGW*|MSYS*|Windows*)
echo '-Wl,--gc-sections,-O1'
;;
*)
"$(LD)" --help 2>/dev/null | grep -q -- --gc-sections && echo '-Wl,--gc-sections,-z,relro,-O1'
"$(LD)" --help 2>/dev/null | grep -q -- -dead_strip && echo '-Wl,-dead_strip'
;;
esac
endef
define uname2libs
case "$(UNAME)" in
CYGWIN*|MINGW*|MSYS*|Windows*)
echo '-lm -lntdll -lwinmm'
;;
*SunOS*|*Solaris*)
echo '-lm -lkstat -lrt'
;;
*Darwin*|OpenBSD*)
echo '-lm'
;;
*)
echo '-lm -lrt'
;;
esac
endef
SO_SUFFIX := $(shell $(uname2sosuffix)) SO_SUFFIX := $(shell $(uname2sosuffix))
HEADERS := mdbx.h mdbx.h++ HEADERS := mdbx.h mdbx.h++
LIBRARIES := libmdbx.a libmdbx.$(SO_SUFFIX) LIBRARIES := libmdbx.a libmdbx.$(SO_SUFFIX)
@ -249,7 +275,7 @@ mdbx_%.static: mdbx_%.c mdbx-static.o
mdbx_%.static-lto: mdbx_%.c config.h mdbx.c mdbx.h mdbx_%.static-lto: mdbx_%.c config.h mdbx.c mdbx.h
@echo ' CC+LD $@' @echo ' CC+LD $@'
$(QUIET)$(CC) $(CFLAGS) -Os -flto $(MDBX_BUILD_OPTIONS) '-DLIBMDBX_API=__attribute__((__visibility__("hidden")))' '-DMDBX_CONFIG_H="config.h"' \ $(QUIET)$(CC) $(CFLAGS) -Os -flto $(MDBX_BUILD_OPTIONS) '-DLIBMDBX_API=' '-DMDBX_CONFIG_H="config.h"' \
$< mdbx.c $(EXE_LDFLAGS) $(LIBS) -static -Wl,--strip-all -o $@ $< mdbx.c $(EXE_LDFLAGS) $(LIBS) -static -Wl,--strip-all -o $@
#> dist-cutoff-begin #> dist-cutoff-begin
@ -408,7 +434,7 @@ mdbx_%.static: src/mdbx_%.c mdbx-static.o
mdbx_%.static-lto: src/mdbx_%.c src/config.h src/version.c src/alloy.c $(ALLOY_DEPS) mdbx_%.static-lto: src/mdbx_%.c src/config.h src/version.c src/alloy.c $(ALLOY_DEPS)
@echo ' CC+LD $@' @echo ' CC+LD $@'
$(QUIET)$(CC) $(CFLAGS) -Os -flto $(MDBX_BUILD_OPTIONS) '-DLIBMDBX_API=__attribute__((__visibility__("hidden")))' '-DMDBX_CONFIG_H="config.h"' \ $(QUIET)$(CC) $(CFLAGS) -Os -flto $(MDBX_BUILD_OPTIONS) '-DLIBMDBX_API=' '-DMDBX_CONFIG_H="config.h"' \
$< src/alloy.c $(EXE_LDFLAGS) $(LIBS) -static -Wl,--strip-all -o $@ $< src/alloy.c $(EXE_LDFLAGS) $(LIBS) -static -Wl,--strip-all -o $@
mdbx_test: $(TEST_OBJ) libmdbx.$(SO_SUFFIX) mdbx_test: $(TEST_OBJ) libmdbx.$(SO_SUFFIX)