load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") load("@rules_shell//shell:sh_binary.bzl", "sh_binary") cc_library( name = "fpconv", srcs = glob(["deps/fpconv/*.c"]), hdrs = glob(["deps/fpconv/*.h"]), strip_include_prefix = "deps/fpconv", ) cc_library( name = "hdr_histogram", srcs = glob(["deps/hdr_histogram/*.c"]), hdrs = glob(["deps/hdr_histogram/*.h"]), strip_include_prefix = "deps/hdr_histogram", local_defines = ['HDR_MALLOC_INCLUDE=\\"hdr_redis_malloc.h\\"'], ) cc_library( name = "linenoise", srcs = glob(["deps/linenoise/*.c"]), hdrs = glob(["deps/linenoise/*.h"]), strip_include_prefix = "deps/linenoise", ) cc_library( name = "hiredis", srcs = glob( [ "deps/hiredis/*.c", ], exclude = [ "deps/hiredis/dict.c", "deps/hiredis/test.c", "deps/hiredis/ssl.*", ], ), hdrs = glob(["deps/hiredis/*.h"]), strip_include_prefix = "deps/hiredis", textual_hdrs = ["deps/hiredis/dict.c"], ) cc_library( name = "lua", srcs = glob( ["deps/lua/src/*.c"], exclude = [ "deps/lua/src/lua.c", "deps/lua/src/luac.c", ], ) + ["src/solarisfixes.h"], hdrs = glob(["deps/lua/src/*.h"]), local_defines = ["ENABLE_CJSON_GLOBAL"], copts = ["-Wno-deprecated-declarations"], strip_include_prefix = "deps/lua/src", ) sh_binary( name = "mkreleasehdr", srcs = ["src/mkreleasehdr.sh"], ) genrule( name = "generate_release_header", outs = ["release.h"], cmd = "$(location mkreleasehdr) && mv release.h $@", tools = [":mkreleasehdr"], ) cc_library( name = "redis_lib", srcs = [ "src/acl.c", "src/adlist.c", "src/ae.c", "src/anet.c", "src/aof.c", "src/bio.c", "src/bitops.c", "src/blocked.c", "src/call_reply.c", "src/childinfo.c", "src/cluster.c", "src/commands.c", "src/config.c", "src/connection.c", "src/crc16.c", "src/crc64.c", "src/crcspeed.c", "src/db.c", "src/debug.c", "src/defrag.c", "src/dict.c", "src/endianconv.c", "src/eval.c", "src/evict.c", "src/expire.c", "src/function_lua.c", "src/functions.c", "src/geo.c", "src/geohash.c", "src/geohash_helper.c", "src/hyperloglog.c", "src/intset.c", "src/latency.c", "src/lazyfree.c", "src/listpack.c", "src/localtime.c", "src/logreqres.c", "src/lolwut.c", "src/lolwut5.c", "src/lolwut6.c", "src/lzf_c.c", "src/lzf_d.c", "src/memtest.c", "src/module.c", "src/monotonic.c", "src/mt19937-64.c", "src/multi.c", "src/networking.c", "src/notify.c", "src/object.c", "src/pqsort.c", "src/pubsub.c", "src/quicklist.c", "src/rand.c", "src/rax.c", "src/rdb.c", "src/redis-check-aof.c", "src/redis-check-rdb.c", "src/release.c", "src/replication.c", "src/resp_parser.c", "src/rio.c", "src/script.c", "src/script_lua.c", "src/sds.c", "src/sentinel.c", "src/server.c", "src/setcpuaffinity.c", "src/setproctitle.c", "src/sha1.c", "src/sha256.c", "src/siphash.c", "src/slowlog.c", "src/socket.c", "src/sort.c", "src/sparkline.c", "src/strl.c", "src/syncio.c", "src/syscheck.c", "src/t_hash.c", "src/t_list.c", "src/t_set.c", "src/t_stream.c", "src/t_string.c", "src/t_zset.c", "src/timeout.c", "src/tls.c", "src/tracking.c", "src/unix.c", "src/util.c", "src/ziplist.c", "src/zipmap.c", "src/zmalloc.c", ] + glob(["src/*.h"]) + [ "release.h", ], textual_hdrs = select({ "@platforms//os:linux": ["src/ae_epoll.c"], "@platforms//os:osx": ["src/ae_kqueue.c"], }) + [ "src/commands.def", ], includes = [ "src", ], copts = ["-Wno-implicit-const-int-float-conversion"], deps = [ ":fpconv", ":hdr_histogram", ":hiredis", ":lua", ], ) cc_library( name = "redis_cli_lib", srcs = [ "src/anet.c", "src/adlist.c", "src/dict.c", "src/redis-cli.c", "src/zmalloc.c", "src/release.c", "src/ae.c", "src/redisassert.c", "src/crcspeed.c", "src/crc64.c", "src/siphash.c", "src/crc16.c", "src/monotonic.c", "src/cli_common.c", "src/mt19937-64.c", "src/strl.c", "src/cli_commands.c", ] + glob(["src/*.h"]) + [ "release.h", ], includes = [ "deps/hiredis", # Ensure resolves to hiredis to avoid symbol redefinitions. "src", ], textual_hdrs = select({ "@platforms//os:linux": ["src/ae_epoll.c"], "@platforms//os:osx": ["src/ae_kqueue.c"], }) + [ "src/commands.def", ], deps = [ ":hiredis", ":linenoise", ":lua", ], ) cc_binary( name = "redis-cli", deps = ["redis_cli_lib"], visibility = ["//visibility:public"], ) cc_binary( name = "redis-server", linkopts = select({ "@platforms//os:linux": [ "-ldl", "-lpthread", ], "@platforms//os:osx": [], }), deps = [":redis_lib"], visibility = ["//visibility:public"], ) filegroup( name = "redis", srcs = [ ":redis-server", ":redis-cli", ], visibility = ["//visibility:public"], )