aboutsummaryrefslogtreecommitdiff
path: root/build-msvc.bat
diff options
context:
space:
mode:
Diffstat (limited to 'build-msvc.bat')
-rw-r--r--build-msvc.bat168
1 files changed, 168 insertions, 0 deletions
diff --git a/build-msvc.bat b/build-msvc.bat
new file mode 100644
index 0000000..88eebe7
--- /dev/null
+++ b/build-msvc.bat
@@ -0,0 +1,168 @@
+@echo off
+
+rem file : build-msvc.bat
+rem copyright : Copyright (c) 2014-2016 Code Synthesis Ltd
+rem license : MIT; see accompanying LICENSE file
+
+setlocal EnableDelayedExpansion
+goto start
+
+:usage
+echo.
+echo Usage: %0 [/?] [^<install-dir^>]
+echo.
+echo By default the batch file will install into C:\build2. It also expects
+echo to find the base utilities in the bin\ subdirectory of the installation
+echo directory (C:\build2\bin\ by default).
+echo.
+echo Example usage:
+echo.
+echo %0 D:\build2
+echo.
+echo See the INSTALL file for details.
+echo.
+goto end
+
+:start
+
+set "owd=%CD%"
+
+if "_%1_" == "_/?_" goto usage
+
+rem Installation directory.
+rem
+if "_%1_" == "__" (
+ set "idir=C:\build2"
+) else (
+ set "idir=%1"
+)
+
+if not exist %idir%\bin\ (
+ echo error: %idir%\bin\ does not exist
+ goto error
+)
+
+if exist build\config.build (
+ echo current directory already configured, start with clean source
+ goto error
+)
+
+if exist ..\build2-toolchain\ (
+ echo ..\build2-toolchain\ bpkg configuration directory already exists
+ goto error
+)
+
+set "sdir=%idir%\stage"
+set "PATH=%idir%\bin;%PATH%"
+
+rem Show the steps we are performing.
+rem
+@echo on
+
+@rem Verify the compiler works.
+@rem
+cl
+@if errorlevel 1 goto error
+
+@rem Bootstrap.
+@rem
+cd build2
+
+@rem Execute in a separate cmd.exe to preserve the echo mode.
+@rem
+cmd /C bootstrap-msvc.bat cl
+@if errorlevel 1 goto error
+
+build2\b-boot --version
+@if errorlevel 1 goto error
+
+build2\b-boot config.cxx=cl config.bin.lib=static
+@if errorlevel 1 goto error
+
+move /y build2\b.exe build2\b-boot.exe
+@if errorlevel 1 goto error
+
+build2\b-boot --version
+@if errorlevel 1 goto error
+
+@rem Build and stage the toolchain.
+@rem
+cd ..
+
+build2\build2\b-boot configure^
+ config.cxx=cl^
+ config.bin.lib=shared^
+ config.bin.suffix=-stage^
+ config.install.root=%sdir%^
+ config.install.exec_root=%idir%
+@if errorlevel 1 goto error
+
+build2\build2\b-boot install
+@if errorlevel 1 goto error
+
+b-stage --version
+@if errorlevel 1 goto error
+
+bpkg-stage --version
+@if errorlevel 1 goto error
+
+@rem Rebuild via package manager.
+@rem
+cd ..
+
+md build2-toolchain
+@if errorlevel 1 goto error
+
+cd build2-toolchain
+@set "cdir=%CD%"
+
+bpkg-stage create^
+ cc^
+ config.cxx=cl^
+ "config.cc.coptions=/O2 /Oi"^
+ config.bin.lib=shared^
+ config.install.root=%idir%
+@if errorlevel 1 goto error
+
+@rem @@ TMP: queue
+bpkg-stage add https://pkg.cppget.org/1/queue
+@if errorlevel 1 goto error
+
+bpkg-stage fetch
+@if errorlevel 1 goto error
+
+bpkg-stage build --yes build2 bpkg
+@if errorlevel 1 goto error
+
+bpkg-stage install build2 bpkg
+@if errorlevel 1 goto error
+
+b --version
+@if errorlevel 1 goto error
+
+bpkg --version
+@if errorlevel 1 goto error
+
+@rem Clean up stage.
+@rem
+cd %owd%
+b uninstall
+@if errorlevel 1 goto error
+
+@echo off
+
+echo.
+echo Toolchain installation: %idir%\bin
+echo Upgrade configuration: %cdir%
+echo.
+
+goto end
+
+:error
+@echo off
+cd %owd%
+endlocal
+exit /b 1
+
+:end
+endlocal