diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ae268c6adbb58b899cf1090abcc452e3043b1930..e518300de0108c730928e4abbe95ee76a19c9e33 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -18,7 +18,7 @@ build-py2:
         - mkdir build
         - cd build
         - cmake -DUSE_PY3=OFF -Wno-dev ..
-        - make -j 4
+        - make -j $(nproc)
     artifacts:
         paths:
             - build/
@@ -32,7 +32,7 @@ build-py2-no-tlnos:
         - mkdir build
         - cd build
         - cmake -DUSE_PY3=OFF -Wno-dev -C ../CMake/disable-trilinos.cmake ..
-        - make -j 4
+        - make -j $(nproc)
 
 build-py3:
     image: rboman/waves-py3:2020.1
@@ -43,7 +43,7 @@ build-py3:
         - mkdir build
         - cd build
         - cmake -Wno-dev ..
-        - make -j 4
+        - make -j $(nproc)
     artifacts:
         paths:
             - build/
@@ -80,7 +80,7 @@ ctest-py2:
     stage: test
     script:
         - cd build
-        - ctest -j 4 #--verbose
+        - ctest -j $(nproc) #--verbose
     #timeout: 10 hours  # will be available in 12.3
     dependencies:
         - build-py2
@@ -90,7 +90,7 @@ ctest-py3:
     stage: test
     script:
         - cd build
-        - ctest -j 4 #--verbose
+        - ctest -j $(nproc) #--verbose
     dependencies:
         - build-py3
         
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6fa771f5e26dd8afcc4b3ec40dc9ed0779e7e624..51b9e47c68988780900c00ada8d71340f88a69b8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -79,6 +79,7 @@ IF((CMAKE_CXX_COMPILER_ID MATCHES "GNU") OR (CMAKE_CXX_COMPILER_ID MATCHES "Inte
     SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp -Wno-unknown-pragmas -Wno-sign-compare") # merge trilinos
 ELSEIF(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
     ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_DEPRECATE)
+    ADD_DEFINITIONS(-D_USE_MATH_DEFINES) # otherwise M_PI is undefined
     SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")  # parallel build with MSVC
     #SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")  # add verbosity
 ELSEIF(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
diff --git a/scripts/devenv-vs2015.bat b/scripts/devenv-vs2015.bat
index 0817824cafb7d7466c95c5efd7438c76d788e37f..2c2a359ba80b9fa3825f5bceaf1f825e0168db3e 100644
--- a/scripts/devenv-vs2015.bat
+++ b/scripts/devenv-vs2015.bat
@@ -1,24 +1,10 @@
 @echo off
-:: Ligne de commande qui va bien pour compiler mes brols
-::
-:: Utilisation:
-::    - installer les libs (dans c:\local p. expl.)
-::    - definir la variable d'env MYLOCAL  (=c:\local p. expl. )
-::    - double cliquer sur myenv.bat
-::    - cd ..\wavesB
-::    - cmake -G "Visual Studio 14 2015 Win64" -DWAVES_USE_TLNOS=OFF ..\waves
-::    ou (tbox seul):
-::    - cmake -G "Visual Studio 14 2015 Win64" -DWAVES_USE_TLNOS=OFF -DWAVES_USE_WAVES=OFF -DWAVES_USE_HEAT=OFF -DWAVES_USE_MIRRORS=OFF ..\waves
-::    - cmake --build . --config Release -- -j6
-::    - ctest -C Release
-:: Incredibuild (http://www.incredibuild.com/webhelp/#BuildConsole.html)
-::    - BuildConsole Waves.sln /rebuild /cfg="Release|x64"
+:: command line for MSVC build (Visual Studio 2015)
 
-set PATH=%PATH%;%MYLOCAL%\swigwin-3.0.12
-set INCLUDE=%MYLOCAL%\include;%MYLOCAL%\MUMPS\include;%MYLOCAL%\eigen-3.3.2
+set PATH=%PATH%;%MYLOCAL%\swigwin
+set INCLUDE=%MYLOCAL%\include;%MYLOCAL%\MUMPS\include;%MYLOCAL%\eigen
 set LIB=%MYLOCAL%\MUMPS\lib
 
-:: ok (MKL + VS en ligne de commande)
 call "C:\Program Files (x86)\IntelSWTools\compilers_and_libraries\windows\mkl\bin\mklvars.bat" intel64 vs2015
 call "C:\Program Files (x86)\IntelSWTools\compilers_and_libraries\windows\tbb\bin\tbbvars.bat" intel64 vs2015
 %comspec% /K ""C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64"
diff --git a/scripts/devenv-vs2017.bat b/scripts/devenv-vs2017.bat
new file mode 100644
index 0000000000000000000000000000000000000000..dce652b643f7f879f301bcadf47f98185c78e759
--- /dev/null
+++ b/scripts/devenv-vs2017.bat
@@ -0,0 +1,10 @@
+@echo off
+:: command line for MSVC build (Visual Studio 2017)
+
+set PATH=%PATH%;%MYLOCAL%\swig
+set INCLUDE=%MYLOCAL%\include;%MYLOCAL%\MUMPS\include;%MYLOCAL%\eigen
+set LIB=%MYLOCAL%\MUMPS\lib
+
+call "C:\Program Files (x86)\IntelSWTools\compilers_and_libraries\windows\mkl\bin\mklvars.bat" intel64 vs2017
+call "C:\Program Files (x86)\IntelSWTools\compilers_and_libraries\windows\tbb\bin\tbbvars.bat" intel64 vs2017
+%comspec% /K ""C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat" amd64"
diff --git a/sph/src/sph.h b/sph/src/sph.h
index 37d56ac20da005ad16a233b8455078d4c06eb777..32c048f2152e26e925e375507e42f207570b90cc 100644
--- a/sph/src/sph.h
+++ b/sph/src/sph.h
@@ -30,11 +30,7 @@
 #endif
 
 #include "tbox.h"
-#define _USE_MATH_DEFINES
 #include <math.h>
-//#ifndef M_PI
-//#define M_PI 3.141592653589793238462643383279502884197e0
-//#endif
 
 namespace sph
 {
diff --git a/tbox/src/CMakeLists.txt b/tbox/src/CMakeLists.txt
index ef95ec8f081b0a8524b1ac8204939984bf5743bc..e5cc460b3b823fde82514d407a3d42d937617c2d 100644
--- a/tbox/src/CMakeLists.txt
+++ b/tbox/src/CMakeLists.txt
@@ -47,7 +47,6 @@ MESSAGE(STATUS "MKL_LIBRARIES=${MKL_LIBRARIES}")
 IF(MKL_INCLUDE_DIRS AND MKL_LIBRARIES)
     MESSAGE(STATUS "Found Intel MKL")
     SET(WITH_MKL TRUE)
-    INCLUDE_DIRECTORIES(${MKL_INCLUDE_DIRS})
     SET(LAPACK_INCLUDE_DIRS ${MKL_INCLUDE_DIRS})
     SET(LAPACK_LIBRARIES ${MKL_LIBRARIES})
 ELSE()
@@ -68,7 +67,7 @@ ENDIF()
 
 # -- Eigen --
 FIND_PACKAGE(EIGEN REQUIRED)
-TARGET_INCLUDE_DIRECTORIES(tbox PUBLIC ${EIGEN_INCLUDE_DIRS})
+TARGET_INCLUDE_DIRECTORIES(tbox PUBLIC ${EIGEN_INCLUDE_DIRS} ${LAPACK_INCLUDE_DIRS})
 TARGET_COMPILE_DEFINITIONS(tbox PUBLIC EIGEN_DONT_PARALLELIZE)
 IF(WITH_MKL)
     MESSAGE(STATUS "Linking Eigen with MKL")
@@ -76,7 +75,6 @@ IF(WITH_MKL)
 ELSE()
     MESSAGE(STATUS "Linking Eigen with ${BLA_VENDOR}")
     TARGET_COMPILE_DEFINITIONS(tbox PUBLIC EIGEN_USE_BLAS)
-    #TARGET_COMPILE_DEFINITIONS(tbox PUBLIC EIGEN_USE_LAPACKE) # why this line fails?
 ENDIF()
 TARGET_LINK_LIBRARIES(tbox ${LAPACK_LIBRARIES})