Skip to content

Commit 3e4d7a8

Browse files
committed
[clang][modules] Remove _Private suffix from framework auto-link hints. (llvm#77120)
- [clang][modules] Remove no longer needed autolink test for TBD files. - [clang][modules] Remove `_Private` suffix from framework auto-link hints. (cherry picked from commit f4bc70e)
1 parent 33b8cf6 commit 3e4d7a8

File tree

5 files changed

+28
-19
lines changed

5 files changed

+28
-19
lines changed

clang/lib/Lex/ModuleMap.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -994,7 +994,9 @@ static void inferFrameworkLink(Module *Mod) {
994994
assert(!Mod->isSubFramework() &&
995995
"Can only infer linking for top-level frameworks");
996996

997-
Mod->LinkLibraries.push_back(Module::LinkLibrary(Mod->Name,
997+
StringRef FrameworkName(Mod->Name);
998+
FrameworkName.consume_back("_Private");
999+
Mod->LinkLibraries.push_back(Module::LinkLibrary(FrameworkName.str(),
9981000
/*IsFramework=*/true));
9991001
}
10001002

clang/test/Modules/Inputs/AutolinkTBD.framework/AutolinkTBD.tbd

Lines changed: 0 additions & 1 deletion
This file was deleted.

clang/test/Modules/Inputs/AutolinkTBD.framework/Headers/AutolinkTBD.h

Lines changed: 0 additions & 1 deletion
This file was deleted.

clang/test/Modules/autolinkTBD.m

Lines changed: 0 additions & 16 deletions
This file was deleted.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// Test that autolink hints for frameworks don't use the private module name.
2+
// RUN: rm -rf %t && mkdir %t
3+
// RUN: split-file %s %t
4+
5+
// RUN: %clang_cc1 -emit-llvm -o - -fmodules-cache-path=%t/ModuleCache -fmodules -fimplicit-module-maps -F %t/Frameworks %t/test.m | FileCheck %s
6+
7+
// CHECK: !{!"-framework", !"Autolink"}
8+
// CHECK-NOT: !{!"-framework", !"Autolink_Private"}
9+
10+
//--- test.m
11+
#include <Autolink/Autolink.h>
12+
#include <Autolink/Autolink_Private.h>
13+
14+
//--- Frameworks/Autolink.framework/Headers/Autolink.h
15+
void public();
16+
17+
//--- Frameworks/Autolink.framework/PrivateHeaders/Autolink_Private.h
18+
void private();
19+
20+
//--- Frameworks/Autolink.framework/Modules/module.modulemap
21+
framework module Autolink { header "Autolink.h"}
22+
23+
//--- Frameworks/Autolink.framework/Modules/module.private.modulemap
24+
framework module Autolink_Private { header "Autolink_Private.h"}
25+

0 commit comments

Comments
 (0)