forked from mia/Aegisub
102 lines
3.2 KiB
Text
102 lines
3.2 KiB
Text
|
<?xml version="1.0" encoding="utf-8"?>
|
||
|
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||
|
|
||
|
<PropertyGroup>
|
||
|
<_PropertySheetDisplayName>Yasm compile targets</_PropertySheetDisplayName>
|
||
|
</PropertyGroup>
|
||
|
|
||
|
<PropertyGroup>
|
||
|
<BuildCompileTargets>
|
||
|
_YasmAssemble;
|
||
|
$(BuildCompileTargets)
|
||
|
</BuildCompileTargets>
|
||
|
</PropertyGroup>
|
||
|
<ItemDefinitionGroup>
|
||
|
<Yasm>
|
||
|
<InputRelativeSourceDir></InputRelativeSourceDir>
|
||
|
<Include></Include>
|
||
|
<ExcludeFromBuild>false</ExcludeFromBuild>
|
||
|
<Config Condition="'$(Platform)'=='Win32'">-m x86</Config>
|
||
|
<Config Condition="'$(Platform)'=='x64'">-m amd64</Config>
|
||
|
</Yasm>
|
||
|
</ItemDefinitionGroup>
|
||
|
|
||
|
<Target
|
||
|
Name="_YasmAssemble"
|
||
|
DependsOnTargets="ComputeYasmOutputs;YasmAssemble"
|
||
|
Condition="'@(Yasm)' != ''"
|
||
|
/>
|
||
|
|
||
|
<!-- See standard-outdirs.props for explanation of the logic here -->
|
||
|
<Target
|
||
|
Name="ComputeYasmOutputs"
|
||
|
Inputs="@(Yasm)"
|
||
|
Outputs="%(InputRelativeSourceDir)|%(RelativeDir)"
|
||
|
>
|
||
|
<CalculateOutputDir
|
||
|
Items="@(Yasm)"
|
||
|
SourceDir="%(InputRelativeSourceDir)"
|
||
|
DestinationDir=".\"
|
||
|
Condition="'%(Yasm.InputRelativeSourceDir)' != ''"
|
||
|
>
|
||
|
<Output ItemName="_Yasm" TaskParameter="Outputs" />
|
||
|
</CalculateOutputDir>
|
||
|
<ItemGroup>
|
||
|
<!-- If the items don't have the InputRelativeSourceDir metadata, still
|
||
|
copy them to _Yasm and add an OutputDir metadata to them. -->
|
||
|
<_Yasm Include="@(Yasm)" Condition="'%(Yasm.InputRelativeSourceDir)' == ''">
|
||
|
<OutputDir></OutputDir>
|
||
|
</_Yasm>
|
||
|
<!-- Remove items marked for exclusion (e.g. due to platform) -->
|
||
|
<_Yasm Remove="@(_Yasm->WithMetadataValue('ExcludeFromBuild','true'))" />
|
||
|
</ItemGroup>
|
||
|
</Target>
|
||
|
<Target
|
||
|
Name="ComputeYasmFinalOutputDir"
|
||
|
Inputs="@(_Yasm)"
|
||
|
Outputs="%(OutputDir)|%(RelativeDir)"
|
||
|
>
|
||
|
<ItemGroup>
|
||
|
<_Yasm>
|
||
|
<Include>%(Include) -I%(RootDir)%(Directory)</Include>
|
||
|
<OutputDir Condition="'%(OutputDir)' == '.\'"></OutputDir>
|
||
|
<RelativeOutputDir>%(OutputDir)</RelativeOutputDir>
|
||
|
<OutputDir>$(AegisubObjectDir)%(OutputDir)</OutputDir>
|
||
|
</_Yasm>
|
||
|
</ItemGroup>
|
||
|
</Target>
|
||
|
|
||
|
<Target
|
||
|
Name="YasmCreateOutputDir"
|
||
|
DependsOnTargets="ComputeYasmFinalOutputDir"
|
||
|
Inputs="@(_Yasm)"
|
||
|
Outputs="@(_Yasm->'%(OutputDir)')"
|
||
|
>
|
||
|
<MakeDir
|
||
|
Directories="@(_Yasm->'%(OutputDir)')"
|
||
|
/>
|
||
|
</Target>
|
||
|
|
||
|
<Target
|
||
|
Name="YasmAssemble"
|
||
|
DependsOnTargets="ComputeYasmFinalOutputDir;YasmCreateOutputDir"
|
||
|
Inputs="@(_Yasm)"
|
||
|
Outputs="%(_Yasm.OutputDir)%(_Yasm.Filename).obj"
|
||
|
>
|
||
|
<Message
|
||
|
Importance="High"
|
||
|
Text="%(_Yasm.RelativeOutputDir)%(_Yasm.Filename)%(_Yasm.Extension)"
|
||
|
/>
|
||
|
<Exec
|
||
|
Command="Yasm -f win32 %(_Yasm.Config) %(_Yasm.Include) -o "%(_Yasm.OutputDir)%(_Yasm.Filename).obj" "%(_Yasm.FullPath)""
|
||
|
WorkingDirectory="%(_Yasm.OutputDir)"
|
||
|
/>
|
||
|
<ItemGroup>
|
||
|
<Link Include="%(_Yasm.OutputDir)%(_Yasm.Filename).obj" />
|
||
|
<Lib Include="%(_Yasm.OutputDir)%(_Yasm.Filename).obj" />
|
||
|
<ImpLib Include="%(_Yasm.OutputDir)%(_Yasm.Filename).obj" />
|
||
|
</ItemGroup>
|
||
|
</Target>
|
||
|
|
||
|
</Project>
|