Browse Source

Obsoleted the direct settings for wrapped libraries in the options.

Modules should be used instead.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/778/head
Dimitar Dobrev 8 years ago
parent
commit
8646d3e077
  1. 6
      docs/GeneratingBindings.md
  2. 13
      src/AST/Module.cs
  3. 12
      src/CLI/Generator.cs
  4. 8
      src/CppParser/ParserGen/ParserGen.cs
  5. 5
      src/Generator.Tests/ASTTestFixture.cs
  6. 10
      src/Generator.Tests/GeneratorTest.cs
  7. 5
      src/Generator.Tests/ReadNativeDependenciesTest.cs
  8. 19
      src/Generator/Options.cs
  9. 4
      src/Generator/Passes/CleanUnitPass.cs
  10. 2
      tests/Common/Common.cs

6
docs/GeneratingBindings.md

@ -76,9 +76,9 @@ void Setup(Driver driver) @@ -76,9 +76,9 @@ void Setup(Driver driver)
{
var options = driver.Options;
options.GeneratorKind = GeneratorKind.CSharp;
options.LibraryName = "Sample";
options.Headers.Add("Sample.h");
options.Libraries.Add("Sample.lib");
var module = options.AddModule("Sample");
module.Headers.Add("Sample.h");
module.Libraries.Add("Sample.lib");
}
```

13
src/AST/Module.cs

@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
namespace CppSharp.AST
{
@ -15,6 +16,16 @@ namespace CppSharp.AST @@ -15,6 +16,16 @@ namespace CppSharp.AST
public List<string> CodeFiles { get; } = new List<string>();
public List<Module> Dependencies { get; } = new List<Module>();
[Obsolete("Use Module(string libraryName) instead.")]
public Module()
{
}
public Module(string libraryName)
{
LibraryName = libraryName;
}
public string SharedLibraryName
{
get

12
src/CLI/Generator.cs

@ -122,14 +122,15 @@ namespace CppSharp @@ -122,14 +122,15 @@ namespace CppSharp
parserOptions.Abi = abi;
var driverOptions = driver.Options;
driverOptions.LibraryName = options.OutputFileName;
driverOptions.GeneratorKind = options.Kind;
var module = driverOptions.AddModule(options.OutputFileName);
if(!string.IsNullOrEmpty(options.InputLibraryName))
driverOptions.SharedLibraryName = options.InputLibraryName;
module.SharedLibraryName = options.InputLibraryName;
driverOptions.GeneratorKind = options.Kind;
driverOptions.Headers.AddRange(options.HeaderFiles);
driverOptions.Libraries.AddRange(options.Libraries);
module.Headers.AddRange(options.HeaderFiles);
module.Libraries.AddRange(options.Libraries);
module.OutputNamespace = options.OutputNamespace;
if (abi == CppAbi.Microsoft)
parserOptions.MicrosoftMode = true;
@ -155,7 +156,6 @@ namespace CppSharp @@ -155,7 +156,6 @@ namespace CppSharp
}
driverOptions.OutputDir = options.OutputDir;
driverOptions.OutputNamespace = options.OutputNamespace;
driverOptions.CheckSymbols = options.CheckSymbols;
driverOptions.UnityBuild = options.UnityBuild;
}

8
src/CppParser/ParserGen/ParserGen.cs

@ -54,15 +54,16 @@ namespace CppSharp @@ -54,15 +54,16 @@ namespace CppSharp
parserOptions.Abi = Abi;
var options = driver.Options;
options.LibraryName = "CppSharp.CppParser";
options.GeneratorKind = Kind;
options.Headers.AddRange(new[]
var parserModule = options.AddModule("CppSharp.CppParser");
parserModule.Headers.AddRange(new[]
{
"AST.h",
"Sources.h",
"CppParser.h"
});
options.Libraries.Add("CppSharp.CppParser.lib");
parserModule.Libraries.Add("CppSharp.CppParser.lib");
parserModule.OutputNamespace = string.Empty;
if (Abi == CppAbi.Microsoft)
parserOptions.MicrosoftMode = true;
@ -85,7 +86,6 @@ namespace CppSharp @@ -85,7 +86,6 @@ namespace CppSharp
if (Kind == GeneratorKind.CSharp)
options.OutputDir = Path.Combine(options.OutputDir, parserOptions.TargetTriple + extraTriple);
options.OutputNamespace = string.Empty;
options.CheckSymbols = false;
//options.Verbose = true;
options.UnityBuild = true;

5
src/Generator.Tests/ASTTestFixture.cs

@ -20,15 +20,14 @@ namespace CppSharp.Generator.Tests @@ -20,15 +20,14 @@ namespace CppSharp.Generator.Tests
var testsPath = GeneratorTest.GetTestsDirectory("Native");
ParserOptions.AddIncludeDirs(testsPath);
Options.Headers.AddRange(files);
var module = Options.AddModule("Test");
module.Headers.AddRange(files);
Driver = new Driver(Options)
{
ParserOptions = this.ParserOptions
};
foreach (var module in Driver.Options.Modules)
module.LibraryName = "Test";
Driver.Setup();
Driver.BuildParseOptions();
if (!Driver.ParseCode())

10
src/Generator.Tests/GeneratorTest.cs

@ -25,20 +25,20 @@ namespace CppSharp.Utils @@ -25,20 +25,20 @@ namespace CppSharp.Utils
public virtual void Setup(Driver driver)
{
var options = driver.Options;
options.LibraryName = name;
options.GeneratorKind = kind;
options.OutputDir = Path.Combine(GetOutputDirectory(), "gen", name);
options.SharedLibraryName = name + ".Native";
options.Quiet = true;
var testModule = options.AddModule(name);
testModule.SharedLibraryName = name + ".Native";
Diagnostics.Message("");
Diagnostics.Message("Generating bindings for {0} ({1})",
options.LibraryName, options.GeneratorKind.ToString());
testModule.LibraryName, options.GeneratorKind.ToString());
// Workaround for CLR which does not check for .dll if the
// name already has a dot.
if (!Platform.IsMono)
options.SharedLibraryName += ".dll";
testModule.SharedLibraryName += ".dll";
var parserOptions = driver.ParserOptions;
if (Platform.IsMacOS)
@ -50,7 +50,7 @@ namespace CppSharp.Utils @@ -50,7 +50,7 @@ namespace CppSharp.Utils
Diagnostics.Message("Looking for tests in: {0}", path);
var files = Directory.EnumerateFiles(path, "*.h");
foreach (var file in files)
options.Headers.Add(Path.GetFileName(file));
testModule.Headers.Add(Path.GetFileName(file));
}
public virtual void Preprocess(Driver driver, ASTContext ctx)

5
src/Generator.Tests/ReadNativeDependenciesTest.cs

@ -41,13 +41,12 @@ namespace CppSharp.Generator.Tests @@ -41,13 +41,12 @@ namespace CppSharp.Generator.Tests
var parserOptions = new ParserOptions();
parserOptions.AddLibraryDirs(GeneratorTest.GetTestsDirectory("Native"));
var driverOptions = new DriverOptions();
driverOptions.Libraries.Add(library);
var module = driverOptions.AddModule("Test");
module.Libraries.Add(library);
var driver = new Driver(driverOptions)
{
ParserOptions = parserOptions
};
foreach (var module in driver.Options.Modules)
module.LibraryName = "Test";
driver.Setup();
Assert.IsTrue(driver.ParseLibraries());
var dependencies = driver.Context.Symbols.Libraries[0].Dependencies;

19
src/Generator/Options.cs

@ -21,7 +21,7 @@ namespace CppSharp @@ -21,7 +21,7 @@ namespace CppSharp
{
OutputDir = Directory.GetCurrentDirectory();
SystemModule = new Module { OutputNamespace = string.Empty, LibraryName = "Std" };
SystemModule = new Module("Std") { OutputNamespace = string.Empty };
Modules = new List<Module> { SystemModule };
GeneratorKind = GeneratorKind.CSharp;
@ -75,50 +75,65 @@ namespace CppSharp @@ -75,50 +75,65 @@ namespace CppSharp
public Module SystemModule { get; }
public List<Module> Modules { get; }
[Obsolete("Do not use.")]
public Module MainModule
{
get
{
if (Modules.Count == 1)
Modules.Add(new Module());
AddModule("Main");
return Modules[1];
}
}
[Obsolete("Use Modules and Module.Headers instead.")]
public List<string> Headers => MainModule.Headers;
[Obsolete("Use Modules and Module.Libraries instead.")]
public List<string> Libraries => MainModule.Libraries;
[Obsolete("Use Modules and Module.SharedLibraryName instead.")]
public string SharedLibraryName
{
get { return MainModule.SharedLibraryName; }
set { MainModule.SharedLibraryName = value; }
}
[Obsolete("Use Modules and Module.OutputNamespace instead.")]
public string OutputNamespace
{
get { return MainModule.OutputNamespace; }
set { MainModule.OutputNamespace = value; }
}
[Obsolete("Use Modules and Module.LibraryName instead.")]
public string LibraryName
{
get { return MainModule.LibraryName; }
set { MainModule.LibraryName = value; }
}
[Obsolete("Use Modules and Module.InlinesLibraryName instead.")]
public string InlinesLibraryName
{
get { return MainModule.InlinesLibraryName; }
set { MainModule.InlinesLibraryName = value; }
}
[Obsolete("Use Modules and Module.TemplatesLibraryName instead.")]
public string TemplatesLibraryName
{
get { return MainModule.TemplatesLibraryName; }
set { MainModule.TemplatesLibraryName = value; }
}
public Module AddModule(string libraryName)
{
var module = new Module(libraryName);
Modules.Add(module);
return module;
}
public bool DoAllModulesHaveLibraries() =>
Modules.All(m => m == SystemModule || m.Libraries.Count > 0);

4
src/Generator/Passes/CleanUnitPass.cs

@ -21,7 +21,7 @@ namespace CppSharp.Passes @@ -21,7 +21,7 @@ namespace CppSharp.Passes
return true;
}
Module GetModule(TranslationUnit unit)
private Module GetModule(TranslationUnit unit)
{
if (unit.IsSystemHeader)
return Options.SystemModule;
@ -33,7 +33,7 @@ namespace CppSharp.Passes @@ -33,7 +33,7 @@ namespace CppSharp.Passes
return Options.Modules.FirstOrDefault(
m => m.IncludeDirs.Any(i => Path.GetFullPath(i) == includeDir)) ??
Options.MainModule;
Options.Modules[1];
}
public override bool VisitDeclarationContext(DeclarationContext context)

2
tests/Common/Common.cs

@ -55,7 +55,7 @@ namespace CppSharp.Tests @@ -55,7 +55,7 @@ namespace CppSharp.Tests
{
base.Setup(driver);
driver.Options.OutputNamespace = "CommonTest";
driver.Options.Modules[1].OutputNamespace = "CommonTest";
driver.Options.UnityBuild = true;
}

Loading…
Cancel
Save