Browse Source

Removed the out parameter when looking for a version of Visual Studio.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/940/head
Dimitar Dobrev 9 years ago
parent
commit
f992cd8280
  1. 59
      src/Core/Toolchains/MSVCToolchain.cs
  2. 8
      src/Parser/ParserOptions.cs

59
src/Core/Toolchains/MSVCToolchain.cs

@ -80,8 +80,7 @@ namespace CppSharp @@ -80,8 +80,7 @@ namespace CppSharp
VisualStudioVersion.Latest)
{
Console.WriteLine("\nInclude search path (VS: {0}):", vsVersion);
VisualStudioVersion foundVsVersion;
foreach (var include in GetSystemIncludes(vsVersion, out foundVsVersion))
foreach (var include in GetSystemIncludes(vsVersion))
Console.WriteLine($"\t{include}");
}
@ -162,49 +161,41 @@ namespace CppSharp @@ -162,49 +161,41 @@ namespace CppSharp
return windowsKitSdk;
}
/// <summary>Gets the system include folders for the given Visual Studio version.</summary>
/// <param name="wantedVsVersion">The version of Visual Studio to get
/// system includes from.</param>
/// <param name="foundVsVersion">The found version of Visual Studio
/// system includes are actually got from.</param>
public static List<string> GetSystemIncludes(VisualStudioVersion wantedVsVersion,
out VisualStudioVersion foundVsVersion)
{
var vsSdk = GetVisualStudioSdk(wantedVsVersion, out foundVsVersion);
var vsDir = vsSdk.Directory;
if (Path.GetFileName(vsDir) == "IDE")
{
string secondToLastDirPath = Path.GetDirectoryName(vsDir);
if (Path.GetFileName(secondToLastDirPath) == "Common7")
vsDir = Path.GetDirectoryName(secondToLastDirPath);
}
return GetSystemIncludes(foundVsVersion, vsDir);
}
private static ToolchainVersion GetVisualStudioSdk(
VisualStudioVersion wantedVsVersion, out VisualStudioVersion foundVsVersion)
public static VisualStudioVersion FindVSVersion(VisualStudioVersion vsVersion)
{
if (wantedVsVersion != VisualStudioVersion.Latest)
if (vsVersion != VisualStudioVersion.Latest)
{
var vsSdk = GetVSToolchain(wantedVsVersion);
var vsSdk = GetVSToolchain(vsVersion);
if (vsSdk.IsValid)
{
foundVsVersion = wantedVsVersion;
return vsSdk;
}
return vsVersion;
}
// we don't know what "latest" is on a given machine
// so start from the latest specified version and loop until a match is found
for (var i = VisualStudioVersion.Latest - 1; i >= VisualStudioVersion.VS2012; i--)
{
var vsSdk = GetVisualStudioSdk(i, out foundVsVersion);
if (vsSdk.IsValid)
return vsSdk;
vsVersion = FindVSVersion(i);
if (vsVersion != VisualStudioVersion.Latest)
return vsVersion;
}
foundVsVersion = VisualStudioVersion.Latest;
return new ToolchainVersion();
return VisualStudioVersion.Latest;
}
/// <summary>Gets the system include folders for the given Visual Studio version.</summary>
/// <param name="vsVersion">The version of Visual Studio to get
/// system includes from.</param>
public static List<string> GetSystemIncludes(VisualStudioVersion vsVersion)
{
var vsSdk = GetVSToolchain(vsVersion);
var vsDir = vsSdk.Directory;
if (Path.GetFileName(vsDir) == "IDE")
{
string secondToLastDirPath = Path.GetDirectoryName(vsDir);
if (Path.GetFileName(secondToLastDirPath) == "Common7")
vsDir = Path.GetDirectoryName(secondToLastDirPath);
}
return GetSystemIncludes(vsVersion, vsDir);
}
private static void DumpSdks(string sku, IEnumerable<ToolchainVersion> sdks)

8
src/Parser/ParserOptions.cs

@ -95,6 +95,7 @@ namespace CppSharp.Parser @@ -95,6 +95,7 @@ namespace CppSharp.Parser
/// <summary>
/// Sets up the parser options to work with the given Visual Studio toolchain.
/// </summary>
/// <param name="vsVersion">The version of Visual Studio to look for.</param>
public void SetupMSVC(VisualStudioVersion vsVersion)
{
MicrosoftMode = true;
@ -102,15 +103,14 @@ namespace CppSharp.Parser @@ -102,15 +103,14 @@ namespace CppSharp.Parser
NoStandardIncludes = true;
Abi = CppAbi.Microsoft;
VisualStudioVersion foundVsVersion;
var includes = MSVCToolchain.GetSystemIncludes(vsVersion, out foundVsVersion);
foreach (var include in includes)
vsVersion = MSVCToolchain.FindVSVersion(vsVersion);
foreach (var include in MSVCToolchain.GetSystemIncludes(vsVersion))
AddSystemIncludeDirs(include);
if (!LanguageVersion.HasValue)
LanguageVersion = CppSharp.Parser.LanguageVersion.CPP14_GNU;
var clVersion = MSVCToolchain.GetCLVersion(foundVsVersion);
var clVersion = MSVCToolchain.GetCLVersion(vsVersion);
ToolSetToUse = clVersion.Major * 10000000 + clVersion.Minor * 100000;
AddArguments("-fms-extensions");

Loading…
Cancel
Save