Browse Source

Added support for x86_64 Linux GNU C++11 ABI parser bindings.

Partial fix for issue #655.
pull/661/head
Joao Matos 9 years ago
parent
commit
3a43cf3349
  1. 5
      src/Core/Platform.cs
  2. 14292
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/AST.cs
  3. 1207
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppParser.cs
  4. 29
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.dll-templates.cpp
  5. 97
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/Sources.cs
  6. 758
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/Target.cs
  7. 58
      src/CppParser/Bindings/ParserGen.cs

5
src/Core/Platform.cs

@ -48,6 +48,11 @@ namespace CppSharp @@ -48,6 +48,11 @@ namespace CppSharp
}
}
public static bool IsLinux
{
get { return Environment.OSVersion.Platform == PlatformID.Unix && !IsMacOS; }
}
public static bool IsMono
{
get { return Type.GetType("Mono.Runtime") != null; }

14292
src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/AST.cs

File diff suppressed because it is too large Load Diff

1207
src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppParser.cs

File diff suppressed because it is too large Load Diff

29
src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.dll-templates.cpp

@ -0,0 +1,29 @@ @@ -0,0 +1,29 @@
#include <AST.h>
#include <Sources.h>
#include <CppParser.h>
template class vector<CppSharp::CppParser::AST::Namespace*>;
template class vector<CppSharp::CppParser::AST::Enumeration*>;
template class vector<CppSharp::CppParser::AST::Function*>;
template class vector<CppSharp::CppParser::AST::Class*>;
template class vector<CppSharp::CppParser::AST::Template*>;
template class vector<CppSharp::CppParser::AST::TypedefDecl*>;
template class vector<CppSharp::CppParser::AST::TypeAlias*>;
template class vector<CppSharp::CppParser::AST::Variable*>;
template class vector<CppSharp::CppParser::AST::Friend*>;
template class vector<CppSharp::CppParser::AST::BaseClassSpecifier*>;
template class vector<CppSharp::CppParser::AST::Field*>;
template class vector<CppSharp::CppParser::AST::Method*>;
template class vector<CppSharp::CppParser::AST::AccessSpecifierDecl*>;
template class vector<CppSharp::CppParser::AST::Declaration*>;
template class vector<CppSharp::CppParser::AST::FunctionTemplateSpecialization*>;
template class vector<CppSharp::CppParser::AST::Parameter*>;
template class vector<CppSharp::CppParser::AST::ClassTemplateSpecialization*>;
template class vector<CppSharp::CppParser::AST::Enumeration::Item*>;
template class vector<CppSharp::CppParser::AST::BlockContentComment*>;
template class vector<CppSharp::CppParser::AST::PreprocessedEntity*>;
template class vector<CppSharp::CppParser::AST::Expression*>;
template class vector<CppSharp::CppParser::AST::MacroDefinition*>;
template class vector<CppSharp::CppParser::AST::TranslationUnit*>;
template class vector<CppSharp::CppParser::AST::InlineContentComment*>;
template class vector<CppSharp::CppParser::AST::VerbatimBlockLineComment*>;

97
src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/Sources.cs

@ -0,0 +1,97 @@ @@ -0,0 +1,97 @@
//----------------------------------------------------------------------------
// <auto-generated>
// This is autogenerated code by CppSharp.
// Do not edit this file or all your changes will be lost after re-generation.
// </auto-generated>
//----------------------------------------------------------------------------
using System;
using System.Runtime.InteropServices;
using System.Security;
namespace CppSharp
{
namespace Parser
{
public unsafe partial struct SourceLocation
{
[StructLayout(LayoutKind.Explicit, Size = 4)]
public partial struct Internal
{
[FieldOffset(0)]
public uint ID;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser14SourceLocationC2Ev")]
internal static extern void ctor_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser14SourceLocationC2Ej")]
internal static extern void ctor_1(global::System.IntPtr instance, uint ID);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser14SourceLocationC2ERKS1_")]
internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0);
}
private SourceLocation.Internal __instance;
public SourceLocation.Internal __Instance { get { return __instance; } }
public static SourceLocation __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
{
return new SourceLocation(native.ToPointer(), skipVTables);
}
public static SourceLocation __CreateInstance(SourceLocation.Internal native, bool skipVTables = false)
{
return new SourceLocation(native, skipVTables);
}
private SourceLocation(SourceLocation.Internal native, bool skipVTables = false)
: this()
{
__instance = native;
}
private SourceLocation(void* native, bool skipVTables = false) : this()
{
__instance = *(Internal*) native;
}
public SourceLocation(uint ID)
: this()
{
fixed (Internal* __instancePtr = &__instance)
{
Internal.ctor_1(new global::System.IntPtr(__instancePtr), ID);
}
}
public SourceLocation(CppSharp.Parser.SourceLocation _0)
: this()
{
var ____arg0 = _0.__Instance;
var __arg0 = new global::System.IntPtr(&____arg0);
fixed (Internal* __instancePtr = &__instance)
{
Internal.cctor_2(new global::System.IntPtr(__instancePtr), __arg0);
}
}
public uint ID
{
get
{
return __instance.ID;
}
set
{
__instance.ID = value;
}
}
}
}
}

758
src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/Target.cs

@ -0,0 +1,758 @@ @@ -0,0 +1,758 @@
//----------------------------------------------------------------------------
// <auto-generated>
// This is autogenerated code by CppSharp.
// Do not edit this file or all your changes will be lost after re-generation.
// </auto-generated>
//----------------------------------------------------------------------------
using System;
using System.Runtime.InteropServices;
using System.Security;
namespace CppSharp
{
namespace Parser
{
public enum ParserIntType
{
NoInt = 0,
SignedChar = 1,
UnsignedChar = 2,
SignedShort = 3,
UnsignedShort = 4,
SignedInt = 5,
UnsignedInt = 6,
SignedLong = 7,
UnsignedLong = 8,
SignedLongLong = 9,
UnsignedLongLong = 10
}
public unsafe partial class ParserTargetInfo : IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 184)]
public partial struct Internal
{
[FieldOffset(32)]
public CppSharp.Parser.ParserIntType Char16Type;
[FieldOffset(36)]
public CppSharp.Parser.ParserIntType Char32Type;
[FieldOffset(40)]
public CppSharp.Parser.ParserIntType Int64Type;
[FieldOffset(44)]
public CppSharp.Parser.ParserIntType IntMaxType;
[FieldOffset(48)]
public CppSharp.Parser.ParserIntType IntPtrType;
[FieldOffset(52)]
public CppSharp.Parser.ParserIntType SizeType;
[FieldOffset(56)]
public CppSharp.Parser.ParserIntType UIntMaxType;
[FieldOffset(60)]
public CppSharp.Parser.ParserIntType WCharType;
[FieldOffset(64)]
public CppSharp.Parser.ParserIntType WIntType;
[FieldOffset(68)]
public uint BoolAlign;
[FieldOffset(72)]
public uint BoolWidth;
[FieldOffset(76)]
public uint CharAlign;
[FieldOffset(80)]
public uint CharWidth;
[FieldOffset(84)]
public uint Char16Align;
[FieldOffset(88)]
public uint Char16Width;
[FieldOffset(92)]
public uint Char32Align;
[FieldOffset(96)]
public uint Char32Width;
[FieldOffset(100)]
public uint HalfAlign;
[FieldOffset(104)]
public uint HalfWidth;
[FieldOffset(108)]
public uint FloatAlign;
[FieldOffset(112)]
public uint FloatWidth;
[FieldOffset(116)]
public uint DoubleAlign;
[FieldOffset(120)]
public uint DoubleWidth;
[FieldOffset(124)]
public uint ShortAlign;
[FieldOffset(128)]
public uint ShortWidth;
[FieldOffset(132)]
public uint IntAlign;
[FieldOffset(136)]
public uint IntWidth;
[FieldOffset(140)]
public uint IntMaxTWidth;
[FieldOffset(144)]
public uint LongAlign;
[FieldOffset(148)]
public uint LongWidth;
[FieldOffset(152)]
public uint LongDoubleAlign;
[FieldOffset(156)]
public uint LongDoubleWidth;
[FieldOffset(160)]
public uint LongLongAlign;
[FieldOffset(164)]
public uint LongLongWidth;
[FieldOffset(168)]
public uint PointerAlign;
[FieldOffset(172)]
public uint PointerWidth;
[FieldOffset(176)]
public uint WCharAlign;
[FieldOffset(180)]
public uint WCharWidth;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser16ParserTargetInfoC2Ev")]
internal static extern void ctor_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser16ParserTargetInfoC2ERKS1_")]
internal static extern void cctor_1(global::System.IntPtr instance, global::System.IntPtr _0);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser16ParserTargetInfoD2Ev")]
internal static extern void dtor_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser16ParserTargetInfo6getABIEv")]
internal static extern global::System.IntPtr getABI_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser16ParserTargetInfo6setABIEPKc")]
internal static extern void setABI_0(global::System.IntPtr instance, global::System.IntPtr s);
}
public global::System.IntPtr __Instance { get; protected set; }
protected int __PointerAdjustment;
public static readonly System.Collections.Concurrent.ConcurrentDictionary<IntPtr, ParserTargetInfo> NativeToManagedMap = new System.Collections.Concurrent.ConcurrentDictionary<IntPtr, ParserTargetInfo>();
protected void*[] __OriginalVTables;
protected bool __ownsNativeInstance;
public static ParserTargetInfo __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
{
return new ParserTargetInfo(native.ToPointer(), skipVTables);
}
public static ParserTargetInfo __CreateInstance(ParserTargetInfo.Internal native, bool skipVTables = false)
{
return new ParserTargetInfo(native, skipVTables);
}
private static void* __CopyValue(ParserTargetInfo.Internal native)
{
var ret = Marshal.AllocHGlobal(184);
CppSharp.Parser.ParserTargetInfo.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return ret.ToPointer();
}
private ParserTargetInfo(ParserTargetInfo.Internal native, bool skipVTables = false)
: this(__CopyValue(native), skipVTables)
{
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
}
protected ParserTargetInfo(void* native, bool skipVTables = false)
{
if (native == null)
return;
__Instance = new global::System.IntPtr(native);
}
public ParserTargetInfo()
{
__Instance = Marshal.AllocHGlobal(184);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
Internal.ctor_0((__Instance + __PointerAdjustment));
}
public ParserTargetInfo(CppSharp.Parser.ParserTargetInfo _0)
{
__Instance = Marshal.AllocHGlobal(184);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
if (ReferenceEquals(_0, null))
throw new global::System.ArgumentNullException("_0", "Cannot be null because it is a C++ reference (&).");
var __arg0 = _0.__Instance;
Internal.cctor_1((__Instance + __PointerAdjustment), __arg0);
}
public void Dispose()
{
Dispose(disposing: true);
}
protected virtual void Dispose(bool disposing)
{
CppSharp.Parser.ParserTargetInfo __dummy;
NativeToManagedMap.TryRemove(__Instance, out __dummy);
Internal.dtor_0((__Instance + __PointerAdjustment));
if (__ownsNativeInstance)
Marshal.FreeHGlobal(__Instance);
}
public string ABI
{
get
{
var __ret = Internal.getABI_0((__Instance + __PointerAdjustment));
return Marshal.PtrToStringAnsi(__ret);
}
set
{
var __arg0 = Marshal.StringToHGlobalAnsi(value);
Internal.setABI_0((__Instance + __PointerAdjustment), __arg0);
Marshal.FreeHGlobal(__arg0);
}
}
public CppSharp.Parser.ParserIntType Char16Type
{
get
{
return ((Internal*) __Instance)->Char16Type;
}
set
{
((Internal*) __Instance)->Char16Type = value;
}
}
public CppSharp.Parser.ParserIntType Char32Type
{
get
{
return ((Internal*) __Instance)->Char32Type;
}
set
{
((Internal*) __Instance)->Char32Type = value;
}
}
public CppSharp.Parser.ParserIntType Int64Type
{
get
{
return ((Internal*) __Instance)->Int64Type;
}
set
{
((Internal*) __Instance)->Int64Type = value;
}
}
public CppSharp.Parser.ParserIntType IntMaxType
{
get
{
return ((Internal*) __Instance)->IntMaxType;
}
set
{
((Internal*) __Instance)->IntMaxType = value;
}
}
public CppSharp.Parser.ParserIntType IntPtrType
{
get
{
return ((Internal*) __Instance)->IntPtrType;
}
set
{
((Internal*) __Instance)->IntPtrType = value;
}
}
public CppSharp.Parser.ParserIntType SizeType
{
get
{
return ((Internal*) __Instance)->SizeType;
}
set
{
((Internal*) __Instance)->SizeType = value;
}
}
public CppSharp.Parser.ParserIntType UIntMaxType
{
get
{
return ((Internal*) __Instance)->UIntMaxType;
}
set
{
((Internal*) __Instance)->UIntMaxType = value;
}
}
public CppSharp.Parser.ParserIntType WCharType
{
get
{
return ((Internal*) __Instance)->WCharType;
}
set
{
((Internal*) __Instance)->WCharType = value;
}
}
public CppSharp.Parser.ParserIntType WIntType
{
get
{
return ((Internal*) __Instance)->WIntType;
}
set
{
((Internal*) __Instance)->WIntType = value;
}
}
public uint BoolAlign
{
get
{
return ((Internal*) __Instance)->BoolAlign;
}
set
{
((Internal*) __Instance)->BoolAlign = value;
}
}
public uint BoolWidth
{
get
{
return ((Internal*) __Instance)->BoolWidth;
}
set
{
((Internal*) __Instance)->BoolWidth = value;
}
}
public uint CharAlign
{
get
{
return ((Internal*) __Instance)->CharAlign;
}
set
{
((Internal*) __Instance)->CharAlign = value;
}
}
public uint CharWidth
{
get
{
return ((Internal*) __Instance)->CharWidth;
}
set
{
((Internal*) __Instance)->CharWidth = value;
}
}
public uint Char16Align
{
get
{
return ((Internal*) __Instance)->Char16Align;
}
set
{
((Internal*) __Instance)->Char16Align = value;
}
}
public uint Char16Width
{
get
{
return ((Internal*) __Instance)->Char16Width;
}
set
{
((Internal*) __Instance)->Char16Width = value;
}
}
public uint Char32Align
{
get
{
return ((Internal*) __Instance)->Char32Align;
}
set
{
((Internal*) __Instance)->Char32Align = value;
}
}
public uint Char32Width
{
get
{
return ((Internal*) __Instance)->Char32Width;
}
set
{
((Internal*) __Instance)->Char32Width = value;
}
}
public uint HalfAlign
{
get
{
return ((Internal*) __Instance)->HalfAlign;
}
set
{
((Internal*) __Instance)->HalfAlign = value;
}
}
public uint HalfWidth
{
get
{
return ((Internal*) __Instance)->HalfWidth;
}
set
{
((Internal*) __Instance)->HalfWidth = value;
}
}
public uint FloatAlign
{
get
{
return ((Internal*) __Instance)->FloatAlign;
}
set
{
((Internal*) __Instance)->FloatAlign = value;
}
}
public uint FloatWidth
{
get
{
return ((Internal*) __Instance)->FloatWidth;
}
set
{
((Internal*) __Instance)->FloatWidth = value;
}
}
public uint DoubleAlign
{
get
{
return ((Internal*) __Instance)->DoubleAlign;
}
set
{
((Internal*) __Instance)->DoubleAlign = value;
}
}
public uint DoubleWidth
{
get
{
return ((Internal*) __Instance)->DoubleWidth;
}
set
{
((Internal*) __Instance)->DoubleWidth = value;
}
}
public uint ShortAlign
{
get
{
return ((Internal*) __Instance)->ShortAlign;
}
set
{
((Internal*) __Instance)->ShortAlign = value;
}
}
public uint ShortWidth
{
get
{
return ((Internal*) __Instance)->ShortWidth;
}
set
{
((Internal*) __Instance)->ShortWidth = value;
}
}
public uint IntAlign
{
get
{
return ((Internal*) __Instance)->IntAlign;
}
set
{
((Internal*) __Instance)->IntAlign = value;
}
}
public uint IntWidth
{
get
{
return ((Internal*) __Instance)->IntWidth;
}
set
{
((Internal*) __Instance)->IntWidth = value;
}
}
public uint IntMaxTWidth
{
get
{
return ((Internal*) __Instance)->IntMaxTWidth;
}
set
{
((Internal*) __Instance)->IntMaxTWidth = value;
}
}
public uint LongAlign
{
get
{
return ((Internal*) __Instance)->LongAlign;
}
set
{
((Internal*) __Instance)->LongAlign = value;
}
}
public uint LongWidth
{
get
{
return ((Internal*) __Instance)->LongWidth;
}
set
{
((Internal*) __Instance)->LongWidth = value;
}
}
public uint LongDoubleAlign
{
get
{
return ((Internal*) __Instance)->LongDoubleAlign;
}
set
{
((Internal*) __Instance)->LongDoubleAlign = value;
}
}
public uint LongDoubleWidth
{
get
{
return ((Internal*) __Instance)->LongDoubleWidth;
}
set
{
((Internal*) __Instance)->LongDoubleWidth = value;
}
}
public uint LongLongAlign
{
get
{
return ((Internal*) __Instance)->LongLongAlign;
}
set
{
((Internal*) __Instance)->LongLongAlign = value;
}
}
public uint LongLongWidth
{
get
{
return ((Internal*) __Instance)->LongLongWidth;
}
set
{
((Internal*) __Instance)->LongLongWidth = value;
}
}
public uint PointerAlign
{
get
{
return ((Internal*) __Instance)->PointerAlign;
}
set
{
((Internal*) __Instance)->PointerAlign = value;
}
}
public uint PointerWidth
{
get
{
return ((Internal*) __Instance)->PointerWidth;
}
set
{
((Internal*) __Instance)->PointerWidth = value;
}
}
public uint WCharAlign
{
get
{
return ((Internal*) __Instance)->WCharAlign;
}
set
{
((Internal*) __Instance)->WCharAlign = value;
}
}
public uint WCharWidth
{
get
{
return ((Internal*) __Instance)->WCharWidth;
}
set
{
((Internal*) __Instance)->WCharWidth = value;
}
}
}
}
}

58
src/CppParser/Bindings/ParserGen.cs

@ -15,17 +15,18 @@ namespace CppSharp @@ -15,17 +15,18 @@ namespace CppSharp
/// </summary>
class ParserGen : ILibrary
{
const string LINUX_INCLUDE_BASE_DIR = "../../../../build/headers/x86_64-linux-gnu";
internal readonly GeneratorKind Kind;
internal readonly string Triple;
internal readonly CppAbi Abi;
internal readonly bool IsGnuCpp11Abi;
public ParserGen(GeneratorKind kind, string triple, CppAbi abi)
public ParserGen(GeneratorKind kind, string triple, CppAbi abi,
bool isGnuCpp11Abi = false)
{
Kind = kind;
Triple = triple;
Abi = abi;
IsGnuCpp11Abi = isGnuCpp11Abi;
}
static string GetSourceDirectory(string dir)
@ -77,31 +78,47 @@ namespace CppSharp @@ -77,31 +78,47 @@ namespace CppSharp
options.OutputDir = Path.Combine(GetSourceDirectory("src"), "CppParser",
"Bindings", Kind.ToString());
var extraTriple = IsGnuCpp11Abi ? "-cxx11abi" : string.Empty;
if (Kind == GeneratorKind.CSharp)
options.OutputDir = Path.Combine(options.OutputDir, options.TargetTriple);
options.OutputDir = Path.Combine(options.OutputDir, options.TargetTriple + extraTriple);
options.GenerateLibraryNamespace = false;
options.CheckSymbols = false;
}
private static void SetupLinuxOptions(DriverOptions options)
private void SetupLinuxOptions(DriverOptions options)
{
options.MicrosoftMode = false;
options.NoBuiltinIncludes = true;
string[] sysincdirs = new[] {
"/usr/include/c++/4.8",
"/usr/include/x86_64-linux-gnu/c++/4.8",
"/usr/include/c++/4.8/backward",
"/usr/lib/gcc/x86_64-linux-gnu/4.8/include",
"/usr/include/x86_64-linux-gnu",
"/usr/include",
var headersPath = Platform.IsLinux ? string.Empty :
Path.Combine(GetSourceDirectory("build"), "headers", "x86_64-linux-gnu");
// Search for the available GCC versions on the provided headers.
var versions = Directory.EnumerateDirectories(Path.Combine(headersPath,
"usr/include/c++"));
if (versions.Count() == 0)
throw new Exception("No valid GCC version found on system include paths");
string gccVersionPath = versions.First();
string gccVersion = gccVersionPath.Substring(
gccVersionPath.LastIndexOf(Path.DirectorySeparatorChar) + 1);
string[] systemIncludeDirs = new[] {
Path.Combine("usr", "include", "c++", gccVersion),
Path.Combine("usr", "include", "x86_64-linux-gnu", "c++", gccVersion),
Path.Combine("usr", "include", "c++", gccVersion, "backward"),
Path.Combine("usr", "lib", "gcc", "x86_64-linux-gnu", gccVersion, "include"),
Path.Combine("usr", "include", "x86_64-linux-gnu"),
Path.Combine("usr", "include")
};
foreach (var dir in sysincdirs)
{
options.addSystemIncludeDirs(LINUX_INCLUDE_BASE_DIR + dir);
}
foreach (var dir in systemIncludeDirs)
options.addSystemIncludeDirs(Path.Combine(headersPath, dir));
options.addDefines("_GLIBCXX_USE_CXX11_ABI=" + (IsGnuCpp11Abi ? "1" : "0"));
}
private static void SetupMacOptions(DriverOptions options)
@ -183,13 +200,18 @@ namespace CppSharp @@ -183,13 +200,18 @@ namespace CppSharp
Console.WriteLine();
}
if (Directory.Exists(LINUX_INCLUDE_BASE_DIR))
var linuxHeadersPath = Path.Combine(GetSourceDirectory("build"), @"headers\x86_64-linux-gnu");
if (Directory.Exists(linuxHeadersPath) || Platform.IsLinux)
{
Console.WriteLine("Generating the C# parser bindings for Linux...");
ConsoleDriver.Run(new ParserGen(GeneratorKind.CSharp, "x86_64-linux-gnu",
CppAbi.Itanium));
Console.WriteLine();
Console.WriteLine("Generating the C# parser bindings for Linux (GCC C++11 ABI)...");
ConsoleDriver.Run(new ParserGen(GeneratorKind.CSharp, "x86_64-linux-gnu",
CppAbi.Itanium, isGnuCpp11Abi: true));
Console.WriteLine();
}
}
}

Loading…
Cancel
Save