@@ -127,6 +127,16 @@ class LangOptions;
127127class SearchPathOptions ;
128128class CompilerInvocation ;
129129
130+ struct ModuleInterfaceLoaderOptions {
131+ bool remarkOnRebuildFromInterface = false ;
132+ bool disableInterfaceLock = false ;
133+ bool disableImplicitSwiftModule = false ;
134+ ModuleInterfaceLoaderOptions (const FrontendOptions &Opts):
135+ remarkOnRebuildFromInterface (Opts.RemarkOnRebuildFromModuleInterface),
136+ disableInterfaceLock (Opts.DisableInterfaceFileLock),
137+ disableImplicitSwiftModule (Opts.DisableImplicitModules) {}
138+ ModuleInterfaceLoaderOptions () = default ;
139+ };
130140// / A ModuleLoader that runs a subordinate \c CompilerInvocation and
131141// / \c CompilerInstance to convert .swiftinterface files to .swiftmodule
132142// / files on the fly, caching the resulting .swiftmodules in the module cache
@@ -137,21 +147,17 @@ class ModuleInterfaceLoader : public SerializedModuleLoaderBase {
137147 ASTContext &ctx, StringRef cacheDir, StringRef prebuiltCacheDir,
138148 DependencyTracker *tracker, ModuleLoadingMode loadMode,
139149 ArrayRef<std::string> PreferInterfaceForModules,
140- bool RemarkOnRebuildFromInterface, bool IgnoreSwiftSourceInfoFile,
141- bool DisableInterfaceFileLock)
150+ bool IgnoreSwiftSourceInfoFile, ModuleInterfaceLoaderOptions Opts)
142151 : SerializedModuleLoaderBase(ctx, tracker, loadMode,
143152 IgnoreSwiftSourceInfoFile),
144153 CacheDir(cacheDir), PrebuiltCacheDir(prebuiltCacheDir),
145- RemarkOnRebuildFromInterface(RemarkOnRebuildFromInterface),
146- DisableInterfaceFileLock(DisableInterfaceFileLock),
147- PreferInterfaceForModules(PreferInterfaceForModules)
148- {}
154+ PreferInterfaceForModules(PreferInterfaceForModules),
155+ Opts(Opts) {}
149156
150157 std::string CacheDir;
151158 std::string PrebuiltCacheDir;
152- bool RemarkOnRebuildFromInterface;
153- bool DisableInterfaceFileLock;
154159 ArrayRef<std::string> PreferInterfaceForModules;
160+ ModuleInterfaceLoaderOptions Opts;
155161
156162 std::error_code findModuleFilesInDirectory (
157163 AccessPathElem ModuleID,
@@ -168,16 +174,14 @@ class ModuleInterfaceLoader : public SerializedModuleLoaderBase {
168174 create (ASTContext &ctx, StringRef cacheDir, StringRef prebuiltCacheDir,
169175 DependencyTracker *tracker, ModuleLoadingMode loadMode,
170176 ArrayRef<std::string> PreferInterfaceForModules = {},
171- bool RemarkOnRebuildFromInterface = false ,
172- bool IgnoreSwiftSourceInfoFile = false ,
173- bool DisableInterfaceFileLock = false ) {
177+ ModuleInterfaceLoaderOptions Opts = ModuleInterfaceLoaderOptions(),
178+ bool IgnoreSwiftSourceInfoFile = false ) {
174179 return std::unique_ptr<ModuleInterfaceLoader>(
175180 new ModuleInterfaceLoader (ctx, cacheDir, prebuiltCacheDir,
176181 tracker, loadMode,
177182 PreferInterfaceForModules,
178- RemarkOnRebuildFromInterface,
179183 IgnoreSwiftSourceInfoFile,
180- DisableInterfaceFileLock ));
184+ Opts ));
181185 }
182186
183187 // / Append visible module names to \p names. Note that names are possibly
@@ -192,10 +196,11 @@ class ModuleInterfaceLoader : public SerializedModuleLoaderBase {
192196 static bool buildSwiftModuleFromSwiftInterface (
193197 SourceManager &SourceMgr, DiagnosticEngine &Diags,
194198 const SearchPathOptions &SearchPathOpts, const LangOptions &LangOpts,
199+ const ClangImporterOptions &ClangOpts,
195200 StringRef CacheDir, StringRef PrebuiltCacheDir,
196201 StringRef ModuleName, StringRef InPath, StringRef OutPath,
197202 bool SerializeDependencyHashes, bool TrackSystemDependencies,
198- bool RemarkOnRebuildFromInterface, bool DisableInterfaceFileLock );
203+ ModuleInterfaceLoaderOptions Opts );
199204};
200205
201206struct InterfaceSubContextDelegateImpl : InterfaceSubContextDelegate {
@@ -231,14 +236,13 @@ struct InterfaceSubContextDelegateImpl: InterfaceSubContextDelegate {
231236 DiagnosticEngine &Diags,
232237 const SearchPathOptions &searchPathOpts,
233238 const LangOptions &langOpts,
239+ ModuleInterfaceLoaderOptions LoaderOpts,
234240 ClangModuleLoader *clangImporter,
235241 bool buildModuleCacheDirIfAbsent,
236242 StringRef moduleCachePath,
237243 StringRef prebuiltCachePath,
238244 bool serializeDependencyHashes,
239- bool trackSystemDependencies,
240- bool remarkOnRebuildFromInterface,
241- bool disableInterfaceFileLock);
245+ bool trackSystemDependencies);
242246 bool runInSubContext (StringRef moduleName,
243247 StringRef interfacePath,
244248 StringRef outputPath,
@@ -258,6 +262,7 @@ struct InterfaceSubContextDelegateImpl: InterfaceSubContextDelegate {
258262 llvm::SmallString<256 > &OutPath,
259263 StringRef &CacheHash);
260264 std::string getCacheHash (StringRef useInterfacePath);
265+ void addExtraClangArg (StringRef Arg);
261266};
262267}
263268
0 commit comments