aboutsummaryrefslogtreecommitdiffstats

Pack

Pack is a simple serialisation and deserialisation library for C.

Build health:

  • builds.sr.ht status - Alpine
  • builds.sr.ht status - Arch Linux
  • builds.sr.ht status - FreeBSD
  • builds.sr.ht status - OpenBSD

Dependencies

Pack has no runtime dependencies. The following is a list of build dependencies:

  • An implementation of redo
    • Avery Pennarun's do - Works for one-shot builds. Copy it to the source directory, make it executable and run it. For development, one of the other implementations is recommended.
    • Nils Dagsson Moskopp's redo - Tested building and development. Slightly overzealous rebuilds. Performance issues with jobserver.
    • Jonathan de Boyne Pollard's redo - Tested building and development. Bugs with jobserver. Uncommon definition of $2.
    • Avery Pennarun's redo - Tested for building. May have some bugs when used for development.
    • Leah Neukirchen's redo - Tested for building. Overzealous rebuilds but generally very fast.
  • A C11 compiler with GCC style parameters (clang works)
  • POSIX cat, find, rm, sed, sh and tr
  • xargs with support for the -r gnu extension
  • bash 4.4 or newer (parameter expansion transformations)
  • (optional) jq (for generating compile_commands.json)

Compilation

Optionally run ./configure (see ./configure -h for options).

Some build hosts require calling ./configure with -B-lm to pass -lm to the linker for certain math.h functions.

Run redo all to build the library and tests.

Cross Compilation

To cross compile, run ./configure as normal and edit the resulting config.rc to set TCC to the target compiler. Additional flags can be passed via the arrays TCFLAGS, TCPPFLAGS, TLDFLAGS, and TLDLIBS. Host specific flags can be passed via the corresponding H<name> arrays.

For example, to cross compile for windows using i686-w64-mingw32-gcc as the target compiler and clang as the host compiler:

$ CC=clang ./configure
$ echo TCC=i686-w64-mingw32-gcc >>config.rc
$ redo all

Testing

Run ./test to run all the tests.

Installation

Not implemented yet.

Development

Please configure with -w and ensure code compiles cleanly. Be aware that different compiler versions can enable different warnings. If in doubt, ask.

If you use a tool such as clangd which makes use of compile_commands.json then make sure you have jq installed and run ./configure with -f.

Contributing

Please email patches to ~tk/pack-patches@lists.sr.ht (archive).

If you've never used a mailing list for development, please read this.

Please email feature requests to ~tk/pack@todo.sr.ht or use the web interface.

When dealing with any email based communication please follow email etiquette.

In general, stay on topic and respect differences in opinion and philosophy.

Bugs

Bugs are tracked and can be reported here.