Pack
Pack is a simple serialisation and deserialisation library for C.
Build health:
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.