From 79daae41d90d7e287bada2c22e46e880b843c222 Mon Sep 17 00:00:00 2001
From: Ammar Nejati <a.nejati@fz-juelich.de>
Date: Fri, 8 Oct 2021 13:18:56 +0200
Subject: [PATCH] Windows build: Improve the Windows build script

The Windows build script is updated to use the newly compiled Boost 1.77.0.

* A minimal path is set in the beginning to avoid any unintended conflicts with
other libraries installed on the system.
* Timers are added to measure the elapsed times for building and testing.
* Verbosity of CPack is reduced.
---
 devtools/deploy/winbuild.ps1 | 33 +++++++++++++++++++++++----------
 1 file changed, 23 insertions(+), 10 deletions(-)

diff --git a/devtools/deploy/winbuild.ps1 b/devtools/deploy/winbuild.ps1
index 8e05529631c..e695b5b9c50 100644
--- a/devtools/deploy/winbuild.ps1
+++ b/devtools/deploy/winbuild.ps1
@@ -5,13 +5,19 @@
 # stop on first error
 $ErrorActionPreference = "Stop"
 
-$OPTLIBS = "C:/opt/x64"
-$FFTW3_INCLUDE_DIR = "$OPTLIBS/include"
-$FFTW3_LIB = "$OPTLIBS/lib/libfftw3-3.lib"
-$QTDIR = "C:/Qt/current/msvc2019_64"
-$QTCMake_DIR = "$QTDIR/lib/cmake"
+$OPT_DIR = "C:/opt/x64"
+$FFTW3_INCLUDE_DIR = "$OPT_DIR/include"
+$FFTW3_LIB = "$OPT_DIR/lib/libfftw3-3.lib"
+$BOOST_DIR = "$OPT_DIR/boost_current"
+$BOOST_INCLUDE_DIR = "$BOOST_DIR/include"
+$BOOST_LIB_DIR = "$BOOST_DIR/lib"
+$QT_MSVC_DIR = "C:/Qt/msvc"
+$QTCMake_DIR = "$QT_MSVC_DIR/lib/cmake"
 $BUILD_DIR = "build"
 
+# set minimal path for build
+$Env:Path = "%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;$QT_MSVC_DIR\bin;C:\Program Files\Python39;$OPT_DIR\lib;$BOOST_LIB_DIR;C:\Program Files\Git\cmd;C:\Program Files\CMake\bin;C:\msys64\usr\bin;C:\msys64\mingw64\bin;C:\Program Files\ninja-win\;C:\Program Files (x86)\NSIS;"
+
 echo "#--- DIAGNOSTICS ---"
 
 # list powershell properties
@@ -30,20 +36,27 @@ pwd
 echo "#--- CONFIGURE ---"
 cmake --version
 cmake -G "Visual Studio 16 2019" -A x64 -T host=x64 -DLIB_MAN=OFF `
-    -DQTDIR="$QTDIR" -DQt5_DIR="$QTCMake_DIR/Qt5" -DQt5Test_DIR="$QTCMake_DIR/Qt5Test" `
+    -DQTDIR="$QT_MSVC_DIR" -DQt5_DIR="$QTCMake_DIR/Qt5" -DQt5Test_DIR="$QTCMake_DIR/Qt5Test" `
     -DFFTW3_INCLUDE_DIR="$FFTW3_INCLUDE_DIR" -DFFTW3_LIBRARY="$FFTW3_LIB" `
-    -DCMAKE_INCLUDE_PATH="$OPTLIBS/include" -DCMAKE_LIBRARY_PATH="$OPTLIBS/lib" `
+    -DCMAKE_INCLUDE_PATH="$OPT_DIR/include;$BOOST_INCLUDE_DIR" -DCMAKE_LIBRARY_PATH="$OPT_DIR/lib;$BOOST_LIB_DIR" `
     -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_CXX_COMPILER="cl.exe" `
     -B. ..
 
 echo "#--- BUILD ---"
 pwd
-cmake --build . --config Release --clean-first --parallel 8 `
-    -- /verbosity:minimal /m /property:MultiProcessorCompilation=true  # MSBuild options for parallel build
+$build_timer =  [system.diagnostics.stopwatch]::StartNew()
+cmake --build . --config Release --clean-first -- /fl /flp:logfile=BornAgainMSBuild.log /verbosity:minimal
+$build_timer.Stop()
 
 echo "#--- TEST ---"
+$test_timer =  [system.diagnostics.stopwatch]::StartNew()
 ctest -C Release --parallel 8 --output-on-failure
+$test_timer.Stop()
 
 echo "#--- PACKAGING ---"
 # build package via NSIS
-cpack -C Release --verbose
\ No newline at end of file
+cpack -C Release
+
+echo "----------------------------------------"
+echo "#--- Total Build Time = $($build_timer.Elapsed.TotalMinutes) min(s)."
+echo "#--- Total Test Time = $($test_timer.Elapsed.TotalMinutes) min(s)."
\ No newline at end of file
-- 
GitLab