Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
32adb531
Commit
32adb531
authored
Nov 16, 2011
by
Salvatore Sanfilippo
Browse files
Merge pull request #192 from pietern/makefile
Add separate clean/distclean targets to Makefile
parents
7b81e5a1
a63a3d4d
Changes
4
Show whitespace changes
Inline
Side-by-side
.gitignore
View file @
32adb531
...
@@ -22,3 +22,4 @@ src/redis.conf
...
@@ -22,3 +22,4 @@ src/redis.conf
deps/lua/src/lua
deps/lua/src/lua
deps/lua/src/luac
deps/lua/src/luac
deps/lua/src/liblua.a
deps/lua/src/liblua.a
.make-*
README
View file @
32adb531
...
@@ -26,18 +26,19 @@ NOTE: if after building Redis with a 32 bit target you need to rebuild it
...
@@ -26,18 +26,19 @@ NOTE: if after building Redis with a 32 bit target you need to rebuild it
Allocator
Allocator
---------
---------
By default Redis compiles and links against jemalloc under Linux, since
Selecting a non-default memory allocator when building Redis is done by setting
glibc malloc() has memory fragmentation problems.
the `MALLOC` environment variable. Redis is compiled and linked against libc
malloc by default, with the exception of jemalloc being the default on Linux
systems. This default was picked because jemalloc has proven to have fewer
fragmentation problems than libc malloc.
To force
a
libc malloc
() build
use:
To force
compiling against
libc malloc
,
use:
% make
FORCE_LIBC_
MALLOC=
yes
% make MALLOC=
libc
In all the other non Linux systems the libc malloc() is used by default.
To compile against jemalloc on Mac OS X systems, use:
On Mac OS X you can force a jemalloc based build using the following:
% make MALLOC=jemalloc
% make USE_JEMALLOC=yes
Verbose build
Verbose build
-------------
-------------
...
...
deps/Makefile
0 → 100644
View file @
32adb531
# Redis dependency Makefile
UNAME_S
:=
$(
shell
sh
-c
'uname -s 2> /dev/null || echo not'
)
LUA_CFLAGS
=
-O2
-Wall
$(ARCH)
ifeq
($(UNAME_S),SunOS)
# Make isinf() available
LUA_CFLAGS
+=
-D__C99FEATURES__
=
1
endif
JEMALLOC_CFLAGS
=
ifeq
($(ARCH),-m32)
JEMALLOC_CFLAGS
+=
CFLAGS
=
"-std=gnu99 -Wall -pipe -g3 -fvisibility=hidden -O3 -funroll-loops -m32"
endif
CCCOLOR
=
"
\0
33[34m"
LINKCOLOR
=
"
\0
33[34;1m"
SRCCOLOR
=
"
\0
33[33m"
BINCOLOR
=
"
\0
33[37;1m"
MAKECOLOR
=
"
\0
33[32;1m"
ENDCOLOR
=
"
\0
33[0m"
default
:
@
echo
"Explicit target required"
# Clean everything when ARCH is different
ifneq
($(shell sh -c '[ -f .make-arch ] && cat .make-arch'), $(ARCH))
.make-arch
:
distclean
else
.make-arch
:
endif
.make-arch
:
-
(
echo
$(ARCH)
>
.make-arch
)
distclean
:
-
(
cd
hiredis
&&
$(MAKE)
clean
)
>
/dev/null
||
true
-
(
cd
linenoise
&&
$(MAKE)
clean
)
>
/dev/null
||
true
-
(
cd
lua
&&
$(MAKE)
clean
)
>
/dev/null
||
true
-
(
cd
jemalloc
&&
[
-f
Makefile
]
&&
$(MAKE)
distclean
)
>
/dev/null
||
true
-
(
rm
-f
.make-arch
)
hiredis
:
.make-arch
@
printf
'%b %b\n'
$(MAKECOLOR)
MAKE
$(ENDCOLOR)
$(BINCOLOR)
hiredis
$(ENDCOLOR)
cd
hiredis
&&
$(MAKE)
static
ARCH
=
"
$(ARCH)
"
linenoise
:
.make-arch
@
printf
'%b %b\n'
$(MAKECOLOR)
MAKE
$(ENDCOLOR)
$(BINCOLOR)
linenoise
$(ENDCOLOR)
cd
linenoise
&&
$(MAKE)
ARCH
=
"
$(ARCH)
"
lua
:
.make-arch
@
printf
'%b %b\n'
$(MAKECOLOR)
MAKE
$(ENDCOLOR)
$(BINCOLOR)
lua
$(ENDCOLOR)
cd
lua
&&
$(MAKE)
CFLAGS
=
"
$(LUA_CFLAGS)
"
MYLDFLAGS
=
"
$(ARCH)
"
ansi
jemalloc
:
.make-arch
@
printf
'%b %b\n'
$(MAKECOLOR)
MAKE
$(ENDCOLOR)
$(BINCOLOR)
jemalloc
$(ENDCOLOR)
cd
jemalloc
&&
./configure
$(JEMALLOC_CFLAGS)
--with-jemalloc-prefix
=
je_
--enable-cc-silence
&&
$(MAKE)
lib/libjemalloc.a
.PHONY
:
default conditional_clean hiredis linenoise lua jemalloc
src/Makefile
View file @
32adb531
...
@@ -5,18 +5,9 @@
...
@@ -5,18 +5,9 @@
release_hdr
:=
$(
shell
sh
-c
'./mkreleasehdr.sh'
)
release_hdr
:=
$(
shell
sh
-c
'./mkreleasehdr.sh'
)
uname_S
:=
$(
shell
sh
-c
'uname -s 2>/dev/null || echo not'
)
uname_S
:=
$(
shell
sh
-c
'uname -s 2>/dev/null || echo not'
)
OPTIMIZATION
?=
-O2
OPTIMIZATION
?=
-O2
DEPENDENCY_TARGETS
=
hiredis linenoise lua
LUA_CFLAGS
=
-O2
-Wall
ifeq
($(uname_S),Linux)
ifneq
($(FORCE_LIBC_MALLOC),yes)
USE_JEMALLOC
=
yes
endif
endif
ifeq
($(uname_S),SunOS)
ifeq
($(uname_S),SunOS)
# make isinf() available
LUA_CFLAGS
+=
-D__C99FEATURES__
=
1
CFLAGS
?=
-std
=
c99
-pedantic
$(OPTIMIZATION)
-Wall
-W
-D__EXTENSIONS__
-D_XPG6
CFLAGS
?=
-std
=
c99
-pedantic
$(OPTIMIZATION)
-Wall
-W
-D__EXTENSIONS__
-D_XPG6
CCLINK
?=
-ldl
-lnsl
-lsocket
-lm
-lpthread
CCLINK
?=
-ldl
-lnsl
-lsocket
-lm
-lpthread
DEBUG
?=
-g
-ggdb
DEBUG
?=
-g
-ggdb
...
@@ -26,28 +17,44 @@ else
...
@@ -26,28 +17,44 @@ else
DEBUG
?=
-g
-rdynamic
-ggdb
DEBUG
?=
-g
-rdynamic
-ggdb
endif
endif
# Default allocator
ifeq
($(uname_S),Linux)
MALLOC
?=
jemalloc
else
MALLOC
?=
libc
endif
# Backwards compatibility for selecting an allocator
ifeq
($(USE_TCMALLOC),yes)
ifeq
($(USE_TCMALLOC),yes)
ALLOD_DEPS
=
MALLOC
=
tcmalloc
endif
ifeq
($(USE_TCMALLOC_MINIMAL),yes)
MALLOC
=
tcmalloc_minimal
endif
ifeq
($(USE_JEMALLOC),yes)
MALLOC
=
jemalloc
endif
ifeq
($(MALLOC),tcmalloc)
ALLOC_LINK
=
-ltcmalloc
ALLOC_LINK
=
-ltcmalloc
ALLOC_FLAGS
=
-DUSE_TCMALLOC
ALLOC_FLAGS
=
-DUSE_TCMALLOC
endif
endif
ifeq
($(USE_TCMALLOC_MINIMAL),yes)
ifeq
($(MALLOC),tcmalloc_minimal)
ALLOD_DEPS
=
ALLOC_LINK
=
-ltcmalloc_minimal
ALLOC_LINK
=
-ltcmalloc_minimal
ALLOC_FLAGS
=
-DUSE_TCMALLOC
ALLOC_FLAGS
=
-DUSE_TCMALLOC
endif
endif
ifeq
($(USE_JEMALLOC),yes)
ifeq
($(MALLOC),jemalloc)
ALLOC_DEP
=
../deps/jemalloc/lib/libjemalloc.a
ALLOC_LINK
=
../deps/jemalloc/lib/libjemalloc.a
-ldl
ALLOC_LINK
=
$(ALLOC_DEP)
-ldl
ALLOC_FLAGS
=
-DUSE_JEMALLOC
-I
../deps/jemalloc/include
ALLOC_FLAGS
=
-DUSE_JEMALLOC
-I
../deps/jemalloc/include
DEPENDENCY_TARGETS
+=
jemalloc
endif
endif
CCLINK
+=
$(ALLOC_LINK)
CCLINK
+=
$(ALLOC_LINK)
CFLAGS
+=
$(ALLOC_FLAGS)
CFLAGS
+=
$(ALLOC_FLAGS)
LUA_CFLAGS
+=
$(ARCH)
CCOPT
=
$(CFLAGS)
$(ARCH)
$(PROF)
CCOPT
=
$(CFLAGS)
$(ARCH)
$(PROF)
PREFIX
=
/usr/local
PREFIX
=
/usr/local
...
@@ -160,52 +167,65 @@ ziplist.o: ziplist.c zmalloc.h util.h ziplist.h endian.h
...
@@ -160,52 +167,65 @@ ziplist.o: ziplist.c zmalloc.h util.h ziplist.h endian.h
zipmap.o
:
zipmap.c zmalloc.h endian.h
zipmap.o
:
zipmap.c zmalloc.h endian.h
zmalloc.o
:
zmalloc.c config.h zmalloc.h
zmalloc.o
:
zmalloc.c config.h zmalloc.h
.PHONY
:
dependencies
# Clean local objects when ARCH is different
ifneq
($(shell sh -c '[ -f .make-arch ] && cat .make-arch'), $(ARCH))
.make-arch
:
clean
else
.make-arch
:
endif
dependencies
:
.make-arch
:
@
printf
'%b %b\n'
$(MAKECOLOR)
MAKE
$(ENDCOLOR)
$(BINCOLOR)
hiredis
$(ENDCOLOR)
-
(
cd
../deps
&&
make
$(DEPENDENCY_TARGETS)
ARCH
=
"
$(ARCH)
"
)
@
cd
../deps/hiredis
&&
$(MAKE)
static
ARCH
=
"
$(ARCH)
"
-
(
echo
$(ARCH)
>
.make-arch
)
@
printf
'%b %b\n'
$(MAKECOLOR)
MAKE
$(ENDCOLOR)
$(BINCOLOR)
linenoise
$(ENDCOLOR)
@
cd
../deps/linenoise
&&
$(MAKE)
ARCH
=
"
$(ARCH)
"
@
echo
$(MAKECOLOR)
MAKE
$(ENDCOLOR)
$(BINCOLOR)
Lua ansi
$(ENDCOLOR)
@
cd
../deps/lua
&&
$(MAKE)
CFLAGS
=
"
$(LUA_CFLAGS)
"
MYLDFLAGS
=
"
$(ARCH)
"
ansi
../deps/jemalloc/lib/libjemalloc.a
:
# Clean local objects when allocator changes
cd
../deps/jemalloc
&&
./configure
$(JEMALLOC_CFLAGS)
--with-jemalloc-prefix
=
je_
--enable-cc-silence
&&
$(MAKE)
lib/libjemalloc.a
ifneq
($(shell sh -c '[ -f .make-malloc ] && cat .make-malloc'), $(MALLOC))
.make-malloc
:
clean
else
.make-malloc
:
endif
.make-malloc
:
-
(
echo
$(MALLOC)
>
.make-malloc
)
redis-server
:
dependencies $(OBJ)
# Union of prerequisites
$(QUIET_LINK)$(CC)
-o
$(PRGNAME)
$(CCOPT)
$(DEBUG)
$(OBJ)
$(CCLINK)
$(ALLOC_LINK)
../deps/lua/src/liblua.a
.prerequisites
:
.make-arch .make-malloc
redis-benchmark
:
dependencies $(BENCHOBJ)
redis-server
:
.prerequisites $(OBJ)
@
cd
../deps/hiredis
&&
$(MAKE)
static
$(QUIET_LINK)$(CC)
-o
$(PRGNAME)
$(CCOPT)
$(DEBUG)
$(OBJ)
../deps/lua/src/liblua.a
$(CCLINK)
$(QUIET_LINK)$(CC)
-o
$(BENCHPRGNAME)
$(CCOPT)
$(DEBUG)
$(BENCHOBJ)
../deps/hiredis/libhiredis.a
$(CCLINK)
$(ALLOC_LINK)
redis-benchmark.o
:
redis-benchmark
:
.prerequisites $(BENCHOBJ)
$(QUIET_LINK)$(CC)
-o
$(BENCHPRGNAME)
$(CCOPT)
$(DEBUG)
$(BENCHOBJ)
../deps/hiredis/libhiredis.a
$(CCLINK)
redis-benchmark.o
:
redis-benchmark.c .prerequisites
$(QUIET_CC)$(CC)
-c
$(CFLAGS)
-I
../deps/hiredis
$(DEBUG)
$(COMPILE_TIME)
$<
$(QUIET_CC)$(CC)
-c
$(CFLAGS)
-I
../deps/hiredis
$(DEBUG)
$(COMPILE_TIME)
$<
redis-cli
:
dependenci
es $(CLIOBJ)
redis-cli
:
.prerequisit
es $(CLIOBJ)
$(QUIET_LINK)$(CC)
-o
$(CLIPRGNAME)
$(CCOPT)
$(DEBUG)
$(CLIOBJ)
../deps/hiredis/libhiredis.a ../deps/linenoise/linenoise.o
$(CCLINK)
$(ALLOC_LINK)
$(QUIET_LINK)$(CC)
-o
$(CLIPRGNAME)
$(CCOPT)
$(DEBUG)
$(CLIOBJ)
../deps/hiredis/libhiredis.a ../deps/linenoise/linenoise.o
$(CCLINK)
redis-cli.o
:
redis-cli.o
:
redis-cli.c .prerequisites
$(QUIET_CC)$(CC)
-c
$(CFLAGS)
-I
../deps/hiredis
-I
../deps/linenoise
$(DEBUG)
$(COMPILE_TIME)
$<
$(QUIET_CC)$(CC)
-c
$(CFLAGS)
-I
../deps/hiredis
-I
../deps/linenoise
$(DEBUG)
$(COMPILE_TIME)
$<
redis-check-dump
:
$(CHECKDUMPOBJ)
redis-check-dump
:
.prerequisites
$(CHECKDUMPOBJ)
$(QUIET_LINK)$(CC)
-o
$(CHECKDUMPPRGNAME)
$(CCOPT)
$(DEBUG)
$(CHECKDUMPOBJ)
$(CCLINK)
$(ALLOC_LINK)
$(QUIET_LINK)$(CC)
-o
$(CHECKDUMPPRGNAME)
$(CCOPT)
$(DEBUG)
$(CHECKDUMPOBJ)
$(CCLINK)
redis-check-aof
:
$(CHECKAOFOBJ)
redis-check-aof
:
.prerequisites
$(CHECKAOFOBJ)
$(QUIET_LINK)$(CC)
-o
$(CHECKAOFPRGNAME)
$(CCOPT)
$(DEBUG)
$(CHECKAOFOBJ)
$(CCLINK)
$(ALLOC_LINK)
$(QUIET_LINK)$(CC)
-o
$(CHECKAOFPRGNAME)
$(CCOPT)
$(DEBUG)
$(CHECKAOFOBJ)
$(CCLINK)
# Because the jemalloc.h header is generated as a part of the jemalloc build
# Because the jemalloc.h header is generated as a part of the jemalloc build
# process, building it should complete before building any other object.
# process, building it should complete before building any other object. Instead of
%.o
:
%.c $(ALLOC_DEP)
# depending on a single artifact, simply build all dependencies first.
%.o
:
%.c .prerequisites
$(QUIET_CC)$(CC)
-c
$(CFLAGS)
$(DEBUG)
$(COMPILE_TIME)
-I
../deps/lua/src
$<
$(QUIET_CC)$(CC)
-c
$(CFLAGS)
$(DEBUG)
$(COMPILE_TIME)
-I
../deps/lua/src
$<
.PHONY
:
all clean distclean
clean
:
clean
:
rm
-rf
$(PRGNAME)
$(BENCHPRGNAME)
$(CLIPRGNAME)
$(CHECKDUMPPRGNAME)
$(CHECKAOFPRGNAME)
*
.o
*
.gcda
*
.gcno
*
.gcov
rm
-rf
$(PRGNAME)
$(BENCHPRGNAME)
$(CLIPRGNAME)
$(CHECKDUMPPRGNAME)
$(CHECKAOFPRGNAME)
*
.o
*
.gcda
*
.gcno
*
.gcov
cd
../deps/hiredis
&&
$(MAKE)
$@
cd
../deps/linenoise
&&
$(MAKE)
$@
distclean
:
clean
cd
../deps
/lua
&&
$(MAKE)
$@
-
(
cd
../deps
&&
$(MAKE)
distclean
)
-
(
cd
../deps/jemalloc
&&
$(MAKE)
distclean
)
-
(
rm
-f
.make-arch .make-malloc
)
dep
:
dep
:
$(CC)
-MM
*
.c
-I
../deps/hiredis
-I
../deps/linenoise
$(CC)
-MM
*
.c
-I
../deps/hiredis
-I
../deps/linenoise
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment