| # Find Visual Studio installation directory. |
| $VS_INSTALL_DIR = &"${Env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -latest -property installationPath |
| |
| # Run VCVarsAll.bat initialization script and extract environment variables. |
| # http://allen-mack.blogspot.com/2008/03/replace-visual-studio-command-prompt.html |
| cmd.exe /c "`"${VS_INSTALL_DIR}\VC\Auxiliary\Build\vcvarsall.bat`" $EIGEN_CI_MSVC_ARCH -vcvars_ver=$EIGEN_CI_MSVC_VER & set" | |
| foreach { |
| if ($_ -match "=") { |
| $v = $_.split("="); set-item -force -path "ENV:\$($v[0])" -value "$($v[1])" |
| } |
| } |
| |
| # Create and enter build directory. |
| $rootdir = Get-Location |
| mkdir $EIGEN_CI_BUILDDIR |
| cd $EIGEN_CI_BUILDDIR |
| |
| # We need to split EIGEN_CI_ADDITIONAL_ARGS, otherwise they are interpretted |
| # as a single argument. Split by space, unless double-quoted. |
| $split_args = [regex]::Split(${EIGEN_CI_ADDITIONAL_ARGS}, ' (?=(?:[^"]|"[^"]*")*$)' ) |
| |
| # Configure build. |
| cmake -G Ninja -DCMAKE_BUILD_TYPE=MinSizeRel ` |
| -DEIGEN_TEST_CUSTOM_CXX_FLAGS="${EIGEN_CI_TEST_CUSTOM_CXX_FLAGS}" ` |
| ${split_args} "${rootdir}" |
| |
| $target = "" |
| if (${EIGEN_CI_BUILD_TARGET}) { |
| $target = "--target ${EIGEN_CI_BUILD_TARGET}" |
| } |
| |
| # Windows builds sometimes fail due heap errors. In that case, try |
| # building the rest, then try to build again with a single thread. |
| cmake --build . ${target} -- -k0 || cmake --build . ${target} -- -k0 -j1 |
| |
| $success = $LASTEXITCODE |
| |
| # Return to root directory. |
| cd ${rootdir} |
| |
| # Explicitly propagate exit code to indicate pass/failure of build command. |
| if($success -ne 0) { Exit $success } |