mirror of
https://github.com/valkey-io/valkey.git
synced 2026-05-06 05:26:42 -04:00
fb655dbf5c
Replace the dict.c implementation with a header-only wrapper (dict.h) around the hashtable API. The dict types, iterators and API functions are now typedefs, macros and inline functions that delegate to hashtable. This unifies the hashtable implementations in the project and removes duplicated logic. Changes to dict: - Remove dict.c; dict.h is now the entire implementation - dict, dictType and dictIterator are direct aliases for the hashtable counterparts. - dictEntry is a struct allocated by dict wrapper functions to hold key and value. It doesn't have a next pointer anymore. - Fix key duplication for dictTypes that had keyDup callback by calling sdsdup() at call sites in functions.c - Remove unused functions, macros, includes and casts - Move some dict defrag logic to defrag.c - Remove obsolete dict unit tests (covered by test_hashtable.cpp) Changes to hashtable: - Change hashtable keyCompare convention to match dict: non-zero means keys are equal, so existing dict compare functions can be reused - Add const to hashtableMemUsage parameter Changes to server implementation: - Deduplicate common dict/hashtable callbacks in server.c - Change configured hash-seed to only apply to data hashtables. In particular, it must not modify the hash seed for dicts already initialized during startup for reading configs and similar. Changes to libvalkey: - Let libvalkey use its own dict implementation. --------- Signed-off-by: Viktor Söderqvist <viktor.soderqvist@est.tech>
135 lines
3.8 KiB
Makefile
135 lines
3.8 KiB
Makefile
# Dependency Makefile
|
|
|
|
uname_S:= $(shell sh -c 'uname -s 2>/dev/null || echo not')
|
|
|
|
LUA_DEBUG?=no
|
|
LUA_COVERAGE?=no
|
|
|
|
CCCOLOR="\033[34m"
|
|
LINKCOLOR="\033[34;1m"
|
|
SRCCOLOR="\033[33m"
|
|
BINCOLOR="\033[37;1m"
|
|
MAKECOLOR="\033[32;1m"
|
|
ENDCOLOR="\033[0m"
|
|
|
|
default:
|
|
@echo "Explicit target required"
|
|
|
|
.PHONY: default
|
|
|
|
# Prerequisites target
|
|
.make-prerequisites:
|
|
@touch $@
|
|
|
|
# Clean everything when CFLAGS is different
|
|
ifneq ($(shell sh -c '[ -f .make-cflags ] && cat .make-cflags || echo none'), $(CFLAGS))
|
|
.make-cflags: distclean
|
|
-(echo "$(CFLAGS)" > .make-cflags)
|
|
.make-prerequisites: .make-cflags
|
|
endif
|
|
|
|
# Clean everything when LDFLAGS is different
|
|
ifneq ($(shell sh -c '[ -f .make-ldflags ] && cat .make-ldflags || echo none'), $(LDFLAGS))
|
|
.make-ldflags: distclean
|
|
-(echo "$(LDFLAGS)" > .make-ldflags)
|
|
.make-prerequisites: .make-ldflags
|
|
endif
|
|
|
|
distclean:
|
|
-(cd libvalkey && $(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
|
|
-(cd hdr_histogram && $(MAKE) clean) > /dev/null || true
|
|
-(cd fpconv && $(MAKE) clean) > /dev/null || true
|
|
-(rm -f .make-*)
|
|
|
|
.PHONY: distclean
|
|
|
|
LIBVALKEY_MAKE_FLAGS = SDS_INCLUDE_DIR=../../src/
|
|
ifneq (,$(filter $(BUILD_TLS),yes module))
|
|
LIBVALKEY_MAKE_FLAGS += USE_TLS=1
|
|
endif
|
|
|
|
ifneq (,$(filter $(BUILD_RDMA),yes module))
|
|
LIBVALKEY_MAKE_FLAGS += USE_RDMA=1
|
|
ifneq (,$(filter $(BUILD_RDMA),module))
|
|
LIBVALKEY_MAKE_FLAGS += USE_DLOPEN_RDMA=1
|
|
endif
|
|
endif
|
|
|
|
libvalkey: .make-prerequisites
|
|
@printf '%b %b\n' $(MAKECOLOR)MAKE$(ENDCOLOR) $(BINCOLOR)$@$(ENDCOLOR)
|
|
cd libvalkey && $(MAKE) static $(LIBVALKEY_MAKE_FLAGS)
|
|
|
|
.PHONY: libvalkey
|
|
|
|
linenoise: .make-prerequisites
|
|
@printf '%b %b\n' $(MAKECOLOR)MAKE$(ENDCOLOR) $(BINCOLOR)$@$(ENDCOLOR)
|
|
cd linenoise && $(MAKE)
|
|
|
|
.PHONY: linenoise
|
|
|
|
hdr_histogram: .make-prerequisites
|
|
@printf '%b %b\n' $(MAKECOLOR)MAKE$(ENDCOLOR) $(BINCOLOR)$@$(ENDCOLOR)
|
|
cd hdr_histogram && $(MAKE)
|
|
|
|
.PHONY: hdr_histogram
|
|
|
|
fpconv: .make-prerequisites
|
|
@printf '%b %b\n' $(MAKECOLOR)MAKE$(ENDCOLOR) $(BINCOLOR)$@$(ENDCOLOR)
|
|
cd fpconv && $(MAKE) CFLAGS="-fPIC $(CFLAGS)"
|
|
|
|
.PHONY: fpconv
|
|
|
|
ifeq ($(uname_S),SunOS)
|
|
# Make isinf() available
|
|
LUA_CFLAGS= -D__C99FEATURES__=1
|
|
endif
|
|
|
|
LUA_CFLAGS+= -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DLUA_USE_MKSTEMP $(CFLAGS) -fPIC
|
|
LUA_LDFLAGS+= $(LDFLAGS)
|
|
ifeq ($(LUA_DEBUG),yes)
|
|
LUA_CFLAGS+= -O0 -g -DLUA_USE_APICHECK
|
|
else
|
|
LUA_CFLAGS+= -O2
|
|
endif
|
|
ifeq ($(LUA_COVERAGE),yes)
|
|
LUA_CFLAGS += -fprofile-arcs -ftest-coverage
|
|
LUA_LDFLAGS += -fprofile-arcs -ftest-coverage
|
|
endif
|
|
|
|
# lua's Makefile defines AR="ar rcu", which is unusual, and makes it more
|
|
# challenging to cross-compile lua (and redis). These defines make it easier
|
|
# to fit redis into cross-compilation environments, which typically set AR.
|
|
AR=ar
|
|
ARFLAGS=rc
|
|
|
|
lua: .make-prerequisites
|
|
@printf '%b %b\n' $(MAKECOLOR)MAKE$(ENDCOLOR) $(BINCOLOR)$@$(ENDCOLOR)
|
|
cd lua/src && $(MAKE) all CFLAGS="$(LUA_CFLAGS)" MYLDFLAGS="$(LUA_LDFLAGS)" AR="$(AR) $(ARFLAGS)"
|
|
|
|
.PHONY: lua
|
|
|
|
JEMALLOC_CFLAGS=$(CFLAGS)
|
|
JEMALLOC_LDFLAGS=$(LDFLAGS)
|
|
|
|
ifneq ($(DEB_HOST_GNU_TYPE),)
|
|
JEMALLOC_CONFIGURE_OPTS += --host=$(DEB_HOST_GNU_TYPE)
|
|
endif
|
|
|
|
jemalloc: .make-prerequisites
|
|
@printf '%b %b\n' $(MAKECOLOR)MAKE$(ENDCOLOR) $(BINCOLOR)$@$(ENDCOLOR)
|
|
cd jemalloc && ./configure --disable-cxx --with-version=5.3.0-0-g0 --with-lg-quantum=3 --disable-cache-oblivious --with-jemalloc-prefix=je_ CFLAGS="$(JEMALLOC_CFLAGS)" LDFLAGS="$(JEMALLOC_LDFLAGS)" $(JEMALLOC_CONFIGURE_OPTS)
|
|
cd jemalloc && $(MAKE) lib/libjemalloc.a
|
|
|
|
.PHONY: jemalloc
|
|
|
|
gtest-parallel: .make-prerequisites
|
|
@printf '%b %b\n' $(MAKECOLOR)MAKE$(ENDCOLOR) $(BINCOLOR)$@$(ENDCOLOR)
|
|
@if [ ! -f gtest-parallel/gtest_parallel.py ]; then \
|
|
echo "Downloading gtest-parallel..."; \
|
|
rm -rf gtest-parallel; \
|
|
git clone --depth 1 https://github.com/google/gtest-parallel.git gtest-parallel; \
|
|
fi
|