14b8a6394SPieter Noordhuis# Redis dependency Makefile 24b8a6394SPieter Noordhuis 30a08d2b0SPieter Noordhuisuname_S:= $(shell sh -c 'uname -s 2>/dev/null || echo not') 44b8a6394SPieter Noordhuis 54b8a6394SPieter NoordhuisCCCOLOR="\033[34m" 64b8a6394SPieter NoordhuisLINKCOLOR="\033[34;1m" 74b8a6394SPieter NoordhuisSRCCOLOR="\033[33m" 84b8a6394SPieter NoordhuisBINCOLOR="\033[37;1m" 94b8a6394SPieter NoordhuisMAKECOLOR="\033[32;1m" 104b8a6394SPieter NoordhuisENDCOLOR="\033[0m" 114b8a6394SPieter Noordhuis 124b8a6394SPieter Noordhuisdefault: 134b8a6394SPieter Noordhuis @echo "Explicit target required" 144b8a6394SPieter Noordhuis 150a08d2b0SPieter Noordhuis.PHONY: default 160a08d2b0SPieter Noordhuis 170a08d2b0SPieter Noordhuis# Prerequisites target 180a08d2b0SPieter Noordhuis.make-prerequisites: 190a08d2b0SPieter Noordhuis @touch $@ 200a08d2b0SPieter Noordhuis 210a08d2b0SPieter Noordhuis# Clean everything when CFLAGS is different 220a08d2b0SPieter Noordhuisifneq ($(shell sh -c '[ -f .make-cflags ] && cat .make-cflags || echo none'), $(CFLAGS)) 230a08d2b0SPieter Noordhuis.make-cflags: distclean 240a08d2b0SPieter Noordhuis -(echo "$(CFLAGS)" > .make-cflags) 250a08d2b0SPieter Noordhuis.make-prerequisites: .make-cflags 264b8a6394SPieter Noordhuisendif 274b8a6394SPieter Noordhuis 280a08d2b0SPieter Noordhuis# Clean everything when LDFLAGS is different 290a08d2b0SPieter Noordhuisifneq ($(shell sh -c '[ -f .make-ldflags ] && cat .make-ldflags || echo none'), $(LDFLAGS)) 300a08d2b0SPieter Noordhuis.make-ldflags: distclean 310a08d2b0SPieter Noordhuis -(echo "$(LDFLAGS)" > .make-ldflags) 320a08d2b0SPieter Noordhuis.make-prerequisites: .make-ldflags 330a08d2b0SPieter Noordhuisendif 344b8a6394SPieter Noordhuis 354b8a6394SPieter Noordhuisdistclean: 364b8a6394SPieter Noordhuis -(cd hiredis && $(MAKE) clean) > /dev/null || true 374b8a6394SPieter Noordhuis -(cd linenoise && $(MAKE) clean) > /dev/null || true 384b8a6394SPieter Noordhuis -(cd lua && $(MAKE) clean) > /dev/null || true 397f4ac3d1SMatt Stancliff -(cd geohash-int && $(MAKE) clean) > /dev/null || true 404b8a6394SPieter Noordhuis -(cd jemalloc && [ -f Makefile ] && $(MAKE) distclean) > /dev/null || true 410a08d2b0SPieter Noordhuis -(rm -f .make-*) 424b8a6394SPieter Noordhuis 430a08d2b0SPieter Noordhuis.PHONY: distclean 444b8a6394SPieter Noordhuis 450a08d2b0SPieter Noordhuishiredis: .make-prerequisites 460a08d2b0SPieter Noordhuis @printf '%b %b\n' $(MAKECOLOR)MAKE$(ENDCOLOR) $(BINCOLOR)$@$(ENDCOLOR) 470a08d2b0SPieter Noordhuis cd hiredis && $(MAKE) static 484b8a6394SPieter Noordhuis 490a08d2b0SPieter Noordhuis.PHONY: hiredis 504b8a6394SPieter Noordhuis 510a08d2b0SPieter Noordhuislinenoise: .make-prerequisites 520a08d2b0SPieter Noordhuis @printf '%b %b\n' $(MAKECOLOR)MAKE$(ENDCOLOR) $(BINCOLOR)$@$(ENDCOLOR) 530a08d2b0SPieter Noordhuis cd linenoise && $(MAKE) 544b8a6394SPieter Noordhuis 550a08d2b0SPieter Noordhuis.PHONY: linenoise 560a08d2b0SPieter Noordhuis 570a08d2b0SPieter Noordhuisifeq ($(uname_S),SunOS) 580a08d2b0SPieter Noordhuis # Make isinf() available 590a08d2b0SPieter Noordhuis LUA_CFLAGS= -D__C99FEATURES__=1 600a08d2b0SPieter Noordhuisendif 610a08d2b0SPieter Noordhuis 6225e12d10SMatt StancliffLUA_CFLAGS+= -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' $(CFLAGS) 630a08d2b0SPieter NoordhuisLUA_LDFLAGS+= $(LDFLAGS) 64b57a4d07SDaniel Price# lua's Makefile defines AR="ar rcu", which is unusual, and makes it more 65b57a4d07SDaniel Price# challenging to cross-compile lua (and redis). These defines make it easier 66b57a4d07SDaniel Price# to fit redis into cross-compilation environments, which typically set AR. 67b57a4d07SDaniel PriceAR=ar 68b57a4d07SDaniel PriceARFLAGS=rcu 690a08d2b0SPieter Noordhuis 700a08d2b0SPieter Noordhuislua: .make-prerequisites 710a08d2b0SPieter Noordhuis @printf '%b %b\n' $(MAKECOLOR)MAKE$(ENDCOLOR) $(BINCOLOR)$@$(ENDCOLOR) 72b57a4d07SDaniel Price cd lua/src && $(MAKE) all CFLAGS="$(LUA_CFLAGS)" MYLDFLAGS="$(LUA_LDFLAGS)" AR="$(AR) $(ARFLAGS)" 730a08d2b0SPieter Noordhuis 740a08d2b0SPieter Noordhuis.PHONY: lua 750a08d2b0SPieter Noordhuis 760a08d2b0SPieter NoordhuisJEMALLOC_CFLAGS= -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops $(CFLAGS) 770a08d2b0SPieter NoordhuisJEMALLOC_LDFLAGS= $(LDFLAGS) 780a08d2b0SPieter Noordhuis 790a08d2b0SPieter Noordhuisjemalloc: .make-prerequisites 800a08d2b0SPieter Noordhuis @printf '%b %b\n' $(MAKECOLOR)MAKE$(ENDCOLOR) $(BINCOLOR)$@$(ENDCOLOR) 81*a7f0fb44Santirez cd jemalloc && ./configure --with-lg-quantum=3 --with-jemalloc-prefix=je_ --enable-cc-silence CFLAGS="$(JEMALLOC_CFLAGS)" LDFLAGS="$(JEMALLOC_LDFLAGS)" 82d36fb95aSantirez cd jemalloc && $(MAKE) CFLAGS="$(JEMALLOC_CFLAGS)" LDFLAGS="$(JEMALLOC_LDFLAGS)" lib/libjemalloc.a 830a08d2b0SPieter Noordhuis 840a08d2b0SPieter Noordhuis.PHONY: jemalloc 857f4ac3d1SMatt Stancliff 867f4ac3d1SMatt Stancliffgeohash-int: .make-prerequisites 877f4ac3d1SMatt Stancliff @printf '%b %b\n' $(MAKECOLOR)MAKE$(ENDCOLOR) $(BINCOLOR)$@$(ENDCOLOR) 887f4ac3d1SMatt Stancliff cd geohash-int && $(MAKE) 897f4ac3d1SMatt Stancliff 907f4ac3d1SMatt Stancliff.PHONY: geohash-int 91