1# Makefile for liblmdb (Lightning memory-mapped database library). 2 3######################################################################## 4# Configuration. The compiler options must enable threaded compilation. 5# 6# Preprocessor macros (for CPPFLAGS) of interest... 7# Note that the defaults should already be correct for most 8# platforms; you should not need to change any of these. 9# Read their descriptions in mdb.c if you do: 10# 11# - MDB_USE_POSIX_SEM 12# - MDB_DSYNC 13# - MDB_FDATASYNC 14# - MDB_FDATASYNC_WORKS 15# - MDB_USE_PWRITEV 16# - MDB_USE_ROBUST 17# 18# There may be other macros in mdb.c of interest. You should 19# read mdb.c before changing any of them. 20# 21CC = gcc 22AR = ar 23W = -W -Wall -Wno-unused-parameter -Wbad-function-cast -Wuninitialized 24THREADS = -pthread 25OPT = -O2 -g 26CFLAGS = $(THREADS) $(OPT) $(W) $(XCFLAGS) 27LDLIBS = 28SOLIBS = 29SOEXT = .so 30prefix = /usr/local 31exec_prefix = $(prefix) 32bindir = $(exec_prefix)/bin 33libdir = $(exec_prefix)/lib 34includedir = $(prefix)/include 35datarootdir = $(prefix)/share 36mandir = $(datarootdir)/man 37 38######################################################################## 39 40IHDRS = lmdb.h 41ILIBS = liblmdb.a liblmdb$(SOEXT) 42IPROGS = mdb_stat mdb_copy mdb_dump mdb_load 43IDOCS = mdb_stat.1 mdb_copy.1 mdb_dump.1 mdb_load.1 44PROGS = $(IPROGS) mtest mtest2 mtest3 mtest4 mtest5 45all: $(ILIBS) $(PROGS) 46 47install: $(ILIBS) $(IPROGS) $(IHDRS) 48 mkdir -p $(DESTDIR)$(bindir) 49 mkdir -p $(DESTDIR)$(libdir) 50 mkdir -p $(DESTDIR)$(includedir) 51 mkdir -p $(DESTDIR)$(mandir)/man1 52 for f in $(IPROGS); do cp $$f $(DESTDIR)$(bindir); done 53 for f in $(ILIBS); do cp $$f $(DESTDIR)$(libdir); done 54 for f in $(IHDRS); do cp $$f $(DESTDIR)$(includedir); done 55 for f in $(IDOCS); do cp $$f $(DESTDIR)$(mandir)/man1; done 56 57clean: 58 rm -rf $(PROGS) *.[ao] *.[ls]o *~ testdb 59 60test: all 61 rm -rf testdb && mkdir testdb 62 ./mtest && ./mdb_stat testdb 63 64liblmdb.a: mdb.o midl.o 65 $(AR) rs $@ mdb.o midl.o 66 67liblmdb$(SOEXT): mdb.lo midl.lo 68# $(CC) $(LDFLAGS) -pthread -shared -Wl,-Bsymbolic -o $@ mdb.o midl.o $(SOLIBS) 69 $(CC) $(LDFLAGS) -pthread -shared -o $@ mdb.lo midl.lo $(SOLIBS) 70 71mdb_stat: mdb_stat.o liblmdb.a 72mdb_copy: mdb_copy.o liblmdb.a 73mdb_dump: mdb_dump.o liblmdb.a 74mdb_load: mdb_load.o liblmdb.a 75mtest: mtest.o liblmdb.a 76mtest2: mtest2.o liblmdb.a 77mtest3: mtest3.o liblmdb.a 78mtest4: mtest4.o liblmdb.a 79mtest5: mtest5.o liblmdb.a 80mtest6: mtest6.o liblmdb.a 81 82mdb.o: mdb.c lmdb.h midl.h 83 $(CC) $(CFLAGS) $(CPPFLAGS) -c mdb.c 84 85midl.o: midl.c midl.h 86 $(CC) $(CFLAGS) $(CPPFLAGS) -c midl.c 87 88mdb.lo: mdb.c lmdb.h midl.h 89 $(CC) $(CFLAGS) -fPIC $(CPPFLAGS) -c mdb.c -o $@ 90 91midl.lo: midl.c midl.h 92 $(CC) $(CFLAGS) -fPIC $(CPPFLAGS) -c midl.c -o $@ 93 94%: %.o 95 $(CC) $(CFLAGS) $(LDFLAGS) $^ $(LDLIBS) -o $@ 96 97%.o: %.c lmdb.h 98 $(CC) $(CFLAGS) $(CPPFLAGS) -c $< 99 100COV_FLAGS=-fprofile-arcs -ftest-coverage 101COV_OBJS=xmdb.o xmidl.o 102 103coverage: xmtest 104 for i in mtest*.c [0-9]*.c; do j=`basename \$$i .c`; $(MAKE) $$j.o; \ 105 gcc -o x$$j $$j.o $(COV_OBJS) -pthread $(COV_FLAGS); \ 106 rm -rf testdb; mkdir testdb; ./x$$j; done 107 gcov xmdb.c 108 gcov xmidl.c 109 110xmtest: mtest.o xmdb.o xmidl.o 111 gcc -o xmtest mtest.o xmdb.o xmidl.o -pthread $(COV_FLAGS) 112 113xmdb.o: mdb.c lmdb.h midl.h 114 $(CC) $(CFLAGS) -fPIC $(CPPFLAGS) -O0 $(COV_FLAGS) -c mdb.c -o $@ 115 116xmidl.o: midl.c midl.h 117 $(CC) $(CFLAGS) -fPIC $(CPPFLAGS) -O0 $(COV_FLAGS) -c midl.c -o $@ 118