Cosmos/source2/Build/Cosmos.Build.MSBuild/Cosmos.targets
2010-08-08 10:46:44 +00:00

173 lines
No EOL
8.1 KiB
XML

<?xml version="1.0"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
<!--<PropertyGroup>
<CoreBuildDependsOn>$(CoreBuildDependsOn);CosmosBuild</CoreBuildDependsOn>
</PropertyGroup>-->
<PropertyGroup>
<CosmosDir Condition="$(CosmosDir) == ''">$(Registry:HKEY_LOCAL_MACHINE\Software\Cosmos)</CosmosDir>
<BuildToolsDir Condition="$(BuildToolsDir) == ''">$(CosmosDir)\Build\Tools</BuildToolsDir>
<VSIPDir Condition="$(VSIPDir) == ''">$(CosmosDir)\Build\VSIP</VSIPDir>
<NasmFile>$(BuildToolsDir)\Nasm\nasm.exe</NasmFile>
<FullAssemblyName>$(OutputPath)$(AssemblyName)</FullAssemblyName>
<AssemblyFile>$(FullAssemblyName).exe</AssemblyFile>
<ISOFile>$(FullAssemblyName).iso</ISOFile>
<BinFormat Condition="$(BinFormat) == ''">bin</BinFormat>
</PropertyGroup>
<UsingTask TaskName="Cosmos.Build.MSBuild.IL2CPU" AssemblyFile="$(VSIPDir)\Cosmos.Build.MSBuild.dll" />
<UsingTask TaskName="Cosmos.Build.MSBuild.NAsm" AssemblyFile="$(VSIPDir)\Cosmos.Build.MSBuild.dll" />
<UsingTask TaskName="Cosmos.Build.MSBuild.MakeISO" AssemblyFile="$(VSIPDir)\Cosmos.Build.MSBuild.dll" />
<UsingTask TaskName="Cosmos.Build.MSBuild.Ld" AssemblyFile="$(VSIPDir)\Cosmos.Build.MSBuild.dll" />
<UsingTask TaskName="Cosmos.Build.MSBuild.ReadNAsmMapToCosmosMap" AssemblyFile="$(VSIPDir)\Cosmos.Build.MSBuild.dll" />
<UsingTask TaskName="Cosmos.Build.MSBuild.ExtractMapFromElfFile" AssemblyFile="$(VSIPDir)\Cosmos.Build.MSBuild.dll" />
<Target Name="CoreCompile">
<Error Text="File %(Compile.Identity) is set to compile, but .Cosmos projects don't compile any source themselves!"
Condition="$(Compile) != ''"/>
<CreateProperty Value="true" Condition="$(BinFormat) == 'elf'">
<Output PropertyName="IsELF" TaskParameter="Value"/>
</CreateProperty>
<CreateProperty Value="false" Condition="$(BinFormat) == 'bin'">
<Output PropertyName="IsELF" TaskParameter="Value"/>
</CreateProperty>
<IL2CPU InputAssembly="$(KernelAssemblyReference)"
DebugMode="$(DebugMode)"
TraceAssemblies="$(TraceAssemblies)"
DebugCom="1"
UseNAsm="true"
References="@(ReferencePath)"
DebugSymbolsFile="$(FullAssemblyName).cxdb"
LogFile="$(FullAssemblyName).log.html"
OutputFile="$(FullAssemblyName).asm" />
<NAsm InputFile="$(FullAssemblyName).asm"
OutputFile="$(FullAssemblyName).obj"
IsELF="$(IsELF)"
ExePath="$(NasmFile)" />
<!--ELF only-->
<Ld CosmosBuildDir="$(CosmosDir)\Build"
WorkingDir="$(TargetDir)"
Arguments="-Ttext 0x500000 -Tdata 0x200000 -e Kernel_Start -o '$(AssemblyName).bin' '$(AssemblyName).obj'"
Condition="$(IsELF) == 'true'"/>
<Delete Files="$(FullAssemblyName).obj" Condition="$(IsELF) == 'true'"/>
<ExtractMapFromElfFile InputFile="$(TargetDir)$(AssemblyName).bin"
OutputFile="$(TargetDir)$(AssemblyName).cmap"
WorkingDir="$(TargetDir)"
CosmosBuildDir="$(CosmosDir)\Build"
Condition="$(IsELF) == 'true'"/>
<CreateItem Include="$(FullAssemblyName).bin" Condition="$(IsELF) == 'true'">
<Output TaskParameter="Include"
ItemName="TempFilesToCopy"/>
</CreateItem>
<Delete Files="$(FullAssemblyName).obj" Condition="$(IsELF) == 'true'"/>
<Copy SourceFiles="@(TempFilesToCopy)"
DestinationFiles="@(TempFilesToCopy->'$(TargetDir)\%(Filename).obj')"
Condition="$(IsELF) == 'true'"/>
<Delete Files="$(FullAssemblyName).bin" Condition="$(IsELF) == 'true'"/>
<!--End of ELF only-->
<!--binary only-->
<ReadNAsmMapToCosmosMap InputBaseDir="$(OutputPath)"
OutputFile="$(FullAssemblyName).cmap"
Condition="$(IsELF) == 'false'"/>
<!--end of binary only-->
<!--todo: update cxdb to cxdbg-->
<MakeISO InputFile="$(FullAssemblyName).obj"
OutputFile="$(ISOFile)"
CosmosBuildDir="$(CosmosDir)\Build" />
</Target>
<!-- compat targets -->
<Target Name="CreateManifestResourceNames">
</Target>
<Import Project="$(MSBuildBinPath)\Microsoft.Common.targets" />
<Target Name="CopyFilesToOutputDirectory">
<!-- copy <AssemblyName>.exe from obj\Debug to bin\Debug-->
</Target>
<!-- devkit version:
<UsingTask TaskName="Cosmos.Build.MSBuild.IL2CPU" AssemblyFile="$(CosmosDir)\source2\Build\Cosmos.Build.MSBuild\bin\Debug\Cosmos.Build.MSBuild.dll" />
<UsingTask TaskName="Cosmos.Build.MSBuild.NAsm" AssemblyFile="$(CosmosDir)\source2\Build\Cosmos.Build.MSBuild\bin\Debug\Cosmos.Build.MSBuild.dll" />
<UsingTask TaskName="Cosmos.Build.MSBuild.MakeISO" AssemblyFile="$(CosmosDir)\source2\Build\Cosmos.Build.MSBuild\bin\Debug\Cosmos.Build.MSBuild.dll" />
-->
<!--<Target Name="CosmosBuild"
Inputs="$(AssemblyFile)"
Outputs="$(ISOFile)">
--><!--<CreateProperty Value="true" Condition="$(BinFormat) == 'elf'">
<Output PropertyName="IsELF" TaskParameter="Value"/>
</CreateProperty>
<CreateProperty Value="false" Condition="$(BinFormat) == 'bin'">
<Output PropertyName="IsELF" TaskParameter="Value"/>
</CreateProperty>
<IL2CPU InputAssembly="$(AssemblyFile)"
DebugMode="$(DebugMode)"
TraceAssemblies="$(TraceAssemblies)"
DebugCom="1"
UseNAsm="true"
DebugSymbolsFile="$(FullAssemblyName).cxdb"
LogFile="$(FullAssemblyName).log.html"
OutputFile="$(FullAssemblyName).asm" />
<NAsm InputFile="$(FullAssemblyName).asm"
OutputFile="$(FullAssemblyName).obj"
IsELF="$(IsELF)"
ExePath="$(NasmFile)" />
--><!-- ELF only --><!--
<Ld CosmosBuildDir="$(CosmosDir)\Build"
WorkingDir="$(TargetDir)"
Arguments="-Ttext 0x500000 -Tdata 0x200000 -e Kernel_Start -o '$(AssemblyName).bin' '$(AssemblyName).obj'"
Condition="$(IsELF) == 'true'"/>
<Delete Files="$(FullAssemblyName).obj" Condition="$(IsELF) == 'true'"/>
<ExtractMapFromElfFile InputFile="$(TargetDir)$(AssemblyName).bin"
OutputFile="$(TargetDir)$(AssemblyName).cmap"
WorkingDir="$(TargetDir)"
CosmosBuildDir="$(CosmosDir)\Build"
Condition="$(IsELF) == 'true'"/>
<CreateItem Include="$(FullAssemblyName).bin" Condition="$(IsELF) == 'true'">
<Output TaskParameter="Include"
ItemName="TempFilesToCopy"/>
</CreateItem>
<Delete Files="$(FullAssemblyName).obj" Condition="$(IsELF) == 'true'"/>
<Copy SourceFiles="@(TempFilesToCopy)"
DestinationFiles="@(TempFilesToCopy->'$(TargetDir)\%(Filename).obj')"
Condition="$(IsELF) == 'true'"/>
<Delete Files="$(FullAssemblyName).bin" Condition="$(IsELF) == 'true'"/>
--><!-- End of ELF only--><!--
--><!-- binary only --><!--
<ReadNAsmMapToCosmosMap InputBaseDir="$(OutputPath)"
OutputFile="$(FullAssemblyName).cmap"
Condition="$(IsELF) == 'false'"/>
--><!-- end of binary only--><!--
--><!-- todo: update cxdb to cxdbg --><!--
<MakeISO InputFile="$(FullAssemblyName).obj"
OutputFile="$(ISOFile)"
CosmosBuildDir="$(CosmosDir)\Build" />--><!--
</Target>
-->
</Project>