This is an almagamation of the mulle-core, mulle-concurrent, mulle-c projects that need not be forced linked. See the constituting projects for documentation, bug reports, pull requests.
The advantages of using mulle-core are:
- compiles faster than two dozens of individual projects
- you only need to link against one library file
#include
statements may remain unchanged or simplify to#include <mulle-core/mulle-core.h>
Add another constituent to the amalgamation with:
mulle-sde dependency add --amalgamated \
--fetchoptions "clibmode=copy" \
--address src/mulle-container-debug \
clib:mulle-c/mulle-container-debug
Then edit mulle-core.h
and add the envelope header to the others.
Constituent | Description |
---|---|
mulle-allocator | 🔄 Flexible C memory allocation scheme |
mulle-buffer | |
mulle-c11 | 🔀 Cross-platform C compiler glue (and some cpp conveniences) |
mulle-container-debug | 🛄 Debugging support for mulle-container |
mulle-container | 🛄 Arrays, hashtables and a queue |
mulle-data | #️⃣ A collection of hash functions |
mulle-http | 🈚 http URL parser |
mulle-rbtree | 🍫 mulle-rbtree organizes data in a red/black tree |
mulle-regex | 📣 Unicode regex library |
mulle-slug | 🐌 Creates URL slugs |
mulle-storage | 🛅 Memory management for tree nodes |
mulle-unicode | 🈚 Unicode ctype like library |
mulle-url | 🈷️ Support for URL parsing |
mulle-utf | 🔤 UTF8-16-32 analysis and manipulation library |
mulle-vararg | ⏪ Access variable arguments in struct layout fashion in C |
mintomic | For more information, see the documentation or the accompanying blog post, Introducing Mintomic. |
mulle-aba | 🚮 A lock-free, cross-platform solution to the ABA problem |
mulle-concurrent | 📶 A lock- and wait-free hashtable (and an array too), written in C |
mulle-fifo | 🐍 mulle-fifo fixed sized producer/consumer FIFOs holding void * |
mulle-linkedlist | 🔂 mulle-linkedlist a wait and lock-free linked list |
mulle-multififo | 🐛 mulle-multififo multi-producer/multi-consumer FIFO holding void * |
mulle-thread | 🔠 Cross-platform thread/mutex/tss/atomic operations in C |
dlfcn-win32 | =========== |
mulle-dlfcn | ♿️ Shared library helper |
mulle-fprintf | 🔢 mulle-fprintf marries mulle-sprintf to stdio.h |
mulle-mmap | 🇧🇿 Memory mapped file access |
mulle-sprintf | 🔢 An extensible sprintf function supporting stdarg and mulle-vararg |
mulle-stacktrace | 👣 Stracktrace support for various OS |
mulle-time | 🕕 Simple time types with arithmetic on timespec and timeval |
Use mulle-sde to add mulle-core to your project:
mulle-sde add github:mulle-core/mulle-core
This library does not include mulle-atinit and mulle-atexit and mulle-testallocator. If you add these libraries, it is important that mulle-core is added before them.
Use mulle-sde to build and install mulle-core and all dependencies:
mulle-sde install --prefix /usr/local \
https://github.com/mulle-core/mulle-core/archive/latest.tar.gz
Download the latest tar or zip archive and unpack it. Then install
mulle-core into /usr/local
with cmake:
cmake -B build \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DCMAKE_PREFIX_PATH=/usr/local \
-DCMAKE_BUILD_TYPE=Release &&
cmake --build build --config Release &&
cmake --install build --config Release
Nat! for Mulle kybernetiK