Sharpmake.Platforms/Sharpmake.CommonPlatforms/Linux/LinuxPlatform.Vcxproj.Template.cs (149 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 Linux
{
public sealed partial class LinuxPlatform
{
private const string _projectStartPlatformConditional =
@" <PropertyGroup Label=""Globals"" Condition=""'$(Platform)'=='[platformName]' and ([configurationsConditional])"">
";
private const string _projectConfigurationsCompileTemplate =
@" <ClCompile>
<PrecompiledHeader>[options.UsePrecompiledHeader]</PrecompiledHeader>
<PreprocessorDefinitions>[EscapeXML:options.PreprocessorDefinitions];%(PreprocessorDefinitions);</PreprocessorDefinitions>
<ForcedIncludeFiles>[options.ForcedIncludeFiles]</ForcedIncludeFiles>
<DebugInformationFormat>[options.DebugInformationFormat]</DebugInformationFormat>
<Warnings>[options.Warnings]</Warnings>
<ExtraWarnings>[options.ExtraWarnings]</ExtraWarnings>
<WarningsAsErrors>[options.WarningsAsErrors]</WarningsAsErrors>
<MultiProcessorCompilation>[options.MultiProcessorCompilation]</MultiProcessorCompilation>
<ProcessorNumber>[options.ProcessorNumber]</ProcessorNumber>
<Distributable>[options.Distributable]</Distributable>
<OptimizationLevel>[options.OptimizationLevel]</OptimizationLevel>
<PositionIndependentCode>[options.PositionIndependentCode]</PositionIndependentCode>
<FastMath>[options.FastMath]</FastMath>
<NoStrictAliasing>[options.NoStrictAliasing]</NoStrictAliasing>
<UnrollLoops>[options.UnrollLoops]</UnrollLoops>
<AnsiCompliance>[options.AnsiCompliance]</AnsiCompliance>
<CharUnsigned>[options.CharUnsigned]</CharUnsigned>
<MsExtensions>[options.MsExtensions]</MsExtensions>
<RuntimeTypeInfo>[options.RuntimeTypeInfo]</RuntimeTypeInfo>
<AdditionalIncludeDirectories>[options.AdditionalIncludeDirectories]</AdditionalIncludeDirectories>
<AdditionalOptions>[options.AllAdditionalCompilerOptions] %(AdditionalOptions)</AdditionalOptions>
<PrecompiledHeaderFile>[options.PrecompiledHeaderThrough]</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile>[options.PrecompiledHeaderFile]</PrecompiledHeaderOutputFile>
<CompileAs>Default</CompileAs>
<LinkTimeOptimization>[options.LinkTimeOptimization]</LinkTimeOptimization>
<InlinedScopes>[options.InlineFunctionDebugInformation]</InlinedScopes>
</ClCompile>
";
private const string _projectConfigurationsStaticLinkTemplate =
@" <Link>
<GenerateDebugInformation>[options.LinkerGenerateDebugInformation]</GenerateDebugInformation>
<EnableCOMDATFolding>[options.EnableCOMDATFolding]</EnableCOMDATFolding>
<OptimizeReferences>[options.OptimizeReferences]</OptimizeReferences>
</Link>
<Lib>
<TargetMachine>[options.TargetMachine]</TargetMachine>
<SubSystem/>
<AdditionalOptions>[options.AdditionalLibrarianOptions]</AdditionalOptions>
<OutputFile>[options.OutputFile]</OutputFile>
<ThinArchive>[options.UseThinArchives]</ThinArchive>
</Lib>
";
private const string _projectConfigurationsLinkTemplate =
@" <Link>
<OutputFile>[options.OutputFile]</OutputFile>
<AdditionalLibraryDirectories>[options.AdditionalLibraryDirectories]</AdditionalLibraryDirectories>
<AdditionalOptions>[options.AdditionalLinkerOptions] %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>[options.AdditionalDependencies];%(AdditionalDependencies)</AdditionalDependencies>
<ImportLibrary></ImportLibrary>
<GenerateMapFile>[options.GenerateMapFile]</GenerateMapFile>
<MapFileName>[options.MapFileName]</MapFileName>
<EditAndContinue>[options.EditAndContinue]</EditAndContinue>
<InfoStripping>[options.InfoStripping]</InfoStripping>
<DataStripping>[options.DataStripping]</DataStripping>
<WholeArchiveBegin>[options.WholeArchive]</WholeArchiveBegin>
<DuplicateStripping>[options.DuplicateStripping]</DuplicateStripping>
<Addressing>[options.Addressing]</Addressing>
</Link>
";
private const string _userFileConfigurationGeneralTemplate =
@" <LocalDebuggerCommand>[conf.VcxprojUserFile.LocalDebuggerCommand]</LocalDebuggerCommand>
<LocalDebuggerCommandArguments>[conf.VcxprojUserFile.LocalDebuggerCommandArguments]</LocalDebuggerCommandArguments>
<LocalDebuggerWorkingDirectory>[conf.VcxprojUserFile.LocalDebuggerWorkingDirectory]</LocalDebuggerWorkingDirectory>
<LocalDebuggerAttach>[conf.VcxprojUserFile.LocalDebuggerAttachString]</LocalDebuggerAttach>
<PreLaunchCommand>[conf.VcxprojUserFile.PreLaunchCommand]</PreLaunchCommand>
<RemoteDebuggerCommand>[conf.VcxprojUserFile.RemoteDebuggerCommand]</RemoteDebuggerCommand>
<RemoteDebuggerCommandArguments>[conf.VcxprojUserFile.RemoteDebuggerCommandArguments]</RemoteDebuggerCommandArguments>
<RemoteDebuggingMode>[conf.VcxprojUserFile.RemoteDebuggingMode]</RemoteDebuggingMode>
<RemoteDebuggerWorkingDirectory>[conf.VcxprojUserFile.RemoteDebuggerWorkingDirectory]</RemoteDebuggerWorkingDirectory>
<AdditionalDebuggerCommands>[conf.AdditionalDebuggerCommands]</AdditionalDebuggerCommands>
<DebuggerFlavor>LinuxDebugger</DebuggerFlavor>
";
private const string _projectConfigurationsGeneral2 =
@" <PropertyGroup Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"">
<TargetName>[options.OutputFileName]</TargetName>
<OutDir>[options.OutputDirectoryRemote]</OutDir>
<IntDir>[options.IntermediateDirectoryRemote]</IntDir>
<TargetExt>[options.OutputFileExtension]</TargetExt>
<GenerateManifest>[options.GenerateManifest]</GenerateManifest>
<PostBuildEventUseInBuild>[options.PostBuildEventEnable]</PostBuildEventUseInBuild>
<PreBuildEventUseInBuild>[options.PreBuildEventEnable]</PreBuildEventUseInBuild>
<PreLinkEventUseInBuild>[options.PreLinkEventEnable]</PreLinkEventUseInBuild>
<LinkIncremental>[options.LinkIncremental]</LinkIncremental>
<OutputFile>[options.OutputFile]</OutputFile>
<CustomBuildBeforeTargets>[options.CustomBuildStepBeforeTargets]</CustomBuildBeforeTargets>
<CustomBuildAfterTargets>[options.CustomBuildStepAfterTargets]</CustomBuildAfterTargets>
<LocalDebuggerWorkingDirectory>$(TargetDir)</LocalDebuggerWorkingDirectory>
<RemoteCppCompileToolExe>[options.RemoteCppCompileToolExe]</RemoteCppCompileToolExe>
<RemoteCCompileToolExe>[options.RemoteCCompileToolExe]</RemoteCCompileToolExe>
<RemoteLdToolExe>[options.RemoteLdToolExe]</RemoteLdToolExe>
<LocalRemoteCopySources>[options.CopySources]</LocalRemoteCopySources>
<RemoteLinkLocalCopyOutput>false</RemoteLinkLocalCopyOutput>
<RemoteRootDir></RemoteRootDir>
<RemoteProjectDir>[options.ProjectDirectory]</RemoteProjectDir>
<RemoteBuildOutputs>[options.RemoteBuildOutputs]</RemoteBuildOutputs>
</PropertyGroup>
";
private const string _projectConfigurationsFastBuildMakefile =
@" <PropertyGroup Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"">
<TargetName>[options.OutputFileName]</TargetName>
<LocalDebuggerWorkingDirectory>$(TargetDir)</LocalDebuggerWorkingDirectory>
<RemoteRootDir>
</RemoteRootDir>
<RemoteProjectDir>[options.ProjectDirectory]</RemoteProjectDir>
<RemoteBuildOutputs>[options.RemoteBuildOutputs]</RemoteBuildOutputs>
<OutDir>[options.OutputDirectoryRemote]</OutDir>
<IntDir>[options.IntermediateDirectoryRemote]</IntDir>
<BuildCommandLine>cd [fastBuildWorkingDirectory]
[conf.FastBuildCustomActionsBeforeBuildCommand]
[fastBuildMakeCommandBuild]</BuildCommandLine>
<ReBuildCommandLine>cd [fastBuildWorkingDirectory]
[conf.FastBuildCustomActionsBeforeBuildCommand]
[fastBuildMakeCommandRebuild]</ReBuildCommandLine>
<LocalRemoteCopySources>[options.CopySources]</LocalRemoteCopySources>
<CleanCommandLine>del ""[options.IntermediateDirectory]\*unity*.cpp"" >NUL 2>NUL
del ""[options.IntermediateDirectory]\*.obj"" >NUL 2>NUL
del ""[options.IntermediateDirectory]\*.a"" >NUL 2>NUL
del ""[options.IntermediateDirectory]\*.lib"" >NUL 2>NUL
del ""[options.OutputDirectory]\[conf.TargetFileFullName].exe"" >NUL 2>NUL
del ""[options.OutputDirectory]\[conf.TargetFileFullName].elf"" >NUL 2>NUL
del ""[options.OutputDirectory]\[conf.TargetFileFullName].exp"" >NUL 2>NUL
del ""[options.OutputDirectory]\[conf.TargetFileFullName].ilk"" >NUL 2>NUL
del ""[options.OutputDirectory]\[conf.TargetFileFullName].lib"" >NUL 2>NUL
del ""[options.OutputDirectory]\[conf.TargetFileFullName].pdb"" >NUL 2>NUL
del ""[options.OutputDirectory]\[conf.TargetFileFullName]"" >NUL 2>NUL</CleanCommandLine>
<NMakeIncludeSearchPath>$(NMakeIncludeSearchPath);[options.AdditionalPlatformIncludeDirectories]</NMakeIncludeSearchPath>
</PropertyGroup>
<ItemDefinitionGroup Condition=""'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"">
<ClCompile>
<CLanguageStandard>[options.CLanguageStandard]</CLanguageStandard>
<CppLanguageStandard>[options.CppLanguageStandard]</CppLanguageStandard>
</ClCompile>
</ItemDefinitionGroup>
";
private const string _projectDescriptionPlatformSpecific =
@" <ApplicationType>[applicationType]</ApplicationType>
<ApplicationTypeRevision>[applicationTypeRevision]</ApplicationTypeRevision>
<TargetLinuxPlatform>[targetLinuxPlatform]</TargetLinuxPlatform>
";
}
}
}