llvm-project/clang/test/InstallAPI/driver-invalid-options.test
Cyndy Ishida c24efffabb
[InstallAPI] Handle zippered frameworks (#88205)
A zippered framework is a single framework that can be loaded in both
macOS and macatalyst processes. Broadly to InstallAPI, it means the same
interface can represent two separate platforms.

A dylib's symbol table does not distinguish between macOS/macCatalyst.
  `InstallAPI` provides the ability for the tbd file to distinct
symbols between them.
The verifier handles this special logic by tracking all unavailable and
obsoleted APIs in this context and checking against those when
determining dylib symbols with no matching declaration.

* If there exists an available decl for either platform, do not warn.
* If there is no available decl, emit a diagnostic and print the source
location for both decls.
2024-04-11 20:01:55 -07:00

29 lines
1.6 KiB
Plaintext

/// Check non-darwin triple is rejected.
// RUN: not clang-installapi -target x86_64-unknown-unknown %s -o tmp.tbd 2> %t
// RUN: FileCheck --check-prefix INVALID_INSTALLAPI -input-file %t %s
// INVALID_INSTALLAPI: error: unsupported option 'installapi' for target 'x86_64-unknown-unknown'
/// Check that missing install_name is reported.
// RUN: not clang-installapi -target x86_64-apple-ios-simulator %s -o tmp.tbd 2> %t
// RUN: FileCheck --check-prefix INVALID_INSTALL_NAME -input-file %t %s
// INVALID_INSTALL_NAME: error: no install name specified: add -install_name <path>
/// Check invalid verification mode.
// RUN: not clang-installapi -install_name Foo -target arm64-apple-ios13 \
// RUN: --verify-mode=Invalid -o tmp.tbd 2> %t
// RUN: FileCheck --check-prefix INVALID_VERIFY_MODE -input-file %t %s
// INVALID_VERIFY_MODE: error: invalid value 'Invalid' in '--verify-mode=Invalid'
/// Check that invalid sysroot is fatal.
// RUN: not clang-installapi -install_name Foo -target arm64-apple-ios13 \
// RUN: -isysroot /no/such/path -o tmp.tbd 2> %t
// RUN: FileCheck --check-prefix INVALID_ISYSROOT -input-file %t %s
// INVALID_ISYSROOT: error: no such sysroot directory: {{.*}}no/such/path'
/// Check invalid target-variant.
// RUN: not clang-installapi -target x86_64-apple-macosx12 \
// RUN: -darwin-target-variant arm64-apple-ios15-macabi \
// RUN: -install_name tmp.dylib -o tmp.tbd 2> %t
// RUN: FileCheck --check-prefix INVALID_TARGET_VARIANT -input-file %t %s
// INVALID_TARGET_VARIANT: error: no matching target found for target variant 'arm64-apple-ios15-macabi'