mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-04-24 02:29:33 +08:00
45 lines
1.6 KiB
PowerShell
45 lines
1.6 KiB
PowerShell
# 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
|
|
if (-Not (Test-Path ${EIGEN_CI_BUILDDIR})) {
|
|
mkdir $EIGEN_CI_BUILDDIR
|
|
}
|
|
cd $EIGEN_CI_BUILDDIR
|
|
|
|
# We need to split EIGEN_CI_ADDITIONAL_ARGS, otherwise they are interpreted
|
|
# 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 }
|