1
0
mirror of https://github.com/azure-rtos/threadx synced 2025-01-30 08:02:57 +08:00
threadx/test/ports/azrtos_cicd.old.bat

282 lines
12 KiB
Batchfile

@REM ***************************************************************************
@REM
@REM Builds/Cleans/Tests all examples
@REM
@REM Call this script without parameters for usage help.
@REM
@REM ***************************************************************************
@ECHO OFF
SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION
SET SCRIPT_NAME=%~n0%~x0
CALL :DBG_MSG "SCRIPT_NAME: %SCRIPT_NAME%"
SET "AZRTOS_TEST_DIR=%~dp0"
CALL :DBG_MSG "AZRTOS_TEST_DIR: %AZRTOS_TEST_DIR%"
SET "AZRTOS_REPO_DIR=%~dp0..\."
CALL :DBG_MSG "AZRTOS_REPO_DIR: %AZRTOS_REPO_DIR%"
CALL :DBG_MSG "Parsing parameters..."
IF /I "%1" EQU "" GOTO PRINT_USAGE_AND_EXIT
IF /I "%1" EQU "BUILD" SET FLAG_DO_WHAT=BUILD
IF /I "%1" EQU "CLEAN" SET FLAG_DO_WHAT=CLEAN
IF /I "%1" EQU "TEST" SET FLAG_DO_WHAT=TEST
IF "%FLAG_DO_WHAT%"=="" GOTO PRINT_USAGE_AND_EXIT
CALL :DBG_MSG "FLAG_DO_WHAT: %FLAG_DO_WHAT%"
SHIFT
IF /I "%1" EQU "" GOTO PRINT_USAGE_AND_EXIT
IF /I "%1" EQU "TX" SET FLAG_DO_WHICH=TX
IF /I "%1" EQU "TXM" SET FLAG_DO_WHICH=TXM
IF "%FLAG_DO_WHICH%"=="" GOTO PRINT_USAGE_AND_EXIT
CALL :DBG_MSG "FLAG_DO_WHICH: %FLAG_DO_WHICH%"
SET FLAG_GHS=0
SET FLAG_IAR=0
SET FLAG_AC5=0
SET FLAG_AC6=0
SET FLAG_KUV=0
SET FLAG_GNU=0
CALL :DBG_MSG "Parsing groups..."
:PARSE_GROUP_PARAMS
SHIFT
IF /I "%1" EQU "" GOTO GROUP_PARAMS_PARSED
IF /I "%1" EQU "ALL" (
SET FLAG_IAR=1
SET FLAG_GHS=1
SET FLAG_AC5=1
SET FLAG_AC6=1
SET FLAG_KUV=1
SET FLAG_GNU=1
)
IF /I "%1" EQU "IAR" SET FLAG_IAR=1
IF /I "%1" EQU "GHS" SET FLAG_GHS=1
IF /I "%1" EQU "AC5" SET FLAG_AC5=1
IF /I "%1" EQU "AC6" SET FLAG_AC6=1
IF /I "%1" EQU "KUV" SET FLAG_KUV=1
IF /I "%1" EQU "GNU" SET FLAG_GNU=1
GOTO PARSE_GROUP_PARAMS
CALL :DBG_MSG "Groups parsed."
:GROUP_PARAMS_PARSED
CALL :DBG_MSG "FLAG_IAR: %FLAG_IAR%"
CALL :DBG_MSG "FLAG_GHS: %FLAG_GHS%"
CALL :DBG_MSG "FLAG_AC5: %FLAG_AC5%"
CALL :DBG_MSG "FLAG_AC6: %FLAG_AC6%"
CALL :DBG_MSG "FLAG_KUV: %FLAG_KUV%"
CALL :DBG_MSG "FLAG_GNU: %FLAG_GNU%"
CALL :DBG_MSG "Parameters parsed."
IF %FLAG_IAR% EQU 1 (
CALL azrtos_setenv_iar.bat
IF %ERRORLEVEL% NEQ 0 GOTO :SETENV_ERROR
)
IF %FLAG_GHS% EQU 1 (
CALL azrtos_setenv_ghs.bat
IF %ERRORLEVEL% NEQ 0 GOTO :SETENV_ERROR
)
IF %FLAG_AC5% EQU 1 (
CALL azrtos_setenv_ac5.bat
IF %ERRORLEVEL% NEQ 0 GOTO :SETENV_ERROR
)
IF %FLAG_AC6% EQU 1 (
CALL azrtos_setenv_ac6.bat
IF %ERRORLEVEL% NEQ 0 GOTO :SETENV_ERROR
)
IF %FLAG_KUV% EQU 1 (
CALL azrtos_setenv_kuv.bat
IF %ERRORLEVEL% NEQ 0 GOTO :SETENV_ERROR
)
IF %FLAG_GNU% EQU 1 (
CALL azrtos_setenv_gnu.bat
IF %ERRORLEVEL% NEQ 0 GOTO :SETENV_ERROR
)
IF "%FLAG_DO_WHAT%" EQU "TEST" (
IF %FLAG_GNU% EQU 1 (
CALL azrtos_setenv_arm_dbg.bat
)
)
SET LOGFILE=%AZRTOS_REPO_DIR%\test\azrtos_do_all.log
CALL :DBG_MSG "LOGFILE: %LOGFILE%"
SET /A DIR_COUNT=0
SET /A DIR_SUCCESS_COUNT=0
SET /A DIR_ERROR_COUNT=0
IF %FLAG_DO_WHICH%==TX (
IF %FLAG_IAR%==1 (
CALL :DO_DIR IAR CORTEX_M0 %AZRTOS_REPO_DIR%\ports\cortex_m0\iar\example_build
CALL :DO_DIR IAR CORTEX_M3 %AZRTOS_REPO_DIR%\ports\cortex_m3\iar\example_build
CALL :DO_DIR IAR CORTEX_M4 %AZRTOS_REPO_DIR%\ports\cortex_m4\iar\example_build
CALL :DO_DIR IAR CORTEX_M7 %AZRTOS_REPO_DIR%\ports\cortex_m7\iar\example_build
REM CALL :DO_DIR IAR CORTEX_M23 %AZRTOS_REPO_DIR%\ports\cortex_m23\iar\example_build
REM CALL :DO_DIR IAR CORTEX_M33 %AZRTOS_REPO_DIR%\ports\cortex_m33\iar\example_build
CALL :DO_DIR IAR CORTEX_R4 %AZRTOS_REPO_DIR%\ports\cortex_r4\iar\example_build
CALL :DO_DIR IAR CORTEX_R5 %AZRTOS_REPO_DIR%\ports\cortex_r5\iar\example_build
CALL :DO_DIR IAR CORTEX_A5 %AZRTOS_REPO_DIR%\ports\cortex_a5\iar\example_build
CALL :DO_DIR IAR CORTEX_A7 %AZRTOS_REPO_DIR%\ports\cortex_a7\iar\example_build
CALL :DO_DIR IAR CORTEX_A8 %AZRTOS_REPO_DIR%\ports\cortex_a8\iar\example_build
CALL :DO_DIR IAR CORTEX_A9 %AZRTOS_REPO_DIR%\ports\cortex_a9\iar\example_build
CALL :DO_DIR IAR CORTEX_A15 %AZRTOS_REPO_DIR%\ports\cortex_a15\iar\example_build
CALL :DO_DIR IAR CORTEX_ARM9 %AZRTOS_REPO_DIR%\ports\arm9\iar\example_build
CALL :DO_DIR IAR CORTEX_ARM11 %AZRTOS_REPO_DIR%\ports\arm11\iar\example_build
REM CALL :DO_DIR IAR RISC_V32 %AZRTOS_REPO_DIR%\ports\risc-v32\iar\example_build
)
IF %FLAG_GHS%==1 (
CALL :DO_DIR GHS CORTEX_M3 %AZRTOS_REPO_DIR%\ports\cortex_m3\ghs\example_build
CALL :DO_DIR GHS CORTEX_M4 %AZRTOS_REPO_DIR%\ports\cortex_m4\ghs\example_build
CALL :DO_DIR GHS CORTEX_M7 %AZRTOS_REPO_DIR%\ports\cortex_m7\ghs\example_build
CALL :DO_DIR GHS CORTEX_R4 %AZRTOS_REPO_DIR%\ports\cortex_r4\ghs\example_build
CALL :DO_DIR GHS CORTEX_R5 %AZRTOS_REPO_DIR%\ports\cortex_r5\ghs\example_build
CALL :DO_DIR GHS CORTEX_R7 %AZRTOS_REPO_DIR%\ports\cortex_r7\ghs\example_build
CALL :DO_DIR GHS CORTEX_A5 %AZRTOS_REPO_DIR%\ports\cortex_a5\ghs\example_build
CALL :DO_DIR GHS CORTEX_A7 %AZRTOS_REPO_DIR%\ports\cortex_a7\ghs\example_build
CALL :DO_DIR GHS CORTEX_A8 %AZRTOS_REPO_DIR%\ports\cortex_a8\ghs\example_build
CALL :DO_DIR GHS CORTEX_A9 %AZRTOS_REPO_DIR%\ports\cortex_a9\ghs\example_build
)
IF %FLAG_AC5%==1 (
CALL :DO_DIR AC5 CORTEX_M4 %AZRTOS_REPO_DIR%\ports\cortex_m4\ac5\example_build
)
IF %FLAG_AC6%==1 (
CALL :DO_DIR AC6 CORTEX_M0 %AZRTOS_REPO_DIR%\ports\cortex_m0\ac6\example_build
CALL :DO_DIR AC6 CORTEX_M3 %AZRTOS_REPO_DIR%\ports\cortex_m3\ac6\example_build
CALL :DO_DIR AC6 CORTEX_M4 %AZRTOS_REPO_DIR%\ports\cortex_m4\ac6\example_build
CALL :DO_DIR AC6 CORTEX_M7 %AZRTOS_REPO_DIR%\ports\cortex_m7\ac6\example_build
REM CALL :DO_DIR AC6 CORTEX_M23 %AZRTOS_REPO_DIR%\ports\cortex_m23\ac6\example_build
REM CALL :DO_DIR AC6 CORTEX_M33 %AZRTOS_REPO_DIR%\ports\cortex_m33\ac6\example_build
CALL :DO_DIR AC6 CORTEX_R4 %AZRTOS_REPO_DIR%\ports\cortex_r4\ac6\example_build
CALL :DO_DIR AC6 CORTEX_R5 %AZRTOS_REPO_DIR%\ports\cortex_r5\ac6\example_build
CALL :DO_DIR AC6 CORTEX_A5X %AZRTOS_REPO_DIR%\ports\cortex_a5x\ac6\example_build
CALL :DO_DIR AC6 CORTEX_A7 %AZRTOS_REPO_DIR%\ports\cortex_a7\ac6\example_build
CALL :DO_DIR AC6 CORTEX_A8 %AZRTOS_REPO_DIR%\ports\cortex_a8\ac6\example_build
CALL :DO_DIR AC6 CORTEX_A9 %AZRTOS_REPO_DIR%\ports\cortex_a9\ac6\example_build
CALL :DO_DIR AC6 CORTEX_A15 %AZRTOS_REPO_DIR%\ports\cortex_a15\ac6\example_build
)
IF %FLAG_KUV%==1 (
CALL :DO_DIR KUV CORTEX_M3 %AZRTOS_REPO_DIR%\ports\cortex_m3\keil\example_build
CALL :DO_DIR KUV CORTEX_M4 %AZRTOS_REPO_DIR%\ports\cortex_m4\keil\example_build
)
IF %FLAG_GNU%==1 (
CALL :DO_DIR GNU CORTEX_M0 %AZRTOS_REPO_DIR%\ports\cortex_m0\gnu\example_build
CALL :DO_DIR GNU CORTEX_M3 %AZRTOS_REPO_DIR%\ports\cortex_m3\gnu\example_build
CALL :DO_DIR GNU CORTEX_M4 %AZRTOS_REPO_DIR%\ports\cortex_m4\gnu\example_build
CALL :DO_DIR GNU CORTEX_M7 %AZRTOS_REPO_DIR%\ports\cortex_m7\gnu\example_build
REM CALL :DO_DIR GNU CORTEX_M23 %AZRTOS_REPO_DIR%\ports\cortex_m23\gnu\example_build
REM CALL :DO_DIR GNU CORTEX_M33 %AZRTOS_REPO_DIR%\ports\cortex_m33\gnu\example_build
CALL :DO_DIR GNU CORTEX_R4 %AZRTOS_REPO_DIR%\ports\cortex_r4\gnu\example_build
CALL :DO_DIR GNU CORTEX_R5 %AZRTOS_REPO_DIR%\ports\cortex_r5\gnu\example_build
CALL :DO_DIR GNU CORTEX_A5 %AZRTOS_REPO_DIR%\ports\cortex_a5\gnu\example_build
CALL :DO_DIR GNU CORTEX_A7 %AZRTOS_REPO_DIR%\ports\cortex_a7\gnu\example_build
CALL :DO_DIR GNU CORTEX_A8 %AZRTOS_REPO_DIR%\ports\cortex_a8\gnu\example_build
CALL :DO_DIR GNU CORTEX_A9 %AZRTOS_REPO_DIR%\ports\cortex_a9\gnu\example_build
CALL :DO_DIR GNU CORTEX_A15 %AZRTOS_REPO_DIR%\ports\cortex_a15\gnu\example_build
REM CALL :DO_DIR GNU CORTEX_A35 %AZRTOS_REPO_DIR%\ports\cortex_a35\gnu\example_build
)
)
IF %FLAG_DO_WHICH%==TXM (
IF %FLAG_IAR%==1 (
SET CURRENT_TOOLCHAIN=IAR
CALL :DO_DIR IAR CORTEX_M3 %AZRTOS_REPO_DIR%\ports_module\cortex-m3\iar\example_build
CALL :DO_DIR IAR CORTEX_M4 %AZRTOS_REPO_DIR%\ports_module\cortex-m4\iar\example_build
CALL :DO_DIR IAR CORTEX_M7 %AZRTOS_REPO_DIR%\ports_module\cortex-m7\iar\example_build
CALL :DO_DIR IAR CORTEX_R4 %AZRTOS_REPO_DIR%\ports_module\cortex-r4\iar\example_build
)
IF %FLAG_AC5%==1 (
CALL :DO_DIR AC5 CORTEX_M3 %AZRTOS_REPO_DIR%\ports_module\cortex-m3\ac5\example_build
CALL :DO_DIR AC5 CORTEX_M4 %AZRTOS_REPO_DIR%\ports_module\cortex-m4\ac5\example_build
CALL :DO_DIR AC5 CORTEX_M7 %AZRTOS_REPO_DIR%\ports_module\cortex-m7\ac5\example_build
CALL :DO_DIR AC5 CORTEX_A7 %AZRTOS_REPO_DIR%\ports_module\cortex-a7\ac5\example_build
)
IF %FLAG_AC6%==1 (
CALL :DO_DIR AC6 CORTEX_M3 %AZRTOS_REPO_DIR%\ports_module\cortex-m3\ac6\example_build
CALL :DO_DIR AC6 CORTEX_M4 %AZRTOS_REPO_DIR%\ports_module\cortex-m4\ac6\example_build
CALL :DO_DIR AC6 CORTEX_M7 %AZRTOS_REPO_DIR%\ports_module\cortex-m7\ac6\example_build
CALL :DO_DIR AC6 CORTEX_R4 %AZRTOS_REPO_DIR%\ports_module\cortex-r4\ac6\example_build
)
IF %FLAG_KUV%==1 (
CALL :DO_DIR KUV CORTEX_M4 %AZRTOS_REPO_DIR%\ports_module\cortex-m4\keil\example_build
)
IF %FLAG_GNU%==1 (
CALL :DO_DIR GNU CORTEX_M3 %AZRTOS_REPO_DIR%\ports_module\cortex-m3\gnu\example_build
CALL :DO_DIR GNU CORTEX_M4 %AZRTOS_REPO_DIR%\ports_module\cortex-m4\gnu\example_build
CALL :DO_DIR GNU CORTEX_M7 %AZRTOS_REPO_DIR%\ports_module\cortex-m7\gnu\example_build
)
)
CALL :DBG_MSG "All operations called."
CALL :DBG_MSG "Printing results."
CALL :OUT_MSG "INFO: %FLAG_DO_WHAT% results:"
CALL :OUT_MSG "INFO: %DIR_COUNT% total."
CALL :OUT_MSG "INFO: %DIR_SUCCESS_COUNT% completed successfully."
IF "%DIR_ERROR_COUNT%" NEQ "0" CALL :OUT_MSG "ERROR: %DIR_ERROR_COUNT% failed."
CALL :OUT_MSG "INFO: Ending %FLAG_DO_WHAT% on %DATE% at %TIME%."
EXIT /B 0
:PRINT_USAGE_AND_EXIT
ECHO.
ECHO Usage:
ECHO %SCRIPT_NAME% {build^|clean^|test} {tx^|txm} [[group] [[group] [...]]]
ECHO Performs the selected operation on ThreadX or ThreadX Modules examples in one or more groups,
ECHO where group is one of the following:
ECHO ALL -- ALL examples
ECHO IAR -- IAR Embedded Workbench examples
ECHO GHS -- Green Hills Software examples
ECHO AC5 -- ARM Developer Studio 5 examples
ECHO AC6 -- ARM Developer Studio 6 examples
ECHO KUV -- KEIL uVision
ECHO GNU -- GNU Compiler Collection
ECHO If no parameters are passed usage information is displayed.
ECHO Outputs a report to standard output.
ECHO Creates a log file with all output.
ECHO.
EXIT /B 0
:SETENV_ERROR
CALL :OUT_MSG "ERROR: failed to set the environment"
EXIT 1
:DO_DIR
SET "CURRENT_TOOLCHAIN=%~1"
SET "CURRENT_PLATFORM=%~2"
SET "CURRENT_DIRECTORY=%~3"
CALL :DBG_MSG "CURRENT_DIRECTORY: %CURRENT_DIRECTORY%"
IF NOT EXIST %CURRENT_DIRECTORY% (
EXIT /B 1
CALL :OUT_MSG "ERROR: Directory doesn't exist: CURRENT_DIRECTORY"
)
PUSHD %CURRENT_DIRECTORY%
IF /I "%FLAG_DO_WHAT%" EQU "BUILD" SET CURRENT_SCRIPT=%AZRTOS_REPO_DIR%\test\azrtos_build_%FLAG_DO_WHICH%_%CURRENT_TOOLCHAIN%.bat
IF /I "%FLAG_DO_WHAT%" EQU "CLEAN" SET CURRENT_SCRIPT=%AZRTOS_REPO_DIR%\test\azrtos_clean_%FLAG_DO_WHICH%_%CURRENT_TOOLCHAIN%.bat
IF /I "%FLAG_DO_WHAT%" EQU "TEST" SET CURRENT_SCRIPT=%AZRTOS_REPO_DIR%\test\azrtos_test_%FLAG_DO_WHICH%_%CURRENT_TOOLCHAIN%_%CURRENT_PLATFORM%.bat
IF DEFINED DEBUG ECHO DEBUG: %CURRENT_SCRIPT%
IF NOT EXIST %CURRENT_SCRIPT% (
CALL :OUT_MSG "ERROR: script does not exist: %CURRENT_SCRIPT%"
) ELSE (
CALL :OUT_MSG "INFO: STARTING: %FLAG_DO_WHAT%: %CD% - %DATE% %TIME%"
SET /A DIR_COUNT+=1
CALL %CURRENT_SCRIPT% >> %LOGFILE% 2>&1
IF %ERRORLEVEL% EQU 0 (
CALL :OUT_MSG "INFO: SUCCESS: %FLAG_DO_WHAT%: %CD% - %DATE% %TIME%"
SET /A DIR_SUCCESS_COUNT+=1
) ELSE (
CALL :OUT_MSG "ERROR: %FLAG_DO_WHAT%: %CD% - %DATE% %TIME%"
SET /A DIR_ERROR_COUNT+=1
)
POPD
)
EXIT /B 0
:DBG_MSG
IF DEFINED AZRTOS_DEBUG (ECHO DEBUG: %~1)
EXIT /B 0
:OUT_MSG
ECHO %~1
IF DEFINED LOGFILE (ECHO %~1 > %LOGFILE%)
EXIT /B 0