From bcc78c47cdd608ebfc992dc7818ac0ba894896fc Mon Sep 17 00:00:00 2001 From: Jonathan Pryor Date: Thu, 7 Jul 2022 14:49:31 -0400 Subject: [PATCH 1/3] [java-source-utils] Build one `$(TargetFramework)` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Context: https://github.com/xamarin/xamarin-android/pull/7157 Ever since commit 69e1b80a, `java-source-utils.csproj` used the `$(TargetFrameworks)` plural form, even though it only specified a single framework. I don't remember underlying reason for this, other than "that's what I needed for it to build," which might have been because the `_BuildJava` target was "wrong". This arrangement was "fine", until xamarin/xamarin-android@2197a459, after which the xamarin-android/main CI builds started behaving "weird": frequently `make all-tests` would fail, because `make jenkins` would produce an invalid or corrupt `java-source-utils.jar`, *apparently* because it was attempting to *concurrently build* `java-source-utils.csproj` (?!). One of these concurrent builds *appeared* to be an "outer build" from `Xamarin.Android.sln`, while another one appeared to be an "inner build" via `apksigner.csproj` and `%(ProjectReference.AdditionalProperties)`: 17:53:44.526 59:11>Target "_BuildJava: (TargetId:490)" in file "/Users/runner/work/1/s/xamarin-android/external/Java.Interop/tools/java-source-utils/java-source-utils.targets" from project "/Users/runner/work/1/s/xamarin-android/external/Java.Interop/tools/java-source-utils/java-source-utils.csproj" (entry point): 17:53:44.526 59:11>Building target "_BuildJava" completely. Output file "/Users/runner/work/1/s/xamarin-android/bin/Release/lib/packs/Microsoft.Android.Sdk.Darwin/33.0.0/tools/java-source-utils.jar" does not exist. … 17:54:19.564 59:12>Target "DispatchToInnerBuilds: (TargetId:1637)" in file "/Users/runner/work/1/s/xamarin-android/bin/Release/dotnet/sdk/7.0.100-preview.7.22354.2/Microsoft.Common.CrossTargeting.targets" from project "/Users/runner/work/1/s/xamarin-android/external/Java.Interop/tools/java-source-utils/java-source-utils.csproj" (target "Build" depends on it): Task "MSBuild" (TaskId:1099) Task Parameter:BuildInParallel=True (TaskId:1099) Task Parameter:Targets=Build (TaskId:1099) Task Parameter: Projects= java-source-utils.csproj AdditionalProperties=TargetFramework=net7.0 (TaskId:1099) Additional Properties for project "java-source-utils.csproj": (TaskId:1099) TargetFramework=net7.0 (TaskId:1099) … 17:54:19.592 59:12>Target "_BuildJava: (TargetId:1640)" in file "/Users/runner/work/1/s/xamarin-android/external/Java.Interop/tools/java-source-utils/java-source-utils.targets" from project "/Users/runner/work/1/s/xamarin-android/external/Java.Interop/tools/java-source-utils/java-source-utils.csproj" (entry point): Building target "_BuildJava" completely. Output file "/Users/runner/work/1/s/xamarin-android/external/Java.Interop/../../bin/Release/lib/xamarin.android/xbuild/Xamarin/Android/java-source-utils.jar" does not exist. … 17:54:41.034 59:11>Done building target "_BuildJava" in project "java-source-utils.csproj".: (TargetId:490) We attempted to fix this by removing `%(ProjectReference.AdditionalProperties)`, which only slightly changed things: the "outer build via `Xamarin.Android.sln`" build was removed, but we instead saw a scenario in which `java-source-utils.csproj` was built "once", and as part of that build the "outer" and "inner" builds were run concurrently. A commonality here is `$(TargetFrameworks)` requires "outer" and "inner" builds, and that is a complication that we should remove. Update `java-source-utils.csproj` so that `$(TargetFramework)` is used, not `$(TargetFrameworks)`. Update the `_BuildJava` target so that it runs before the `GetCopyToOutputDirectoryItems` target. This is consistent with how the [`_BuildGradle` target in `apksigner.csproj`][0] works. Without this change -- and the removal of the empty `Build` target -- the `java-source-utils.csproj` build didn't behave correctly (`gradlew` wasn't run). Unfortunately, this seemingly simple change hits a little "snag": `Directory.Build.props` is imported [very early][1]: > *Directory.Build.props* is imported very early in > *Microsoft.Common.props*, and properties defined later are > unavailable to it. "Properties defined later are unavailable to it." Properties such as `$(TargetFramework)`. Which means that every property we have in `Directory.Build.props` which "depend" on `$(TargetFramework)` *are not **actually** usable*. They've only *appeared* to work because they would default to "classic" paths, but as soon as you try to build with `$(TargetFramework)`=net7.0 -- as was attempted with `java-source-utils.csproj`, and previously with `Java.Base.csproj` (bc5bcf4f) -- you'll find that the "wrong" directories are used for `$(OutputPath)`. This has been a long-standing deficiency in my MSBuild understanding. Fix this by adding a new `TargetFrameworkDependentValues.props` file, and ``ing this file in *every* `.csproj` which sets MSBuild properties with values dependent upon `$(TargetFramework)` *before* those properties are set. Old and busted: net7.0 $(UtilityOutputFullPath) New hawtness: net7.0 $(UtilityOutputFullPath) [0]: https://github.com/xamarin/xamarin-android/blob/c537dd28c30f482f365ef756214be35aa1553da2/src/apksigner/apksigner.targets#L3-L13 [1]: https://docs.microsoft.com/en-us/visualstudio/msbuild/customize-your-build?view=vs-2022#import-order --- Directory.Build.props | 59 +--------------- TargetFrameworkDependentValues.props | 69 +++++++++++++++++++ .../Java.Interop.BootstrapTasks.csproj | 6 ++ build-tools/jnienv-gen/jnienv-gen.csproj | 4 +- src/Java.Base/Java.Base.csproj | 7 +- .../Java.Interop.Dynamic.csproj | 1 + .../Java.Interop.Export.csproj | 3 +- .../Java.Interop.GenericMarshaler.csproj | 1 + .../Java.Interop.Localization.csproj | 2 + .../Java.Interop.Tools.Cecil.csproj | 4 +- .../Java.Interop.Tools.Diagnostics.csproj | 4 +- .../Java.Interop.Tools.Generator.csproj | 2 + ....Interop.Tools.JavaCallableWrappers.csproj | 2 + .../Java.Interop.Tools.JavaSource.csproj | 1 + .../Java.Interop.Tools.JavaTypeSystem.csproj | 2 + .../Java.Interop-MonoAndroid.csproj | 1 + src/Java.Interop/Java.Interop.csproj | 15 ++-- src/Java.Interop/Java.Interop.targets | 2 +- .../Java.Runtime.Environment.csproj | 2 + ...droid.Tools.AnnotationSupport.Cecil.csproj | 2 + ...rin.Android.Tools.AnnotationSupport.csproj | 2 + ...amarin.Android.Tools.ApiXmlAdjuster.csproj | 2 + .../Xamarin.Android.Tools.Bytecode.csproj | 2 + .../Xamarin.SourceWriter.csproj | 2 + src/java-interop/java-interop.csproj | 9 ++- tests/Java.Base-Tests/Java.Base-Tests.csproj | 4 +- .../Java.Interop-PerformanceTests.csproj | 2 + .../Java.Interop-Tests.csproj | 2 + .../Java.Interop.Dynamic-Tests.csproj | 2 + .../Java.Interop.Export-Tests.csproj | 2 + .../Java.Interop.Tools.Generator-Tests.csproj | 2 + ...op.Tools.JavaCallableWrappers-Tests.csproj | 2 + ...Java.Interop.Tools.JavaSource-Tests.csproj | 1 + ....Interop.Tools.JavaTypeSystem-Tests.csproj | 2 + tests/NativeTiming/NativeTiming.csproj | 2 + tests/TestJVM/TestJVM.csproj | 2 + ....Android.Tools.ApiXmlAdjuster-Tests.csproj | 2 + ...amarin.Android.Tools.Bytecode-Tests.csproj | 2 + .../Xamarin.SourceWriter-Tests.csproj | 2 + tests/generator-Tests/generator-Tests.csproj | 2 + .../invocation-overhead.csproj | 2 + .../logcat-parse-Tests.csproj | 2 + tools/class-parse/class-parse.csproj | 2 + tools/generator/generator.csproj | 2 + .../java-source-utils.csproj | 7 +- .../java-source-utils.targets | 4 +- tools/jcw-gen/jcw-gen.csproj | 2 + ...oid.Tools.JniMarshalMethodGenerator.csproj | 1 + tools/logcat-parse/logcat-parse.csproj | 2 + .../param-name-importer.csproj | 1 + 50 files changed, 185 insertions(+), 77 deletions(-) create mode 100644 TargetFrameworkDependentValues.props diff --git a/Directory.Build.props b/Directory.Build.props index bd46e6e75..d3e95eead 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -61,54 +61,6 @@ False obj\ - - True - - - $(BaseIntermediateOutputPath)\$(Configuration)-$(TargetFramework.ToLowerInvariant()) - $(MSBuildThisFileDirectory)bin\Build$(Configuration)-$(TargetFramework.ToLowerInvariant())\ - $(MSBuildThisFileDirectory)bin\$(Configuration)-$(TargetFramework.ToLowerInvariant())\ - $(MSBuildThisFileDirectory)bin\Test$(Configuration)-$(TargetFramework.ToLowerInvariant())\ - $(UtilityOutputFullPathCoreApps) - $(ToolOutputFullPath) - Major - $(JINetToolVersion) - $(JINetCoreLibVersion) - - - $(BaseIntermediateOutputPath)\$(Configuration) - $(MSBuildThisFileDirectory)bin\Build$(Configuration)\ - $(MSBuildThisFileDirectory)bin\$(Configuration)\ - $(MSBuildThisFileDirectory)bin\Test$(Configuration)\ - $(ToolOutputFullPath) - $(JIOldToolVersion) - $(JIOldCoreLibVersion) - - - $(MSBuildThisFileDirectory)external\xamarin-android-tools - - - dotnet - cmake - $(MSBuildThisFileDirectory)build-tools\gradle - $(GradleHome)\gradlew - --stacktrace --no-daemon - 1.8 - 1.8 - <_BootClassPath Condition=" '$(JreRtJarPath)' != '' ">-bootclasspath "$(JreRtJarPath)" - <_JavacSourceOptions>-source $(JavacSourceVersion) -target $(JavacTargetVersion) $(_BootClassPath) - - - <_XamarinAndroidCecilPath Condition=" '$(CecilSourceDirectory)' != '' And Exists('$(UtilityOutputFullPath)Xamarin.Android.Cecil.dll') ">$(UtilityOutputFullPath)Xamarin.Android.Cecil.dll - $([System.IO.Path]::GetFullPath ('$(XamarinAndroidToolsDirectory)')) - - - mono - <_JNIEnvGenPath Condition=" '$(JIBuildingForNetCoreApp)' == 'True' ">$(BuildToolOutputFullPath)jnienv-gen.dll - <_JNIEnvGenPath Condition=" '$(JIBuildingForNetCoreApp)' != 'True' ">$(BuildToolOutputFullPath)jnienv-gen.exe - <_RunJNIEnvGen Condition=" '$(JIBuildingForNetCoreApp)' == 'True' ">$(DotnetToolPath) "$(_JNIEnvGenPath)" - <_RunJNIEnvGen Condition=" '$(JIBuildingForNetCoreApp)' != 'True' ">$(Runtime) "$(_JNIEnvGenPath)" - - - AllEnabledByDefault - $(WarningsAsErrors);CA1307;CA1309;CA1310 - - - $(NoWarn);CA1307;CA1309;CA1310 - - - $(JIUtilityVersion) + $(MSBuildThisFileDirectory)external\xamarin-android-tools diff --git a/TargetFrameworkDependentValues.props b/TargetFrameworkDependentValues.props new file mode 100644 index 000000000..3b5014846 --- /dev/null +++ b/TargetFrameworkDependentValues.props @@ -0,0 +1,69 @@ + + + + + True + + + + $(BaseIntermediateOutputPath)\$(Configuration)-$(TargetFramework.ToLowerInvariant()) + $(MSBuildThisFileDirectory)bin\Build$(Configuration)-$(TargetFramework.ToLowerInvariant())\ + $(MSBuildThisFileDirectory)bin\$(Configuration)-$(TargetFramework.ToLowerInvariant())\ + $(MSBuildThisFileDirectory)bin\Test$(Configuration)-$(TargetFramework.ToLowerInvariant())\ + $(UtilityOutputFullPathCoreApps) + $(ToolOutputFullPath) + Major + $(JINetToolVersion) + $(JINetCoreLibVersion) + + + + $(BaseIntermediateOutputPath)\$(Configuration) + $(MSBuildThisFileDirectory)bin\Build$(Configuration)\ + $(MSBuildThisFileDirectory)bin\$(Configuration)\ + $(MSBuildThisFileDirectory)bin\Test$(Configuration)\ + $(ToolOutputFullPath) + $(JIOldToolVersion) + $(JIOldCoreLibVersion) + + + + dotnet + cmake + $(MSBuildThisFileDirectory)build-tools\gradle + $(GradleHome)\gradlew + --stacktrace --no-daemon + 1.8 + 1.8 + <_BootClassPath Condition=" '$(JreRtJarPath)' != '' ">-bootclasspath "$(JreRtJarPath)" + <_JavacSourceOptions>-source $(JavacSourceVersion) -target $(JavacTargetVersion) $(_BootClassPath) + + + + <_XamarinAndroidCecilPath Condition=" '$(CecilSourceDirectory)' != '' And Exists('$(UtilityOutputFullPath)Xamarin.Android.Cecil.dll') ">$(UtilityOutputFullPath)Xamarin.Android.Cecil.dll + $([System.IO.Path]::GetFullPath ('$(XamarinAndroidToolsDirectory)')) + + + + mono + <_JNIEnvGenPath Condition=" '$(JIBuildingForNetCoreApp)' == 'True' ">$(BuildToolOutputFullPath)jnienv-gen.dll + <_JNIEnvGenPath Condition=" '$(JIBuildingForNetCoreApp)' != 'True' ">$(BuildToolOutputFullPath)jnienv-gen.exe + <_RunJNIEnvGen Condition=" '$(JIBuildingForNetCoreApp)' == 'True' ">$(DotnetToolPath) "$(_JNIEnvGenPath)" + <_RunJNIEnvGen Condition=" '$(JIBuildingForNetCoreApp)' != 'True' ">$(Runtime) "$(_JNIEnvGenPath)" + + + + + AllEnabledByDefault + $(WarningsAsErrors);CA1307;CA1309;CA1310 + + + + $(NoWarn);CA1307;CA1309;CA1310 + + + + $(JIUtilityVersion) + + + diff --git a/build-tools/Java.Interop.BootstrapTasks/Java.Interop.BootstrapTasks.csproj b/build-tools/Java.Interop.BootstrapTasks/Java.Interop.BootstrapTasks.csproj index 2ea9769b5..30c985671 100644 --- a/build-tools/Java.Interop.BootstrapTasks/Java.Interop.BootstrapTasks.csproj +++ b/build-tools/Java.Interop.BootstrapTasks/Java.Interop.BootstrapTasks.csproj @@ -3,10 +3,16 @@ netstandard2.0 false + + + + + $(BuildToolOutputFullPath) + $(BuildToolOutputFullPath) main false diff --git a/build-tools/jnienv-gen/jnienv-gen.csproj b/build-tools/jnienv-gen/jnienv-gen.csproj index 0287a6b75..9374c20ec 100644 --- a/build-tools/jnienv-gen/jnienv-gen.csproj +++ b/build-tools/jnienv-gen/jnienv-gen.csproj @@ -4,10 +4,12 @@ Exe net472;$(DotNetTargetFramework) false - $(BaseIntermediateOutputPath)$(Configuration)\$(TargetFramework.ToLowerInvariant())\ + + + $(BaseIntermediateOutputPath)$(Configuration)\$(TargetFramework.ToLowerInvariant())\ $(BuildToolOutputFullPath) diff --git a/src/Java.Base/Java.Base.csproj b/src/Java.Base/Java.Base.csproj index b05f70d60..c8d3cf20b 100644 --- a/src/Java.Base/Java.Base.csproj +++ b/src/Java.Base/Java.Base.csproj @@ -1,11 +1,16 @@  - $(DotNetTargetFramework) + $(DotNetTargetFramework) true enable $(NoWarn);8764;CS0108 + + + + + $(JICoreLibVersion) diff --git a/src/Java.Interop.Dynamic/Java.Interop.Dynamic.csproj b/src/Java.Interop.Dynamic/Java.Interop.Dynamic.csproj index ec234cb81..ff0eea7a4 100644 --- a/src/Java.Interop.Dynamic/Java.Interop.Dynamic.csproj +++ b/src/Java.Interop.Dynamic/Java.Interop.Dynamic.csproj @@ -11,6 +11,7 @@ Java.Interop.Dynamic $(JICoreLibVersion) + $(ToolOutputFullPath) diff --git a/src/Java.Interop.Export/Java.Interop.Export.csproj b/src/Java.Interop.Export/Java.Interop.Export.csproj index 3bb393185..b6130ead2 100644 --- a/src/Java.Interop.Export/Java.Interop.Export.csproj +++ b/src/Java.Interop.Export/Java.Interop.Export.csproj @@ -8,10 +8,11 @@ true ..\..\product.snk Java.Interop.Export - $(JICoreLibVersion) + $(ToolOutputFullPath) + $(JICoreLibVersion) diff --git a/src/Java.Interop.GenericMarshaler/Java.Interop.GenericMarshaler.csproj b/src/Java.Interop.GenericMarshaler/Java.Interop.GenericMarshaler.csproj index 4f23b6ca6..b55823e6d 100644 --- a/src/Java.Interop.GenericMarshaler/Java.Interop.GenericMarshaler.csproj +++ b/src/Java.Interop.GenericMarshaler/Java.Interop.GenericMarshaler.csproj @@ -8,6 +8,7 @@ ..\..\product.snk Java.Interop.GenericMarshaler + $(ToolOutputFullPath) $(JICoreLibVersion) diff --git a/src/Java.Interop.Localization/Java.Interop.Localization.csproj b/src/Java.Interop.Localization/Java.Interop.Localization.csproj index 575a5c342..73af695d9 100644 --- a/src/Java.Interop.Localization/Java.Interop.Localization.csproj +++ b/src/Java.Interop.Localization/Java.Interop.Localization.csproj @@ -10,6 +10,8 @@ ..\..\product.snk + + 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 04350c31a..2a842c826 100644 --- a/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil.csproj +++ b/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil.csproj @@ -9,12 +9,14 @@ ..\..\product.snk - + $(ToolOutputFullPath) + + 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 8232bf6db..c3936e52f 100644 --- a/src/Java.Interop.Tools.Diagnostics/Java.Interop.Tools.Diagnostics.csproj +++ b/src/Java.Interop.Tools.Diagnostics/Java.Interop.Tools.Diagnostics.csproj @@ -9,12 +9,14 @@ ..\..\product.snk - + $(ToolOutputFullPath) + + diff --git a/src/Java.Interop.Tools.Generator/Java.Interop.Tools.Generator.csproj b/src/Java.Interop.Tools.Generator/Java.Interop.Tools.Generator.csproj index 11cc6392e..eae42b8d6 100644 --- a/src/Java.Interop.Tools.Generator/Java.Interop.Tools.Generator.csproj +++ b/src/Java.Interop.Tools.Generator/Java.Interop.Tools.Generator.csproj @@ -7,6 +7,8 @@ INTERNAL_NULLABLE_ATTRIBUTES + + $(UtilityOutputFullPath) 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 d4012dcc6..3eace1272 100644 --- a/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers.csproj +++ b/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers.csproj @@ -9,6 +9,8 @@ ..\..\product.snk + + $(ToolOutputFullPath) diff --git a/src/Java.Interop.Tools.JavaSource/Java.Interop.Tools.JavaSource.csproj b/src/Java.Interop.Tools.JavaSource/Java.Interop.Tools.JavaSource.csproj index 559cce52f..5f84e236a 100644 --- a/src/Java.Interop.Tools.JavaSource/Java.Interop.Tools.JavaSource.csproj +++ b/src/Java.Interop.Tools.JavaSource/Java.Interop.Tools.JavaSource.csproj @@ -8,6 +8,7 @@ {5C0B3562-8DA0-4726-9762-75B9709ED6B7} Java.Interop.Tools.JavaSource + $(ToolOutputFullPath) diff --git a/src/Java.Interop.Tools.JavaTypeSystem/Java.Interop.Tools.JavaTypeSystem.csproj b/src/Java.Interop.Tools.JavaTypeSystem/Java.Interop.Tools.JavaTypeSystem.csproj index f99ddfab2..e61605e93 100644 --- a/src/Java.Interop.Tools.JavaTypeSystem/Java.Interop.Tools.JavaTypeSystem.csproj +++ b/src/Java.Interop.Tools.JavaTypeSystem/Java.Interop.Tools.JavaTypeSystem.csproj @@ -7,6 +7,8 @@ 8.0 + + $(TestOutputFullPath) diff --git a/src/Java.Interop/Java.Interop-MonoAndroid.csproj b/src/Java.Interop/Java.Interop-MonoAndroid.csproj index 9ffc31f5f..3cae2eb9f 100644 --- a/src/Java.Interop/Java.Interop-MonoAndroid.csproj +++ b/src/Java.Interop/Java.Interop-MonoAndroid.csproj @@ -26,6 +26,7 @@ true + 0.1.0.0 ..\..\bin\Build$(Configuration)\XAConfig.props diff --git a/src/Java.Interop/Java.Interop.csproj b/src/Java.Interop/Java.Interop.csproj index 9593eaea4..40640386f 100644 --- a/src/Java.Interop/Java.Interop.csproj +++ b/src/Java.Interop/Java.Interop.csproj @@ -22,20 +22,23 @@ ..\..\product.snk INTEROP;FEATURE_JNIENVIRONMENT_JI_PINVOKES;FEATURE_JNIOBJECTREFERENCE_INTPTRS;INTERNAL_NULLABLE_ATTRIBUTES;$(JavaInteropDefineConstants) true + enable + true + NU1702 + + + DEBUG;$(DefineConstants) + + + $(BaseIntermediateOutputPath)$(Configuration)\$(TargetFramework.ToLowerInvariant())\ $(ToolOutputFullPath) $(ToolOutputFullPath)Java.Interop.xml $(BuildToolOutputFullPath) 9.0 8.0 - enable - true - NU1702 $(JICoreLibVersion) - - DEBUG;$(DefineConstants) - diff --git a/src/Java.Interop/Java.Interop.targets b/src/Java.Interop/Java.Interop.targets index 140fe293b..3d3190cfe 100644 --- a/src/Java.Interop/Java.Interop.targets +++ b/src/Java.Interop/Java.Interop.targets @@ -1,5 +1,5 @@ - + diff --git a/src/Java.Runtime.Environment/Java.Runtime.Environment.csproj b/src/Java.Runtime.Environment/Java.Runtime.Environment.csproj index cf62b5dc4..72add3fe4 100644 --- a/src/Java.Runtime.Environment/Java.Runtime.Environment.csproj +++ b/src/Java.Runtime.Environment/Java.Runtime.Environment.csproj @@ -10,6 +10,8 @@ NU1702 + + $(TestOutputFullPath) $(JICoreLibVersion) 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 4e832b102..1424d7713 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 @@ -4,6 +4,8 @@ netstandard2.0 + + $(TestOutputFullPath) 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 fcb12c1fe..8ee418807 100644 --- a/src/Xamarin.Android.Tools.AnnotationSupport/Xamarin.Android.Tools.AnnotationSupport.csproj +++ b/src/Xamarin.Android.Tools.AnnotationSupport/Xamarin.Android.Tools.AnnotationSupport.csproj @@ -4,6 +4,8 @@ netstandard2.0 + + $(TestOutputFullPath) 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 bc8a8ff39..40eb2a533 100644 --- a/src/Xamarin.Android.Tools.ApiXmlAdjuster/Xamarin.Android.Tools.ApiXmlAdjuster.csproj +++ b/src/Xamarin.Android.Tools.ApiXmlAdjuster/Xamarin.Android.Tools.ApiXmlAdjuster.csproj @@ -7,6 +7,8 @@ INTERNAL_NULLABLE_ATTRIBUTES + + $(TestOutputFullPath) 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 2ab24204e..95db41669 100644 --- a/src/Xamarin.Android.Tools.Bytecode/Xamarin.Android.Tools.Bytecode.csproj +++ b/src/Xamarin.Android.Tools.Bytecode/Xamarin.Android.Tools.Bytecode.csproj @@ -9,6 +9,8 @@ enable + + $(TestOutputFullPath) diff --git a/src/Xamarin.SourceWriter/Xamarin.SourceWriter.csproj b/src/Xamarin.SourceWriter/Xamarin.SourceWriter.csproj index 9f5c4f4ab..155145daa 100644 --- a/src/Xamarin.SourceWriter/Xamarin.SourceWriter.csproj +++ b/src/Xamarin.SourceWriter/Xamarin.SourceWriter.csproj @@ -4,4 +4,6 @@ netstandard2.0 + + diff --git a/src/java-interop/java-interop.csproj b/src/java-interop/java-interop.csproj index 562fe1f6b..0c0181b03 100644 --- a/src/java-interop/java-interop.csproj +++ b/src/java-interop/java-interop.csproj @@ -1,13 +1,18 @@ net472;$(DotNetTargetFramework) - $(ToolOutputFullPath) - $(BuildToolOutputFullPath) java-interop JI_DLL_EXPORT MONODEVELOP JAVA_INTEROP_DLL_EXPORT . + + + + $(ToolOutputFullPath) + $(BuildToolOutputFullPath) + + DEBUG $(DefineConstants) diff --git a/tests/Java.Base-Tests/Java.Base-Tests.csproj b/tests/Java.Base-Tests/Java.Base-Tests.csproj index d04a048f6..78111a2d7 100644 --- a/tests/Java.Base-Tests/Java.Base-Tests.csproj +++ b/tests/Java.Base-Tests/Java.Base-Tests.csproj @@ -1,13 +1,15 @@ - $(DotNetTargetFramework) + $(DotNetTargetFramework) Java.BaseTests true enable false + + $(TestOutputFullPath) diff --git a/tests/Java.Interop-PerformanceTests/Java.Interop-PerformanceTests.csproj b/tests/Java.Interop-PerformanceTests/Java.Interop-PerformanceTests.csproj index 52ca1a252..9402d569b 100644 --- a/tests/Java.Interop-PerformanceTests/Java.Interop-PerformanceTests.csproj +++ b/tests/Java.Interop-PerformanceTests/Java.Interop-PerformanceTests.csproj @@ -6,6 +6,8 @@ true + + $(TestOutputFullPath) diff --git a/tests/Java.Interop-Tests/Java.Interop-Tests.csproj b/tests/Java.Interop-Tests/Java.Interop-Tests.csproj index d64d20be1..bed263368 100644 --- a/tests/Java.Interop-Tests/Java.Interop-Tests.csproj +++ b/tests/Java.Interop-Tests/Java.Interop-Tests.csproj @@ -7,6 +7,8 @@ 9.0 + + $(TestOutputFullPath) 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 2929c4877..e56033e57 100644 --- a/tests/Java.Interop.Dynamic-Tests/Java.Interop.Dynamic-Tests.csproj +++ b/tests/Java.Interop.Dynamic-Tests/Java.Interop.Dynamic-Tests.csproj @@ -6,6 +6,8 @@ true + + $(TestOutputFullPath) 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 9ef1b18e7..90aeccaab 100644 --- a/tests/Java.Interop.Export-Tests/Java.Interop.Export-Tests.csproj +++ b/tests/Java.Interop.Export-Tests/Java.Interop.Export-Tests.csproj @@ -6,6 +6,8 @@ true + + $(TestOutputFullPath) diff --git a/tests/Java.Interop.Tools.Generator-Tests/Java.Interop.Tools.Generator-Tests.csproj b/tests/Java.Interop.Tools.Generator-Tests/Java.Interop.Tools.Generator-Tests.csproj index 97711aa73..910fe9aec 100644 --- a/tests/Java.Interop.Tools.Generator-Tests/Java.Interop.Tools.Generator-Tests.csproj +++ b/tests/Java.Interop.Tools.Generator-Tests/Java.Interop.Tools.Generator-Tests.csproj @@ -6,6 +6,8 @@ false + + $(TestOutputFullPath) 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 c6750e952..c9fea1f8e 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 @@ -6,6 +6,8 @@ $(DefineConstants);HAVE_CECIL;JCW_ONLY_TYPE_NAMES + + $(TestOutputFullPath) 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 aa5b0ef4b..cfcbc4f55 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 @@ -3,6 +3,7 @@ net472;$(DotNetTargetFramework) False + $(TestOutputFullPath) diff --git a/tests/Java.Interop.Tools.JavaTypeSystem-Tests/Java.Interop.Tools.JavaTypeSystem-Tests.csproj b/tests/Java.Interop.Tools.JavaTypeSystem-Tests/Java.Interop.Tools.JavaTypeSystem-Tests.csproj index bda2b02a5..f28a0f6dd 100644 --- a/tests/Java.Interop.Tools.JavaTypeSystem-Tests/Java.Interop.Tools.JavaTypeSystem-Tests.csproj +++ b/tests/Java.Interop.Tools.JavaTypeSystem-Tests/Java.Interop.Tools.JavaTypeSystem-Tests.csproj @@ -6,6 +6,8 @@ Java.Interop.Tools.JavaTypeSystem.Tests + + $(TestOutputFullPath) diff --git a/tests/NativeTiming/NativeTiming.csproj b/tests/NativeTiming/NativeTiming.csproj index e6e3f1bfc..68105101b 100644 --- a/tests/NativeTiming/NativeTiming.csproj +++ b/tests/NativeTiming/NativeTiming.csproj @@ -4,6 +4,8 @@ false + + $(TestOutputFullPath) diff --git a/tests/TestJVM/TestJVM.csproj b/tests/TestJVM/TestJVM.csproj index f4770c6d9..2a53924f4 100644 --- a/tests/TestJVM/TestJVM.csproj +++ b/tests/TestJVM/TestJVM.csproj @@ -7,6 +7,8 @@ false + + $(TestOutputFullPath) 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 f4e21a244..c6a4e3c7b 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 @@ -5,6 +5,8 @@ false + + $(TestOutputFullPath) 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 43870d999..5c454b91c 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 @@ -6,6 +6,8 @@ 8.0 + + $(TestOutputFullPath) diff --git a/tests/Xamarin.SourceWriter-Tests/Xamarin.SourceWriter-Tests.csproj b/tests/Xamarin.SourceWriter-Tests/Xamarin.SourceWriter-Tests.csproj index 930180dae..336caea9f 100644 --- a/tests/Xamarin.SourceWriter-Tests/Xamarin.SourceWriter-Tests.csproj +++ b/tests/Xamarin.SourceWriter-Tests/Xamarin.SourceWriter-Tests.csproj @@ -5,6 +5,8 @@ false + + $(TestOutputFullPath) diff --git a/tests/generator-Tests/generator-Tests.csproj b/tests/generator-Tests/generator-Tests.csproj index 63e1683cf..9992733b2 100644 --- a/tests/generator-Tests/generator-Tests.csproj +++ b/tests/generator-Tests/generator-Tests.csproj @@ -7,6 +7,8 @@ 8.0 + + $(TestOutputFullPath) diff --git a/tests/invocation-overhead/invocation-overhead.csproj b/tests/invocation-overhead/invocation-overhead.csproj index 8cf004010..5bc4123fb 100644 --- a/tests/invocation-overhead/invocation-overhead.csproj +++ b/tests/invocation-overhead/invocation-overhead.csproj @@ -9,6 +9,8 @@ $(DefineConstants);FEATURE_JNIENVIRONMENT_JI_FUNCTION_POINTERS + + diff --git a/tests/logcat-parse-Tests/logcat-parse-Tests.csproj b/tests/logcat-parse-Tests/logcat-parse-Tests.csproj index ee2f577bd..22307113d 100644 --- a/tests/logcat-parse-Tests/logcat-parse-Tests.csproj +++ b/tests/logcat-parse-Tests/logcat-parse-Tests.csproj @@ -5,6 +5,8 @@ false + + $(TestOutputFullPath) diff --git a/tools/class-parse/class-parse.csproj b/tools/class-parse/class-parse.csproj index 1b2eb95c5..8ac43c5af 100644 --- a/tools/class-parse/class-parse.csproj +++ b/tools/class-parse/class-parse.csproj @@ -5,6 +5,8 @@ Exe + + $(UtilityOutputFullPath) diff --git a/tools/generator/generator.csproj b/tools/generator/generator.csproj index 563f56c24..c0db3c164 100644 --- a/tools/generator/generator.csproj +++ b/tools/generator/generator.csproj @@ -7,6 +7,8 @@ 8.0 + + $(UtilityOutputFullPath) diff --git a/tools/java-source-utils/java-source-utils.csproj b/tools/java-source-utils/java-source-utils.csproj index d1eb506f3..324de8669 100644 --- a/tools/java-source-utils/java-source-utils.csproj +++ b/tools/java-source-utils/java-source-utils.csproj @@ -1,7 +1,12 @@ - $(DotNetTargetFramework) + net7.0 + + + + + $(UtilityOutputFullPath) diff --git a/tools/java-source-utils/java-source-utils.targets b/tools/java-source-utils/java-source-utils.targets index 6ca7d35d7..ed1c790d4 100644 --- a/tools/java-source-utils/java-source-utils.targets +++ b/tools/java-source-utils/java-source-utils.targets @@ -1,10 +1,8 @@ - - Exe + + $(UtilityOutputFullPath) diff --git a/tools/jnimarshalmethod-gen/Xamarin.Android.Tools.JniMarshalMethodGenerator.csproj b/tools/jnimarshalmethod-gen/Xamarin.Android.Tools.JniMarshalMethodGenerator.csproj index 11a9f74f4..83d83de3e 100644 --- a/tools/jnimarshalmethod-gen/Xamarin.Android.Tools.JniMarshalMethodGenerator.csproj +++ b/tools/jnimarshalmethod-gen/Xamarin.Android.Tools.JniMarshalMethodGenerator.csproj @@ -6,6 +6,7 @@ jnimarshalmethod-gen + diff --git a/tools/logcat-parse/logcat-parse.csproj b/tools/logcat-parse/logcat-parse.csproj index 38b2e55ed..e63067cc0 100644 --- a/tools/logcat-parse/logcat-parse.csproj +++ b/tools/logcat-parse/logcat-parse.csproj @@ -5,6 +5,8 @@ Exe + + $(UtilityOutputFullPath) diff --git a/tools/param-name-importer/param-name-importer.csproj b/tools/param-name-importer/param-name-importer.csproj index 10ddef741..5f6e7d7e8 100644 --- a/tools/param-name-importer/param-name-importer.csproj +++ b/tools/param-name-importer/param-name-importer.csproj @@ -3,6 +3,7 @@ net472;$(DotNetTargetFramework) Exe + $(UtilityOutputFullPath) From a90c3e291c915f4b9031effb554bb703c6f3d1f0 Mon Sep 17 00:00:00 2001 From: Jonathan Pryor Date: Fri, 8 Jul 2022 10:38:28 -0400 Subject: [PATCH 2/3] Revert some property block moves, suggested by @pjcollins --- Directory.Build.props | 23 +++++++++++++++++++---- TargetFrameworkDependentValues.props | 17 ----------------- 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index d3e95eead..d161be84d 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -62,6 +62,25 @@ obj\ + + $(MSBuildThisFileDirectory)external\xamarin-android-tools + + + dotnet + cmake + $(MSBuildThisFileDirectory)build-tools\gradle + $(GradleHome)\gradlew + --stacktrace --no-daemon + 1.8 + 1.8 + <_BootClassPath Condition=" '$(JreRtJarPath)' != '' ">-bootclasspath "$(JreRtJarPath)" + <_JavacSourceOptions>-source $(JavacSourceVersion) -target $(JavacTargetVersion) $(_BootClassPath) + + + <_XamarinAndroidCecilPath Condition=" '$(CecilSourceDirectory)' != '' And Exists('$(UtilityOutputFullPath)Xamarin.Android.Cecil.dll') ">$(UtilityOutputFullPath)Xamarin.Android.Cecil.dll + $([System.IO.Path]::GetFullPath ('$(XamarinAndroidToolsDirectory)')) + +