summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Gladman <brg@gladman.plus.com>2018-09-27 18:34:45 +0100
committerBrian Gladman <brg@gladman.plus.com>2018-09-27 18:34:45 +0100
commit627e1c29a425af7791ae6fe8a7b4d3815e3398e0 (patch)
tree27b21b0350354f288d49401601041fac559ee745
parente256985c4929f4e550d8f70cad5fb936f81b7b06 (diff)
downloadyasm-627e1c29a425af7791ae6fe8a7b4d3815e3398e0.tar.gz
Update the files for integrating YASM into Visual Studio 2017
-rw-r--r--Mkfiles/vc15/vsyasm.props6
-rw-r--r--Mkfiles/vc15/vsyasm.targets118
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