This static library provides the required __register_mulle_objc_universe
function for executables, that link against
mulle-objc-runtime
only.
Use this library, if you want to create executables, that only require the mulle-objc-runtime and nothing else. Most projects will link against MulleObjC or the MulleFoundation though, and will use the startup libraries.
Release Version | Release Notes |
---|---|
RELEASENOTES |
The main raison d'être of mulle-objc-runtime-startup as a seperate library is to bequeath the required dependencies mulle-atinit and mulle-atexit for linking with the executable.
Requirement | Release Version | Description |
---|---|---|
mulle-objc-runtime | ⏩ A fast, portable Objective-C runtime written 100% in C11 | |
mulle-atinit | 🤱🏼 Compatibility library for deterministic initializers | |
mulle-atexit | 👼 Compatibility library to fix atexit |
Use mulle-sde to add mulle-objc-runtime-startup 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-runtime-startup
To only add the sources of mulle-objc-runtime-startup with dependency sources use clib:
One common denominator is that you will likely have to add
#include <mulle-objc-runtime-startup/mulle-objc-runtime-startup.h>
to your source files.
clib install --out src/mulle-objc mulle-objc/mulle-objc-runtime-startup
Add -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-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-atinit" \
"https://github.com/mulle-core/mulle-atinit.git" \
"stash/mulle-atinit"
git submodule add -f --name "mulle-atexit" \
"https://github.com/mulle-core/mulle-atexit.git" \
"stash/mulle-atexit"
git submodule add -f --name "mulle-objc-runtime-startup" \
"https://github.com/mulle-objc/mulle-objc-runtime-startup" \
"stash/mulle-objc-runtime-startup"
git submodule update --init --recursive
add_subdirectory( stash/mulle-objc-runtime-startup)
add_subdirectory( stash/mulle-atexit)
add_subdirectory( stash/mulle-atinit)
add_subdirectory( stash/mulle-objc-runtime)
add_subdirectory( stash/mulle-core)
target_link_libraries( ${PROJECT_NAME} PUBLIC mulle-objc-runtime-startup)
target_link_libraries( ${PROJECT_NAME} PUBLIC mulle-atexit)
target_link_libraries( ${PROJECT_NAME} PUBLIC mulle-atinit)
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-runtime-startup and all dependencies:
mulle-sde install --prefix /usr/local \
https://github.com/mulle-objc/mulle-objc-runtime-startup/archive/latest.tar.gz
Install the Requirements and then install mulle-objc-runtime-startup 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