Clean up object dirs for Yasm'd files on Windows

This commit is contained in:
Niels Martin Hansen 2015-01-14 04:45:45 +01:00
parent 5bcfc81df5
commit 52d4955064

View file

@ -54,33 +54,69 @@
<WholeProgramOptimization>false</WholeProgramOptimization> <WholeProgramOptimization>false</WholeProgramOptimization>
<InputRelativeSourceDir>$(FfmpegSrcDir)</InputRelativeSourceDir> <InputRelativeSourceDir>$(FfmpegSrcDir)</InputRelativeSourceDir>
</ClCompile> </ClCompile>
<Yasm>
<InputRelativeSourceDir>$(FfmpegSrcDir)\</InputRelativeSourceDir>
</Yasm>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<PropertyGroup> <PropertyGroup>
<BuildCompileTargets> <BuildCompileTargets>
YasmAssemble; _YasmAssemble;
$(BuildCompileTargets) $(BuildCompileTargets)
</BuildCompileTargets> </BuildCompileTargets>
</PropertyGroup> </PropertyGroup>
<Target
Name="_YasmAssemble"
DependsOnTargets="ComputeYasmRelativeObjectDir;YasmCreateOutputDir;YasmAssemble"
/>
<!-- See standard-outdirs.props for explanation of the logic here -->
<Target
Name="ComputeYasmRelativeObjectDir"
BeforeTargets="YasmAssemble"
Inputs="@(Yasm)"
Outputs="%(InputRelativeSourceDir)|%(RelativeDir)"
>
<PropertyGroup>
<InputRelativeDir>%(Yasm.RelativeDir)</InputRelativeDir>
<InputRelativeDir Condition="'%(Yasm.InputRelativeSourceDir)' != ''">$(InputRelativeDir.Replace("%(Yasm.InputRelativeSourceDir)",""))</InputRelativeDir>
<InputRelativeSourceDir>%(Yasm.InputRelativeSourceDir)</InputRelativeSourceDir>
<InputRelativeSourceDir Condition="!HasTrailingSlash('$(InputRelativeSourceDir)')">$(InputRelativeSourceDir)\</InputRelativeSourceDir>
<InputRelativeDir>$(InputRelativeDir.Replace("$(InputRelativeSourceDir)",""))</InputRelativeDir>
</PropertyGroup>
<ItemGroup>
<Yasm>
<OutputDir>$(AegisubObjectDir)$(InputRelativeDir)</OutputDir>
</Yasm>
</ItemGroup>
</Target>
<Target
Name="YasmCreateOutputDir"
Inputs="@(Yasm)"
Outputs="%(Yasm.OutputDir)"
>
<MakeDir
Directories="%(Yasm.OutputDir)"
/>
</Target>
<Target <Target
Name="YasmAssemble" Name="YasmAssemble"
Inputs="@(Yasm)" Inputs="@(Yasm)"
Outputs="$(AegisubObjectDir)\%(Yasm.Directory)%(Yasm.Filename).obj" Outputs="%(Yasm.OutputDir)%(Yasm.Filename).obj"
> >
<PropertyGroup> <PropertyGroup>
<YasmInclude>-I. -I$(MSBuildThisFileDirectory) -I$(FfmpegSrcDir) -I%(Yasm.RootDir)%(Yasm.Directory)</YasmInclude> <YasmInclude>-I. -I$(MSBuildThisFileDirectory) -I$(FfmpegSrcDir) -I%(Yasm.RootDir)%(Yasm.Directory)</YasmInclude>
<YasmOutName>@(Yasm -> '%(Directory)%(Filename)').obj</YasmOutName> <YasmOutName>@(Yasm -> '%(OutputDir)%(Filename)').obj</YasmOutName>
<YasmConfig Condition="'$(Platform)'=='Win32'">-m x86 -DPREFIX -Pconfig-x86.asm</YasmConfig> <YasmConfig Condition="'$(Platform)'=='Win32'">-m x86 -DPREFIX -Pconfig-x86.asm</YasmConfig>
<YasmConfig Condition="'$(Platform)'=='x64'">-m amd64 -Pconfig-x64.asm</YasmConfig> <YasmConfig Condition="'$(Platform)'=='x64'">-m amd64 -Pconfig-x64.asm</YasmConfig>
</PropertyGroup> </PropertyGroup>
<Exec <Exec
Command="echo %(Yasm.Identity) &amp;&amp; yasm -f win32 $(YasmConfig) $(YasmInclude) -o $(YasmOutName) %(Yasm.FullPath)" Command="echo $(InputRelativeDir)%(Yasm.Filename)%(Yasm.Extension) &amp;&amp; yasm -f win32 $(YasmConfig) $(YasmInclude) -o $(YasmOutName) %(Yasm.FullPath)"
WorkingDirectory="$(AegisubObjectDir)" WorkingDirectory="$(AegisubObjectDir)"
/> />
<ItemGroup> <ItemGroup>
<Link Include="$(AegisubObjectDir)$(YasmOutName)" /> <Link Include="$(YasmOutName)" />
<Lib Include="$(AegisubObjectDir)$(YasmOutName)" /> <Lib Include="$(YasmOutName)" />
<ImpLib Include="$(AegisubObjectDir)$(YasmOutName)" /> <ImpLib Include="$(YasmOutName)" />
</ItemGroup> </ItemGroup>
</Target> </Target>