mirror of
https://github.com/Ed94/VEFontCache-Odin.git
synced 2025-08-05 22:42:43 -07:00
Drafting up scripts (not tested)
This commit is contained in:
31
ols.json
Normal file
31
ols.json
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"$schema": "https://raw.githubusercontent.com/DanielGavin/ols/master/misc/ols.schema.json",
|
||||
"odin_command": "odin.exe",
|
||||
"collections": [
|
||||
{
|
||||
"name": "backend",
|
||||
"path": "./backend"
|
||||
},
|
||||
{
|
||||
"name": "examples",
|
||||
"path": "./sectr"
|
||||
},
|
||||
{
|
||||
"name": "thirdparty",
|
||||
"path": "./thirdparty"
|
||||
}
|
||||
],
|
||||
"enable_document_symbols": true,
|
||||
"enable_fake_methods": true,
|
||||
"enable_format": false,
|
||||
"enable_hover": true,
|
||||
"enable_semantic_tokens": false,
|
||||
"enable_snippets": false,
|
||||
"enable_references": true,
|
||||
"thread_pool_count": 10,
|
||||
"enable_inlay_hints": true,
|
||||
"enable_procedure_context": true,
|
||||
"enable_procedure_snippet": false,
|
||||
"verbose": true,
|
||||
"disable_parser_errors": true
|
||||
}
|
77
scripts/build_sokol_demo.ps1
Normal file
77
scripts/build_sokol_demo.ps1
Normal file
@@ -0,0 +1,77 @@
|
||||
$path_root = git rev-parse --show-toplevel
|
||||
$path_backend = join-path $path_backend 'backend'
|
||||
$path_binaries = join-path $path_bin 'binaries'
|
||||
$path_examples = join-path $path_examples 'examples'
|
||||
$path_scripts = join-path $path_root 'scripts'
|
||||
$path_thirdparty = join-path $path_root 'thirdparty'
|
||||
|
||||
verify-path $path_binaries
|
||||
verify-path $path_thirdparty
|
||||
|
||||
$misc = join-path $PSScriptRoot 'helpers/misc.ps1'
|
||||
. $misc
|
||||
|
||||
$url_sokol = 'https://github.com/Ed94/sokol-odin.git'
|
||||
$url_sokol_tools = 'https://github.com/floooh/sokol-tools-bin.git'
|
||||
|
||||
$path_sokol = join-path $path_thirdparty 'sokol'
|
||||
$path_sokol_tools = join-path $path_thirdparty 'sokol-tools'
|
||||
|
||||
$sokol_build_clibs_command = join-path $path_scripts 'build_sokol_library.ps1'
|
||||
|
||||
clone-gitrepo $path_sokol_tools $url_sokol_tools
|
||||
Update-GitRepo -path $path_sokol -url $url_sokol -build_command $sokol_build_clibs_command
|
||||
|
||||
push-location $path_thirdparty
|
||||
$path_sokol_dlls = join-path $path_sokol 'sokol'
|
||||
|
||||
$third_party_dlls = Get-ChildItem -Path $path_sokol_dlls -Filter '*.dll'
|
||||
foreach ($dll in $third_party_dlls) {
|
||||
$destination = join-path $path_binaries $dll.Name
|
||||
Copy-Item $dll.FullName -Destination $destination -Force
|
||||
}
|
||||
pop-location
|
||||
|
||||
$odin_compiler_defs = join-path $PSScriptRoot 'helpers/odin_compiler_defs.ps1'
|
||||
. $odin_compiler_defs
|
||||
|
||||
$pkg_collection_backend = 'backend=' + $path_backend
|
||||
$pkg_collection_thirdparty = 'thirdparty=' + $path_thirdparty
|
||||
|
||||
push-location $path_examples
|
||||
|
||||
function build-SokolBackendDemo
|
||||
{
|
||||
write-host 'Building VEFontCache: Sokol Backend Demo'
|
||||
|
||||
$build_args = @()
|
||||
$build_args += $command_build
|
||||
$build_args += './sokol_demo'
|
||||
$build_args += $flag_output_path + $executable
|
||||
$build_args += ($flag_collection + $pkg_collection_backend)
|
||||
$build_args += ($flag_collection + $pkg_collection_thirdparty)
|
||||
# $build_args += $flag_micro_architecture_native
|
||||
$build_args += $flag_use_separate_modules
|
||||
$build_args += $flag_thread_count + $CoreCount_Physical
|
||||
# $build_args += $flag_optimize_none
|
||||
# $build_args += $flag_optimize_minimal
|
||||
# $build_args += $flag_optimize_speed
|
||||
$build_args += $falg_optimize_aggressive
|
||||
$build_args += $flag_debug
|
||||
$build_args += $flag_pdb_name + $pdb
|
||||
$build_args += $flag_subsystem + 'windows'
|
||||
# $build_args += ($flag_extra_linker_flags + $linker_args )
|
||||
$build_args += $flag_show_timings
|
||||
# $build_args += $flag_show_system_call
|
||||
# $build_args += $flag_no_bounds_check
|
||||
# $build_args += $flag_no_thread_checker
|
||||
# $build_args += $flag_default_allocator_nil
|
||||
$build_args += ($flag_max_error_count + '10')
|
||||
# $build_args += $flag_sanitize_address
|
||||
# $build_args += $flag_sanitize_memory
|
||||
|
||||
Invoke-WithColorCodedOutput { & $odin_compiler $build_args }
|
||||
}
|
||||
build-SokolBackendDemo
|
||||
|
||||
pop-location
|
18
scripts/build_sokol_library.ps1
Normal file
18
scripts/build_sokol_library.ps1
Normal file
@@ -0,0 +1,18 @@
|
||||
$devshell = Join-Path $PSScriptRoot 'devshell.ps1'
|
||||
& $devshell -arch amd64
|
||||
|
||||
$path_root = git rev-parse --show-toplevel
|
||||
$path_backend = join-path $path_backend 'backend'
|
||||
$path_binaries = join-path $path_bin 'binaries'
|
||||
$path_scripts = join-path $path_root 'scripts'
|
||||
$path_thirdparty = join-path $path_root 'thirdparty'
|
||||
|
||||
$path_sokol = Join-Path $path_thirdparty 'sokol'
|
||||
if (test-path $path_sokol)
|
||||
{
|
||||
Move-Item -Path "$path_sokol/sokol/*" -Destination $path_sokol -Force
|
||||
Remove-Item -Path $path_sokol -Recurse -Force
|
||||
Remove-Item -Path $path_sokol_examples -Recurse -Force
|
||||
}
|
||||
|
||||
& '.\build_clibs_windows.cmd'
|
31
scripts/compile_sokol_shaders.ps1
Normal file
31
scripts/compile_sokol_shaders.ps1
Normal file
@@ -0,0 +1,31 @@
|
||||
$path_root = git rev-parse --show-toplevel
|
||||
$path_backend = join-path $path_root 'backend'
|
||||
$path_scripts = join-path $path_root 'scripts'
|
||||
$path_thirdparty = join-path $path_root 'thirdparty'
|
||||
|
||||
$path_sokol_tools = join-path $path_thirdparty 'sokol-tools'
|
||||
$sokol_shdc = join-path $path_sokol_tools 'bin/win32/sokol-shdc.exe'
|
||||
|
||||
$path_backend_sokol = join-path $path_backend 'sokol'
|
||||
|
||||
$shadersrc_blit_atlas = join-path $path_backend_sokol 'blit_atlas.shdc.glsl'
|
||||
$shaderout_blit_atlas = join-path $path_backend_sokol 'blit_atlas.odin'
|
||||
|
||||
$shadersrc_draw_text = join-path $path_backend_sokol 'draw_text.shdc.glsl'
|
||||
$shaderout_draw_text = join-path $path_backend_sokol 'draw_text.odin'
|
||||
|
||||
$shadersrc_render_glyph = join-path $path_backend_sokol 'render_glyph.shdc.glsl'
|
||||
$shaderout_render_glyph = join-path $path_backend_sokol 'render_glyph.odin'
|
||||
|
||||
$flag_input = '--input '
|
||||
$flag_output = '--output '
|
||||
$flag_target_lang = '--slang '
|
||||
$flag_format_odin = '--format=sokol_odin'
|
||||
$flag_module = '--module'
|
||||
|
||||
push-location $path_backend_sokol
|
||||
& $sokol_shdc --input $shadersrc_simple_font_glyph --output $shaderout_simple_font_glyph --slang 'hlsl4' $flag_format_odin
|
||||
& $sokol_shdc --input $shadersrc_blit_atlas --output $shaderout_blit_atlas --slang 'hlsl4' $flag_format_odin $flag_module='blit_atlas'
|
||||
& $sokol_shdc --input $shadersrc_render_glyph --output $shaderout_render_glyph --slang 'hlsl4' $flag_format_odin $flag_module='render_glyph'
|
||||
& $sokol_shdc --input $shadersrc_draw_text --output $shaderout_draw_text --slang 'hlsl4' $flag_format_odin $flag_module='draw_text'
|
||||
pop-location
|
28
scripts/devshell.ps1
Normal file
28
scripts/devshell.ps1
Normal file
@@ -0,0 +1,28 @@
|
||||
if ($env:VCINSTALLDIR) {
|
||||
return
|
||||
}
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
# Use vswhere to find the latest Visual Studio installation
|
||||
$vswhere_out = & "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" -latest -property installationPath
|
||||
if ($null -eq $vswhere_out) {
|
||||
Write-Host "ERROR: Visual Studio installation not found"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Find Launch-VsDevShell.ps1 in the Visual Studio installation
|
||||
$vs_path = $vswhere_out
|
||||
$vs_devshell = Join-Path $vs_path "\Common7\Tools\Launch-VsDevShell.ps1"
|
||||
|
||||
if ( -not (Test-Path $vs_devshell) ) {
|
||||
Write-Host "ERROR: Launch-VsDevShell.ps1 not found in Visual Studio installation"
|
||||
Write-Host Tested path: $vs_devshell
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Launch the Visual Studio Developer Shell
|
||||
Push-Location
|
||||
write-host @args
|
||||
& $vs_devshell @args
|
||||
Pop-Location
|
80
scripts/helpers/misc.ps1
Normal file
80
scripts/helpers/misc.ps1
Normal file
@@ -0,0 +1,80 @@
|
||||
function clone-gitrepo { param( [string] $path, [string] $url )
|
||||
if (test-path $path) {
|
||||
# git -C $path pull
|
||||
}
|
||||
else {
|
||||
Write-Host "Cloning $url ..."
|
||||
git clone $url $path
|
||||
}
|
||||
}
|
||||
|
||||
# TODO(Ed): This is garbage for odin's output..
|
||||
function Invoke-WithColorCodedOutput { param( [scriptblock] $command )
|
||||
& $command 2>&1 | ForEach-Object {
|
||||
# Write-Host "Type: $($_.GetType().FullName)" # Add this line for debugging
|
||||
$color = 'White' # Default text color
|
||||
switch ($_) {
|
||||
{ $_ -imatch "error" } { $color = 'Red'; break }
|
||||
{ $_ -imatch "warning" } { $color = 'Yellow'; break }
|
||||
}
|
||||
Write-Host "`t$_" -ForegroundColor $color
|
||||
}
|
||||
}
|
||||
|
||||
function Update-GitRepo
|
||||
{
|
||||
param( [string] $path, [string] $url, [string] $build_command )
|
||||
|
||||
if ( $build_command -eq $null ) {
|
||||
write-host "Attempted to call Update-GitRepo without build_command specified"
|
||||
return
|
||||
}
|
||||
|
||||
$repo_name = $url.Split('/')[-1].Replace('.git', '')
|
||||
|
||||
$last_built_commit = join-path $path_build "last_built_commit_$repo_name.txt"
|
||||
if ( -not(test-path -Path $path))
|
||||
{
|
||||
write-host "Cloining repo from $url to $path"
|
||||
git clone $url $path
|
||||
|
||||
write-host "Building $url"
|
||||
push-location $path
|
||||
& "$build_command"
|
||||
pop-location
|
||||
|
||||
git -C $path rev-parse HEAD | out-file $last_built_commit
|
||||
$script:binaries_dirty = $true
|
||||
write-host
|
||||
return
|
||||
}
|
||||
|
||||
git -C $path fetch
|
||||
$latest_commit_hash = git -C $path rev-parse '@{u}'
|
||||
$last_built_hash = if (Test-Path $last_built_commit) { Get-Content $last_built_commit } else { "" }
|
||||
|
||||
if ( $latest_commit_hash -eq $last_built_hash ) {
|
||||
write-host
|
||||
return
|
||||
}
|
||||
|
||||
write-host "Build out of date for: $path, updating"
|
||||
write-host 'Pulling...'
|
||||
git -C $path pull
|
||||
|
||||
write-host "Building $url"
|
||||
push-location $path
|
||||
& $build_command
|
||||
pop-location
|
||||
|
||||
$latest_commit_hash | out-file $last_built_commit
|
||||
$script:binaries_dirty = $true
|
||||
write-host
|
||||
}
|
||||
|
||||
function verify-path { param( $path )
|
||||
if (test-path $path) {return $true}
|
||||
|
||||
new-item -ItemType Directory -Path $path
|
||||
return $false
|
||||
}
|
63
scripts/helpers/odin_compiler_defs.ps1
Normal file
63
scripts/helpers/odin_compiler_defs.ps1
Normal file
@@ -0,0 +1,63 @@
|
||||
# Not meant to be used standalone
|
||||
|
||||
# Odin Compiler Flags
|
||||
|
||||
# For a beakdown of any flag, type <odin_compiler> <command> -help
|
||||
$command_build = 'build'
|
||||
$command_check = 'check'
|
||||
$command_query = 'query'
|
||||
$command_report = 'report'
|
||||
$command_run = 'run'
|
||||
|
||||
$flag_build_mode = '-build-mode:'
|
||||
$flag_build_mode_dll = '-build-mode:dll'
|
||||
$flag_collection = '-collection:'
|
||||
$flag_debug = '-debug'
|
||||
$flag_define = '-define:'
|
||||
$flag_default_allocator_nil = '-default-to-nil-allocator'
|
||||
$flag_disable_assert = '-disable-assert'
|
||||
$flag_dynamic_map_calls = '-dynamic-map-calls'
|
||||
$flag_extra_assembler_flags = '-extra_assembler-flags:'
|
||||
$flag_extra_linker_flags = '-extra-linker-flags:'
|
||||
$flag_ignore_unknown_attributes = '-ignore-unknown-attributes'
|
||||
$flag_keep_temp_files = '-keep-temp-files'
|
||||
$flag_max_error_count = '-max-error-count:'
|
||||
$flag_micro_architecture_native = '-microarch:native'
|
||||
$flag_no_bounds_check = '-no-bounds-check'
|
||||
$flag_no_crt = '-no-crt'
|
||||
$flag_no_entrypoint = '-no-entry-point'
|
||||
$flag_no_thread_local = '-no-thread-local'
|
||||
$flag_no_thread_checker = '-no-threaded-checker'
|
||||
$flag_output_path = '-out='
|
||||
$flag_optimization_level = '-opt:'
|
||||
$flag_optimize_none = '-o:none'
|
||||
$flag_optimize_minimal = '-o:minimal'
|
||||
$flag_optimize_size = '-o:size'
|
||||
$flag_optimize_speed = '-o:speed'
|
||||
$falg_optimize_aggressive = '-o:aggressive'
|
||||
$flag_pdb_name = '-pdb-name:'
|
||||
$flag_sanitize_address = '-sanitize:address'
|
||||
$flag_sanitize_memory = '-sanitize:memory'
|
||||
$flag_sanitize_thread = '-sanitize:thread'
|
||||
$flag_subsystem = '-subsystem:'
|
||||
$flag_show_timings = '-show-timings'
|
||||
$flag_show_more_timings = '-show-more-timings'
|
||||
$flag_show_system_calls = '-show-system-calls'
|
||||
$flag_target = '-target:'
|
||||
$flag_thread_count = '-thread-count:'
|
||||
$flag_use_lld = '-lld'
|
||||
$flag_use_separate_modules = '-use-separate-modules'
|
||||
$flag_vet_all = '-vet'
|
||||
$flag_vet_unused_entities = '-vet-unused'
|
||||
$flag_vet_semicolon = '-vet-semicolon'
|
||||
$flag_vet_shadow_vars = '-vet-shadowing'
|
||||
$flag_vet_using_stmt = '-vet-using-stmt'
|
||||
|
||||
$flag_msvc_link_disable_dynamic_base = '/DYNAMICBASE:NO'
|
||||
$flag_msvc_link_base_address = '/BASE:'
|
||||
$flag_msvc_link_fixed_base_address = '/FIXED'
|
||||
$flag_msvc_link_stack_size = '/STACK'
|
||||
$flag_msvc_link_debug = '/DEBUG'
|
||||
|
||||
# Assuming to be in default path, change if otherwise
|
||||
$odin_compiler = 'odin.exe'
|
Reference in New Issue
Block a user