diff options
author | Brian Gladman <brg@gladman.plus.com> | 2018-09-27 18:34:45 +0100 |
---|---|---|
committer | Brian Gladman <brg@gladman.plus.com> | 2018-09-27 18:34:45 +0100 |
commit | 627e1c29a425af7791ae6fe8a7b4d3815e3398e0 (patch) | |
tree | 27b21b0350354f288d49401601041fac559ee745 | |
parent | e256985c4929f4e550d8f70cad5fb936f81b7b06 (diff) | |
download | yasm-627e1c29a425af7791ae6fe8a7b4d3815e3398e0.tar.gz |
Update the files for integrating YASM into Visual Studio 2017
-rw-r--r-- | Mkfiles/vc15/vsyasm.props | 6 | ||||
-rw-r--r-- | Mkfiles/vc15/vsyasm.targets | 118 |
2 files changed, 63 insertions, 61 deletions
diff --git a/Mkfiles/vc15/vsyasm.props b/Mkfiles/vc15/vsyasm.props index 80b93c7e..889097fa 100644 --- a/Mkfiles/vc15/vsyasm.props +++ b/Mkfiles/vc15/vsyasm.props @@ -10,17 +10,17 @@ Condition="'$(ConfigurationType)' != 'Makefile'">_SelectedFiles;$(YASMDependsOn)</YASMDependsOn> </PropertyGroup> <PropertyGroup> - <YasmPath Condition= "'$(YASMPATH)' == ''">$(VCInstallDir)bin\</YasmPath> + <YasmPath Condition= "'$(YASMPATH)' == ''">C:\Program Files\yasm\</YasmPath> </PropertyGroup> <ItemDefinitionGroup> <YASM> <Debug>False</Debug> - <ObjectFile>$(IntDir)</ObjectFile> + <ObjectFile>$(IntDir)%(FileName).obj</ObjectFile> <PreProc>0</PreProc> <Parser>0</Parser> <CommandLineTemplate>"$(YasmPath)"vsyasm.exe -Xvc -f $(Platform) [AllOptions] [AdditionalOptions] [Inputs]</CommandLineTemplate> <Outputs>%(ObjectFile)</Outputs> - <ExecutionDescription>Assembling %(Filename)%(Extension)</ExecutionDescription> + <ExecutionDescription>Assembling %(Filename)%(Extension) ==> $(IntDir)%(FileName).obj</ExecutionDescription> <ShowOnlyRuleProperties>false</ShowOnlyRuleProperties> </YASM> </ItemDefinitionGroup> diff --git a/Mkfiles/vc15/vsyasm.targets b/Mkfiles/vc15/vsyasm.targets index 3c084119..c62d6626 100644 --- a/Mkfiles/vc15/vsyasm.targets +++ b/Mkfiles/vc15/vsyasm.targets @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> <PropertyPageSchema Include="$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml" /> @@ -8,40 +9,75 @@ <Targets>_YASM</Targets> </AvailableItemName> </ItemGroup> + + <PropertyGroup> + <ComputeLinkInputsTargets> + $(ComputeLinkInputsTargets); + ComputeYASMOutput; + </ComputeLinkInputsTargets> + <ComputeLibInputsTargets> + $(ComputeLibInputsTargets); + ComputeYASMOutput; + </ComputeLibInputsTargets> + </PropertyGroup> + <UsingTask TaskName="YASM" TaskFactory="XamlTaskFactory" AssemblyName="Microsoft.Build.Tasks.v4.0"> <Task>$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml</Task> </UsingTask> + + <Target Name="_WriteYASMTlogs" + Condition="'@(YASM)' != '' and '@(SelectedFiles)' == ''"> + + <ItemGroup> + <_YASMReadTlog + Include="^%(YASM.FullPath);%(YASM.AdditionalDependencies)" + Condition="'%(YASM.ExcludedFromBuild)' != 'true' and '%(YASM.ObjectFile)' != ''"/> + <_YASMWriteTlog + Include="^%(YASM.FullPath);'$(MSBuildProjectDirectory)%(YASM.ObjectFile)'" + Condition="'%(YASM.ExcludedFromBuild)' != 'true' and '%(YASM.ObjectFile)' != ''"/> + </ItemGroup> + + <WriteLinesToFile + Condition="'@(_YASMReadTlog)' != ''" + File="$(TLogLocation)YASM.read.1u.tlog" + Lines="@(_YASMReadTlog->MetaData('Identity')->ToUpperInvariant());" + Overwrite="true" + Encoding="Unicode"/> + + <WriteLinesToFile + Condition="'@(_YASMWriteTlog)' != ''" + File="$(TLogLocation)YASM.write.1u.tlog" + Lines="@(_YASMWriteTlog->MetaData('Identity')->ToUpperInvariant());" + Overwrite="true" + Encoding="Unicode"/> + + <ItemGroup> + <_MasmReadTlog Remove="@(_MasmReadTlog)" /> + <_MasmWriteTlog Remove="@(_MasmWriteTlog)" /> + </ItemGroup> + + </Target> + <Target Name="_YASM" BeforeTargets="$(YASMBeforeTargets)" AfterTargets="$(YASMAfterTargets)" Condition="'@(YASM)' != ''" - DependsOnTargets="$(YASMDependsOn);ComputeYASMOutput" - Outputs="@(YASM->'%(ObjectFile)')" - Inputs="@(YASM);%(YASM.AdditionalDependencies);$(MSBuildProjectFile)"> - <ItemGroup - Condition="'@(SelectedFiles)' != ''"> - <YASM - Remove="@(YASM)" - Condition="'%(Identity)' != '@(SelectedFiles)'" /> - </ItemGroup> - <ItemGroup> - <YASM_tlog - Include="%(YASM.ObjectFile)" - Condition="'%(YASM.ObjectFile)' != '' and '%(YASM.ExcludedFromBuild)' != 'true'"> - <Source>@(YASM, '|')</Source> - </YASM_tlog> + Inputs="%(YASM.Identity);%(YASM.AdditionalDependencies);$(MSBuildProjectFile)" + Outputs="%(YASM.ObjectFile)" + DependsOnTargets="PrepareForBuild;_WriteYasmTlogs;_SelectedFiles;$(YASMDependsOn);"> + + <ItemGroup Condition="'@(SelectedFiles)' != ''"> + <YASM Remove="@(YASM)" Condition="'%(Identity)' != '@(SelectedFiles)'" /> </ItemGroup> + <Message Importance="High" Text="%(YASM.ExecutionDescription)" /> - <WriteLinesToFile - Condition="'@(YASM_tlog)' != '' and '%(YASM_tlog.ExcludedFromBuild)' != 'true'" - File="$(IntDir)$(ProjectName).write.1.tlog" - Lines="^%(YASM_tlog.Source);@(YASM_tlog->'%(Fullpath)')" /> + <YASM Condition="'@(YASM)' != '' and '%(YASM.ExcludedFromBuild)' != 'true'" CommandLineTemplate="%(YASM.CommandLineTemplate)" @@ -59,50 +95,16 @@ PreProc="%(YASM.PreProc)" Parser="%(YASM.Parser)" AdditionalOptions="%(YASM.AdditionalOptions)" - Inputs="@(YASM)" /> + Inputs="%(YASM.Identity)" /> </Target> - <PropertyGroup> - <ComputeLinkInputsTargets> - $(ComputeLinkInputsTargets); - ComputeYASMOutput; - </ComputeLinkInputsTargets> - <ComputeLibInputsTargets> - $(ComputeLibInputsTargets); - ComputeYASMOutput; - </ComputeLibInputsTargets> - </PropertyGroup> + <Target Name="ComputeYASMOutput" Condition="'@(YASM)' != ''"> <ItemGroup> - <YASMDirsToMake - Condition="'@(YASM)' != '' and '%(YASM.ExcludedFromBuild)' != 'true' and !HasTrailingSlash('%(YASM.ObjectFile)')" - Include="%(YASM.ObjectFile)" /> - <Link - Include="%(YASMDirsToMake.Identity)" - Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" /> - <Lib - Include="%(YASMDirsToMake.Identity)" - Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" /> - <ImpLib - Include="%(YASMDirsToMake.Identity)" - Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" /> - </ItemGroup> - <ItemGroup> - <YASMDirsToMake - Condition="'@(YASM)' != '' and '%(YASM.ExcludedFromBuild)' != 'true' and HasTrailingSlash('%(YASM.ObjectFile)')" - Include="@(YASM->'%(ObjectFile)%(Filename).obj')" /> - <Link - Include="%(YASMDirsToMake.Identity)" - Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" /> - <Lib - Include="%(YASMDirsToMake.Identity)" - Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" /> - <ImpLib - Include="%(YASMDirsToMake.Identity)" - Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" /> + <Link Include="@(YASM->Metadata('ObjectFile')->Distinct()->ClearMetadata())" Condition="'%(YASM.ExcludedFromBuild)' != 'true'"/> + <Lib Include="@(YASM->Metadata('ObjectFile')->Distinct()->ClearMetadata())" Condition="'%(YASM.ExcludedFromBuild)' != 'true'"/> </ItemGroup> - <MakeDir - Directories="@(YASMDirsToMake->'%(RootDir)%(Directory)')" /> </Target> + </Project>
\ No newline at end of file |