The Link task, which is required for the unmanaged platforms, Cocoa and Island only, is used to post-process the compiler output, which is in form of "object' files, into the finished. This may include combining the binary with any referenced static libraries.
Linking is only required for non-Static Library projects on all Cocoa and Island sub-platforms. On Cocoa, the
ElementsMergeToffee task might be additionally used to then merge different architectures into a single "fat" binary.
- Implemented in
ElementsLink, runs once per project.
As it runs, the task loops over all active targets, and runs the appropriate platform-specific subtasks to perform the reference resolution, for Cocoa or Island targets.
For Echoes and Cooper targets, no linking phase is needed, so this task is a no-op, there.
CompilerOutput-*objects (per architecture and device)
On success, new
LinkerOutput-* objects will be created, per architecture (Cocoa and Island) and Device (Cocoa only).
The result of linking resolving is cached in
Linker-*.caches, per architecture (Cocoa and Island) and Device (Cocoa only), subject to the date of the project file and the compiler input.