Skip to content

Latest commit

 

History

History
65 lines (54 loc) · 2.85 KB

README.md

File metadata and controls

65 lines (54 loc) · 2.85 KB

libzmq

Zig build system for libzmq.

By default, everything is built barebones, with no libraries used. No auto-configuration is performed (yet?).

Compiling tested for Windows, Linux, OS X, all x86_64, with 0.14.0-dev.2243+9ebce51e1.

Building

You'll likely want to configure some options, see below.

$ zig build

The artifacts will be ready to install in the zig-out directory.

Using from Zig

  • For a more friendly binding to libzmq, see zlzmq.
  • For a more high-level API, see zzmq.
$ zig fetch --save 'git+https://github.com/notcancername/libzmq#master'
const libzmq_dep = b.dependency("libzmq", .{ .target = target, .optimize = .optimize, .shared = false });
const libzmq = libzmq_dep.artifact("libzmq");
exe.linkLibrary(libzmq);

Build options

General

  • -Dstatic=true: Default. Build a static library.
  • -Dshared=true: Default. Build a shared library.
  • -Dtsan=true: Use ThreadSanitizer.
  • -Dubsan=true: Use AddressSanitizer.

ZMQ features

  • -Dsodium_close_randombytes=true: Default. Automatically close libsodium randombytes. Not threadsafe without getrandom.
  • -Dmilitant=true: Default. Enable Militant assertions.
  • -Dtipc=true: Enable TIPC. Doesn't seem to work for Windows.
  • -Ddraft=true: Enable draft features.
  • -Dcurve=true: Enable ZMQ_CURVE support. Requires -Dsodium=true.
  • -Dws=true: WebSocket support. Draft.
  • -Dwss=true: WebSocket over TLS support. Draft. Requires -Dgnutls=true.
  • -Dradix_tree=true: Radix tree to manage subscriptions. Draft.
  • -Dpoller: Select a poller implementation.

Libraries

  • -Dpgm=true: Use OpenPGM and enable the PGM transport.
  • -Dpgm_name: Set the name of the OpenPGM library to use.
  • -Dnorm=true: Use NORM and enable the NORM transport.
  • -Dnss=true: Use libnss for SHA-2 instead of internal code.
  • -Dnss_name: Set the name of the NSS library to use.
  • -Dsodium=true: Use libsodium for CURVE authentication.
  • -Dvendor_sodium=true: Link a self-built static library instead of linking the system library. This is not recommended for security, as it is impossible to update the library, but it may be convenient.
  • -Dgnutls=true: Use GnuTLS for secure WebSockets.
  • -Dgssapi_krb5=true: Use libgssapi_krb5 for GSSAPI authentication.
  • -Dlibbsd=true: Use libbsd for strlcpy.
  • -Dvmci=true Use VMCI.

All libraries have _lib_dir and _inc_dir options, which you may use to set the path to the library and header files respectively.