csharp-flutter/MyLib.Generated/MyLib.Generated.csproj

169 lines
7.2 KiB
XML

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<Optimize>true</Optimize>
<OutputType>Library</OutputType>
<NativeLib>Shared</NativeLib>
<SelfContained>true</SelfContained>
<TrimMode>Link</TrimMode>
<InvariantGlobalization>true</InvariantGlobalization>
<PublishAot>true</PublishAot>
<LangVersion>latest</LangVersion>
<PublishTrimmed>true</PublishTrimmed>
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
<EnablePreviewFeatures>true</EnablePreviewFeatures>
<Nullable>disable</Nullable>
</PropertyGroup>
<PropertyGroup>
<!--This is needed in order to build successfully Android binaries-->
<IsAndroid>$(RuntimeIdentifier.ToLower().StartsWith('android'))</IsAndroid>
<IsAndroid Condition="'$(IsAndroid)'=='false'">$(RuntimeIdentifier.ToLower().StartsWith('linux-bionic'))</IsAndroid>
<IsWindowsHost>$([MSBuild]::IsOSPlatform('Windows'))</IsWindowsHost>
<IsLinuxHost>$([MSBuild]::IsOSPlatform('Linux'))</IsLinuxHost>
<IsOSXHost>$([MSBuild]::IsOSPlatform('OSX'))</IsOSXHost>
</PropertyGroup>
<PropertyGroup>
<TrimUnusedDependencies>true</TrimUnusedDependencies>
<RootAllApplicationAssemblies>false</RootAllApplicationAssemblies>
<IlcGenerateCompleteTypeMetadata>true</IlcGenerateCompleteTypeMetadata>
<IlcGenerateStackTraceData>false</IlcGenerateStackTraceData>
<IlcTrimMetadata>true</IlcTrimMetadata>
<IlcOptimizationPreference>Speed</IlcOptimizationPreference>
<IlcFoldIdenticalMethodBodies>true</IlcFoldIdenticalMethodBodies>
</PropertyGroup>
<!--Following blocks are exclusive for Android building-->
<PropertyGroup Condition="$(IsAndroid) == 'true'">
<!--Use ndk-sample expected library name -->
<CppCompilerAndLinker Condition="$(IsWindowsHost) == 'true'">./android_fake_clang.cmd</CppCompilerAndLinker>
<CppCompilerAndLinker Condition="$(IsLinuxHost) == 'true'">./android_fake_clang.sh</CppCompilerAndLinker>
<CppCompilerAndLinker Condition="$(IsOSXHost) == 'true'">./android_fake_clang.command</CppCompilerAndLinker>
<NdkHost Condition="$(IsWindowsHost) == 'true'">windows-x86_64</NdkHost>
<NdkHost Condition="$(IsLinuxHost) == 'true'">linux-x86_64</NdkHost>
<NdkHost Condition="$(IsOSXHost) == 'true'">darwin-x86_64</NdkHost>
<ObjCopyName Condition="'$(ObjCopyName)' == ''">$(ANDROID_NDK_ROOT)/toolchains/llvm/prebuilt/$(NdkHost)/bin/llvm-objcopy</ObjCopyName>
<SysRoot Condition="'$(SysRoot)' == ''">$(ANDROID_NDK_ROOT)/toolchains/llvm/prebuilt/$(NdkHost)/sysroot</SysRoot>
<!--Hack for removing init and fini sections into the exports file-->
<ExportsPatch>'s/global: _init; _fini;/global: /g;'</ExportsPatch>
</PropertyGroup>
<ItemGroup Condition="$(IsAndroid) == 'true'">
<!--Hack for passing a valid target argument on NDK linker invocation-->
<LinkerArg Condition="$(RuntimeIdentifier.ToLower().EndsWith('-x64'))" Include="--target=x86_64-linux-android21" />
<LinkerArg Condition="$(RuntimeIdentifier.ToLower().EndsWith('-arm64'))" Include="--target=aarch64-linux-android21" />
</ItemGroup>
<ItemGroup Condition="$(IsAndroid) == 'true' And $(UseLibCSections) == 'true'">
<!--Hack for passing a valid target argument on NDK linker invocation-->
<LinkerArg Include="-Wl,--defsym,_init=__libc_init" />
<LinkerArg Include="-Wl,--defsym,_fini=__libc_fini" />
</ItemGroup>
<Target Name="RemoveSections" Condition="$(IsAndroid) == 'true' And $(RemoveSections) == 'true'" AfterTargets="IlcCompile" BeforeTargets="LinkNative">
<!--Reads as lines the generated exports file-->
<ReadLinesFromFile File="$(ExportsFile)">
<Output TaskParameter="Lines" PropertyName="ExportsLines" />
</ReadLinesFromFile>
<!--Gets a single text from the exports lines-->
<PropertyGroup>
<ExportsText Condition="$(ExportsLines) != ''">@(ExportsLines)</ExportsText>
</PropertyGroup>
<!--The sed tool is used as invalid lines remover-->
<Exec Command="sed -i -z $(ExportsPatch) $(ExportsFile)" />
</Target>
<PropertyGroup>
<MacOSMinVersion>13.0</MacOSMinVersion>
<iOSMinVersion>16.0</iOSMinVersion>
</PropertyGroup>
<!-- Set min macOS version -->
<Choose>
<When Condition="$(RuntimeIdentifier.Contains('osx'))">
<ItemGroup>
<LinkerArg Include="-mmacosx-version-min=$(MacOSMinVersion)" />
</ItemGroup>
</When>
</Choose>
<!-- Culture stuff for iOS Support -->
<Choose>
<When Condition="$(RuntimeIdentifier.Contains('ios'))">
<!-- If globalization is not required, you can enable this instead of providing an icudt.dat file on iOS -->
<!-- <PropertyGroup>
<InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup> -->
<!-- When this is set, an icudt.dat must be placed in the resulting bundle -->
<ItemGroup>
<RuntimeHostConfigurationOption Include="ICU_DAT_FILE_PATH" Value="icudt.dat" />
</ItemGroup>
</When>
</Choose>
<Choose>
<When Condition="$(RuntimeIdentifier.Contains('ios'))">
<ItemGroup>
<!-- Link to Swift on iOS (it's automatic when targeting macOS) -->
<LinkerArg Include="-L/usr/lib/swift" />
</ItemGroup>
</When>
</Choose>
<!-- TODO: Temporary workarounds for iOS/iOS Simulator support -->
<Choose>
<When Condition="$(RuntimeIdentifier.Contains('ios'))">
<PropertyGroup>
<PublishAotUsingRuntimePack>true</PublishAotUsingRuntimePack>
<_IsAppleMobileLibraryMode>false</_IsAppleMobileLibraryMode>
</PropertyGroup>
</When>
</Choose>
<Choose>
<When Condition="$(RuntimeIdentifier.Contains('iossimulator'))">
<ItemGroup>
<!-- TODO: Temporary workaround for iOS Simulator support -->
<LinkerArg Include="-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk" />
<!-- Set min iOS version -->
<LinkerArg Include="-mios-simulator-version-min=$(iOSMinVersion)" />
</ItemGroup>
</When>
</Choose>
<!-- TODO: Temporary workarounds for iOS support -->
<Choose>
<When Condition="$(RuntimeIdentifier.Contains('ios-'))">
<ItemGroup>
<!-- TODO: Temporary workaround for iOS support -->
<LinkerArg Include="-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk" />
<!-- Set min iOS version -->
<LinkerArg Include="-mios-version-min=$(iOSMinVersion)" />
</ItemGroup>
</When>
</Choose>
<!-- Strip Symbols in Release Builds -->
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<StripSymbols>true</StripSymbols>
</PropertyGroup>
<!-- Item Excludes -->
<PropertyGroup>
<DefaultItemExcludes>$(DefaultItemExcludes);.gitignore;*.sln.DotSettings;</DefaultItemExcludes>
</PropertyGroup>
<!-- Project References -->
<ItemGroup>
<ProjectReference Include="..\MyLib.Managed\MyLib.Managed.csproj" />
</ItemGroup>
</Project>