🍏 Compatibility layer with Apple Objective-C runtime functions
This library maps
Apple runtime
functions to their mulle-objc counterparts.
This makes porting of existing programs that use Apple runtime functions easier.
If you can get by with the limited set of functions, these functions are
preferable to use over their mulle-objc counterparts for the sake of portability
and familiarity.
Release Version | Release Notes |
---|---|
RELEASENOTES |
This library
objc_msgSend
uses the mulle-objc MetaABI and therefore is only compatible in the case, where there is only one pointer sized parameter and a pointer sized return value.Requirement | Release Version | Description |
---|---|---|
MulleObjC | 💎 A collection of Objective-C root classes for mulle-objc |
Use mulle-sde to add mulle-objc-compat to your project.
As long as your sources are using #include "include-private.h"
and your headers use #include "include.h"
, there will nothing more to do:
mulle-sde add github:mulle-objc/mulle-objc-compat
To only add the sources of mulle-objc-compat with dependency
sources use clib:
One common denominator is that you will likely have to add#include <mulle-objc-compat/mulle-objc-compat.h>
to your source files.
clib install --out src/mulle-objc mulle-objc/mulle-objc-compat
Add -isystem src/mulle-objc
to your CFLAGS
and compile all the
sources that were downloaded with your project. (In cmake addinclude_directories( BEFORE SYSTEM src/mulle-objc)
to your CMakeLists.txt
file).
git submodule add -f --name "mulle-core" \
"https://github.com/mulle-core/mulle-core.git" \
"stash/mulle-core"
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 "mulle-objc-compat" \
"https://github.com/mulle-objc/mulle-objc-compat" \
"stash/mulle-objc-compat"
git submodule update --init --recursive
add_subdirectory( stash/mulle-objc-compat)
add_subdirectory( stash/mulle-objc-debug)
add_subdirectory( stash/mulle-objc-runtime)
add_subdirectory( stash/mulle-core)
target_link_libraries( ${PROJECT_NAME} PUBLIC mulle-objc-compat)
target_link_libraries( ${PROJECT_NAME} PUBLIC mulle-objc-debug)
target_link_libraries( ${PROJECT_NAME} PUBLIC mulle-objc-runtime)
target_link_libraries( ${PROJECT_NAME} PUBLIC mulle-core)
Use mulle-sde to build and install mulle-objc-compat and all dependencies:
mulle-sde install --prefix /usr/local \
https://github.com/mulle-objc/mulle-objc-compat/archive/latest.tar.gz
Install the Requirements and then
install mulle-objc-compat 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