aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--etc/bootstrap/bbot-bootstrap-mingw.bat176
-rw-r--r--etc/environments/default-mingw.bat43
2 files changed, 219 insertions, 0 deletions
diff --git a/etc/bootstrap/bbot-bootstrap-mingw.bat b/etc/bootstrap/bbot-bootstrap-mingw.bat
new file mode 100644
index 0000000..ac39fdf
--- /dev/null
+++ b/etc/bootstrap/bbot-bootstrap-mingw.bat
@@ -0,0 +1,176 @@
+@echo off
+
+rem file : etc/bootstrap/bbot-bootstrap-mingw.bat
+rem copyright : Copyright (c) 2014-2017 Code Synthesis Ltd
+rem license : TBC; see accompanying LICENSE file
+
+setlocal EnableExtensions EnableDelayedExpansion
+
+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"
+
+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 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 mingw toolchain.
+@rem
+curl -s -S -O "tftp://%tftp%/build2-mingw-x86_64-windows.tar.xz"
+@if errorlevel 1 goto error
+
+xz -d build2-mingw-x86_64-windows.tar.xz
+@if errorlevel 1 goto error
+
+tar -xf build2-mingw-x86_64-windows.tar^
+ --one-top-level=%INSTALL% --strip-components=1
+@if errorlevel 1 goto error
+
+del build2-mingw-x86_64-windows.tar
+@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 Note: executing in a separate cmd.exe to preserve the echo mode.
+@rem
+cmd /C build-mingw.bat g++ %INSTALL% %trust%
+@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 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 result manifest produced by the bbot worker.
+@rem
+bbot-worker --bootstrap >manifest
+@if errorlevel 1 goto error
+
+curl -s -S --upload-file manifest "tftp://%tftp%/manifest"
+@if errorlevel 1 goto error
+
+@echo off
+goto end
+
+:error
+@echo off
+endlocal
+exit /b 1
+
+:end
+endlocal
diff --git a/etc/environments/default-mingw.bat b/etc/environments/default-mingw.bat
new file mode 100644
index 0000000..3d9bcb1
--- /dev/null
+++ b/etc/environments/default-mingw.bat
@@ -0,0 +1,43 @@
+@echo off
+
+rem file : etc/environments/default-mingw.bat
+rem copyright : Copyright (c) 2014-2017 Code Synthesis Ltd
+rem license : TBC; see accompanying LICENSE file
+
+rem
+rem Environment setup script for C/C++ compilation with MinGW GCC.
+rem
+
+rem %1 - target
+rem %2 - bbot executable
+rem %3+ - bbot options
+
+setlocal EnableExtensions EnableDelayedExpansion
+
+set "MINGW=C:\build2\bin"
+
+set "PATH=$MINGW;%PATH%"
+
+rem Based on target determine what we are building.
+rem
+rem Note that an empty argument is passed as "" (literal quotes).
+rem
+if _%1_ == _""_ (
+ rem
+) else (
+ echo error: unknown target %1
+ goto error
+)
+
+%2 %3 %4 %5 %6 %7 %8 %9 cc config.c=gcc config.cxx=g++
+if errorlevel 1 goto error
+
+goto end
+
+:error
+@echo off
+endlocal
+exit /b 1
+
+:end
+endlocal