MulleObjC supplies the most basic runtime components like NSObject or NSThread
to build a foundation on top of it. MulleObjC depends on standard C libraries
only and for instance not on <unistd.h>.
| Release Version | Release Notes | AI Documentation |
|---|---|---|
| RELEASENOTES | DeepWiki for MulleObjC |
- NSAutoreleasePool - garbage collection
- NSObject - the root class of everything
- NSInvocation - method call serialization
- NSMethodSignature - method description
- NSProxy - the other root class of everything :=)
- NSThread - threads
- NSCoding - object serialization
- NSCopying - object copying
- NSFastEnumeration - support for
for ... inloops - NSLocking - support for
for ... inloops - NSObject - for objects that don't want to behave like NSObject but can't be them
- MulleObjCClassCluster - enables classes to act as class clusters
- MulleObjCException - enabled a class to act as an exception
- MulleObjCRuntimeObject - documents the minimum required id superset
- MulleObjCSingleton - enables classes to produce singletons
- MulleObjCTaggedPointer - enables classes to use tagged pointers
mulle_printfand variants
It does all the interfacing with the mulle-objc runtime. Any library code above MulleObjC ideally, should not be using the mulle-objc runtime directly. Creating a foundation on top of mulle-objc without using MulleObjC is a foolhardy endeavor IMO.
MulleObjC must be compiled with the mulle-clang compiler, or a compiler which supports the metaABI required for the mulle-objc runtime.
| Requirement | Release Version | Description |
|---|---|---|
| mulle-objc-runtime | β© A fast, portable Objective-C runtime written 100% in C11 | |
| mulle-objc-debug | π Debug support for the mulle-objc-runtime | |
| mulle-objc-cc | β© make mulle-clang the default Objective-C compiler | |
| mulle-objc-list | π Lists mulle-objc runtime information contained in executables. |
Use mulle-sde to add MulleObjC to your project.
As long as your sources are using #import "import-private.h" and your headers use #import "import.h", there will nothing more to do:
mulle-sde add github:mulle-objc/MulleObjCTo only add the sources of MulleObjC with all the sources of its dependencies replace "github:" with clib::
One common denominator is that you will likely have to add
#import <MulleObjC/MulleObjC.h> to your source files.
clib install --out src/mulle-objc mulle-objc/MulleObjCAdd -isystem src/mulle-objc to your CFLAGS and compile all the
sources that were downloaded with your project. (In cmake add
include_directories( BEFORE SYSTEM src/mulle-objc) to your CMakeLists.txt
file).
git submodule add -f --name "mulle-objc-runtime" \
"https://github.com/mulle-objc/mulle-objc-runtime.git" \
"stash/mulle-objc-runtime"
git submodule add -f --name "mulle-objc-debug" \
"https://github.com/mulle-objc/mulle-objc-debug.git" \
"stash/mulle-objc-debug"
git submodule add -f --name "MulleObjC" \
"https://github.com/mulle-objc/MulleObjC" \
"stash/MulleObjC"
git submodule update --init --recursiveadd_subdirectory( stash/MulleObjC)
add_subdirectory( stash/mulle-objc-debug)
add_subdirectory( stash/mulle-objc-runtime)
target_link_libraries( ${PROJECT_NAME} PUBLIC MulleObjC)
target_link_libraries( ${PROJECT_NAME} PUBLIC mulle-objc-debug)
target_link_libraries( ${PROJECT_NAME} PUBLIC mulle-objc-runtime)Use mulle-sde to build and install MulleObjC and all dependencies:
mulle-sde install --prefix /usr/local \
https://github.com/mulle-objc/MulleObjC/archive/latest.tar.gzInstall all requirements
| Requirements | Description |
|---|---|
| mulle-objc-runtime | β© A fast, portable Objective-C runtime written 100% in C11 |
| mulle-objc-debug | π Debug support for the mulle-objc-runtime |
| mulle-objc-cc | β© make mulle-clang the default Objective-C compiler |
| mulle-objc-list | π Lists mulle-objc runtime information contained in executables. |
Download the latest tar or zip archive and unpack it.
Install MulleObjC 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 ReleaseNat! for Mulle kybernetiK