Skip to content

๐ŸŒ‹ Almagamated library of mulle-core + mulle-concurrent + mulle-c

License

Notifications You must be signed in to change notification settings

mulle-core/mulle-core

Repository files navigation

mulle-core

๐ŸŒ‹ Almagamated library of mulle-core + mulle-concurrent + mulle-c

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>

You are here

Overview

Constituents

Constituent Description
mulle-allocator ๐Ÿ”„ Flexible C memory allocation scheme
mulle-buffer โ†—๏ธ A growable C char array and also a stream
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

Add another constituent to the amalgamation

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.

Add

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.

Add as a dependency with mulle-sde

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.

Add as subproject with cmake and git

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)

Install

Install with mulle-sde

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

Manual Installation

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

Author

Nat! for Mulle kybernetiK

About

๐ŸŒ‹ Almagamated library of mulle-core + mulle-concurrent + mulle-c

Topics

Resources

License

Stars

Watchers

Forks

Languages