X-Git-Url: https://git.saurik.com/redis.git/blobdiff_plain/5436146c8dcd95c5ef3809f2830fb9c08edc4177..5fa95ad7639ae3f43e175d95a7d6384e4723b80e:/Makefile diff --git a/Makefile b/Makefile index 635cb189..b72faa1b 100644 --- a/Makefile +++ b/Makefile @@ -1,121 +1,22 @@ -# Redis Makefile -# Copyright (C) 2009 Salvatore Sanfilippo -# This file is released under the BSD license, see the COPYING file +# Top level makefile, the real shit is at src/Makefile -uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not') -OPTIMIZATION?=-O2 -ifeq ($(uname_S),SunOS) - CFLAGS?= -std=c99 -pedantic $(OPTIMIZATION) -Wall -W -D__EXTENSIONS__ -D_XPG6 - CCLINK?= -ldl -lnsl -lsocket -lm -lpthread -else - CFLAGS?= -std=c99 -pedantic $(OPTIMIZATION) -Wall -W $(ARCH) $(PROF) - CCLINK?= -lm -pthread -endif -CCOPT= $(CFLAGS) $(CCLINK) $(ARCH) $(PROF) -DEBUG?= -g -rdynamic -ggdb +TARGETS=32bit noopt test -GIT_SHA1:=$(shell sh -c '(git show-ref --head --hash=8 2> /dev/null || echo 00000000) | head -n1') -GIT_DIRTY:=$(shell sh -c 'git status -s 2> /dev/null | wc -l') -OBJ = adlist.o ae.o anet.o dict.o redis.o sds.o zmalloc.o lzf_c.o lzf_d.o pqsort.o zipmap.o sha1.o -BENCHOBJ = ae.o anet.o redis-benchmark.o sds.o adlist.o zmalloc.o -CLIOBJ = anet.o sds.o adlist.o redis-cli.o zmalloc.o linenoise.o -CHECKDUMPOBJ = redis-check-dump.o lzf_c.o lzf_d.o -CHECKAOFOBJ = redis-check-aof.o +all: + cd src && $(MAKE) $@ -PRGNAME = redis-server -BENCHPRGNAME = redis-benchmark -CLIPRGNAME = redis-cli -CHECKDUMPPRGNAME = redis-check-dump -CHECKAOFPRGNAME = redis-check-aof - -all: redis-server redis-benchmark redis-cli redis-check-dump redis-check-aof - -# Deps (use make dep to generate this) -adlist.o: adlist.c adlist.h zmalloc.h -ae.o: ae.c ae.h zmalloc.h config.h ae_kqueue.c -ae_epoll.o: ae_epoll.c -ae_kqueue.o: ae_kqueue.c -ae_select.o: ae_select.c -anet.o: anet.c fmacros.h anet.h -dict.o: dict.c fmacros.h dict.h zmalloc.h -dict2.o: dict2.c fmacros.h dict2.h zmalloc.h -linenoise.o: linenoise.c fmacros.h -lzf_c.o: lzf_c.c lzfP.h -lzf_d.o: lzf_d.c lzfP.h -pqsort.o: pqsort.c -printraw.o: printraw.c -redis-benchmark.o: redis-benchmark.c fmacros.h ae.h anet.h sds.h adlist.h \ - zmalloc.h -redis-check-aof.o: redis-check-aof.c fmacros.h config.h -redis-check-dump.o: redis-check-dump.c lzf.h -redis-cli.o: redis-cli.c fmacros.h anet.h sds.h adlist.h zmalloc.h \ - linenoise.h -redis.o: redis.c fmacros.h config.h redis.h ae.h sds.h anet.h dict.h \ - adlist.h zmalloc.h lzf.h pqsort.h zipmap.h staticsymbols.h sha1.h -sds.o: sds.c sds.h zmalloc.h -zipmap.o: zipmap.c zmalloc.h -zmalloc.o: zmalloc.c config.h - -redis-server: releaseheader $(OBJ) - $(CC) -o $(PRGNAME) $(CCOPT) $(DEBUG) $(OBJ) - @echo "" - @echo "Hint: To run the test-redis.tcl script is a good idea." - @echo "Launch the redis server with ./redis-server, then in another" - @echo "terminal window enter this directory and run 'make test'." - @echo "" - -redis-benchmark: $(BENCHOBJ) - $(CC) -o $(BENCHPRGNAME) $(CCOPT) $(DEBUG) $(BENCHOBJ) - -redis-cli: $(CLIOBJ) - $(CC) -o $(CLIPRGNAME) $(CCOPT) $(DEBUG) $(CLIOBJ) - -redis-check-dump: $(CHECKDUMPOBJ) - $(CC) -o $(CHECKDUMPPRGNAME) $(CCOPT) $(DEBUG) $(CHECKDUMPOBJ) - -redis-check-aof: $(CHECKAOFOBJ) - $(CC) -o $(CHECKAOFPRGNAME) $(CCOPT) $(DEBUG) $(CHECKAOFOBJ) - -releaseheader: - @echo "#define REDIS_GIT_SHA1 \"$(GIT_SHA1)\"" > release.h - @echo "#define REDIS_GIT_DIRTY $(GIT_DIRTY)" >> release.h - @touch redis.c # force recompile of redis.c - -.c.o: - $(CC) -c $(CFLAGS) $(DEBUG) $(COMPILE_TIME) $< +install: dummy + cd src && $(MAKE) $@ clean: - rm -rf $(PRGNAME) $(BENCHPRGNAME) $(CLIPRGNAME) $(CHECKDUMPPRGNAME) $(CHECKAOFPRGNAME) *.o *.gcda *.gcno *.gcov - -dep: - $(CC) -MM *.c - -staticsymbols: - tclsh utils/build-static-symbols.tcl > staticsymbols.h - -test: - tclsh8.5 tests/test_helper.tcl - -bench: - ./redis-benchmark - -log: - git log '--pretty=format:%ad %s (%cn)' --date=short > Changelog - -32bit: - @echo "" - @echo "WARNING: if it fails under Linux you probably need to install libc6-dev-i386" - @echo "" - make ARCH="-m32" - -gprof: - make PROF="-pg" + cd src && $(MAKE) $@ + cd deps/hiredis && $(MAKE) $@ + cd deps/linenoise && $(MAKE) $@ -gcov: - make PROF="-fprofile-arcs -ftest-coverage" +$(TARGETS): + cd src && $(MAKE) $@ -noopt: - make OPTIMIZATION="" +src/help.h: + @./utils/generate-command-help.rb > $@ -32bitgprof: - make PROF="-pg" ARCH="-arch i386" +dummy: