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

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/msvc
diff options
context:
space:
mode:
authorJay Krell <jay.krell@cornell.edu>2019-03-25 12:55:15 +0300
committerAlexander Köplinger <alex.koeplinger@outlook.com>2019-03-25 12:55:15 +0300
commit004314e9ddf5dd93c7d9f2a3b696c5e10194fb71 (patch)
treef9f0c6e399746957b3ca0186da930dd27ee989f7 /msvc
parenteb1cb188a6a3b4797a34ffb4510d7b36dab9a0ef (diff)
[windows]Fix and cleanup configure.ac parsing for MONO_CORLIB_VERSION and ACINIT. (#13630)
Not just a guid or an uppercase guid.
Diffstat (limited to 'msvc')
-rw-r--r--msvc/mono.winconfig.targets61
1 files changed, 45 insertions, 16 deletions
diff --git a/msvc/mono.winconfig.targets b/msvc/mono.winconfig.targets
index cc0b51a7b11..17f3539d12e 100644
--- a/msvc/mono.winconfig.targets
+++ b/msvc/mono.winconfig.targets
@@ -22,35 +22,51 @@
public class _WinConfigSetup : Task
{
- void GetVersionsFromConfigureAC (string configureACFile, out string monoVersion, out string monoCorlibVersion)
- {
+ bool GetVersionsFromConfigureAC (string configureACFile, out string monoVersion, out string monoCorlibVersion)
+ {
+ bool result = true;
monoVersion = null;
monoCorlibVersion = null;
if (File.Exists (configureACFile))
- {
- var monoVersionRegEx = new Regex (@"(.*AC_INIT\(mono, \[)(\d+\.\d+\.\d+)");
- var monoCorlibVersionRegEx = new Regex (@"(MONO_CORLIB_VERSION=)([A-F0-9]{8}(?:-[A-F0-9]{4}){3}-[A-F0-9]{12})");
+ {
+ // These are both fairly arbitrary strings.
+ var monoVersionRegEx = new Regex (@"^AC_INIT\s*\(\s*mono,\s*\[?\s*([^\],\s]+)");
+ var monoCorlibVersionRegEx = new Regex (@"^MONO_CORLIB_VERSION\s*=\s*(\S+)");
using (StreamReader reader = new StreamReader (configureACFile))
- {
+ {
string line;
while ((line = reader.ReadLine ()) != null && (monoVersion == null || monoCorlibVersion == null))
- {
+ {
var monoVersionMatch = monoVersionRegEx.Match (line);
- if (monoVersionMatch != null && monoVersionMatch.Success && monoVersionMatch.Groups.Count == 3)
- {
- monoVersion = monoVersionMatch.Groups[2].Value;
+ if (monoVersionMatch.Success)
+ {
+ if (monoVersion != null)
+ {
+ Log.LogError("duplicate MONO_INIT in {0}", configureACFile);
+ result = false;
+ }
+ monoVersion = monoVersionMatch.Groups[1].Value;
+ Log.LogMessage ("{0}:AC_INIT:MONO_VERSION=\"{1}\"", configureACFile, monoVersion);
continue;
}
var monoCorlibVersionMatch = monoCorlibVersionRegEx.Match (line);
- if (monoCorlibVersionMatch != null && monoCorlibVersionMatch.Success && monoCorlibVersionMatch.Groups.Count == 3)
- {
- monoCorlibVersion = monoCorlibVersionMatch.Groups[2].Value;
+ if (monoCorlibVersionMatch.Success)
+ {
+ if (monoCorlibVersion != null)
+ {
+ // This is misleading. The loop stops when both found, so duplicates usually not noticed.
+ Log.LogError("duplicate MONO_CORLIB_VERSION in {0}", configureACFile);
+ result = false;
+ }
+ monoCorlibVersion = monoCorlibVersionMatch.Groups[1].Value;
+ Log.LogMessage ("{0}:MONO_CORLIB_VERSION=\"{1}\"", configureACFile, monoCorlibVersion);
continue;
}
}
}
- }
+ }
+ return result;
}
string [] GetDisabledConfigFeatures (string path)
@@ -258,7 +274,20 @@
string monoVersion = null;
string monoCorlibVersion = null;
- GetVersionsFromConfigureAC (configureACFile, out monoVersion, out monoCorlibVersion);
+ if (!GetVersionsFromConfigureAC (configureACFile, out monoVersion, out monoCorlibVersion))
+ return false;
+
+ if (monoVersion == null)
+ {
+ Log.LogError("failed to parse version from AC_INIT in {0}", configureACFile);
+ return false;
+ }
+
+ if (monoCorlibVersion == null)
+ {
+ Log.LogError("failed to parse MONO_CORLIB_VERSION from {0}", configureACFile);
+ return false;
+ }
var disableDefines = GetDisabledConfigFeatures (cygConfigFile);
var enableDefines = (EnableDefines != null) ? EnableDefines.Split (';') : null;
@@ -267,7 +296,7 @@
CreateVersionFile (versionFile);
- Log.LogMessage (MessageImportance.High, "Successfully setup Mono configuration headers.");
+ Log.LogMessage (MessageImportance.High, "Successfully setup Mono configuration headers {0} and {1} from {2}.", configFile, versionFile, winConfigFile);
return true;
}