Modifiaitons to build script
I only keep the generated code_compiler_staged dir around if there are errors compiling
This commit is contained in:
parent
40ffed9538
commit
0527a033c8
@ -22,17 +22,17 @@ The dependencies are:
|
||||
* Odin repo's base, core, and vendor(raylib) libaries
|
||||
* An ini parser
|
||||
* backtrace
|
||||
* Powershell (if you want to use my build scripts)
|
||||
|
||||
The client(sectr) module's organization is relatively flat due to the nature of odin's compiler, not allowing for cyclic dependencies across modules, and modules can only be in one directory.
|
||||
This makes it difficult to unflatten, not something organic todo in a prototype...
|
||||
|
||||
I have the codebase by default in a non-idomatic layout that I stage to the compiler beforehand. There is a script(`scripts/gen_staged_compiler_codebase.ps1`) that stages a the idiomatic format of the codebase for the compiler to digest when `scripts/build.ps1` is run.
|
||||
|
||||
Even so the notable groups are:
|
||||
Major 'codebase modules':
|
||||
|
||||
* API : Provides the overarching interface of the app's general behavior. Host uses this to provide the client its necessary data and exection env.
|
||||
* Has the following definitions: startup, shutdown, reload, tick, clean_frame
|
||||
* Engine : Main loop, logging, client interface for host, etc
|
||||
* Has the following definitions: startup, shutdown, reload, tick, clean_frame (which host hooks up to when managing the client dll)
|
||||
* Env : Core Memory & State definition + orchestration
|
||||
* Font Provider : Manages fonts.
|
||||
* When loading fonts, the provider currently uses raylib to generate bitmap glyth sheets for a range of font sizes at once.
|
||||
|
@ -224,19 +224,19 @@ push-location $path_root
|
||||
|
||||
if ( $host_process_active ) {
|
||||
write-host 'Skipping sectr_host build, process is active'
|
||||
return
|
||||
return $true
|
||||
}
|
||||
|
||||
$dependencies_built = $script:sectr_build_code -ne $module_build_failed
|
||||
if ( -not $dependencies_built ) {
|
||||
write-host 'Skipping sectr_host build, dependencies failed to build'
|
||||
return
|
||||
return $false
|
||||
}
|
||||
|
||||
$should_build = (check-ModuleForChanges $module_host) -or ( $script:sectr_build_code -eq $module_built )
|
||||
if ( -not( $should_build)) {
|
||||
write-host 'Skipping sectr_host build, module up to date'
|
||||
return
|
||||
return $true
|
||||
}
|
||||
|
||||
if (test-path $pdb) {
|
||||
@ -273,13 +273,32 @@ push-location $path_root
|
||||
# $build_args += $flag_sanitize_address
|
||||
# $build_args += $flag_sanitize_memory
|
||||
|
||||
if ( Test-Path $module_dll) {
|
||||
$module_dll_pre_build_hash = get-filehash -path $module_dll -Algorithm MD5
|
||||
}
|
||||
|
||||
Invoke-WithColorCodedOutput { & $odin_compiler $build_args }
|
||||
|
||||
if ( Test-Path $module_dll ) {
|
||||
$module_dll_post_build_hash = get-filehash -path $module_dll -Algorithm MD5
|
||||
}
|
||||
|
||||
$built = ($module_dll_pre_build_hash -eq $null) -or ($module_dll_pre_build_hash.Hash -ne $module_dll_post_build_hash.Hash)
|
||||
if ( -not $built ) {
|
||||
write-host 'Failed to build, marking module dirty'
|
||||
mark-ModuleDirty $module_sectr
|
||||
}
|
||||
return $built
|
||||
}
|
||||
build-host
|
||||
$host_build_code = build-sectr
|
||||
|
||||
Pop-Location # path_code
|
||||
|
||||
if ( test-path $path_code_compiler_staged ) { Remove-Item -Path $path_code_compiler_staged -Force -Recurse }
|
||||
if ( test-path $path_code_compiler_staged ) {
|
||||
if ( ($host_build_code -ne $module_build_failed) -and ($script:sectr_build_code -ne $module_build_failed) ) {
|
||||
Remove-Item -Path $path_code_compiler_staged -Force -Recurse
|
||||
}
|
||||
}
|
||||
}
|
||||
build-prototype
|
||||
pop-location # path_root
|
||||
|
@ -1,53 +0,0 @@
|
||||
# Generates a more ergonomic filesystem organization for nagivating the codebase on windows using symbolic links
|
||||
|
||||
cls
|
||||
write-host "Build.ps1"
|
||||
|
||||
$path_root = git rev-parse --show-toplevel
|
||||
$path_code = join-path $path_root 'code'
|
||||
$path_scripts = join-path $path_root 'scripts'
|
||||
|
||||
$path_virtual_view = join-path $path_root 'code_virtual_view'
|
||||
|
||||
if (test-path $path_virtual_view) {
|
||||
Remove-Item -Path $path_virtual_view -Recurse -Force -ErrorAction Ignore
|
||||
}
|
||||
New-Item -ItemType Directory -Path $path_virtual_view
|
||||
|
||||
$files = Get-ChildItem -Path $path_code -File -Recurse
|
||||
foreach ($file in $files)
|
||||
{
|
||||
# Determine if the file name contains a namespace
|
||||
$fileName = $file.Name
|
||||
if ($fileName -match '^(.+?)_(.+)\.odin$')
|
||||
{
|
||||
# Extract namespace and actual file name
|
||||
$namespace = $Matches[1]
|
||||
$actualFileName = $Matches[2] + ".odin"
|
||||
|
||||
# Create a namespace directory in the virtual view if it doesn't exist
|
||||
$namespaceDir = Join-Path $path_virtual_view $namespace
|
||||
if (-not (Test-Path $namespaceDir)) {
|
||||
New-Item -ItemType Directory -Path $namespaceDir
|
||||
}
|
||||
|
||||
# Create a symbolic link in the namespace directory pointing to the original file
|
||||
$targetFilePath = $file.FullName
|
||||
$linkPath = Join-Path $namespaceDir $actualFileName
|
||||
New-Item -ItemType SymbolicLink -Path $linkPath -Value $targetFilePath
|
||||
}
|
||||
else
|
||||
{
|
||||
# For files without a namespace, maintain the directory structure in the virtual view
|
||||
$relativePath = $file.FullName.Substring($path_code.Length + 1)
|
||||
$linkPath = Join-Path $path_virtual_view $relativePath
|
||||
$linkDir = Split-Path -Parent $linkPath
|
||||
|
||||
if (-not (Test-Path $linkDir)) {
|
||||
New-Item -ItemType Directory -Path $linkDir -Force
|
||||
}
|
||||
New-Item -ItemType SymbolicLink -Path $linkPath -Value $file.FullName
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host "Virtual view created successfully."
|
Loading…
Reference in New Issue
Block a user