rough framework
[lemu] / Makefile
1 #
2 #
3 #
4
5 # hard paths to development versions of libraries
6 LIBEVENT_PATH ?= /usr
7 LIBEVENT_H_PATH ?= $(LIBEVENT_PATH)/include
8 LIBEVENT_CPPFLAGS = -I$(LIBEVENT_H_PATH)
9 LIBEVENT_LIB_PATH ?= $(LIBEVENT_PATH)/lib
10 LIBEVENT_LDFLAGS = -L$(LIBEVENT_LIB_PATH) -levent -levent_pthreads -levent_openssl
11
12 # another library
13 LIBUUID_PATH ?= /usr
14 LIBUUID_H_PATH ?= $(LIBUUID_PATH)/include
15 LIBUUID_CPPFLAGS = -I$(LIBUUID_H_PATH)
16 LIBUUID_LIB_PATH ?= $(LIBUUID_PATH)/lib
17 LIBUUID_LDFLAGS = -L$(LIBUUID_LIB_PATH) -lossp-uuid
18
19 # yet another
20 OPENSSL_PATH ?= /usr
21 OPENSSL_H_PATH ?= $(OPENSSL_PATH)/include
22 OPENSSL_CPPFLAGS =
23 OPENSSL_LIB_PATH ?= $(OPENSSL_PATH)/lib
24 OPENSSL_LDFLAGS = -lssl -lcrypto
25
26 # barking moon lib
27 LUA_PATH ?= /usr
28 LUA_H_PATH ?= $(LUA_PATH)/include/lua5.4
29 LUA_CPPFLAGS = -I$(LUA_H_PATH)
30 LUA_LIB_PATH ?= $(LUA_PATH)/lib
31 LUA_LDFLAGS = -L$(LUA_LIB_PATH) -llua5.4
32
33 # backing store
34 SQLITE_PATH ?= /usr
35 SQLITE_H_PATH ?= $(SQLITE_PATH)/include
36 SQLITE_CPPFLAGS = -I$(SQLITE_H_PATH)
37 SQLITE_LIB_PATH ?= $(SQLITE_PATH)/lib
38 SQLITE_LDFLAGS = -L$(SQLITE_LIB_PATH) -lsqlite3
39
40 # so many libraries, it's like playing with Lego bricks
41
42 SOURCES = command.c common.c connections.c db.c lua_interface.c main.c notify.c server.c workqueue.c
43 OBJECTS = $(SOURCES:.c=.o)
44 TARGET = lemu
45
46 # In order to use the OSSP uuid library on the darwin platform,
47 # _POSIX_SOURCE needs to be defined so that the platform doesn't
48 # attempt to provide its own uuid_t type.
49 CPPFLAGS += -D_POSIX_C_SOURCE=200112L
50 # Linux needs additional specifications when _POSIX_C_SOURCE is
51 # defined.
52 CPPFLAGS += -D_XOPEN_SOURCE=700
53
54 CPPFLAGS += -D_REENTRANT
55
56 CFLAGS += -DDEBUG_SILLY
57
58 CFLAGS += -g -Wall -Wextra -Werror
59 CPPFLAGS += $(LIBEVENT_CPPFLAGS) $(LIBUUID_CPPFLAGS) $(OPENSSL_CPPFLAGS) $(LUA_CPPFLAGS) $(SQLITE_CPPFLAGS)
60 LDFLAGS += $(LIBEVENT_LDFLAGS) $(LIBUUID_LDFLAGS) $(OPENSSL_LDFLAGS) $(LUA_LDFLAGS) $(SQLITE_LDFLAGS)
61
62 ifeq ($(shell uname), Linux)
63 # Linux needs librt to see some clock and pthread functions.
64 LDFLAGS += -lrt
65 # Linux needs -pthread for pthread_mutexattr_init
66 LDFLAGS += -pthread
67 CFLAGS += -pthread
68 endif
69
70 MAKEDEPEND = $(CC) $(CPPFLAGS) -MM
71
72 .PHONY: all clean
73
74 all: $(TARGET) Makefile.depend
75
76 version.h:
77 ./version.sh 0 0 prototype
78
79 Makefile.depend: $(SOURCES) version.h
80 $(MAKEDEPEND) $^ > $@
81
82 $(TARGET): $(OBJECTS)
83 $(CC) -o $@ $^ $(LDFLAGS)
84
85 clean:
86 rm -f $(TARGET) *.o Makefile.depend
87
88 -include Makefile.depend