mirror of
https://github.com/danbulant/Cosmos
synced 2026-05-19 20:39:01 +00:00
98 lines
No EOL
4.7 KiB
XML
98 lines
No EOL
4.7 KiB
XML
<?xml version="1.0"?>
|
|
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
|
|
|
|
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" Condition="$(Language) == 'CSharp'" />
|
|
|
|
<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" />
|
|
|
|
|
|
<!-- 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)" />
|
|
|
|
<Message Importance="High" Text="IsELF: $(IsELF)"/>
|
|
|
|
<!-- 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> |