rough framework
[lemu] / Makefile
diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..e20df4b
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,88 @@
+#
+#
+#
+
+# 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