diff third_party/wrk/BUILD @ 178:94705b5986b3

[ThirdParty] Added WRK and luajit for load testing.
author MrJuneJune <me@mrjunejune.com>
date Thu, 22 Jan 2026 20:10:30 -0800
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/third_party/wrk/BUILD	Thu Jan 22 20:10:30 2026 -0800
@@ -0,0 +1,118 @@
+load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library")
+
+package(default_visibility = ["//visibility:public"])
+
+# Generate version.c
+genrule(
+  name = "version_gen",
+  outs = ["version.c"],
+  cmd = """echo 'const char *VERSION = "4.2.0";' > $@""",
+)
+
+# Generate bytecode.c from wrk.lua using luajit
+genrule(
+  name = "bytecode_gen",
+  srcs = ["src/wrk.lua"],
+  outs = ["bytecode.c"],
+  cmd = """
+    LUAJIT_BIN=$(execpath //third_party/luajit:luajit_bin)
+    LUAJIT_DIR=$${LUAJIT_BIN%/bin/luajit}
+    LUA_PATH="$${LUAJIT_DIR}/share/luajit-2.1/?.lua;;" $${LUAJIT_BIN} -b $< $@
+  """,
+  local = True,
+  tools = ["//third_party/luajit:luajit_bin"],
+)
+
+cc_library(
+  name = "wrk_lib",
+  srcs = [
+    "src/ae.c",
+    "src/aprintf.c",
+    "src/http_parser.c",
+    "src/net.c",
+    "src/script.c",
+    "src/ssl.c",
+    "src/stats.c",
+    "src/units.c",
+    "src/zmalloc.c",
+    ":bytecode_gen",
+    ":version_gen",
+  ],
+  hdrs = [
+    "src/ae.h",
+    "src/aprintf.h",
+    "src/atomicvar.h",
+    "src/config.h",
+    "src/http_parser.h",
+    "src/main.h",
+    "src/net.h",
+    "src/script.h",
+    "src/ssl.h",
+    "src/stats.h",
+    "src/units.h",
+    "src/wrk.h",
+    "src/zmalloc.h",
+  ],
+  textual_hdrs = [
+    "src/ae_epoll.c",
+    "src/ae_evport.c",
+    "src/ae_kqueue.c",
+    "src/ae_select.c",
+  ],
+  copts = [
+    "-std=c99",
+    "-Wall",
+    "-O2",
+    "-D_REENTRANT",
+  ] + select({
+    "@platforms//os:linux": [
+      "-D_POSIX_C_SOURCE=200112L",
+      "-D_BSD_SOURCE",
+      "-D_DEFAULT_SOURCE",
+    ],
+    "@platforms//os:freebsd": [
+      "-D_DECLARE_C99_LDBL_MATH",
+    ],
+    "//conditions:default": [],
+  }),
+  includes = ["src"],
+  deps = [
+    "//third_party/luajit:luajit",
+    "@openssl//:crypto",
+    "@openssl//:ssl",
+  ],
+  alwayslink = True,
+)
+
+cc_binary(
+  name = "wrk",
+  srcs = ["src/wrk.c"],
+  copts = [
+    "-std=c99",
+    "-Wall",
+    "-O2",
+    "-D_REENTRANT",
+  ] + select({
+    "@platforms//os:linux": [
+      "-D_POSIX_C_SOURCE=200112L",
+      "-D_BSD_SOURCE",
+      "-D_DEFAULT_SOURCE",
+    ],
+    "@platforms//os:freebsd": [
+      "-D_DECLARE_C99_LDBL_MATH",
+    ],
+    "//conditions:default": [],
+  }),
+  includes = ["src"],
+  linkopts = [
+    "-lm",
+    "-lpthread",
+    "-rdynamic",
+  ] + select({
+    "@platforms//os:linux": [
+      "-ldl",
+    ],
+    "//conditions:default": [],
+  }),
+  deps = [":wrk_lib"],
+)