1; RUN: rm -rf %t 2; RUN: split-file %s %t 3; RUN: sed -e "s|DSTROOT|%/t|g" %t/inputs.json.in > %t/inputs.json 4 5; RUN: yaml2obj %t/Umbrella.yaml -o %t/Umbrella 6; RUN: mkdir -p %t/System/Library/Frameworks/Bar.framework 7; RUN: yaml2obj %t/Bar.yaml -o %t/System/Library/Frameworks/Bar.framework/Bar 8 9; RUN: clang-installapi -target x86_64-apple-macosx13 -install_name \ 10; RUN: /System/Library/Frameworks/Umbrella3.framework/Versions/A/Umbrella3 \ 11; RUN: -current_version 1 -compatibility_version 1 \ 12; RUN: --verify-against=%t/Umbrella \ 13; RUN: -F %t/System/Library/Frameworks -L %t/usr/lib \ 14; RUN: %t/inputs.json --verify-mode=Pedantic \ 15; RUN: -reexport_framework Foo -reexport_framework Bar -reexport-lBaz \ 16; RUN: -o %t/Umbrella.tbd 2>&1 | FileCheck -allow-empty %s 17; RUN: llvm-readtapi -compare %t/Umbrella.tbd %t/expected.tbd 2>&1 | FileCheck -allow-empty %s 18 19// Checks that one of the reexported frameworks found earlier doesn't resolve 20// a missing export from a declaration. 21; RUN: not clang-installapi -target x86_64-apple-macosx13 -install_name \ 22; RUN: /System/Library/Frameworks/Umbrella3.framework/Versions/A/Umbrella3 \ 23; RUN: -current_version 1 -compatibility_version 1 \ 24; RUN: --verify-against=%t/Umbrella \ 25; RUN: %t/inputs.json -F %t/BadFoo \ 26; RUN: -F %t/System/Library/Frameworks -L %t/usr/lib \ 27; RUN: --verify-mode=ErrorsOnly \ 28; RUN: -reexport_framework Foo -reexport_framework Bar -reexport-lBaz \ 29; RUN: -o %t/Umbrella.tbd 2>&1 | FileCheck %s --check-prefix MISSING_SYMBOL 30 31; MISSING_SYMBOL: error: declaration has external linkage, but dynamic library doesn't have symbol 'foo' 32; MISSING_SYMBOL-NEXT: extern int foo(); 33 34 35; CHECK-NOT: error 36; CHECK-NOT: warning 37 38;--- System/Library/Frameworks/Umbrella.framework/Headers/Bar.h 39extern int bar(); 40 41;--- System/Library/Frameworks/Umbrella.framework/Headers/Baz.h 42extern int baz(); 43 44;--- System/Library/Frameworks/Umbrella.framework/Headers/Foo.h 45extern int foo(); 46 47;--- System/Library/Frameworks/Umbrella.framework/Headers/Umbrella.h 48#import <Umbrella/Bar.h> 49#import <Umbrella/Baz.h> 50#import <Umbrella/Foo.h> 51 52;--- inputs.json.in 53{ 54 "headers": [ { 55 "path" : "DSTROOT/System/Library/Frameworks/Umbrella.framework/Headers/Bar.h", 56 "type" : "public" 57 }, 58 { 59 "path" : "DSTROOT/System/Library/Frameworks/Umbrella.framework/Headers/Baz.h", 60 "type" : "public" 61 }, 62 { 63 "path" : "DSTROOT/System/Library/Frameworks/Umbrella.framework/Headers/Umbrella.h", 64 "type" : "public" 65 }, 66 { 67 "path" : "DSTROOT/System/Library/Frameworks/Umbrella.framework/Headers/Foo.h", 68 "type" : "public" 69 } 70 ], 71 "version": "3" 72} 73 74;--- Umbrella.yaml 75--- !mach-o 76FileHeader: 77 magic: 0xFEEDFACF 78 cputype: 0x1000007 79 cpusubtype: 0x3 80 filetype: 0x6 81 ncmds: 18 82 sizeofcmds: 1184 83 flags: 0x85 84 reserved: 0x0 85LoadCommands: 86 - cmd: LC_SEGMENT_64 87 cmdsize: 152 88 segname: __TEXT 89 vmaddr: 0 90 vmsize: 12288 91 fileoff: 0 92 filesize: 12288 93 maxprot: 5 94 initprot: 5 95 nsects: 1 96 flags: 0 97 Sections: 98 - sectname: __text 99 segname: __TEXT 100 addr: 0x24C0 101 size: 0 102 offset: 0x24C0 103 align: 0 104 reloff: 0x0 105 nreloc: 0 106 flags: 0x80000000 107 reserved1: 0x0 108 reserved2: 0x0 109 reserved3: 0x0 110 content: '' 111 - cmd: LC_SEGMENT_64 112 cmdsize: 152 113 segname: __DATA_CONST 114 vmaddr: 12288 115 vmsize: 4096 116 fileoff: 12288 117 filesize: 4096 118 maxprot: 3 119 initprot: 3 120 nsects: 1 121 flags: 16 122 Sections: 123 - sectname: __objc_imageinfo 124 segname: __DATA_CONST 125 addr: 0x3000 126 size: 8 127 offset: 0x3000 128 align: 0 129 reloff: 0x0 130 nreloc: 0 131 flags: 0x0 132 reserved1: 0x0 133 reserved2: 0x0 134 reserved3: 0x0 135 content: '0000000040000000' 136 - cmd: LC_SEGMENT_64 137 cmdsize: 72 138 segname: __LINKEDIT 139 vmaddr: 16384 140 vmsize: 48 141 fileoff: 16384 142 filesize: 48 143 maxprot: 1 144 initprot: 1 145 nsects: 0 146 flags: 0 147 - cmd: LC_DYLD_INFO_ONLY 148 cmdsize: 48 149 rebase_off: 0 150 rebase_size: 0 151 bind_off: 0 152 bind_size: 0 153 weak_bind_off: 0 154 weak_bind_size: 0 155 lazy_bind_off: 0 156 lazy_bind_size: 0 157 export_off: 0 158 export_size: 0 159 - cmd: LC_SYMTAB 160 cmdsize: 24 161 symoff: 16392 162 nsyms: 1 163 stroff: 16408 164 strsize: 24 165 - cmd: LC_DYSYMTAB 166 cmdsize: 80 167 ilocalsym: 0 168 nlocalsym: 0 169 iextdefsym: 0 170 nextdefsym: 0 171 iundefsym: 0 172 nundefsym: 1 173 tocoff: 0 174 ntoc: 0 175 modtaboff: 0 176 nmodtab: 0 177 extrefsymoff: 0 178 nextrefsyms: 0 179 indirectsymoff: 0 180 nindirectsyms: 0 181 extreloff: 0 182 nextrel: 0 183 locreloff: 0 184 nlocrel: 0 185 - cmd: LC_ID_DYLIB 186 cmdsize: 96 187 dylib: 188 name: 24 189 timestamp: 0 190 current_version: 65536 191 compatibility_version: 65536 192 Content: '/System/Library/Frameworks/Umbrella3.framework/Versions/A/Umbrella3' 193 ZeroPadBytes: 5 194 - cmd: LC_UUID 195 cmdsize: 24 196 uuid: 4C4C44AE-5555-3144-A1D3-33A5C6F7B36A 197 - cmd: LC_BUILD_VERSION 198 cmdsize: 32 199 platform: 1 200 minos: 851968 201 sdk: 983040 202 ntools: 1 203 Tools: 204 - tool: 4 205 version: 1245184 206 - cmd: LC_LOAD_DYLIB 207 cmdsize: 80 208 dylib: 209 name: 24 210 timestamp: 0 211 current_version: 65536 212 compatibility_version: 65536 213 Content: '/System/Library/Frameworks/Foo.framework/Versions/A/Foo' 214 ZeroPadBytes: 1 215 - cmd: LC_REEXPORT_DYLIB 216 cmdsize: 80 217 dylib: 218 name: 24 219 timestamp: 0 220 current_version: 0 221 compatibility_version: 0 222 Content: '/System/Library/Frameworks/Foo.framework/Versions/A/Foo' 223 ZeroPadBytes: 1 224 - cmd: LC_LOAD_DYLIB 225 cmdsize: 80 226 dylib: 227 name: 24 228 timestamp: 0 229 current_version: 65536 230 compatibility_version: 65536 231 Content: '/System/Library/Frameworks/Bar.framework/Versions/A/Bar' 232 ZeroPadBytes: 1 233 - cmd: LC_REEXPORT_DYLIB 234 cmdsize: 80 235 dylib: 236 name: 24 237 timestamp: 0 238 current_version: 0 239 compatibility_version: 0 240 Content: '/System/Library/Frameworks/Bar.framework/Versions/A/Bar' 241 ZeroPadBytes: 1 242 - cmd: LC_LOAD_DYLIB 243 cmdsize: 48 244 dylib: 245 name: 24 246 timestamp: 0 247 current_version: 65536 248 compatibility_version: 65536 249 Content: '/usr/lib/libBaz.1.dylib' 250 ZeroPadBytes: 1 251 - cmd: LC_REEXPORT_DYLIB 252 cmdsize: 48 253 dylib: 254 name: 24 255 timestamp: 0 256 current_version: 0 257 compatibility_version: 0 258 Content: '/usr/lib/libBaz.1.dylib' 259 ZeroPadBytes: 1 260 - cmd: LC_LOAD_DYLIB 261 cmdsize: 56 262 dylib: 263 name: 24 264 timestamp: 0 265 current_version: 88539136 266 compatibility_version: 65536 267 Content: '/usr/lib/libSystem.B.dylib' 268 ZeroPadBytes: 6 269 - cmd: LC_FUNCTION_STARTS 270 cmdsize: 16 271 dataoff: 16384 272 datasize: 8 273 - cmd: LC_DATA_IN_CODE 274 cmdsize: 16 275 dataoff: 16392 276 datasize: 0 277LinkEditData: 278 NameList: 279 - n_strx: 2 280 n_type: 0x1 281 n_sect: 0 282 n_desc: 1024 283 n_value: 0 284 StringTable: 285 - ' ' 286 - dyld_stub_binder 287 - '' 288 - '' 289 - '' 290 - '' 291 - '' 292... 293 294;--- System/Library/Frameworks/Foo.framework/Foo.tbd 295{ 296 "main_library": { 297 "exported_symbols": [ 298 { 299 "text": { 300 "global": [ 301 "_foo" 302 ] 303 } 304 } 305 ], 306 "flags": [ 307 { 308 "attributes": [ 309 "not_app_extension_safe" 310 ] 311 } 312 ], 313 "install_names": [ 314 { 315 "name": "/System/Library/Frameworks/Foo.framework/Versions/A/Foo" 316 } 317 ], 318 "target_info": [ 319 { 320 "min_deployment": "13", 321 "target": "x86_64-macos" 322 } 323 ] 324 }, 325 "tapi_tbd_version": 5 326} 327 328;--- Bar.yaml 329--- !mach-o 330FileHeader: 331 magic: 0xFEEDFACF 332 cputype: 0x1000007 333 cpusubtype: 0x3 334 filetype: 0x6 335 ncmds: 12 336 sizeofcmds: 912 337 flags: 0x100085 338 reserved: 0x0 339LoadCommands: 340 - cmd: LC_SEGMENT_64 341 cmdsize: 312 342 segname: __TEXT 343 vmaddr: 0 344 vmsize: 8192 345 fileoff: 0 346 filesize: 8192 347 maxprot: 5 348 initprot: 5 349 nsects: 3 350 flags: 0 351 Sections: 352 - sectname: __text 353 segname: __TEXT 354 addr: 0xBB0 355 size: 8 356 offset: 0xBB0 357 align: 4 358 reloff: 0x0 359 nreloc: 0 360 flags: 0x80000400 361 reserved1: 0x0 362 reserved2: 0x0 363 reserved3: 0x0 364 content: 554889E531C05DC3 365 - sectname: __unwind_info 366 segname: __TEXT 367 addr: 0xBB8 368 size: 4152 369 offset: 0xBB8 370 align: 2 371 reloff: 0x0 372 nreloc: 0 373 flags: 0x0 374 reserved1: 0x0 375 reserved2: 0x0 376 reserved3: 0x0 377 content: 010000001C000000010000002000000000000000200000000200000000000001B00B00003800000038000000B80B00000000000038000000030000000C0001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 378 - sectname: __eh_frame 379 segname: __TEXT 380 addr: 0x1BF0 381 size: 24 382 offset: 0x1BF0 383 align: 3 384 reloff: 0x0 385 nreloc: 0 386 flags: 0x6000000B 387 reserved1: 0x0 388 reserved2: 0x0 389 reserved3: 0x0 390 content: 1400000000000000017A520001781001100C070890010000 391 - cmd: LC_SEGMENT_64 392 cmdsize: 152 393 segname: __DATA_CONST 394 vmaddr: 8192 395 vmsize: 4096 396 fileoff: 8192 397 filesize: 4096 398 maxprot: 3 399 initprot: 3 400 nsects: 1 401 flags: 16 402 Sections: 403 - sectname: __objc_imageinfo 404 segname: __DATA_CONST 405 addr: 0x2000 406 size: 8 407 offset: 0x2000 408 align: 0 409 reloff: 0x0 410 nreloc: 0 411 flags: 0x0 412 reserved1: 0x0 413 reserved2: 0x0 414 reserved3: 0x0 415 content: '0000000040000000' 416 - cmd: LC_SEGMENT_64 417 cmdsize: 72 418 segname: __LINKEDIT 419 vmaddr: 12288 420 vmsize: 80 421 fileoff: 12288 422 filesize: 80 423 maxprot: 1 424 initprot: 1 425 nsects: 0 426 flags: 0 427 - cmd: LC_DYLD_INFO_ONLY 428 cmdsize: 48 429 rebase_off: 0 430 rebase_size: 0 431 bind_off: 0 432 bind_size: 0 433 weak_bind_off: 0 434 weak_bind_size: 0 435 lazy_bind_off: 0 436 lazy_bind_size: 0 437 export_off: 12288 438 export_size: 16 439 - cmd: LC_SYMTAB 440 cmdsize: 24 441 symoff: 12312 442 nsyms: 2 443 stroff: 12344 444 strsize: 24 445 - cmd: LC_DYSYMTAB 446 cmdsize: 80 447 ilocalsym: 0 448 nlocalsym: 0 449 iextdefsym: 0 450 nextdefsym: 1 451 iundefsym: 1 452 nundefsym: 1 453 tocoff: 0 454 ntoc: 0 455 modtaboff: 0 456 nmodtab: 0 457 extrefsymoff: 0 458 nextrefsyms: 0 459 indirectsymoff: 0 460 nindirectsyms: 0 461 extreloff: 0 462 nextrel: 0 463 locreloff: 0 464 nlocrel: 0 465 - cmd: LC_ID_DYLIB 466 cmdsize: 80 467 dylib: 468 name: 24 469 timestamp: 0 470 current_version: 65536 471 compatibility_version: 65536 472 Content: '/System/Library/Frameworks/Bar.framework/Versions/A/Bar' 473 ZeroPadBytes: 1 474 - cmd: LC_UUID 475 cmdsize: 24 476 uuid: 4C4C4415-5555-3144-A11E-3C68D85CC061 477 - cmd: LC_BUILD_VERSION 478 cmdsize: 32 479 platform: 1 480 minos: 851968 481 sdk: 983040 482 ntools: 1 483 Tools: 484 - tool: 4 485 version: 1245184 486 - cmd: LC_LOAD_DYLIB 487 cmdsize: 56 488 dylib: 489 name: 24 490 timestamp: 0 491 current_version: 88539136 492 compatibility_version: 65536 493 Content: '/usr/lib/libSystem.B.dylib' 494 ZeroPadBytes: 6 495 - cmd: LC_FUNCTION_STARTS 496 cmdsize: 16 497 dataoff: 12304 498 datasize: 8 499 - cmd: LC_DATA_IN_CODE 500 cmdsize: 16 501 dataoff: 12312 502 datasize: 0 503LinkEditData: 504 ExportTrie: 505 TerminalSize: 0 506 NodeOffset: 0 507 Name: '' 508 Flags: 0x0 509 Address: 0x0 510 Other: 0x0 511 ImportName: '' 512 Children: 513 - TerminalSize: 3 514 NodeOffset: 8 515 Name: _bar 516 Flags: 0x0 517 Address: 0xBB0 518 Other: 0x0 519 ImportName: '' 520 NameList: 521 - n_strx: 2 522 n_type: 0xF 523 n_sect: 1 524 n_desc: 0 525 n_value: 2992 526 - n_strx: 7 527 n_type: 0x1 528 n_sect: 0 529 n_desc: 256 530 n_value: 0 531 StringTable: 532 - ' ' 533 - _bar 534 - dyld_stub_binder 535 FunctionStarts: [ 0xBB0 ] 536... 537 538;--- usr/lib/libBaz.tbd 539{ 540 "main_library": { 541 "exported_symbols": [ 542 { 543 "text": { 544 "global": [ 545 "_baz" 546 ] 547 } 548 } 549 ], 550 "flags": [ 551 { 552 "attributes": [ 553 "not_app_extension_safe" 554 ] 555 } 556 ], 557 "install_names": [ 558 { 559 "name": "/usr/lib/libBaz.1.dylib" 560 } 561 ], 562 "target_info": [ 563 { 564 "min_deployment": "13", 565 "target": "x86_64-macos" 566 } 567 ] 568 }, 569 "tapi_tbd_version": 5 570} 571 572;--- BadFoo/Foo.framework/Foo.tbd 573{ 574 "main_library": { 575 "exported_symbols": [ 576 { 577 "text": { 578 "global": [ 579 "_not_so_foo" 580 ] 581 } 582 } 583 ], 584 "flags": [ 585 { 586 "attributes": [ 587 "not_app_extension_safe" 588 ] 589 } 590 ], 591 "install_names": [ 592 { 593 "name": "/System/Library/Frameworks/Foo.framework/Versions/A/Foo" 594 } 595 ], 596 "target_info": [ 597 { 598 "min_deployment": "13", 599 "target": "x86_64-macos" 600 } 601 ] 602 }, 603 "tapi_tbd_version": 5 604} 605 606;--- expected.tbd 607{ 608 "main_library": { 609 "flags": [ 610 { 611 "attributes": [ 612 "not_app_extension_safe" 613 ] 614 } 615 ], 616 "install_names": [ 617 { 618 "name": "/System/Library/Frameworks/Umbrella3.framework/Versions/A/Umbrella3" 619 } 620 ], 621 "reexported_libraries": [ 622 { 623 "names": [ 624 "/System/Library/Frameworks/Bar.framework/Versions/A/Bar", 625 "/System/Library/Frameworks/Foo.framework/Versions/A/Foo", 626 "/usr/lib/libBaz.1.dylib" 627 ] 628 } 629 ], 630 "target_info": [ 631 { 632 "min_deployment": "13", 633 "target": "x86_64-macos" 634 } 635 ] 636 }, 637 "tapi_tbd_version": 5 638} 639