#
# 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:
+# platforms; you should not need to change any of these.
+# Read their descriptions in mdb.c if you do:
#
-# To compile successfully if the default does not:
-# - MDB_USE_POSIX_SEM (enabled by default on BSD, Apple)
-# Define if shared mutexes are unsupported. Note that Posix
-# semaphores and shared mutexes have different behaviors and
-# different problems, see the Caveats section in lmdb.h.
-#
-# For best performance or to compile successfully:
-# - MDB_DSYNC = "O_DSYNC" (default) or "O_SYNC" (less efficient)
-# If O_DSYNC is undefined but exists in /usr/include,
-# preferably set some compiler flag to get the definition.
-# - MDB_FDATASYNC = "fdatasync" or "fsync"
-# Function for flushing the data of a file. Define this to
-# "fsync" if fdatasync() is not supported. fdatasync is
-# default except on BSD, Apple, Android which use fsync.
+# - MDB_USE_POSIX_SEM
+# - MDB_DSYNC
+# - MDB_FDATASYNC
# - MDB_USE_PWRITEV
-# Define if the pwritev() function is supported.
#
-# Data format:
-# - MDB_MAXKEYSIZE
-# Controls data packing and limits, see mdb.c.
-# You might need to change this if the default size is too small.
+# 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
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)
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 $@