git » nmdb » master » tree

[master] / nmdb / Makefile

# Protocols to enable
ENABLE_TCP = 1
ENABLE_UDP = 1
ENABLE_TIPC := $(shell if echo "\#include <linux/tipc.h>" | \
		$(CPP) - > /dev/null 2>&1; then echo 1; else echo 0; fi)
ENABLE_SCTP := $(shell if echo "\#include <netinet/sctp.h>" | \
		$(CPP) - > /dev/null 2>&1; then echo 1; else echo 0; fi)

# Backends to enable
BE_ENABLE_QDBM := $(shell if `pkg-config --exists qdbm`; \
	then echo 1; else echo 0; fi)
BE_ENABLE_BDB := $(shell if echo "\#include <db.h>" | \
		$(CPP) - > /dev/null 2>&1; then echo 1; else echo 0; fi)
BE_ENABLE_TC := $(shell if `pkg-config --exists tokyocabinet`; \
	then echo 1; else echo 0; fi)
BE_ENABLE_TDB := $(shell if `pkg-config --exists tdb`; \
	then echo 1; else echo 0; fi)
BE_ENABLE_LEVELDB := $(shell if echo "\#include <leveldb/c.h>" | \
		$(CPP) - > /dev/null 2>&1; then echo 1; else echo 0; fi)
BE_ENABLE_NULL := 1


CFLAGS += -std=c99 -pedantic -Wall -O3
ALL_CFLAGS = -D_XOPEN_SOURCE=600 $(CFLAGS)
ALL_CFLAGS += -DENABLE_TIPC=$(ENABLE_TIPC) \
		-DENABLE_TCP=$(ENABLE_TCP) \
		-DENABLE_UDP=$(ENABLE_UDP) \
		-DENABLE_SCTP=$(ENABLE_SCTP) \
		-DBE_ENABLE_QDBM=$(BE_ENABLE_QDBM) \
		-DBE_ENABLE_BDB=$(BE_ENABLE_BDB) \
		-DBE_ENABLE_TC=$(BE_ENABLE_TC) \
		-DBE_ENABLE_TDB=$(BE_ENABLE_TDB) \
		-DBE_ENABLE_LEVELDB=$(BE_ENABLE_LEVELDB) \
		-DBE_ENABLE_NULL=$(BE_ENABLE_NULL) \


ifdef DEBUG
ALL_CFLAGS += -g
endif

ifdef PROFILE
ALL_CFLAGS += -g -pg -ftest-coverage -fprofile-generate
endif

ifdef PROFILE_USE
ALL_CFLAGS += -fprofile-use
endif


# prefix for installing the binaries
PREFIX=/usr/local


OBJS = cache.o dbloop.o queue.o log.o net.o netutils.o parse.o stats.o main.o \
       be.o be-bdb.o be-null.o be-qdbm.o be-tc.o be-tdb.o be-leveldb.o
LIBS = -levent -lpthread -lrt


ifeq ($(ENABLE_TIPC), 1)
	OBJS += tipc.o
else
	OBJS += tipc-stub.o
endif

ifeq ($(ENABLE_TCP), 1)
	OBJS += tcp.o
else
	OBJS += tcp-stub.o
endif

ifeq ($(ENABLE_UDP), 1)
	OBJS += udp.o
else
	OBJS += udp-stub.o
endif

ifeq ($(ENABLE_SCTP), 1)
	OBJS += sctp.o
else
	OBJS += sctp-stub.o
endif


ifeq ($(BE_ENABLE_QDBM), 1)
	ALL_CFLAGS += `pkg-config qdbm --cflags`
	LIBS += `pkg-config qdbm --libs-only-L` -lqdbm
endif
ifeq ($(BE_ENABLE_BDB), 1)
	LIBS += -ldb
endif
ifeq ($(BE_ENABLE_TC), 1)
	ALL_CFLAGS += `pkg-config tokyocabinet --cflags`
	LIBS += `pkg-config tokyocabinet --libs`
endif
ifeq ($(BE_ENABLE_TDB), 1)
	ALL_CFLAGS += `pkg-config tdb --cflags`
	LIBS += `pkg-config tdb --libs`
endif
ifeq ($(BE_ENABLE_LEVELDB), 1)
	LIBS += -lleveldb
endif
ifeq ($(BE_ENABLE_NULL), 1)
endif


ifneq ($(V), 1)
	NICE_CC = @echo "  CC  $@"; $(CC)
else
	NICE_CC = $(CC)
endif


default: all

all: nmdb

nmdb: $(OBJS)
	$(NICE_CC) $(ALL_CFLAGS) $(OBJS) $(LIBS) -o nmdb

.c.o:
	$(NICE_CC) $(ALL_CFLAGS) -c $< -o $@

install-bin: nmdb
	install -d $(PREFIX)/bin
	install -m 0755 nmdb $(PREFIX)/bin

install-man:
	install -d $(PREFIX)/man/man1
	install -m 0644 nmdb.1 $(PREFIX)/man/man1/

install: install-bin install-man

clean: clean-build clean-prof

clean-build:
	rm -f $(OBJS) nmdb

clean-prof:
	rm -f *.bb *.bbg *.da *.gcov *.gcda *.gcno gmon.out

.PHONY: default all \
	install-bin install-man install \
	clean-build clean-prof clean