@@ -23,16 +23,25 @@ $MINGW_32_URL = 'https://sourceforge.net/projects/mingw-w64/files/Toolchains%20t
2323$MINGW_64_SUM = ' 5c3fc254494bc24eb201870f4b781d401cf7279bd03ea1aba6f2ffae771ded44'
2424$MINGW_32_SUM = ' 767fa9ed3d5b236aacca96e7e510d09af5f30ad37376a5258e5a875523ca45c3'
2525
26+ $DBGHELP_64_URL = ' https://drive.google.com/uc?export=download&id=1yPSATmwkmmgoGQRA2ot2EHLlocHWhFlA'
27+ $DBGHELP_32_URL = ' https://drive.google.com/uc?export=download&id=1n60EvRKDKXaGCRLztwwiJacobgnuI-rb'
28+ $DBGHELP_64_SUM = ' 9bdc77e09a9ebdc8f810c46ed2b1171c048d6ebbe1b9ea1f927bfac66220dae5'
29+ $DBGHELP_32_SUM = ' dfdf39857b76533adb0bffd9ef9d1bc7516280f810ecea6dd5c1b5ca97809706'
30+
2631#
2732# Download and extract MinGW-w64 toolchain
2833#
2934New-Item - ItemType Directory - Force - Path downloads | Out-Null
3035if ($target -eq ' mingw64' ) {
3136 $MINGW_URL = $MINGW_64_URL
3237 $MINGW_SUM = $MINGW_64_SUM
38+ $DBGHELP_URL = $DBGHELP_64_URL
39+ $DBGHELP_SUM = $DBGHELP_64_SUM
3340} else {
3441 $MINGW_URL = $MINGW_32_URL
3542 $MINGW_SUM = $MINGW_32_SUM
43+ $DBGHELP_URL = $DBGHELP_32_URL
44+ $DBGHELP_SUM = $DBGHELP_32_SUM
3645}
3746$MINGW_ARCHIVE = Split-Path - leaf $MINGW_URL
3847$MINGW_ARCHIVE = " downloads\$MINGW_ARCHIVE "
@@ -56,6 +65,21 @@ $Env:Path = "$toolchain\bin;$Env:Path"
5665(Get-Command ' g++.exe' ).Source
5766Exec { g++ -- version }
5867
68+ $DBGHELP_ARCHIVE = ' downloads\dbghelp-$target.7z'
69+ $DBGHELP_DIR = ' downloads\dbghelp\$target'
70+ if (! (Test-Path $DBGHELP_DIR - PathType Container)) {
71+ if (! (Test-Path $DBGHELP_ARCHIVE - PathType Leaf)) {
72+ Invoke-WebRequest - Uri $DBGHELP_URL - OutFile $DBGHELP_ARCHIVE - UserAgent NativeHost
73+ $hash = (Get-FileHash $DBGHELP_ARCHIVE - Algorithm SHA256).Hash
74+ if ($hash -ne $DBGHELP_SUM ) {
75+ echo " error: ${DBGHELP_ARCHIVE} : wrong hash: ${hash} "
76+ exit 1
77+ }
78+ }
79+ Exec { 7z x - y " -o$DBGHELP_DIR " $DBGHELP_ARCHIVE | Out-Null }
80+ }
81+
82+
5983#
6084# Setup environment
6185#
@@ -79,12 +103,7 @@ try {
79103
80104Exec { cmake -- version }
81105
82- if ($target -eq ' mingw64' ) {
83- $WINDBG_DIR = " ${Env: ProgramFiles(x86)} \Windows Kits\10\Debuggers\x64"
84- } else {
85- $WINDBG_DIR = " ${Env: ProgramFiles(x86)} \Windows Kits\10\Debuggers\x86"
86- }
87- (Get-Item " $WINDBG_DIR \dbghelp.dll" ).VersionInfo.FileVersion
106+ (Get-Item " $DBGHELP_DIR \dbghelp.dll" ).VersionInfo.FileVersion
88107
89108#
90109# Configure
@@ -95,7 +114,7 @@ if ($Env:GITHUB_EVENT_NAME -eq "push" -And $Env:GITHUB_REF.StartsWith('refs/tags
95114 $coverage = $false
96115}
97116$buildDir = " $buildRoot \$target "
98- Exec { cmake " -S." " -B$buildDir " - G $generator " -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE " " -DENABLE_COVERAGE=$coverage " " -DWINDBG_DIR=$WINDBG_DIR " }
117+ Exec { cmake " -S." " -B$buildDir " - G $generator " -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE " " -DENABLE_COVERAGE=$coverage " " -DWINDBG_DIR=$DBGHELP_DIR " }
99118
100119#
101120# Build
@@ -105,7 +124,7 @@ Exec { cmake --build $buildDir --use-stderr --target all }
105124#
106125# Test
107126#
108- $Env: Path = " $WINDBG_DIR ;$Env: Path "
127+ $Env: Path = " $DBGHELP_DIR ;$Env: Path "
109128$Env: CTEST_OUTPUT_ON_FAILURE = ' 1'
110129Exec { cmake -- build $buildDir -- use-stderr -- target test }
111130
0 commit comments