# 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 }