@@ -34,6 +34,35 @@ $VCPKG_DIR = Join-Path "$SRC_DIR" "tools/vcpkg"
3434
3535$Env: CTEST_OUTPUT_ON_FAILURE = " 1"
3636
37+ function FindAndMergeDllPath {
38+ param (
39+ [string []]$AdditionalDirs
40+ )
41+
42+ $FINAL_PATH = $env: PATH
43+ $PATH_SET = @ {}
44+ $PATH_ITEMS = $FINAL_PATH -split [IO.Path ]::PathSeparator
45+ foreach ($item in $PATH_ITEMS ) {
46+ $PATH_SET [$item ] = $true
47+ }
48+
49+ foreach ($dir in $AdditionalDirs ) {
50+ $GLOB_PATTERN = Join-Path " $dir " " *.dll"
51+ $DETECTED_DLL_FILES = Get-ChildItem - Path $GLOB_PATTERN - Recurse
52+ $DETECTED_DLL_DIRS = $ (foreach ($dll_file in $DETECTED_DLL_FILES ) {
53+ $dll_file.Directory.FullName
54+ }) | Sort-Object | Get-Unique
55+ foreach ($dll_dir in $DETECTED_DLL_DIRS ) {
56+ if (-not $PATH_SET.ContainsKey ($dll_dir )) {
57+ $FINAL_PATH = " $dll_dir " + [IO.Path ]::PathSeparator + $FINAL_PATH
58+ $PATH_SET [$dll_dir ] = $true
59+ }
60+ }
61+ }
62+
63+ return $FINAL_PATH
64+ }
65+
3766switch ($action ) {
3867 " bazel.build" {
3968 bazel $BAZEL_STARTUP_OPTIONS build $BAZEL_OPTIONS -- action_env= VCPKG_DIR= $VCPKG_DIR -- deleted_packages= opentracing- shim -- // ...
@@ -77,7 +106,7 @@ switch ($action) {
77106 if ($exit -ne 0 ) {
78107 exit $exit
79108 }
80- $env: PATH = " $BUILD_DIR \ext\src\dll\Debug; $ env: PATH "
109+ $env: PATH = FindAndMergeDllPath " $BUILD_DIR \ext\src\dll\Debug"
81110 ctest - C Debug
82111 $exit = $LASTEXITCODE
83112 if ($exit -ne 0 ) {
@@ -100,7 +129,7 @@ switch ($action) {
100129 if ($exit -ne 0 ) {
101130 exit $exit
102131 }
103- $env: PATH = " $BUILD_DIR \ext\src\dll\Debug; $ env: PATH "
132+ $env: PATH = FindAndMergeDllPath " $BUILD_DIR \ext\src\dll\Debug"
104133 ctest - C Debug
105134 $exit = $LASTEXITCODE
106135 if ($exit -ne 0 ) {
@@ -126,11 +155,7 @@ switch ($action) {
126155 exit $exit
127156 }
128157
129- $ALL_DLL_FILES = Get-ChildItem - Path " ./*.dll" - Recurse
130- $ALL_DLL_DIRS = $ (foreach ($dll_file in $ALL_DLL_FILES ) {
131- $dll_file.Directory.FullName
132- }) | Sort-Object | Get-Unique
133- $env: PATH = ($ALL_DLL_DIRS -Join [IO.Path ]::PathSeparator) + [IO.Path ]::PathSeparator + $env: PATH
158+ $env: PATH = FindAndMergeDllPath " ."
134159 Write-Output " PATH=$env: PATH "
135160
136161 ctest - C Debug
@@ -160,11 +185,7 @@ switch ($action) {
160185 exit $exit
161186 }
162187
163- $ALL_DLL_FILES = Get-ChildItem - Path " ./*.dll" - Recurse
164- $ALL_DLL_DIRS = $ (foreach ($dll_file in $ALL_DLL_FILES ) {
165- $dll_file.Directory.FullName
166- }) | Sort-Object | Get-Unique
167- $env: PATH = ($ALL_DLL_DIRS -Join [IO.Path ]::PathSeparator) + [IO.Path ]::PathSeparator + $env: PATH
188+ $env: PATH = FindAndMergeDllPath " ."
168189 Write-Output " PATH=$env: PATH "
169190
170191 ctest - C Debug
@@ -192,11 +213,7 @@ switch ($action) {
192213 exit $exit
193214 }
194215
195- $ALL_DLL_FILES = Get-ChildItem - Path " ./*.dll" - Recurse
196- $ALL_DLL_DIRS = $ (foreach ($dll_file in $ALL_DLL_FILES ) {
197- $dll_file.Directory.FullName
198- }) | Sort-Object | Get-Unique
199- $env: PATH = ($ALL_DLL_DIRS -Join [IO.Path ]::PathSeparator) + [IO.Path ]::PathSeparator + $env: PATH
216+ $env: PATH = FindAndMergeDllPath " ."
200217 Write-Output " PATH=$env: PATH "
201218
202219 ctest - C Debug
@@ -221,11 +238,7 @@ switch ($action) {
221238 exit $exit
222239 }
223240
224- $ALL_DLL_FILES = Get-ChildItem - Path " ./*.dll" - Recurse
225- $ALL_DLL_DIRS = $ (foreach ($dll_file in $ALL_DLL_FILES ) {
226- $dll_file.Directory.FullName
227- }) | Sort-Object | Get-Unique
228- $env: PATH = ($ALL_DLL_DIRS -Join [IO.Path ]::PathSeparator) + [IO.Path ]::PathSeparator + $env: PATH
241+ $env: PATH = FindAndMergeDllPath " ."
229242 Write-Output " PATH=$env: PATH "
230243
231244 ctest - C Debug
@@ -240,7 +253,7 @@ switch ($action) {
240253 " -C $SRC_DIR /test_common/cmake/all-options-abiv1-preview.cmake" `
241254 - DWITH_OPENTRACING= OFF `
242255 - DVCPKG_TARGET_TRIPLET= x64- windows `
243- " -DCMAKE_TOOLCHAIN_FILE=$VCPKG_DIR /scripts/buildsystems/vcpkg.cmake"
256+ " -DCMAKE_TOOLCHAIN_FILE=$VCPKG_DIR /scripts/buildsystems/vcpkg.cmake"
244257 $exit = $LASTEXITCODE
245258 if ($exit -ne 0 ) {
246259 exit $exit
@@ -251,11 +264,7 @@ switch ($action) {
251264 exit $exit
252265 }
253266
254- $ALL_DLL_FILES = Get-ChildItem - Path " ./*.dll" - Recurse
255- $ALL_DLL_DIRS = $ (foreach ($dll_file in $ALL_DLL_FILES ) {
256- $dll_file.Directory.FullName
257- }) | Sort-Object | Get-Unique
258- $env: PATH = ($ALL_DLL_DIRS -Join [IO.Path ]::PathSeparator) + [IO.Path ]::PathSeparator + $env: PATH
267+ $env: PATH = FindAndMergeDllPath " ."
259268 Write-Output " PATH=$env: PATH "
260269
261270 ctest - C Debug
@@ -280,7 +289,7 @@ switch ($action) {
280289 if ($exit -ne 0 ) {
281290 exit $exit
282291 }
283- $env: PATH = " $BUILD_DIR \ext\src\dll\Debug; $ env: PATH "
292+ $env: PATH = FindAndMergeDllPath " $BUILD_DIR \ext\src\dll\Debug"
284293 ctest - C Debug
285294 $exit = $LASTEXITCODE
286295 if ($exit -ne 0 ) {
@@ -305,11 +314,7 @@ switch ($action) {
305314 exit $exit
306315 }
307316
308- $ALL_DLL_FILES = Get-ChildItem - Path " ./*.dll" - Recurse
309- $ALL_DLL_DIRS = $ (foreach ($dll_file in $ALL_DLL_FILES ) {
310- $dll_file.Directory.FullName
311- }) | Sort-Object | Get-Unique
312- $env: PATH = ($ALL_DLL_DIRS -Join [IO.Path ]::PathSeparator) + [IO.Path ]::PathSeparator + $env: PATH
317+ $env: PATH = FindAndMergeDllPath " ."
313318 Write-Output " PATH=$env: PATH "
314319
315320 ctest - C Debug
@@ -413,7 +418,7 @@ switch ($action) {
413418 exit $exit
414419 }
415420
416- $env: PATH = " $INSTALL_TEST_DIR \bin; $ env: PATH "
421+ $env: PATH = FindAndMergeDllPath " . " " $INSTALL_TEST_DIR \bin"
417422
418423 $CMAKE_OPTIONS_STRING = $CMAKE_OPTIONS -join " "
419424
@@ -438,6 +443,9 @@ switch ($action) {
438443 mkdir " $BUILD_DIR \install_test"
439444 cd " $BUILD_DIR \install_test"
440445
446+ $env: PATH = FindAndMergeDllPath " ."
447+ Write-Output " PATH=$env: PATH "
448+
441449 cmake $CMAKE_OPTIONS `
442450 " -DCMAKE_PREFIX_PATH=$INSTALL_TEST_DIR " `
443451 " -DINSTALL_TEST_CMAKE_OPTIONS=$CMAKE_OPTIONS_STRING " `
@@ -513,9 +521,9 @@ switch ($action) {
513521 exit $exit
514522 }
515523
516- $env: PATH = " $INSTALL_TEST_DIR \bin; $ env: PATH "
524+ $env: PATH = FindAndMergeDllPath " . " " $INSTALL_TEST_DIR \bin"
517525
518- echo " $env: PATH "
526+ Write-Output " PATH= $env: PATH "
519527
520528 $CMAKE_OPTIONS_STRING = $CMAKE_OPTIONS -join " "
521529
@@ -533,6 +541,9 @@ switch ($action) {
533541 mkdir " $BUILD_DIR \install_test"
534542 cd " $BUILD_DIR \install_test"
535543
544+ $env: PATH = FindAndMergeDllPath " ."
545+ Write-Output " PATH=$env: PATH "
546+
536547 cmake $CMAKE_OPTIONS `
537548 " -DCMAKE_PREFIX_PATH=$INSTALL_TEST_DIR " `
538549 " -DINSTALL_TEST_CMAKE_OPTIONS=$CMAKE_OPTIONS_STRING " `
0 commit comments