Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

210 lines
6.3 KiB

@if "%echo%" == "" echo off
goto stbld_entry
rem Author: [email protected]
rem
rem Revisions:
rem 10/1/98 - created
:show_usage
echo Usage:
echo stbld [stbld options] [build options]
echo Where [stbld options] is one or more of...
echo /dbg /debug /chk /check - build debug (eg. i386d\*.*)
echo /rtl /retail /fre /free /rel /release - build retail (eg. i386r\*.*)
echo /prf /profile /icap /icecap - build profile (eg. i386p\*.*)
echo /? /hlp /help - show usage
echo And where [build options] are passed to build.exe.
echo .
echo If the STBLD_OPTIONS environment variable is set, the
echo contents of that variable are treated exactly as if they
echo were passed on the command line to stbld.
goto done
rem Debugging options:
rem set ECHO=<anything> to not do ECHO OFF
rem /NOBLD suppresses build, and prints options
rem ***************************************************************************
rem Check to make sure that command extentions are enabled.
:stbld_entry
setlocal
if cmdextversion 1 goto cmd_ext_ok
goto no_cmd_ext
:cmd_ext_ok
rem ***************************************************************************
rem ***************************************************************************
rem If the STBLD_OPTIONS variable is set, we call ourselves recursively
rem with the value as the first option.
if "%stbld_options%" == "" goto not_recurse
set stbld_tmp=%stbld_options%
set stbld_options=
call stbld %stbld_tmp% %1 %2 %3 %4 %5 %6 %7 %8 %9
goto done
:not_recurse
rem ***************************************************************************
rem ***************************************************************************
rem Set the variables which track the state of parsing.
rem
rem STBLD_DBG=1 - debug
rem STBLD_RTL=1 - retail
rem STBLD_PRF=1 - profile
rem STBLD_BLD=<opt> - options to BUILD.EXE
rem STBLD_PARAM_DONE=1 - set to 1 when BUILD.EXE options found
rem STBLD_DBG_NOBLD=1 - /NOBLD option
set stbld_dbg=0
set stbld_rtl=0
set stbld_prf=0
set stbld_bld=
set stbld_param_done=0
set stbld_dbg_nobld=0
rem ***************************************************************************
rem ***************************************************************************
rem This is the parser. We loop through all of the params. If we havenremt
rem yet seen a parameter we donremt recognize, then we check it against all
rem of the ones we recognize, and set flags as appropriate. For any
rem parameters we donremt recognize, we build up the STBLD_BLD variable.
:parse
if "%1" == "" goto done_parse
if stbld_param_done == 1 goto bld_param
if "%1" == "/?" goto show_usage
if /i %1 == /hlp goto show_usage
if /i %1 == /help goto show_usage
set stbld_opt=stbld_tmp
for %%i in (/dbg /debug /chk /check) do if /i %1 == %%i set stbld_opt=stbld_dbg
for %%i in (/rtl /retail /fre /free /rel /release) do if /i %1 == %%i set stbld_opt=stbld_rtl
for %%i in (/prf /profile /icap /icecap) do if /i %1 == %%i set stbld_opt=stbld_prf
for %%i in (/nobld) do if %1 == %%i set stbld_opt=stbld_dbg_nobld
set %stbld_opt%=1
if %stbld_opt%==stbld_tmp set stbld_param_done=1
if %stbld_param_done%==0 goto no_bld_param
:bld_param
set stbld_bld=%stbld_bld% %1
:no_bld_param
shift
goto parse
:done_parse
rem ***************************************************************************
rem ***************************************************************************
rem This checks to see if /dbg, /rtl, or /prf was specified. If none of
rem them were specified, then set the default - which is debug.
if stbld_dbg == 1 goto not_default
if stbld_rtl == 1 goto not_default
if stbld_prf == 1 goto not_default
set stbld_dbg=1
:not_default
rem ***************************************************************************
rem ***************************************************************************
rem This calls each of the blocks which actually invoke BUILD.EXE for
rem debug, retail, and profile.
:again
if %stbld_dbg% == 1 goto do_dbg
if %stbld_rtl% == 1 goto do_rtl
if %stbld_prf% == 1 goto do_prf
goto done
rem ***************************************************************************
rem ***************************************************************************
rem These are the blocks for each of retail, debug, and profile. Each
rem of them first clears the variable which controls whether they are
rem called (so they donremt get called multiple times). They then set
rem the appropriate environment variables, and then invoke BUILD.EXE.
rem
rem There is also debugging support - if /NOBLD was specified, then
rem STBLD_DBG_NOBLD=1. In that case, instead of calling BUILD.EXE,
rem each block calls a common block which prints the options which
rem would have been used.
:do_dbg
set stbld_dbg=0
setlocal
set BUILD_ALT_DIR=d
set NTDEBUG=ntsd
set NTDEBUGTYPE=both
set NTDBGFILES=1
set MSC_OPTIMIZATION=/Odi
set USE_ICECAP=
set USE_PDB=1
echo Building debug.
if %stbld_dbg_nobld%==1 goto do_nobld
goto do_bld
:do_rtl
set stbld_rtl=0
setlocal
set BUILD_ALT_DIR=r
set NTDEBUG=ntsdnodbg
set NTDEBUGTYPE=both
set NTDBGFILES=1
set MSC_OPTIMIZATION=
set USE_ICECAP=
set USE_PDB=1
echo Building retail.
if %stbld_dbg_nobld%==1 goto do_nobld
goto do_bld
:do_prf
set stbld_prf=0
setlocal
set BUILD_ALT_DIR=p
set NTDEBUG=ntsdnodbg
set NTDEBUGTYPE=both
set NTDBGFILES=1
set MSC_OPTIMIZATION=
set USE_ICECAP=1
set USE_PDB=1
echo Building profile.
if %stbld_dbg_nobld%==1 goto do_nobld
goto do_bld
:do_bld
build%stbld_bld%
endlocal
goto again
:do_nobld
echo BUILD_ALT_DIR=%build_alt_dir%
echo NTDEBUG=%ntdebug%
echo NTDEBUGTYPE=%ntdebugtype%
echo NTDBGFILES=%ntdbgfiles%
echo MSC_OPTIMIZATION=%msc_optimization%
echo USE_ICECAP=%use_icecap%
echo USE_PDB=%use_pdb%
echo . BUILD%stbld_bld%
echo .
endlocal
goto again
rem ***************************************************************************
rem ***************************************************************************
rem This is only called in the unlikely event of the batch file being
rem invoked when command extentions are not enabled.
:no_cmd_ext
echo This batch file requires command extensions, and command extensions
echo appear to currently be disabled.
goto done
rem ***************************************************************************
:done
endlocal