rem ***************************************************************************
rem Set types
rem ***************************************************************************
rem any variant must without blank character ,Otherwise, the comparison error occurs!!! allen.xu1 write this
set TYP_ECU=%p01%

set TYP_MCAL=%p02%

set TYP_FAMILY=
set TYP_DERIV=

for /F "tokens=1,2 delims=_" %%a in ("%TYP_MCAL%") do (
  set TYP_FAMILY=%%a
  set TYP_DERIV=%%b
)

set TYP_CC=%p03%
set TYP_TEST=%p04%
set TYP_COVER=%p05%
set TYP_CORE=%p06%
set TYP_PRJ=%p07%
set TYP_OEM=%TYP_PRJ:~0,2%
set TYP_VAR=%p08%
set TYP_BUILD=%p09%
set TYP_KEY=%p10%
set TYP_RULE=%p11%

set TYP_NAME=%p01%%p07%_%p08%_%p09%

echo TYP_ECU           : %TYP_ECU%
echo TYP_MCAL          : %TYP_MCAL%
echo TYP_FAMILY        : %TYP_FAMILY%
echo TYP_DERIV         : %TYP_DERIV%
echo TYP_CC            : %TYP_CC%
echo TYP_TEST          : %TYP_TEST%
echo TYP_COVER         : %TYP_COVER%
echo TYP_CORE          : %TYP_CORE%
echo TYP_PRJ           : %TYP_PRJ%
echo TYP_OEM           : %TYP_OEM%
echo TYP_VAR           : %TYP_VAR%
echo TYP_BUILD         : %TYP_BUILD%
echo TYP_NAME          : %TYP_NAME%
echo TYP_KEY           : %TYP_KEY%
echo TYP_RULE          : %TYP_RULE%

rem ***************************************************************************
rem Set rules.
rem ***************************************************************************

set RULE_CLEAN=FALSE
set RULE_PREPARE=FALSE
set RULE_BUILD_C=FALSE
set RULE_FINALIZE=FALSE

if "%TYP_RULE%"=="all"               set RULE_CLEAN=FALSE
if "%TYP_RULE%"=="all"               set RULE_PREPARE=TRUE
if "%TYP_RULE%"=="all"               set RULE_BUILD_C=TRUE
if "%TYP_RULE%"=="all"               set RULE_FINALIZE=TRUE

if "%TYP_RULE%"=="all_developer"     set RULE_CLEAN=FALSE
if "%TYP_RULE%"=="all_developer"     set RULE_PREPARE=TRUE
if "%TYP_RULE%"=="all_developer"     set RULE_BUILD_C=TRUE
if "%TYP_RULE%"=="all_developer"     set RULE_FINALIZE=TRUE

if "%TYP_RULE%"=="rebuild"           set RULE_CLEAN=TRUE
if "%TYP_RULE%"=="rebuild"           set RULE_PREPARE=TRUE
if "%TYP_RULE%"=="rebuild"           set RULE_BUILD_C=TRUE
if "%TYP_RULE%"=="rebuild"           set RULE_FINALIZE=TRUE

if "%TYP_RULE%"=="rebuild_delivery"  set RULE_CLEAN=TRUE
if "%TYP_RULE%"=="rebuild_delivery"  set RULE_PREPARE=TRUE
if "%TYP_RULE%"=="rebuild_delivery"  set RULE_BUILD_C=TRUE
if "%TYP_RULE%"=="rebuild_delivery"  set RULE_FINALIZE=TRUE

if "%TYP_RULE%"=="rebuild_developer" set RULE_CLEAN=TRUE
if "%TYP_RULE%"=="rebuild_developer" set RULE_PREPARE=TRUE
if "%TYP_RULE%"=="rebuild_developer" set RULE_BUILD_C=TRUE
if "%TYP_RULE%"=="rebuild_developer" set RULE_FINALIZE=TRUE

if "%TYP_RULE%"=="clean"             set RULE_CLEAN=TRUE
if "%TYP_RULE%"=="clean"             set RULE_PREPARE=FALSE
if "%TYP_RULE%"=="clean"             set RULE_BUILD_C=FALSE
if "%TYP_RULE%"=="clean"             set RULE_FINALIZE=FALSE

echo show var2
echo RULE_CLEAN		= %RULE_CLEAN%
echo RULE_PREPARE	= %RULE_PREPARE%
echo RULE_BUILD_C	= %RULE_BUILD_C%
echo RULE_FINALIZE	= %RULE_FINALIZE%

rem ***************************************************************************
rem Set paths and params.
rem ***************************************************************************

set PATH_BACKUP=%PATH%

set GLOBAL_BASEDIR=%cd%
if "%PATH_TOOLSGENERIC%X"=="X" set PATH_TOOLSGENERIC=%GLOBAL_BASEDIR%\..\..\..\ToolsGeneric
if not exist %PATH_TOOLSGENERIC% echo ToolsGeneric directory not found. Please check PATH_TOOLSGENERIC=%PATH_TOOLSGENERIC%

set CTCVERSION=9_1_4
set CTCHOME=%PATH_TOOLSGENERIC%\DynamicCodeAnalysis\Coverage\Testwell\CTC_%CTCVERSION%
set PATH=%CTCHOME%;%PATH%

set CAFECC_BASEPATH=%GLOBAL_BASEDIR%\..\..
set AXIVIONBIN=%PATH_TOOLSGENERIC%\StaticCodeAnalysis\AXIVION\bauhaus-suite-7_4_3-x86_64-windows\bauhaus-suite\bin
set PATH=%AXIVIONBIN%;%PATH%

set NUMBER_OF_JOBS=%NUMBER_OF_PROCESSORS%
if not "%GNUMAKE_MAX_JOBS%X"=="X" set NUMBER_OF_JOBS=%GNUMAKE_MAX_JOBS%

set GNUMAKE=%PATH_TOOLSGENERIC%\Utilities\CommonDomain\make\make.exe 
if not exist %GNUMAKE% echo make.exe not found. Please check PATH_TOOLSGENERIC=%PATH_TOOLSGENERIC%

set GNUMAKEPARAMS=TYP_ECU=%TYP_ECU% TYP_MCAL=%TYP_MCAL% TYP_CC=%TYP_CC% TYP_TEST=%TYP_TEST% TYP_COVER=%TYP_COVER%  TYP_CORE=%TYP_CORE%  TYP_OEM=%TYP_OEM% TYP_PRJ=%TYP_PRJ% TYP_VAR=%TYP_VAR% TYP_BUILD=%TYP_BUILD% TYP_NAME=%TYP_NAME% TYP_KEY=%TYP_KEY% TYP_RULE=%TYP_RULE% 

set BAUHAUS_CONFIG=%GLOBAL_BASEDIR%\..\ToolsSpecific\Cust\In\In005\AXIVION

rem ***************************************************************************
rem Echo the build parameters.
rem ***************************************************************************

echo.
echo GLOBAL_BASEDIR    : %GLOBAL_BASEDIR%
echo RULE_CLEAN        : %RULE_CLEAN%
echo RULE_PREPARE      : %RULE_PREPARE%
echo RULE_BUILD_C      : %RULE_BUILD_C%
echo RULE_FINALIZE     : %RULE_FINALIZE%
echo GNUMAKE           : %GNUMAKE%
echo GNUMAKEPARAMS     : %GNUMAKEPARAMS%
echo .
echo .

rem ***************************************************************************
rem Execute the build rules.
rem ***************************************************************************

if "%RULE_CLEAN%"=="TRUE" (
  echo The rule SingleCore_Clean with jobs 1 is:
  echo %GNUMAKE% %GNUMAKEPARAMS% --jobs=1 -k -f %GLOBAL_BASEDIR%\..\Make\Make_000.gmk SingleCore_Clean
  echo.
  %GNUMAKE% %GNUMAKEPARAMS% SHELL=CMD --jobs=1 -k -f %GLOBAL_BASEDIR%\..\Make\Make_000.gmk SingleCore_Clean   
)

if "%RULE_PREPARE%"=="TRUE" (
  echo The rule SingleCore_Prepare with jobs 1 is:
  echo %GNUMAKE% %GNUMAKEPARAMS% --jobs=1 -k -f %GLOBAL_BASEDIR%\..\Make\Make_000.gmk SingleCore_Prepare
  echo.
  %GNUMAKE% %GNUMAKEPARAMS% SHELL=CMD --jobs=1 -k -f %GLOBAL_BASEDIR%\..\Make\Make_000.gmk SingleCore_Prepare   
)

if "%RULE_BUILD_C%"=="TRUE" (
  echo The rule MultiCore_Build_C with jobs %NUMBER_OF_JOBS% is:
  echo %GNUMAKE% %GNUMAKEPARAMS% --jobs=%NUMBER_OF_JOBS% -k -f %GLOBAL_BASEDIR%\..\Make\Make_000.gmk MultiCore_Build_C
  echo.
  %GNUMAKE% %GNUMAKEPARAMS% SHELL=CMD --jobs=%NUMBER_OF_JOBS% -k -f %GLOBAL_BASEDIR%\..\Make\Make_000.gmk MultiCore_Build_C
)

if "%RULE_FINALIZE%"=="TRUE" (
  echo The rule SingleCore_Finalize with jobs 1 is:
  echo %GNUMAKE% %GNUMAKEPARAMS% --jobs=1 -k -f %GLOBAL_BASEDIR%\..\Make\Make_000.gmk SingleCore_Finalize
  echo.
  %GNUMAKE% %GNUMAKEPARAMS% SHELL=CMD --jobs=1 -k -f %GLOBAL_BASEDIR%\..\Make\Make_000.gmk SingleCore_Finalize
)

echo.

set PATH=%PATH_BACKUP%

echo Get elapsed time...

for /F "tokens=1-4 delims=:.," %%a in ("%time%") do (
   set /A "end=(((%%a*60)+1%%b %% 100)*60+1%%c %% 100)*100+1%%d %% 100"
)


set /A elapsed=end-start

set /A hh=elapsed/(60*60*100), rest=elapsed%%(60*60*100), mm=rest/(60*100), rest%%=60*100, ss=rest/100, cc=rest%%100
if %mm% lss 10 set mm=0%mm%
if %ss% lss 10 set ss=0%ss%
if %cc% lss 10 set cc=0%cc%

echo Build Duration: %hh%:%mm%:%ss%,%cc%

echo.

echo Build finished
