From 89b89d498149d1d951411cddb288d63cd935a5a5 Mon Sep 17 00:00:00 2001 From: Jan Dupej Date: Wed, 28 Jun 2023 11:12:31 +0200 Subject: [PATCH 1/8] MarshallingPInvokeScanner is applied to Apple toolchains. --- src/mono/msbuild/apple/build/AppleBuild.props | 1 + .../msbuild/apple/build/AppleBuild.targets | 23 +++++++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/mono/msbuild/apple/build/AppleBuild.props b/src/mono/msbuild/apple/build/AppleBuild.props index 046c34173401b..b7ae5519873cf 100644 --- a/src/mono/msbuild/apple/build/AppleBuild.props +++ b/src/mono/msbuild/apple/build/AppleBuild.props @@ -26,6 +26,7 @@ _InitializeCommonProperties; _BeforeAppleBuild; _AppleResolveReferences; + _ScanAssembliesDecideLightweightMarshaler; _AppleAotCompile; _BuildNativeLibrary; _AppleGenerateAppBundle; diff --git a/src/mono/msbuild/apple/build/AppleBuild.targets b/src/mono/msbuild/apple/build/AppleBuild.targets index f54f37b7e0778..0b2f70d370908 100644 --- a/src/mono/msbuild/apple/build/AppleBuild.targets +++ b/src/mono/msbuild/apple/build/AppleBuild.targets @@ -14,6 +14,8 @@ + @@ -56,10 +58,6 @@ <_CommonLinkerArgs Condition="'$(_IsLibraryMode)' == 'true' and '$(TargetOS)' != 'tvos' and '$(TargetOS)' != 'tvossimulator'" Include="-framework GSS" /> - - marshal-ilgen - - @@ -110,6 +108,23 @@ + + + + + + + + + + + + + + + + + From 01ff43dce853324a8f3f4f5172fbfa20850a8274 Mon Sep 17 00:00:00 2001 From: Jan Dupej Date: Wed, 28 Jun 2023 11:13:16 +0200 Subject: [PATCH 2/8] HelloiOS example uses simpler string marshaling. --- src/mono/sample/iOS/Program.cs | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/mono/sample/iOS/Program.cs b/src/mono/sample/iOS/Program.cs index 1c9839a8ae0a2..023d1c4984e12 100644 --- a/src/mono/sample/iOS/Program.cs +++ b/src/mono/sample/iOS/Program.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using System; +using System.Text; using System.Threading; using System.Threading.Tasks; using System.Runtime.InteropServices; @@ -10,18 +11,32 @@ public static class Program { // Defined in main.m [DllImport("__Internal")] - private static extern void ios_set_text(string value); + unsafe private static extern void ios_set_text(byte* value); + //private static extern void ios_set_text(string value); [DllImport("__Internal")] unsafe private static extern void ios_register_button_click(delegate* unmanaged callback); private static int counter = 0; + private static void SetText(string txt) + { + byte[] ascii = ASCIIEncoding.ASCII.GetBytes(txt); + + unsafe + { + fixed (byte* asciiPtr = ascii) + { + ios_set_text(asciiPtr); + } + } + } + // Called by native code, see main.m [UnmanagedCallersOnly] private static void OnButtonClick() { - ios_set_text("OnButtonClick! #" + counter++); + SetText("OnButtonClick! #" + counter++); } #if CI_TEST @@ -39,7 +54,7 @@ public static async Task Main(string[] args) for (int i = 0; i < msg.Length; i++) { // a kind of an animation - ios_set_text(msg.Substring(0, i + 1)); + SetText(msg.Substring(0, i + 1)); await Task.Delay(100); } From c37ef2307399dc99e9e5bdf2026689471d0f5361 Mon Sep 17 00:00:00 2001 From: Jan Dupej Date: Fri, 14 Jul 2023 11:55:44 +0200 Subject: [PATCH 3/8] Removing marshal-ilgen from HelloWorld. --- src/mono/sample/iOS/Program.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mono/sample/iOS/Program.csproj b/src/mono/sample/iOS/Program.csproj index 9a77237bc3a2e..335dc34dc6176 100644 --- a/src/mono/sample/iOS/Program.csproj +++ b/src/mono/sample/iOS/Program.csproj @@ -32,7 +32,7 @@ - diagnostics_tracing;marshal-ilgen + diagnostics_tracing From 696a6565942389228316a0c7be5a0651809a41e9 Mon Sep 17 00:00:00 2001 From: Jan Dupej Date: Fri, 14 Jul 2023 12:49:25 +0200 Subject: [PATCH 4/8] Runtime components and runtime library paths are now decided in the correct order relative to building the native runtime. --- src/mono/msbuild/apple/build/AppleBuild.props | 1 + .../msbuild/apple/build/AppleBuild.targets | 44 ++++++++++--------- src/mono/sample/iOS/Program.csproj | 7 +-- 3 files changed, 28 insertions(+), 24 deletions(-) diff --git a/src/mono/msbuild/apple/build/AppleBuild.props b/src/mono/msbuild/apple/build/AppleBuild.props index b7ae5519873cf..d4191321c5978 100644 --- a/src/mono/msbuild/apple/build/AppleBuild.props +++ b/src/mono/msbuild/apple/build/AppleBuild.props @@ -27,6 +27,7 @@ _BeforeAppleBuild; _AppleResolveReferences; _ScanAssembliesDecideLightweightMarshaler; + _ProcessRuntimeComponents; _AppleAotCompile; _BuildNativeLibrary; _AppleGenerateAppBundle; diff --git a/src/mono/msbuild/apple/build/AppleBuild.targets b/src/mono/msbuild/apple/build/AppleBuild.targets index 0b2f70d370908..1b4704ba55ba7 100644 --- a/src/mono/msbuild/apple/build/AppleBuild.targets +++ b/src/mono/msbuild/apple/build/AppleBuild.targets @@ -57,26 +57,6 @@ <_CommonLinkerArgs Condition="'$(_IsLibraryMode)' == 'true' and '$(TargetOS)' != 'tvos' and '$(TargetOS)' != 'tvossimulator'" Include="-framework GSS" /> - - - - - - - - <_UsedComponents - Condition="'$(RuntimeComponents)' != '' and '$(RuntimeComponents)' != '*'" - Include="$(RuntimeComponents)" /> - - <_RuntimeLibraries - Include="$(AppleBuildDir)\*-stub-static.a" /> - <_RuntimeLibraries - Include="$(AppleBuildDir)\*.a" - Exclude="$(AppleBuildDir)\*-static.a" /> - - <_RuntimeLibraries Remove="$(AppleBuildDir)\libmono-component-%(_UsedComponents.Identity)-stub-static.a" /> - <_RuntimeLibraries Include="$(AppleBuildDir)\libmono-component-%(_UsedComponents.Identity)-static.a" /> - @@ -108,7 +88,7 @@ - + @@ -125,6 +105,28 @@ + + + + + + + + <_UsedComponents + Condition="'$(RuntimeComponents)' != '' and '$(RuntimeComponents)' != '*'" + Include="$(RuntimeComponents)" /> + + <_RuntimeLibraries + Include="$(AppleBuildDir)\*-stub-static.a" /> + <_RuntimeLibraries + Include="$(AppleBuildDir)\*.a" + Exclude="$(AppleBuildDir)\*-static.a" /> + + <_RuntimeLibraries Remove="$(AppleBuildDir)\libmono-component-%(_UsedComponents.Identity)-stub-static.a" /> + <_RuntimeLibraries Include="$(AppleBuildDir)\libmono-component-%(_UsedComponents.Identity)-static.a" /> + + + diff --git a/src/mono/sample/iOS/Program.csproj b/src/mono/sample/iOS/Program.csproj index 335dc34dc6176..9645171477eac 100644 --- a/src/mono/sample/iOS/Program.csproj +++ b/src/mono/sample/iOS/Program.csproj @@ -31,14 +31,15 @@ - - diagnostics_tracing - + + + + From 88df373f09834ef5b387c4b5abe31372a837509a Mon Sep 17 00:00:00 2001 From: Jan Dupej Date: Fri, 14 Jul 2023 16:43:35 +0200 Subject: [PATCH 5/8] RuntimeComponents is manipulated through an ItemGroup. --- .../msbuild/apple/build/AppleBuild.targets | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/mono/msbuild/apple/build/AppleBuild.targets b/src/mono/msbuild/apple/build/AppleBuild.targets index 1b4704ba55ba7..2acde358838e2 100644 --- a/src/mono/msbuild/apple/build/AppleBuild.targets +++ b/src/mono/msbuild/apple/build/AppleBuild.targets @@ -88,24 +88,33 @@ - - + + + true + + + + - + - + - + - + + + + @(RuntimeComponentList) + - + From 8fb47b823de12609380be5952aca1d11b5e5fb8c Mon Sep 17 00:00:00 2001 From: Jan Dupej Date: Mon, 17 Jul 2023 12:31:16 +0200 Subject: [PATCH 6/8] Cleaned up commented old code. --- src/mono/sample/iOS/Program.cs | 1 - src/mono/sample/iOS/Program.csproj | 1 - 2 files changed, 2 deletions(-) diff --git a/src/mono/sample/iOS/Program.cs b/src/mono/sample/iOS/Program.cs index 023d1c4984e12..54cddc382d237 100644 --- a/src/mono/sample/iOS/Program.cs +++ b/src/mono/sample/iOS/Program.cs @@ -12,7 +12,6 @@ public static class Program // Defined in main.m [DllImport("__Internal")] unsafe private static extern void ios_set_text(byte* value); - //private static extern void ios_set_text(string value); [DllImport("__Internal")] unsafe private static extern void ios_register_button_click(delegate* unmanaged callback); diff --git a/src/mono/sample/iOS/Program.csproj b/src/mono/sample/iOS/Program.csproj index 9645171477eac..f7b0306ba23c1 100644 --- a/src/mono/sample/iOS/Program.csproj +++ b/src/mono/sample/iOS/Program.csproj @@ -39,7 +39,6 @@ - From 6d8f93948f3ea706223322fb75c761ea85e616d8 Mon Sep 17 00:00:00 2001 From: Jan Dupej Date: Mon, 24 Jul 2023 12:30:57 +0200 Subject: [PATCH 7/8] Reordered runtime components section. --- src/mono/msbuild/apple/build/AppleBuild.targets | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/mono/msbuild/apple/build/AppleBuild.targets b/src/mono/msbuild/apple/build/AppleBuild.targets index 2acde358838e2..56fd5373f0076 100644 --- a/src/mono/msbuild/apple/build/AppleBuild.targets +++ b/src/mono/msbuild/apple/build/AppleBuild.targets @@ -125,12 +125,8 @@ Condition="'$(RuntimeComponents)' != '' and '$(RuntimeComponents)' != '*'" Include="$(RuntimeComponents)" /> - <_RuntimeLibraries - Include="$(AppleBuildDir)\*-stub-static.a" /> - <_RuntimeLibraries - Include="$(AppleBuildDir)\*.a" - Exclude="$(AppleBuildDir)\*-static.a" /> - + <_RuntimeLibraries Include="$(AppleBuildDir)\*.a" Exclude="$(AppleBuildDir)\libmono-component-*.a" /> + <_RuntimeLibraries Include="$(AppleBuildDir)\libmono-component-*-stub-static.a" /> <_RuntimeLibraries Remove="$(AppleBuildDir)\libmono-component-%(_UsedComponents.Identity)-stub-static.a" /> <_RuntimeLibraries Include="$(AppleBuildDir)\libmono-component-%(_UsedComponents.Identity)-static.a" /> From 2dd6ac0c8e15a51259d7de7c63fbe1523bff27d8 Mon Sep 17 00:00:00 2001 From: Jan Dupej Date: Mon, 24 Jul 2023 12:53:01 +0200 Subject: [PATCH 8/8] Addressed more feedback. --- src/mono/msbuild/apple/build/AppleBuild.props | 2 +- src/mono/msbuild/apple/build/AppleBuild.targets | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/mono/msbuild/apple/build/AppleBuild.props b/src/mono/msbuild/apple/build/AppleBuild.props index d4191321c5978..a4782645ebd03 100644 --- a/src/mono/msbuild/apple/build/AppleBuild.props +++ b/src/mono/msbuild/apple/build/AppleBuild.props @@ -27,7 +27,7 @@ _BeforeAppleBuild; _AppleResolveReferences; _ScanAssembliesDecideLightweightMarshaler; - _ProcessRuntimeComponents; + $(_ProcessRuntimeComponentsForLibraryMode); _AppleAotCompile; _BuildNativeLibrary; _AppleGenerateAppBundle; diff --git a/src/mono/msbuild/apple/build/AppleBuild.targets b/src/mono/msbuild/apple/build/AppleBuild.targets index 56fd5373f0076..fb28a6a05a77d 100644 --- a/src/mono/msbuild/apple/build/AppleBuild.targets +++ b/src/mono/msbuild/apple/build/AppleBuild.targets @@ -4,7 +4,7 @@ true false - + <_ProcessRuntimeComponentsForLibraryMode Condition="'$(_IsLibraryMode)' == 'true'">_ProcessRuntimeComponentsForLibraryMode false @@ -114,8 +114,8 @@ - - + +