mirror of
https://github.com/SatDump/SatDump
synced 2026-08-13 17:47:30 -04:00
116 lines
No EOL
3.8 KiB
PowerShell
116 lines
No EOL
3.8 KiB
PowerShell
# Preps satdump for execution within the debugger
|
|
# MSVC 2022 seems to build in a ./out/... folder
|
|
# Assume this is true
|
|
param(
|
|
[string]$platform="x64-windows", #or x86-windows, arm64-windows
|
|
[switch]$fast
|
|
)
|
|
|
|
function Parse-DumpBin($binary_path)
|
|
{
|
|
$return_val = @()
|
|
$dumpbin_result = dumpbin /dependents $binary_path
|
|
$reading = $false
|
|
for($i = 0; $i -lt $dumpbin_result.Count; $i++)
|
|
{
|
|
$this_line = $dumpbin_result[$i].trim()
|
|
if($this_line -eq "Image has the following dependencies:")
|
|
{
|
|
$i++
|
|
$reading = $true
|
|
continue
|
|
}
|
|
if($reading -and [string]::IsNullOrWhiteSpace($this_line))
|
|
{
|
|
break
|
|
}
|
|
if($reading)
|
|
{
|
|
$return_val += $this_line
|
|
}
|
|
}
|
|
|
|
return $return_val
|
|
}
|
|
|
|
cd "$(Split-Path -Parent $MyInvocation.MyCommand.Path)\..\out\build\$($platform.Split("-")[0])-Debug"
|
|
|
|
#Remove old dirs
|
|
if(Test-Path Debug\resources -ErrorAction SilentlyContinue) {rm -Recurse Debug\resources}
|
|
if(Test-Path Debug\plugins -ErrorAction SilentlyContinue) {rm -Recurse Debug\plugins}
|
|
|
|
cp -r ..\..\..\resources Debug
|
|
|
|
mkdir Debug\plugins | Out-Null
|
|
cp -force plugins\Debug\*.dll Debug\plugins
|
|
cp -force plugins\Debug\*.pdb Debug\plugins
|
|
cp -force ..\..\..\satdump_cfg.json Debug
|
|
|
|
if(-not $fast)
|
|
{
|
|
$input_dlls = Get-ChildItem Debug\ -Recurse -Filter *.dll
|
|
$input_dlls += Get-ChildItem Debug\ -Recurse -Filter *.exe
|
|
$dll_array = @()
|
|
|
|
foreach($input_dll in $input_dlls)
|
|
{
|
|
$dll_array += Parse-Dumpbin $input_dll.FullName
|
|
}
|
|
|
|
$dll_array = $dll_array | select -Unique
|
|
$available_dlls = Get-ChildItem ..\..\..\vcpkg\installed\$platform\bin -Filter *.dll
|
|
$dlls_to_copy = @()
|
|
foreach($available_dll in $available_dlls)
|
|
{
|
|
if($dll_array.Contains($available_dll.Name))
|
|
{
|
|
$dlls_to_copy += $available_dll
|
|
}
|
|
}
|
|
|
|
# Recursively get remaining dependencies
|
|
$last_count = 0
|
|
while($last_count -ne $dlls_to_copy.Count)
|
|
{
|
|
$last_count = $dlls_to_copy.Count
|
|
foreach($dll_to_copy in $dlls_to_copy)
|
|
{
|
|
$potential_dlls = Parse-DumpBin $dll_to_copy.FullName
|
|
foreach($available_dll in $available_dlls)
|
|
{
|
|
if($potential_dlls.Contains($available_dll.Name) -and -not $dlls_to_copy.Name.Contains($available_dll.Name))
|
|
{
|
|
$dlls_to_copy += $available_dll
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Copy determined dependencies
|
|
foreach($dll_to_copy in $dlls_to_copy)
|
|
{
|
|
cp -Force $dll_to_copy.FullName Debug
|
|
}
|
|
|
|
#Overwrite debug DLLs
|
|
cp -force ..\..\..\vcpkg\installed\$platform\debug\bin\libpng16d.dll Debug\libpng16.dll
|
|
cp -force ..\..\..\vcpkg\installed\$platform\debug\bin\fftw3f.dll Debug\fftw3f.dll
|
|
cp -force ..\..\..\vcpkg\installed\$platform\debug\bin\glfw3.dll Debug\glfw3.dll
|
|
cp -force ..\..\..\vcpkg\installed\$platform\debug\bin\jpeg62.dll Debug\jpeg62.dll
|
|
cp -force ..\..\..\vcpkg\installed\$platform\debug\bin\tiffd.dll Debug\tiff.dll
|
|
cp -force ..\..\..\vcpkg\installed\$platform\debug\bin\liblzma.dll Debug\liblzma.dll
|
|
cp -force ..\..\..\vcpkg\installed\$platform\debug\bin\libcurl-d.dll Debug\libcurl.dll
|
|
cp -force ..\..\..\vcpkg\installed\$platform\debug\bin\libusb-1.0.dll Debug\libusb-1.0.dll
|
|
cp -force ..\..\..\vcpkg\installed\$platform\debug\bin\pthreadVC3d.dll Debug\pthreadVC3.dll
|
|
}
|
|
|
|
#Remove stray DLLs from plugin folder, if they're there
|
|
rm Debug\plugins\fftw3f.dll | Out-Null
|
|
rm Debug\plugins\nng.dll | Out-Null
|
|
rm Debug\plugins\libusb-1.0.dll | Out-Null
|
|
rm Debug\plugins\portaudio.dll | Out-Null
|
|
rm Debug\plugins\zstd.dll | Out-Null
|
|
|
|
#Done
|
|
cd "$(Split-Path -Parent $MyInvocation.MyCommand.Path)\.."
|
|
Write-Output "Done!" |