Browse Source

Added an option to enable or disable RTTI (#892)

Fixes #819
pull/894/head
Mohit Mohta 9 years ago committed by Dimitar Dobrev
parent
commit
5227e517fc
  1. 1
      src/CppParser/Parser.cpp
  2. 2
      src/Generator/Driver.cs
  3. 15
      src/Parser/ParserOptions.cs

1
src/CppParser/Parser.cpp

@ -269,7 +269,6 @@ void Parser::SetupHeader()
args.push_back(opts->microsoftMode ? "-std=gnu++14" : "-std=gnu++11"); args.push_back(opts->microsoftMode ? "-std=gnu++14" : "-std=gnu++11");
break; break;
} }
args.push_back("-fno-rtti");
for (unsigned I = 0, E = opts->Arguments.size(); I != E; ++I) for (unsigned I = 0, E = opts->Arguments.size(); I != E; ++I)
{ {

2
src/Generator/Driver.cs

@ -65,7 +65,7 @@ namespace CppSharp
public void Setup() public void Setup()
{ {
ValidateOptions(); ValidateOptions();
ParserOptions.SetupIncludes(); ParserOptions.Setup();
Context = new BindingContext(Options, ParserOptions); Context = new BindingContext(Options, ParserOptions);
Context.TypeMaps.SetupTypeMaps(Options.GeneratorKind); Context.TypeMaps.SetupTypeMaps(Options.GeneratorKind);
Generator = CreateGeneratorFromKind(Options.GeneratorKind); Generator = CreateGeneratorFromKind(Options.GeneratorKind);

15
src/Parser/ParserOptions.cs

@ -14,6 +14,7 @@ namespace CppSharp.Parser
public bool IsItaniumLikeAbi { get { return Abi != CppAbi.Microsoft; } } public bool IsItaniumLikeAbi { get { return Abi != CppAbi.Microsoft; } }
public bool IsMicrosoftAbi { get { return Abi == CppAbi.Microsoft; } } public bool IsMicrosoftAbi { get { return Abi == CppAbi.Microsoft; } }
public bool EnableRtti { get; set; }
/// Sets up the parser options to work with the given Visual Studio toolchain. /// Sets up the parser options to work with the given Visual Studio toolchain.
public void SetupMSVC() public void SetupMSVC()
@ -72,12 +73,24 @@ namespace CppSharp.Parser
AddArguments("-stdlib=libc++"); AddArguments("-stdlib=libc++");
} }
public void SetupIncludes() public void Setup()
{
SetupArguments();
SetupIncludes();
}
private void SetupIncludes()
{ {
if (Platform.IsMacOS) if (Platform.IsMacOS)
SetupXcode(); SetupXcode();
else if (Platform.IsWindows && !NoBuiltinIncludes) else if (Platform.IsWindows && !NoBuiltinIncludes)
SetupMSVC(); SetupMSVC();
} }
private void SetupArguments()
{
if (!EnableRtti)
AddArguments("-fno-rtti");
}
} }
} }

Loading…
Cancel
Save