@ECHO OFF | |
REM ~ Copyright 2002-2007 Rene Rivera. | |
REM ~ Distributed under the Boost Software License, Version 1.0. | |
REM ~ (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) | |
setlocal | |
goto Start | |
:Set_Error | |
color 00 | |
goto :eof | |
:Clear_Error | |
ver >nul | |
goto :eof | |
:Error_Print | |
REM Output an error message and set the errorlevel to indicate failure. | |
setlocal | |
ECHO ### | |
ECHO ### %1 | |
ECHO ### | |
ECHO ### You can specify the toolset as the argument, i.e.: | |
ECHO ### .\build.bat msvc | |
ECHO ### | |
ECHO ### Toolsets supported by this script are: borland, como, gcc, gcc-nocygwin, | |
ECHO ### intel-win32, metrowerks, mingw, msvc, vc7, vc8, vc9, vc10 | |
ECHO ### | |
call :Set_Error | |
endlocal | |
goto :eof | |
:Test_Path | |
REM Tests for the given file(executable) presence in the directories in the PATH | |
REM environment variable. Additionaly sets FOUND_PATH to the path of the | |
REM found file. | |
call :Clear_Error | |
setlocal | |
set test=%~$PATH:1 | |
endlocal | |
if not errorlevel 1 set FOUND_PATH=%~dp$PATH:1 | |
goto :eof | |
:Test_Option | |
REM Tests whether the given string is in the form of an option: "--*" | |
call :Clear_Error | |
setlocal | |
set test=%1 | |
if not defined test ( | |
call :Set_Error | |
goto Test_Option_End | |
) | |
set test=###%test%### | |
set test=%test:"###=% | |
set test=%test:###"=% | |
set test=%test:###=% | |
if not "-" == "%test:~1,1%" call :Set_Error | |
:Test_Option_End | |
endlocal | |
goto :eof | |
:Test_Empty | |
REM Tests whether the given string is not empty | |
call :Clear_Error | |
setlocal | |
set test=%1 | |
if not defined test ( | |
call :Clear_Error | |
goto Test_Empty_End | |
) | |
set test=###%test%### | |
set test=%test:"###=% | |
set test=%test:###"=% | |
set test=%test:###=% | |
if not "" == "%test%" call :Set_Error | |
:Test_Empty_End | |
endlocal | |
goto :eof | |
:Call_If_Exists | |
if EXIST %1 call %* | |
goto :eof | |
:Guess_Toolset | |
REM Try and guess the toolset to bootstrap the build with... | |
REM Sets BOOST_JAM_TOOLSET to the first found toolset. | |
REM May also set BOOST_JAM_TOOLSET_ROOT to the | |
REM location of the found toolset. | |
call :Clear_Error | |
call :Test_Empty %ProgramFiles% | |
if not errorlevel 1 set ProgramFiles=C:\Program Files | |
call :Clear_Error | |
if NOT "_%VS100COMNTOOLS%_" == "__" ( | |
set "BOOST_JAM_TOOLSET=vc10" | |
set "BOOST_JAM_TOOLSET_ROOT=%VS100COMNTOOLS%..\..\VC\" | |
goto :eof) | |
call :Clear_Error | |
if EXIST "%ProgramFiles%\Microsoft Visual Studio 10.0\VC\VCVARSALL.BAT" ( | |
set "BOOST_JAM_TOOLSET=vc10" | |
set "BOOST_JAM_TOOLSET_ROOT=%ProgramFiles%\Microsoft Visual Studio 10.0\VC\" | |
goto :eof) | |
call :Clear_Error | |
if NOT "_%VS90COMNTOOLS%_" == "__" ( | |
set "BOOST_JAM_TOOLSET=vc9" | |
set "BOOST_JAM_TOOLSET_ROOT=%VS90COMNTOOLS%..\..\VC\" | |
goto :eof) | |
call :Clear_Error | |
if EXIST "%ProgramFiles%\Microsoft Visual Studio 9.0\VC\VCVARSALL.BAT" ( | |
set "BOOST_JAM_TOOLSET=vc9" | |
set "BOOST_JAM_TOOLSET_ROOT=%ProgramFiles%\Microsoft Visual Studio 9.0\VC\" | |
goto :eof) | |
call :Clear_Error | |
if NOT "_%VS80COMNTOOLS%_" == "__" ( | |
set "BOOST_JAM_TOOLSET=vc8" | |
set "BOOST_JAM_TOOLSET_ROOT=%VS80COMNTOOLS%..\..\VC\" | |
goto :eof) | |
call :Clear_Error | |
if EXIST "%ProgramFiles%\Microsoft Visual Studio 8\VC\VCVARSALL.BAT" ( | |
set "BOOST_JAM_TOOLSET=vc8" | |
set "BOOST_JAM_TOOLSET_ROOT=%ProgramFiles%\Microsoft Visual Studio 8\VC\" | |
goto :eof) | |
call :Clear_Error | |
if NOT "_%VS71COMNTOOLS%_" == "__" ( | |
set "BOOST_JAM_TOOLSET=vc7" | |
set "BOOST_JAM_TOOLSET_ROOT=%VS71COMNTOOLS%\..\..\VC7\" | |
goto :eof) | |
call :Clear_Error | |
if NOT "_%VCINSTALLDIR%_" == "__" ( | |
REM %VCINSTALLDIR% is also set for VC9 (and probably VC8) | |
set "BOOST_JAM_TOOLSET=vc7" | |
set "BOOST_JAM_TOOLSET_ROOT=%VCINSTALLDIR%\VC7\" | |
goto :eof) | |
call :Clear_Error | |
if EXIST "%ProgramFiles%\Microsoft Visual Studio .NET 2003\VC7\bin\VCVARS32.BAT" ( | |
set "BOOST_JAM_TOOLSET=vc7" | |
set "BOOST_JAM_TOOLSET_ROOT=%ProgramFiles%\Microsoft Visual Studio .NET 2003\VC7\" | |
goto :eof) | |
call :Clear_Error | |
if EXIST "%ProgramFiles%\Microsoft Visual Studio .NET\VC7\bin\VCVARS32.BAT" ( | |
set "BOOST_JAM_TOOLSET=vc7" | |
set "BOOST_JAM_TOOLSET_ROOT=%ProgramFiles%\Microsoft Visual Studio .NET\VC7\" | |
goto :eof) | |
call :Clear_Error | |
if NOT "_%MSVCDir%_" == "__" ( | |
set "BOOST_JAM_TOOLSET=msvc" | |
set "BOOST_JAM_TOOLSET_ROOT=%MSVCDir%\" | |
goto :eof) | |
call :Clear_Error | |
if EXIST "%ProgramFiles%\Microsoft Visual Studio\VC98\bin\VCVARS32.BAT" ( | |
set "BOOST_JAM_TOOLSET=msvc" | |
set "BOOST_JAM_TOOLSET_ROOT=%ProgramFiles%\Microsoft Visual Studio\VC98\" | |
goto :eof) | |
call :Clear_Error | |
if EXIST "%ProgramFiles%\Microsoft Visual C++\VC98\bin\VCVARS32.BAT" ( | |
set "BOOST_JAM_TOOLSET=msvc" | |
set "BOOST_JAM_TOOLSET_ROOT=%ProgramFiles%\Microsoft Visual C++\VC98\" | |
goto :eof) | |
call :Clear_Error | |
call :Test_Path cl.exe | |
if not errorlevel 1 ( | |
set "BOOST_JAM_TOOLSET=msvc" | |
set "BOOST_JAM_TOOLSET_ROOT=%FOUND_PATH%..\" | |
goto :eof) | |
call :Clear_Error | |
call :Test_Path vcvars32.bat | |
if not errorlevel 1 ( | |
set "BOOST_JAM_TOOLSET=msvc" | |
call "%FOUND_PATH%VCVARS32.BAT" | |
set "BOOST_JAM_TOOLSET_ROOT=%MSVCDir%\" | |
goto :eof) | |
call :Clear_Error | |
if EXIST "C:\Borland\BCC55\Bin\bcc32.exe" ( | |
set "BOOST_JAM_TOOLSET=borland" | |
set "BOOST_JAM_TOOLSET_ROOT=C:\Borland\BCC55\" | |
goto :eof) | |
call :Clear_Error | |
call :Test_Path bcc32.exe | |
if not errorlevel 1 ( | |
set "BOOST_JAM_TOOLSET=borland" | |
set "BOOST_JAM_TOOLSET_ROOT=%FOUND_PATH%..\" | |
goto :eof) | |
call :Clear_Error | |
call :Test_Path icl.exe | |
if not errorlevel 1 ( | |
set "BOOST_JAM_TOOLSET=intel-win32" | |
set "BOOST_JAM_TOOLSET_ROOT=%FOUND_PATH%..\" | |
goto :eof) | |
call :Clear_Error | |
if EXIST "C:\MinGW\bin\gcc.exe" ( | |
set "BOOST_JAM_TOOLSET=mingw" | |
set "BOOST_JAM_TOOLSET_ROOT=C:\MinGW\" | |
goto :eof) | |
call :Clear_Error | |
if NOT "_%CWFolder%_" == "__" ( | |
set "BOOST_JAM_TOOLSET=metrowerks" | |
set "BOOST_JAM_TOOLSET_ROOT=%CWFolder%\" | |
goto :eof ) | |
call :Clear_Error | |
call :Test_Path mwcc.exe | |
if not errorlevel 1 ( | |
set "BOOST_JAM_TOOLSET=metrowerks" | |
set "BOOST_JAM_TOOLSET_ROOT=%FOUND_PATH%..\..\" | |
goto :eof) | |
call :Clear_Error | |
call :Error_Print "Could not find a suitable toolset." | |
goto :eof | |
:Guess_Yacc | |
REM Tries to find bison or yacc in common places so we can build the grammar. | |
call :Clear_Error | |
call :Test_Path yacc.exe | |
if not errorlevel 1 ( | |
set "YACC=yacc -d" | |
goto :eof) | |
call :Clear_Error | |
call :Test_Path bison.exe | |
if not errorlevel 1 ( | |
set "YACC=bison -d --yacc" | |
goto :eof) | |
call :Clear_Error | |
if EXIST "C:\Program Files\GnuWin32\bin\bison.exe" ( | |
set "YACC=C:\Program Files\GnuWin32\bin\bison.exe" -d --yacc | |
goto :eof) | |
call :Clear_Error | |
call :Error_Print "Could not find Yacc to build the Jam grammar." | |
goto :eof | |
:Start | |
set BOOST_JAM_TOOLSET= | |
set BOOST_JAM_ARGS= | |
REM If no arguments guess the toolset; | |
REM or if first argument is an option guess the toolset; | |
REM otherwise the argument is the toolset to use. | |
call :Clear_Error | |
call :Test_Empty %1 | |
if not errorlevel 1 ( | |
call :Guess_Toolset | |
if not errorlevel 1 ( goto Setup_Toolset ) else ( goto Finish ) | |
) | |
call :Clear_Error | |
call :Test_Option %1 | |
if not errorlevel 1 ( | |
call :Guess_Toolset | |
if not errorlevel 1 ( goto Setup_Toolset ) else ( goto Finish ) | |
) | |
call :Clear_Error | |
set BOOST_JAM_TOOLSET=%1 | |
shift | |
goto Setup_Toolset | |
:Setup_Toolset | |
REM Setup the toolset command and options. This bit of code | |
REM needs to be flexible enough to handle both when | |
REM the toolset was guessed at and found, or when the toolset | |
REM was indicated in the command arguments. | |
REM NOTE: The strange multiple "if ?? == _toolset_" tests are that way | |
REM because in BAT variables are subsituted only once during a single | |
REM command. A complete "if ... ( commands ) else ( commands )" | |
REM is a single command, even though it's in multiple lines here. | |
:Setup_Args | |
call :Clear_Error | |
call :Test_Empty %1 | |
if not errorlevel 1 goto Config_Toolset | |
call :Clear_Error | |
call :Test_Option %1 | |
if errorlevel 1 ( | |
set BOOST_JAM_ARGS=%BOOST_JAM_ARGS% %1 | |
shift | |
goto Setup_Args | |
) | |
:Config_Toolset | |
if NOT "_%BOOST_JAM_TOOLSET%_" == "_metrowerks_" goto Skip_METROWERKS | |
if NOT "_%CWFolder%_" == "__" ( | |
set "BOOST_JAM_TOOLSET_ROOT=%CWFolder%\" | |
) | |
set "PATH=%BOOST_JAM_TOOLSET_ROOT%Other Metrowerks Tools\Command Line Tools;%PATH%" | |
set "BOOST_JAM_CC=mwcc -runtime ss -cwd include -DNT -lkernel32.lib -ladvapi32.lib -luser32.lib" | |
set "BOOST_JAM_OPT_JAM=-o bootstrap\jam0.exe" | |
set "BOOST_JAM_OPT_MKJAMBASE=-o bootstrap\mkjambase0.exe" | |
set "BOOST_JAM_OPT_YYACC=-o bootstrap\yyacc0.exe" | |
set "_known_=1" | |
:Skip_METROWERKS | |
if NOT "_%BOOST_JAM_TOOLSET%_" == "_msvc_" goto Skip_MSVC | |
if NOT "_%MSVCDir%_" == "__" ( | |
set "BOOST_JAM_TOOLSET_ROOT=%MSVCDir%\" | |
) | |
call :Call_If_Exists "%BOOST_JAM_TOOLSET_ROOT%bin\VCVARS32.BAT" | |
if not "_%BOOST_JAM_TOOLSET_ROOT%_" == "__" ( | |
set "PATH=%BOOST_JAM_TOOLSET_ROOT%bin;%PATH%" | |
) | |
set "BOOST_JAM_CC=cl /nologo /GZ /Zi /MLd /Fobootstrap/ /Fdbootstrap/ -DNT -DYYDEBUG kernel32.lib advapi32.lib user32.lib" | |
set "BOOST_JAM_OPT_JAM=/Febootstrap\jam0" | |
set "BOOST_JAM_OPT_MKJAMBASE=/Febootstrap\mkjambase0" | |
set "BOOST_JAM_OPT_YYACC=/Febootstrap\yyacc0" | |
set "_known_=1" | |
:Skip_MSVC | |
if NOT "_%BOOST_JAM_TOOLSET%_" == "_vc7_" goto Skip_VC7 | |
if NOT "_%VS71COMNTOOLS%_" == "__" ( | |
set "BOOST_JAM_TOOLSET_ROOT=%VS71COMNTOOLS%..\..\VC7\" | |
) | |
if "_%VCINSTALLDIR%_" == "__" call :Call_If_Exists "%BOOST_JAM_TOOLSET_ROOT%bin\VCVARS32.BAT" | |
if NOT "_%BOOST_JAM_TOOLSET_ROOT%_" == "__" ( | |
if "_%VCINSTALLDIR%_" == "__" ( | |
set "PATH=%BOOST_JAM_TOOLSET_ROOT%bin;%PATH%" | |
) ) | |
set "BOOST_JAM_CC=cl /nologo /GZ /Zi /MLd /Fobootstrap/ /Fdbootstrap/ -DNT -DYYDEBUG kernel32.lib advapi32.lib user32.lib" | |
set "BOOST_JAM_OPT_JAM=/Febootstrap\jam0" | |
set "BOOST_JAM_OPT_MKJAMBASE=/Febootstrap\mkjambase0" | |
set "BOOST_JAM_OPT_YYACC=/Febootstrap\yyacc0" | |
set "_known_=1" | |
:Skip_VC7 | |
if NOT "_%BOOST_JAM_TOOLSET%_" == "_vc8_" goto Skip_VC8 | |
if NOT "_%VS80COMNTOOLS%_" == "__" ( | |
set "BOOST_JAM_TOOLSET_ROOT=%VS80COMNTOOLS%..\..\VC\" | |
) | |
if "_%VCINSTALLDIR%_" == "__" call :Call_If_Exists "%BOOST_JAM_TOOLSET_ROOT%VCVARSALL.BAT" %BOOST_JAM_ARGS% | |
if NOT "_%BOOST_JAM_TOOLSET_ROOT%_" == "__" ( | |
if "_%VCINSTALLDIR%_" == "__" ( | |
set "PATH=%BOOST_JAM_TOOLSET_ROOT%bin;%PATH%" | |
) ) | |
set "BOOST_JAM_CC=cl /nologo /RTC1 /Zi /MTd /Fobootstrap/ /Fdbootstrap/ -DNT -DYYDEBUG -wd4996 kernel32.lib advapi32.lib user32.lib" | |
set "BOOST_JAM_OPT_JAM=/Febootstrap\jam0" | |
set "BOOST_JAM_OPT_MKJAMBASE=/Febootstrap\mkjambase0" | |
set "BOOST_JAM_OPT_YYACC=/Febootstrap\yyacc0" | |
set "_known_=1" | |
:Skip_VC8 | |
if NOT "_%BOOST_JAM_TOOLSET%_" == "_vc9_" goto Skip_VC9 | |
if NOT "_%VS90COMNTOOLS%_" == "__" ( | |
set "BOOST_JAM_TOOLSET_ROOT=%VS90COMNTOOLS%..\..\VC\" | |
) | |
if "_%VCINSTALLDIR%_" == "__" call :Call_If_Exists "%BOOST_JAM_TOOLSET_ROOT%VCVARSALL.BAT" %BOOST_JAM_ARGS% | |
if NOT "_%BOOST_JAM_TOOLSET_ROOT%_" == "__" ( | |
if "_%VCINSTALLDIR%_" == "__" ( | |
set "PATH=%BOOST_JAM_TOOLSET_ROOT%bin;%PATH%" | |
) ) | |
set "BOOST_JAM_CC=cl /nologo /RTC1 /Zi /MTd /Fobootstrap/ /Fdbootstrap/ -DNT -DYYDEBUG -wd4996 kernel32.lib advapi32.lib user32.lib" | |
set "BOOST_JAM_OPT_JAM=/Febootstrap\jam0" | |
set "BOOST_JAM_OPT_MKJAMBASE=/Febootstrap\mkjambase0" | |
set "BOOST_JAM_OPT_YYACC=/Febootstrap\yyacc0" | |
set "_known_=1" | |
:Skip_VC9 | |
if NOT "_%BOOST_JAM_TOOLSET%_" == "_vc10_" goto Skip_VC10 | |
if NOT "_%VS100COMNTOOLS%_" == "__" ( | |
set "BOOST_JAM_TOOLSET_ROOT=%VS100COMNTOOLS%..\..\VC\" | |
) | |
if "_%VCINSTALLDIR%_" == "__" call :Call_If_Exists "%BOOST_JAM_TOOLSET_ROOT%VCVARSALL.BAT" %BOOST_JAM_ARGS% | |
if NOT "_%BOOST_JAM_TOOLSET_ROOT%_" == "__" ( | |
if "_%VCINSTALLDIR%_" == "__" ( | |
set "PATH=%BOOST_JAM_TOOLSET_ROOT%bin;%PATH%" | |
) ) | |
set "BOOST_JAM_CC=cl /nologo /RTC1 /Zi /MTd /Fobootstrap/ /Fdbootstrap/ -DNT -DYYDEBUG -wd4996 kernel32.lib advapi32.lib user32.lib" | |
set "BOOST_JAM_OPT_JAM=/Febootstrap\jam0" | |
set "BOOST_JAM_OPT_MKJAMBASE=/Febootstrap\mkjambase0" | |
set "BOOST_JAM_OPT_YYACC=/Febootstrap\yyacc0" | |
set "_known_=1" | |
:Skip_VC10 | |
if NOT "_%BOOST_JAM_TOOLSET%_" == "_borland_" goto Skip_BORLAND | |
if "_%BOOST_JAM_TOOLSET_ROOT%_" == "__" ( | |
call :Test_Path bcc32.exe ) | |
if "_%BOOST_JAM_TOOLSET_ROOT%_" == "__" ( | |
if not errorlevel 1 ( | |
set "BOOST_JAM_TOOLSET_ROOT=%FOUND_PATH%..\" | |
) ) | |
if not "_%BOOST_JAM_TOOLSET_ROOT%_" == "__" ( | |
set "PATH=%BOOST_JAM_TOOLSET_ROOT%Bin;%PATH%" | |
) | |
set "BOOST_JAM_CC=bcc32 -WC -w- -q -I%BOOST_JAM_TOOLSET_ROOT%Include -L%BOOST_JAM_TOOLSET_ROOT%Lib /DNT -nbootstrap" | |
set "BOOST_JAM_OPT_JAM=-ejam0" | |
set "BOOST_JAM_OPT_MKJAMBASE=-emkjambasejam0" | |
set "BOOST_JAM_OPT_YYACC=-eyyacc0" | |
set "_known_=1" | |
:Skip_BORLAND | |
if NOT "_%BOOST_JAM_TOOLSET%_" == "_como_" goto Skip_COMO | |
set "BOOST_JAM_CC=como -DNT" | |
set "BOOST_JAM_OPT_JAM=-o bootstrap\jam0.exe" | |
set "BOOST_JAM_OPT_MKJAMBASE=-o bootstrap\mkjambase0.exe" | |
set "BOOST_JAM_OPT_YYACC=-o bootstrap\yyacc0.exe" | |
set "_known_=1" | |
:Skip_COMO | |
if NOT "_%BOOST_JAM_TOOLSET%_" == "_gcc_" goto Skip_GCC | |
set "BOOST_JAM_CC=gcc -DNT" | |
set "BOOST_JAM_OPT_JAM=-o bootstrap\jam0.exe" | |
set "BOOST_JAM_OPT_MKJAMBASE=-o bootstrap\mkjambase0.exe" | |
set "BOOST_JAM_OPT_YYACC=-o bootstrap\yyacc0.exe" | |
set "_known_=1" | |
:Skip_GCC | |
if NOT "_%BOOST_JAM_TOOLSET%_" == "_gcc-nocygwin_" goto Skip_GCC_NOCYGWIN | |
set "BOOST_JAM_CC=gcc -DNT -mno-cygwin" | |
set "BOOST_JAM_OPT_JAM=-o bootstrap\jam0.exe" | |
set "BOOST_JAM_OPT_MKJAMBASE=-o bootstrap\mkjambase0.exe" | |
set "BOOST_JAM_OPT_YYACC=-o bootstrap\yyacc0.exe" | |
set "_known_=1" | |
:Skip_GCC_NOCYGWIN | |
if NOT "_%BOOST_JAM_TOOLSET%_" == "_intel-win32_" goto Skip_INTEL_WIN32 | |
set "BOOST_JAM_CC=icl -DNT /nologo kernel32.lib advapi32.lib user32.lib" | |
set "BOOST_JAM_OPT_JAM=/Febootstrap\jam0" | |
set "BOOST_JAM_OPT_MKJAMBASE=/Febootstrap\mkjambase0" | |
set "BOOST_JAM_OPT_YYACC=/Febootstrap\yyacc0" | |
set "_known_=1" | |
:Skip_INTEL_WIN32 | |
if NOT "_%BOOST_JAM_TOOLSET%_" == "_mingw_" goto Skip_MINGW | |
if not "_%BOOST_JAM_TOOLSET_ROOT%_" == "__" ( | |
set "PATH=%BOOST_JAM_TOOLSET_ROOT%bin;%PATH%" | |
) | |
set "BOOST_JAM_CC=gcc -DNT" | |
set "BOOST_JAM_OPT_JAM=-o bootstrap\jam0.exe" | |
set "BOOST_JAM_OPT_MKJAMBASE=-o bootstrap\mkjambase0.exe" | |
set "BOOST_JAM_OPT_YYACC=-o bootstrap\yyacc0.exe" | |
set "_known_=1" | |
:Skip_MINGW | |
call :Clear_Error | |
if "_%_known_%_" == "__" ( | |
call :Error_Print "Unknown toolset: %BOOST_JAM_TOOLSET%" | |
) | |
if errorlevel 1 goto Finish | |
echo ### | |
echo ### Using '%BOOST_JAM_TOOLSET%' toolset. | |
echo ### | |
set YYACC_SOURCES=yyacc.c | |
set MKJAMBASE_SOURCES=mkjambase.c | |
set BJAM_SOURCES= | |
set BJAM_SOURCES=%BJAM_SOURCES% command.c compile.c debug.c execnt.c expand.c filent.c glob.c hash.c | |
set BJAM_SOURCES=%BJAM_SOURCES% hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c | |
set BJAM_SOURCES=%BJAM_SOURCES% newstr.c option.c output.c parse.c pathunix.c regexp.c | |
set BJAM_SOURCES=%BJAM_SOURCES% rules.c scan.c search.c subst.c timestamp.c variable.c modules.c | |
set BJAM_SOURCES=%BJAM_SOURCES% strings.c filesys.c builtins.c pwd.c class.c w32_getreg.c native.c | |
set BJAM_SOURCES=%BJAM_SOURCES% modules/set.c modules/path.c modules/regex.c | |
set BJAM_SOURCES=%BJAM_SOURCES% modules/property-set.c modules/sequence.c modules/order.c | |
set BJAM_UPDATE= | |
:Check_Update | |
call :Test_Empty %1 | |
if not errorlevel 1 goto Check_Update_End | |
call :Clear_Error | |
setlocal | |
set test=%1 | |
set test=###%test%### | |
set test=%test:"###=% | |
set test=%test:###"=% | |
set test=%test:###=% | |
if "%test%" == "--update" set BJAM_UPDATE=update | |
endlocal | |
shift | |
if not "_%BJAM_UPDATE%_" == "_update_" goto Check_Update | |
:Check_Update_End | |
if "_%BJAM_UPDATE%_" == "_update_" ( | |
if not exist ".\bootstrap\jam0.exe" ( | |
set BJAM_UPDATE= | |
) | |
) | |
@echo ON | |
@if "_%BJAM_UPDATE%_" == "_update_" goto Skip_Bootstrap | |
rd /S /Q bootstrap | |
md bootstrap | |
@if not exist jamgram.y goto Bootstrap_GrammarPrep | |
@if not exist jamgramtab.h goto Bootstrap_GrammarPrep | |
@goto Skip_GrammarPrep | |
:Bootstrap_GrammarPrep | |
%BOOST_JAM_CC% %BOOST_JAM_OPT_YYACC% %YYACC_SOURCES% | |
@if not exist ".\bootstrap\yyacc0.exe" goto Skip_GrammarPrep | |
.\bootstrap\yyacc0 jamgram.y jamgramtab.h jamgram.yy | |
:Skip_GrammarPrep | |
@if not exist jamgram.c goto Bootstrap_GrammarBuild | |
@if not exist jamgram.h goto Bootstrap_GrammarBuild | |
@goto Skip_GrammarBuild | |
:Bootstrap_GrammarBuild | |
@echo OFF | |
if "_%YACC%_" == "__" ( | |
call :Guess_Yacc | |
) | |
if errorlevel 1 goto Finish | |
@echo ON | |
%YACC% jamgram.y | |
@if errorlevel 1 goto Finish | |
del /f jamgram.c | |
rename y.tab.c jamgram.c | |
del /f jamgram.h | |
rename y.tab.h jamgram.h | |
:Skip_GrammarBuild | |
@echo ON | |
@if exist jambase.c goto Skip_Jambase | |
%BOOST_JAM_CC% %BOOST_JAM_OPT_MKJAMBASE% %MKJAMBASE_SOURCES% | |
@if not exist ".\bootstrap\mkjambase0.exe" goto Skip_Jambase | |
.\bootstrap\mkjambase0 jambase.c Jambase | |
:Skip_Jambase | |
%BOOST_JAM_CC% %BOOST_JAM_OPT_JAM% %BJAM_SOURCES% | |
:Skip_Bootstrap | |
@if not exist ".\bootstrap\jam0.exe" goto Skip_Jam | |
@if "_%BJAM_UPDATE%_" == "_update_" goto Skip_Clean | |
.\bootstrap\jam0 -f build.jam --toolset=%BOOST_JAM_TOOLSET% "--toolset-root=%BOOST_JAM_TOOLSET_ROOT% " clean | |
:Skip_Clean | |
@set args=%* | |
@echo OFF | |
:Set_Args | |
setlocal | |
call :Test_Empty %args% | |
if not errorlevel 1 goto Set_Args_End | |
set test=###%args:~0,2%### | |
set test=%test:"###=% | |
set test=%test:###"=% | |
set test=%test:###=% | |
set test=%test:~0,1% | |
if "-" == "%test%" goto Set_Args_End | |
endlocal | |
set args=%args:~1% | |
goto Set_Args | |
:Set_Args_End | |
@echo ON | |
.\bootstrap\jam0 -f build.jam --toolset=%BOOST_JAM_TOOLSET% "--toolset-root=%BOOST_JAM_TOOLSET_ROOT% " %args% | |
:Skip_Jam | |
:Finish |