aboutsummaryrefslogtreecommitdiff
path: root/etc/bootstrap/bbot-bootstrap-clang.bat
diff options
context:
space:
mode:
Diffstat (limited to 'etc/bootstrap/bbot-bootstrap-clang.bat')
-rw-r--r--etc/bootstrap/bbot-bootstrap-clang.bat186
1 files changed, 186 insertions, 0 deletions
diff --git a/etc/bootstrap/bbot-bootstrap-clang.bat b/etc/bootstrap/bbot-bootstrap-clang.bat
new file mode 100644
index 0000000..5b7f52e
--- /dev/null
+++ b/etc/bootstrap/bbot-bootstrap-clang.bat
@@ -0,0 +1,186 @@
+@echo off
+
+rem file : etc/bootstrap/bbot-bootstrap-clang.bat
+rem copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
+rem license : TBC; see accompanying LICENSE file
+
+setlocal EnableExtensions EnableDelayedExpansion
+
+rem If the MSVC variable is set, then set up the environment via the MSVC
+rem command prompt rather than letting Clang find some default (note that
+rem in the latter case, clang++ should be in PATH).
+
+rem set "MSVC="
+rem set "VCVARS="
+
+set "MSVC=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community"
+set "VCVARS=VC\Auxiliary\Build\vcvars64.bat"
+
+set "CXX=clang++"
+set "BUILD=C:\tmp"
+set "INSTALL=C:\build2"
+set "BOOTSTRAP=C:\bootstrap"
+set "ENVIRONMENTS=C:\environments"
+
+set "TFTP=196.254.111.222"
+rem set "TFTP=10.1.0.1:55123"
+set "VERBOSE=3"
+set "TIMEOUT=600"
+
+rem If we already have the bbot worker, assume we are bootstrapped.
+rem
+if exist %INSTALL%\bin\bbot-worker.exe (
+ set "PATH=%INSTALL%\bin;%PATH%"
+ bbot-worker.exe --startup --build %BUILD% --environments %ENVIRONMENTS%^
+ --tftp-host %TFTP% --verbose %VERBOSE%
+ goto end
+)
+
+rem Setup the MSVC environment.
+rem
+if not "_%MSVC%_" == "__" (
+ call "%MSVC%\%VCVARS%"
+ if errorlevel 1 goto error
+)
+
+rem Use bootstrap tools.
+rem
+set "PATH=%BOOTSTRAP%\bin;%PATH%"
+
+rem Show the steps we are performing.
+rem
+@echo on
+
+@rem
+@rem Bootstrap the toolchain and then build bbot.
+@rem
+@if exist %BUILD%\bootstrap\ (
+ rmdir /S /Q %BUILD%\bootstrap
+ @if errorlevel 1 goto error
+)
+
+mkdir %BUILD%\bootstrap
+@if errorlevel 1 goto error
+
+@if exist %INSTALL% (
+ rmdir /S /Q %INSTALL%
+ @if errorlevel 1 goto error
+)
+
+cd %BUILD%\bootstrap
+
+@rem
+@rem Get the baseutils.
+@rem
+@rem We could be running on a new network which may take Windows some time
+@rem to digest. And if we start before that happens, we will be hanging
+@rem forever.
+@rem
+
+:restart
+curl -s -S -O --connect-timeout 5 --max-time 60^
+ "tftp://%tftp%/build2-baseutils-x86_64-windows.zip"
+@if errorlevel 1 goto restart
+
+unzip -q build2-baseutils-x86_64-windows.zip
+@if errorlevel 1 goto error
+
+del build2-baseutils-x86_64-windows.zip
+@if errorlevel 1 goto error
+
+move build2-baseutils-*-x86_64-windows %INSTALL%
+@if errorlevel 1 goto error
+
+
+@rem
+@rem Get the toolchain.
+@rem
+curl -s -S -O "tftp://%tftp%/build2-toolchain.tar.xz"
+@if errorlevel 1 goto error
+
+xz -d build2-toolchain.tar.xz
+@if errorlevel 1 goto error
+
+tar -xf build2-toolchain.tar
+@if errorlevel 1 goto error
+
+del build2-toolchain.tar
+@if errorlevel 1 goto error
+
+
+@rem
+@rem Get the repository certificate fingerprint.
+@rem
+curl -s -S -O "tftp://%tftp%/trust"
+@if errorlevel 1 goto error
+
+@set /P trust=<trust
+
+del trust
+@if errorlevel 1 goto error
+
+
+@rem
+@rem Switch to the bootstrapped utilities/toolchain.
+@rem
+@set "PATH=%INSTALL%\bin;%PATH%"
+
+
+@rem
+@rem Bootstrap and install the toolchain.
+@rem
+@for /D %%d in (build2-toolchain-*) do set "bstrap=%%d"
+cd %bstrap%
+
+@rem Bootstrap in parallel using GNU make (which is part of baseutils).
+@rem
+@rem Note: executing in a separate cmd.exe to preserve the echo mode.
+@rem
+cmd /C build-mingw.bat --make mingw32-make --make -j%NUMBER_OF_PROCESSORS%^
+ --timeout %TIMEOUT% --install-dir %INSTALL% --trust %trust% %CXX%
+@if errorlevel 1 goto error
+
+cd ..
+rmdir /S /Q %bstrap%
+@if errorlevel 1 goto error
+
+
+@rem
+@rem Build and install the bbot worker.
+@rem
+@for /D %%d in (build2-toolchain-*) do set "config=%%d"
+cd %config%
+
+bpkg --fetch-timeout %TIMEOUT% build --yes bbot
+@if errorlevel 1 goto error
+
+bpkg install bbot
+@if errorlevel 1 goto error
+
+cd ..
+rmdir /S /Q %config%
+@if errorlevel 1 goto error
+
+@rem
+@rem Finish off by uploading the bootstrap result manifest produced by the
+@rem bbot worker.
+@rem
+bbot-worker --bootstrap >bootstrap.manifest
+@if errorlevel 1 goto error
+
+curl -s -S --upload-file bootstrap.manifest "tftp://%tftp%/bootstrap.manifest"
+@if errorlevel 1 goto error
+
+shutdown /s /t 5
+@if errorlevel 1 goto error
+
+@echo off
+goto end
+
+:error
+@echo off
+endlocal
+exit /b 1
+
+:end
+endlocal