# # # # hard paths to development versions of libraries LIBEVENT_PATH ?= /usr LIBEVENT_H_PATH ?= $(LIBEVENT_PATH)/include LIBEVENT_CPPFLAGS = -I$(LIBEVENT_H_PATH) LIBEVENT_LIB_PATH ?= $(LIBEVENT_PATH)/lib LIBEVENT_LDFLAGS = -L$(LIBEVENT_LIB_PATH) -levent -levent_pthreads -levent_openssl # another library LIBUUID_PATH ?= /usr LIBUUID_H_PATH ?= $(LIBUUID_PATH)/include LIBUUID_CPPFLAGS = -I$(LIBUUID_H_PATH) LIBUUID_LIB_PATH ?= $(LIBUUID_PATH)/lib LIBUUID_LDFLAGS = -L$(LIBUUID_LIB_PATH) -lossp-uuid # yet another OPENSSL_PATH ?= /usr OPENSSL_H_PATH ?= $(OPENSSL_PATH)/include OPENSSL_CPPFLAGS = OPENSSL_LIB_PATH ?= $(OPENSSL_PATH)/lib OPENSSL_LDFLAGS = -lssl -lcrypto # barking moon lib LUA_PATH ?= /usr LUA_H_PATH ?= $(LUA_PATH)/include/lua5.4 LUA_CPPFLAGS = -I$(LUA_H_PATH) LUA_LIB_PATH ?= $(LUA_PATH)/lib LUA_LDFLAGS = -L$(LUA_LIB_PATH) -llua5.4 # backing store SQLITE_PATH ?= /usr SQLITE_H_PATH ?= $(SQLITE_PATH)/include SQLITE_CPPFLAGS = -I$(SQLITE_H_PATH) SQLITE_LIB_PATH ?= $(SQLITE_PATH)/lib SQLITE_LDFLAGS = -L$(SQLITE_LIB_PATH) -lsqlite3 # so many libraries, it's like playing with Lego bricks SOURCES = command.c common.c connections.c db.c lua_interface.c main.c notify.c server.c workqueue.c OBJECTS = $(SOURCES:.c=.o) TARGET = lemu # In order to use the OSSP uuid library on the darwin platform, # _POSIX_SOURCE needs to be defined so that the platform doesn't # attempt to provide its own uuid_t type. CPPFLAGS += -D_POSIX_C_SOURCE=200112L # Linux needs additional specifications when _POSIX_C_SOURCE is # defined. CPPFLAGS += -D_XOPEN_SOURCE=700 CPPFLAGS += -D_REENTRANT CFLAGS += -DDEBUG_SILLY CFLAGS += -g -Wall -Wextra -Werror CPPFLAGS += $(LIBEVENT_CPPFLAGS) $(LIBUUID_CPPFLAGS) $(OPENSSL_CPPFLAGS) $(LUA_CPPFLAGS) $(SQLITE_CPPFLAGS) LDFLAGS += $(LIBEVENT_LDFLAGS) $(LIBUUID_LDFLAGS) $(OPENSSL_LDFLAGS) $(LUA_LDFLAGS) $(SQLITE_LDFLAGS) ifeq ($(shell uname), Linux) # Linux needs librt to see some clock and pthread functions. LDFLAGS += -lrt # Linux needs -pthread for pthread_mutexattr_init LDFLAGS += -pthread CFLAGS += -pthread endif MAKEDEPEND = $(CC) $(CPPFLAGS) -MM .PHONY: all clean all: $(TARGET) Makefile.depend version.h: ./version.sh 0 0 prototype Makefile.depend: $(SOURCES) version.h $(MAKEDEPEND) $^ > $@ $(TARGET): $(OBJECTS) $(CC) -o $@ $^ $(LDFLAGS) clean: rm -f $(TARGET) *.o Makefile.depend -include Makefile.depend