llvm/clang/test/InstallAPI/exclusive-passes-platform.test

; RUN: rm -rf %t
; RUN: split-file %s %t
; RUN: sed -e "s|DSTROOT|%/t|g" %t/inputs.json.in > %t/inputs.json
; RUN: yaml2obj %t/Xplatform.yaml -o=%t/Xplatform

// Check that in zippered mode, a successful pass runs in both macos & maccatalyst.
; RUN: clang-installapi %t/inputs.json \
; RUN: --target=x86_64-apple-macos10.15 -darwin-target-variant x86_64-apple-ios13.1-macabi \
; RUN: -Xplatform_ios-macabi -iframework %t/System/iOSSupport/System/Library/Frameworks \
; RUN: -install_name /System/Library/Frameworks/Xplatform.framework/Versions/A/Xplatform \
; RUN: -fdefine-target-os-macros --verify-against=%t/Xplatform --verify-mode=Pedantic \
; RUN: -o Xplatform.tbd  -F%t/Frameworks \
: RUN: -current_version 1 -compatibility_version 1 2>&1 | FileCheck --allow-empty %s\
; RUN: --implicit-check-not warning: --implicit-check-not error:

// A missing header error should be invoked in macos pass because it wasn't given the needed search path.
; RUN: mv %t/Xplatform-macosx.h %t/Frameworks/Xplatform.framework/Headers/Xplatform.h

; RUN: not clang-installapi %t/inputs.json \
; RUN: --target=x86_64-apple-macos10.15 -darwin-target-variant x86_64-apple-ios13.1-macabi \
; RUN: -Xplatform_ios-macabi -iframework %t/System/iOSSupport/System/Library/Frameworks \
; RUN: -install_name /System/Library/Frameworks/Xplatform.framework/Versions/A/Xplatform \
; RUN: -fdefine-target-os-macros --verify-against=%t/Xplatform --verify-mode=Pedantic \
; RUN: -o Xplatform.tbd  -F%t/Frameworks \
: RUN: -current_version 1 -compatibility_version 1 2>&1 | FileCheck -check-prefix=MACOSFAIL %s 

; MACOSFAIL: fatal error: 'IOSMac/IOSMac.h' file not found

;--- Frameworks/Xplatform.framework/Headers/Xplatform.h
#if TARGET_OS_MACCATALYST
#include <IOSMac/IOSMac.h>
#endif

inline int foo() {
  int x = 1;
#if TARGET_OS_MACCATALYST
  x += iOSAPI();
#endif
  return x;
}

extern int bar();

;--- Xplatform-macosx.h
#include <IOSMac/IOSMac.h>
inline int foo() {
  int x = 1;
  return x;
}

extern int bar();

;--- System/iOSSupport/System/Library/Frameworks/IOSMac.framework/Headers/IOSMac.h
extern int iOSAPI();

;--- Xplatform.yaml
--- !mach-o
FileHeader:
  magic:           0xFEEDFACF
  cputype:         0x1000007
  cpusubtype:      0x3
  filetype:        0x6
  ncmds:           16
  sizeofcmds:      968
  flags:           0x100085
  reserved:        0x0
LoadCommands:
  - cmd:             LC_SEGMENT_64
    cmdsize:         232
    segname:         __TEXT
    vmaddr:          0
    vmsize:          32768
    fileoff:         0
    filesize:        32768
    maxprot:         5
    initprot:        5
    nsects:          2
    flags:           0
    Sections:
      - sectname:        __text
        segname:         __TEXT
        addr:            0x4FAD
        size:            11
        offset:          0x4FAD
        align:           0
        reloff:          0x0
        nreloc:          0
        flags:           0x80000400
        reserved1:       0x0
        reserved2:       0x0
        reserved3:       0x0
        content:         554889E5B8010000005DC3
      - sectname:        __unwind_info
        segname:         __TEXT
        addr:            0x4FB8
        size:            72
        offset:          0x4FB8
        align:           2
        reloff:          0x0
        nreloc:          0
        flags:           0x0
        reserved1:       0x0
        reserved2:       0x0
        reserved3:       0x0
        content:         010000001C000000000000001C000000000000001C00000002000000AD4F00003400000034000000B94F00000000000034000000030000000C000100100001000000000000000001
  - cmd:             LC_SEGMENT_64
    cmdsize:         152
    segname:         __DATA
    vmaddr:          32768
    vmsize:          16384
    fileoff:         32768
    filesize:        16384
    maxprot:         3
    initprot:        3
    nsects:          1
    flags:           0
    Sections:
      - sectname:        __objc_imageinfo
        segname:         __DATA
        addr:            0x8000
        size:            8
        offset:          0x8000
        align:           2
        reloff:          0x0
        nreloc:          0
        flags:           0x0
        reserved1:       0x0
        reserved2:       0x0
        reserved3:       0x0
        content:         '0000000040000000'
  - cmd:             LC_SEGMENT_64
    cmdsize:         72
    segname:         __LINKEDIT
    vmaddr:          49152
    vmsize:          16384
    fileoff:         49152
    filesize:        88
    maxprot:         1
    initprot:        1
    nsects:          0
    flags:           0
  - cmd:             LC_ID_DYLIB
    cmdsize:         96
    dylib:
      name:            24
      timestamp:       1
      current_version: 65536
      compatibility_version: 65536
    Content:   '/System/Library/Frameworks/Xplatform.framework/Versions/A/Xplatform'
    ZeroPadBytes:    5
  - cmd:             LC_DYLD_INFO_ONLY
    cmdsize:         48
    rebase_off:      0
    rebase_size:     0
    bind_off:        0
    bind_size:       0
    weak_bind_off:   0
    weak_bind_size:  0
    lazy_bind_off:   0
    lazy_bind_size:  0
    export_off:      49152
    export_size:     16
  - cmd:             LC_SYMTAB
    cmdsize:         24
    symoff:          49184
    nsyms:           2
    stroff:          49216
    strsize:         24
  - cmd:             LC_DYSYMTAB
    cmdsize:         80
    ilocalsym:       0
    nlocalsym:       0
    iextdefsym:      0
    nextdefsym:      1
    iundefsym:       1
    nundefsym:       1
    tocoff:          0
    ntoc:            0
    modtaboff:       0
    nmodtab:         0
    extrefsymoff:    0
    nextrefsyms:     0
    indirectsymoff:  0
    nindirectsyms:   0
    extreloff:       0
    nextrel:         0
    locreloff:       0
    nlocrel:         0
  - cmd:             LC_UUID
    cmdsize:         24
    uuid:            4AA4F126-BD02-359C-B3EF-E53AD399B590
  - cmd:             LC_BUILD_VERSION
    cmdsize:         32
    platform:        1
    minos:           659200
    sdk:             721152
    ntools:          1
    Tools:
      - tool:            3
        version:         46008832
  - cmd:             LC_BUILD_VERSION
    cmdsize:         32
    platform:        6
    minos:           0x00d0100 
    sdk:             851968
    ntools:          1
    Tools:
      - tool:            3
        version:         46008832
  - cmd:             LC_SOURCE_VERSION
    cmdsize:         16
    version:         0
  - cmd:             LC_SEGMENT_SPLIT_INFO
    cmdsize:         16
    dataoff:         49168
    datasize:        8
  - cmd:             LC_LOAD_DYLIB
    cmdsize:         56
    dylib:
      name:            24
      timestamp:       2
      current_version: 14942208
      compatibility_version: 65536
    Content:   '/usr/lib/libobjc.A.dylib'
    ZeroPadBytes:    8
  - cmd:             LC_LOAD_DYLIB
    cmdsize:         56
    dylib:
      name:            24
      timestamp:       2
      current_version: 84687873
      compatibility_version: 65536
    Content:   '/usr/lib/libSystem.B.dylib'
    ZeroPadBytes:    6
  - cmd:             LC_FUNCTION_STARTS
    cmdsize:         16
    dataoff:         49176
    datasize:        8
  - cmd:             LC_DATA_IN_CODE
    cmdsize:         16
    dataoff:         49184
    datasize:        0
LinkEditData:
  ExportTrie:
    TerminalSize:    0
    NodeOffset:      0
    Name:            ''
    Flags:           0x0
    Address:         0x0
    Other:           0x0
    ImportName:      ''
    Children:
      - TerminalSize:    4
        NodeOffset:      8
        Name:            _bar
        Flags:           0x0
        Address:         0x4FAD
        Other:           0x0
        ImportName:      ''
  NameList:
    - n_strx:          2
      n_type:          0xF
      n_sect:          1
      n_desc:          0
      n_value:         20397
    - n_strx:          7
      n_type:          0x1
      n_sect:          0
      n_desc:          512
      n_value:         0
  StringTable:
    - ' '
    - _bar
    - dyld_stub_binder
...

;--- inputs.json.in
{
  "headers": [ 
  {
    "path" : "DSTROOT/Frameworks/Xplatform.framework/Headers/Xplatform.h",
    "type" : "public"
  }
  ],
  "version": "3"
}