From 345891ed4137cb05b786d6d5e6c41315ff51ef00 Mon Sep 17 00:00:00 2001 From: Joao Matos Date: Tue, 30 May 2023 15:52:58 +0100 Subject: [PATCH] Fix module being ignored when it cannot be found based on include dir. --- src/CLI/Generator.cs | 3 +++ src/Generator/Driver.cs | 7 ++++++- src/Generator/Passes/CleanUnitPass.cs | 11 +++-------- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/CLI/Generator.cs b/src/CLI/Generator.cs index ed215001..58db9ac7 100644 --- a/src/CLI/Generator.cs +++ b/src/CLI/Generator.cs @@ -108,6 +108,9 @@ namespace CppSharp if (string.IsNullOrEmpty(options.OutputNamespace)) options.OutputNamespace = moduleName; + if (options.IncludeDirs.Count == 0) + options.IncludeDirs.Add(Path.GetDirectoryName(options.HeaderFiles.First())); + SetupTargetTriple(); return true; diff --git a/src/Generator/Driver.cs b/src/Generator/Driver.cs index 29e36d96..82780bfa 100644 --- a/src/Generator/Driver.cs +++ b/src/Generator/Driver.cs @@ -439,7 +439,12 @@ namespace CppSharp } new CleanUnitPass { Context = driver.Context }.VisitASTContext(driver.Context.ASTContext); - options.Modules.RemoveAll(m => m != options.SystemModule && !m.Units.GetGenerated().Any()); + foreach (var module in options.Modules.Where( + m => m != options.SystemModule && !m.Units.GetGenerated().Any())) + { + Diagnostics.Message($"Removing module {module} because no translation units are generated..."); + options.Modules.Remove(module); + } if (!options.Quiet) Diagnostics.Message("Processing code..."); diff --git a/src/Generator/Passes/CleanUnitPass.cs b/src/Generator/Passes/CleanUnitPass.cs index 4d1b3750..ef02a4c7 100644 --- a/src/Generator/Passes/CleanUnitPass.cs +++ b/src/Generator/Passes/CleanUnitPass.cs @@ -31,14 +31,9 @@ namespace CppSharp.Passes includeDir = "."; includeDir = Path.GetFullPath(includeDir); - Module module = Options.Modules.Find( - m => m.IncludeDirs.Any(i => Path.GetFullPath(i) == includeDir)); - if (module == null) - { - unit.ExplicitlyIgnore(); - module = Options.Modules[1]; - } - return module; + return Options.Modules.FirstOrDefault( + m => m.IncludeDirs.Any(i => Path.GetFullPath(i) == includeDir)) ?? + Options.Modules[1]; } public override bool VisitDeclarationContext(DeclarationContext context)