tapi-installapi(1)

NAME
tapi-installapi - Create a text-based stub file by scanning the header files

SYNOPSIS
tapi installapi [options] <directory>

DESCRIPTION

The installapi command creates a text-based stub file (.tbd) by parsing the header files that are associated with a framework/dynamic library. The headers are parsed per default in Objective-C syntax mode. C++ support is still experimental.

REQUIRED OPTIONS

-target <triple>
    Specifies the architecture, platform, and deployment target to use for parsing the header files. At least one target option must be specified. The <triple> is the same as the one that is used by clang and has the general format <arch>-<vendor>-<system>-<abi>. The architecture <arch> specifies the architecture slice (for example 'x86_64' or 'arm64'). The only supported vendor by this tool is 'apple'. The system encodes the platform and deployment target. The abi is optional and the only supported value is 'simulator'. Examples:
    x86_64-apple-macosx10.14 - creates an x86_64 architecture slice for macOS with a deployment target of 10.14.
    arm64-apple-ios12.0 - creates an arm64 architecture slice for iOS with a deployment target of 12.0.
    x86_64-apple-ios12.0-simulator - creates an x86_64 architecture slice for the iOS simulator with a deployment target of 12.0.

-install_name <path>
    Sets an internal "install path" (LC_ID_DYLIB) in a dynamic library.

COMMON OPTIONS

-ObjC
    Treat source input files as Objective-C inputs (default).

-ObjC++
    Treat source input files as Objective-C++ inputs.

-x <language>
    Treat subsequent input files as having type <language>. Supported values for language are c, c++, objective-c, and objective-c++.

-std=<value>
    Language standard to compile for.

-current_version <value>
    Specifies the current version number of the library.

-compatibility_version <value>
    Specifies the compatibility version number of the library.

-D <value>
-U <value>
    Define/undefine macro.

-isysroot <directory>
    Specifies the path to the SDK directory.

-I <value>
    Add directory to include search path.

-iframework <value>
    Add directory to system frameworks search path. The use of -Xplatform_<platform> before the option limits the effect to the provided platform.

-L <value>
    Add directory to the library search path.

-F <value>
    Add directory to framework include search path.

--verify-mode=<value>
    Specify the severity of the validation. Supported values are ErrorsOnly, ErrorsAndWarnings, and Pedantic.

-verify-against <value>
    Verify the specified dynamic library/framework against the headers.

-o <file>
    Write output to <file>.

--demangle
    Demangle C++ symbols when printing warnings and errors.

--filelist=<path>
    The specified file (JSON) contains a list of headers to parse.

--help
    Prints the list of options.

RARELY USED OPTIONS

-allowable_client <value>
    Restricts what can link against the dynamic library being created. Per default this option applies to all provided architectures. The use of -Xarch_<arch> before the option limits the effect to the provided architecture <arch>.

-reexport_framework <framework_name>
    Specifies that all the symbols in that framework should be available to clients linking to the library being created. Per default this option applies to all provided architectures. The use of -Xarch_<arch> before the option limits the effect to the provided architecture <arch>.

-reexport_library <path_to_library>
    Specifies that all the symbols in that library should be available to clients linking to the library being created. Per default this option applies to all provided architectures. The use of -Xarch_<arch> before the option limits the effect to the provided architecture <arch>.

-reexport_l<name>
    Behaves the same as -reexport_library but searchs for name as libname.dylib or libname.a in the library search paths.

-umbrella <framework_name>
    Specifies that the dylib being linked is re-exported through an umbrella framework of the specified name.

-fno-rtti
    Disable generation of rtti information.

-fprofile-instr-generate
    Add extra symbols for InstallAPI that are created by code coverage.

-extra-public-header <path>
    Add additional public header file/directory for parsing.

-extra-private-header <path>
    Add additional private header file/directory for parsing.

-exclude-public-header <glob>
    Exclude public headers that match the glob from parsing.

-exclude-private-header <glob>
    Exclude private header that match the glob from parsing.

-fapplication-extension
    Restrict code to those available for App Extensions.

-ferror-limit <N>
    Set the maximum number of errors to emit before stopping (0 = no limit).

-alias_list <path>
    The specified file contains a list of aliases. The symbol name and its alias are on one line, separated by whitespace. Lines starting with # are ignored. Per default this option applies to all provided architectures. The use of -Xarch_<arch> before the option limits the effect to the provided architecture <arch>.

-swift-installapi-interface <path>
    The specified path is to an intermediate tapi output file used to account for and ignoring symbols generated from an earlier swift invocation within a build for final api verification. Multiple intermediate tapi output files can be provided in the same invocation but must be for the same dylib and different targets.

DEPRECATED OPTIONS

-arch <architecture>
    Specifies the architectures to use for parsing the headers. At least one architecture must be specified. This option has been replaced by -target option.

-macosx_version_min <value>
-ios_version_min <value>
-watchos_version_min <value>
-tvos_version_min <value>
    This is set to indicate the oldest platform version that that the output is to be used on. This option has been replaced by the -target option.

ENVIRONMENT VARIABLES

MACOSX_DEPLOYMENT_TARGET
IPHONEOS_DEPLOYMENT_TARGET
TVOS_DEPLOYMENT_TARGET
WATCHOS_DEPLOYMENT_TARGET
    This is set to indicate the oldest platform version that that the output is to be used on. See also -macosx_version_min, -ios_version_min, -watchos_version_min, or -tvos_version_min. These environment variables are ignored if any of the minimum deployment targets or the -target option have been specified on the command line.

LD_NO_ENCRYPT
LD_APPLICATION_EXTENSION_SAFE
    Defining either of these environment variables has the same effect as specifying -fapplication-extension on the command line. These enironment variables are ignored if -fapplication-extension or -fno-application-extension are specified on the command line.

SEE ALSO
tapi(1), ld(1)