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