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>
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 |
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.
There are various methods how to get mulle-core into your project.
One common denominator is that you will
#include <mulle-core/mulle-core.h>
in your sources and link
with -lmulle-core
.
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.
git submodule add https://github.com/mulle-core/mulle-core.git stash/mulle-core
git submodule update --init --recursive
Add this to your CMakeLists.txt
:
add_subdirectory( stash/mulle-core)
target_link_libraries( ${PROJECT_NAME} PRIVATE mulle-core)
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