From 40d1adb3ebf215bacf89d866fd72bfad897daec3 Mon Sep 17 00:00:00 2001 From: Yunhua Feng Date: Tue, 7 Aug 2018 09:35:33 +0800 Subject: BaseTools: Fix incorrect %EDK_TOOLS_PATH% For non-root folder, such as "X:\test", the EDK_TOOLS_PATH will resolve to "X:\test\edk2\BaseTools". This is OK. But if WORKSPACE is at a root folder, such as "X:\", the EDK_TOOLS_PATH will look like "X:\\BaseTools". The *double backslash* can fail the command like "del" and thus affect the %ERRORLEVEL% variable, which may break subsequent build processing. Cc: Liming Gao Cc: Yonghong Zhu Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Yunhua Feng Reviewed-by: Liming Gao --- edksetup.bat | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/edksetup.bat b/edksetup.bat index 97e2330e8c..c32755a471 100755 --- a/edksetup.bat +++ b/edksetup.bat @@ -59,22 +59,33 @@ if /I "%1"=="/help" goto Usage if /I "%1"=="NewBuild" shift if not defined EDK_TOOLS_PATH ( - if exist %WORKSPACE%\BaseTools ( - set EDK_TOOLS_PATH=%WORKSPACE%\BaseTools - ) else ( - if defined PACKAGES_PATH ( - for %%i IN (%PACKAGES_PATH%) DO ( - if exist %%~fi\BaseTools ( - set EDK_TOOLS_PATH=%%~fi\BaseTools - goto checkNt32Flag - ) + goto SetEdkToolsPath +) else ( + goto checkNt32Flag +) + +:SetEdkToolsPath +if %WORKSPACE:~-1% EQU \ ( + @set EDK_BASETOOLS=%WORKSPACE%BaseTools +) else ( + @set EDK_BASETOOLS=%WORKSPACE%\BaseTools +) +if exist %EDK_BASETOOLS% ( + set EDK_TOOLS_PATH=%EDK_BASETOOLS% + set EDK_BASETOOLS= +) else ( + if defined PACKAGES_PATH ( + for %%i IN (%PACKAGES_PATH%) DO ( + if exist %%~fi\BaseTools ( + set EDK_TOOLS_PATH=%%~fi\BaseTools + goto checkNt32Flag ) - ) else ( - echo. - echo !!! ERROR !!! Cannot find BaseTools !!! - echo. - goto BadBaseTools ) + ) else ( + echo. + echo !!! ERROR !!! Cannot find BaseTools !!! + echo. + goto BadBaseTools ) ) -- cgit v1.2.3