TAPI is a Text-based Application Programming Interface. It replaces the Mach-O Dynamic Library Stub files in Apple's SDKs to reduce SDK size even further.
The text-based dynamic library stub file format (.tbd) is a human readable and editable YAML text file. The TAPI projects uses the LLVM parser to read those files and provides this functionality to the linker as a dynamic library.
TAPI is a CLANG project and requires the LLVM and CLANG sources to
compile. This version is supported to build against https://github.com/apple/llvm-project/tree/swift-DEVELOPMENT-SNAPSHOT-2023-09-05-a. This is tagged at 2b5ff47e44b059c03de5779479d01a133ab4d581
.
The source root directory should be placed along side CLANG and LLVM in project structure.
Create a separate build directory and configure the project with CMake:
cmake -G Ninja -C <src_dir>/tapi/cmake/caches/apple-tapi.cmake -DCMAKE_INSTALL_PREFIX=<install_dir> -DLLVM_ENABLE_PROJECTS="clang;tapi" <src_dir>/llvm
The CMake cache file defines most of the settings for you, such as enabling LTO, etc. It also specifies the distribution components to include all the files needed for TAPI.
To build and install the TAPI project invoke:
ninja install-distribution
in the build directory.