mirror of
https://github.com/isar/libmdbx.git
synced 2024-12-28 18:48:48 +08:00
mdbx: refine & clarify Makefile.
Change-Id: I4e5b388c65872d4cd413d0ff30f232ed0ad2112d
This commit is contained in:
parent
daba18111b
commit
ba943fcff2
89
Makefile
89
Makefile
@ -1,4 +1,4 @@
|
||||
# GNU Makefile for libmdbx (lightning memory-mapped database library for Linux).
|
||||
# GNU Makefile for libmdbx (reliable lightning memory-mapped DB library for Linux).
|
||||
|
||||
########################################################################
|
||||
# Configuration. The compiler options must enable threaded compilation.
|
||||
@ -6,58 +6,69 @@
|
||||
# Preprocessor macros (for XCFLAGS) of interest...
|
||||
# Note that the defaults should already be correct for most
|
||||
# platforms; you should not need to change any of these.
|
||||
# Read their descriptions in mdb.c if you do:
|
||||
# Read their descriptions in mdb.c if you do. There may be
|
||||
# other macros of interest. You should read mdb.c
|
||||
# before changing any of them.
|
||||
#
|
||||
# - MDB_USE_ROBUST
|
||||
#
|
||||
# There may be other macros in mdb.c of interest. You should
|
||||
# read mdb.c before changing any of them.
|
||||
#
|
||||
DESTDIR ?=
|
||||
|
||||
# install sandbox
|
||||
SANDBOX ?=
|
||||
|
||||
# install prefixes (inside sandbox)
|
||||
prefix ?= /usr/local
|
||||
mandir ?= $(prefix)/man
|
||||
|
||||
# lib/bin suffix for multiarch/biarch, e.g. '.x86_64'
|
||||
suffix ?=
|
||||
|
||||
CC ?= gcc
|
||||
XCFLAGS ?= -DNDEBUG=1 -DMDB_DEBUG=0
|
||||
CFLAGS ?= -O2 -g3 -Wall -Werror -Wextra
|
||||
CFLAGS += -pthread $(XCFLAGS)
|
||||
|
||||
# LY: for ability to built with modern glibc,
|
||||
# but then run with the old
|
||||
LDOPS ?= -Wl,--no-as-needed,-lrt
|
||||
|
||||
# LY: just for benchmarking
|
||||
IOARENA ?= ../ioarena.git/@BUILD/src/ioarena
|
||||
|
||||
########################################################################
|
||||
|
||||
IHDRS := lmdb.h mdbx.h
|
||||
ILIBS := libmdbx.a libmdbx.so
|
||||
IPROGS := mdbx_stat mdbx_copy mdbx_dump mdbx_load mdbx_chk
|
||||
IDOCS := mdb_stat.1 mdb_copy.1 mdb_dump.1 mdb_load.1
|
||||
PROGS := $(IPROGS) mtest0 mtest1 mtest2 mtest3 mtest4 mtest5 mtest6 wbench
|
||||
PROGS += yota_test1 yota_test2
|
||||
HEADERS := lmdb.h mdbx.h
|
||||
LIBRARIES := libmdbx.a libmdbx.so
|
||||
TOOLS := mdbx_stat mdbx_copy mdbx_dump mdbx_load mdbx_chk
|
||||
MANPAGES := mdb_stat.1 mdb_copy.1 mdb_dump.1 mdb_load.1
|
||||
TESTS := mtest0 mtest1 mtest2 mtest3 mtest4 mtest5 mtest6 wbench \
|
||||
yota_test1 yota_test2
|
||||
|
||||
SRC_LMDB := mdb.c midl.c lmdb.h midl.h reopen.h barriers.h
|
||||
SRC_MDBX := $(SRC_LMDB) mdbx.h
|
||||
SRC_LMDB := mdb.c midl.c lmdb.h midl.h reopen.h barriers.h
|
||||
SRC_MDBX := $(SRC_LMDB) mdbx.h
|
||||
|
||||
.PHONY: mdbx lmdb all install clean check tests coverage
|
||||
|
||||
all: $(ILIBS) $(IPROGS)
|
||||
all: $(LIBRARIES) $(TOOLS)
|
||||
|
||||
mdbx: libmdbx.a libmdbx.so
|
||||
|
||||
lmdb: liblmdb.a liblmdb.so
|
||||
|
||||
install: $(ILIBS) $(IPROGS) $(IHDRS)
|
||||
mkdir -p $(DESTDIR)$(prefix)/bin \
|
||||
&& cp -t $(DESTDIR)$(prefix)/bin $(IPROGS) && \
|
||||
mkdir -p $(DESTDIR)$(prefix)/lib \
|
||||
&& cp -t $(DESTDIR)$(prefix)/lib $(ILIBS) && \
|
||||
mkdir -p $(DESTDIR)$(prefix)/include \
|
||||
&& cp -t $(DESTDIR)$(prefix)/include $(IHDRS) && \
|
||||
mkdir -p $(DESTDIR)$(mandir)/man1 \
|
||||
&& cp -t $(DESTDIR)$(mandir)/man1 $(IDOCS)
|
||||
tools: $(TOOLS)
|
||||
|
||||
install: $(LIBRARIES) $(TOOLS) $(HEADERS)
|
||||
mkdir -p $(SANDBOX)$(prefix)/bin$(suffix) \
|
||||
&& cp -t $(SANDBOX)$(prefix)/bin$(suffix) $(TOOLS) && \
|
||||
mkdir -p $(SANDBOX)$(prefix)/lib$(suffix) \
|
||||
&& cp -t $(SANDBOX)$(prefix)/lib$(suffix) $(LIBRARIES) && \
|
||||
mkdir -p $(SANDBOX)$(prefix)/include \
|
||||
&& cp -t $(SANDBOX)$(prefix)/include $(HEADERS) && \
|
||||
mkdir -p $(SANDBOX)$(mandir)/man1 \
|
||||
&& cp -t $(SANDBOX)$(mandir)/man1 $(MANPAGES)
|
||||
|
||||
clean:
|
||||
rm -rf $(PROGS) @* *.[ao] *.[ls]o *~ testdb/* *.gcov
|
||||
rm -rf $(TOOLS )$(TESTS) @* *.[ao] *.[ls]o *~ testdb/* *.gcov
|
||||
|
||||
tests: mdbx $(PROGS)
|
||||
tests: $(TESTS)
|
||||
|
||||
check: tests
|
||||
[ -d testdb ] || mkdir testdb && rm -f testdb/* \
|
||||
@ -74,28 +85,28 @@ libmdbx.a: mdbx.o
|
||||
$(AR) rs $@ $^
|
||||
|
||||
libmdbx.so: mdbx.lo
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) -save-temps -pthread -shared -o $@ $^
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) -save-temps -pthread -shared $(LDOPS) -o $@ $^
|
||||
|
||||
liblmdb.a: lmdb.o
|
||||
$(AR) rs $@ $^
|
||||
|
||||
liblmdb.so: lmdb.lo
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) -pthread -shared -o $@ $^
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) -pthread -shared $(LDOPS) -o $@ $^
|
||||
|
||||
mdbx_stat: mdb_stat.o mdbx.o
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) $(LDOPS) -o $@ $^
|
||||
|
||||
mdbx_copy: mdb_copy.o mdbx.o
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) $(LDOPS) -o $@ $^
|
||||
|
||||
mdbx_dump: mdb_dump.o mdbx.o
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) $(LDOPS) -o $@ $^
|
||||
|
||||
mdbx_load: mdb_load.o mdbx.o
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) $(LDOPS) -o $@ $^
|
||||
|
||||
mdbx_chk: mdb_chk.o mdbx.o
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ -Wl,--no-as-needed,-lrt
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) $(LDOPS) -o $@ $^
|
||||
|
||||
mtest0: mtest0.o mdbx.o
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
|
||||
@ -125,7 +136,7 @@ yota_test2: yota_test2.o mdbx.o
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
|
||||
|
||||
wbench: wbench.o mdbx.o
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ -Wl,--no-as-needed,-lrt
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
|
||||
|
||||
mdbx.o: $(SRC_MDBX)
|
||||
$(CC) $(CFLAGS) -include mdbx.h -c mdb.c -o $@
|
||||
@ -145,14 +156,14 @@ lmdb.lo: $(SRC_LMDB)
|
||||
%.o: %.c lmdb.h mdbx.h
|
||||
$(CC) $(CFLAGS) -c $<
|
||||
|
||||
COV_FLAGS=-fprofile-arcs -ftest-coverage
|
||||
COFLAGS = -fprofile-arcs -ftest-coverage
|
||||
|
||||
@gcov-mdb.o: $(SRC_MDBX)
|
||||
$(CC) $(CFLAGS) $(COV_FLAGS) -O0 -include mdbx.h -c mdb.c -o $@
|
||||
$(CC) $(CFLAGS) $(COFLAGS) -O0 -include mdbx.h -c mdb.c -o $@
|
||||
|
||||
coverage: @gcov-mdb.o
|
||||
for t in mtest*.c; do x=`basename \$$t .c`; $(MAKE) $$x.o; \
|
||||
gcc -o @gcov-$$x $$x.o $^ -pthread $(COV_FLAGS); \
|
||||
gcc -o @gcov-$$x $$x.o $^ -pthread $(COFLAGS); \
|
||||
rm -rf testdb; mkdir testdb; ./@gcov-$$x; done
|
||||
gcov @gcov-mdb
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user