From 39d99d8fa6993d9da2ff6ef1107044dcbe5ed356 Mon Sep 17 00:00:00 2001 From: Jonathan Pobst Date: Thu, 19 Dec 2019 16:29:59 -0600 Subject: [PATCH 01/12] Convert more projects to SDK-style. --- build-tools/automation/azure-pipelines.yaml | 6 +- samples/Hello/Hello.csproj | 57 +- samples/Hello/Properties/AssemblyInfo.cs | 22 - .../Java.Interop.Dynamic.csproj | 1 + .../Java.Interop.Export.csproj | 1 + .../Java.Interop.GenericMarshaler.csproj | 1 + .../Java.Interop.Tools.Cecil.csproj | 1 + .../Java.Interop.Tools.Diagnostics.csproj | 3 +- ....Interop.Tools.JavaCallableWrappers.csproj | 1 + src/Java.Interop/Java.Interop.csproj | 1 + ...droid.Tools.AnnotationSupport.Cecil.csproj | 1 + ...rin.Android.Tools.AnnotationSupport.csproj | 1 + ...amarin.Android.Tools.ApiXmlAdjuster.csproj | 3 +- .../Xamarin.Android.Tools.Bytecode.csproj | 1 + tools/class-parse/Mono.Options-PCL.cs | 1414 ----------------- tools/class-parse/Properties/AssemblyInfo.cs | 27 - tools/class-parse/class-parse.csproj | 58 +- tools/class-parse/packages.config | 4 - tools/generator/generator.csproj | 162 +- tools/generator/packages.config | 5 - tools/jcw-gen/Properties/AssemblyInfo.cs | 27 - tools/jcw-gen/jcw-gen.csproj | 71 +- tools/jcw-gen/packages.config | 4 - .../Properties/AssemblyInfo.cs | 27 - ...oid.Tools.JniMarshalMethodGenerator.csproj | 78 +- tools/jnimarshalmethod-gen/packages.config | 4 - tools/logcat-parse/Mono.Options-PCL.cs | 1414 ----------------- tools/logcat-parse/Properties/AssemblyInfo.cs | 22 - tools/logcat-parse/logcat-parse.csproj | 66 +- tools/logcat-parse/packages.config | 6 - 30 files changed, 116 insertions(+), 3373 deletions(-) delete mode 100644 samples/Hello/Properties/AssemblyInfo.cs delete mode 100644 tools/class-parse/Mono.Options-PCL.cs delete mode 100644 tools/class-parse/Properties/AssemblyInfo.cs delete mode 100644 tools/class-parse/packages.config delete mode 100644 tools/generator/packages.config delete mode 100644 tools/jcw-gen/Properties/AssemblyInfo.cs delete mode 100644 tools/jcw-gen/packages.config delete mode 100644 tools/jnimarshalmethod-gen/Properties/AssemblyInfo.cs delete mode 100644 tools/jnimarshalmethod-gen/packages.config delete mode 100644 tools/logcat-parse/Mono.Options-PCL.cs delete mode 100644 tools/logcat-parse/Properties/AssemblyInfo.cs delete mode 100644 tools/logcat-parse/packages.config diff --git a/build-tools/automation/azure-pipelines.yaml b/build-tools/automation/azure-pipelines.yaml index 584b2fa28..f57f77556 100644 --- a/build-tools/automation/azure-pipelines.yaml +++ b/build-tools/automation/azure-pipelines.yaml @@ -4,6 +4,10 @@ trigger: - master - d16-* +pr: + - master + - d16-* + # Global variables variables: DotNetCoreVersion: 3.1.100 @@ -93,7 +97,7 @@ jobs: - script: | r=0 make run-all-tests CONFIGURATION=$(Build.Configuration) || r=$? - jar cf xatb.jar -C src/Xamarin.Android.Tools.Bytecode/Tests/obj/*/classes . + jar cf xatb.jar -C tests/Xamarin.Android.Tools.Bytecode-Tests/obj/*/classes . zip -r bin.zip bin exit $r displayName: Run Tests diff --git a/samples/Hello/Hello.csproj b/samples/Hello/Hello.csproj index d1f23a305..d524c3877 100644 --- a/samples/Hello/Hello.csproj +++ b/samples/Hello/Hello.csproj @@ -1,52 +1,23 @@ - - + + - Debug - AnyCPU - 8.0.30703 - 2.0 - {F3ECB73D-9263-4E42-A5B4-3FC0D1D829F9} + net472 Exe - Hello - Hello - v4.6.1 + false + true - - true - full - false + + ..\..\bin\TestDebug - DEBUG; - prompt - 4 - true - true - - full - true + + ..\..\bin\TestRelease - prompt - 4 - true - true + - - - - - - - - - - {94BD81F7-B06F-4295-9636-F8A3B6BDC762} - Java.Interop - - - {5887B410-D448-4257-A46B-EAC03C80BE93} - Java.Runtime.Environment - + + - \ No newline at end of file + + diff --git a/samples/Hello/Properties/AssemblyInfo.cs b/samples/Hello/Properties/AssemblyInfo.cs deleted file mode 100644 index 96e0e8f12..000000000 --- a/samples/Hello/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. -[assembly: AssemblyTitle ("Hello")] -[assembly: AssemblyDescription ("")] -[assembly: AssemblyConfiguration ("")] -[assembly: AssemblyCompany ("")] -[assembly: AssemblyProduct ("")] -[assembly: AssemblyCopyright ("jon")] -[assembly: AssemblyTrademark ("")] -[assembly: AssemblyCulture ("")] -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. -[assembly: AssemblyVersion ("1.0.*")] -// The following attributes are used to specify the signing key for the assembly, -// if desired. See the Mono documentation for more information about signing. -//[assembly: AssemblyDelaySign(false)] -//[assembly: AssemblyKeyFile("")] - diff --git a/src/Java.Interop.Dynamic/Java.Interop.Dynamic.csproj b/src/Java.Interop.Dynamic/Java.Interop.Dynamic.csproj index f0c557f43..2cf775231 100644 --- a/src/Java.Interop.Dynamic/Java.Interop.Dynamic.csproj +++ b/src/Java.Interop.Dynamic/Java.Interop.Dynamic.csproj @@ -10,6 +10,7 @@ Microsoft Corporation Microsoft Corporation 0.1.0.0 + false ..\..\bin\Debug diff --git a/src/Java.Interop.Export/Java.Interop.Export.csproj b/src/Java.Interop.Export/Java.Interop.Export.csproj index c60f6387e..f2fe47325 100644 --- a/src/Java.Interop.Export/Java.Interop.Export.csproj +++ b/src/Java.Interop.Export/Java.Interop.Export.csproj @@ -9,6 +9,7 @@ Microsoft Corporation Microsoft Corporation 0.1.0.0 + false ..\..\bin\Debug diff --git a/src/Java.Interop.GenericMarshaler/Java.Interop.GenericMarshaler.csproj b/src/Java.Interop.GenericMarshaler/Java.Interop.GenericMarshaler.csproj index 138b6ec0c..75c52e2f9 100644 --- a/src/Java.Interop.GenericMarshaler/Java.Interop.GenericMarshaler.csproj +++ b/src/Java.Interop.GenericMarshaler/Java.Interop.GenericMarshaler.csproj @@ -10,6 +10,7 @@ Microsoft Corporation Microsoft Corporation 0.1.0.0 + false ..\..\bin\Debug diff --git a/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil.csproj b/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil.csproj index 0b6132ab8..9f7b71bef 100644 --- a/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil.csproj +++ b/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil.csproj @@ -2,6 +2,7 @@ netstandard2.0 + false diff --git a/src/Java.Interop.Tools.Diagnostics/Java.Interop.Tools.Diagnostics.csproj b/src/Java.Interop.Tools.Diagnostics/Java.Interop.Tools.Diagnostics.csproj index 57070a402..b60f913bd 100644 --- a/src/Java.Interop.Tools.Diagnostics/Java.Interop.Tools.Diagnostics.csproj +++ b/src/Java.Interop.Tools.Diagnostics/Java.Interop.Tools.Diagnostics.csproj @@ -1,7 +1,8 @@ - + netstandard2.0 + false diff --git a/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers.csproj b/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers.csproj index 54105d9e4..2db2da771 100644 --- a/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers.csproj +++ b/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers.csproj @@ -2,6 +2,7 @@ netstandard2.0 + false diff --git a/src/Java.Interop/Java.Interop.csproj b/src/Java.Interop/Java.Interop.csproj index 625c8a782..211f11c8e 100644 --- a/src/Java.Interop/Java.Interop.csproj +++ b/src/Java.Interop/Java.Interop.csproj @@ -8,6 +8,7 @@ INTEROP;FEATURE_JNIENVIRONMENT_JI_PINVOKES;FEATURE_JNIOBJECTREFERENCE_INTPTRS;INTERNAL_NULLABLE_ATTRIBUTES true false + false ..\..\bin\Debug diff --git a/src/Xamarin.Android.Tools.AnnotationSupport.Cecil/Xamarin.Android.Tools.AnnotationSupport.Cecil.csproj b/src/Xamarin.Android.Tools.AnnotationSupport.Cecil/Xamarin.Android.Tools.AnnotationSupport.Cecil.csproj index 8527c2bc8..12d7e7090 100644 --- a/src/Xamarin.Android.Tools.AnnotationSupport.Cecil/Xamarin.Android.Tools.AnnotationSupport.Cecil.csproj +++ b/src/Xamarin.Android.Tools.AnnotationSupport.Cecil/Xamarin.Android.Tools.AnnotationSupport.Cecil.csproj @@ -2,6 +2,7 @@ netstandard2.0 + false diff --git a/src/Xamarin.Android.Tools.AnnotationSupport/Xamarin.Android.Tools.AnnotationSupport.csproj b/src/Xamarin.Android.Tools.AnnotationSupport/Xamarin.Android.Tools.AnnotationSupport.csproj index 1ff8b445e..a4b4d8666 100644 --- a/src/Xamarin.Android.Tools.AnnotationSupport/Xamarin.Android.Tools.AnnotationSupport.csproj +++ b/src/Xamarin.Android.Tools.AnnotationSupport/Xamarin.Android.Tools.AnnotationSupport.csproj @@ -2,6 +2,7 @@ netstandard2.0 + false diff --git a/src/Xamarin.Android.Tools.ApiXmlAdjuster/Xamarin.Android.Tools.ApiXmlAdjuster.csproj b/src/Xamarin.Android.Tools.ApiXmlAdjuster/Xamarin.Android.Tools.ApiXmlAdjuster.csproj index 339d7724b..4ce0e7df7 100644 --- a/src/Xamarin.Android.Tools.ApiXmlAdjuster/Xamarin.Android.Tools.ApiXmlAdjuster.csproj +++ b/src/Xamarin.Android.Tools.ApiXmlAdjuster/Xamarin.Android.Tools.ApiXmlAdjuster.csproj @@ -1,7 +1,8 @@ - + netstandard2.0 + false diff --git a/src/Xamarin.Android.Tools.Bytecode/Xamarin.Android.Tools.Bytecode.csproj b/src/Xamarin.Android.Tools.Bytecode/Xamarin.Android.Tools.Bytecode.csproj index b521d79b5..0a371d797 100644 --- a/src/Xamarin.Android.Tools.Bytecode/Xamarin.Android.Tools.Bytecode.csproj +++ b/src/Xamarin.Android.Tools.Bytecode/Xamarin.Android.Tools.Bytecode.csproj @@ -2,6 +2,7 @@ netstandard2.0 + false diff --git a/tools/class-parse/Mono.Options-PCL.cs b/tools/class-parse/Mono.Options-PCL.cs deleted file mode 100644 index 32e71a265..000000000 --- a/tools/class-parse/Mono.Options-PCL.cs +++ /dev/null @@ -1,1414 +0,0 @@ -// -// Options.cs -// -// Authors: -// Jonathan Pryor -// Federico Di Gregorio -// Rolf Bjarne Kvinge -// -// Copyright (C) 2008 Novell (http://www.novell.com) -// Copyright (C) 2009 Federico Di Gregorio. -// Copyright (C) 2012 Xamarin Inc (http://www.xamarin.com) -// Copyright (C) 2015 Tobias Schulz (https://github.com/tobiasschulz) -// -// Permission is hereby granted, free of charge, to any person obtaining -// a copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to -// permit persons to whom the Software is furnished to do so, subject to -// the following conditions: -// -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// - -// Compile With: -// gmcs -debug+ -r:System.Core Options.cs -o:NDesk.Options.dll -// gmcs -debug+ -d:LINQ -r:System.Core Options.cs -o:NDesk.Options.dll -// -// The LINQ version just changes the implementation of -// OptionSet.Parse(IEnumerable), and confers no semantic changes. - -// -// A Getopt::Long-inspired option parsing library for C#. -// -// NDesk.Options.OptionSet is built upon a key/value table, where the -// key is a option format string and the value is a delegate that is -// invoked when the format string is matched. -// -// Option format strings: -// Regex-like BNF Grammar: -// name: .+ -// type: [=:] -// sep: ( [^{}]+ | '{' .+ '}' )? -// aliases: ( name type sep ) ( '|' name type sep )* -// -// Each '|'-delimited name is an alias for the associated action. If the -// format string ends in a '=', it has a required value. If the format -// string ends in a ':', it has an optional value. If neither '=' or ':' -// is present, no value is supported. `=' or `:' need only be defined on one -// alias, but if they are provided on more than one they must be consistent. -// -// Each alias portion may also end with a "key/value separator", which is used -// to split option values if the option accepts > 1 value. If not specified, -// it defaults to '=' and ':'. If specified, it can be any character except -// '{' and '}' OR the *string* between '{' and '}'. If no separator should be -// used (i.e. the separate values should be distinct arguments), then "{}" -// should be used as the separator. -// -// Options are extracted either from the current option by looking for -// the option name followed by an '=' or ':', or is taken from the -// following option IFF: -// - The current option does not contain a '=' or a ':' -// - The current option requires a value (i.e. not a Option type of ':') -// -// The `name' used in the option format string does NOT include any leading -// option indicator, such as '-', '--', or '/'. All three of these are -// permitted/required on any named option. -// -// Option bundling is permitted so long as: -// - '-' is used to start the option group -// - all of the bundled options are a single character -// - at most one of the bundled options accepts a value, and the value -// provided starts from the next character to the end of the string. -// -// This allows specifying '-a -b -c' as '-abc', and specifying '-D name=value' -// as '-Dname=value'. -// -// Option processing is disabled by specifying "--". All options after "--" -// are returned by OptionSet.Parse() unchanged and unprocessed. -// -// Unprocessed options are returned from OptionSet.Parse(). -// -// Examples: -// int verbose = 0; -// OptionSet p = new OptionSet () -// .Add ("v", v => ++verbose) -// .Add ("name=|value=", v => Console.WriteLine (v)); -// p.Parse (new string[]{"-v", "--v", "/v", "-name=A", "/name", "B", "extra"}); -// -// The above would parse the argument string array, and would invoke the -// lambda expression three times, setting `verbose' to 3 when complete. -// It would also print out "A" and "B" to standard output. -// The returned array would contain the string "extra". -// -// C# 3.0 collection initializers are supported and encouraged: -// var p = new OptionSet () { -// { "h|?|help", v => ShowHelp () }, -// }; -// -// System.ComponentModel.TypeConverter is also supported, allowing the use of -// custom data types in the callback type; TypeConverter.ConvertFromString() -// is used to convert the value option to an instance of the specified -// type: -// -// var p = new OptionSet () { -// { "foo=", (Foo f) => Console.WriteLine (f.ToString ()) }, -// }; -// -// Random other tidbits: -// - Boolean options (those w/o '=' or ':' in the option format string) -// are explicitly enabled if they are followed with '+', and explicitly -// disabled if they are followed with '-': -// string a = null; -// var p = new OptionSet () { -// { "a", s => a = s }, -// }; -// p.Parse (new string[]{"-a"}); // sets v != null -// p.Parse (new string[]{"-a+"}); // sets v != null -// p.Parse (new string[]{"-a-"}); // sets v == null -// - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.ComponentModel; -using System.Globalization; -using System.IO; -using System.Runtime.Serialization; -using System.Text; -using System.Text.RegularExpressions; -using System.Linq; -using System.Reflection; - -namespace Mono.Options -{ - static class StringCoda - { - public static IEnumerable WrappedLines (string self, params int[] widths) - { - IEnumerable w = widths; - return WrappedLines (self, w); - } - - public static IEnumerable WrappedLines (string self, IEnumerable widths) - { - if (widths == null) - throw new ArgumentNullException ("widths"); - return CreateWrappedLinesIterator (self, widths); - } - - private static IEnumerable CreateWrappedLinesIterator (string self, IEnumerable widths) - { - if (string.IsNullOrEmpty (self)) { - yield return string.Empty; - yield break; - } - using (IEnumerator ewidths = widths.GetEnumerator ()) { - bool? hw = null; - int width = GetNextWidth (ewidths, int.MaxValue, ref hw); - int start = 0, end; - do { - end = GetLineEnd (start, width, self); - char c = self [end - 1]; - if (char.IsWhiteSpace (c)) - --end; - bool needContinuation = end != self.Length && !IsEolChar (c); - string continuation = ""; - if (needContinuation) { - --end; - continuation = "-"; - } - string line = self.Substring (start, end - start) + continuation; - yield return line; - start = end; - if (char.IsWhiteSpace (c)) - ++start; - width = GetNextWidth (ewidths, width, ref hw); - } while (start < self.Length); - } - } - - private static int GetNextWidth (IEnumerator ewidths, int curWidth, ref bool? eValid) - { - if (!eValid.HasValue || (eValid.HasValue && eValid.Value)) { - curWidth = (eValid = ewidths.MoveNext ()).Value ? ewidths.Current : curWidth; - // '.' is any character, - is for a continuation - const string minWidth = ".-"; - if (curWidth < minWidth.Length) - throw new ArgumentOutOfRangeException ("widths", - string.Format ("Element must be >= {0}, was {1}.", minWidth.Length, curWidth)); - return curWidth; - } - // no more elements, use the last element. - return curWidth; - } - - private static bool IsEolChar (char c) - { - return !char.IsLetterOrDigit (c); - } - - private static int GetLineEnd (int start, int length, string description) - { - int end = System.Math.Min (start + length, description.Length); - int sep = -1; - for (int i = start; i < end; ++i) { - if (description [i] == '\n') - return i + 1; - if (IsEolChar (description [i])) - sep = i + 1; - } - if (sep == -1 || end == description.Length) - return end; - return sep; - } - } - - public class OptionValueCollection : IList, IList - { - - List values = new List (); - OptionContext c; - - internal OptionValueCollection (OptionContext c) - { - this.c = c; - } - - #region ICollection - - void ICollection.CopyTo (Array array, int index) - { - (values as ICollection).CopyTo (array, index); - } - - bool ICollection.IsSynchronized { get { return (values as ICollection).IsSynchronized; } } - - object ICollection.SyncRoot { get { return (values as ICollection).SyncRoot; } } - - #endregion - - #region ICollection - - public void Add (string item) - { - values.Add (item); - } - - public void Clear () - { - values.Clear (); - } - - public bool Contains (string item) - { - return values.Contains (item); - } - - public void CopyTo (string[] array, int arrayIndex) - { - values.CopyTo (array, arrayIndex); - } - - public bool Remove (string item) - { - return values.Remove (item); - } - - public int Count { get { return values.Count; } } - - public bool IsReadOnly { get { return false; } } - - #endregion - - #region IEnumerable - - IEnumerator IEnumerable.GetEnumerator () - { - return values.GetEnumerator (); - } - - #endregion - - #region IEnumerable - - public IEnumerator GetEnumerator () - { - return values.GetEnumerator (); - } - - #endregion - - #region IList - - int IList.Add (object value) - { - return (values as IList).Add (value); - } - - bool IList.Contains (object value) - { - return (values as IList).Contains (value); - } - - int IList.IndexOf (object value) - { - return (values as IList).IndexOf (value); - } - - void IList.Insert (int index, object value) - { - (values as IList).Insert (index, value); - } - - void IList.Remove (object value) - { - (values as IList).Remove (value); - } - - void IList.RemoveAt (int index) - { - (values as IList).RemoveAt (index); - } - - bool IList.IsFixedSize { get { return false; } } - - object IList.this [int index] { get { return this [index]; } set { (values as IList) [index] = value; } } - - #endregion - - #region IList - - public int IndexOf (string item) - { - return values.IndexOf (item); - } - - public void Insert (int index, string item) - { - values.Insert (index, item); - } - - public void RemoveAt (int index) - { - values.RemoveAt (index); - } - - private void AssertValid (int index) - { - if (c.Option == null) - throw new InvalidOperationException ("OptionContext.Option is null."); - if (index >= c.Option.MaxValueCount) - throw new ArgumentOutOfRangeException ("index"); - if (c.Option.OptionValueType == OptionValueType.Required && - index >= values.Count) - throw new OptionException (string.Format ( - c.OptionSet.MessageLocalizer ("Missing required value for option '{0}'."), c.OptionName), - c.OptionName); - } - - public string this [int index] { - get { - AssertValid (index); - return index >= values.Count ? null : values [index]; - } - set { - values [index] = value; - } - } - - #endregion - - public List ToList () - { - return new List (values); - } - - public string[] ToArray () - { - return values.ToArray (); - } - - public override string ToString () - { - return string.Join (", ", values.ToArray ()); - } - } - - public class OptionContext - { - private Option option; - private string name; - private int index; - private OptionSet set; - private OptionValueCollection c; - - public OptionContext (OptionSet set) - { - this.set = set; - this.c = new OptionValueCollection (this); - } - - public Option Option { - get { return option; } - set { option = value; } - } - - public string OptionName { - get { return name; } - set { name = value; } - } - - public int OptionIndex { - get { return index; } - set { index = value; } - } - - public OptionSet OptionSet { - get { return set; } - } - - public OptionValueCollection OptionValues { - get { return c; } - } - } - - public enum OptionValueType - { - None, - Optional, - Required, - } - - public abstract class Option - { - string prototype, description; - string[] names; - OptionValueType type; - int count; - string[] separators; - bool hidden; - - protected Option (string prototype, string description) - : this (prototype, description, 1, false) - { - } - - protected Option (string prototype, string description, int maxValueCount) - : this (prototype, description, maxValueCount, false) - { - } - - protected Option (string prototype, string description, int maxValueCount, bool hidden) - { - if (prototype == null) - throw new ArgumentNullException ("prototype"); - if (prototype.Length == 0) - throw new ArgumentException ("Cannot be the empty string.", "prototype"); - if (maxValueCount < 0) - throw new ArgumentOutOfRangeException ("maxValueCount"); - - this.prototype = prototype; - this.description = description; - this.count = maxValueCount; - this.names = (this is OptionSet.Category) - // append GetHashCode() so that "duplicate" categories have distinct - // names, e.g. adding multiple "" categories should be valid. - ? new[]{ prototype + this.GetHashCode () } - : prototype.Split ('|'); - - if (this is OptionSet.Category) - return; - - this.type = ParsePrototype (); - this.hidden = hidden; - - if (this.count == 0 && type != OptionValueType.None) - throw new ArgumentException ( - "Cannot provide maxValueCount of 0 for OptionValueType.Required or " + - "OptionValueType.Optional.", - "maxValueCount"); - if (this.type == OptionValueType.None && maxValueCount > 1) - throw new ArgumentException ( - string.Format ("Cannot provide maxValueCount of {0} for OptionValueType.None.", maxValueCount), - "maxValueCount"); - if (Array.IndexOf (names, "<>") >= 0 && - ((names.Length == 1 && this.type != OptionValueType.None) || - (names.Length > 1 && this.MaxValueCount > 1))) - throw new ArgumentException ( - "The default option handler '<>' cannot require values.", - "prototype"); - } - - public string Prototype { get { return prototype; } } - - public string Description { get { return description; } } - - public OptionValueType OptionValueType { get { return type; } } - - public int MaxValueCount { get { return count; } } - - public bool Hidden { get { return hidden; } } - - public string[] GetNames () - { - return (string[])names.Clone (); - } - - public string[] GetValueSeparators () - { - if (separators == null) - return new string [0]; - return (string[])separators.Clone (); - } - - protected static T Parse (string value, OptionContext c) - { - Type tt = typeof(T); - TypeInfo ti = tt.GetTypeInfo (); - bool nullable = ti.IsValueType && ti.IsGenericType && - !ti.IsGenericTypeDefinition && - tt.GetGenericTypeDefinition () == typeof(Nullable<>); - Type targetType = nullable ? tt.GetTypeInfo ().GenericTypeArguments [0] : typeof(T); - //TypeConverter conv = TypeDescriptor.GetConverter (targetType); - T t = default (T); - try { - if (value != null) { - throw new ArgumentException (); - //t = (T)conv.ConvertFromString (value); - } - } catch (Exception e) { - throw new OptionException ( - string.Format ( - c.OptionSet.MessageLocalizer ($"Could not convert string `{value}' to type {targetType.Name} for option `{c.OptionName}'.")), - c.OptionName, e); - } - return t; - } - - internal string[] Names { get { return names; } } - - internal string[] ValueSeparators { get { return separators; } } - - static readonly char[] NameTerminator = new char[]{ '=', ':' }; - - private OptionValueType ParsePrototype () - { - char type = '\0'; - List seps = new List (); - for (int i = 0; i < names.Length; ++i) { - string name = names [i]; - if (name.Length == 0) - throw new ArgumentException ("Empty option names are not supported.", "prototype"); - - int end = name.IndexOfAny (NameTerminator); - if (end == -1) - continue; - names [i] = name.Substring (0, end); - if (type == '\0' || type == name [end]) - type = name [end]; - else - throw new ArgumentException ( - string.Format ("Conflicting option types: '{0}' vs. '{1}'.", type, name [end]), - "prototype"); - AddSeparators (name, end, seps); - } - - if (type == '\0') - return OptionValueType.None; - - if (count <= 1 && seps.Count != 0) - throw new ArgumentException ( - string.Format ("Cannot provide key/value separators for Options taking {0} value(s).", count), - "prototype"); - if (count > 1) { - if (seps.Count == 0) - this.separators = new string[]{ ":", "=" }; - else if (seps.Count == 1 && seps [0].Length == 0) - this.separators = null; - else - this.separators = seps.ToArray (); - } - - return type == '=' ? OptionValueType.Required : OptionValueType.Optional; - } - - private static void AddSeparators (string name, int end, ICollection seps) - { - int start = -1; - for (int i = end + 1; i < name.Length; ++i) { - switch (name [i]) { - case '{': - if (start != -1) - throw new ArgumentException ( - string.Format ("Ill-formed name/value separator found in \"{0}\".", name), - "prototype"); - start = i + 1; - break; - case '}': - if (start == -1) - throw new ArgumentException ( - string.Format ("Ill-formed name/value separator found in \"{0}\".", name), - "prototype"); - seps.Add (name.Substring (start, i - start)); - start = -1; - break; - default: - if (start == -1) - seps.Add (name [i].ToString ()); - break; - } - } - if (start != -1) - throw new ArgumentException ( - string.Format ("Ill-formed name/value separator found in \"{0}\".", name), - "prototype"); - } - - public void Invoke (OptionContext c) - { - OnParseComplete (c); - c.OptionName = null; - c.Option = null; - c.OptionValues.Clear (); - } - - protected abstract void OnParseComplete (OptionContext c); - - public override string ToString () - { - return Prototype; - } - } - - public abstract class ArgumentSource - { - - protected ArgumentSource () - { - } - - public abstract string[] GetNames (); - - public abstract string Description { get; } - - public abstract bool GetArguments (string value, out IEnumerable replacement); - - public static IEnumerable GetArguments (TextReader reader) - { - return GetArguments (reader, false); - } - - // Cribbed from mcs/driver.cs:LoadArgs(string) - static IEnumerable GetArguments (TextReader reader, bool close) - { - try { - StringBuilder arg = new StringBuilder (); - - string line; - while ((line = reader.ReadLine ()) != null) { - int t = line.Length; - - for (int i = 0; i < t; i++) { - char c = line [i]; - - if (c == '"' || c == '\'') { - char end = c; - - for (i++; i < t; i++) { - c = line [i]; - - if (c == end) - break; - arg.Append (c); - } - } else if (c == ' ') { - if (arg.Length > 0) { - yield return arg.ToString (); - arg.Length = 0; - } - } else - arg.Append (c); - } - if (arg.Length > 0) { - yield return arg.ToString (); - arg.Length = 0; - } - } - } finally { - if (close) - reader.Dispose (); - } - } - } - - public class OptionException : Exception - { - private string option; - - public OptionException () - { - } - - public OptionException (string message, string optionName) - : base (message) - { - this.option = optionName; - } - - public OptionException (string message, string optionName, Exception innerException) - : base (message, innerException) - { - this.option = optionName; - } - - public string OptionName { - get { return this.option; } - } - } - - public delegate void OptionAction (TKey key, TValue value); - - public class OptionSet : KeyedCollection - { - public OptionSet () - : this ((string f) => f) - { - } - - public OptionSet (Func localizer) - { - this.localizer = localizer; - this.roSources = new ReadOnlyCollection (sources); - } - - Func localizer; - - public Func MessageLocalizer { - get { return localizer; } - } - - List sources = new List (); - ReadOnlyCollection roSources; - - public ReadOnlyCollection ArgumentSources { - get { return roSources; } - } - - - protected override string GetKeyForItem (Option item) - { - if (item == null) - throw new ArgumentNullException ("option"); - if (item.Names != null && item.Names.Length > 0) - return item.Names [0]; - // This should never happen, as it's invalid for Option to be - // constructed w/o any names. - throw new InvalidOperationException ("Option has no names!"); - } - - [Obsolete ("Use KeyedCollection.this[string]")] - protected Option GetOptionForName (string option) - { - if (option == null) - throw new ArgumentNullException ("option"); - try { - return base [option]; - } catch (KeyNotFoundException) { - return null; - } - } - - protected override void InsertItem (int index, Option item) - { - base.InsertItem (index, item); - AddImpl (item); - } - - protected override void RemoveItem (int index) - { - Option p = Items [index]; - base.RemoveItem (index); - // KeyedCollection.RemoveItem() handles the 0th item - for (int i = 1; i < p.Names.Length; ++i) { - Dictionary.Remove (p.Names [i]); - } - } - - protected override void SetItem (int index, Option item) - { - base.SetItem (index, item); - AddImpl (item); - } - - private void AddImpl (Option option) - { - if (option == null) - throw new ArgumentNullException ("option"); - List added = new List (option.Names.Length); - try { - // KeyedCollection.InsertItem/SetItem handle the 0th name. - for (int i = 1; i < option.Names.Length; ++i) { - Dictionary.Add (option.Names [i], option); - added.Add (option.Names [i]); - } - } catch (Exception) { - foreach (string name in added) - Dictionary.Remove (name); - throw; - } - } - - public OptionSet Add (string header) - { - if (header == null) - throw new ArgumentNullException ("header"); - Add (new Category (header)); - return this; - } - - internal sealed class Category : Option - { - - // Prototype starts with '=' because this is an invalid prototype - // (see Option.ParsePrototype(), and thus it'll prevent Category - // instances from being accidentally used as normal options. - public Category (string description) - : base ("=:Category:= " + description, description) - { - } - - protected override void OnParseComplete (OptionContext c) - { - throw new NotSupportedException ("Category.OnParseComplete should not be invoked."); - } - } - - - public new OptionSet Add (Option option) - { - base.Add (option); - return this; - } - - sealed class ActionOption : Option - { - Action action; - - public ActionOption (string prototype, string description, int count, Action action) - : this (prototype, description, count, action, false) - { - } - - public ActionOption (string prototype, string description, int count, Action action, bool hidden) - : base (prototype, description, count, hidden) - { - if (action == null) - throw new ArgumentNullException ("action"); - this.action = action; - } - - protected override void OnParseComplete (OptionContext c) - { - action (c.OptionValues); - } - } - - public OptionSet Add (string prototype, Action action) - { - return Add (prototype, null, action); - } - - public OptionSet Add (string prototype, string description, Action action) - { - return Add (prototype, description, action, false); - } - - public OptionSet Add (string prototype, string description, Action action, bool hidden) - { - if (action == null) - throw new ArgumentNullException ("action"); - Option p = new ActionOption (prototype, description, 1, - delegate (OptionValueCollection v) { - action (v [0]); - }, hidden); - base.Add (p); - return this; - } - - public OptionSet Add (string prototype, OptionAction action) - { - return Add (prototype, null, action); - } - - public OptionSet Add (string prototype, string description, OptionAction action) - { - return Add (prototype, description, action, false); - } - - public OptionSet Add (string prototype, string description, OptionAction action, bool hidden) - { - if (action == null) - throw new ArgumentNullException ("action"); - Option p = new ActionOption (prototype, description, 2, - delegate (OptionValueCollection v) { - action (v [0], v [1]); - }, hidden); - base.Add (p); - return this; - } - - sealed class ActionOption : Option - { - Action action; - - public ActionOption (string prototype, string description, Action action) - : base (prototype, description, 1) - { - if (action == null) - throw new ArgumentNullException ("action"); - this.action = action; - } - - protected override void OnParseComplete (OptionContext c) - { - action (Parse (c.OptionValues [0], c)); - } - } - - sealed class ActionOption : Option - { - OptionAction action; - - public ActionOption (string prototype, string description, OptionAction action) - : base (prototype, description, 2) - { - if (action == null) - throw new ArgumentNullException ("action"); - this.action = action; - } - - protected override void OnParseComplete (OptionContext c) - { - action ( - Parse (c.OptionValues [0], c), - Parse (c.OptionValues [1], c)); - } - } - - public OptionSet Add (string prototype, Action action) - { - return Add (prototype, null, action); - } - - public OptionSet Add (string prototype, string description, Action action) - { - return Add (new ActionOption (prototype, description, action)); - } - - public OptionSet Add (string prototype, OptionAction action) - { - return Add (prototype, null, action); - } - - public OptionSet Add (string prototype, string description, OptionAction action) - { - return Add (new ActionOption (prototype, description, action)); - } - - public OptionSet Add (ArgumentSource source) - { - if (source == null) - throw new ArgumentNullException ("source"); - sources.Add (source); - return this; - } - - protected virtual OptionContext CreateOptionContext () - { - return new OptionContext (this); - } - - public List Parse (IEnumerable arguments) - { - if (arguments == null) - throw new ArgumentNullException ("arguments"); - OptionContext c = CreateOptionContext (); - c.OptionIndex = -1; - bool process = true; - List unprocessed = new List (); - Option def = Contains ("<>") ? this ["<>"] : null; - ArgumentEnumerator ae = new ArgumentEnumerator (arguments); - foreach (string argument in ae) { - ++c.OptionIndex; - if (argument == "--") { - process = false; - continue; - } - if (!process) { - Unprocessed (unprocessed, def, c, argument); - continue; - } - if (AddSource (ae, argument)) - continue; - if (!Parse (argument, c)) - Unprocessed (unprocessed, def, c, argument); - } - if (c.Option != null) - c.Option.Invoke (c); - return unprocessed; - } - - class ArgumentEnumerator : IEnumerable - { - List> sources = new List> (); - - public ArgumentEnumerator (IEnumerable arguments) - { - sources.Add (arguments.GetEnumerator ()); - } - - public void Add (IEnumerable arguments) - { - sources.Add (arguments.GetEnumerator ()); - } - - public IEnumerator GetEnumerator () - { - do { - IEnumerator c = sources [sources.Count - 1]; - if (c.MoveNext ()) - yield return c.Current; - else { - c.Dispose (); - sources.RemoveAt (sources.Count - 1); - } - } while (sources.Count > 0); - } - - IEnumerator IEnumerable.GetEnumerator () - { - return GetEnumerator (); - } - } - - bool AddSource (ArgumentEnumerator ae, string argument) - { - foreach (ArgumentSource source in sources) { - IEnumerable replacement; - if (!source.GetArguments (argument, out replacement)) - continue; - ae.Add (replacement); - return true; - } - return false; - } - - private static bool Unprocessed (ICollection extra, Option def, OptionContext c, string argument) - { - if (def == null) { - extra.Add (argument); - return false; - } - c.OptionValues.Add (argument); - c.Option = def; - c.Option.Invoke (c); - return false; - } - - private readonly Regex ValueOption = new Regex ( - @"^(?--|-|/)(?[^:=]+)((?[:=])(?.*))?$"); - - protected bool GetOptionParts (string argument, out string flag, out string name, out string sep, out string value) - { - if (argument == null) - throw new ArgumentNullException ("argument"); - - flag = name = sep = value = null; - Match m = ValueOption.Match (argument); - if (!m.Success) { - return false; - } - flag = m.Groups ["flag"].Value; - name = m.Groups ["name"].Value; - if (m.Groups ["sep"].Success && m.Groups ["value"].Success) { - sep = m.Groups ["sep"].Value; - value = m.Groups ["value"].Value; - } - return true; - } - - protected virtual bool Parse (string argument, OptionContext c) - { - if (c.Option != null) { - ParseValue (argument, c); - return true; - } - - string f, n, s, v; - if (!GetOptionParts (argument, out f, out n, out s, out v)) - return false; - - Option p; - if (Contains (n)) { - p = this [n]; - c.OptionName = f + n; - c.Option = p; - switch (p.OptionValueType) { - case OptionValueType.None: - c.OptionValues.Add (n); - c.Option.Invoke (c); - break; - case OptionValueType.Optional: - case OptionValueType.Required: - ParseValue (v, c); - break; - } - return true; - } - // no match; is it a bool option? - if (ParseBool (argument, n, c)) - return true; - // is it a bundled option? - if (ParseBundledValue (f, string.Concat (n + s + v), c)) - return true; - - return false; - } - - private void ParseValue (string option, OptionContext c) - { - if (option != null) - foreach (string o in c.Option.ValueSeparators != null - ? option.Split (c.Option.ValueSeparators, c.Option.MaxValueCount - c.OptionValues.Count, StringSplitOptions.None) - : new string[]{option}) { - c.OptionValues.Add (o); - } - if (c.OptionValues.Count == c.Option.MaxValueCount || - c.Option.OptionValueType == OptionValueType.Optional) - c.Option.Invoke (c); - else if (c.OptionValues.Count > c.Option.MaxValueCount) { - throw new OptionException (localizer (string.Format ( - "Error: Found {0} option values when expecting {1}.", - c.OptionValues.Count, c.Option.MaxValueCount)), - c.OptionName); - } - } - - private bool ParseBool (string option, string n, OptionContext c) - { - Option p; - string rn; - if (n.Length >= 1 && (n [n.Length - 1] == '+' || n [n.Length - 1] == '-') && - Contains ((rn = n.Substring (0, n.Length - 1)))) { - p = this [rn]; - string v = n [n.Length - 1] == '+' ? option : null; - c.OptionName = option; - c.Option = p; - c.OptionValues.Add (v); - p.Invoke (c); - return true; - } - return false; - } - - private bool ParseBundledValue (string f, string n, OptionContext c) - { - if (f != "-") - return false; - for (int i = 0; i < n.Length; ++i) { - Option p; - string opt = f + n [i].ToString (); - string rn = n [i].ToString (); - if (!Contains (rn)) { - if (i == 0) - return false; - throw new OptionException (string.Format (localizer ( - "Cannot bundle unregistered option '{0}'."), opt), opt); - } - p = this [rn]; - switch (p.OptionValueType) { - case OptionValueType.None: - Invoke (c, opt, n, p); - break; - case OptionValueType.Optional: - case OptionValueType.Required: - { - string v = n.Substring (i + 1); - c.Option = p; - c.OptionName = opt; - ParseValue (v.Length != 0 ? v : null, c); - return true; - } - default: - throw new InvalidOperationException ("Unknown OptionValueType: " + p.OptionValueType); - } - } - return true; - } - - private static void Invoke (OptionContext c, string name, string value, Option option) - { - c.OptionName = name; - c.Option = option; - c.OptionValues.Add (value); - option.Invoke (c); - } - - private const int OptionWidth = 29; - private const int Description_FirstWidth = 80 - OptionWidth; - private const int Description_RemWidth = 80 - OptionWidth - 2; - - public void WriteOptionDescriptions (TextWriter o) - { - foreach (Option p in this) { - int written = 0; - - if (p.Hidden) - continue; - - Category c = p as Category; - if (c != null) { - WriteDescription (o, p.Description, "", 80, 80); - continue; - } - - if (!WriteOptionPrototype (o, p, ref written)) - continue; - - if (written < OptionWidth) - o.Write (new string (' ', OptionWidth - written)); - else { - o.WriteLine (); - o.Write (new string (' ', OptionWidth)); - } - - WriteDescription (o, p.Description, new string (' ', OptionWidth + 2), - Description_FirstWidth, Description_RemWidth); - } - - foreach (ArgumentSource s in sources) { - string[] names = s.GetNames (); - if (names == null || names.Length == 0) - continue; - - int written = 0; - - Write (o, ref written, " "); - Write (o, ref written, names [0]); - for (int i = 1; i < names.Length; ++i) { - Write (o, ref written, ", "); - Write (o, ref written, names [i]); - } - - if (written < OptionWidth) - o.Write (new string (' ', OptionWidth - written)); - else { - o.WriteLine (); - o.Write (new string (' ', OptionWidth)); - } - - WriteDescription (o, s.Description, new string (' ', OptionWidth + 2), - Description_FirstWidth, Description_RemWidth); - } - } - - void WriteDescription (TextWriter o, string value, string prefix, int firstWidth, int remWidth) - { - bool indent = false; - foreach (string line in GetLines (localizer (GetDescription (value)), firstWidth, remWidth)) { - if (indent) - o.Write (prefix); - o.WriteLine (line); - indent = true; - } - } - - bool WriteOptionPrototype (TextWriter o, Option p, ref int written) - { - string[] names = p.Names; - - int i = GetNextOptionIndex (names, 0); - if (i == names.Length) - return false; - - if (names [i].Length == 1) { - Write (o, ref written, " -"); - Write (o, ref written, names [0]); - } else { - Write (o, ref written, " --"); - Write (o, ref written, names [0]); - } - - for (i = GetNextOptionIndex (names, i + 1); - i < names.Length; i = GetNextOptionIndex (names, i + 1)) { - Write (o, ref written, ", "); - Write (o, ref written, names [i].Length == 1 ? "-" : "--"); - Write (o, ref written, names [i]); - } - - if (p.OptionValueType == OptionValueType.Optional || - p.OptionValueType == OptionValueType.Required) { - if (p.OptionValueType == OptionValueType.Optional) { - Write (o, ref written, localizer ("[")); - } - Write (o, ref written, localizer ("=" + GetArgumentName (0, p.MaxValueCount, p.Description))); - string sep = p.ValueSeparators != null && p.ValueSeparators.Length > 0 - ? p.ValueSeparators [0] - : " "; - for (int c = 1; c < p.MaxValueCount; ++c) { - Write (o, ref written, localizer (sep + GetArgumentName (c, p.MaxValueCount, p.Description))); - } - if (p.OptionValueType == OptionValueType.Optional) { - Write (o, ref written, localizer ("]")); - } - } - return true; - } - - static int GetNextOptionIndex (string[] names, int i) - { - while (i < names.Length && names [i] == "<>") { - ++i; - } - return i; - } - - static void Write (TextWriter o, ref int n, string s) - { - n += s.Length; - o.Write (s); - } - - private static string GetArgumentName (int index, int maxIndex, string description) - { - if (description == null) - return maxIndex == 1 ? "VALUE" : "VALUE" + (index + 1); - string[] nameStart; - if (maxIndex == 1) - nameStart = new string[]{ "{0:", "{" }; - else - nameStart = new string[]{ "{" + index + ":" }; - for (int i = 0; i < nameStart.Length; ++i) { - int start, j = 0; - do { - start = description.IndexOf (nameStart [i], j); - } while (start >= 0 && j != 0 ? description [j++ - 1] == '{' : false); - if (start == -1) - continue; - int end = description.IndexOf ("}", start); - if (end == -1) - continue; - return description.Substring (start + nameStart [i].Length, end - start - nameStart [i].Length); - } - return maxIndex == 1 ? "VALUE" : "VALUE" + (index + 1); - } - - private static string GetDescription (string description) - { - if (description == null) - return string.Empty; - StringBuilder sb = new StringBuilder (description.Length); - int start = -1; - for (int i = 0; i < description.Length; ++i) { - switch (description [i]) { - case '{': - if (i == start) { - sb.Append ('{'); - start = -1; - } else if (start < 0) - start = i + 1; - break; - case '}': - if (start < 0) { - if ((i + 1) == description.Length || description [i + 1] != '}') - throw new InvalidOperationException ("Invalid option description: " + description); - ++i; - sb.Append ("}"); - } else { - sb.Append (description.Substring (start, i - start)); - start = -1; - } - break; - case ':': - if (start < 0) - goto default; - start = i + 1; - break; - default: - if (start < 0) - sb.Append (description [i]); - break; - } - } - return sb.ToString (); - } - - private static IEnumerable GetLines (string description, int firstWidth, int remWidth) - { - return StringCoda.WrappedLines (description, firstWidth, remWidth); - } - } -} - diff --git a/tools/class-parse/Properties/AssemblyInfo.cs b/tools/class-parse/Properties/AssemblyInfo.cs deleted file mode 100644 index 97bf93156..000000000 --- a/tools/class-parse/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle ("JavaClassParser")] -[assembly: AssemblyDescription ("")] -[assembly: AssemblyConfiguration ("")] -[assembly: AssemblyCompany ("Xamarin Inc.")] -[assembly: AssemblyProduct ("")] -[assembly: AssemblyCopyright ("Xamarin Inc.")] -[assembly: AssemblyTrademark ("Xamarin")] -[assembly: AssemblyCulture ("")] - -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion ("1.0.*")] - -// The following attributes are used to specify the signing key for the assembly, -// if desired. See the Mono documentation for more information about signing. - -//[assembly: AssemblyDelaySign(false)] -//[assembly: AssemblyKeyFile("")] - diff --git a/tools/class-parse/class-parse.csproj b/tools/class-parse/class-parse.csproj index acb17e959..5d6b06c2b 100644 --- a/tools/class-parse/class-parse.csproj +++ b/tools/class-parse/class-parse.csproj @@ -1,57 +1,23 @@ - - + + - Debug - AnyCPU - {38C762AB-8FD1-44DE-9855-26AAE7129DC3} + net472 Exe - Xamarin.Android.Tools - class-parse - v4.6.1 - False - 8.0.30703 - 2.0 + false + - - true - full - false - $(UtilityOutputFullPath) - DEBUG; - prompt - 4 - true - false - - - full - true + + $(UtilityOutputFullPath) - prompt - 4 - true - true + - - - - - - - - - - - - - - {B17475BC-45A2-47A3-B8FC-62F3A0959EE0} - Xamarin.Android.Tools.Bytecode - + + - + + diff --git a/tools/class-parse/packages.config b/tools/class-parse/packages.config deleted file mode 100644 index f862aa233..000000000 --- a/tools/class-parse/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/tools/generator/generator.csproj b/tools/generator/generator.csproj index 9c5f6f426..080257ad1 100644 --- a/tools/generator/generator.csproj +++ b/tools/generator/generator.csproj @@ -1,55 +1,18 @@ - - + + - Debug - AnyCPU - 8.0.30703 - 2.0 - {D14A1B5C-2060-4930-92BE-F7190256C735} + net472 Exe - MonoDroid.Generation - generator - AnyCPU - - - - - - v4.6.1 + $(DefineConstants);GENERATOR;HAVE_CECIL;JCW_ONLY_TYPE_NAMES + false + - - True - full - False - $(UtilityOutputFullPath) - DEBUG;GENERATOR;HAVE_CECIL;JCW_ONLY_TYPE_NAMES - prompt - 4 - false - anycpu - - - full - False + + $(UtilityOutputFullPath) - prompt - 4 - True - GENERATOR;HAVE_CECIL;JCW_ONLY_TYPE_NAMES - - - ..\..\packages\HtmlAgilityPack.1.8.14\lib\Net45\HtmlAgilityPack.dll - - - - - - - ..\..\packages\Mono.Options.4.4.0.0\lib\net4-client\Mono.Options.dll - - + utils\StringRocks.cs @@ -60,103 +23,20 @@ utils\XmlExtensions.cs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - {07BC4495-1267-4B78-9EA6-B76FEEA2A64A} - Xamarin.Android.Tools.AnnotationSupport - - - {1268EADF-8344-431C-81F6-FCB7CBC99F49} - Xamarin.Android.Tools.ApiXmlAdjuster - - - {64CC4E44-CE3A-4319-BF3F-6CF8BD513870} - Java.Interop.Tools.Diagnostics - - - {D48EE8D0-0A0A-4493-AEF5-DAF5F8CF86AD} - Java.Interop.Tools.Cecil - - - {15945D4B-FF56-4BCC-B598-2718D199DD08} - Xamarin.Android.Cecil - - - {D18FCF91-8876-48A0-A693-2DC1E7D3D80A} - Java.Interop.Tools.JavaCallableWrappers - + + + - + + + + + + - \ No newline at end of file + + diff --git a/tools/generator/packages.config b/tools/generator/packages.config deleted file mode 100644 index 805b9ae6d..000000000 --- a/tools/generator/packages.config +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/tools/jcw-gen/Properties/AssemblyInfo.cs b/tools/jcw-gen/Properties/AssemblyInfo.cs deleted file mode 100644 index d55e5c765..000000000 --- a/tools/jcw-gen/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle ("jcwgen")] -[assembly: AssemblyDescription ("")] -[assembly: AssemblyConfiguration ("")] -[assembly: AssemblyCompany ("Xamarin Inc.")] -[assembly: AssemblyProduct ("")] -[assembly: AssemblyCopyright ("Xamarin Inc.")] -[assembly: AssemblyTrademark ("Xamarin")] -[assembly: AssemblyCulture ("")] - -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion ("1.0.*")] - -// The following attributes are used to specify the signing key for the assembly, -// if desired. See the Mono documentation for more information about signing. - -//[assembly: AssemblyDelaySign(false)] -//[assembly: AssemblyKeyFile("")] - diff --git a/tools/jcw-gen/jcw-gen.csproj b/tools/jcw-gen/jcw-gen.csproj index 2cce1d077..49f64e523 100644 --- a/tools/jcw-gen/jcw-gen.csproj +++ b/tools/jcw-gen/jcw-gen.csproj @@ -1,65 +1,26 @@ - - + + - Debug - AnyCPU - 8.0.30703 - 2.0 - {52C7D9B6-E8C8-47D0-9471-652D278D7D77} + net472 Exe - Java.interop.Tools - jcw-gen - v4.6.1 + false + - - true - full - false - $(UtilityOutputFullPath) - DEBUG; - prompt - 4 - true - - - full - true + + $(UtilityOutputFullPath) - prompt - 4 - true + - - - ..\..\packages\Mono.Options.4.4.0.0\lib\net4-client\Mono.Options.dll - - - - - - - - - {D18FCF91-8876-48A0-A693-2DC1E7D3D80A} - Java.Interop.Tools.JavaCallableWrappers - - - {D48EE8D0-0A0A-4493-AEF5-DAF5F8CF86AD} - Java.Interop.Tools.Cecil - - - {64CC4E44-CE3A-4319-BF3F-6CF8BD513870} - Java.Interop.Tools.Diagnostics - - - {15945D4B-FF56-4BCC-B598-2718D199DD08} - Xamarin.Android.Cecil - + + - + + + + - - \ No newline at end of file + + diff --git a/tools/jcw-gen/packages.config b/tools/jcw-gen/packages.config deleted file mode 100644 index 8a52a6801..000000000 --- a/tools/jcw-gen/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/tools/jnimarshalmethod-gen/Properties/AssemblyInfo.cs b/tools/jnimarshalmethod-gen/Properties/AssemblyInfo.cs deleted file mode 100644 index 7f5576a1d..000000000 --- a/tools/jnimarshalmethod-gen/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle ("jnimarshalmethod-gen")] -[assembly: AssemblyDescription ("")] -[assembly: AssemblyConfiguration ("")] -[assembly: AssemblyCompany ("Xamarin Inc.")] -[assembly: AssemblyProduct ("")] -[assembly: AssemblyCopyright ("Xamarin Inc.")] -[assembly: AssemblyTrademark ("Xamarin")] -[assembly: AssemblyCulture ("")] - -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion ("1.0.*")] - -// The following attributes are used to specify the signing key for the assembly, -// if desired. See the Mono documentation for more information about signing. - -//[assembly: AssemblyDelaySign(false)] -//[assembly: AssemblyKeyFile("")] - diff --git a/tools/jnimarshalmethod-gen/Xamarin.Android.Tools.JniMarshalMethodGenerator.csproj b/tools/jnimarshalmethod-gen/Xamarin.Android.Tools.JniMarshalMethodGenerator.csproj index a8186e180..b6f539410 100644 --- a/tools/jnimarshalmethod-gen/Xamarin.Android.Tools.JniMarshalMethodGenerator.csproj +++ b/tools/jnimarshalmethod-gen/Xamarin.Android.Tools.JniMarshalMethodGenerator.csproj @@ -1,71 +1,29 @@ - - + + - Debug - AnyCPU - 8.0.30703 - 2.0 - {D1295A8F-4F42-461D-A046-564476C10002} + net472 Exe - Xamarin.Android.Tools.JniMarshalMethodGenerator jnimarshalmethod-gen - v4.6.1 + false + - - true - full - false - $(UtilityOutputFullPath) - DEBUG; - prompt - 4 - true - - - full - true + + + $(UtilityOutputFullPath) - prompt - 4 - true + - - - ..\..\packages\Mono.Options.5.3.0.1\lib\net4-client\Mono.Options.dll - - - - - - - - - - - - {B501D075-6183-4E1D-92C9-F7B5002475B1} - Java.Interop.Export - - - {94BD81F7-B06F-4295-9636-F8A3B6BDC762} - Java.Interop - - - {5887B410-D448-4257-A46B-EAC03C80BE93} - Java.Runtime.Environment - - - {15945D4B-FF56-4BCC-B598-2718D199DD08} - Xamarin.Android.Cecil - - - {D48EE8D0-0A0A-4493-AEF5-DAF5F8CF86AD} - Java.Interop.Tools.Cecil - + + - + + + + + - \ No newline at end of file + + diff --git a/tools/jnimarshalmethod-gen/packages.config b/tools/jnimarshalmethod-gen/packages.config deleted file mode 100644 index 81edb81c6..000000000 --- a/tools/jnimarshalmethod-gen/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/tools/logcat-parse/Mono.Options-PCL.cs b/tools/logcat-parse/Mono.Options-PCL.cs deleted file mode 100644 index 33c1588cf..000000000 --- a/tools/logcat-parse/Mono.Options-PCL.cs +++ /dev/null @@ -1,1414 +0,0 @@ -// -// Options.cs -// -// Authors: -// Jonathan Pryor -// Federico Di Gregorio -// Rolf Bjarne Kvinge -// -// Copyright (C) 2008 Novell (http://www.novell.com) -// Copyright (C) 2009 Federico Di Gregorio. -// Copyright (C) 2012 Xamarin Inc (http://www.xamarin.com) -// Copyright (C) 2015 Tobias Schulz (https://github.com/tobiasschulz) -// -// Permission is hereby granted, free of charge, to any person obtaining -// a copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to -// permit persons to whom the Software is furnished to do so, subject to -// the following conditions: -// -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// - -// Compile With: -// gmcs -debug+ -r:System.Core Options.cs -o:NDesk.Options.dll -// gmcs -debug+ -d:LINQ -r:System.Core Options.cs -o:NDesk.Options.dll -// -// The LINQ version just changes the implementation of -// OptionSet.Parse(IEnumerable), and confers no semantic changes. - -// -// A Getopt::Long-inspired option parsing library for C#. -// -// NDesk.Options.OptionSet is built upon a key/value table, where the -// key is a option format string and the value is a delegate that is -// invoked when the format string is matched. -// -// Option format strings: -// Regex-like BNF Grammar: -// name: .+ -// type: [=:] -// sep: ( [^{}]+ | '{' .+ '}' )? -// aliases: ( name type sep ) ( '|' name type sep )* -// -// Each '|'-delimited name is an alias for the associated action. If the -// format string ends in a '=', it has a required value. If the format -// string ends in a ':', it has an optional value. If neither '=' or ':' -// is present, no value is supported. `=' or `:' need only be defined on one -// alias, but if they are provided on more than one they must be consistent. -// -// Each alias portion may also end with a "key/value separator", which is used -// to split option values if the option accepts > 1 value. If not specified, -// it defaults to '=' and ':'. If specified, it can be any character except -// '{' and '}' OR the *string* between '{' and '}'. If no separator should be -// used (i.e. the separate values should be distinct arguments), then "{}" -// should be used as the separator. -// -// Options are extracted either from the current option by looking for -// the option name followed by an '=' or ':', or is taken from the -// following option IFF: -// - The current option does not contain a '=' or a ':' -// - The current option requires a value (i.e. not a Option type of ':') -// -// The `name' used in the option format string does NOT include any leading -// option indicator, such as '-', '--', or '/'. All three of these are -// permitted/required on any named option. -// -// Option bundling is permitted so long as: -// - '-' is used to start the option group -// - all of the bundled options are a single character -// - at most one of the bundled options accepts a value, and the value -// provided starts from the next character to the end of the string. -// -// This allows specifying '-a -b -c' as '-abc', and specifying '-D name=value' -// as '-Dname=value'. -// -// Option processing is disabled by specifying "--". All options after "--" -// are returned by OptionSet.Parse() unchanged and unprocessed. -// -// Unprocessed options are returned from OptionSet.Parse(). -// -// Examples: -// int verbose = 0; -// OptionSet p = new OptionSet () -// .Add ("v", v => ++verbose) -// .Add ("name=|value=", v => Console.WriteLine (v)); -// p.Parse (new string[]{"-v", "--v", "/v", "-name=A", "/name", "B", "extra"}); -// -// The above would parse the argument string array, and would invoke the -// lambda expression three times, setting `verbose' to 3 when complete. -// It would also print out "A" and "B" to standard output. -// The returned array would contain the string "extra". -// -// C# 3.0 collection initializers are supported and encouraged: -// var p = new OptionSet () { -// { "h|?|help", v => ShowHelp () }, -// }; -// -// System.ComponentModel.TypeConverter is also supported, allowing the use of -// custom data types in the callback type; TypeConverter.ConvertFromString() -// is used to convert the value option to an instance of the specified -// type: -// -// var p = new OptionSet () { -// { "foo=", (Foo f) => Console.WriteLine (f.ToString ()) }, -// }; -// -// Random other tidbits: -// - Boolean options (those w/o '=' or ':' in the option format string) -// are explicitly enabled if they are followed with '+', and explicitly -// disabled if they are followed with '-': -// string a = null; -// var p = new OptionSet () { -// { "a", s => a = s }, -// }; -// p.Parse (new string[]{"-a"}); // sets v != null -// p.Parse (new string[]{"-a+"}); // sets v != null -// p.Parse (new string[]{"-a-"}); // sets v == null -// - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.ComponentModel; -using System.Globalization; -using System.IO; -using System.Runtime.Serialization; -using System.Text; -using System.Text.RegularExpressions; -using System.Linq; -using System.Reflection; - -namespace Mono.Options -{ - static class StringCoda - { - public static IEnumerable WrappedLines (string self, params int[] widths) - { - IEnumerable w = widths; - return WrappedLines (self, w); - } - - public static IEnumerable WrappedLines (string self, IEnumerable widths) - { - if (widths == null) - throw new ArgumentNullException ("widths"); - return CreateWrappedLinesIterator (self, widths); - } - - private static IEnumerable CreateWrappedLinesIterator (string self, IEnumerable widths) - { - if (string.IsNullOrEmpty (self)) { - yield return string.Empty; - yield break; - } - using (IEnumerator ewidths = widths.GetEnumerator ()) { - bool? hw = null; - int width = GetNextWidth (ewidths, int.MaxValue, ref hw); - int start = 0, end; - do { - end = GetLineEnd (start, width, self); - char c = self [end - 1]; - if (char.IsWhiteSpace (c)) - --end; - bool needContinuation = end != self.Length && !IsEolChar (c); - string continuation = ""; - if (needContinuation) { - --end; - continuation = "-"; - } - string line = self.Substring (start, end - start) + continuation; - yield return line; - start = end; - if (char.IsWhiteSpace (c)) - ++start; - width = GetNextWidth (ewidths, width, ref hw); - } while (start < self.Length); - } - } - - private static int GetNextWidth (IEnumerator ewidths, int curWidth, ref bool? eValid) - { - if (!eValid.HasValue || (eValid.HasValue && eValid.Value)) { - curWidth = (eValid = ewidths.MoveNext ()).Value ? ewidths.Current : curWidth; - // '.' is any character, - is for a continuation - const string minWidth = ".-"; - if (curWidth < minWidth.Length) - throw new ArgumentOutOfRangeException ("widths", - string.Format ("Element must be >= {0}, was {1}.", minWidth.Length, curWidth)); - return curWidth; - } - // no more elements, use the last element. - return curWidth; - } - - private static bool IsEolChar (char c) - { - return !char.IsLetterOrDigit (c); - } - - private static int GetLineEnd (int start, int length, string description) - { - int end = System.Math.Min (start + length, description.Length); - int sep = -1; - for (int i = start; i < end; ++i) { - if (description [i] == '\n') - return i + 1; - if (IsEolChar (description [i])) - sep = i + 1; - } - if (sep == -1 || end == description.Length) - return end; - return sep; - } - } - - public class OptionValueCollection : IList, IList - { - - List values = new List (); - OptionContext c; - - internal OptionValueCollection (OptionContext c) - { - this.c = c; - } - - #region ICollection - - void ICollection.CopyTo (Array array, int index) - { - (values as ICollection).CopyTo (array, index); - } - - bool ICollection.IsSynchronized { get { return (values as ICollection).IsSynchronized; } } - - object ICollection.SyncRoot { get { return (values as ICollection).SyncRoot; } } - - #endregion - - #region ICollection - - public void Add (string item) - { - values.Add (item); - } - - public void Clear () - { - values.Clear (); - } - - public bool Contains (string item) - { - return values.Contains (item); - } - - public void CopyTo (string[] array, int arrayIndex) - { - values.CopyTo (array, arrayIndex); - } - - public bool Remove (string item) - { - return values.Remove (item); - } - - public int Count { get { return values.Count; } } - - public bool IsReadOnly { get { return false; } } - - #endregion - - #region IEnumerable - - IEnumerator IEnumerable.GetEnumerator () - { - return values.GetEnumerator (); - } - - #endregion - - #region IEnumerable - - public IEnumerator GetEnumerator () - { - return values.GetEnumerator (); - } - - #endregion - - #region IList - - int IList.Add (object value) - { - return (values as IList).Add (value); - } - - bool IList.Contains (object value) - { - return (values as IList).Contains (value); - } - - int IList.IndexOf (object value) - { - return (values as IList).IndexOf (value); - } - - void IList.Insert (int index, object value) - { - (values as IList).Insert (index, value); - } - - void IList.Remove (object value) - { - (values as IList).Remove (value); - } - - void IList.RemoveAt (int index) - { - (values as IList).RemoveAt (index); - } - - bool IList.IsFixedSize { get { return false; } } - - object IList.this [int index] { get { return this [index]; } set { (values as IList) [index] = value; } } - - #endregion - - #region IList - - public int IndexOf (string item) - { - return values.IndexOf (item); - } - - public void Insert (int index, string item) - { - values.Insert (index, item); - } - - public void RemoveAt (int index) - { - values.RemoveAt (index); - } - - private void AssertValid (int index) - { - if (c.Option == null) - throw new InvalidOperationException ("OptionContext.Option is null."); - if (index >= c.Option.MaxValueCount) - throw new ArgumentOutOfRangeException ("index"); - if (c.Option.OptionValueType == OptionValueType.Required && - index >= values.Count) - throw new OptionException (string.Format ( - c.OptionSet.MessageLocalizer ("Missing required value for option '{0}'."), c.OptionName), - c.OptionName); - } - - public string this [int index] { - get { - AssertValid (index); - return index >= values.Count ? null : values [index]; - } - set { - values [index] = value; - } - } - - #endregion - - public List ToList () - { - return new List (values); - } - - public string[] ToArray () - { - return values.ToArray (); - } - - public override string ToString () - { - return string.Join (", ", values.ToArray ()); - } - } - - public class OptionContext - { - private Option option; - private string name; - private int index; - private OptionSet set; - private OptionValueCollection c; - - public OptionContext (OptionSet set) - { - this.set = set; - this.c = new OptionValueCollection (this); - } - - public Option Option { - get { return option; } - set { option = value; } - } - - public string OptionName { - get { return name; } - set { name = value; } - } - - public int OptionIndex { - get { return index; } - set { index = value; } - } - - public OptionSet OptionSet { - get { return set; } - } - - public OptionValueCollection OptionValues { - get { return c; } - } - } - - public enum OptionValueType - { - None, - Optional, - Required, - } - - public abstract class Option - { - string prototype, description; - string[] names; - OptionValueType type; - int count; - string[] separators; - bool hidden; - - protected Option (string prototype, string description) - : this (prototype, description, 1, false) - { - } - - protected Option (string prototype, string description, int maxValueCount) - : this (prototype, description, maxValueCount, false) - { - } - - protected Option (string prototype, string description, int maxValueCount, bool hidden) - { - if (prototype == null) - throw new ArgumentNullException ("prototype"); - if (prototype.Length == 0) - throw new ArgumentException ("Cannot be the empty string.", "prototype"); - if (maxValueCount < 0) - throw new ArgumentOutOfRangeException ("maxValueCount"); - - this.prototype = prototype; - this.description = description; - this.count = maxValueCount; - this.names = (this is OptionSet.Category) - // append GetHashCode() so that "duplicate" categories have distinct - // names, e.g. adding multiple "" categories should be valid. - ? new[]{ prototype + this.GetHashCode () } - : prototype.Split ('|'); - - if (this is OptionSet.Category) - return; - - this.type = ParsePrototype (); - this.hidden = hidden; - - if (this.count == 0 && type != OptionValueType.None) - throw new ArgumentException ( - "Cannot provide maxValueCount of 0 for OptionValueType.Required or " + - "OptionValueType.Optional.", - "maxValueCount"); - if (this.type == OptionValueType.None && maxValueCount > 1) - throw new ArgumentException ( - string.Format ("Cannot provide maxValueCount of {0} for OptionValueType.None.", maxValueCount), - "maxValueCount"); - if (Array.IndexOf (names, "<>") >= 0 && - ((names.Length == 1 && this.type != OptionValueType.None) || - (names.Length > 1 && this.MaxValueCount > 1))) - throw new ArgumentException ( - "The default option handler '<>' cannot require values.", - "prototype"); - } - - public string Prototype { get { return prototype; } } - - public string Description { get { return description; } } - - public OptionValueType OptionValueType { get { return type; } } - - public int MaxValueCount { get { return count; } } - - public bool Hidden { get { return hidden; } } - - public string[] GetNames () - { - return (string[])names.Clone (); - } - - public string[] GetValueSeparators () - { - if (separators == null) - return new string [0]; - return (string[])separators.Clone (); - } - - protected static T Parse (string value, OptionContext c) - { - Type tt = typeof(T); - TypeInfo ti = tt.GetTypeInfo (); - bool nullable = ti.IsValueType && ti.IsGenericType && - !ti.IsGenericTypeDefinition && - tt.GetGenericTypeDefinition () == typeof(Nullable<>); - Type targetType = nullable ? tt.GetTypeInfo ().GenericTypeParameters [0] : typeof(T); - //TypeConverter conv = TypeDescriptor.GetConverter (targetType); - T t = default (T); - try { - if (value != null) { - throw new ArgumentException (); - //t = (T)conv.ConvertFromString (value); - } - } catch (Exception e) { - throw new OptionException ( - string.Format ( - c.OptionSet.MessageLocalizer ($"Could not convert string `{value}' to type {targetType.Name} for option `{c.OptionName}'.")), - c.OptionName, e); - } - return t; - } - - internal string[] Names { get { return names; } } - - internal string[] ValueSeparators { get { return separators; } } - - static readonly char[] NameTerminator = new char[]{ '=', ':' }; - - private OptionValueType ParsePrototype () - { - char type = '\0'; - List seps = new List (); - for (int i = 0; i < names.Length; ++i) { - string name = names [i]; - if (name.Length == 0) - throw new ArgumentException ("Empty option names are not supported.", "prototype"); - - int end = name.IndexOfAny (NameTerminator); - if (end == -1) - continue; - names [i] = name.Substring (0, end); - if (type == '\0' || type == name [end]) - type = name [end]; - else - throw new ArgumentException ( - string.Format ("Conflicting option types: '{0}' vs. '{1}'.", type, name [end]), - "prototype"); - AddSeparators (name, end, seps); - } - - if (type == '\0') - return OptionValueType.None; - - if (count <= 1 && seps.Count != 0) - throw new ArgumentException ( - string.Format ("Cannot provide key/value separators for Options taking {0} value(s).", count), - "prototype"); - if (count > 1) { - if (seps.Count == 0) - this.separators = new string[]{ ":", "=" }; - else if (seps.Count == 1 && seps [0].Length == 0) - this.separators = null; - else - this.separators = seps.ToArray (); - } - - return type == '=' ? OptionValueType.Required : OptionValueType.Optional; - } - - private static void AddSeparators (string name, int end, ICollection seps) - { - int start = -1; - for (int i = end + 1; i < name.Length; ++i) { - switch (name [i]) { - case '{': - if (start != -1) - throw new ArgumentException ( - string.Format ("Ill-formed name/value separator found in \"{0}\".", name), - "prototype"); - start = i + 1; - break; - case '}': - if (start == -1) - throw new ArgumentException ( - string.Format ("Ill-formed name/value separator found in \"{0}\".", name), - "prototype"); - seps.Add (name.Substring (start, i - start)); - start = -1; - break; - default: - if (start == -1) - seps.Add (name [i].ToString ()); - break; - } - } - if (start != -1) - throw new ArgumentException ( - string.Format ("Ill-formed name/value separator found in \"{0}\".", name), - "prototype"); - } - - public void Invoke (OptionContext c) - { - OnParseComplete (c); - c.OptionName = null; - c.Option = null; - c.OptionValues.Clear (); - } - - protected abstract void OnParseComplete (OptionContext c); - - public override string ToString () - { - return Prototype; - } - } - - public abstract class ArgumentSource - { - - protected ArgumentSource () - { - } - - public abstract string[] GetNames (); - - public abstract string Description { get; } - - public abstract bool GetArguments (string value, out IEnumerable replacement); - - public static IEnumerable GetArguments (TextReader reader) - { - return GetArguments (reader, false); - } - - // Cribbed from mcs/driver.cs:LoadArgs(string) - static IEnumerable GetArguments (TextReader reader, bool close) - { - try { - StringBuilder arg = new StringBuilder (); - - string line; - while ((line = reader.ReadLine ()) != null) { - int t = line.Length; - - for (int i = 0; i < t; i++) { - char c = line [i]; - - if (c == '"' || c == '\'') { - char end = c; - - for (i++; i < t; i++) { - c = line [i]; - - if (c == end) - break; - arg.Append (c); - } - } else if (c == ' ') { - if (arg.Length > 0) { - yield return arg.ToString (); - arg.Length = 0; - } - } else - arg.Append (c); - } - if (arg.Length > 0) { - yield return arg.ToString (); - arg.Length = 0; - } - } - } finally { - if (close) - reader.Dispose (); - } - } - } - - public class OptionException : Exception - { - private string option; - - public OptionException () - { - } - - public OptionException (string message, string optionName) - : base (message) - { - this.option = optionName; - } - - public OptionException (string message, string optionName, Exception innerException) - : base (message, innerException) - { - this.option = optionName; - } - - public string OptionName { - get { return this.option; } - } - } - - public delegate void OptionAction (TKey key, TValue value); - - public class OptionSet : KeyedCollection - { - public OptionSet () - : this ((string f) => f) - { - } - - public OptionSet (Func localizer) - { - this.localizer = localizer; - this.roSources = new ReadOnlyCollection (sources); - } - - Func localizer; - - public Func MessageLocalizer { - get { return localizer; } - } - - List sources = new List (); - ReadOnlyCollection roSources; - - public ReadOnlyCollection ArgumentSources { - get { return roSources; } - } - - - protected override string GetKeyForItem (Option item) - { - if (item == null) - throw new ArgumentNullException ("option"); - if (item.Names != null && item.Names.Length > 0) - return item.Names [0]; - // This should never happen, as it's invalid for Option to be - // constructed w/o any names. - throw new InvalidOperationException ("Option has no names!"); - } - - [Obsolete ("Use KeyedCollection.this[string]")] - protected Option GetOptionForName (string option) - { - if (option == null) - throw new ArgumentNullException ("option"); - try { - return base [option]; - } catch (KeyNotFoundException) { - return null; - } - } - - protected override void InsertItem (int index, Option item) - { - base.InsertItem (index, item); - AddImpl (item); - } - - protected override void RemoveItem (int index) - { - Option p = Items [index]; - base.RemoveItem (index); - // KeyedCollection.RemoveItem() handles the 0th item - for (int i = 1; i < p.Names.Length; ++i) { - Dictionary.Remove (p.Names [i]); - } - } - - protected override void SetItem (int index, Option item) - { - base.SetItem (index, item); - AddImpl (item); - } - - private void AddImpl (Option option) - { - if (option == null) - throw new ArgumentNullException ("option"); - List added = new List (option.Names.Length); - try { - // KeyedCollection.InsertItem/SetItem handle the 0th name. - for (int i = 1; i < option.Names.Length; ++i) { - Dictionary.Add (option.Names [i], option); - added.Add (option.Names [i]); - } - } catch (Exception) { - foreach (string name in added) - Dictionary.Remove (name); - throw; - } - } - - public OptionSet Add (string header) - { - if (header == null) - throw new ArgumentNullException ("header"); - Add (new Category (header)); - return this; - } - - internal sealed class Category : Option - { - - // Prototype starts with '=' because this is an invalid prototype - // (see Option.ParsePrototype(), and thus it'll prevent Category - // instances from being accidentally used as normal options. - public Category (string description) - : base ("=:Category:= " + description, description) - { - } - - protected override void OnParseComplete (OptionContext c) - { - throw new NotSupportedException ("Category.OnParseComplete should not be invoked."); - } - } - - - public new OptionSet Add (Option option) - { - base.Add (option); - return this; - } - - sealed class ActionOption : Option - { - Action action; - - public ActionOption (string prototype, string description, int count, Action action) - : this (prototype, description, count, action, false) - { - } - - public ActionOption (string prototype, string description, int count, Action action, bool hidden) - : base (prototype, description, count, hidden) - { - if (action == null) - throw new ArgumentNullException ("action"); - this.action = action; - } - - protected override void OnParseComplete (OptionContext c) - { - action (c.OptionValues); - } - } - - public OptionSet Add (string prototype, Action action) - { - return Add (prototype, null, action); - } - - public OptionSet Add (string prototype, string description, Action action) - { - return Add (prototype, description, action, false); - } - - public OptionSet Add (string prototype, string description, Action action, bool hidden) - { - if (action == null) - throw new ArgumentNullException ("action"); - Option p = new ActionOption (prototype, description, 1, - delegate (OptionValueCollection v) { - action (v [0]); - }, hidden); - base.Add (p); - return this; - } - - public OptionSet Add (string prototype, OptionAction action) - { - return Add (prototype, null, action); - } - - public OptionSet Add (string prototype, string description, OptionAction action) - { - return Add (prototype, description, action, false); - } - - public OptionSet Add (string prototype, string description, OptionAction action, bool hidden) - { - if (action == null) - throw new ArgumentNullException ("action"); - Option p = new ActionOption (prototype, description, 2, - delegate (OptionValueCollection v) { - action (v [0], v [1]); - }, hidden); - base.Add (p); - return this; - } - - sealed class ActionOption : Option - { - Action action; - - public ActionOption (string prototype, string description, Action action) - : base (prototype, description, 1) - { - if (action == null) - throw new ArgumentNullException ("action"); - this.action = action; - } - - protected override void OnParseComplete (OptionContext c) - { - action (Parse (c.OptionValues [0], c)); - } - } - - sealed class ActionOption : Option - { - OptionAction action; - - public ActionOption (string prototype, string description, OptionAction action) - : base (prototype, description, 2) - { - if (action == null) - throw new ArgumentNullException ("action"); - this.action = action; - } - - protected override void OnParseComplete (OptionContext c) - { - action ( - Parse (c.OptionValues [0], c), - Parse (c.OptionValues [1], c)); - } - } - - public OptionSet Add (string prototype, Action action) - { - return Add (prototype, null, action); - } - - public OptionSet Add (string prototype, string description, Action action) - { - return Add (new ActionOption (prototype, description, action)); - } - - public OptionSet Add (string prototype, OptionAction action) - { - return Add (prototype, null, action); - } - - public OptionSet Add (string prototype, string description, OptionAction action) - { - return Add (new ActionOption (prototype, description, action)); - } - - public OptionSet Add (ArgumentSource source) - { - if (source == null) - throw new ArgumentNullException ("source"); - sources.Add (source); - return this; - } - - protected virtual OptionContext CreateOptionContext () - { - return new OptionContext (this); - } - - public List Parse (IEnumerable arguments) - { - if (arguments == null) - throw new ArgumentNullException ("arguments"); - OptionContext c = CreateOptionContext (); - c.OptionIndex = -1; - bool process = true; - List unprocessed = new List (); - Option def = Contains ("<>") ? this ["<>"] : null; - ArgumentEnumerator ae = new ArgumentEnumerator (arguments); - foreach (string argument in ae) { - ++c.OptionIndex; - if (argument == "--") { - process = false; - continue; - } - if (!process) { - Unprocessed (unprocessed, def, c, argument); - continue; - } - if (AddSource (ae, argument)) - continue; - if (!Parse (argument, c)) - Unprocessed (unprocessed, def, c, argument); - } - if (c.Option != null) - c.Option.Invoke (c); - return unprocessed; - } - - class ArgumentEnumerator : IEnumerable - { - List> sources = new List> (); - - public ArgumentEnumerator (IEnumerable arguments) - { - sources.Add (arguments.GetEnumerator ()); - } - - public void Add (IEnumerable arguments) - { - sources.Add (arguments.GetEnumerator ()); - } - - public IEnumerator GetEnumerator () - { - do { - IEnumerator c = sources [sources.Count - 1]; - if (c.MoveNext ()) - yield return c.Current; - else { - c.Dispose (); - sources.RemoveAt (sources.Count - 1); - } - } while (sources.Count > 0); - } - - IEnumerator IEnumerable.GetEnumerator () - { - return GetEnumerator (); - } - } - - bool AddSource (ArgumentEnumerator ae, string argument) - { - foreach (ArgumentSource source in sources) { - IEnumerable replacement; - if (!source.GetArguments (argument, out replacement)) - continue; - ae.Add (replacement); - return true; - } - return false; - } - - private static bool Unprocessed (ICollection extra, Option def, OptionContext c, string argument) - { - if (def == null) { - extra.Add (argument); - return false; - } - c.OptionValues.Add (argument); - c.Option = def; - c.Option.Invoke (c); - return false; - } - - private readonly Regex ValueOption = new Regex ( - @"^(?--|-|/)(?[^:=]+)((?[:=])(?.*))?$"); - - protected bool GetOptionParts (string argument, out string flag, out string name, out string sep, out string value) - { - if (argument == null) - throw new ArgumentNullException ("argument"); - - flag = name = sep = value = null; - Match m = ValueOption.Match (argument); - if (!m.Success) { - return false; - } - flag = m.Groups ["flag"].Value; - name = m.Groups ["name"].Value; - if (m.Groups ["sep"].Success && m.Groups ["value"].Success) { - sep = m.Groups ["sep"].Value; - value = m.Groups ["value"].Value; - } - return true; - } - - protected virtual bool Parse (string argument, OptionContext c) - { - if (c.Option != null) { - ParseValue (argument, c); - return true; - } - - string f, n, s, v; - if (!GetOptionParts (argument, out f, out n, out s, out v)) - return false; - - Option p; - if (Contains (n)) { - p = this [n]; - c.OptionName = f + n; - c.Option = p; - switch (p.OptionValueType) { - case OptionValueType.None: - c.OptionValues.Add (n); - c.Option.Invoke (c); - break; - case OptionValueType.Optional: - case OptionValueType.Required: - ParseValue (v, c); - break; - } - return true; - } - // no match; is it a bool option? - if (ParseBool (argument, n, c)) - return true; - // is it a bundled option? - if (ParseBundledValue (f, string.Concat (n + s + v), c)) - return true; - - return false; - } - - private void ParseValue (string option, OptionContext c) - { - if (option != null) - foreach (string o in c.Option.ValueSeparators != null - ? option.Split (c.Option.ValueSeparators, c.Option.MaxValueCount - c.OptionValues.Count, StringSplitOptions.None) - : new string[]{option}) { - c.OptionValues.Add (o); - } - if (c.OptionValues.Count == c.Option.MaxValueCount || - c.Option.OptionValueType == OptionValueType.Optional) - c.Option.Invoke (c); - else if (c.OptionValues.Count > c.Option.MaxValueCount) { - throw new OptionException (localizer (string.Format ( - "Error: Found {0} option values when expecting {1}.", - c.OptionValues.Count, c.Option.MaxValueCount)), - c.OptionName); - } - } - - private bool ParseBool (string option, string n, OptionContext c) - { - Option p; - string rn; - if (n.Length >= 1 && (n [n.Length - 1] == '+' || n [n.Length - 1] == '-') && - Contains ((rn = n.Substring (0, n.Length - 1)))) { - p = this [rn]; - string v = n [n.Length - 1] == '+' ? option : null; - c.OptionName = option; - c.Option = p; - c.OptionValues.Add (v); - p.Invoke (c); - return true; - } - return false; - } - - private bool ParseBundledValue (string f, string n, OptionContext c) - { - if (f != "-") - return false; - for (int i = 0; i < n.Length; ++i) { - Option p; - string opt = f + n [i].ToString (); - string rn = n [i].ToString (); - if (!Contains (rn)) { - if (i == 0) - return false; - throw new OptionException (string.Format (localizer ( - "Cannot bundle unregistered option '{0}'."), opt), opt); - } - p = this [rn]; - switch (p.OptionValueType) { - case OptionValueType.None: - Invoke (c, opt, n, p); - break; - case OptionValueType.Optional: - case OptionValueType.Required: - { - string v = n.Substring (i + 1); - c.Option = p; - c.OptionName = opt; - ParseValue (v.Length != 0 ? v : null, c); - return true; - } - default: - throw new InvalidOperationException ("Unknown OptionValueType: " + p.OptionValueType); - } - } - return true; - } - - private static void Invoke (OptionContext c, string name, string value, Option option) - { - c.OptionName = name; - c.Option = option; - c.OptionValues.Add (value); - option.Invoke (c); - } - - private const int OptionWidth = 29; - private const int Description_FirstWidth = 80 - OptionWidth; - private const int Description_RemWidth = 80 - OptionWidth - 2; - - public void WriteOptionDescriptions (TextWriter o) - { - foreach (Option p in this) { - int written = 0; - - if (p.Hidden) - continue; - - Category c = p as Category; - if (c != null) { - WriteDescription (o, p.Description, "", 80, 80); - continue; - } - - if (!WriteOptionPrototype (o, p, ref written)) - continue; - - if (written < OptionWidth) - o.Write (new string (' ', OptionWidth - written)); - else { - o.WriteLine (); - o.Write (new string (' ', OptionWidth)); - } - - WriteDescription (o, p.Description, new string (' ', OptionWidth + 2), - Description_FirstWidth, Description_RemWidth); - } - - foreach (ArgumentSource s in sources) { - string[] names = s.GetNames (); - if (names == null || names.Length == 0) - continue; - - int written = 0; - - Write (o, ref written, " "); - Write (o, ref written, names [0]); - for (int i = 1; i < names.Length; ++i) { - Write (o, ref written, ", "); - Write (o, ref written, names [i]); - } - - if (written < OptionWidth) - o.Write (new string (' ', OptionWidth - written)); - else { - o.WriteLine (); - o.Write (new string (' ', OptionWidth)); - } - - WriteDescription (o, s.Description, new string (' ', OptionWidth + 2), - Description_FirstWidth, Description_RemWidth); - } - } - - void WriteDescription (TextWriter o, string value, string prefix, int firstWidth, int remWidth) - { - bool indent = false; - foreach (string line in GetLines (localizer (GetDescription (value)), firstWidth, remWidth)) { - if (indent) - o.Write (prefix); - o.WriteLine (line); - indent = true; - } - } - - bool WriteOptionPrototype (TextWriter o, Option p, ref int written) - { - string[] names = p.Names; - - int i = GetNextOptionIndex (names, 0); - if (i == names.Length) - return false; - - if (names [i].Length == 1) { - Write (o, ref written, " -"); - Write (o, ref written, names [0]); - } else { - Write (o, ref written, " --"); - Write (o, ref written, names [0]); - } - - for (i = GetNextOptionIndex (names, i + 1); - i < names.Length; i = GetNextOptionIndex (names, i + 1)) { - Write (o, ref written, ", "); - Write (o, ref written, names [i].Length == 1 ? "-" : "--"); - Write (o, ref written, names [i]); - } - - if (p.OptionValueType == OptionValueType.Optional || - p.OptionValueType == OptionValueType.Required) { - if (p.OptionValueType == OptionValueType.Optional) { - Write (o, ref written, localizer ("[")); - } - Write (o, ref written, localizer ("=" + GetArgumentName (0, p.MaxValueCount, p.Description))); - string sep = p.ValueSeparators != null && p.ValueSeparators.Length > 0 - ? p.ValueSeparators [0] - : " "; - for (int c = 1; c < p.MaxValueCount; ++c) { - Write (o, ref written, localizer (sep + GetArgumentName (c, p.MaxValueCount, p.Description))); - } - if (p.OptionValueType == OptionValueType.Optional) { - Write (o, ref written, localizer ("]")); - } - } - return true; - } - - static int GetNextOptionIndex (string[] names, int i) - { - while (i < names.Length && names [i] == "<>") { - ++i; - } - return i; - } - - static void Write (TextWriter o, ref int n, string s) - { - n += s.Length; - o.Write (s); - } - - private static string GetArgumentName (int index, int maxIndex, string description) - { - if (description == null) - return maxIndex == 1 ? "VALUE" : "VALUE" + (index + 1); - string[] nameStart; - if (maxIndex == 1) - nameStart = new string[]{ "{0:", "{" }; - else - nameStart = new string[]{ "{" + index + ":" }; - for (int i = 0; i < nameStart.Length; ++i) { - int start, j = 0; - do { - start = description.IndexOf (nameStart [i], j); - } while (start >= 0 && j != 0 ? description [j++ - 1] == '{' : false); - if (start == -1) - continue; - int end = description.IndexOf ("}", start); - if (end == -1) - continue; - return description.Substring (start + nameStart [i].Length, end - start - nameStart [i].Length); - } - return maxIndex == 1 ? "VALUE" : "VALUE" + (index + 1); - } - - private static string GetDescription (string description) - { - if (description == null) - return string.Empty; - StringBuilder sb = new StringBuilder (description.Length); - int start = -1; - for (int i = 0; i < description.Length; ++i) { - switch (description [i]) { - case '{': - if (i == start) { - sb.Append ('{'); - start = -1; - } else if (start < 0) - start = i + 1; - break; - case '}': - if (start < 0) { - if ((i + 1) == description.Length || description [i + 1] != '}') - throw new InvalidOperationException ("Invalid option description: " + description); - ++i; - sb.Append ("}"); - } else { - sb.Append (description.Substring (start, i - start)); - start = -1; - } - break; - case ':': - if (start < 0) - goto default; - start = i + 1; - break; - default: - if (start < 0) - sb.Append (description [i]); - break; - } - } - return sb.ToString (); - } - - private static IEnumerable GetLines (string description, int firstWidth, int remWidth) - { - return StringCoda.WrappedLines (description, firstWidth, remWidth); - } - } -} - diff --git a/tools/logcat-parse/Properties/AssemblyInfo.cs b/tools/logcat-parse/Properties/AssemblyInfo.cs deleted file mode 100644 index 42f73e5ac..000000000 --- a/tools/logcat-parse/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. -[assembly: AssemblyTitle ("logcat-parse")] -[assembly: AssemblyDescription ("")] -[assembly: AssemblyConfiguration ("")] -[assembly: AssemblyCompany ("Xamarin Inc.")] -[assembly: AssemblyProduct ("")] -[assembly: AssemblyCopyright ("Xamarin Inc.")] -[assembly: AssemblyTrademark ("Xamarin")] -[assembly: AssemblyCulture ("")] -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. -[assembly: AssemblyVersion ("1.0.*")] -// The following attributes are used to specify the signing key for the assembly, -// if desired. See the Mono documentation for more information about signing. -//[assembly: AssemblyDelaySign(false)] -//[assembly: AssemblyKeyFile("")] - diff --git a/tools/logcat-parse/logcat-parse.csproj b/tools/logcat-parse/logcat-parse.csproj index 708a4d88b..191e862cc 100644 --- a/tools/logcat-parse/logcat-parse.csproj +++ b/tools/logcat-parse/logcat-parse.csproj @@ -1,60 +1,28 @@ - - + + - Debug - AnyCPU - 8.0.30703 - 2.0 - {7387E151-48E3-4885-B2CA-A74434A34045} + net472 Exe - Xamarin.Android.Tools.LogcatParse - logcat-parse - v4.6.1 - Xamarin.Android.Tools.LogcatParse.Program + false + - - true - full - false - $(UtilityOutputFullPath) - DEBUG;TRACE - prompt - 4 - true - true - - - full - true + + $(UtilityOutputFullPath) - TRACE - prompt - 4 - true - true + - - - - ..\..\packages\Mono.CSharp.4.0.0.143\lib\4.5\Mono.CSharp.dll - - - ..\..\packages\Mono.Terminal.4.2.2.0\lib\net4\Mono.Terminal.dll - - - - - - - - - - + + + - + - + + + + + diff --git a/tools/logcat-parse/packages.config b/tools/logcat-parse/packages.config deleted file mode 100644 index 4d7504489..000000000 --- a/tools/logcat-parse/packages.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file From c8dd683b259db327ec29b0f755ec723980ca5eda Mon Sep 17 00:00:00 2001 From: Jonathan Pobst Date: Mon, 13 Jan 2020 11:30:45 -0600 Subject: [PATCH 02/12] JdkInfo.props doesn't exist when doing xaprepare's Nuget restore, so ignore it if it doesn't exist yet. --- src/java-interop/java-interop.csproj | 2 +- .../Java.Interop-PerformanceTests.csproj | 2 +- tests/Java.Interop-Tests/Java.Interop-Tests.csproj | 2 +- .../Java.Interop.Export-Tests/Java.Interop.Export-Tests.csproj | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/java-interop/java-interop.csproj b/src/java-interop/java-interop.csproj index 4f572aed6..aba7da7e0 100644 --- a/src/java-interop/java-interop.csproj +++ b/src/java-interop/java-interop.csproj @@ -26,7 +26,7 @@ JI_DLL_EXPORT MONODEVELOP MONO_DLL_EXPORT . - + diff --git a/tests/Java.Interop-PerformanceTests/Java.Interop-PerformanceTests.csproj b/tests/Java.Interop-PerformanceTests/Java.Interop-PerformanceTests.csproj index 820ca6bc5..e5361843f 100644 --- a/tests/Java.Interop-PerformanceTests/Java.Interop-PerformanceTests.csproj +++ b/tests/Java.Interop-PerformanceTests/Java.Interop-PerformanceTests.csproj @@ -29,7 +29,7 @@ - + diff --git a/tests/Java.Interop-Tests/Java.Interop-Tests.csproj b/tests/Java.Interop-Tests/Java.Interop-Tests.csproj index 321619116..5d896a9c5 100644 --- a/tests/Java.Interop-Tests/Java.Interop-Tests.csproj +++ b/tests/Java.Interop-Tests/Java.Interop-Tests.csproj @@ -34,7 +34,7 @@ - + diff --git a/tests/Java.Interop.Export-Tests/Java.Interop.Export-Tests.csproj b/tests/Java.Interop.Export-Tests/Java.Interop.Export-Tests.csproj index 873b6c703..7abbf808d 100644 --- a/tests/Java.Interop.Export-Tests/Java.Interop.Export-Tests.csproj +++ b/tests/Java.Interop.Export-Tests/Java.Interop.Export-Tests.csproj @@ -30,7 +30,7 @@ - + From 15a74ef9646e0f9572ff0f0e789ca2c7896ce9ca Mon Sep 17 00:00:00 2001 From: Jonathan Pobst Date: Mon, 13 Jan 2020 11:56:01 -0600 Subject: [PATCH 03/12] See if this fixes Mono.Android.dll error. --- tools/generator/generator.csproj | 2 +- tools/jcw-gen/jcw-gen.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/generator/generator.csproj b/tools/generator/generator.csproj index 080257ad1..8575c4d92 100644 --- a/tools/generator/generator.csproj +++ b/tools/generator/generator.csproj @@ -1,7 +1,7 @@  - net472 + net461 Exe $(DefineConstants);GENERATOR;HAVE_CECIL;JCW_ONLY_TYPE_NAMES false diff --git a/tools/jcw-gen/jcw-gen.csproj b/tools/jcw-gen/jcw-gen.csproj index 49f64e523..b77b3e4cd 100644 --- a/tools/jcw-gen/jcw-gen.csproj +++ b/tools/jcw-gen/jcw-gen.csproj @@ -1,7 +1,7 @@  - net472 + net461 Exe false From f1fb6bdd1331d6d099847406c1bf282ffaf31a10 Mon Sep 17 00:00:00 2001 From: Peter Collins Date: Tue, 3 Mar 2020 14:27:10 -0500 Subject: [PATCH 04/12] Copy HtmlAgilityPack.pdb to output dir --- tools/generator/generator.csproj | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tools/generator/generator.csproj b/tools/generator/generator.csproj index 8575c4d92..9244b404f 100644 --- a/tools/generator/generator.csproj +++ b/tools/generator/generator.csproj @@ -27,7 +27,7 @@ - + @@ -39,4 +39,15 @@ + + + + + From 65dcb6da9096d28653c21e393d5fd8c4fb62bc40 Mon Sep 17 00:00:00 2001 From: Peter Collins Date: Thu, 5 Mar 2020 13:14:44 -0500 Subject: [PATCH 05/12] Append TargetFramework to OutputPath --- Makefile | 26 ++++++++++--------- build-tools/automation/azure-pipelines.yaml | 4 +-- samples/Hello/Hello.csproj | 1 - .../Java.Interop.Dynamic.csproj | 1 - .../Java.Interop.Export.csproj | 1 - .../Java.Interop.GenericMarshaler.csproj | 1 - .../Java.Interop.Tools.Cecil.csproj | 1 - .../Java.Interop.Tools.Diagnostics.csproj | 1 - ....Interop.Tools.JavaCallableWrappers.csproj | 1 - src/Java.Interop/Java.Interop.csproj | 17 +++--------- .../Java.Runtime.Environment.csproj | 1 - ...droid.Tools.AnnotationSupport.Cecil.csproj | 1 - ...rin.Android.Tools.AnnotationSupport.csproj | 1 - ...amarin.Android.Tools.ApiXmlAdjuster.csproj | 1 - .../Xamarin.Android.Tools.Bytecode.csproj | 1 - .../Java.Interop-PerformanceTests.csproj | 1 - .../Java.Interop-Tests.csproj | 12 ++------- .../Java.Interop.Dynamic-Tests.csproj | 1 - .../Java.Interop.Export-Tests.csproj | 3 +-- ...op.Tools.JavaCallableWrappers-Tests.csproj | 1 - ...Java.Interop.Tools.JavaSource-Tests.csproj | 1 - tests/TestJVM/TestJVM.csproj | 1 - .../JavaApiTestHelper.cs | 1 + ....Android.Tools.ApiXmlAdjuster-Tests.csproj | 1 - ...amarin.Android.Tools.Bytecode-Tests.csproj | 1 - .../Integration-Tests/Compiler.cs | 2 +- tests/generator-Tests/generator-Tests.csproj | 1 - .../logcat-parse-Tests.csproj | 1 - tools/class-parse/class-parse.csproj | 1 - tools/generator/generator.csproj | 1 - tools/jcw-gen/jcw-gen.csproj | 1 - ...oid.Tools.JniMarshalMethodGenerator.csproj | 1 - tools/logcat-parse/logcat-parse.csproj | 1 - .../param-name-importer.csproj | 1 - 34 files changed, 24 insertions(+), 68 deletions(-) diff --git a/Makefile b/Makefile index fdbc88155..d7cc7c93c 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,8 @@ OS ?= $(shell uname) V ?= 0 CONFIGURATION = Debug +TFNETSTANDARD = netstandard2.0 +TFNETFRAMEWORK = net472 ifeq ($(OS),Darwin) NATIVE_EXT = .dylib @@ -20,24 +22,24 @@ PREPARE_EXTERNAL_FILES = \ external/xamarin-android-tools/src/Xamarin.Android.Tools.AndroidSdk/Xamarin.Android.Tools.AndroidSdk.csproj DEPENDENCIES = \ - bin/Test$(CONFIGURATION)/libNativeTiming$(NATIVE_EXT) + bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/libNativeTiming$(NATIVE_EXT) TESTS = \ - bin/Test$(CONFIGURATION)/Java.Interop-Tests.dll \ - bin/Test$(CONFIGURATION)/Java.Interop.Dynamic-Tests.dll \ - bin/Test$(CONFIGURATION)/Java.Interop.Export-Tests.dll \ - bin/Test$(CONFIGURATION)/Java.Interop.Tools.JavaCallableWrappers-Tests.dll \ - bin/Test$(CONFIGURATION)/Java.Interop.Tools.JavaSource-Tests.dll \ - bin/Test$(CONFIGURATION)/logcat-parse-Tests.dll \ - bin/Test$(CONFIGURATION)/generator-Tests.dll \ - bin/Test$(CONFIGURATION)/Xamarin.Android.Tools.ApiXmlAdjuster-Tests.dll \ - bin/Test$(CONFIGURATION)/Xamarin.Android.Tools.Bytecode-Tests.dll + bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/Java.Interop-Tests.dll \ + bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/Java.Interop.Dynamic-Tests.dll \ + bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/Java.Interop.Export-Tests.dll \ + bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/Java.Interop.Tools.JavaCallableWrappers-Tests.dll \ + bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/Java.Interop.Tools.JavaSource-Tests.dll \ + bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/logcat-parse-Tests.dll \ + bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/generator-Tests.dll \ + bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/Xamarin.Android.Tools.ApiXmlAdjuster-Tests.dll \ + bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/Xamarin.Android.Tools.Bytecode-Tests.dll PTESTS = \ - bin/Test$(CONFIGURATION)/Java.Interop-PerformanceTests.dll + bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/Java.Interop-PerformanceTests.dll ATESTS = \ - bin/Test$(CONFIGURATION)/Android.Interop-Tests.dll + bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/Android.Interop-Tests.dll NUNIT_CONSOLE = packages/NUnit.ConsoleRunner.3.9.0/tools/nunit3-console.exe diff --git a/build-tools/automation/azure-pipelines.yaml b/build-tools/automation/azure-pipelines.yaml index f57f77556..6f001222c 100644 --- a/build-tools/automation/azure-pipelines.yaml +++ b/build-tools/automation/azure-pipelines.yaml @@ -51,14 +51,14 @@ jobs: inputs: solution: Java.Interop.sln configuration: $(Build.Configuration) - msbuildArguments: '/t:Restore,Build' + msbuildArguments: /restore - task: MSBuild@1 displayName: MSBuild RunNUnitTests.targets inputs: solution: build-tools/scripts/RunNUnitTests.targets configuration: $(Build.Configuration) - msbuildArguments: /p:TestAssembly="bin\Test$(Build.Configuration)\generator-Tests.dll;bin\Test$(Build.Configuration)\Java.Interop.Tools.JavaCallableWrappers-Tests.dll;bin\Test$(Build.Configuration)\logcat-parse-Tests.dll;bin\Test$(Build.Configuration)\Xamarin.Android.Tools.ApiXmlAdjuster-Tests.dll;bin\Test$(Build.Configuration)\Xamarin.Android.Tools.Bytecode-Tests.dll" + msbuildArguments: /p:TestAssembly="bin\Test$(Build.Configuration)\net472\generator-Tests.dll;bin\Test$(Build.Configuration)\net472\Java.Interop.Tools.JavaCallableWrappers-Tests.dll;bin\Test$(Build.Configuration)\net472\logcat-parse-Tests.dll;bin\Test$(Build.Configuration)\net472\Xamarin.Android.Tools.ApiXmlAdjuster-Tests.dll;bin\Test$(Build.Configuration)\net472\Xamarin.Android.Tools.Bytecode-Tests.dll" condition: succeededOrFailed() - task: PublishTestResults@2 diff --git a/samples/Hello/Hello.csproj b/samples/Hello/Hello.csproj index d524c3877..9374186b7 100644 --- a/samples/Hello/Hello.csproj +++ b/samples/Hello/Hello.csproj @@ -3,7 +3,6 @@ net472 Exe - false true diff --git a/src/Java.Interop.Dynamic/Java.Interop.Dynamic.csproj b/src/Java.Interop.Dynamic/Java.Interop.Dynamic.csproj index 2cf775231..f0c557f43 100644 --- a/src/Java.Interop.Dynamic/Java.Interop.Dynamic.csproj +++ b/src/Java.Interop.Dynamic/Java.Interop.Dynamic.csproj @@ -10,7 +10,6 @@ Microsoft Corporation Microsoft Corporation 0.1.0.0 - false ..\..\bin\Debug diff --git a/src/Java.Interop.Export/Java.Interop.Export.csproj b/src/Java.Interop.Export/Java.Interop.Export.csproj index f2fe47325..c60f6387e 100644 --- a/src/Java.Interop.Export/Java.Interop.Export.csproj +++ b/src/Java.Interop.Export/Java.Interop.Export.csproj @@ -9,7 +9,6 @@ Microsoft Corporation Microsoft Corporation 0.1.0.0 - false ..\..\bin\Debug diff --git a/src/Java.Interop.GenericMarshaler/Java.Interop.GenericMarshaler.csproj b/src/Java.Interop.GenericMarshaler/Java.Interop.GenericMarshaler.csproj index 75c52e2f9..138b6ec0c 100644 --- a/src/Java.Interop.GenericMarshaler/Java.Interop.GenericMarshaler.csproj +++ b/src/Java.Interop.GenericMarshaler/Java.Interop.GenericMarshaler.csproj @@ -10,7 +10,6 @@ Microsoft Corporation Microsoft Corporation 0.1.0.0 - false ..\..\bin\Debug diff --git a/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil.csproj b/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil.csproj index 9f7b71bef..0b6132ab8 100644 --- a/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil.csproj +++ b/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil.csproj @@ -2,7 +2,6 @@ netstandard2.0 - false diff --git a/src/Java.Interop.Tools.Diagnostics/Java.Interop.Tools.Diagnostics.csproj b/src/Java.Interop.Tools.Diagnostics/Java.Interop.Tools.Diagnostics.csproj index b60f913bd..07fbe42c0 100644 --- a/src/Java.Interop.Tools.Diagnostics/Java.Interop.Tools.Diagnostics.csproj +++ b/src/Java.Interop.Tools.Diagnostics/Java.Interop.Tools.Diagnostics.csproj @@ -2,7 +2,6 @@ netstandard2.0 - false diff --git a/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers.csproj b/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers.csproj index 2db2da771..54105d9e4 100644 --- a/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers.csproj +++ b/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers.csproj @@ -2,7 +2,6 @@ netstandard2.0 - false diff --git a/src/Java.Interop/Java.Interop.csproj b/src/Java.Interop/Java.Interop.csproj index 211f11c8e..4c183e544 100644 --- a/src/Java.Interop/Java.Interop.csproj +++ b/src/Java.Interop/Java.Interop.csproj @@ -8,20 +8,9 @@ INTEROP;FEATURE_JNIENVIRONMENT_JI_PINVOKES;FEATURE_JNIOBJECTREFERENCE_INTPTRS;INTERNAL_NULLABLE_ATTRIBUTES true false - false - - - ..\..\bin\Debug - ..\..\bin\Debug\Java.Interop.xml - ..\..\bin\BuildDebug - $(DefineConstants);DEBUG;NETSTANDARD;NETSTANDARD2_0 - 8.0 - enable - - - ..\..\bin\Release - ..\..\bin\Release\Java.Interop.xml - ..\..\bin\BuildRelease + ..\..\bin\$(Configuration) + ..\..\bin\Build$(Configuration) + $(OutputPath)Java.Interop.xml 8.0 enable diff --git a/src/Java.Runtime.Environment/Java.Runtime.Environment.csproj b/src/Java.Runtime.Environment/Java.Runtime.Environment.csproj index 83bc2de08..0f94e9e38 100644 --- a/src/Java.Runtime.Environment/Java.Runtime.Environment.csproj +++ b/src/Java.Runtime.Environment/Java.Runtime.Environment.csproj @@ -5,7 +5,6 @@ true ..\..\product.snk true - false diff --git a/src/Xamarin.Android.Tools.AnnotationSupport.Cecil/Xamarin.Android.Tools.AnnotationSupport.Cecil.csproj b/src/Xamarin.Android.Tools.AnnotationSupport.Cecil/Xamarin.Android.Tools.AnnotationSupport.Cecil.csproj index 12d7e7090..8527c2bc8 100644 --- a/src/Xamarin.Android.Tools.AnnotationSupport.Cecil/Xamarin.Android.Tools.AnnotationSupport.Cecil.csproj +++ b/src/Xamarin.Android.Tools.AnnotationSupport.Cecil/Xamarin.Android.Tools.AnnotationSupport.Cecil.csproj @@ -2,7 +2,6 @@ netstandard2.0 - false diff --git a/src/Xamarin.Android.Tools.AnnotationSupport/Xamarin.Android.Tools.AnnotationSupport.csproj b/src/Xamarin.Android.Tools.AnnotationSupport/Xamarin.Android.Tools.AnnotationSupport.csproj index a4b4d8666..1ff8b445e 100644 --- a/src/Xamarin.Android.Tools.AnnotationSupport/Xamarin.Android.Tools.AnnotationSupport.csproj +++ b/src/Xamarin.Android.Tools.AnnotationSupport/Xamarin.Android.Tools.AnnotationSupport.csproj @@ -2,7 +2,6 @@ netstandard2.0 - false diff --git a/src/Xamarin.Android.Tools.ApiXmlAdjuster/Xamarin.Android.Tools.ApiXmlAdjuster.csproj b/src/Xamarin.Android.Tools.ApiXmlAdjuster/Xamarin.Android.Tools.ApiXmlAdjuster.csproj index 4ce0e7df7..6fd7142b1 100644 --- a/src/Xamarin.Android.Tools.ApiXmlAdjuster/Xamarin.Android.Tools.ApiXmlAdjuster.csproj +++ b/src/Xamarin.Android.Tools.ApiXmlAdjuster/Xamarin.Android.Tools.ApiXmlAdjuster.csproj @@ -2,7 +2,6 @@ netstandard2.0 - false diff --git a/src/Xamarin.Android.Tools.Bytecode/Xamarin.Android.Tools.Bytecode.csproj b/src/Xamarin.Android.Tools.Bytecode/Xamarin.Android.Tools.Bytecode.csproj index 0a371d797..b521d79b5 100644 --- a/src/Xamarin.Android.Tools.Bytecode/Xamarin.Android.Tools.Bytecode.csproj +++ b/src/Xamarin.Android.Tools.Bytecode/Xamarin.Android.Tools.Bytecode.csproj @@ -2,7 +2,6 @@ netstandard2.0 - false diff --git a/tests/Java.Interop-PerformanceTests/Java.Interop-PerformanceTests.csproj b/tests/Java.Interop-PerformanceTests/Java.Interop-PerformanceTests.csproj index e5361843f..96d73cb9f 100644 --- a/tests/Java.Interop-PerformanceTests/Java.Interop-PerformanceTests.csproj +++ b/tests/Java.Interop-PerformanceTests/Java.Interop-PerformanceTests.csproj @@ -4,7 +4,6 @@ net472 false true - false diff --git a/tests/Java.Interop-Tests/Java.Interop-Tests.csproj b/tests/Java.Interop-Tests/Java.Interop-Tests.csproj index 5d896a9c5..1479f6016 100644 --- a/tests/Java.Interop-Tests/Java.Interop-Tests.csproj +++ b/tests/Java.Interop-Tests/Java.Interop-Tests.csproj @@ -4,15 +4,7 @@ net472 false true - false - - - - ..\..\bin\TestDebug - - - - ..\..\bin\TestRelease + ..\..\bin\Test$(Configuration) @@ -49,7 +41,7 @@ - + diff --git a/tests/Java.Interop.Dynamic-Tests/Java.Interop.Dynamic-Tests.csproj b/tests/Java.Interop.Dynamic-Tests/Java.Interop.Dynamic-Tests.csproj index e4f1bb01c..aa2726a0c 100644 --- a/tests/Java.Interop.Dynamic-Tests/Java.Interop.Dynamic-Tests.csproj +++ b/tests/Java.Interop.Dynamic-Tests/Java.Interop.Dynamic-Tests.csproj @@ -4,7 +4,6 @@ net472 false true - false diff --git a/tests/Java.Interop.Export-Tests/Java.Interop.Export-Tests.csproj b/tests/Java.Interop.Export-Tests/Java.Interop.Export-Tests.csproj index 7abbf808d..4b7e9974b 100644 --- a/tests/Java.Interop.Export-Tests/Java.Interop.Export-Tests.csproj +++ b/tests/Java.Interop.Export-Tests/Java.Interop.Export-Tests.csproj @@ -4,7 +4,6 @@ net472 false true - false @@ -38,7 +37,7 @@ - + diff --git a/tests/Java.Interop.Tools.JavaCallableWrappers-Tests/Java.Interop.Tools.JavaCallableWrappers-Tests.csproj b/tests/Java.Interop.Tools.JavaCallableWrappers-Tests/Java.Interop.Tools.JavaCallableWrappers-Tests.csproj index c0474c24c..46fb71300 100644 --- a/tests/Java.Interop.Tools.JavaCallableWrappers-Tests/Java.Interop.Tools.JavaCallableWrappers-Tests.csproj +++ b/tests/Java.Interop.Tools.JavaCallableWrappers-Tests/Java.Interop.Tools.JavaCallableWrappers-Tests.csproj @@ -3,7 +3,6 @@ net472 false - false $(DefineConstants);HAVE_CECIL;JCW_ONLY_TYPE_NAMES diff --git a/tests/Java.Interop.Tools.JavaSource-Tests/Java.Interop.Tools.JavaSource-Tests.csproj b/tests/Java.Interop.Tools.JavaSource-Tests/Java.Interop.Tools.JavaSource-Tests.csproj index e97b2c4da..ec5039908 100644 --- a/tests/Java.Interop.Tools.JavaSource-Tests/Java.Interop.Tools.JavaSource-Tests.csproj +++ b/tests/Java.Interop.Tools.JavaSource-Tests/Java.Interop.Tools.JavaSource-Tests.csproj @@ -2,7 +2,6 @@ net472 False - False ..\..\bin\TestDebug diff --git a/tests/TestJVM/TestJVM.csproj b/tests/TestJVM/TestJVM.csproj index e1c2c8007..31eeee5c9 100644 --- a/tests/TestJVM/TestJVM.csproj +++ b/tests/TestJVM/TestJVM.csproj @@ -3,7 +3,6 @@ net472 false - false diff --git a/tests/Xamarin.Android.Tools.ApiXmlAdjuster-Tests/JavaApiTestHelper.cs b/tests/Xamarin.Android.Tools.ApiXmlAdjuster-Tests/JavaApiTestHelper.cs index 729696459..db6f98683 100644 --- a/tests/Xamarin.Android.Tools.ApiXmlAdjuster-Tests/JavaApiTestHelper.cs +++ b/tests/Xamarin.Android.Tools.ApiXmlAdjuster-Tests/JavaApiTestHelper.cs @@ -9,6 +9,7 @@ public class JavaApiTestHelper static readonly string TopDir = Path.Combine ( Path.GetDirectoryName (typeof (JavaApiTestHelper).Assembly.Location), "..", + "..", ".."); static readonly string ApiPath = Path.Combine ( diff --git a/tests/Xamarin.Android.Tools.ApiXmlAdjuster-Tests/Xamarin.Android.Tools.ApiXmlAdjuster-Tests.csproj b/tests/Xamarin.Android.Tools.ApiXmlAdjuster-Tests/Xamarin.Android.Tools.ApiXmlAdjuster-Tests.csproj index 52a38172a..da265bce9 100644 --- a/tests/Xamarin.Android.Tools.ApiXmlAdjuster-Tests/Xamarin.Android.Tools.ApiXmlAdjuster-Tests.csproj +++ b/tests/Xamarin.Android.Tools.ApiXmlAdjuster-Tests/Xamarin.Android.Tools.ApiXmlAdjuster-Tests.csproj @@ -3,7 +3,6 @@ net472 false - false diff --git a/tests/Xamarin.Android.Tools.Bytecode-Tests/Xamarin.Android.Tools.Bytecode-Tests.csproj b/tests/Xamarin.Android.Tools.Bytecode-Tests/Xamarin.Android.Tools.Bytecode-Tests.csproj index 746ecdca5..fbdb2d147 100644 --- a/tests/Xamarin.Android.Tools.Bytecode-Tests/Xamarin.Android.Tools.Bytecode-Tests.csproj +++ b/tests/Xamarin.Android.Tools.Bytecode-Tests/Xamarin.Android.Tools.Bytecode-Tests.csproj @@ -5,7 +5,6 @@ net472 false - false diff --git a/tests/generator-Tests/Integration-Tests/Compiler.cs b/tests/generator-Tests/Integration-Tests/Compiler.cs index 2ce29d920..dd89c5b06 100644 --- a/tests/generator-Tests/Integration-Tests/Compiler.cs +++ b/tests/generator-Tests/Integration-Tests/Compiler.cs @@ -21,7 +21,7 @@ static CodeDomProvider GetCodeDomProvider () // Comments on this here: https://stackoverflow.com/a/40311406/132442 // They added an environment variable as a workaround: https://github.com/aspnet/RoslynCodeDomProvider/pull/12 if (string.IsNullOrEmpty (Environment.GetEnvironmentVariable (RoslynEnvironmentVariable, EnvironmentVariableTarget.Process))) { - string roslynPath = Path.GetFullPath (Path.Combine (unitTestFrameworkAssemblyPath, "..", "..", "..", "packages", "microsoft.codedom.providers.dotnetcompilerplatform", "2.0.1", "tools", "RoslynLatest")); + string roslynPath = Path.GetFullPath (Path.Combine (unitTestFrameworkAssemblyPath, "..", "..", "..", "..", "packages", "microsoft.codedom.providers.dotnetcompilerplatform", "2.0.1", "tools", "RoslynLatest")); Environment.SetEnvironmentVariable (RoslynEnvironmentVariable, roslynPath, EnvironmentVariableTarget.Process); } diff --git a/tests/generator-Tests/generator-Tests.csproj b/tests/generator-Tests/generator-Tests.csproj index ecd6b9906..288433cad 100644 --- a/tests/generator-Tests/generator-Tests.csproj +++ b/tests/generator-Tests/generator-Tests.csproj @@ -3,7 +3,6 @@ net472 false - false true diff --git a/tests/logcat-parse-Tests/logcat-parse-Tests.csproj b/tests/logcat-parse-Tests/logcat-parse-Tests.csproj index de7ff34c1..e8e134e02 100644 --- a/tests/logcat-parse-Tests/logcat-parse-Tests.csproj +++ b/tests/logcat-parse-Tests/logcat-parse-Tests.csproj @@ -3,7 +3,6 @@ net472 false - false diff --git a/tools/class-parse/class-parse.csproj b/tools/class-parse/class-parse.csproj index 5d6b06c2b..45d147d14 100644 --- a/tools/class-parse/class-parse.csproj +++ b/tools/class-parse/class-parse.csproj @@ -3,7 +3,6 @@ net472 Exe - false diff --git a/tools/generator/generator.csproj b/tools/generator/generator.csproj index 9244b404f..5f46175f4 100644 --- a/tools/generator/generator.csproj +++ b/tools/generator/generator.csproj @@ -4,7 +4,6 @@ net461 Exe $(DefineConstants);GENERATOR;HAVE_CECIL;JCW_ONLY_TYPE_NAMES - false diff --git a/tools/jcw-gen/jcw-gen.csproj b/tools/jcw-gen/jcw-gen.csproj index b77b3e4cd..68e778acf 100644 --- a/tools/jcw-gen/jcw-gen.csproj +++ b/tools/jcw-gen/jcw-gen.csproj @@ -3,7 +3,6 @@ net461 Exe - false diff --git a/tools/jnimarshalmethod-gen/Xamarin.Android.Tools.JniMarshalMethodGenerator.csproj b/tools/jnimarshalmethod-gen/Xamarin.Android.Tools.JniMarshalMethodGenerator.csproj index b6f539410..83e468087 100644 --- a/tools/jnimarshalmethod-gen/Xamarin.Android.Tools.JniMarshalMethodGenerator.csproj +++ b/tools/jnimarshalmethod-gen/Xamarin.Android.Tools.JniMarshalMethodGenerator.csproj @@ -4,7 +4,6 @@ net472 Exe jnimarshalmethod-gen - false diff --git a/tools/logcat-parse/logcat-parse.csproj b/tools/logcat-parse/logcat-parse.csproj index 191e862cc..bb05b94d8 100644 --- a/tools/logcat-parse/logcat-parse.csproj +++ b/tools/logcat-parse/logcat-parse.csproj @@ -3,7 +3,6 @@ net472 Exe - false diff --git a/tools/param-name-importer/param-name-importer.csproj b/tools/param-name-importer/param-name-importer.csproj index 926c35786..90777c4e2 100644 --- a/tools/param-name-importer/param-name-importer.csproj +++ b/tools/param-name-importer/param-name-importer.csproj @@ -2,7 +2,6 @@ net472 Exe - False From d96f3cd63d0dfdf2843f6631060dcd7d820f6a1b Mon Sep 17 00:00:00 2001 From: Peter Collins Date: Thu, 5 Mar 2020 13:36:07 -0500 Subject: [PATCH 06/12] Makefile fixes for TF in OutputDir --- Makefile | 46 +++++++++++++++++++------------------- samples/Hello/Hello.csproj | 9 +------- 2 files changed, 24 insertions(+), 31 deletions(-) diff --git a/Makefile b/Makefile index d7cc7c93c..e599ab134 100644 --- a/Makefile +++ b/Makefile @@ -99,13 +99,13 @@ src/Java.Runtime.Environment/Java.Runtime.Environment.dll.config: src/Java.Runti JAVA_INTEROP_LIB = libjava-interop$(NATIVE_EXT) NATIVE_TIMING_LIB = libNativeTiming$(NATIVE_EXT) -bin/Test$(CONFIGURATION)/$(NATIVE_TIMING_LIB): tests/NativeTiming/timing.c $(wildcard $(JI_JDK_INCLUDE_PATHS)/jni.h) +bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/($(NATIVE_TIMING_LIB): tests/NativeTiming/timing.c $(wildcard $(JI_JDK_INCLUDE_PATHS)/jni.h) mkdir -p `dirname "$@"` gcc -g -shared -m64 -fPIC -o $@ $< $(JI_JDK_INCLUDE_PATHS:%=-I%) # Usage: $(call TestAssemblyTemplate,assembly-basename) define TestAssemblyTemplate -bin/Test$$(CONFIGURATION)/$(1)-Tests.dll: $(wildcard src/$(1)/*/*.cs src/$(1)/Test*/*/*.cs) +bin/Test$$(CONFIGURATION)/$$(TFNETFRAMEWORK)/$(1)-Tests.dll: $(wildcard src/$(1)/*/*.cs src/$(1)/Test*/*/*.cs) $$(MSBUILD) $$(MSBUILD_FLAGS) touch $$@ endef # TestAssemblyTemplate @@ -115,22 +115,22 @@ $(eval $(call TestAssemblyTemplate,Java.Interop.Dynamic)) $(eval $(call TestAssemblyTemplate,Java.Interop.Export)) $(eval $(call TestAssemblyTemplate,Java.Interop.Tools.JavaCallableWrappers)) -bin/Test$(CONFIGURATION)/Java.Interop-PerformanceTests.dll: $(wildcard tests/Java.Interop-PerformanceTests/*.cs) bin/Test$(CONFIGURATION)/$(NATIVE_TIMING_LIB) +bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/Java.Interop-PerformanceTests.dll: $(wildcard tests/Java.Interop-PerformanceTests/*.cs) bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/$(NATIVE_TIMING_LIB) $(MSBUILD) $(MSBUILD_FLAGS) touch $@ -bin/Test$(CONFIGURATION)/Android.Interop-Tests.dll: $(wildcard src/Android.Interop/*/*.cs src/Android.Interop/Tests/*/*.cs) +bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/Android.Interop-Tests.dll: $(wildcard src/Android.Interop/*/*.cs src/Android.Interop/Tests/*/*.cs) $(MSBUILD) $(MSBUILD_FLAGS) touch $@ -bin/$(CONFIGURATION)/Java.Interop.dll: $(wildcard src/Java.Interop/*/*.cs) src/Java.Interop/Java.Interop.csproj +bin/$(CONFIGURATION)/$(TFNETFRAMEWORK)/Java.Interop.dll: $(wildcard src/Java.Interop/*/*.cs) src/Java.Interop/Java.Interop.csproj $(MSBUILD) $(if $(V),/v:diag,) /p:Configuration=$(CONFIGURATION) $(if $(SNK),"/p:AssemblyOriginatorKeyFile=$(SNK)",) CSHARP_REFS = \ bin/$(CONFIGURATION)/Java.Interop.dll \ bin/$(CONFIGURATION)/Java.Interop.Export.dll \ bin/$(CONFIGURATION)/Java.Runtime.Environment.dll \ - bin/Test$(CONFIGURATION)/TestJVM.dll \ + bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/TestJVM.dll \ $(PTESTS) \ $(TESTS) @@ -143,17 +143,17 @@ define RUN_TEST $(MSBUILD) $(MSBUILD_FLAGS) build-tools/scripts/RunNUnitTests.targets /p:TestAssembly=$(1) || r=1; endef -run-tests: $(TESTS) bin/Test$(CONFIGURATION)/$(JAVA_INTEROP_LIB) +run-tests: $(TESTS) bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/$(JAVA_INTEROP_LIB) r=0; \ $(foreach t,$(TESTS), $(call RUN_TEST,$(t),1)) \ exit $$r; -run-ptests: $(PTESTS) bin/Test$(CONFIGURATION)/$(JAVA_INTEROP_LIB) +run-ptests: $(PTESTS) bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/$(JAVA_INTEROP_LIB) r=0; \ $(foreach t,$(PTESTS), $(call RUN_TEST,$(t))) \ exit $$r; -bin/Test$(CONFIGURATION)/$(JAVA_INTEROP_LIB): bin/$(CONFIGURATION)/$(JAVA_INTEROP_LIB) +bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/$(JAVA_INTEROP_LIB): bin/$(CONFIGURATION)/$(JAVA_INTEROP_LIB) cp $< $@ JRE_DLL_CONFIG=bin/$(CONFIGURATION)/Java.Runtime.Environment.dll.config @@ -166,7 +166,7 @@ define run-jnimarshalmethod-gen $(RUNTIME) bin/$(CONFIGURATION)/jnimarshalmethod-gen.exe -v --jvm "$(JI_JVM_PATH)" -L "$(JI_MONO_LIB_PATH)mono/4.5" -L "$(JI_MONO_LIB_PATH)mono/4.5/Facades" $(2) $(1) endef -run-test-jnimarshal: bin/Test$(CONFIGURATION)/Java.Interop.Export-Tests.dll bin/Test$(CONFIGURATION)/$(JAVA_INTEROP_LIB) $(JRE_DLL_CONFIG) +run-test-jnimarshal: bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/Java.Interop.Export-Tests.dll bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/$(JAVA_INTEROP_LIB) $(JRE_DLL_CONFIG) mkdir -p test-jni-output $(call run-jnimarshalmethod-gen,"$<",-f -o test-jni-output --keeptemp) (test -f test-jni-output/$(notdir $<) && test -f test-jni-output/Java.Interop.Export-Tests-JniMarshalMethods.dll) || { echo "jnimarshalmethod-gen did not create the expected assemblies in the test-jni-output directory"; exit 1; } @@ -177,21 +177,21 @@ run-test-jnimarshal: bin/Test$(CONFIGURATION)/Java.Interop.Export-Tests.dll bin/ define GEN_CORE_OUTPUT -$(RM) -Rf $(1) mkdir -p $(1) - $(RUNTIME) bin/Test$(CONFIGURATION)/generator.exe -o $(1) $(3) --api-level=20 tests/generator-Tests/Tests-Core/api$(2).xml \ + $(RUNTIME) bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/generator.exe -o $(1) $(3) --api-level=20 tests/generator-Tests/Tests-Core/api$(2).xml \ --enummethods=tests/generator-Tests/Tests-Core/methods$(2).xml \ --enumfields=tests/generator-Tests/Tests-Core/fields$(2).xml \ --enumdir=$(1) endef -run-test-generator-core: bin/Test$(CONFIGURATION)/generator.exe - $(call GEN_CORE_OUTPUT,bin/Test$(CONFIGURATION)/generator-core) - diff -rup --strip-trailing-cr tests/generator-Tests/Tests-Core/expected bin/Test$(CONFIGURATION)/generator-core - $(call GEN_CORE_OUTPUT,bin/Test$(CONFIGURATION)/generator-core,,--codegen-target=JavaInterop1) - diff -rup --strip-trailing-cr tests/generator-Tests/Tests-Core/expected.ji bin/Test$(CONFIGURATION)/generator-core - $(call GEN_CORE_OUTPUT,bin/Test$(CONFIGURATION)/generator-core,-cp) - diff -rup --strip-trailing-cr tests/generator-Tests/Tests-Core/expected.cp bin/Test$(CONFIGURATION)/generator-core +run-test-generator-core: bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/generator.exe + $(call GEN_CORE_OUTPUT,bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/generator-core) + diff -rup --strip-trailing-cr tests/generator-Tests/Tests-Core/expected bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/generator-core + $(call GEN_CORE_OUTPUT,bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/generator-core,,--codegen-target=JavaInterop1) + diff -rup --strip-trailing-cr tests/generator-Tests/Tests-Core/expected.ji bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/generator-core + $(call GEN_CORE_OUTPUT,bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/generator-core,-cp) + diff -rup --strip-trailing-cr tests/generator-Tests/Tests-Core/expected.cp bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/generator-core -bin/Test$(CONFIGURATION)/generator.exe: bin/$(CONFIGURATION)/generator.exe +bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/generator.exe: bin/$(CONFIGURATION)/generator.exe cp $<* `dirname "$@"` update-test-generator-core: @@ -199,15 +199,15 @@ update-test-generator-core: $(call GEN_CORE_OUTPUT,tests/generator-Tests/Tests-Core/expected.ji,--codegen-target=JavaInterop1) update-test-generator-nunit: - -$(MAKE) run-tests TESTS=bin/Test$(CONFIGURATION)/generator-Tests.dll + -$(MAKE) run-tests TESTS=bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/generator-Tests.dll for f in `find tests/generator-Tests/expected -name \*.cs` ; do \ - source=`echo $$f | sed 's#^tests/generator-Tests/expected#bin/Test$(CONFIGURATION)/out#'` ; \ + source=`echo $$f | sed 's#^tests/generator-Tests/expected#bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/out#'` ; \ if [ -f "$$source" ]; then \ cp -f "$$source" "$$f" ; \ fi; \ done - for source in `find bin/Test$(CONFIGURATION)/out.ji -type f` ; do \ - f=`echo $$source | sed 's#^bin/Test$(CONFIGURATION)/out.ji#tests/generator-Tests/expected.ji#'` ; \ + for source in `find bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/out.ji -type f` ; do \ + f=`echo $$source | sed 's#^bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/out.ji#tests/generator-Tests/expected.ji#'` ; \ mkdir -p `dirname $$f`; \ cp -f "$$source" "$$f" ; \ done diff --git a/samples/Hello/Hello.csproj b/samples/Hello/Hello.csproj index 9374186b7..d166f6f13 100644 --- a/samples/Hello/Hello.csproj +++ b/samples/Hello/Hello.csproj @@ -4,14 +4,7 @@ net472 Exe true - - - - ..\..\bin\TestDebug - - - - ..\..\bin\TestRelease + ..\..\bin\Test$(Configuration) From 9c04bb1b676ea1a61ba14a0d2d4dc223f394e380 Mon Sep 17 00:00:00 2001 From: Peter Collins Date: Thu, 5 Mar 2020 14:51:50 -0500 Subject: [PATCH 07/12] More make fixes, bump generator and jcw-gen TFs --- Makefile | 31 ++++++++++++++++--------------- tools/generator/generator.csproj | 2 +- tools/jcw-gen/jcw-gen.csproj | 2 +- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/Makefile b/Makefile index e599ab134..f0e0a9e6a 100644 --- a/Makefile +++ b/Makefile @@ -2,8 +2,6 @@ OS ?= $(shell uname) V ?= 0 CONFIGURATION = Debug -TFNETSTANDARD = netstandard2.0 -TFNETFRAMEWORK = net472 ifeq ($(OS),Darwin) NATIVE_EXT = .dylib @@ -14,6 +12,12 @@ NATIVE_EXT = .so DLLMAP_OS_NAME = linux endif +JAVA_INTEROP_LIB = libjava-interop$(NATIVE_EXT) +NATIVE_TIMING_LIB = libNativeTiming$(NATIVE_EXT) + +TFNETFRAMEWORK = net472 +TFNETSTANDARD = netstandard2.0 + PACKAGES = \ packages/NUnit.3.11.0/NUnit.3.11.0.nupkg \ packages/NUnit.Console.3.9.0/NUnit.Console.3.9.0.nupkg @@ -22,7 +26,7 @@ PREPARE_EXTERNAL_FILES = \ external/xamarin-android-tools/src/Xamarin.Android.Tools.AndroidSdk/Xamarin.Android.Tools.AndroidSdk.csproj DEPENDENCIES = \ - bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/libNativeTiming$(NATIVE_EXT) + bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/$(NATIVE_TIMING_LIB) TESTS = \ bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/Java.Interop-Tests.dll \ @@ -96,10 +100,7 @@ src/Java.Runtime.Environment/Java.Runtime.Environment.dll.config: src/Java.Runti bin/Build$(CONFIGURATION)/JdkInfo.props sed -e 's#@JI_JVM_PATH@#$(JI_JVM_PATH)#g' -e 's#@OS_NAME@#$(DLLMAP_OS_NAME)#g' -e $(JAVA_RUNTIME_ENVIRONMENT_DLLMAP_OVERRIDE_CMD) < $< > $@ -JAVA_INTEROP_LIB = libjava-interop$(NATIVE_EXT) -NATIVE_TIMING_LIB = libNativeTiming$(NATIVE_EXT) - -bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/($(NATIVE_TIMING_LIB): tests/NativeTiming/timing.c $(wildcard $(JI_JDK_INCLUDE_PATHS)/jni.h) +bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/$(NATIVE_TIMING_LIB): tests/NativeTiming/timing.c $(wildcard $(JI_JDK_INCLUDE_PATHS)/jni.h) mkdir -p `dirname "$@"` gcc -g -shared -m64 -fPIC -o $@ $< $(JI_JDK_INCLUDE_PATHS:%=-I%) @@ -123,14 +124,14 @@ bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/Android.Interop-Tests.dll: $(wildcard $(MSBUILD) $(MSBUILD_FLAGS) touch $@ -bin/$(CONFIGURATION)/$(TFNETFRAMEWORK)/Java.Interop.dll: $(wildcard src/Java.Interop/*/*.cs) src/Java.Interop/Java.Interop.csproj +bin/$(CONFIGURATION)/$(TFNETSTANDARD)/Java.Interop.dll: $(wildcard src/Java.Interop/*/*.cs) src/Java.Interop/Java.Interop.csproj $(MSBUILD) $(if $(V),/v:diag,) /p:Configuration=$(CONFIGURATION) $(if $(SNK),"/p:AssemblyOriginatorKeyFile=$(SNK)",) CSHARP_REFS = \ - bin/$(CONFIGURATION)/Java.Interop.dll \ - bin/$(CONFIGURATION)/Java.Interop.Export.dll \ - bin/$(CONFIGURATION)/Java.Runtime.Environment.dll \ - bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/TestJVM.dll \ + bin/$(CONFIGURATION)/$(TFNETSTANDARD)/Java.Interop.dll \ + bin/$(CONFIGURATION)/$(TFNETSTANDARD)/Java.Interop.Export.dll \ + bin/$(CONFIGURATION)/$(TFNETSTANDARD)/Java.Runtime.Environment.dll \ + bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/TestJVM.dll \ $(PTESTS) \ $(TESTS) @@ -156,14 +157,14 @@ run-ptests: $(PTESTS) bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/$(JAVA_INTEROP_ bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/$(JAVA_INTEROP_LIB): bin/$(CONFIGURATION)/$(JAVA_INTEROP_LIB) cp $< $@ -JRE_DLL_CONFIG=bin/$(CONFIGURATION)/Java.Runtime.Environment.dll.config +JRE_DLL_CONFIG=bin/$(CONFIGURATION)/$(TFNETSTANDARD)/Java.Runtime.Environment.dll.config $(JRE_DLL_CONFIG): src/Java.Runtime.Environment/Java.Runtime.Environment.csproj $(MSBUILD) $(MSBUILD_FLAGS) $< define run-jnimarshalmethod-gen MONO_TRACE_LISTENER=Console.Out \ - $(RUNTIME) bin/$(CONFIGURATION)/jnimarshalmethod-gen.exe -v --jvm "$(JI_JVM_PATH)" -L "$(JI_MONO_LIB_PATH)mono/4.5" -L "$(JI_MONO_LIB_PATH)mono/4.5/Facades" $(2) $(1) + $(RUNTIME) bin/$(CONFIGURATION)/$(TFNETFRAMEWORK))/jnimarshalmethod-gen.exe -v --jvm "$(JI_JVM_PATH)" -L "$(JI_MONO_LIB_PATH)mono/4.5" -L "$(JI_MONO_LIB_PATH)mono/4.5/Facades" $(2) $(1) endef run-test-jnimarshal: bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/Java.Interop.Export-Tests.dll bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/$(JAVA_INTEROP_LIB) $(JRE_DLL_CONFIG) @@ -191,7 +192,7 @@ run-test-generator-core: bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/generator.ex $(call GEN_CORE_OUTPUT,bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/generator-core,-cp) diff -rup --strip-trailing-cr tests/generator-Tests/Tests-Core/expected.cp bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/generator-core -bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/generator.exe: bin/$(CONFIGURATION)/generator.exe +bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/generator.exe: bin/$(CONFIGURATION)/$(TFNETFRAMEWORK)/generator.exe cp $<* `dirname "$@"` update-test-generator-core: diff --git a/tools/generator/generator.csproj b/tools/generator/generator.csproj index 5f46175f4..3760696ec 100644 --- a/tools/generator/generator.csproj +++ b/tools/generator/generator.csproj @@ -1,7 +1,7 @@  - net461 + net472 Exe $(DefineConstants);GENERATOR;HAVE_CECIL;JCW_ONLY_TYPE_NAMES diff --git a/tools/jcw-gen/jcw-gen.csproj b/tools/jcw-gen/jcw-gen.csproj index 68e778acf..84ea68155 100644 --- a/tools/jcw-gen/jcw-gen.csproj +++ b/tools/jcw-gen/jcw-gen.csproj @@ -1,7 +1,7 @@  - net461 + net472 Exe From f7eb7de37b554c27f45f11185faed22f361b30c5 Mon Sep 17 00:00:00 2001 From: Peter Collins Date: Thu, 5 Mar 2020 15:13:13 -0500 Subject: [PATCH 08/12] Fix typo --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index f0e0a9e6a..a378fe8c4 100644 --- a/Makefile +++ b/Makefile @@ -164,7 +164,7 @@ $(JRE_DLL_CONFIG): src/Java.Runtime.Environment/Java.Runtime.Environment.csproj define run-jnimarshalmethod-gen MONO_TRACE_LISTENER=Console.Out \ - $(RUNTIME) bin/$(CONFIGURATION)/$(TFNETFRAMEWORK))/jnimarshalmethod-gen.exe -v --jvm "$(JI_JVM_PATH)" -L "$(JI_MONO_LIB_PATH)mono/4.5" -L "$(JI_MONO_LIB_PATH)mono/4.5/Facades" $(2) $(1) + $(RUNTIME) bin/$(CONFIGURATION)/$(TFNETFRAMEWORK)/jnimarshalmethod-gen.exe -v --jvm "$(JI_JVM_PATH)" -L "$(JI_MONO_LIB_PATH)mono/4.5" -L "$(JI_MONO_LIB_PATH)mono/4.5/Facades" $(2) $(1) endef run-test-jnimarshal: bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/Java.Interop.Export-Tests.dll bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/$(JAVA_INTEROP_LIB) $(JRE_DLL_CONFIG) From 8c7c72f78e5bc7d5a9c7ff08949ed3072dbc5225 Mon Sep 17 00:00:00 2001 From: Peter Collins Date: Thu, 5 Mar 2020 15:54:30 -0500 Subject: [PATCH 09/12] Put libjava-interop libs in both output dirs --- src/java-interop/java-interop.targets | 30 +++++++++++++++------------ 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/java-interop/java-interop.targets b/src/java-interop/java-interop.targets index 364d76ed8..28e92d56f 100644 --- a/src/java-interop/java-interop.targets +++ b/src/java-interop/java-interop.targets @@ -1,7 +1,9 @@ - mono + mono + dylib + so - - <_MacLib>$(OutputPath)\lib$(OutputName).dylib - + + <_UnixLib Include="$(OutputPath)\net472\lib$(OutputName).$(LibExtension)" /> + <_UnixLib Include="$(OutputPath)\netstandard2.0\lib$(OutputName).$(LibExtension)" /> + + Outputs="@(_UnixLib)"> <_LinkFlags>-fvisibility=hidden -Wl,-undefined -Wl,suppress -Wl,-flat_namespace <_Libs>$(MonoLibs) <_Files>@(ClCompile->'obj\$(Configuration)\%(Filename).o', ' ') - + - + + + Outputs="@(_UnixLib)"> <_FixedDefines>$(DefineSymbols.Split(' ')) @@ -63,14 +67,14 @@ <_Libs>$(MonoLibs) <_Files>@(ClCompile->'obj\$(Configuration)\%(Filename).o', ' ') - + From 1bef910e6dda734d3508cde774b76effffda2c05 Mon Sep 17 00:00:00 2001 From: Peter Collins Date: Thu, 5 Mar 2020 16:35:20 -0500 Subject: [PATCH 10/12] Copy libjava-interop from the right location for tests --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index a378fe8c4..dba6a1eb3 100644 --- a/Makefile +++ b/Makefile @@ -154,7 +154,7 @@ run-ptests: $(PTESTS) bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/$(JAVA_INTEROP_ $(foreach t,$(PTESTS), $(call RUN_TEST,$(t))) \ exit $$r; -bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/$(JAVA_INTEROP_LIB): bin/$(CONFIGURATION)/$(JAVA_INTEROP_LIB) +bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/$(JAVA_INTEROP_LIB): bin/$(CONFIGURATION)/$(TFNETFRAMEWORK)/$(JAVA_INTEROP_LIB) cp $< $@ JRE_DLL_CONFIG=bin/$(CONFIGURATION)/$(TFNETSTANDARD)/Java.Runtime.Environment.dll.config From 441dddf555eaabd8d27cfb67d46928814a4ce6c6 Mon Sep 17 00:00:00 2001 From: Peter Collins Date: Tue, 10 Mar 2020 12:41:18 -0400 Subject: [PATCH 11/12] Revert majority of AppendTargetFrameworkToOutputPath related changes --- Makefile | 89 +++++++++---------- build-tools/automation/azure-pipelines.yaml | 4 +- samples/Hello/Hello.csproj | 10 ++- .../Java.Interop.Dynamic.csproj | 1 + .../Java.Interop.Export.csproj | 1 + .../Java.Interop.GenericMarshaler.csproj | 1 + .../Java.Interop.Tools.Cecil.csproj | 1 + .../Java.Interop.Tools.Diagnostics.csproj | 2 +- ....Interop.Tools.JavaCallableWrappers.csproj | 1 + src/Java.Interop/Java.Interop.csproj | 17 +++- .../Java.Runtime.Environment.csproj | 1 + ...droid.Tools.AnnotationSupport.Cecil.csproj | 1 + ...rin.Android.Tools.AnnotationSupport.csproj | 1 + ...amarin.Android.Tools.ApiXmlAdjuster.csproj | 2 +- .../Xamarin.Android.Tools.Bytecode.csproj | 1 + src/java-interop/java-interop.targets | 30 +++---- .../Java.Interop-PerformanceTests.csproj | 1 + .../Java.Interop-Tests.csproj | 12 ++- .../Java.Interop.Dynamic-Tests.csproj | 1 + .../Java.Interop.Export-Tests.csproj | 3 +- ...op.Tools.JavaCallableWrappers-Tests.csproj | 1 + ...Java.Interop.Tools.JavaSource-Tests.csproj | 1 + tests/TestJVM/TestJVM.csproj | 1 + .../JavaApiTestHelper.cs | 1 - ....Android.Tools.ApiXmlAdjuster-Tests.csproj | 1 + ...amarin.Android.Tools.Bytecode-Tests.csproj | 1 + .../Integration-Tests/Compiler.cs | 2 +- tests/generator-Tests/generator-Tests.csproj | 1 + .../logcat-parse-Tests.csproj | 1 + tools/class-parse/class-parse.csproj | 1 + tools/generator/generator.csproj | 1 + tools/jcw-gen/jcw-gen.csproj | 1 + ...oid.Tools.JniMarshalMethodGenerator.csproj | 1 + tools/logcat-parse/logcat-parse.csproj | 1 + .../param-name-importer.csproj | 1 + 35 files changed, 120 insertions(+), 76 deletions(-) diff --git a/Makefile b/Makefile index dba6a1eb3..fdbc88155 100644 --- a/Makefile +++ b/Makefile @@ -12,12 +12,6 @@ NATIVE_EXT = .so DLLMAP_OS_NAME = linux endif -JAVA_INTEROP_LIB = libjava-interop$(NATIVE_EXT) -NATIVE_TIMING_LIB = libNativeTiming$(NATIVE_EXT) - -TFNETFRAMEWORK = net472 -TFNETSTANDARD = netstandard2.0 - PACKAGES = \ packages/NUnit.3.11.0/NUnit.3.11.0.nupkg \ packages/NUnit.Console.3.9.0/NUnit.Console.3.9.0.nupkg @@ -26,24 +20,24 @@ PREPARE_EXTERNAL_FILES = \ external/xamarin-android-tools/src/Xamarin.Android.Tools.AndroidSdk/Xamarin.Android.Tools.AndroidSdk.csproj DEPENDENCIES = \ - bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/$(NATIVE_TIMING_LIB) + bin/Test$(CONFIGURATION)/libNativeTiming$(NATIVE_EXT) TESTS = \ - bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/Java.Interop-Tests.dll \ - bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/Java.Interop.Dynamic-Tests.dll \ - bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/Java.Interop.Export-Tests.dll \ - bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/Java.Interop.Tools.JavaCallableWrappers-Tests.dll \ - bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/Java.Interop.Tools.JavaSource-Tests.dll \ - bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/logcat-parse-Tests.dll \ - bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/generator-Tests.dll \ - bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/Xamarin.Android.Tools.ApiXmlAdjuster-Tests.dll \ - bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/Xamarin.Android.Tools.Bytecode-Tests.dll + bin/Test$(CONFIGURATION)/Java.Interop-Tests.dll \ + bin/Test$(CONFIGURATION)/Java.Interop.Dynamic-Tests.dll \ + bin/Test$(CONFIGURATION)/Java.Interop.Export-Tests.dll \ + bin/Test$(CONFIGURATION)/Java.Interop.Tools.JavaCallableWrappers-Tests.dll \ + bin/Test$(CONFIGURATION)/Java.Interop.Tools.JavaSource-Tests.dll \ + bin/Test$(CONFIGURATION)/logcat-parse-Tests.dll \ + bin/Test$(CONFIGURATION)/generator-Tests.dll \ + bin/Test$(CONFIGURATION)/Xamarin.Android.Tools.ApiXmlAdjuster-Tests.dll \ + bin/Test$(CONFIGURATION)/Xamarin.Android.Tools.Bytecode-Tests.dll PTESTS = \ - bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/Java.Interop-PerformanceTests.dll + bin/Test$(CONFIGURATION)/Java.Interop-PerformanceTests.dll ATESTS = \ - bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/Android.Interop-Tests.dll + bin/Test$(CONFIGURATION)/Android.Interop-Tests.dll NUNIT_CONSOLE = packages/NUnit.ConsoleRunner.3.9.0/tools/nunit3-console.exe @@ -100,13 +94,16 @@ src/Java.Runtime.Environment/Java.Runtime.Environment.dll.config: src/Java.Runti bin/Build$(CONFIGURATION)/JdkInfo.props sed -e 's#@JI_JVM_PATH@#$(JI_JVM_PATH)#g' -e 's#@OS_NAME@#$(DLLMAP_OS_NAME)#g' -e $(JAVA_RUNTIME_ENVIRONMENT_DLLMAP_OVERRIDE_CMD) < $< > $@ -bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/$(NATIVE_TIMING_LIB): tests/NativeTiming/timing.c $(wildcard $(JI_JDK_INCLUDE_PATHS)/jni.h) +JAVA_INTEROP_LIB = libjava-interop$(NATIVE_EXT) +NATIVE_TIMING_LIB = libNativeTiming$(NATIVE_EXT) + +bin/Test$(CONFIGURATION)/$(NATIVE_TIMING_LIB): tests/NativeTiming/timing.c $(wildcard $(JI_JDK_INCLUDE_PATHS)/jni.h) mkdir -p `dirname "$@"` gcc -g -shared -m64 -fPIC -o $@ $< $(JI_JDK_INCLUDE_PATHS:%=-I%) # Usage: $(call TestAssemblyTemplate,assembly-basename) define TestAssemblyTemplate -bin/Test$$(CONFIGURATION)/$$(TFNETFRAMEWORK)/$(1)-Tests.dll: $(wildcard src/$(1)/*/*.cs src/$(1)/Test*/*/*.cs) +bin/Test$$(CONFIGURATION)/$(1)-Tests.dll: $(wildcard src/$(1)/*/*.cs src/$(1)/Test*/*/*.cs) $$(MSBUILD) $$(MSBUILD_FLAGS) touch $$@ endef # TestAssemblyTemplate @@ -116,22 +113,22 @@ $(eval $(call TestAssemblyTemplate,Java.Interop.Dynamic)) $(eval $(call TestAssemblyTemplate,Java.Interop.Export)) $(eval $(call TestAssemblyTemplate,Java.Interop.Tools.JavaCallableWrappers)) -bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/Java.Interop-PerformanceTests.dll: $(wildcard tests/Java.Interop-PerformanceTests/*.cs) bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/$(NATIVE_TIMING_LIB) +bin/Test$(CONFIGURATION)/Java.Interop-PerformanceTests.dll: $(wildcard tests/Java.Interop-PerformanceTests/*.cs) bin/Test$(CONFIGURATION)/$(NATIVE_TIMING_LIB) $(MSBUILD) $(MSBUILD_FLAGS) touch $@ -bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/Android.Interop-Tests.dll: $(wildcard src/Android.Interop/*/*.cs src/Android.Interop/Tests/*/*.cs) +bin/Test$(CONFIGURATION)/Android.Interop-Tests.dll: $(wildcard src/Android.Interop/*/*.cs src/Android.Interop/Tests/*/*.cs) $(MSBUILD) $(MSBUILD_FLAGS) touch $@ -bin/$(CONFIGURATION)/$(TFNETSTANDARD)/Java.Interop.dll: $(wildcard src/Java.Interop/*/*.cs) src/Java.Interop/Java.Interop.csproj +bin/$(CONFIGURATION)/Java.Interop.dll: $(wildcard src/Java.Interop/*/*.cs) src/Java.Interop/Java.Interop.csproj $(MSBUILD) $(if $(V),/v:diag,) /p:Configuration=$(CONFIGURATION) $(if $(SNK),"/p:AssemblyOriginatorKeyFile=$(SNK)",) CSHARP_REFS = \ - bin/$(CONFIGURATION)/$(TFNETSTANDARD)/Java.Interop.dll \ - bin/$(CONFIGURATION)/$(TFNETSTANDARD)/Java.Interop.Export.dll \ - bin/$(CONFIGURATION)/$(TFNETSTANDARD)/Java.Runtime.Environment.dll \ - bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/TestJVM.dll \ + bin/$(CONFIGURATION)/Java.Interop.dll \ + bin/$(CONFIGURATION)/Java.Interop.Export.dll \ + bin/$(CONFIGURATION)/Java.Runtime.Environment.dll \ + bin/Test$(CONFIGURATION)/TestJVM.dll \ $(PTESTS) \ $(TESTS) @@ -144,30 +141,30 @@ define RUN_TEST $(MSBUILD) $(MSBUILD_FLAGS) build-tools/scripts/RunNUnitTests.targets /p:TestAssembly=$(1) || r=1; endef -run-tests: $(TESTS) bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/$(JAVA_INTEROP_LIB) +run-tests: $(TESTS) bin/Test$(CONFIGURATION)/$(JAVA_INTEROP_LIB) r=0; \ $(foreach t,$(TESTS), $(call RUN_TEST,$(t),1)) \ exit $$r; -run-ptests: $(PTESTS) bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/$(JAVA_INTEROP_LIB) +run-ptests: $(PTESTS) bin/Test$(CONFIGURATION)/$(JAVA_INTEROP_LIB) r=0; \ $(foreach t,$(PTESTS), $(call RUN_TEST,$(t))) \ exit $$r; -bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/$(JAVA_INTEROP_LIB): bin/$(CONFIGURATION)/$(TFNETFRAMEWORK)/$(JAVA_INTEROP_LIB) +bin/Test$(CONFIGURATION)/$(JAVA_INTEROP_LIB): bin/$(CONFIGURATION)/$(JAVA_INTEROP_LIB) cp $< $@ -JRE_DLL_CONFIG=bin/$(CONFIGURATION)/$(TFNETSTANDARD)/Java.Runtime.Environment.dll.config +JRE_DLL_CONFIG=bin/$(CONFIGURATION)/Java.Runtime.Environment.dll.config $(JRE_DLL_CONFIG): src/Java.Runtime.Environment/Java.Runtime.Environment.csproj $(MSBUILD) $(MSBUILD_FLAGS) $< define run-jnimarshalmethod-gen MONO_TRACE_LISTENER=Console.Out \ - $(RUNTIME) bin/$(CONFIGURATION)/$(TFNETFRAMEWORK)/jnimarshalmethod-gen.exe -v --jvm "$(JI_JVM_PATH)" -L "$(JI_MONO_LIB_PATH)mono/4.5" -L "$(JI_MONO_LIB_PATH)mono/4.5/Facades" $(2) $(1) + $(RUNTIME) bin/$(CONFIGURATION)/jnimarshalmethod-gen.exe -v --jvm "$(JI_JVM_PATH)" -L "$(JI_MONO_LIB_PATH)mono/4.5" -L "$(JI_MONO_LIB_PATH)mono/4.5/Facades" $(2) $(1) endef -run-test-jnimarshal: bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/Java.Interop.Export-Tests.dll bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/$(JAVA_INTEROP_LIB) $(JRE_DLL_CONFIG) +run-test-jnimarshal: bin/Test$(CONFIGURATION)/Java.Interop.Export-Tests.dll bin/Test$(CONFIGURATION)/$(JAVA_INTEROP_LIB) $(JRE_DLL_CONFIG) mkdir -p test-jni-output $(call run-jnimarshalmethod-gen,"$<",-f -o test-jni-output --keeptemp) (test -f test-jni-output/$(notdir $<) && test -f test-jni-output/Java.Interop.Export-Tests-JniMarshalMethods.dll) || { echo "jnimarshalmethod-gen did not create the expected assemblies in the test-jni-output directory"; exit 1; } @@ -178,21 +175,21 @@ run-test-jnimarshal: bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/Java.Interop.Exp define GEN_CORE_OUTPUT -$(RM) -Rf $(1) mkdir -p $(1) - $(RUNTIME) bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/generator.exe -o $(1) $(3) --api-level=20 tests/generator-Tests/Tests-Core/api$(2).xml \ + $(RUNTIME) bin/Test$(CONFIGURATION)/generator.exe -o $(1) $(3) --api-level=20 tests/generator-Tests/Tests-Core/api$(2).xml \ --enummethods=tests/generator-Tests/Tests-Core/methods$(2).xml \ --enumfields=tests/generator-Tests/Tests-Core/fields$(2).xml \ --enumdir=$(1) endef -run-test-generator-core: bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/generator.exe - $(call GEN_CORE_OUTPUT,bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/generator-core) - diff -rup --strip-trailing-cr tests/generator-Tests/Tests-Core/expected bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/generator-core - $(call GEN_CORE_OUTPUT,bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/generator-core,,--codegen-target=JavaInterop1) - diff -rup --strip-trailing-cr tests/generator-Tests/Tests-Core/expected.ji bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/generator-core - $(call GEN_CORE_OUTPUT,bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/generator-core,-cp) - diff -rup --strip-trailing-cr tests/generator-Tests/Tests-Core/expected.cp bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/generator-core +run-test-generator-core: bin/Test$(CONFIGURATION)/generator.exe + $(call GEN_CORE_OUTPUT,bin/Test$(CONFIGURATION)/generator-core) + diff -rup --strip-trailing-cr tests/generator-Tests/Tests-Core/expected bin/Test$(CONFIGURATION)/generator-core + $(call GEN_CORE_OUTPUT,bin/Test$(CONFIGURATION)/generator-core,,--codegen-target=JavaInterop1) + diff -rup --strip-trailing-cr tests/generator-Tests/Tests-Core/expected.ji bin/Test$(CONFIGURATION)/generator-core + $(call GEN_CORE_OUTPUT,bin/Test$(CONFIGURATION)/generator-core,-cp) + diff -rup --strip-trailing-cr tests/generator-Tests/Tests-Core/expected.cp bin/Test$(CONFIGURATION)/generator-core -bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/generator.exe: bin/$(CONFIGURATION)/$(TFNETFRAMEWORK)/generator.exe +bin/Test$(CONFIGURATION)/generator.exe: bin/$(CONFIGURATION)/generator.exe cp $<* `dirname "$@"` update-test-generator-core: @@ -200,15 +197,15 @@ update-test-generator-core: $(call GEN_CORE_OUTPUT,tests/generator-Tests/Tests-Core/expected.ji,--codegen-target=JavaInterop1) update-test-generator-nunit: - -$(MAKE) run-tests TESTS=bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/generator-Tests.dll + -$(MAKE) run-tests TESTS=bin/Test$(CONFIGURATION)/generator-Tests.dll for f in `find tests/generator-Tests/expected -name \*.cs` ; do \ - source=`echo $$f | sed 's#^tests/generator-Tests/expected#bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/out#'` ; \ + source=`echo $$f | sed 's#^tests/generator-Tests/expected#bin/Test$(CONFIGURATION)/out#'` ; \ if [ -f "$$source" ]; then \ cp -f "$$source" "$$f" ; \ fi; \ done - for source in `find bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/out.ji -type f` ; do \ - f=`echo $$source | sed 's#^bin/Test$(CONFIGURATION)/$(TFNETFRAMEWORK)/out.ji#tests/generator-Tests/expected.ji#'` ; \ + for source in `find bin/Test$(CONFIGURATION)/out.ji -type f` ; do \ + f=`echo $$source | sed 's#^bin/Test$(CONFIGURATION)/out.ji#tests/generator-Tests/expected.ji#'` ; \ mkdir -p `dirname $$f`; \ cp -f "$$source" "$$f" ; \ done diff --git a/build-tools/automation/azure-pipelines.yaml b/build-tools/automation/azure-pipelines.yaml index 6f001222c..f57f77556 100644 --- a/build-tools/automation/azure-pipelines.yaml +++ b/build-tools/automation/azure-pipelines.yaml @@ -51,14 +51,14 @@ jobs: inputs: solution: Java.Interop.sln configuration: $(Build.Configuration) - msbuildArguments: /restore + msbuildArguments: '/t:Restore,Build' - task: MSBuild@1 displayName: MSBuild RunNUnitTests.targets inputs: solution: build-tools/scripts/RunNUnitTests.targets configuration: $(Build.Configuration) - msbuildArguments: /p:TestAssembly="bin\Test$(Build.Configuration)\net472\generator-Tests.dll;bin\Test$(Build.Configuration)\net472\Java.Interop.Tools.JavaCallableWrappers-Tests.dll;bin\Test$(Build.Configuration)\net472\logcat-parse-Tests.dll;bin\Test$(Build.Configuration)\net472\Xamarin.Android.Tools.ApiXmlAdjuster-Tests.dll;bin\Test$(Build.Configuration)\net472\Xamarin.Android.Tools.Bytecode-Tests.dll" + msbuildArguments: /p:TestAssembly="bin\Test$(Build.Configuration)\generator-Tests.dll;bin\Test$(Build.Configuration)\Java.Interop.Tools.JavaCallableWrappers-Tests.dll;bin\Test$(Build.Configuration)\logcat-parse-Tests.dll;bin\Test$(Build.Configuration)\Xamarin.Android.Tools.ApiXmlAdjuster-Tests.dll;bin\Test$(Build.Configuration)\Xamarin.Android.Tools.Bytecode-Tests.dll" condition: succeededOrFailed() - task: PublishTestResults@2 diff --git a/samples/Hello/Hello.csproj b/samples/Hello/Hello.csproj index d166f6f13..d524c3877 100644 --- a/samples/Hello/Hello.csproj +++ b/samples/Hello/Hello.csproj @@ -3,8 +3,16 @@ net472 Exe + false true - ..\..\bin\Test$(Configuration) + + + + ..\..\bin\TestDebug + + + + ..\..\bin\TestRelease diff --git a/src/Java.Interop.Dynamic/Java.Interop.Dynamic.csproj b/src/Java.Interop.Dynamic/Java.Interop.Dynamic.csproj index f0c557f43..2cf775231 100644 --- a/src/Java.Interop.Dynamic/Java.Interop.Dynamic.csproj +++ b/src/Java.Interop.Dynamic/Java.Interop.Dynamic.csproj @@ -10,6 +10,7 @@ Microsoft Corporation Microsoft Corporation 0.1.0.0 + false ..\..\bin\Debug diff --git a/src/Java.Interop.Export/Java.Interop.Export.csproj b/src/Java.Interop.Export/Java.Interop.Export.csproj index c60f6387e..f2fe47325 100644 --- a/src/Java.Interop.Export/Java.Interop.Export.csproj +++ b/src/Java.Interop.Export/Java.Interop.Export.csproj @@ -9,6 +9,7 @@ Microsoft Corporation Microsoft Corporation 0.1.0.0 + false ..\..\bin\Debug diff --git a/src/Java.Interop.GenericMarshaler/Java.Interop.GenericMarshaler.csproj b/src/Java.Interop.GenericMarshaler/Java.Interop.GenericMarshaler.csproj index 138b6ec0c..75c52e2f9 100644 --- a/src/Java.Interop.GenericMarshaler/Java.Interop.GenericMarshaler.csproj +++ b/src/Java.Interop.GenericMarshaler/Java.Interop.GenericMarshaler.csproj @@ -10,6 +10,7 @@ Microsoft Corporation Microsoft Corporation 0.1.0.0 + false ..\..\bin\Debug diff --git a/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil.csproj b/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil.csproj index 0b6132ab8..9f7b71bef 100644 --- a/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil.csproj +++ b/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil.csproj @@ -2,6 +2,7 @@ netstandard2.0 + false diff --git a/src/Java.Interop.Tools.Diagnostics/Java.Interop.Tools.Diagnostics.csproj b/src/Java.Interop.Tools.Diagnostics/Java.Interop.Tools.Diagnostics.csproj index 07fbe42c0..57070a402 100644 --- a/src/Java.Interop.Tools.Diagnostics/Java.Interop.Tools.Diagnostics.csproj +++ b/src/Java.Interop.Tools.Diagnostics/Java.Interop.Tools.Diagnostics.csproj @@ -1,4 +1,4 @@ - + netstandard2.0 diff --git a/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers.csproj b/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers.csproj index 54105d9e4..2db2da771 100644 --- a/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers.csproj +++ b/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers.csproj @@ -2,6 +2,7 @@ netstandard2.0 + false diff --git a/src/Java.Interop/Java.Interop.csproj b/src/Java.Interop/Java.Interop.csproj index 4c183e544..211f11c8e 100644 --- a/src/Java.Interop/Java.Interop.csproj +++ b/src/Java.Interop/Java.Interop.csproj @@ -8,9 +8,20 @@ INTEROP;FEATURE_JNIENVIRONMENT_JI_PINVOKES;FEATURE_JNIOBJECTREFERENCE_INTPTRS;INTERNAL_NULLABLE_ATTRIBUTES true false - ..\..\bin\$(Configuration) - ..\..\bin\Build$(Configuration) - $(OutputPath)Java.Interop.xml + false + + + ..\..\bin\Debug + ..\..\bin\Debug\Java.Interop.xml + ..\..\bin\BuildDebug + $(DefineConstants);DEBUG;NETSTANDARD;NETSTANDARD2_0 + 8.0 + enable + + + ..\..\bin\Release + ..\..\bin\Release\Java.Interop.xml + ..\..\bin\BuildRelease 8.0 enable diff --git a/src/Java.Runtime.Environment/Java.Runtime.Environment.csproj b/src/Java.Runtime.Environment/Java.Runtime.Environment.csproj index 0f94e9e38..83bc2de08 100644 --- a/src/Java.Runtime.Environment/Java.Runtime.Environment.csproj +++ b/src/Java.Runtime.Environment/Java.Runtime.Environment.csproj @@ -5,6 +5,7 @@ true ..\..\product.snk true + false diff --git a/src/Xamarin.Android.Tools.AnnotationSupport.Cecil/Xamarin.Android.Tools.AnnotationSupport.Cecil.csproj b/src/Xamarin.Android.Tools.AnnotationSupport.Cecil/Xamarin.Android.Tools.AnnotationSupport.Cecil.csproj index 8527c2bc8..12d7e7090 100644 --- a/src/Xamarin.Android.Tools.AnnotationSupport.Cecil/Xamarin.Android.Tools.AnnotationSupport.Cecil.csproj +++ b/src/Xamarin.Android.Tools.AnnotationSupport.Cecil/Xamarin.Android.Tools.AnnotationSupport.Cecil.csproj @@ -2,6 +2,7 @@ netstandard2.0 + false diff --git a/src/Xamarin.Android.Tools.AnnotationSupport/Xamarin.Android.Tools.AnnotationSupport.csproj b/src/Xamarin.Android.Tools.AnnotationSupport/Xamarin.Android.Tools.AnnotationSupport.csproj index 1ff8b445e..a4b4d8666 100644 --- a/src/Xamarin.Android.Tools.AnnotationSupport/Xamarin.Android.Tools.AnnotationSupport.csproj +++ b/src/Xamarin.Android.Tools.AnnotationSupport/Xamarin.Android.Tools.AnnotationSupport.csproj @@ -2,6 +2,7 @@ netstandard2.0 + false diff --git a/src/Xamarin.Android.Tools.ApiXmlAdjuster/Xamarin.Android.Tools.ApiXmlAdjuster.csproj b/src/Xamarin.Android.Tools.ApiXmlAdjuster/Xamarin.Android.Tools.ApiXmlAdjuster.csproj index 6fd7142b1..339d7724b 100644 --- a/src/Xamarin.Android.Tools.ApiXmlAdjuster/Xamarin.Android.Tools.ApiXmlAdjuster.csproj +++ b/src/Xamarin.Android.Tools.ApiXmlAdjuster/Xamarin.Android.Tools.ApiXmlAdjuster.csproj @@ -1,4 +1,4 @@ - + netstandard2.0 diff --git a/src/Xamarin.Android.Tools.Bytecode/Xamarin.Android.Tools.Bytecode.csproj b/src/Xamarin.Android.Tools.Bytecode/Xamarin.Android.Tools.Bytecode.csproj index b521d79b5..0a371d797 100644 --- a/src/Xamarin.Android.Tools.Bytecode/Xamarin.Android.Tools.Bytecode.csproj +++ b/src/Xamarin.Android.Tools.Bytecode/Xamarin.Android.Tools.Bytecode.csproj @@ -2,6 +2,7 @@ netstandard2.0 + false diff --git a/src/java-interop/java-interop.targets b/src/java-interop/java-interop.targets index 28e92d56f..364d76ed8 100644 --- a/src/java-interop/java-interop.targets +++ b/src/java-interop/java-interop.targets @@ -1,9 +1,7 @@ - mono - dylib - so + mono - - <_UnixLib Include="$(OutputPath)\net472\lib$(OutputName).$(LibExtension)" /> - <_UnixLib Include="$(OutputPath)\netstandard2.0\lib$(OutputName).$(LibExtension)" /> - + + <_MacLib>$(OutputPath)\lib$(OutputName).dylib + + Outputs="$(_MacLib)"> <_LinkFlags>-fvisibility=hidden -Wl,-undefined -Wl,suppress -Wl,-flat_namespace <_Libs>$(MonoLibs) <_Files>@(ClCompile->'obj\$(Configuration)\%(Filename).o', ' ') - + - + - + Outputs="$(OutputPath)\lib$(OutputName).so"> <_FixedDefines>$(DefineSymbols.Split(' ')) @@ -67,14 +63,14 @@ <_Libs>$(MonoLibs) <_Files>@(ClCompile->'obj\$(Configuration)\%(Filename).o', ' ') - + diff --git a/tests/Java.Interop-PerformanceTests/Java.Interop-PerformanceTests.csproj b/tests/Java.Interop-PerformanceTests/Java.Interop-PerformanceTests.csproj index 96d73cb9f..e5361843f 100644 --- a/tests/Java.Interop-PerformanceTests/Java.Interop-PerformanceTests.csproj +++ b/tests/Java.Interop-PerformanceTests/Java.Interop-PerformanceTests.csproj @@ -4,6 +4,7 @@ net472 false true + false diff --git a/tests/Java.Interop-Tests/Java.Interop-Tests.csproj b/tests/Java.Interop-Tests/Java.Interop-Tests.csproj index 1479f6016..5d896a9c5 100644 --- a/tests/Java.Interop-Tests/Java.Interop-Tests.csproj +++ b/tests/Java.Interop-Tests/Java.Interop-Tests.csproj @@ -4,7 +4,15 @@ net472 false true - ..\..\bin\Test$(Configuration) + false + + + + ..\..\bin\TestDebug + + + + ..\..\bin\TestRelease @@ -41,7 +49,7 @@ - + diff --git a/tests/Java.Interop.Dynamic-Tests/Java.Interop.Dynamic-Tests.csproj b/tests/Java.Interop.Dynamic-Tests/Java.Interop.Dynamic-Tests.csproj index aa2726a0c..e4f1bb01c 100644 --- a/tests/Java.Interop.Dynamic-Tests/Java.Interop.Dynamic-Tests.csproj +++ b/tests/Java.Interop.Dynamic-Tests/Java.Interop.Dynamic-Tests.csproj @@ -4,6 +4,7 @@ net472 false true + false diff --git a/tests/Java.Interop.Export-Tests/Java.Interop.Export-Tests.csproj b/tests/Java.Interop.Export-Tests/Java.Interop.Export-Tests.csproj index 4b7e9974b..7abbf808d 100644 --- a/tests/Java.Interop.Export-Tests/Java.Interop.Export-Tests.csproj +++ b/tests/Java.Interop.Export-Tests/Java.Interop.Export-Tests.csproj @@ -4,6 +4,7 @@ net472 false true + false @@ -37,7 +38,7 @@ - + diff --git a/tests/Java.Interop.Tools.JavaCallableWrappers-Tests/Java.Interop.Tools.JavaCallableWrappers-Tests.csproj b/tests/Java.Interop.Tools.JavaCallableWrappers-Tests/Java.Interop.Tools.JavaCallableWrappers-Tests.csproj index 46fb71300..c0474c24c 100644 --- a/tests/Java.Interop.Tools.JavaCallableWrappers-Tests/Java.Interop.Tools.JavaCallableWrappers-Tests.csproj +++ b/tests/Java.Interop.Tools.JavaCallableWrappers-Tests/Java.Interop.Tools.JavaCallableWrappers-Tests.csproj @@ -3,6 +3,7 @@ net472 false + false $(DefineConstants);HAVE_CECIL;JCW_ONLY_TYPE_NAMES diff --git a/tests/Java.Interop.Tools.JavaSource-Tests/Java.Interop.Tools.JavaSource-Tests.csproj b/tests/Java.Interop.Tools.JavaSource-Tests/Java.Interop.Tools.JavaSource-Tests.csproj index ec5039908..e97b2c4da 100644 --- a/tests/Java.Interop.Tools.JavaSource-Tests/Java.Interop.Tools.JavaSource-Tests.csproj +++ b/tests/Java.Interop.Tools.JavaSource-Tests/Java.Interop.Tools.JavaSource-Tests.csproj @@ -2,6 +2,7 @@ net472 False + False ..\..\bin\TestDebug diff --git a/tests/TestJVM/TestJVM.csproj b/tests/TestJVM/TestJVM.csproj index 31eeee5c9..e1c2c8007 100644 --- a/tests/TestJVM/TestJVM.csproj +++ b/tests/TestJVM/TestJVM.csproj @@ -3,6 +3,7 @@ net472 false + false diff --git a/tests/Xamarin.Android.Tools.ApiXmlAdjuster-Tests/JavaApiTestHelper.cs b/tests/Xamarin.Android.Tools.ApiXmlAdjuster-Tests/JavaApiTestHelper.cs index db6f98683..729696459 100644 --- a/tests/Xamarin.Android.Tools.ApiXmlAdjuster-Tests/JavaApiTestHelper.cs +++ b/tests/Xamarin.Android.Tools.ApiXmlAdjuster-Tests/JavaApiTestHelper.cs @@ -9,7 +9,6 @@ public class JavaApiTestHelper static readonly string TopDir = Path.Combine ( Path.GetDirectoryName (typeof (JavaApiTestHelper).Assembly.Location), "..", - "..", ".."); static readonly string ApiPath = Path.Combine ( diff --git a/tests/Xamarin.Android.Tools.ApiXmlAdjuster-Tests/Xamarin.Android.Tools.ApiXmlAdjuster-Tests.csproj b/tests/Xamarin.Android.Tools.ApiXmlAdjuster-Tests/Xamarin.Android.Tools.ApiXmlAdjuster-Tests.csproj index da265bce9..52a38172a 100644 --- a/tests/Xamarin.Android.Tools.ApiXmlAdjuster-Tests/Xamarin.Android.Tools.ApiXmlAdjuster-Tests.csproj +++ b/tests/Xamarin.Android.Tools.ApiXmlAdjuster-Tests/Xamarin.Android.Tools.ApiXmlAdjuster-Tests.csproj @@ -3,6 +3,7 @@ net472 false + false diff --git a/tests/Xamarin.Android.Tools.Bytecode-Tests/Xamarin.Android.Tools.Bytecode-Tests.csproj b/tests/Xamarin.Android.Tools.Bytecode-Tests/Xamarin.Android.Tools.Bytecode-Tests.csproj index fbdb2d147..746ecdca5 100644 --- a/tests/Xamarin.Android.Tools.Bytecode-Tests/Xamarin.Android.Tools.Bytecode-Tests.csproj +++ b/tests/Xamarin.Android.Tools.Bytecode-Tests/Xamarin.Android.Tools.Bytecode-Tests.csproj @@ -5,6 +5,7 @@ net472 false + false diff --git a/tests/generator-Tests/Integration-Tests/Compiler.cs b/tests/generator-Tests/Integration-Tests/Compiler.cs index dd89c5b06..2ce29d920 100644 --- a/tests/generator-Tests/Integration-Tests/Compiler.cs +++ b/tests/generator-Tests/Integration-Tests/Compiler.cs @@ -21,7 +21,7 @@ static CodeDomProvider GetCodeDomProvider () // Comments on this here: https://stackoverflow.com/a/40311406/132442 // They added an environment variable as a workaround: https://github.com/aspnet/RoslynCodeDomProvider/pull/12 if (string.IsNullOrEmpty (Environment.GetEnvironmentVariable (RoslynEnvironmentVariable, EnvironmentVariableTarget.Process))) { - string roslynPath = Path.GetFullPath (Path.Combine (unitTestFrameworkAssemblyPath, "..", "..", "..", "..", "packages", "microsoft.codedom.providers.dotnetcompilerplatform", "2.0.1", "tools", "RoslynLatest")); + string roslynPath = Path.GetFullPath (Path.Combine (unitTestFrameworkAssemblyPath, "..", "..", "..", "packages", "microsoft.codedom.providers.dotnetcompilerplatform", "2.0.1", "tools", "RoslynLatest")); Environment.SetEnvironmentVariable (RoslynEnvironmentVariable, roslynPath, EnvironmentVariableTarget.Process); } diff --git a/tests/generator-Tests/generator-Tests.csproj b/tests/generator-Tests/generator-Tests.csproj index 288433cad..ecd6b9906 100644 --- a/tests/generator-Tests/generator-Tests.csproj +++ b/tests/generator-Tests/generator-Tests.csproj @@ -3,6 +3,7 @@ net472 false + false true diff --git a/tests/logcat-parse-Tests/logcat-parse-Tests.csproj b/tests/logcat-parse-Tests/logcat-parse-Tests.csproj index e8e134e02..de7ff34c1 100644 --- a/tests/logcat-parse-Tests/logcat-parse-Tests.csproj +++ b/tests/logcat-parse-Tests/logcat-parse-Tests.csproj @@ -3,6 +3,7 @@ net472 false + false diff --git a/tools/class-parse/class-parse.csproj b/tools/class-parse/class-parse.csproj index 45d147d14..5d6b06c2b 100644 --- a/tools/class-parse/class-parse.csproj +++ b/tools/class-parse/class-parse.csproj @@ -3,6 +3,7 @@ net472 Exe + false diff --git a/tools/generator/generator.csproj b/tools/generator/generator.csproj index 3760696ec..9def16060 100644 --- a/tools/generator/generator.csproj +++ b/tools/generator/generator.csproj @@ -4,6 +4,7 @@ net472 Exe $(DefineConstants);GENERATOR;HAVE_CECIL;JCW_ONLY_TYPE_NAMES + false diff --git a/tools/jcw-gen/jcw-gen.csproj b/tools/jcw-gen/jcw-gen.csproj index 84ea68155..49f64e523 100644 --- a/tools/jcw-gen/jcw-gen.csproj +++ b/tools/jcw-gen/jcw-gen.csproj @@ -3,6 +3,7 @@ net472 Exe + false diff --git a/tools/jnimarshalmethod-gen/Xamarin.Android.Tools.JniMarshalMethodGenerator.csproj b/tools/jnimarshalmethod-gen/Xamarin.Android.Tools.JniMarshalMethodGenerator.csproj index 83e468087..b6f539410 100644 --- a/tools/jnimarshalmethod-gen/Xamarin.Android.Tools.JniMarshalMethodGenerator.csproj +++ b/tools/jnimarshalmethod-gen/Xamarin.Android.Tools.JniMarshalMethodGenerator.csproj @@ -4,6 +4,7 @@ net472 Exe jnimarshalmethod-gen + false diff --git a/tools/logcat-parse/logcat-parse.csproj b/tools/logcat-parse/logcat-parse.csproj index bb05b94d8..191e862cc 100644 --- a/tools/logcat-parse/logcat-parse.csproj +++ b/tools/logcat-parse/logcat-parse.csproj @@ -3,6 +3,7 @@ net472 Exe + false diff --git a/tools/param-name-importer/param-name-importer.csproj b/tools/param-name-importer/param-name-importer.csproj index 90777c4e2..926c35786 100644 --- a/tools/param-name-importer/param-name-importer.csproj +++ b/tools/param-name-importer/param-name-importer.csproj @@ -2,6 +2,7 @@ net472 Exe + False From c2e479ea59ab9c7e8f00317f29a34c85439d81d8 Mon Sep 17 00:00:00 2001 From: Peter Collins Date: Tue, 10 Mar 2020 13:10:45 -0400 Subject: [PATCH 12/12] Clean up, use explicit ref to HtmlAgilityPack --- samples/Hello/Hello.csproj | 9 +-------- tools/generator/generator.csproj | 18 ++++++------------ 2 files changed, 7 insertions(+), 20 deletions(-) diff --git a/samples/Hello/Hello.csproj b/samples/Hello/Hello.csproj index d524c3877..6c3466b8c 100644 --- a/samples/Hello/Hello.csproj +++ b/samples/Hello/Hello.csproj @@ -3,18 +3,11 @@ net472 Exe + ..\..\bin\Test$(Configuration) false true - - ..\..\bin\TestDebug - - - - ..\..\bin\TestRelease - - diff --git a/tools/generator/generator.csproj b/tools/generator/generator.csproj index 9def16060..a16eba503 100644 --- a/tools/generator/generator.csproj +++ b/tools/generator/generator.csproj @@ -27,7 +27,12 @@ - + + + + $(PkgHtmlAgilityPack)\lib\netstandard2.0\HtmlAgilityPack.dll + @@ -39,15 +44,4 @@ - - - - -