Release RMC-06.02
(2024-04-29)
|
Contents
Description
Example of a subsys.gbs.bat
Description
Purpose
The subsys.gbs script file is used only for Non-GBS SubSystems, is located in the GBS_SUBSYS_PATH
directory and is used for the building or auditing of these Subsystems.
It is used by gbssysbuild,
gbssysmake,
gbssysaudit and for Cleanup functions in gbsmaint.
General
Special considerations:
- These files are operating-system dependent script files and have the appropriate file-extension
for that particular operating-system. e.g.:
- subsys.gbs.sh for Linux
- subsys.gbs.bat for Windows
Calling
The subsys.gbs file is called:
- When you build or audit a SubSystem with one of the gbssys.. commands:
- With one of the arguments cleanup_bld, gen, make, cleanup_aud or audit
- When Cleanup a SubSystem with gbsmaint:
- With one of the arguments cleanup_bld or cleanup_aud
Environment Variables
Before execution a vast amount of EnvVars is set so you can make your proper selections.
Some EnvVars will be dependent on the SubSystem type.
Refer to example below.
Each GBS_BUILD_type EnvVar contains the Command to execute for that filetype for the current Build
It is taken from the build.gbs file and contains all settings until the first % or $ argument.
Same analogy for GBS_AUDIT_type
Layout
For every Non-GBS SubSystem type there is a slightly different subsys.gbs file.
The 'switch' on action (cleanup_bld, gen, make, cleanup_aud or audit)
is the same for all, but the contents of the 'cases' will differ. Refer to example below.
Notes:
None
Example of a subsys.gbs.bat:
@ECHO OFF
::=============================================================================
:: [%SUBSYS%] subsys.gbs.bat
:: Requires 1 parameter: action
:: Called to cleanup, gen, make or audit a non-GBS SubSystem
:: For 'make' SubSystems
::=============================================================================
::
:: Currently in $GBS_SYSTEM_PATH/dev/$GBS_SUBSYS
:: Applicable EnvVars:
:: GBS_BUILD
:: GBS_BUILD_PLUGIN
:: GBS_BUILD_PLUGIN_PATH ('make' or 'Other')
:: GBS_BUILD_PLUGIN_BIN_PATH ('make' or 'Other')
:: GBS_BUILD_src_type ('make' or 'Other')
:: GBS_AUDIT_PLUGIN (for Audit only)
:: GBS_AUDIT_PLUGIN_PATH (for Audit only) ('make' or 'Other')
:: GBS_AUDIT_PLUGIN_BIN_PATH (for Audit only) ('make' or 'Other')
:: GBS_AUDIT_src_type (for Audit only) ('make' or 'Other')
::
:: Available EnvVars:
:: GBS_SYSTEM_PATH
:: GBS_SUBSYS
:: GBS_SUBSYS_PATH
:: GBS_AUDIT_PATH
:: GBS_BUILD_PATH
:: GBS_APP_PATH
::
:: GBS_MAKE make_command
:: GBS_IGNORE_ERRORS 0 | 1
:: GBS_MODE FINAL | ASSERT | DEBUG | PROFILING
:: GBS_OPT YES | SPEED | SIZE | DEBUG | NO
:: GBS_DEBUGGER NO | YES
:: GBS_MAP NO | YES
::
:: GBS_BLD_src_type primary_output_type>
:: GBS_SYSFLAGS_src_type
:: GBS_FLAGS_src_type also contains flags resulting from MODE, OPT, DEBUGGER and MAP
:: GBS_SYSINCS_src_type
:: GBS_INCS_src_type
::
:: GBS_MAKE_FLAGS '-i' if GBS_IGNORE_ERRORS == TRUE
::
::=============================================================================
setlocal
set rc=0
set action=%1
::
:: Adjust for proper actions
:: Just one to a few lines per action. Keep it simple. Do not try to be clever.
:: Do not forget to set rc to proper exit value (0=success, >0=fail)
::
if [%action%] == [cleanup_bld] goto CASE_CLEANUP_BLD
if [%action%] == [gen] goto CASE_GEN
if [%action%] == [make] goto CASE_MAKE
if [%action%] == [cleanup_aud] goto CASE_CLEANUP_AUD
if [%action%] == [audit] goto CASE_AUDIT
goto CASE_DEFAULT
::
:: CLEANUP_BLD
::
:CASE_CLEANUP_BLD
echo SUBSYS.GBS_: ** SubSys=%GBS_SUBSYS% - Build=%GBS_BUILD% - Action=%action%
:: <== add your command(s) to execute the bld_cleanup here and remove these lines.
:: Do not forget to set rc to proper exit value (0=success, >0=fail)
:: <== Probably something like:
%GBS_MAKE% clean -f Makefile.mk -i
set rc=%ERRORLEVEL%
goto CASE_END
:CASE_GEN
::
:: GEN
::
echo SUBSYS.GBS_: ** SubSys=%GBS_SUBSYS% - Build=%GBS_BUILD% - Action=%action%
:: <== add your command(s) to execute the gen here and remove these lines.
:: Do not execute the 'clean' in this command.
:: Do not forget to set rc to proper exit value (0=success, >0=fail)
:: <== Probably something like:
%GBS_MAKE% -f Makefile.mk -B -k %GBS_MAKE_FLAGS%
set rc=%ERRORLEVEL%
goto CASE_END
:CASE_MAKE
::
:: MAKE
::
echo SUBSYS.GBS_: ** SubSys=%GBS_SUBSYS% - Build=%GBS_BUILD% - Action=%action%
:: <== add your command(s) to execute the make here and remove these lines.
:: Do not forget to set rc to proper exit value (0=success, >0=fail)
:: <== Probably something like:
%GBS_MAKE% -f Makefile.mk %GBS_MAKE_FLAGS%
set rc=%ERRORLEVEL%
goto CASE_END
:CASE_CLEANUP_AUD
::
:: CLEANUP_AUD
::
echo SUBSYS.GBS_: ** SubSys=%GBS_SUBSYS% - Build=%GBS_BUILD% - Audit=%GBS_AUDIT% - Action=%action%
:: <== add your command(s) to execute the audit_cleanup here and remove these lines.
:: Do not forget to set rc to proper exit value (0=success, >0=fail)
:: <== Probably something like:
%GBS_MAKE% clean -f Makefile_aud.mk -i
set rc=%ERRORLEVEL%
goto CASE_END
:CASE_AUDIT
::
:: AUDIT
::
echo SUBSYS.GBS_: ** SubSys=%GBS_SUBSYS% - Build=%GBS_BUILD% - Audit=%GBS_AUDIT% - Action=%action%
:: <== add your command(s) to execute the gbssubaudit.bat here and
:: remove these lines.
:: Do not forget to set rc to proper exit value (0=success, >0=fail)
:: <== Probably something like:
:: %GBS_MAKE% -f Makefile_aud.mk -B -k %GBS_MAKE_FLAGS%
echo SUBSYS.GBS_: No audits for non-GBS SubSystems
set rc=%ERRORLEVEL%
goto CASE_END
:CASE_DEFAULT
::
:: DEFAULT
::
echo SUBSYS.GBS_: ***FATAL ERROR***
echo - Invalid action '%action%'. Must be one of (cleaunp_bld gen make cleanup_aud audit)
set rc=9
goto CASE_END
:CASE_END
endlocal & set rc=%rc%
exit /B %rc%
:::EOF:::
|