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.

mulle-core is tested to build on the following platforms and compiler matrix:

OS Compiler Flags Note
Ubuntu GCC ย 
Ubuntu GCC ย  Out of source build
Ubuntu GCC -O3
Ubuntu Clang ย 
Ubuntu Clang Debug
Windows MSVC Win32 ย 
Windows MSVC Win64 ย 
Windows GCC ย 
macOS Clang ย 
macOS GCC ย 

The advantages of using mulle-core over the individual projects 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>

Constituents

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

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

Legacy Installation

Download the latest tar or zip archive and unpack it.

Install mulle-core into /usr/local with cmake:

PREFIX_DIR="/usr/local"
cmake -B build                               \
      -DMULLE_SDK_PATH="${PREFIX_DIR}"       \
      -DCMAKE_INSTALL_PREFIX="${PREFIX_DIR}" \
      -DCMAKE_PREFIX_PATH="${PREFIX_DIR}"    \
      -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

Contributors 2

  •  
  •  

Languages

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy