+# Makefile for liblmdb (Lightning memory-mapped database library).
+
+########################################################################
+# Configuration. The compiler options must enable threaded compilation.
+#
+# Preprocessor macros (for CPPFLAGS) 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:
+#
+# - MDB_USE_POSIX_SEM
+# - MDB_DSYNC
+# - MDB_FDATASYNC
+# - MDB_USE_PWRITEV
+#
+# There may be other macros in mdb.c of interest. You should
+# read mdb.c before changing any of them.
+#
CC = gcc
W = -W -Wall -Wno-unused-parameter -Wbad-function-cast
+THREADS = -pthread
OPT = -O2 -g
-CFLAGS = -pthread $(OPT) $(W) $(XCFLAGS)
+CFLAGS = $(THREADS) $(OPT) $(W) $(XCFLAGS)
LDLIBS =
SOLIBS =
prefix = /usr/local
+########################################################################
+
IHDRS = lmdb.h
ILIBS = liblmdb.a liblmdb.so
-IPROGS = mdb_stat mdb_copy
-IDOCS = mdb_stat.1 mdb_copy.1
+IPROGS = mdb_stat mdb_copy mdb_dump mdb_load
+IDOCS = mdb_stat.1 mdb_copy.1 mdb_dump.1 mdb_load.1
PROGS = $(IPROGS) mtest mtest2 mtest3 mtest4 mtest5
all: $(ILIBS) $(PROGS)
install: $(ILIBS) $(IPROGS) $(IHDRS)
- cp $(IPROGS) $(DESTDIR)$(prefix)/bin
- cp $(ILIBS) $(DESTDIR)$(prefix)/lib
- cp $(IHDRS) $(DESTDIR)$(prefix)/include
- cp $(IDOCS) $(DESTDIR)$(prefix)/man/man1
+ for f in $(IPROGS); do cp $$f $(DESTDIR)$(prefix)/bin; done
+ for f in $(ILIBS); do cp $$f $(DESTDIR)$(prefix)/lib; done
+ for f in $(IHDRS); do cp $$f $(DESTDIR)$(prefix)/include; done
+ for f in $(IDOCS); do cp $$f $(DESTDIR)$(prefix)/man/man1; done
clean:
rm -rf $(PROGS) *.[ao] *.so *~ testdb
ar rs $@ mdb.o midl.o
liblmdb.so: mdb.o midl.o
+# $(CC) $(LDFLAGS) -pthread -shared -Wl,-Bsymbolic -o $@ mdb.o midl.o $(SOLIBS)
$(CC) $(LDFLAGS) -pthread -shared -o $@ mdb.o midl.o $(SOLIBS)
mdb_stat: mdb_stat.o liblmdb.a
mdb_copy: mdb_copy.o liblmdb.a
+mdb_dump: mdb_dump.o liblmdb.a
+mdb_load: mdb_load.o liblmdb.a
mtest: mtest.o liblmdb.a
mtest2: mtest2.o liblmdb.a
mtest3: mtest3.o liblmdb.a
%.o: %.c lmdb.h
$(CC) $(CFLAGS) $(CPPFLAGS) -c $<
+
+coverage: xmtest
+ -rm -rf testdb; mkdir testdb
+ ./xmtest
+ gcov xmdb.c
+ gcov xmidl.c
+
+xmtest: mtest.o xmdb.o xmidl.o
+ gcc -o xmtest mtest.o xmdb.o xmidl.o -pthread -fprofile-arcs -ftest-coverage
+
+xmdb.o: mdb.c lmdb.h midl.h
+ $(CC) $(CFLAGS) -fPIC $(CPPFLAGS) -O0 -fprofile-arcs -ftest-coverage -c mdb.c -o $@
+
+xmidl.o: midl.c midl.h
+ $(CC) $(CFLAGS) -fPIC $(CPPFLAGS) -O0 -fprofile-arcs -ftest-coverage -c midl.c -o $@