mirror of https://github.com/mono/CppSharp.git
3 changed files with 0 additions and 146 deletions
@ -1,9 +0,0 @@ |
|||||||
project "CppSharp" |
|
||||||
|
|
||||||
kind "ConsoleApp" |
|
||||||
language "C#" |
|
||||||
location "." |
|
||||||
|
|
||||||
files { "**.cs" } |
|
||||||
|
|
||||||
links { "System", "System.Core", "CppSharp.AST", "CppSharp.Generator" } |
|
||||||
@ -1,136 +0,0 @@ |
|||||||
using System; |
|
||||||
using System.IO; |
|
||||||
using System.Reflection; |
|
||||||
using Mono.Options; |
|
||||||
|
|
||||||
namespace CppSharp |
|
||||||
{ |
|
||||||
internal class Program |
|
||||||
{ |
|
||||||
static void ShowHelp(OptionSet options) |
|
||||||
{ |
|
||||||
var module = System.Diagnostics.Process.GetCurrentProcess().MainModule; |
|
||||||
var exeName = Path.GetFileName(module.FileName); |
|
||||||
Console.WriteLine("Usage: " + exeName + " [options]+ headers"); |
|
||||||
Console.WriteLine("Generates .NET bindings from C/C++ header files."); |
|
||||||
Console.WriteLine(); |
|
||||||
Console.WriteLine("Options:"); |
|
||||||
|
|
||||||
|
|
||||||
Console.WriteLine(@"
|
|
||||||
--vs, --visualstudio=VALUE - Visual studio version to use for |
|
||||||
system include folders. |
|
||||||
Valid values: |
|
||||||
0 - autoprobe. (Default) |
|
||||||
11 - 2012, 10 - 2010, 9 - 2008, 8 - 2005 |
|
||||||
Number can be find out from VSx0COMNTOOLS environment variable. |
|
||||||
|
|
||||||
-D, --defines=VALUE - Specify define for preprocessor. |
|
||||||
(E.g. WIN32, DEBUG) |
|
||||||
-I, --include=VALUE - Add include path |
|
||||||
--ns, --namespace=VALUE - Namespace where C# wrappers will reside |
|
||||||
|
|
||||||
-o, --outdir=VALUE - Output folder |
|
||||||
--debug |
|
||||||
--lib, --library=VALUE |
|
||||||
-t, --template=VALUE |
|
||||||
-a, --assembly=VALUE |
|
||||||
|
|
||||||
-v, --verbose |
|
||||||
-h, -?, --help |
|
||||||
");
|
|
||||||
} |
|
||||||
|
|
||||||
static bool ParseCommandLineOptions(String[] args, DriverOptions options) |
|
||||||
{ |
|
||||||
var set = new OptionSet() |
|
||||||
{ |
|
||||||
// Parser options
|
|
||||||
{ "D|defines=", v => options.Defines.Add(v) }, |
|
||||||
{ "I|include=", v => options.IncludeDirs.Add(v) }, |
|
||||||
// Generator options
|
|
||||||
{ "ns|namespace=", v => options.OutputNamespace = v }, |
|
||||||
{ "o|outdir=", v => options.OutputDir = v }, |
|
||||||
{ "debug", v => options.OutputDebug = true }, |
|
||||||
{ "lib|library=", v => options.LibraryName = v }, |
|
||||||
{ "t|template=", v => options.Template = v }, |
|
||||||
{ "a|assembly=", v => options.Assembly = v }, |
|
||||||
// Misc. options
|
|
||||||
{ "vs|visualstudio=", v => Int32.TryParse(v, out options.ToolsetToUse) }, |
|
||||||
{ "v|verbose", v => { options.Verbose = true; } }, |
|
||||||
{ "h|?|help", v => options.ShowHelpText = v != null }, |
|
||||||
}; |
|
||||||
|
|
||||||
if (args.Length == 0 || options.ShowHelpText) |
|
||||||
{ |
|
||||||
ShowHelp(set); |
|
||||||
return false; |
|
||||||
} |
|
||||||
|
|
||||||
try |
|
||||||
{ |
|
||||||
options.Headers = set.Parse(args); |
|
||||||
} |
|
||||||
catch (OptionException) |
|
||||||
{ |
|
||||||
Console.WriteLine("Error parsing the command line."); |
|
||||||
ShowHelp(set); |
|
||||||
return false; |
|
||||||
} |
|
||||||
|
|
||||||
return true; |
|
||||||
} |
|
||||||
|
|
||||||
static bool ParseLibraryAssembly(string path, out ILibrary library) |
|
||||||
{ |
|
||||||
library = null; |
|
||||||
|
|
||||||
if (string.IsNullOrWhiteSpace(path)) |
|
||||||
{ |
|
||||||
return true; |
|
||||||
} |
|
||||||
|
|
||||||
try |
|
||||||
{ |
|
||||||
var fullPath = Path.GetFullPath(path); |
|
||||||
|
|
||||||
var assembly = Assembly.LoadFile(fullPath); |
|
||||||
var types = assembly.FindDerivedTypes(typeof(ILibrary)); |
|
||||||
|
|
||||||
foreach (var type in types) |
|
||||||
{ |
|
||||||
var attrs = type.GetCustomAttributes(typeof(LibraryTransformAttribute), true); |
|
||||||
if (attrs == null) continue; |
|
||||||
|
|
||||||
Console.WriteLine("Found library transform: {0}", type.Name); |
|
||||||
library = (ILibrary)Activator.CreateInstance(type); |
|
||||||
} |
|
||||||
} |
|
||||||
catch (Exception ex) |
|
||||||
{ |
|
||||||
Console.WriteLine("Error: assembly '{0}' could not be loaded: {1}", path, ex.Message); |
|
||||||
return false; |
|
||||||
} |
|
||||||
|
|
||||||
return true; |
|
||||||
} |
|
||||||
|
|
||||||
public static void Main(string[] args) |
|
||||||
{ |
|
||||||
var options = new DriverOptions(); |
|
||||||
|
|
||||||
if (!ParseCommandLineOptions(args, options)) |
|
||||||
return; |
|
||||||
|
|
||||||
ILibrary library = null; |
|
||||||
if (!ParseLibraryAssembly(options.Assembly, out library)) |
|
||||||
return; |
|
||||||
|
|
||||||
var driver = new Driver(options, new TextDiagnosticPrinter(), library); |
|
||||||
driver.Setup(); |
|
||||||
driver.ParseCode(); |
|
||||||
driver.ProcessCode(); |
|
||||||
driver.GenerateCode(); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
Loading…
Reference in new issue