# find the OS uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not') # Compile flags for linux / osx ifeq ($(uname_S),Linux) SHOBJ_CFLAGS ?= -W -Wall -fno-common -g -ggdb -std=c99 -O2 SHOBJ_LDFLAGS ?= -shared else SHOBJ_CFLAGS ?= -W -Wall -dynamic -fno-common -g -ggdb -std=c99 -O2 SHOBJ_LDFLAGS ?= -bundle -undefined dynamic_lookup endif # OS X 11.x doesn't have /usr/lib/libSystem.dylib and needs an explicit setting. ifeq ($(uname_S),Darwin) ifeq ("$(wildcard /usr/lib/libSystem.dylib)","") LIBS = -L /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib -lsystem endif endif .SUFFIXES: .c .so .xo .o all: helloworld.so hellotype.so helloblock.so hellocluster.so hellotimer.so hellodict.so hellohook.so helloacl.so .c.xo: $(CC) -I. $(CFLAGS) $(SHOBJ_CFLAGS) -fPIC -c $< -o $@ helloworld.xo: ../redismodule.h helloworld.so: helloworld.xo $(LD) -o $@ $^ $(SHOBJ_LDFLAGS) $(LIBS) -lc hellotype.xo: ../redismodule.h hellotype.so: hellotype.xo $(LD) -o $@ $^ $(SHOBJ_LDFLAGS) $(LIBS) -lc helloblock.xo: ../redismodule.h helloblock.so: helloblock.xo $(LD) -o $@ $^ $(SHOBJ_LDFLAGS) $(LIBS) -lpthread -lc hellocluster.xo: ../redismodule.h hellocluster.so: hellocluster.xo $(LD) -o $@ $^ $(SHOBJ_LDFLAGS) $(LIBS) -lc hellotimer.xo: ../redismodule.h hellotimer.so: hellotimer.xo $(LD) -o $@ $^ $(SHOBJ_LDFLAGS) $(LIBS) -lc hellodict.xo: ../redismodule.h hellodict.so: hellodict.xo $(LD) -o $@ $^ $(SHOBJ_LDFLAGS) $(LIBS) -lc hellohook.xo: ../redismodule.h hellohook.so: hellohook.xo $(LD) -o $@ $^ $(SHOBJ_LDFLAGS) $(LIBS) -lc helloacl.xo: ../redismodule.h helloacl.so: helloacl.xo $(LD) -o $@ $^ $(SHOBJ_LDFLAGS) $(LIBS) -lc clean: rm -rf *.xo *.so