Browse Source

Extended the class for modules with include and library dirs, and defines.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/646/head
Dimitar Dobrev 9 years ago
parent
commit
e289dd47bf
  1. 2
      examples/SDL/SDL.cs
  2. 4
      src/CppParser/Bindings/ParserGen.cs
  3. 12
      src/CppParser/Bootstrap/Bootstrap.cs
  4. 4
      src/Generator.Tests/ASTTestFixture.cs
  5. 2
      src/Generator.Tests/GeneratorTest.cs
  6. 35
      src/Generator.Tests/ReadNativeDependenciesTest.cs
  7. 13
      src/Generator/Driver.cs
  8. 8
      src/Generator/Module.cs

2
examples/SDL/SDL.cs

@ -13,7 +13,7 @@ namespace CppSharp
options.LibraryName = "SDL"; options.LibraryName = "SDL";
options.Headers.Add("SDL.h"); options.Headers.Add("SDL.h");
var sdlPath = Path.Combine(GetExamplesDirectory("SDL"), "SDL-2.0/include"); var sdlPath = Path.Combine(GetExamplesDirectory("SDL"), "SDL-2.0/include");
options.addIncludeDirs(sdlPath); options.Module.IncludeDirs.Add(sdlPath);
options.OutputDir = "SDL"; options.OutputDir = "SDL";
} }

4
src/CppParser/Bindings/ParserGen.cs

@ -71,8 +71,8 @@ namespace CppSharp
SetupLinuxOptions(options); SetupLinuxOptions(options);
var basePath = Path.Combine(GetSourceDirectory("src"), "CppParser"); var basePath = Path.Combine(GetSourceDirectory("src"), "CppParser");
options.addIncludeDirs(basePath); options.Module.IncludeDirs.Add(basePath);
options.addLibraryDirs("."); options.Module.LibraryDirs.Add(".");
options.OutputDir = Path.Combine(GetSourceDirectory("src"), "CppParser", options.OutputDir = Path.Combine(GetSourceDirectory("src"), "CppParser",
"Bindings", Kind.ToString()); "Bindings", Kind.ToString());

12
src/CppParser/Bootstrap/Bootstrap.cs

@ -42,16 +42,16 @@ namespace CppSharp
options.MicrosoftMode = false; options.MicrosoftMode = false;
options.TargetTriple = "i686-apple-darwin12.4.0"; options.TargetTriple = "i686-apple-darwin12.4.0";
options.addDefines ("__STDC_LIMIT_MACROS"); options.Module.Defines.Add("__STDC_LIMIT_MACROS");
options.addDefines ("__STDC_CONSTANT_MACROS"); options.Module.Defines.Add("__STDC_CONSTANT_MACROS");
var llvmPath = Path.Combine (GetSourceDirectory ("deps"), "llvm"); var llvmPath = Path.Combine (GetSourceDirectory ("deps"), "llvm");
var clangPath = Path.Combine(llvmPath, "tools", "clang"); var clangPath = Path.Combine(llvmPath, "tools", "clang");
options.addIncludeDirs(Path.Combine(llvmPath, "include")); options.Module.IncludeDirs.Add(Path.Combine(llvmPath, "include"));
options.addIncludeDirs(Path.Combine(llvmPath, "build", "include")); options.Module.IncludeDirs.Add(Path.Combine(llvmPath, "build", "include"));
options.addIncludeDirs (Path.Combine (llvmPath, "build", "tools", "clang", "include")); options.Module.IncludeDirs.Add(Path.Combine (llvmPath, "build", "tools", "clang", "include"));
options.addIncludeDirs(Path.Combine(clangPath, "include")); options.Module.IncludeDirs.Add(Path.Combine(clangPath, "include"));
} }
public void SetupPasses(Driver driver) public void SetupPasses(Driver driver)

4
src/Generator.Tests/ASTTestFixture.cs

@ -15,11 +15,13 @@ namespace CppSharp.Generator.Tests
Options = new DriverOptions(); Options = new DriverOptions();
var testsPath = GeneratorTest.GetTestsDirectory("Native"); var testsPath = GeneratorTest.GetTestsDirectory("Native");
Options.addIncludeDirs(testsPath); Options.Module.IncludeDirs.Add(testsPath);
Options.Headers.AddRange(files); Options.Headers.AddRange(files);
Driver = new Driver(Options, new TextDiagnosticPrinter()); Driver = new Driver(Options, new TextDiagnosticPrinter());
foreach (var includeDir in Options.Module.IncludeDirs)
Options.addIncludeDirs(includeDir);
Driver.SetupIncludes(); Driver.SetupIncludes();
Driver.BuildParseOptions(); Driver.BuildParseOptions();
if (!Driver.ParseCode()) if (!Driver.ParseCode())

2
src/Generator.Tests/GeneratorTest.cs

@ -46,7 +46,7 @@ namespace CppSharp.Utils
options.TargetTriple = Environment.Is64BitProcess ? "x86_64-apple-darwin" : "i686-apple-darwin"; options.TargetTriple = Environment.Is64BitProcess ? "x86_64-apple-darwin" : "i686-apple-darwin";
var path = Path.GetFullPath(GetTestsDirectory(name)); var path = Path.GetFullPath(GetTestsDirectory(name));
options.addIncludeDirs(path); options.Module.IncludeDirs.Add(path);
// Remove this hardcoded path once we update our LLVM binary packages to bundle // Remove this hardcoded path once we update our LLVM binary packages to bundle
// the built-in Clang includes. // the built-in Clang includes.

35
src/Generator.Tests/ReadNativeDependenciesTest.cs

@ -1,4 +1,5 @@
using CppSharp.Utils; using System.Collections.Generic;
using CppSharp.Utils;
using NUnit.Framework; using NUnit.Framework;
namespace CppSharp.Generator.Tests namespace CppSharp.Generator.Tests
@ -9,12 +10,7 @@ namespace CppSharp.Generator.Tests
[Test] [Test]
public void TestReadDependenciesWindows() public void TestReadDependenciesWindows()
{ {
var driverOptions = new DriverOptions(); var dependencies = GetDependencies("ls-windows");
driverOptions.addLibraryDirs(GeneratorTest.GetTestsDirectory("Native"));
driverOptions.Libraries.Add("ls-windows");
var driver = new Driver(driverOptions, new TextDiagnosticPrinter());
Assert.IsTrue(driver.ParseLibraries());
var dependencies = driver.Symbols.Libraries[0].Dependencies;
Assert.AreEqual("msys-intl-8.dll", dependencies[0]); Assert.AreEqual("msys-intl-8.dll", dependencies[0]);
Assert.AreEqual("msys-2.0.dll", dependencies[1]); Assert.AreEqual("msys-2.0.dll", dependencies[1]);
Assert.AreEqual("KERNEL32.dll", dependencies[2]); Assert.AreEqual("KERNEL32.dll", dependencies[2]);
@ -23,12 +19,7 @@ namespace CppSharp.Generator.Tests
[Test] [Test]
public void TestReadDependenciesLinux() public void TestReadDependenciesLinux()
{ {
var driverOptions = new DriverOptions(); var dependencies = GetDependencies("ls-linux");
driverOptions.addLibraryDirs(GeneratorTest.GetTestsDirectory("Native"));
driverOptions.Libraries.Add("ls-linux");
var driver = new Driver(driverOptions, new TextDiagnosticPrinter());
Assert.IsTrue(driver.ParseLibraries());
var dependencies = driver.Symbols.Libraries[0].Dependencies;
Assert.AreEqual("libselinux.so.1", dependencies[0]); Assert.AreEqual("libselinux.so.1", dependencies[0]);
Assert.AreEqual("librt.so.1", dependencies[1]); Assert.AreEqual("librt.so.1", dependencies[1]);
Assert.AreEqual("libacl.so.1", dependencies[2]); Assert.AreEqual("libacl.so.1", dependencies[2]);
@ -37,16 +28,24 @@ namespace CppSharp.Generator.Tests
[Test] [Test]
public void TestReadDependenciesOSX() public void TestReadDependenciesOSX()
{
var dependencies = GetDependencies("ls-osx");
Assert.AreEqual("libutil.dylib", dependencies[0]);
Assert.AreEqual("libncurses.5.4.dylib", dependencies[1]);
Assert.AreEqual("libSystem.B.dylib", dependencies[2]);
}
private static IList<string> GetDependencies(string library)
{ {
var driverOptions = new DriverOptions(); var driverOptions = new DriverOptions();
driverOptions.addLibraryDirs(GeneratorTest.GetTestsDirectory("Native")); driverOptions.Module.LibraryDirs.Add(GeneratorTest.GetTestsDirectory("Native"));
driverOptions.Libraries.Add("ls-osx"); driverOptions.Libraries.Add(library);
var driver = new Driver(driverOptions, new TextDiagnosticPrinter()); var driver = new Driver(driverOptions, new TextDiagnosticPrinter());
foreach (var libraryDir in driverOptions.Module.LibraryDirs)
driverOptions.addLibraryDirs(libraryDir);
Assert.IsTrue(driver.ParseLibraries()); Assert.IsTrue(driver.ParseLibraries());
var dependencies = driver.Symbols.Libraries[0].Dependencies; var dependencies = driver.Symbols.Libraries[0].Dependencies;
Assert.AreEqual("libutil.dylib", dependencies[0]); return dependencies;
Assert.AreEqual("libncurses.5.4.dylib", dependencies[1]);
Assert.AreEqual("libSystem.B.dylib", dependencies[2]);
} }
} }
} }

13
src/Generator/Driver.cs

@ -458,6 +458,19 @@ namespace CppSharp
var driver = new Driver(options, Log); var driver = new Driver(options, Log);
library.Setup(driver); library.Setup(driver);
foreach (var includeDir in options.Module.IncludeDirs)
options.addIncludeDirs(includeDir);
foreach (var libraryDir in options.Module.LibraryDirs)
options.addLibraryDirs(libraryDir);
foreach (var define in options.Module.Defines)
options.addDefines(define);
foreach (var undefine in options.Module.Undefines)
options.addUndefines(undefine);
driver.Setup(); driver.Setup();
if(driver.Options.Verbose) if(driver.Options.Verbose)

8
src/Generator/Module.cs

@ -6,12 +6,20 @@ namespace CppSharp
{ {
public Module() public Module()
{ {
IncludeDirs = new List<string>();
Headers = new List<string>(); Headers = new List<string>();
LibraryDirs = new List<string>();
Libraries = new List<string>(); Libraries = new List<string>();
Defines = new List<string>();
Undefines = new List<string>();
} }
public List<string> IncludeDirs { get; private set; }
public List<string> Headers { get; private set; } public List<string> Headers { get; private set; }
public List<string> LibraryDirs { get; set; }
public List<string> Libraries { get; private set; } public List<string> Libraries { get; private set; }
public List<string> Defines { get; set; }
public List<string> Undefines { get; set; }
public string OutputNamespace { get; set; } public string OutputNamespace { get; set; }
public string SharedLibraryName public string SharedLibraryName

Loading…
Cancel
Save