mulle-objc-runtime, technically speaking
The basis of everything is the mulle-objc-runtime. The runtime is written in C and actually doesn’t need the mulle-clang compiler.
Required Toolset
mulle-bootstrap
The dependencies are managed with mulle-bootstrap. If you clone the mulle-objc-runtime repository, mulle-bootstrap will fetch and build it’s dependencies (e.g. mulle_allocator).
git
git is used by mulle-bootstrap to download the dependencies.
cmake (make)
cmake is a cross-platform Makefile generator. It is used instead of autoconf because it is somewhat easier to use and is available on more platforms (Windows).
gcc/clang
A standard C11 compiler is needed to compile mulle-thread which is the most problematic library. All other libraries should compile with pretty much any C compiler.
Required Libraries
Library | Use |
---|---|
mulle-thread | an abstraction for atomicity and thread. In most systems this is a wrapper for C11 <stdatomic.h> and <stdthread.h> |
mulle-allocator | an abstraction for memory management. In most cases this is a wrapper for <stdlib.h> malloc/calloc/free |
mulle-concurrent | concurrent (lock-free, wait-free) array and hashtable |
mulle-aba | memory deallocator for concurrent data structures |
mulle-vararg | a variable argument passing scheme in C |
Porting considerations
mulle-clang is based on clang. It should be at the same version as the
current clang, but minimally it is clang 3.8. clang 3.8 has support
for <stdatomic.h>
and <stdthreads.h>
so the next thoughts should be a
non-issue. (But you never know)
- If you don’t have
<stdthreads.h>
, mulle_thread can use<pthreads.h>
. You may need to#ifdef
this according to your platform. - If you don’t have
<stdatomic.h>
, mulle_thread can use mintomic. This doesn’t work for ARM though.
Post a comment
All comments are held for moderation; basic HTML formatting accepted.