forked from valkey-io/valkey
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
101 lines (84 loc) · 2.82 KB
/
Makefile
File metadata and controls
101 lines (84 loc) · 2.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
CLANG := $(findstring clang,$(shell sh -c '$(CC) --version | head -1'))
DEPS_DIR=../../../deps
ifeq ($(BUILD_LUA),module)
STATIC_LUA_FLAG=-DSTATIC_LUA=0
LUA_TARGET=libvalkeylua.so
else
STATIC_LUA_FLAG=-DSTATIC_LUA=1
LUA_TARGET=libvalkeylua.a
# Strip LTO flags for the static build. When archiving into a .a,
# LTO bitcode objects cause linker failures if the system linker
# cannot read them. Use 'override' because OPTIMIZATION is passed
# as a command-line variable from the parent Makefile.
override OPTIMIZATION:=$(subst -flto,,$(subst -ffat-lto-objects,,$(subst -flto=auto,,$(OPTIMIZATION))))
endif
ifeq ($(uname_S),Darwin)
SHOBJ_CFLAGS= -I. -I$(DEPS_DIR)/lua/src -I$(DEPS_DIR)/fpconv -fPIC -W -Wall -dynamic -fno-common $(OPTIMIZATION) -std=gnu11 -D_GNU_SOURCE $(STATIC_LUA_FLAG) $(CFLAGS)
SHOBJ_LDFLAGS= -bundle -undefined dynamic_lookup $(LDFLAGS)
else
SHOBJ_CFLAGS= -I. -I$(DEPS_DIR)/lua/src -I$(DEPS_DIR)/fpconv -fPIC -W -Wall -fno-common $(OPTIMIZATION) -std=gnu11 -D_GNU_SOURCE $(STATIC_LUA_FLAG) $(CFLAGS)
SHOBJ_LDFLAGS= -shared $(LDFLAGS)
# Pretty-printing setup for module build
CC_COLOR="\033[32m"
LINKCOLOR_MOD="\033[36;1m"
SRC_COLOR="\033[33m"
SCOPE_COLOR="\033[38:5:250m"
BINCOLOR_MOD="\033[35m"
RESET="\033[0m"
ifndef V
QUIET_CC_MOD = @printf ' %b %b(LUA Module)%b %b\n' $(CC_COLOR)CC$(RESET) $(SCOPE_COLOR) $(RESET) $(SRC_COLOR)$<$(RESET) 1>&2;
QUIET_LINK_MOD = @printf ' %b %b\n' $(LINKCOLOR_MOD)LINK$(RESET) $(BINCOLOR_MOD)$@$(RESET) 1>&2;
endif
ifeq (clang,$(CLANG))
SHOBJ_LDFLAGS+= -fuse-ld=lld
endif
endif
# BSD variants support
ifeq ($(uname_S),FreeBSD)
SHOBJ_LDFLAGS+= -lm
else ifeq ($(uname_S),OpenBSD)
SHOBJ_LDFLAGS+= -lm
else ifeq ($(uname_S),NetBSD)
SHOBJ_LDFLAGS+= -lm
else ifeq ($(uname_S),DragonFly)
SHOBJ_LDFLAGS+= -lm
endif
LIBS = \
$(DEPS_DIR)/lua/src/liblua.a \
$(DEPS_DIR)/fpconv/libfpconv.a
SRCS= $(wildcard *.c)
ifeq ($(BUILD_LUA),module)
OBJS = \
$(SRCS:.c=.o) \
sha1.o \
rand.o
else
OBJS = $(SRCS:.c=.o)
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)","")
SHOBJ_LDFLAGS+= -L /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib -lsystem
endif
endif
all: $(LUA_TARGET)
ifeq ($(BUILD_LUA),module)
$(LUA_TARGET): $(OBJS) $(LIBS)
$(QUIET_LINK_MOD)$(CC) -o $@ $(SHOBJ_LDFLAGS) $^
else
$(LUA_TARGET): $(OBJS) $(LIBS)
$(QUIET_LINK_MOD)$(AR) rcs $@ $(OBJS)
endif
sha1.o: ../../sha1.c
$(QUIET_CC_MOD)$(CC) $(SHOBJ_CFLAGS) -c $< -o $@
rand.o: ../../rand.c
$(QUIET_CC_MOD)$(CC) $(SHOBJ_CFLAGS) -c $< -o $@
%.o: %.c
$(QUIET_CC_MOD)$(CC) $(SHOBJ_CFLAGS) -c $< -o $@
$(DEPS_DIR)/lua/src/liblua.a:
cd $(DEPS_DIR) && $(MAKE) lua
$(DEPS_DIR)/fpconv/libfpconv.a:
cd $(DEPS_DIR) && $(MAKE) fpconv
clean:
rm -f *.so *.a $(OBJS)