--- /dev/null
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index cf1a05b..4898c8e 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -203,7 +203,17 @@ IF(MEDCOUPLING_ENABLE_RENUMBER)
+ ENDIF(MEDCOUPLING_ENABLE_RENUMBER)
+
+ IF(MEDCOUPLING_ENABLE_SHAPERECOGN)
+- FIND_PACKAGE(BLAS REQUIRED)
++ SET(CBLAS_ROOT_DIR $ENV{CBLAS_ROOT_DIR} CACHE PATH "Path to the LAPACK/CBLAS.")
++ IF(CBLAS_ROOT_DIR)
++ LIST(APPEND CMAKE_PREFIX_PATH "${CBLAS_ROOT_DIR}")
++ ENDIF(CBLAS_ROOT_DIR)
++ FIND_PACKAGE(CBLAS REQUIRED)
++ SET(LAPACK_ROOT_DIR $ENV{LAPACK_ROOT_DIR} CACHE PATH "Path to the LAPACKE")
++ IF(LAPACK_ROOT_DIR)
++ SET(LAPACK_ROOT_DIR $ENV{LAPACK_ROOT_DIR} CACHE PATH "Path to the LAPACK.")
++ LIST(APPEND CMAKE_PREFIX_PATH "${LAPACK_ROOT_DIR}")
++ ENDIF(LAPACK_ROOT_DIR)
++
+ FIND_PACKAGE(LAPACK REQUIRED)
+ FIND_LIBRARY(LAPACKE_LIB NAMES lapacke REQUIRED)
+ SET(LAPACK_LIBRARIES ${LAPACKE_LIB} ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
+diff --git a/src/ShapeRecogn/Test/CMakeLists.txt b/src/ShapeRecogn/Test/CMakeLists.txt
+index a7df417..f73ebd6 100644
+--- a/src/ShapeRecogn/Test/CMakeLists.txt
++++ b/src/ShapeRecogn/Test/CMakeLists.txt
+@@ -47,7 +47,7 @@ SALOME_GENERATE_TESTS_ENVIRONMENT(tests_env)
+ IF(NOT MEDCOUPLING_MICROMED)
+ SET(TESTSHAPE_RECOGN0 TestShapeRecogn)
+ ADD_EXECUTABLE(${TESTSHAPE_RECOGN0} ${TestShapeRecogn_SOURCES})
+- TARGET_LINK_LIBRARIES(${TESTSHAPE_RECOGN0} shaperecogn InterpKernelTestUtils medloader ${MEDFILE_C_LIBRARIES} ${HDF5_LIBRARIES} ${CPPUNIT_LIBRARIES} ${PLATFORM_LIBS})
++ TARGET_LINK_LIBRARIES(${TESTSHAPE_RECOGN0} shaperecogn InterpKernelTestUtils medloader ${MEDFILE_C_LIBRARIES} ${HDF5_LIBRARIES} ${CPPUNIT_LIBRARIES} ${PLATFORM_LIBS} ${CBLAS_LIBRARIES})
+
+ INSTALL(TARGETS ${TESTSHAPE_RECOGN0} DESTINATION ${MEDCOUPLING_INSTALL_BINS})
+
+diff --git a/src/ShapeRecogn/Test/ConeTest.cxx b/src/ShapeRecogn/Test/ConeTest.cxx
+index 2da2193..25ead55 100644
+--- a/src/ShapeRecogn/Test/ConeTest.cxx
++++ b/src/ShapeRecogn/Test/ConeTest.cxx
+@@ -192,7 +192,7 @@ void ConeTest::testComputeConeProperties()
+ void ConeTest::testFirstArea()
+ {
+ // primitive type
+- CPPUNIT_ASSERT_EQUAL(PrimitiveType::Plane, areas->getPrimitiveType(0));
++ CPPUNIT_ASSERT_EQUAL((int)PrimitiveType::Plane, (int)areas->getPrimitiveType(0));
+ // node ids
+ std::vector<mcIdType> nodeIdsRef{
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+@@ -213,7 +213,7 @@ void ConeTest::testFirstArea()
+ void ConeTest::testSecondArea()
+ {
+ // primitive type
+- CPPUNIT_ASSERT_EQUAL(PrimitiveType::Plane, areas->getPrimitiveType(0));
++ CPPUNIT_ASSERT_EQUAL((int)PrimitiveType::Plane, (int)areas->getPrimitiveType(0));
+ // node ids
+ std::vector<mcIdType> nodeIdsRef = {
+ 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583,
+@@ -264,7 +264,7 @@ void ConeTest::testSecondArea()
+ void ConeTest::testThirdArea()
+ {
+ // primitive type
+- CPPUNIT_ASSERT_EQUAL(PrimitiveType::Cone, areas->getPrimitiveType(2));
++ CPPUNIT_ASSERT_EQUAL((int)PrimitiveType::Cone, (int)areas->getPrimitiveType(2));
+ // node ids
+ std::vector<mcIdType> nodeIdsRef{
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+diff --git a/src/ShapeRecogn/Test/CylinderTest.cxx b/src/ShapeRecogn/Test/CylinderTest.cxx
+index 2e08bdf..6b7fc7f 100644
+--- a/src/ShapeRecogn/Test/CylinderTest.cxx
++++ b/src/ShapeRecogn/Test/CylinderTest.cxx
+@@ -50,7 +50,7 @@ void CylinderTest::testNumberOfAreas()
+ void CylinderTest::testFirstArea()
+ {
+ // primitive type
+- CPPUNIT_ASSERT_EQUAL(PrimitiveType::Cylinder, areas->getPrimitiveType(0));
++ CPPUNIT_ASSERT_EQUAL((int)PrimitiveType::Cylinder, (int) areas->getPrimitiveType(0));
+ // node ids
+ std::vector<mcIdType> nodeIdsRef{
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+@@ -108,7 +108,7 @@ void CylinderTest::testFirstArea()
+ void CylinderTest::testSecondArea()
+ {
+ // primitive type
+- CPPUNIT_ASSERT_EQUAL(PrimitiveType::Plane, areas->getPrimitiveType(1));
++ CPPUNIT_ASSERT_EQUAL((int)PrimitiveType::Plane, (int)areas->getPrimitiveType(1));
+ // node ids
+ std::vector<mcIdType> nodeIdsRef{
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+@@ -134,7 +134,7 @@ void CylinderTest::testSecondArea()
+ void CylinderTest::testThirdArea()
+ {
+ // primitive type
+- CPPUNIT_ASSERT_EQUAL(PrimitiveType::Plane, areas->getPrimitiveType(2));
++ CPPUNIT_ASSERT_EQUAL((int)PrimitiveType::Plane, (int)areas->getPrimitiveType(2));
+ // node ids
+ std::vector<mcIdType> nodeIdsRef{
+ 443, 444, 445, 446, 447, 448, 449, 450, 451, 452,
+diff --git a/src/ShapeRecogn/Test/MathOpsTest.cxx b/src/ShapeRecogn/Test/MathOpsTest.cxx
+index 6841fe0..82a27b9 100644
+--- a/src/ShapeRecogn/Test/MathOpsTest.cxx
++++ b/src/ShapeRecogn/Test/MathOpsTest.cxx
+@@ -19,7 +19,7 @@
+
+ #include "MathOpsTest.hxx"
+ #include "MathOps.hxx"
+-
++#include <cblas.h>
+ using namespace MEDCoupling;
+
+ void MathOpsTest::testLstsq()
+diff --git a/src/ShapeRecogn/Test/MathOpsTest.hxx b/src/ShapeRecogn/Test/MathOpsTest.hxx
+index 8cbc635..8b5b3fd 100644
+--- a/src/ShapeRecogn/Test/MathOpsTest.hxx
++++ b/src/ShapeRecogn/Test/MathOpsTest.hxx
+@@ -37,12 +37,12 @@ namespace MEDCoupling
+ CPPUNIT_TEST_SUITE_END();
+
+ public:
+- static void testLstsq();
+- static void testLstsq2();
+- static void testLstsqBig();
+- static void testComputeCov();
+- static void testComputePCAFirstAxis();
+- static void testComputeAngles();
+- static void testComputeBaseFromNormal();
++ void testLstsq();
++ void testLstsq2();
++ void testLstsqBig();
++ void testComputeCov();
++ void testComputePCAFirstAxis();
++ void testComputeAngles();
++ void testComputeBaseFromNormal();
+ };
+ }
+diff --git a/src/ShapeRecogn/Test/SphereTest.cxx b/src/ShapeRecogn/Test/SphereTest.cxx
+index b219e1a..630f55c 100644
+--- a/src/ShapeRecogn/Test/SphereTest.cxx
++++ b/src/ShapeRecogn/Test/SphereTest.cxx
+@@ -47,7 +47,7 @@ void SphereTest::testArea()
+ CPPUNIT_ASSERT_EQUAL(1, (int)areas->getNumberOfAreas());
+ // 8 double nodes so 147 - 6 nodes
+ CPPUNIT_ASSERT_EQUAL(141, (int)areas->getNumberOfNodes(0));
+- CPPUNIT_ASSERT_EQUAL(PrimitiveType::Sphere, areas->getPrimitiveType(0));
++ CPPUNIT_ASSERT_EQUAL((int)PrimitiveType::Sphere, (int)areas->getPrimitiveType(0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, areas->getRadius(0), 1E-2);
+ std::array<double, 3> centerRef = {5.3, -6.7, -9.02};
+ std::array<double, 3> center = areas->getCenter(0);
+diff --git a/src/ShapeRecogn/Test/TestShapeRecogn.cxx b/src/ShapeRecogn/Test/TestShapeRecogn.cxx
+index 8d07cce..fb2e25e 100644
+--- a/src/ShapeRecogn/Test/TestShapeRecogn.cxx
++++ b/src/ShapeRecogn/Test/TestShapeRecogn.cxx
+@@ -17,6 +17,7 @@
+ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+ //
+
++#include "CppUnitTest.hxx"
+ #include "MathOpsTest.hxx"
+ #include "PlaneTest.hxx"
+ #include "CylinderTest.hxx"
+diff --git a/src/ShapeRecogn/Test/TorusTest.cxx b/src/ShapeRecogn/Test/TorusTest.cxx
+index fecb7b3..32ab1c2 100644
+--- a/src/ShapeRecogn/Test/TorusTest.cxx
++++ b/src/ShapeRecogn/Test/TorusTest.cxx
+@@ -46,7 +46,7 @@ void TorusTest::testArea()
+ {
+ CPPUNIT_ASSERT_EQUAL(275, (int)srMesh->getNodes()->getNbNodes());
+ CPPUNIT_ASSERT_EQUAL(1, (int)areas->getNumberOfAreas());
+- CPPUNIT_ASSERT_EQUAL(PrimitiveType::Torus, areas->getPrimitiveType(0));
++ CPPUNIT_ASSERT_EQUAL((int)PrimitiveType::Torus, (int)areas->getPrimitiveType(0));
+ // Some nodes are unknown
+ CPPUNIT_ASSERT_EQUAL(272, (int)areas->getNumberOfNodes(0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(0.843297, areas->getMinorRadius(0), 1E-2);