Day 22 complete

This commit is contained in:
2023-09-27 01:16:41 -04:00
parent 9220550dd4
commit 9bb8026762
25 changed files with 532 additions and 205 deletions

View File

@ -51,7 +51,7 @@ write-host "Building HandmadeHero with $vendor"
if ( $dev ) {
if ( $debug -eq $null ) {
# $debug = $true
$debug = $true
}
if ( $optimize -eq $null ) {
@ -194,9 +194,12 @@ if ( $vendor -match "clang" )
param( [array]$includes, [array]$compiler_args, [array]$linker_args, [string]$unit, [string]$binary )
Write-Host "build-simple: clang"
$object = $binary -replace '\.exe', '.obj'
$pdb = $binary -replace '\.exe', '.pdb'
$map = $binary -replace '\.exe', '.map'
$object = $unit -replace '\.cpp', '.obj'
$map = $unit -replace '\.cpp', '.map'
# The PDB file has to also be time-stamped so that we can reload the DLL at runtime
$timestamp = Get-Date -Format "yyyy-MM-dd_HH-mm-ss"
$pdb = $binary -replace '\.(exe|dll)$', "_$timestamp.pdb"
$compiler_args += @(
$flag_no_color_diagnostics,
@ -275,6 +278,7 @@ if ( $vendor -match "msvc" )
$flag_dll_debug = '/LDd'
$flag_linker = '/link'
$flag_link_dll = '/DLL'
$flag_link_no_incremental = '/INCREMENTAL:NO'
$flag_link_mapfile = '/MAP:'
$flag_link_optimize_references = '/OPT:REF'
$flag_link_win_debug = '/DEBUG'
@ -309,9 +313,14 @@ if ( $vendor -match "msvc" )
param( [array]$includes, [array]$compiler_args, [array]$linker_args, [string]$unit, [string]$binary )
Write-Host "build-simple: msvc"
$object = $binary -replace '\.(exe|dll)$', '.obj'
$pdb = $binary -replace '\.(exe|dll)$', '.pdb'
$map = $binary -replace '\.(exe|dll)$', '.map'
$object = $unit -replace '\.(cpp)$', '.obj'
$map = $unit -replace '\.(cpp)$', '.map'
$object = $object -replace '\bproject\b', 'build'
$map = $map -replace '\bproject\b', 'build'
# The PDB file has to also be time-stamped so that we can reload the DLL at runtime
$timestamp = Get-Date -Format "yyyy-MM-dd_HH-mm-ss"
$pdb = $binary -replace '\.(exe|dll)$', "_$timestamp.pdb"
$compiler_args += @(
$flag_nologo,
@ -355,6 +364,7 @@ if ( $vendor -match "msvc" )
$linker_args += @(
$flag_nologo,
$flag_link_win_machine_64,
$flag_link_no_incremental,
( $flag_link_win_path_output + $binary )
)
if ( $debug ) {
@ -383,6 +393,7 @@ if ( $vendor -match "msvc" )
$path_project = Join-Path $path_root 'project'
$path_build = Join-Path $path_root 'build'
$path_data = Join-Path $path_root 'data'
$path_binaries = Join-Path $path_data 'binaries'
$path_deps = Join-Path $path_project 'dependencies'
$path_gen = Join-Path $path_project 'gen'
$path_platform = Join-Path $path_project 'platform'
@ -398,6 +409,10 @@ if ( (Test-Path $path_deps) -eq $false ) {
& $update_deps
}
if ( (Test-Path $path_binaries) -eq $false ) {
New-Item $path_binaries -ItemType Directory
}
#region Handmade Generate
if ( $false ) {
$includes = @(
@ -464,6 +479,13 @@ else {
if ( $engine )
{
# Delete old PDBs
$pdb_files = Get-ChildItem -Path $path_binaries -Filter "handmade_engine_*.pdb"
foreach ($file in $pdb_files) {
Remove-Item -Path $file.FullName -Force
Write-Host "Deleted $file" -ForegroundColor Green
}
$engine_compiler_args = $compiler_args
$engine_compiler_args += ($flag_define + 'Build_DLL=1' )
@ -481,15 +503,19 @@ if ( $engine )
$flag_link_optimize_references
)
$unit = Join-Path $path_project 'handmade_engine.cpp'
$dynamic_library = Join-Path $path_build 'handmade_engine.dll'
$unit = Join-Path $path_project 'handmade_engine.cpp'
$dynamic_library = Join-Path $path_binaries 'handmade_engine.dll'
build-simple $includes $engine_compiler_args $linker_args $unit $dynamic_library
if ( Test-Path $dynamic_library )
{
$data_path = Join-Path $path_data 'handmade_engine.dll'
move-item $dynamic_library $data_path -Force
# $data_path = Join-Path $path_data 'handmade_engine.dll'
# move-item $dynamic_library $data_path -Force
$path_lib = $dynamic_library -replace '\.dll', '.lib'
$path_exp = $dynamic_library -replace '\.dll', '.exp'
Remove-Item $path_lib -Force
Remove-Item $path_exp -Force
# We need to generate the symbol table so that we can lookup the symbols we need when loading/reloading the library at runtime.
# This is done by sifting through the emitter.map file from the linker for the base symbol names
@ -505,6 +531,8 @@ if ( $engine )
$path_engine_map = Join-Path $path_build 'handmade_engine.map'
$maxNameLength = ($engine_symbols | Measure-Object -Property Length -Maximum).Maximum
$engine_symbol_table = @()
$engine_symbol_list = @()
Get-Content -Path $path_engine_map | ForEach-Object {
@ -526,17 +554,27 @@ if ( $engine )
write-host "Engine Symbol Table:" -ForegroundColor Green
$engine_symbol_table | ForEach-Object {
write-host "`t$_" -ForegroundColor Green
$split = $_ -split ', ', 2
$paddedName = $split[0].PadRight($maxNameLength)
$decoratedName = $split[1]
write-host "`t$paddedName, $decoratedName" -ForegroundColor Green
}
# Write the symbol table to a file
$path_engine_symbols = Join-Path $path_data 'handmade_engine.symbols'
$path_engine_symbols = Join-Path $path_binaries 'handmade_engine.symbols'
$engine_symbol_list | Out-File -Path $path_engine_symbols
}
}
if ( $platform )
{
# Delete old PDBs
$pdb_files = Get-ChildItem -Path $path_binaries -Filter "handmade_win32_*.pdb"
foreach ($file in $pdb_files) {
Remove-Item -Path $file.FullName -Force
Write-Host "Deleted $file" -ForegroundColor Green
}
$platform_compiler_args = $compiler_args
$platform_compiler_args += ($flag_define + 'Build_DLL=0' )
@ -552,16 +590,23 @@ if ( $platform )
$flag_link_optimize_references
)
$unit = Join-Path $path_project 'handmade_win32.cpp'
$executable = Join-Path $path_build 'handmade_win32.exe'
$unit = Join-Path $path_project 'handmade_win32.cpp'
$executable = Join-Path $path_binaries 'handmade_win32.exe'
build-simple $includes $platform_compiler_args $linker_args $unit $executable
if ( Test-Path $executable )
{
$data_path = Join-Path $path_data 'handmade_win32.exe'
move-item $executable $data_path -Force
}
# if ( Test-Path $executable )
# {
# $data_path = Join-Path $path_data 'handmade_win32.exe'
# move-item $executable $data_path -Force
# }
}
$path_jsl_dll = Join-Path $path_binaries 'JoyShockLibrary.dll'
if ( (Test-Path $path_jsl_dll) -eq $false )
{
$path_jsl_dep_dll = Join-Path $path_deps 'JoyShockLibrary/x64/JoyShockLibrary.dll'
Copy-Item $path_jsl_dep_dll $path_jsl_dll
}
#endregion Handmade Runtime

View File

@ -3,8 +3,13 @@ $path_root = git rev-parse --show-toplevel
$path_project = join-path $path_root "project"
$path_build = join-path $path_root "build"
$path_data = join-path $path_root "data"
$path_dependencies = join-path $path_project "dependencies"
$path_binaries = join-path $path_data "binaries"
if ( Test-Path $path_build ) {
Remove-Item -verbose $path_build -Recurse
}
if ( Test-Path $path_binaries ) {
Remove-Item -verbose $path_binaries -Recurse
}

Binary file not shown.

View File

@ -4,6 +4,7 @@ $path_root = & git rev-parse --show-toplevel
$path_data = Join-Path $path_root "data"
$path_project = Join-Path $path_root "project"
$path_deps = Join-Path $path_project "dependencies"
$path_binaries = Join-Path $path_data "binaries"
$path_deps_windows = Join-Path $path_deps "windows"
$path_temp = Join-Path $path_deps "temp"
$path_platform = Join-Path $path_project "platform"
@ -15,6 +16,10 @@ if (Test-Path $path_deps) {
}
New-Item -ItemType Directory -Path $path_temp
if ( -not (Test-Path $path_binaries) ) {
New-Item -ItemType Directory -Path $path_binaries
}
$url_gencpp = "https://github.com/Ed94/gencpp/releases/download/latest/gencpp_singleheader.zip"
$path_gencpp_zip = Join-Path $path_temp "gencpp_singleheader.zip"
@ -59,7 +64,7 @@ $jsl_lib_files = (Get-ChildItem (Join-Path $path_temp "JSL\x64") -Recurse -Inclu
Move-Item $jsl_lib_files -Destination $path_jsl_lib -Force
$path_jsl_dll = Join-Path $path_jsl_lib "JoyShockLibrary.dll"
Move-Item $path_jsl_dll $path_data -Force
Copy-Item $path_jsl_dll $path_binaries -Force
#endregion JoyShockLibrary
Remove-Item $path_temp -Recurse -Force