Sharpmake.Platforms/Sharpmake.CommonPlatforms/Android/AndroidPlatformAgde.Vcxproj.Template.cs (123 lines of code) (raw):
// Copyright (c) Ubisoft. All Rights Reserved.
// Licensed under the Apache 2.0 License. See LICENSE.md in the project root for license information.
namespace Sharpmake
{
public static partial class Android
{
public sealed partial class AndroidAgdePlatform
{
private const string _projectStartPlatformConditional =
@" <PropertyGroup Label=""Globals"" Condition=""'$(Platform)'=='Android-arm64-v8a' Or '$(Platform)'=='Android-x86_64' Or '$(Platform)'=='Android-armeabi-v7a' Or '$(Platform)'=='Android-x86'"">
";
private const string _projectDescriptionPlatformSpecific =
@" <AndroidNdkDirectory>[ndkRoot]</AndroidNdkDirectory>
<AndroidNdkVersion>[androidNdkVersion]</AndroidNdkVersion>
<AndroidSdk>[androidHome]</AndroidSdk>
<AndroidMinSdkVersion>[androidMinSdkVersion]</AndroidMinSdkVersion>
<VS_JavaHome>[javaHome]</VS_JavaHome>
<PlatformToolset>Clang</PlatformToolset>
";
private const string _projectConfigurationsGeneralTemplate =
@" <PropertyGroup Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"" Label=""Configuration"">
<ConfigurationType>[options.ConfigurationType]</ConfigurationType>
<UseDebugLibraries>[options.UseDebugLibraries]</UseDebugLibraries>
<PlatformToolset>[options.PlatformToolset]</PlatformToolset>
<UseOfStl>[options.UseOfStl]</UseOfStl>
<ThumbMode>[options.ThumbMode]</ThumbMode>
<LinkTimeOptimization>[options.LinkTimeOptimization]</LinkTimeOptimization>
<ClangLinkType>[options.ClangLinkType]</ClangLinkType>
<CppLanguageStandard>[options.CppLanguageStandard]</CppLanguageStandard>
<CLanguageStandard>[options.CLanguageStandard]</CLanguageStandard>
<AndroidApkLocation>[options.AndroidApkLocation]</AndroidApkLocation>
<AndroidPreApkInstallCommands>[options.AndroidPreApkInstallCommands]</AndroidPreApkInstallCommands>
<AndroidPostApkInstallCommands>[options.AndroidPostApkInstallCommands]</AndroidPostApkInstallCommands>
</PropertyGroup>
";
// The output directory is converted to a rooted path by prefixing it with $(ProjectDir) to work around
// an issue with VS Android build scripts. When a project dependency has its project folder not at the
// same folder level as the AndroidPackageProject, VS can't locate its output properly using its relative path.
private const string _projectConfigurationsGeneral2Template =
@" <PropertyGroup Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"">
<TargetName>[options.OutputFileName]</TargetName>
<OutDir>$(ProjectDir)[options.OutputDirectory]\</OutDir>
<IntDir>[options.IntermediateDirectory]\</IntDir>
<TargetExt>[options.OutputFileExtension]</TargetExt>
<PostBuildEventUseInBuild>[options.PostBuildEventEnable]</PostBuildEventUseInBuild>
<PreBuildEventUseInBuild>[options.PreBuildEventEnable]</PreBuildEventUseInBuild>
<PreLinkEventUseInBuild>[options.PreLinkEventEnable]</PreLinkEventUseInBuild>
<OutputFile>[options.OutputFile]</OutputFile>
<CustomBuildBeforeTargets>[options.CustomBuildStepBeforeTargets]</CustomBuildBeforeTargets>
<CustomBuildAfterTargets>[options.CustomBuildStepAfterTargets]</CustomBuildAfterTargets>
<ExecutablePath>[options.ExecutablePath]</ExecutablePath>
<IncludePath>[options.IncludePath]</IncludePath>
<LibraryPath>[options.LibraryPath]</LibraryPath>
<ExcludePath>[options.ExcludePath]</ExcludePath>
<NativeBuildBackend>[options.NativeBuildBackend]</NativeBuildBackend>
<AndroidEnablePackaging>[options.AndroidEnablePackaging]</AndroidEnablePackaging>
<SkipAndroidPackaging>[options.SkipAndroidPackaging]</SkipAndroidPackaging>
<AndroidApplicationModule>[options.AndroidApplicationModule]</AndroidApplicationModule>
<AndroidGradleBuildDir>[options.AndroidGradleBuildDir]</AndroidGradleBuildDir>
<AndroidGradleBuildOutputDir>[options.AndroidGradleBuildIntermediateDir]</AndroidGradleBuildOutputDir>
<AndroidExtraGradleArgs>[options.AndroidExtraGradleArgs]</AndroidExtraGradleArgs>
<AndroidApkName>[options.AndroidApkName]</AndroidApkName>
<AndroidGradlePackageOutputName>[options.AndroidGradlePackageOutputName]</AndroidGradlePackageOutputName>
</PropertyGroup>
";
private const string _projectConfigurationsFastBuildMakefile =
@" <PropertyGroup Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"">
<AndroidApkName>[options.AndroidApkName]</AndroidApkName>
</PropertyGroup>
";
private const string _projectConfigurationsCompileTemplate =
@" <ClCompile>
<PrecompiledHeader>[options.UsePrecompiledHeader]</PrecompiledHeader>
<WarningLevel>[options.WarningLevel]</WarningLevel>
<Optimization>[options.Optimization]</Optimization>
<PreprocessorDefinitions>[EscapeXML:options.PreprocessorDefinitions];%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>[options.AdditionalIncludeDirectories];%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<ClangDebugInformationFormat>[options.ClangDebugInformationFormat]</ClangDebugInformationFormat>
<LimitDebugInfo>[options.LimitDebugInfo]</LimitDebugInfo>
<FloatABI>[options.FloatABI]</FloatABI>
<TreatWarningAsError>[options.TreatWarningAsError]</TreatWarningAsError>
<OmitFramePointers>[options.OmitFramePointers]</OmitFramePointers>
<UndefineAllPreprocessorDefinitions>false</UndefineAllPreprocessorDefinitions>
<ExceptionHandling>[options.ExceptionHandling]</ExceptionHandling>
<StackProtectionLevel>[options.StackProtectionLevel]</StackProtectionLevel>
<FunctionLevelLinking>[options.EnableFunctionLevelLinking]</FunctionLevelLinking>
<DataLevelLinking>[options.EnableDataLevelLinking]</DataLevelLinking>
<RuntimeTypeInfo>[options.RuntimeTypeInfo]</RuntimeTypeInfo>
<AssemblerOutput>NoListing</AssemblerOutput>
<CompileAs>Default</CompileAs>
<UndefinePreprocessorDefinitions>[options.UndefinePreprocessorDefinitions]</UndefinePreprocessorDefinitions>
<AdditionalOptions>[options.AllAdditionalCompilerOptions]</AdditionalOptions>
<PrecompiledHeaderFile>[options.PrecompiledHeaderThrough]</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFileDirectory>[options.PrecompiledHeaderOutputFileDirectory]</PrecompiledHeaderOutputFileDirectory>
<ShowIncludes>[options.ShowIncludes]</ShowIncludes>
<ForcedIncludeFiles>[options.ForcedIncludeFiles]</ForcedIncludeFiles>
<UnwindTables>[options.UnwindTables]</UnwindTables>
<AddressSignificanceTable>[options.AddressSignificanceTable]</AddressSignificanceTable>
<ClangDiagnosticsFormat>[options.ClangDiagnosticsFormat]</ClangDiagnosticsFormat>
<PositionIndependentCode>[options.PositionIndependentCode]</PositionIndependentCode>
</ClCompile>
";
private const string _projectConfigurationsSharedLinkTemplate =
@" <Link>
<DebuggerSymbolInformation>[options.DebuggerSymbolInformation]</DebuggerSymbolInformation>
<OutputFile>[options.OutputFile]</OutputFile>
<AdditionalLibraryDirectories>[options.AdditionalLibraryDirectories];%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>[options.AdditionalLinkerOptions]</AdditionalOptions>
<AdditionalDependencies>[options.AdditionalDependencies];%(AdditionalDependencies);</AdditionalDependencies>
<IgnoreSpecificDefaultLibraries>[options.IgnoreDefaultLibraryNames]</IgnoreSpecificDefaultLibraries>
<GenerateMapFile>[options.MapFileName]</GenerateMapFile>
<IncrementalLink>[options.IncrementalLink]</IncrementalLink>
<FunctionBinding>[options.FunctionBinding]</FunctionBinding>
<NoExecStackRequired>[options.NoExecStackRequired]</NoExecStackRequired>
<UnresolvedSymbolReferences>[options.UnresolvedSymbolReferences]</UnresolvedSymbolReferences>
<Relocation>[options.Relocation]</Relocation>
</Link>
";
private const string _projectConfigurationsStaticLinkTemplate =
@" <Lib>
<AdditionalOptions>[options.AdditionalLibrarianOptions]</AdditionalOptions>
<OutputFile>[options.OutputFile]</OutputFile>
<NoWarnOnCreate>true</NoWarnOnCreate>
</Lib>
";
}
}
}