1CFLAGS ?= -g -O2 -Wall
2LDFLAGS ?=
3#CPPFLAGS = -DPRINTDEBUG
4
5VER_MAJOR = 0
6VER_MINOR = 2
7VER_PATCH = 3
8VER=$(VER_MAJOR).$(VER_MINOR).$(VER_PATCH)
9
10prefix ?= /usr/local
11libdir = $(prefix)/lib
12includedir = $(prefix)/include
13DESTDIR ?=
14INSTALL ?= /usr/bin/install -c
15MKDIR_P ?= /bin/mkdir -p
16CP ?= /bin/cp -f
17LN ?= /bin/ln -fs
18
19# build shared lib under OS X or Linux
20OS = $(shell uname -s)
21ifeq ($(OS),Darwin)
22	SHAREDLIB_LINK_OPTIONS=-dynamiclib -Wl,-install_name -Wl,
23else
24	SHAREDLIB_LINK_OPTIONS=-shared -Wl,-soname,
25endif
26
27# targets to build with 'make all'
28TARGETS = credis-test libcredis.a libcredis.so
29
30all: $(TARGETS)
31
32credis-test: credis-test.o libcredis.a
33	$(CC) $(CFLAGS) $(LDFLAGS) $(CPPFLAGS) -o $@ $^
34
35libcredis.a: credis.o
36	$(AR) -cvq $@ $^
37
38libcredis.so: credis.o
39	$(CC) $(SHAREDLIB_LINK_OPTIONS)$@.$(VER_MAJOR) -o $@.$(VER) $^
40	$(LN) $@.$(VER) $@.$(VER_MAJOR)
41	$(LN) $@.$(VER_MAJOR) $@
42
43credis.o: credis.c credis.h Makefile
44	$(CC) -c -fPIC $(CFLAGS) $(CPPFLAGS) -o $@ credis.c
45
46install: all installdirs
47	$(INSTALL) -m644 *.h $(DESTDIR)$(includedir)
48	$(CP) *.so* *.a $(DESTDIR)$(libdir)
49
50installdirs:
51	$(MKDIR_P) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir)
52
53clean:
54	rm -f *.o *~ *.so* $(TARGETS)
55