view third_party/libuv/BUILD @ 177:24fe8ff94056

Fixed few issues with current setup.
author MrJuneJune <me@mrjunejune.com>
date Wed, 21 Jan 2026 19:40:48 -0800
parents 948de3f54cea
children
line wrap: on
line source

load("@rules_cc//cc:defs.bzl", "cc_library")

package(default_visibility = ["//visibility:public"])

# Common source files for all platforms
COMMON_SRCS = [
    "src/fs-poll.c",
    "src/idna.c",
    "src/inet.c",
    "src/random.c",
    "src/strscpy.c",
    "src/strtok.c",
    "src/thread-common.c",
    "src/threadpool.c",
    "src/timer.c",
    "src/uv-common.c",
    "src/uv-data-getter-setters.c",
    "src/version.c",
]

# Unix common source files
UNIX_SRCS = [
    "src/unix/async.c",
    "src/unix/core.c",
    "src/unix/dl.c",
    "src/unix/fs.c",
    "src/unix/getaddrinfo.c",
    "src/unix/getnameinfo.c",
    "src/unix/loop-watcher.c",
    "src/unix/loop.c",
    "src/unix/pipe.c",
    "src/unix/poll.c",
    "src/unix/process.c",
    "src/unix/random-devurandom.c",
    "src/unix/signal.c",
    "src/unix/stream.c",
    "src/unix/tcp.c",
    "src/unix/thread.c",
    "src/unix/tty.c",
    "src/unix/udp.c",
]

# macOS/Darwin specific sources
DARWIN_SRCS = [
    "src/unix/bsd-ifaddrs.c",
    "src/unix/darwin.c",
    "src/unix/darwin-proctitle.c",
    "src/unix/fsevents.c",
    "src/unix/kqueue.c",
    "src/unix/proctitle.c",
    "src/unix/random-getentropy.c",
]

# Linux specific sources
LINUX_SRCS = [
    "src/unix/linux.c",
    "src/unix/procfs-exepath.c",
    "src/unix/proctitle.c",
    "src/unix/random-getrandom.c",
    "src/unix/random-sysctl-linux.c",
]

# Windows specific sources
WIN_SRCS = [
    "src/win/async.c",
    "src/win/core.c",
    "src/win/detect-wakeup.c",
    "src/win/dl.c",
    "src/win/error.c",
    "src/win/fs.c",
    "src/win/fs-event.c",
    "src/win/getaddrinfo.c",
    "src/win/getnameinfo.c",
    "src/win/handle.c",
    "src/win/loop-watcher.c",
    "src/win/pipe.c",
    "src/win/poll.c",
    "src/win/process.c",
    "src/win/process-stdio.c",
    "src/win/signal.c",
    "src/win/snprintf.c",
    "src/win/stream.c",
    "src/win/tcp.c",
    "src/win/thread.c",
    "src/win/tty.c",
    "src/win/udp.c",
    "src/win/util.c",
    "src/win/winapi.c",
    "src/win/winsock.c",
]

COMMON_HDRS = glob(["include/**/*.h"]) + glob(["src/*.h"]) + glob(["src/unix/*.h"]) + glob(["src/win/*.h"])

cc_library(
    name = "libuv",
    srcs = COMMON_SRCS + select({
        "@platforms//os:macos": UNIX_SRCS + DARWIN_SRCS,
        "@platforms//os:linux": UNIX_SRCS + LINUX_SRCS,
        "@platforms//os:windows": WIN_SRCS,
    }),
    hdrs = COMMON_HDRS,
    includes = ["include", "src"],
    local_defines = select({
        "@platforms//os:macos": [
            "_DARWIN_UNLIMITED_SELECT=1",
            "_DARWIN_USE_64_BIT_INODE=1",
            "_FILE_OFFSET_BITS=64",
            "_LARGEFILE_SOURCE",
        ],
        "@platforms//os:linux": [
            "_GNU_SOURCE",
            "_POSIX_C_SOURCE=200112",
            "_FILE_OFFSET_BITS=64",
            "_LARGEFILE_SOURCE",
        ],
        "@platforms//os:windows": [
            "WIN32_LEAN_AND_MEAN",
            "_WIN32_WINNT=0x0A00",
            "_CRT_DECLARE_NONSTDC_NAMES=0",
        ],
    }),
    linkopts = select({
        "@platforms//os:macos": ["-lpthread"],
        "@platforms//os:linux": ["-lpthread", "-ldl", "-lrt", "-lm"],
        "@platforms//os:windows": [
            "-lpsapi",
            "-luser32",
            "-ladvapi32",
            "-liphlpapi",
            "-luserenv",
            "-lws2_32",
            "-ldbghelp",
            "-lole32",
            "-lshell32",
        ],
    }),
    copts = select({
        "@platforms//os:windows": [],
        "//conditions:default": [
            "-fno-strict-aliasing",
            "-Wno-unused-parameter",
        ],
    }),
)