Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
m---------main/external/debugger-libs0
-rw-r--r--main/src/addins/MonoDevelop.Debugger.Soft/MonoDevelop.Debugger.Soft/SoftDebuggerEngine.cs2
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/MonoRuntimeInfo.cs21
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/MonoTargetRuntime.cs2
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/MonoTargetRuntimeFactory.cs59
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/MonoRuntimePanel.cs35
6 files changed, 83 insertions, 36 deletions
diff --git a/main/external/debugger-libs b/main/external/debugger-libs
-Subproject 5be3f8a20c067427dfbad4ff196f40a64189191
+Subproject fc339ef4b095026ae8d05f8ac32bf2fc385dccd
diff --git a/main/src/addins/MonoDevelop.Debugger.Soft/MonoDevelop.Debugger.Soft/SoftDebuggerEngine.cs b/main/src/addins/MonoDevelop.Debugger.Soft/MonoDevelop.Debugger.Soft/SoftDebuggerEngine.cs
index 98d5f6edab..aa0993debf 100644
--- a/main/src/addins/MonoDevelop.Debugger.Soft/MonoDevelop.Debugger.Soft/SoftDebuggerEngine.cs
+++ b/main/src/addins/MonoDevelop.Debugger.Soft/MonoDevelop.Debugger.Soft/SoftDebuggerEngine.cs
@@ -92,7 +92,7 @@ namespace MonoDevelop.Debugger.Soft
ExternalConsoleFactory.Instance.CreateConsole (dsi.CloseExternalConsoleOnExit), varsCopy);
return new ProcessAdapter (oper, Path.GetFileName (info.FileName));
};
-
+ startArgs.MonoExecutableFileName = runtime.MonoRuntimeInfo.Force64or32bit.HasValue ? runtime.MonoRuntimeInfo.Force64or32bit.Value ? "mono64" : "mono32" : "mono";
return dsi;
}
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/MonoRuntimeInfo.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/MonoRuntimeInfo.cs
index 164ed5c2e3..afb2374bed 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/MonoRuntimeInfo.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/MonoRuntimeInfo.cs
@@ -39,6 +39,9 @@ namespace MonoDevelop.Core.Assemblies
{
[ItemProperty]
string prefix;
+
+ [ItemProperty]
+ bool? force64or32bit;
string monoVersion = "Unknown";
Dictionary<string,string> envVars = new Dictionary<string, string> ();
@@ -48,16 +51,21 @@ namespace MonoDevelop.Core.Assemblies
internal MonoRuntimeInfo ()
{
}
-
- public MonoRuntimeInfo (string prefix)
+
+ public MonoRuntimeInfo (string prefix, bool? force64or32bit = null)
{
+ this.force64or32bit = force64or32bit;
this.prefix = prefix;
Initialize ();
}
-
+
public string Prefix {
get { return prefix; }
}
+
+ public bool? Force64or32bit {
+ get { return force64or32bit; }
+ }
/// <summary>
/// This string is strictly for displaying to the user or logging. It should never be used for version checks.
@@ -70,7 +78,10 @@ namespace MonoDevelop.Core.Assemblies
}
public string DisplayName {
- get { return "Mono " + MonoVersion + " (" + prefix + ")"; }
+ get {
+ return "Mono " + MonoVersion + " (" + prefix + ")" +
+ (force64or32bit.HasValue ? (force64or32bit.Value ? " (64 bit)" : " (32 bit)") : "");
+ }
}
public bool IsValidRuntime {
@@ -103,7 +114,7 @@ namespace MonoDevelop.Core.Assemblies
StringWriter output = new StringWriter ();
try {
string monoPath = Path.Combine (prefix, "bin");
- monoPath = Path.Combine (monoPath, "mono");
+ monoPath = Path.Combine (monoPath, force64or32bit.HasValue ? (force64or32bit.Value ? "mono64" : "mono32") : "mono");
ProcessStartInfo pi = new ProcessStartInfo (monoPath, "--version");
pi.UseShellExecute = false;
pi.RedirectStandardOutput = true;
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/MonoTargetRuntime.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/MonoTargetRuntime.cs
index 84fc117ddc..a939c98153 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/MonoTargetRuntime.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/MonoTargetRuntime.cs
@@ -99,7 +99,7 @@ namespace MonoDevelop.Core.Assemblies
public override string DisplayName {
get {
if (!IsRunning)
- return base.DisplayName + " (" + Prefix + ")";
+ return base.DisplayName + " (" + Prefix + ")" + (monoRuntimeInfo.Force64or32bit.HasValue ? monoRuntimeInfo.Force64or32bit.Value ? " (64bit)" : " (32bit)" : "");
else
return base.DisplayName;
}
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/MonoTargetRuntimeFactory.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/MonoTargetRuntimeFactory.cs
index 777f3e5399..3a8cd189d9 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/MonoTargetRuntimeFactory.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/MonoTargetRuntimeFactory.cs
@@ -32,19 +32,38 @@ using MonoDevelop.Core.Serialization;
namespace MonoDevelop.Core.Assemblies
{
- class MonoTargetRuntimeFactory: ITargetRuntimeFactory
+ class MonoTargetRuntimeFactory : ITargetRuntimeFactory
{
static RuntimeCollection customRuntimes = new RuntimeCollection ();
static string configFile = UserProfile.Current.ConfigDir.Combine ("mono-runtimes.xml");
- static string[] commonLinuxPrefixes = new string[] { "/usr", "/usr/local" };
-
+ static string [] commonLinuxPrefixes = new string [] { "/usr", "/usr/local" };
+
static MonoTargetRuntimeFactory ()
{
LoadRuntimes ();
}
-
+
const string MAC_FRAMEWORK_DIR = "/Library/Frameworks/Mono.framework/Versions";
+ static IEnumerable<MonoRuntimeInfo> GetAllArchitecturesOfRuntimes (string dir)
+ {
+ var rinfo64 = new MonoRuntimeInfo (dir, true);
+ var rinfo32 = new MonoRuntimeInfo (dir, false);
+ if (rinfo64.IsValidRuntime && rinfo32.IsValidRuntime) {
+ yield return rinfo64;
+ yield return rinfo32;
+ } else if (rinfo64.IsValidRuntime) {
+ yield return rinfo64;
+ } else if (rinfo32.IsValidRuntime) {
+ yield return rinfo32;
+ } else {
+ var rinfo = new MonoRuntimeInfo (dir, null);
+ if (rinfo.IsValidRuntime) {
+ yield return rinfo;
+ }
+ }
+ }
+
public IEnumerable<TargetRuntime> CreateRuntimes ()
{
MonoRuntimeInfo currentRuntime = MonoRuntimeInfo.FromCurrentRuntime ();
@@ -54,34 +73,36 @@ namespace MonoDevelop.Core.Assemblies
if (Platform.IsWindows) {
string progs = Environment.GetFolderPath (Environment.SpecialFolder.ProgramFiles);
foreach (string dir in Directory.GetDirectories (progs, "Mono*")) {
- MonoRuntimeInfo info = new MonoRuntimeInfo (dir);
- if (info.IsValidRuntime)
+ foreach(var info in GetAllArchitecturesOfRuntimes(dir))
yield return new MonoTargetRuntime (info);
}
} else if (Platform.IsMac) {
if (!Directory.Exists (MAC_FRAMEWORK_DIR))
yield break;
foreach (string dir in Directory.GetDirectories (MAC_FRAMEWORK_DIR)) {
- if (dir.EndsWith ("/Current", StringComparison.Ordinal) || currentRuntime.Prefix == dir)
+ if (dir.EndsWith ("/Current", StringComparison.Ordinal))
continue;
- MonoRuntimeInfo info = new MonoRuntimeInfo (dir);
- if (info.IsValidRuntime)
+ foreach (var info in GetAllArchitecturesOfRuntimes (dir)) {
+ if (info.Prefix == currentRuntime.Prefix && info.Force64or32bit == currentRuntime.Force64or32bit)
+ continue;
yield return new MonoTargetRuntime (info);
+ }
}
} else {
foreach (string pref in commonLinuxPrefixes) {
- if (currentRuntime != null && currentRuntime.Prefix == pref)
- continue;
- MonoRuntimeInfo info = new MonoRuntimeInfo (pref);
- if (info.IsValidRuntime) {
- // Clean up old registered runtimes
- foreach (MonoRuntimeInfo ei in customRuntimes) {
- if (ei.Prefix == info.Prefix) {
- customRuntimes.Remove (ei);
- break;
+ foreach (var info in GetAllArchitecturesOfRuntimes (pref)) {
+ if (info.IsValidRuntime) {
+ if (currentRuntime != null && currentRuntime.Prefix == pref && currentRuntime.Force64or32bit == info.Force64or32bit)
+ continue;
+ // Clean up old registered runtimes
+ foreach (MonoRuntimeInfo ei in customRuntimes) {
+ if (ei.Prefix == info.Prefix) {
+ customRuntimes.Remove (ei);
+ break;
+ }
}
+ yield return new MonoTargetRuntime (info);
}
- yield return new MonoTargetRuntime (info);
}
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/MonoRuntimePanel.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/MonoRuntimePanel.cs
index fd70f5f9b0..511320179f 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/MonoRuntimePanel.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/MonoRuntimePanel.cs
@@ -122,13 +122,13 @@ namespace MonoDevelop.Ide.Gui.OptionPanels
return Environment.GetFolderPath (IntPtr.Size == 8?
Environment.SpecialFolder.ProgramFilesX86 : Environment.SpecialFolder.ProgramFiles);
}
-
+
protected virtual void OnButtonAddClicked (object sender, System.EventArgs e)
{
var dlg = new SelectFolderDialog (GettextCatalog.GetString ("Select the mono installation prefix")) {
TransientFor = this.Toplevel as Gtk.Window,
};
-
+
//set a platform-dependent default folder for the dialog if possible
if (Platform.IsWindows) {
// ProgramFilesX86 is broken on 32-bit WinXP
@@ -139,17 +139,32 @@ namespace MonoDevelop.Ide.Gui.OptionPanels
if (System.IO.Directory.Exists ("/usr"))
dlg.CurrentFolder = "/usr";
}
-
+
if (!dlg.Run ())
return;
-
- var rinfo = new MonoRuntimeInfo (dlg.SelectedFile);
- if (!rinfo.IsValidRuntime) {
- MessageService.ShowError (GettextCatalog.GetString ("Mono runtime not found"), GettextCatalog.GetString ("Please provide a valid directory prefix where mono is installed (for example, /usr)"));
- return;
+
+ var rinfo64 = new MonoRuntimeInfo (dlg.SelectedFile, true);
+ var rinfo32 = new MonoRuntimeInfo (dlg.SelectedFile, false);
+ if (rinfo64.IsValidRuntime && rinfo32.IsValidRuntime) {
+ newInfos.Add (rinfo64);
+ store.AppendValues (rinfo64.DisplayName, rinfo64);
+ newInfos.Add (rinfo32);
+ store.AppendValues (rinfo32.DisplayName, rinfo32);
+ } else if (rinfo64.IsValidRuntime) {
+ newInfos.Add (rinfo64);
+ store.AppendValues (rinfo64.DisplayName, rinfo64);
+ } else if (rinfo32.IsValidRuntime) {
+ newInfos.Add (rinfo32);
+ store.AppendValues (rinfo32.DisplayName, rinfo32);
+ } else {
+ var rinfo = new MonoRuntimeInfo (dlg.SelectedFile, null);
+ if (rinfo.IsValidRuntime) {
+ newInfos.Add (rinfo);
+ store.AppendValues (rinfo.DisplayName, rinfo);
+ } else {
+ MessageService.ShowError (GettextCatalog.GetString ("Mono runtime not found"), GettextCatalog.GetString ("Please provide a valid directory prefix where mono is installed (for example, /usr)"));
+ }
}
- newInfos.Add (rinfo);
- store.AppendValues (rinfo.DisplayName, rinfo);
}
protected virtual void OnButtonRemoveClicked (object sender, System.EventArgs e)