Skip to content

▶️ Startup library for mulle-objc-runtime

License

Notifications You must be signed in to change notification settings

mulle-objc/mulle-objc-runtime-startup

Repository files navigation

mulle-objc-runtime-startup

▶️ Startup code for the mulle-objc runtime

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
Mulle kybernetiK tag Build Status RELEASENOTES

Sourcetree

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.

You are here

Overview

Requirements

Requirement Release Version Description
mulle-objc-runtime Mulle kybernetiK tag Build Status ⏩ A fast, portable Objective-C runtime written 100% in C11
mulle-atinit Mulle kybernetiK tag Build Status 🤱🏼 Compatibility library for deterministic initializers
mulle-atexit Mulle kybernetiK tag Build Status 👼 Compatibility library to fix atexit

Add

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:

Legacy adds

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.

Add sources to your project with clib

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).

Add as subproject with cmake and git

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)

Install

Install with mulle-sde

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

Manual Installation

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

Author

Nat! for Mulle kybernetiK