init
Some checks failed
CI / build (-Dbuild-tests -Dbuild-benchmarks, true, macos-latest, master) (push) Has been cancelled
CI / build (macos-latest, 0.13.0) (push) Has been cancelled
CI / build (ubuntu-latest, 0.13.0) (push) Has been cancelled
CI / build (windows-latest, 0.13.0) (push) Has been cancelled
Some checks failed
CI / build (-Dbuild-tests -Dbuild-benchmarks, true, macos-latest, master) (push) Has been cancelled
CI / build (macos-latest, 0.13.0) (push) Has been cancelled
CI / build (ubuntu-latest, 0.13.0) (push) Has been cancelled
CI / build (windows-latest, 0.13.0) (push) Has been cancelled
This commit is contained in:
commit
aa27cc803c
37
.github/workflows/ci.yaml
vendored
Normal file
37
.github/workflows/ci.yaml
vendored
Normal file
@ -0,0 +1,37 @@
|
||||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
zig-version: ["0.13.0"]
|
||||
os: [ubuntu-latest, macos-latest, windows-latest]
|
||||
include:
|
||||
- zig-version: "master"
|
||||
check-format: true
|
||||
os: macos-latest
|
||||
build-options: "-Dbuild-tests -Dbuild-benchmarks"
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Zig
|
||||
uses: mlugg/setup-zig@v1
|
||||
with:
|
||||
version: ${{ matrix.zig-version }}
|
||||
|
||||
- if: ${{ matrix.check-format }}
|
||||
name: Check Formatting
|
||||
run: zig fmt --check --ast-check .
|
||||
|
||||
- name: Build
|
||||
run: zig build ${{ matrix.build-options }} --summary all
|
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
.zig-cache/
|
||||
zig-out/
|
13
LICENSE
Normal file
13
LICENSE
Normal file
@ -0,0 +1,13 @@
|
||||
Copyright (c) contributors
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||
SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
|
||||
OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
19
LICENSE-LIBUV
Normal file
19
LICENSE-LIBUV
Normal file
@ -0,0 +1,19 @@
|
||||
Copyright (c) 2015-present libuv project contributors.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to
|
||||
deal in the Software without restriction, including without limitation the
|
||||
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
sell copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN THE SOFTWARE.
|
714
build.zig
Normal file
714
build.zig
Normal file
@ -0,0 +1,714 @@
|
||||
pub fn build(b: *std.Build) void {
|
||||
const target = b.standardTargetOptions(.{});
|
||||
const optimize = b.standardOptimizeOption(.{});
|
||||
const build_tests = b.option(
|
||||
bool,
|
||||
"build-tests",
|
||||
"Build the unit test executable (default: false)",
|
||||
) orelse false;
|
||||
const build_benchmarks = b.option(
|
||||
bool,
|
||||
"build-benchmarks",
|
||||
"Build the benchmarks executable (default: false)",
|
||||
) orelse false;
|
||||
|
||||
const upstream = b.dependency("libuv", .{});
|
||||
|
||||
const lib = b.addStaticLibrary(.{
|
||||
.name = "uv",
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
});
|
||||
|
||||
const cflags: []const []const u8 = &.{
|
||||
"-fvisibility=hidden",
|
||||
"-fno-strict-aliasing",
|
||||
"-std=gnu90",
|
||||
};
|
||||
|
||||
const src_root = upstream.path("src");
|
||||
const include_root = upstream.path("include");
|
||||
const test_root = upstream.path("test");
|
||||
|
||||
lib.linkLibC();
|
||||
lib.addCSourceFiles(.{
|
||||
.root = src_root,
|
||||
.files = common_sources,
|
||||
.flags = cflags,
|
||||
});
|
||||
lib.addIncludePath(src_root);
|
||||
lib.addIncludePath(include_root);
|
||||
|
||||
const tinfo = target.result;
|
||||
switch (tinfo.os.tag) {
|
||||
.windows => {
|
||||
lib.root_module.addCMacro("_WIN32_WINNT", "0x0A00");
|
||||
lib.root_module.addCMacro("WIN32_LEAN_AND_MEAN", "");
|
||||
lib.root_module.addCMacro("_CRT_DECLARE_NONSTDC_NAMES", "0");
|
||||
|
||||
lib.linkSystemLibrary("psapi");
|
||||
lib.linkSystemLibrary("user32");
|
||||
lib.linkSystemLibrary("advapi32");
|
||||
lib.linkSystemLibrary("iphlpapi");
|
||||
lib.linkSystemLibrary("userenv");
|
||||
lib.linkSystemLibrary("ws2_32");
|
||||
lib.linkSystemLibrary("dbghelp");
|
||||
lib.linkSystemLibrary("ole32");
|
||||
lib.linkSystemLibrary("shell32");
|
||||
lib.addCSourceFiles(.{
|
||||
.root = src_root,
|
||||
.files = win_sources,
|
||||
.flags = cflags,
|
||||
});
|
||||
lib.installHeader(
|
||||
include_root.path(b, "uv/win.h"),
|
||||
"uv/win.h",
|
||||
);
|
||||
lib.installHeader(
|
||||
include_root.path(b, "uv/tree.h"),
|
||||
"uv/tree.h",
|
||||
);
|
||||
},
|
||||
else => {
|
||||
lib.root_module.addCMacro("_FILE_OFFSET_BITS", "64");
|
||||
lib.root_module.addCMacro("_LARGEFILE_SOURCE", "");
|
||||
lib.addCSourceFiles(.{
|
||||
.root = src_root,
|
||||
.files = unix_sources,
|
||||
.flags = cflags,
|
||||
});
|
||||
lib.installHeader(
|
||||
include_root.path(b, "uv/unix.h"),
|
||||
"uv/unix.h",
|
||||
);
|
||||
if (!tinfo.isAndroid())
|
||||
lib.linkSystemLibrary("pthread");
|
||||
|
||||
if (tinfo.isDarwin()) {
|
||||
lib.root_module.addCMacro("_DARWIN_UNLIMITED_SELECT", "1");
|
||||
lib.root_module.addCMacro("_DARWIN_USE_64_BIT_INODE", "1");
|
||||
lib.addCSourceFiles(.{
|
||||
.root = src_root,
|
||||
.files = darwin_sources,
|
||||
.flags = cflags,
|
||||
});
|
||||
lib.installHeader(
|
||||
include_root.path(b, "uv/darwin.h"),
|
||||
"uv/darwin.h",
|
||||
);
|
||||
} else if (tinfo.isAndroid()) {
|
||||
lib.root_module.addCMacro("_GNU_SOURCE", "");
|
||||
lib.linkSystemLibrary("dl");
|
||||
lib.addCSourceFiles(.{
|
||||
.root = src_root,
|
||||
.files = android_sources,
|
||||
.flags = cflags,
|
||||
});
|
||||
lib.installHeader(
|
||||
include_root.path(b, "uv/linux.h"),
|
||||
"uv/linux.h",
|
||||
);
|
||||
} else switch (tinfo.os.tag) {
|
||||
.linux => {
|
||||
lib.root_module.addCMacro("_GNU_SOURCE", "");
|
||||
lib.root_module.addCMacro("_POSIX_C_SOURCE", "200112");
|
||||
lib.linkSystemLibrary("dl");
|
||||
lib.linkSystemLibrary("rt");
|
||||
lib.addCSourceFiles(.{
|
||||
.root = src_root,
|
||||
.files = linux_sources,
|
||||
.flags = cflags,
|
||||
});
|
||||
lib.installHeader(
|
||||
include_root.path(b, "uv/linux.h"),
|
||||
"uv/linux.h",
|
||||
);
|
||||
},
|
||||
.aix => {
|
||||
lib.root_module.addCMacro("_ALL_SOURCE", "");
|
||||
lib.root_module.addCMacro("_LINUX_SOURCE_COMPAT", "");
|
||||
lib.root_module.addCMacro("_THREAD_SAFE", "");
|
||||
lib.root_module.addCMacro("_XOPEN_SOURCE", "500");
|
||||
lib.root_module.addCMacro("HAVE_SYS_AHAFS_EVPRODS_H", "");
|
||||
lib.linkSystemLibrary("perfstat");
|
||||
lib.addCSourceFiles(.{
|
||||
.root = src_root,
|
||||
.files = aix_sources,
|
||||
.flags = cflags,
|
||||
});
|
||||
lib.installHeader(
|
||||
include_root.path(b, "uv/aix.h"),
|
||||
"uv/aix.h",
|
||||
);
|
||||
},
|
||||
.haiku => {
|
||||
lib.root_module.addCMacro("_BSD_SOURCE", "");
|
||||
lib.linkSystemLibrary("bsd");
|
||||
lib.linkSystemLibrary("network");
|
||||
lib.addCSourceFiles(.{
|
||||
.root = src_root,
|
||||
.files = haiku_sources,
|
||||
.flags = cflags,
|
||||
});
|
||||
lib.installHeader(
|
||||
include_root.path(b, "uv/posix.h"),
|
||||
"uv/posix.h",
|
||||
);
|
||||
},
|
||||
.hurd => {
|
||||
lib.root_module.addCMacro("_GNU_SOURCE", "");
|
||||
lib.root_module.addCMacro("_POSIX_C_SOURCE", "200112");
|
||||
lib.root_module.addCMacro("_XOPEN_SOURCE", "500");
|
||||
lib.linkSystemLibrary("dl");
|
||||
lib.addCSourceFiles(.{
|
||||
.root = src_root,
|
||||
.files = hurd_sources,
|
||||
.flags = cflags,
|
||||
});
|
||||
lib.installHeader(
|
||||
include_root.path(b, "uv/posix.h"),
|
||||
"uv/posix.h",
|
||||
);
|
||||
},
|
||||
.dragonfly => {
|
||||
lib.addCSourceFiles(.{
|
||||
.root = src_root,
|
||||
.files = dragonfly_sources,
|
||||
.flags = cflags,
|
||||
});
|
||||
lib.installHeader(
|
||||
include_root.path(b, "uv/bsd.h"),
|
||||
"uv/bsd.h",
|
||||
);
|
||||
},
|
||||
.freebsd => {
|
||||
lib.addCSourceFiles(.{
|
||||
.root = src_root,
|
||||
.files = freebsd_sources,
|
||||
.flags = cflags,
|
||||
});
|
||||
lib.installHeader(
|
||||
include_root.path(b, "uv/bsd.h"),
|
||||
"uv/bsd.h",
|
||||
);
|
||||
},
|
||||
.netbsd => {
|
||||
lib.linkSystemLibrary("kvm");
|
||||
lib.addCSourceFiles(.{
|
||||
.root = src_root,
|
||||
.files = netbsd_sources,
|
||||
.flags = cflags,
|
||||
});
|
||||
lib.installHeader(
|
||||
include_root.path(b, "uv/bsd.h"),
|
||||
"uv/bsd.h",
|
||||
);
|
||||
},
|
||||
.openbsd => {
|
||||
lib.addCSourceFiles(.{
|
||||
.root = src_root,
|
||||
.files = openbsd_sources,
|
||||
.flags = cflags,
|
||||
});
|
||||
lib.installHeader(
|
||||
include_root.path(b, "uv/bsd.h"),
|
||||
"uv/bsd.h",
|
||||
);
|
||||
},
|
||||
.illumos, .solaris => {
|
||||
lib.root_module.addCMacro("__EXTENSIONS__", "");
|
||||
lib.root_module.addCMacro("_XOPEN_SOURCE", "500");
|
||||
lib.root_module.addCMacro("_REENTRANT", "");
|
||||
lib.linkSystemLibrary("kstat");
|
||||
lib.linkSystemLibrary("nsl");
|
||||
lib.linkSystemLibrary("sendfile");
|
||||
lib.linkSystemLibrary("socket");
|
||||
lib.addCSourceFiles(.{
|
||||
.root = src_root,
|
||||
.files = solaris_sources,
|
||||
.flags = cflags,
|
||||
});
|
||||
lib.installHeader(
|
||||
include_root.path(b, "uv/sunos.h"),
|
||||
"uv/sunos.h",
|
||||
);
|
||||
},
|
||||
else => @panic("Unsupported build target"),
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
for (install_headers) |header| {
|
||||
lib.installHeader(
|
||||
include_root.path(b, header),
|
||||
header,
|
||||
);
|
||||
}
|
||||
|
||||
b.installArtifact(lib);
|
||||
|
||||
if (build_tests) {
|
||||
const tests = b.addExecutable(.{
|
||||
.name = "uv_run_tests_a",
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
});
|
||||
tests.addCSourceFiles(.{
|
||||
.root = test_root,
|
||||
.files = test_sources,
|
||||
.flags = cflags,
|
||||
});
|
||||
if (tinfo.os.tag == .windows) {
|
||||
tests.addCSourceFiles(.{
|
||||
.root = test_root,
|
||||
.files = win_test_sources,
|
||||
.flags = cflags,
|
||||
});
|
||||
tests.addCSourceFile(.{
|
||||
.file = src_root.path(b, "win/snprintf.c"),
|
||||
.flags = cflags,
|
||||
});
|
||||
} else {
|
||||
tests.addCSourceFiles(.{
|
||||
.root = test_root,
|
||||
.files = unix_test_sources,
|
||||
.flags = cflags,
|
||||
});
|
||||
}
|
||||
tests.addIncludePath(src_root);
|
||||
tests.addIncludePath(include_root);
|
||||
tests.linkLibrary(lib);
|
||||
b.installArtifact(tests);
|
||||
}
|
||||
|
||||
if (build_benchmarks) {
|
||||
const benchmarks = b.addExecutable(.{
|
||||
.name = "uv_run_benchmarks_a",
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
});
|
||||
|
||||
benchmarks.addCSourceFiles(.{
|
||||
.root = test_root,
|
||||
.files = benchmark_sources,
|
||||
.flags = cflags,
|
||||
});
|
||||
if (tinfo.os.tag == .windows) {
|
||||
benchmarks.addCSourceFiles(.{
|
||||
.root = test_root,
|
||||
.files = win_test_sources,
|
||||
.flags = cflags,
|
||||
});
|
||||
benchmarks.addCSourceFile(.{
|
||||
.file = src_root.path(b, "win/snprintf.c"),
|
||||
.flags = cflags,
|
||||
});
|
||||
} else {
|
||||
benchmarks.addCSourceFiles(.{
|
||||
.root = test_root,
|
||||
.files = unix_test_sources,
|
||||
.flags = cflags,
|
||||
});
|
||||
}
|
||||
benchmarks.addIncludePath(src_root);
|
||||
benchmarks.addIncludePath(include_root);
|
||||
benchmarks.linkLibrary(lib);
|
||||
b.installArtifact(benchmarks);
|
||||
}
|
||||
}
|
||||
|
||||
const install_headers: []const []const u8 = &.{
|
||||
"uv.h",
|
||||
"uv/errno.h",
|
||||
"uv/threadpool.h",
|
||||
"uv/version.h",
|
||||
};
|
||||
|
||||
const common_sources: []const []const u8 = &.{
|
||||
"fs-poll.c",
|
||||
"idna.c",
|
||||
"inet.c",
|
||||
"random.c",
|
||||
"strscpy.c",
|
||||
"strtok.c",
|
||||
"thread-common.c",
|
||||
"threadpool.c",
|
||||
"timer.c",
|
||||
"uv-common.c",
|
||||
"uv-data-getter-setters.c",
|
||||
"version.c",
|
||||
};
|
||||
|
||||
const unix_sources: []const []const u8 = &.{
|
||||
"unix/async.c",
|
||||
"unix/core.c",
|
||||
"unix/dl.c",
|
||||
"unix/fs.c",
|
||||
"unix/getaddrinfo.c",
|
||||
"unix/getnameinfo.c",
|
||||
"unix/loop-watcher.c",
|
||||
"unix/loop.c",
|
||||
"unix/pipe.c",
|
||||
"unix/poll.c",
|
||||
"unix/process.c",
|
||||
"unix/random-devurandom.c",
|
||||
"unix/signal.c",
|
||||
"unix/stream.c",
|
||||
"unix/tcp.c",
|
||||
"unix/thread.c",
|
||||
"unix/tty.c",
|
||||
"unix/udp.c",
|
||||
};
|
||||
|
||||
const aix_sources: []const []const u8 = &.{
|
||||
"unix/aix.c",
|
||||
"unix/aix-common.c",
|
||||
};
|
||||
|
||||
const android_sources: []const []const u8 = &.{
|
||||
"unix/linux.c",
|
||||
"unix/procfs-exepath.c",
|
||||
"unix/random-getentropy.c",
|
||||
"unix/random-getrandom.c",
|
||||
"unix/random-sysctl-linux.c",
|
||||
|
||||
"unix/proctitle.c",
|
||||
};
|
||||
|
||||
const linux_sources: []const []const u8 = &.{
|
||||
"unix/linux.c",
|
||||
"unix/procfs-exepath.c",
|
||||
"unix/random-getrandom.c",
|
||||
"unix/random-sysctl-linux.c",
|
||||
|
||||
"unix/proctitle.c",
|
||||
};
|
||||
|
||||
const darwin_sources: []const []const u8 = &.{
|
||||
"unix/darwin-proctitle.c",
|
||||
"unix/darwin.c",
|
||||
"unix/fsevents.c",
|
||||
"unix/random-getentropy.c",
|
||||
|
||||
"unix/proctitle.c",
|
||||
"unix/bsd-ifaddrs.c",
|
||||
"unix/kqueue.c",
|
||||
};
|
||||
|
||||
const dragonfly_sources: []const []const u8 = &.{
|
||||
"unix/freebsd.c",
|
||||
"unix/posix-hrtime.c",
|
||||
"unix/bsd-proctitle.c",
|
||||
"unix/bsd-ifaddrs.c",
|
||||
"unix/kqueue.c",
|
||||
};
|
||||
|
||||
const freebsd_sources: []const []const u8 = &.{
|
||||
"unix/freebsd.c",
|
||||
"unix/posix-hrtime.c",
|
||||
"unix/bsd-proctitle.c",
|
||||
"unix/random-getrandom.c",
|
||||
};
|
||||
const netbsd_sources: []const []const u8 = &.{
|
||||
"unix/posix-hrtime.c",
|
||||
"unix/bsd-proctitle.c",
|
||||
"unix/netbsd.c",
|
||||
};
|
||||
const openbsd_sources: []const []const u8 = &.{
|
||||
"unix/posix-hrtime.c",
|
||||
"unix/bsd-proctitle.c",
|
||||
"unix/random-getentropy.c",
|
||||
"unix/openbsd.c",
|
||||
};
|
||||
|
||||
const solaris_sources: []const []const u8 = &.{
|
||||
"unix/no-proctitle.c",
|
||||
"unix/sunos.c",
|
||||
};
|
||||
|
||||
const haiku_sources: []const []const u8 = &.{
|
||||
"unix/haiku.c",
|
||||
"unix/bsd-ifaddrs.c",
|
||||
"unix/no-fsevents.c",
|
||||
"unix/no-proctitle.c",
|
||||
"unix/posix-hrtime.c",
|
||||
"unix/posix-poll.c",
|
||||
};
|
||||
|
||||
const hurd_sources: []const []const u8 = &.{
|
||||
"unix/bsd-ifaddrs.c",
|
||||
"unix/no-fsevents.c",
|
||||
"unix/no-proctitle.c",
|
||||
"unix/posix-hrtime.c",
|
||||
"unix/posix-poll.c",
|
||||
"unix/hurd.c",
|
||||
};
|
||||
|
||||
const cygwin_sources: []const []const u8 = &.{
|
||||
"unix/cygwin.c",
|
||||
"unix/bsd-ifaddrs.c",
|
||||
"unix/no-fsevents.c",
|
||||
"unix/no-proctitle.c",
|
||||
"unix/posix-hrtime.c",
|
||||
"unix/posix-poll.c",
|
||||
"unix/procfs-exepath.c",
|
||||
"unix/sysinfo-loadavg.c",
|
||||
"unix/sysinfo-memory.c",
|
||||
};
|
||||
|
||||
const win_sources: []const []const u8 = &.{
|
||||
"win/async.c",
|
||||
"win/core.c",
|
||||
"win/detect-wakeup.c",
|
||||
"win/dl.c",
|
||||
"win/error.c",
|
||||
"win/fs.c",
|
||||
"win/fs-event.c",
|
||||
"win/getaddrinfo.c",
|
||||
"win/getnameinfo.c",
|
||||
"win/handle.c",
|
||||
"win/loop-watcher.c",
|
||||
"win/pipe.c",
|
||||
"win/thread.c",
|
||||
"win/poll.c",
|
||||
"win/process.c",
|
||||
"win/process-stdio.c",
|
||||
"win/signal.c",
|
||||
"win/snprintf.c",
|
||||
"win/stream.c",
|
||||
"win/tcp.c",
|
||||
"win/tty.c",
|
||||
"win/udp.c",
|
||||
"win/util.c",
|
||||
"win/winapi.c",
|
||||
"win/winsock.c",
|
||||
};
|
||||
|
||||
const win_gnu_sources: []const []const u8 = &.{
|
||||
"unix/cygwin.c",
|
||||
"unix/bsd-ifaddrs.c",
|
||||
"unix/no-fsevents.c",
|
||||
"unix/no-proctitle.c",
|
||||
"unix/posix-hrtime.c",
|
||||
"unix/posix-poll.c",
|
||||
"unix/procfs-exepath.c",
|
||||
"unix/sysinfo-loadavg.c",
|
||||
"unix/sysinfo-memory.c",
|
||||
};
|
||||
|
||||
const benchmark_sources: []const []const u8 = &.{
|
||||
"benchmark-async-pummel.c",
|
||||
"benchmark-async.c",
|
||||
"benchmark-fs-stat.c",
|
||||
"benchmark-getaddrinfo.c",
|
||||
"benchmark-loop-count.c",
|
||||
"benchmark-queue-work.c",
|
||||
"benchmark-million-async.c",
|
||||
"benchmark-million-timers.c",
|
||||
"benchmark-multi-accept.c",
|
||||
"benchmark-ping-pongs.c",
|
||||
"benchmark-ping-udp.c",
|
||||
"benchmark-pound.c",
|
||||
"benchmark-pump.c",
|
||||
"benchmark-sizes.c",
|
||||
"benchmark-spawn.c",
|
||||
"benchmark-tcp-write-batch.c",
|
||||
"benchmark-thread.c",
|
||||
"benchmark-udp-pummel.c",
|
||||
"blackhole-server.c",
|
||||
"echo-server.c",
|
||||
"run-benchmarks.c",
|
||||
"runner.c",
|
||||
};
|
||||
|
||||
const win_test_sources: []const []const u8 = &.{
|
||||
"runner-win.c",
|
||||
};
|
||||
|
||||
const unix_test_sources: []const []const u8 = &.{
|
||||
"runner-unix.c",
|
||||
};
|
||||
|
||||
const test_sources: []const []const u8 = &.{
|
||||
"blackhole-server.c",
|
||||
"echo-server.c",
|
||||
"run-tests.c",
|
||||
"runner.c",
|
||||
"test-active.c",
|
||||
"test-async-null-cb.c",
|
||||
"test-async.c",
|
||||
"test-barrier.c",
|
||||
"test-callback-stack.c",
|
||||
"test-close-fd.c",
|
||||
"test-close-order.c",
|
||||
"test-condvar.c",
|
||||
"test-connect-unspecified.c",
|
||||
"test-connection-fail.c",
|
||||
"test-cwd-and-chdir.c",
|
||||
"test-default-loop-close.c",
|
||||
"test-delayed-accept.c",
|
||||
"test-dlerror.c",
|
||||
"test-eintr-handling.c",
|
||||
"test-embed.c",
|
||||
"test-emfile.c",
|
||||
"test-env-vars.c",
|
||||
"test-error.c",
|
||||
"test-fail-always.c",
|
||||
"test-fork.c",
|
||||
"test-fs-copyfile.c",
|
||||
"test-fs-event.c",
|
||||
"test-fs-poll.c",
|
||||
"test-fs.c",
|
||||
"test-fs-readdir.c",
|
||||
"test-fs-fd-hash.c",
|
||||
"test-fs-open-flags.c",
|
||||
"test-get-currentexe.c",
|
||||
"test-get-loadavg.c",
|
||||
"test-get-memory.c",
|
||||
"test-get-passwd.c",
|
||||
"test-getaddrinfo.c",
|
||||
"test-gethostname.c",
|
||||
"test-getnameinfo.c",
|
||||
"test-getsockname.c",
|
||||
"test-getters-setters.c",
|
||||
"test-gettimeofday.c",
|
||||
"test-handle-fileno.c",
|
||||
"test-homedir.c",
|
||||
"test-hrtime.c",
|
||||
"test-idle.c",
|
||||
"test-idna.c",
|
||||
"test-iouring-pollhup.c",
|
||||
"test-ip4-addr.c",
|
||||
"test-ip6-addr.c",
|
||||
"test-ip-name.c",
|
||||
"test-ipc-heavy-traffic-deadlock-bug.c",
|
||||
"test-ipc-send-recv.c",
|
||||
"test-ipc.c",
|
||||
"test-loop-alive.c",
|
||||
"test-loop-close.c",
|
||||
"test-loop-configure.c",
|
||||
"test-loop-handles.c",
|
||||
"test-loop-stop.c",
|
||||
"test-loop-time.c",
|
||||
"test-metrics.c",
|
||||
"test-multiple-listen.c",
|
||||
"test-mutexes.c",
|
||||
"test-not-readable-nor-writable-on-read-error.c",
|
||||
"test-not-writable-after-shutdown.c",
|
||||
"test-osx-select.c",
|
||||
"test-pass-always.c",
|
||||
"test-ping-pong.c",
|
||||
"test-pipe-bind-error.c",
|
||||
"test-pipe-close-stdout-read-stdin.c",
|
||||
"test-pipe-connect-error.c",
|
||||
"test-pipe-connect-multiple.c",
|
||||
"test-pipe-connect-prepare.c",
|
||||
"test-pipe-getsockname.c",
|
||||
"test-pipe-pending-instances.c",
|
||||
"test-pipe-sendmsg.c",
|
||||
"test-pipe-server-close.c",
|
||||
"test-pipe-set-fchmod.c",
|
||||
"test-pipe-set-non-blocking.c",
|
||||
"test-platform-output.c",
|
||||
"test-poll-close-doesnt-corrupt-stack.c",
|
||||
"test-poll-close.c",
|
||||
"test-poll-closesocket.c",
|
||||
"test-poll-multiple-handles.c",
|
||||
"test-poll-oob.c",
|
||||
"test-poll.c",
|
||||
"test-process-priority.c",
|
||||
"test-process-title-threadsafe.c",
|
||||
"test-process-title.c",
|
||||
"test-queue-foreach-delete.c",
|
||||
"test-random.c",
|
||||
"test-readable-on-eof.c",
|
||||
"test-ref.c",
|
||||
"test-run-nowait.c",
|
||||
"test-run-once.c",
|
||||
"test-semaphore.c",
|
||||
"test-shutdown-close.c",
|
||||
"test-shutdown-eof.c",
|
||||
"test-shutdown-simultaneous.c",
|
||||
"test-shutdown-twice.c",
|
||||
"test-signal-multiple-loops.c",
|
||||
"test-signal-pending-on-close.c",
|
||||
"test-signal.c",
|
||||
"test-socket-buffer-size.c",
|
||||
"test-spawn.c",
|
||||
"test-stdio-over-pipes.c",
|
||||
"test-strscpy.c",
|
||||
"test-strtok.c",
|
||||
"test-tcp-alloc-cb-fail.c",
|
||||
"test-tcp-bind-error.c",
|
||||
"test-tcp-bind6-error.c",
|
||||
"test-tcp-close-accept.c",
|
||||
"test-tcp-close-after-read-timeout.c",
|
||||
"test-tcp-close-while-connecting.c",
|
||||
"test-tcp-close.c",
|
||||
"test-tcp-close-reset.c",
|
||||
"test-tcp-connect-error-after-write.c",
|
||||
"test-tcp-connect-error.c",
|
||||
"test-tcp-connect-timeout.c",
|
||||
"test-tcp-connect6-error.c",
|
||||
"test-tcp-create-socket-early.c",
|
||||
"test-tcp-flags.c",
|
||||
"test-tcp-oob.c",
|
||||
"test-tcp-open.c",
|
||||
"test-tcp-read-stop.c",
|
||||
"test-tcp-reuseport.c",
|
||||
"test-tcp-read-stop-start.c",
|
||||
"test-tcp-rst.c",
|
||||
"test-tcp-shutdown-after-write.c",
|
||||
"test-tcp-try-write.c",
|
||||
"test-tcp-write-in-a-row.c",
|
||||
"test-tcp-try-write-error.c",
|
||||
"test-tcp-unexpected-read.c",
|
||||
"test-tcp-write-after-connect.c",
|
||||
"test-tcp-write-fail.c",
|
||||
"test-tcp-write-queue-order.c",
|
||||
"test-tcp-write-to-half-open-connection.c",
|
||||
"test-tcp-writealot.c",
|
||||
"test-test-macros.c",
|
||||
"test-thread-affinity.c",
|
||||
"test-thread-equal.c",
|
||||
"test-thread.c",
|
||||
"test-thread-name.c",
|
||||
"test-thread-priority.c",
|
||||
"test-threadpool-cancel.c",
|
||||
"test-threadpool.c",
|
||||
"test-timer-again.c",
|
||||
"test-timer-from-check.c",
|
||||
"test-timer.c",
|
||||
"test-tmpdir.c",
|
||||
"test-tty-duplicate-key.c",
|
||||
"test-tty-escape-sequence-processing.c",
|
||||
"test-tty.c",
|
||||
"test-udp-alloc-cb-fail.c",
|
||||
"test-udp-bind.c",
|
||||
"test-udp-connect.c",
|
||||
"test-udp-connect6.c",
|
||||
"test-udp-create-socket-early.c",
|
||||
"test-udp-dgram-too-big.c",
|
||||
"test-udp-ipv6.c",
|
||||
"test-udp-mmsg.c",
|
||||
"test-udp-multicast-interface.c",
|
||||
"test-udp-multicast-interface6.c",
|
||||
"test-udp-multicast-join.c",
|
||||
"test-udp-multicast-join6.c",
|
||||
"test-udp-multicast-ttl.c",
|
||||
"test-udp-open.c",
|
||||
"test-udp-options.c",
|
||||
"test-udp-send-and-recv.c",
|
||||
"test-udp-send-hang-loop.c",
|
||||
"test-udp-send-immediate.c",
|
||||
"test-udp-sendmmsg-error.c",
|
||||
"test-udp-send-unreachable.c",
|
||||
"test-udp-try-send.c",
|
||||
"test-udp-recv-in-a-row.c",
|
||||
"test-udp-reuseport.c",
|
||||
"test-uname.c",
|
||||
"test-walk-handles.c",
|
||||
"test-watcher-cross-stop.c",
|
||||
};
|
||||
|
||||
const std = @import("std");
|
18
build.zig.zon
Normal file
18
build.zig.zon
Normal file
@ -0,0 +1,18 @@
|
||||
.{
|
||||
.name = "libuv",
|
||||
.version = "1.5.0",
|
||||
.minimum_zig_version = "0.13.0",
|
||||
.dependencies = .{
|
||||
.libuv = .{
|
||||
.url = "git+https://github.com/libuv/libuv?ref=v1.50.0#8fb9cb919489a48880680a56efecff6a7dfb4504",
|
||||
.hash = "12207ac22e5e40afe515b7c319237785113c97ee84a75f7c66c1a0e7cc6e743debeb",
|
||||
},
|
||||
},
|
||||
.paths = .{
|
||||
"build.zig",
|
||||
"build.zig.zon",
|
||||
"LICENSE",
|
||||
"LICENSE-LIBUV",
|
||||
"readme.md",
|
||||
},
|
||||
}
|
42
readme.md
Normal file
42
readme.md
Normal file
@ -0,0 +1,42 @@
|
||||
# libuv
|
||||
|
||||
This is [`libuv`][libuv], packaged for [Zig](https://ziglang.org/).
|
||||
|
||||
## Status
|
||||
|
||||
In theory, the full intersection of platforms supported by libuv and platforms supported by Zig are supported build targets, but the less common targets are not tested.
|
||||
|
||||
Building the unit test executable for linux (and possibly other platforms) does not currently work because the unit test files directly `#include` some of the libuv source files (while also linking to `libuv.a`), and that causes duplicate symbol errors unless the linker command is assembled in a specific order. The zig build system does not enforce a specific order.
|
||||
|
||||
## Usage
|
||||
|
||||
First, update your `build.zig.zon`:
|
||||
|
||||
```sh
|
||||
# Initialize a zig project if you haven't already
|
||||
zig init
|
||||
# replace <refname> with the version you want to use, e.g. 1.50.0
|
||||
zig fetch --save git+https://github.com/allyourcodebase/libuv.git#<refname>
|
||||
```
|
||||
|
||||
You can then import `libuv` in your `build.zig` with:
|
||||
|
||||
```zig
|
||||
const libuv_dep = b.dependency("libuv", .{
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
});
|
||||
your_exe.linkLibrary(libuv_dep.artifact("uv"));
|
||||
```
|
||||
|
||||
## Dependencies
|
||||
|
||||
`libuv` only depends on core operating system libraries (and libc).
|
||||
|
||||
## Zig Version Support Matrix
|
||||
|
||||
| Refname | libuv Version | Zig `0.13` | Zig `0.14.0-dev` |
|
||||
|-----------|----------------|------------|------------------|
|
||||
| | `1.50.0` | ✅ | ✅ |
|
||||
|
||||
[libuv]: https://github.com/libuv
|
Loading…
x
Reference in New Issue
Block a user