188 lines · plain
1; RUN: rm -rf %t 2; RUN: split-file %s %t3; RUN: mkdir -p %t/System/Library/Frameworks 4; RUN: cp -r %S/Inputs/Simple/Simple.framework %t/System/Library/Frameworks/5; RUN: cp -r %S/Inputs/Foundation/Foundation.framework %t/System/Library/Frameworks/6; RUN: sed -e "s|DSTROOT|%/t|g" %t/inputs.json.in > %t/inputs.json7; RUN: yaml2obj %S/Inputs/Simple/Simple.yaml -o %t/Simple 8 9// Add exclude options.10; RUN: clang-installapi -target x86_64-apple-macosx10.12 \11; RUN: -install_name /System/Library/Frameworks/Simple.framework/Versions/A/Simple \12; RUN: -current_version 1.2.3 -compatibility_version 1 \13; RUN: -F%t/System/Library/Frameworks \14; RUN: %t/inputs.json -o %t/Simple.tbd \15; RUN: --verify-against=%t/Simple --verify-mode=ErrorsAndWarnings \16; RUN: --exclude-public-header=**/SimpleAPI.h \17; RUN: --exclude-private-header=**/SimplePrivateSPI.h 2>&1 | FileCheck -check-prefix=WARNINGS %s18; RUN: llvm-readtapi -compare %t/Simple.tbd %t/expected-excluded.tbd19 20// Add extra options.21; RUN: clang-installapi -target x86_64-apple-macosx10.12 \22; RUN: -install_name /System/Library/Frameworks/Simple.framework/Versions/A/Simple \23; RUN: -current_version 1.2.3 -compatibility_version 1 \24; RUN: -F%t/System/Library/Frameworks \25; RUN: %t/inputs.json -o %t/Simple.tbd \26; RUN: --verify-against=%t/Simple --verify-mode=Pedantic \27; RUN: --extra-project-header=%S/Inputs/Simple/SimpleInternalAPI2.h \28; RUN: --extra-project-header=%S/Inputs/Simple/SimpleInternalAPI.h \29; RUN: --extra-public-header=%S/Inputs/Simple/Extra \30; RUN: --extra-private-header=%S/Inputs/Simple/SimpleInternalSPI.h \31; RUN: --exclude-public-header=**/SimpleAPI.h \32; RUN: --exclude-private-header=**/SimplePrivateSPI.h 2>&1 | FileCheck -check-prefix=PEDANTIC -allow-empty %s33; RUN: llvm-readtapi -compare %t/Simple.tbd %t/expected-extra.tbd34 35// Check fatal missing file input.36; RUN: not clang-installapi -target x86_64-apple-macosx10.12 \37; RUN: -install_name /System/Library/Frameworks/Simple.framework/Versions/A/Simple \38; RUN: -current_version 1.2.3 -compatibility_version 1 \39; RUN: -F%t/System/Library/Frameworks \40; RUN: %t/inputs.json -o %t/Simple.tbd \41; RUN: --extra-public-header=%S/Inputs/Simple/NoSuchFile.h 2>&1 | FileCheck -allow-empty -check-prefix=NOPUBLIC %s42 43; WARNINGS: warning: no declaration was found for exported symbol '_extraGlobalAPI1' in dynamic library44; WARNINGS: warning: no declaration was found for exported symbol '_extraGlobalAPI2' in dynamic library45; WARNINGS: warning: no declaration was found for exported symbol '(ObjC Class) SimpleInternalSPI' in dynamic library46; WARNINGS: warning: no declaration was found for exported symbol '(ObjC Class) SimpleInternalAPI' in dynamic library47 48; PEDANTIC-NOT: error49; PEDANTIC: warning: cannot find protocol definition for 'ForwardProcotol'50 51; NOPUBLIC: error: no such public header file:52 53;--- expected-excluded.tbd54{55 "main_library": {56 "current_versions": [57 {58 "version": "1.2.3"59 }60 ],61 "exported_symbols": [62 {63 "data": {64 "global": [65 "_publicGlobalVariable",66 "_privateGlobalVariable"67 ],68 "objc_class": [69 "ExternalManagedObject", "Basic6",70 "Basic1", "Base", "Basic3",71 "FooClass", "Simple",72 "Basic4_2", "Basic5",73 "Basic9","Basic8",74 "Basic2", "Basic4", "A", "SubClass"75 ],76 "objc_eh_type": [77 "SubClass", "Base"78 ],79 "objc_ivar": [80 "Basic4.ivar2", "Basic4_2.ivar1", "Basic6.ivar1",81 "Basic4.ivar1", "Basic4_2.ivar2"82 ],83 "weak": [84 "_weakPrivateGlobalVariable", "_weakPublicGlobalVariable"85 ]86 }87 }88 ],89 "flags": [90 {91 "attributes": ["not_app_extension_safe"]92 }93 ],94 "install_names": [95 {96 "name": "/System/Library/Frameworks/Simple.framework/Versions/A/Simple"97 }98 ],99 "target_info": [100 {"min_deployment": "10.12", "target": "x86_64-macos"}101 ]102 },103 "tapi_tbd_version": 5104}105 106;--- expected-extra.tbd107{108 "main_library": {109 "current_versions": [110 { "version": "1.2.3" }111 ],112 "exported_symbols": [113 {114 "data": {115 "global": [116 "_publicGlobalVariable", "_extraGlobalAPI2",117 "_extraGlobalAPI1", "_privateGlobalVariable"118 ],119 "objc_class": [120 "SubClass", "SimpleInternalSPI",121 "Basic6", "Basic1", "Base",122 "Basic3", "Simple", "Basic4_2",123 "Basic5", "FooClass", "Basic9",124 "Basic8", "Basic2", "Basic4",125 "A", "SimpleInternalAPI",126 "ExternalManagedObject"127 ],128 "objc_eh_type": [129 "SubClass", "SimpleInternalAPI",130 "Base", "SimpleInternalSPI"131 ],132 "objc_ivar": [133 "Basic4.ivar2", "Basic4_2.ivar1",134 "Basic6.ivar1", "Basic4.ivar1",135 "Basic4_2.ivar2"136 ],137 "weak": [138 "_weakPrivateGlobalVariable", "_weakPublicGlobalVariable"139 ]140 }141 }142 ],143 "flags": [144 {145 "attributes": [ "not_app_extension_safe"]146 }147 ],148 "install_names": [149 { "name": "/System/Library/Frameworks/Simple.framework/Versions/A/Simple" }150 ],151 "target_info": [152 { "min_deployment": "10.12", "target": "x86_64-macos" }153 ]154 },155 "tapi_tbd_version": 5156}157 158;--- inputs.json.in159{160 "headers": [ 161 {162 "path" : "DSTROOT/System/Library/Frameworks/Simple.framework/Headers/Basic.h",163 "type" : "public"164 }, 165 {166 "path" : "DSTROOT/System/Library/Frameworks/Simple.framework/Headers/External.h",167 "type" : "public"168 }, 169 {170 "path" : "DSTROOT/System/Library/Frameworks/Simple.framework/Headers/Simple.h",171 "type" : "public"172 }, 173 {174 "path" : "DSTROOT/System/Library/Frameworks/Simple.framework/Headers/SimpleAPI.h",175 "type" : "public"176 }, 177 {178 "path" : "DSTROOT/System/Library/Frameworks/Simple.framework/PrivateHeaders/SimplePrivate.h",179 "type" : "private"180 }, 181 {182 "path" : "DSTROOT/System/Library/Frameworks/Simple.framework/PrivateHeaders/SimplePrivateSPI.h",183 "type" : "private"184 }185 ],186 "version": "3"187}188