From 5571f154e2a620edfe61e76013b3328b9e2bc130 Mon Sep 17 00:00:00 2001
From: andreadelprete <andre.delprete@gmail.com>
Date: Mon, 2 Nov 2015 14:43:32 +0100
Subject: [PATCH] Fix cmake so that it can work even without coin-or LP solver.

---
 CMakeLists.txt                         | 14 +++++++++++++-
 cmake2/FindCDD.cmake                   |  4 ++--
 cmake2/FindCLP.cmake                   |  8 ++++----
 include/robust-equilibrium-lib/util.hh |  2 +-
 src/CMakeLists.txt                     | 14 ++++++++++----
 test/CMakeLists.txt                    |  4 +++-
 test/test_static_equilibrium.cpp       |  8 ++++----
 7 files changed, 37 insertions(+), 17 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index ee1f86f..863e3c3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -24,6 +24,10 @@ endif()
 
 SETUP_PROJECT()
 
+# Inhibit all warning messages.
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w")
+
+# remove flag that makes all warnings into errors
 string (REPLACE "-Werror" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
 MESSAGE( STATUS "CMAKE_CXX_FLAGS: " ${CMAKE_CXX_FLAGS} )
 
@@ -48,7 +52,15 @@ else()
 endif()
 
 find_package(CDD REQUIRED)
-find_package(CLP REQUIRED)
+find_package(CLP)
+
+IF("${CLP_LIBRARY}" STREQUAL "CLP_LIBRARY-NOTFOUND")
+  message(STATUS "CLP_LIBRARY equal to CLP_LIBRARY-NOTFOUND so I assume CLP was not found ")
+else()
+  message(STATUS "CLP library found, defining macro CLP_FOUND")
+  add_definitions(-DCLP_FOUND)
+endif()
+
 SEARCH_FOR_QPOASES()
 
 add_subdirectory (src)
diff --git a/cmake2/FindCDD.cmake b/cmake2/FindCDD.cmake
index 54f859d..e05bb31 100644
--- a/cmake2/FindCDD.cmake
+++ b/cmake2/FindCDD.cmake
@@ -7,11 +7,11 @@
 
 
 find_path(CDD_INCLUDE_DIR cdd/cdd.h
-          HINTS ${CDD_INCLUDEDIR}
+          HINTS ${CDD_INCLUDEDIR} /usr/include
           PATH_SUFFIXES CDD )
 
 find_library(CDD_LIBRARY NAMES libcdd
-             HINTS ${CDD_LIBDIR} ${CDD_LIBRARY_DIRS} )
+             HINTS ${CDD_LIBDIR} ${CDD_LIBRARY_DIRS} /usr/lib/libcdd.so )
 
 set(CDD_LIBRARIES ${CDD_LIBRARY} )
 set(CDD_INCLUDE_DIRS ${CDD_INCLUDE_DIR} )
diff --git a/cmake2/FindCLP.cmake b/cmake2/FindCLP.cmake
index c8f2549..7a56552 100644
--- a/cmake2/FindCLP.cmake
+++ b/cmake2/FindCLP.cmake
@@ -1,9 +1,9 @@
 # - Try to find libcdd
 # Once done this will define
-#  CDD_FOUND - System has CDD
-#  CDD_INCLUDE_DIRS - The CDD include directories
-#  CDD_LIBRARIES - The libraries needed to use CDD
-#  CDD_DEFINITIONS - Compiler switches required for using CDD
+#  CLP_FOUND - System has CLP
+#  CLP_INCLUDE_DIRS - The CLP include directories
+#  CLP_LIBRARIES - The libraries needed to use CLP
+#  CLP_DEFINITIONS - Compiler switches required for using CLP
 
 # /usr/include/coin, /usr/lib/libClp.so
 
diff --git a/include/robust-equilibrium-lib/util.hh b/include/robust-equilibrium-lib/util.hh
index ad048ab..3082029 100644
--- a/include/robust-equilibrium-lib/util.hh
+++ b/include/robust-equilibrium-lib/util.hh
@@ -59,7 +59,7 @@ typedef const Eigen::Ref<const MatrixXX>    & Cref_matrixXX;
 #else
 typedef Vector2     & Ref_vector2;
 typedef Vector3     & Ref_vector3;
-typedef VectorX     & Ref_vector;
+typedef VectorX     & Ref_vectorX;
 typedef Rotation    & Ref_rotation;
 typedef MatrixX3    & Ref_matrixX3;
 typedef Matrix43    & Ref_matrix43;
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 183f047..b7922e2 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -4,9 +4,13 @@ include_directories("${SRC_DIR}")
 include_directories("${INCLUDE_DIR}")
 include_directories("${EIGEN3_INCLUDE_DIR}")
 include_directories("${CDD_INCLUDE_DIR}")
-include_directories("${CLP_INCLUDE_DIR}")
 include_directories("${qpOASES_INCLUDE_DIR}")
 
+if( DEFINED CLP_FOUND)
+  include_directories("${CLP_INCLUDE_DIR}")
+endif()
+
+
 SET(LIBRARY_NAME ${PROJECT_NAME})
 
 SET(${LIBRARY_NAME}_SOURCES
@@ -32,9 +36,11 @@ if ( MSVC )
 endif ( MSVC )
 
 TARGET_LINK_LIBRARIES(robust-equilibrium-lib ${CDD_LIBRARY}
-                                             ${qpOASES_LIBRARY}
-                                             ${CLP_LIBRARY}
-                                              /usr/lib/libCoinUtils.so)
+                                             ${qpOASES_LIBRARY})
+if( DEFINED CLP_FOUND)
+  TARGET_LINK_LIBRARIES(robust-equilibrium-lib ${CLP_LIBRARY}
+                                               /usr/lib/libCoinUtils.so)
+endif()
 
 SET_TARGET_PROPERTIES(robust-equilibrium-lib PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")
 SET_TARGET_PROPERTIES(robust-equilibrium-lib PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index d597f0f..53c7250 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -4,8 +4,10 @@ include_directories("${SRC_DIR}")
 include_directories("${INCLUDE_DIR}")
 include_directories("${EIGEN3_INCLUDE_DIR}")
 include_directories("${CDD_INCLUDE_DIR}")
-include_directories("${CLP_INCLUDE_DIR}")
 include_directories("${qpOASES_INCLUDE_DIR}")
+if(DEFINED CLP_FOUND)
+  include_directories("${CLP_INCLUDE_DIR}")
+endif()
 
 PROJECT(robust-equilibrium-lib)
 
diff --git a/test/test_static_equilibrium.cpp b/test/test_static_equilibrium.cpp
index cadc209..e86bc6a 100644
--- a/test/test_static_equilibrium.cpp
+++ b/test/test_static_equilibrium.cpp
@@ -217,7 +217,7 @@ int test_findExtremumOverLine(StaticEquilibrium &solver_to_test, StaticEquilibri
   }
 
   if(verb>0)
-    SEND_INFO_MSG("Test findExtremumOverLine "+solver_to_test.getName()+" VS "+solver_ground_truth.getName()+": "+toString(error_counter)+" error(s).");
+    cout<<"Test findExtremumOverLine "+solver_to_test.getName()+" VS "+solver_ground_truth.getName()+": "+toString(error_counter)+" error(s).\n";
   return error_counter;
 }
 
@@ -461,9 +461,9 @@ int main()
   test_computeEquilibriumRobustness(solver_DLP_oases, solver_DLP_coin, comPositions, PERF_DLP_OASES, PERF_DLP_COIN, 1);
   test_computeEquilibriumRobustness(solver_DLP_oases, solver_LP_coin, comPositions, PERF_DLP_OASES, PERF_LP_COIN, 1);
 
-  test_computeEquilibriumRobustness_vs_checkEquilibrium(solver_LP_coin, solver_PP, comPositions, PERF_LP_COIN, 1);
-  test_computeEquilibriumRobustness_vs_checkEquilibrium(solver_LP2_coin, solver_PP, comPositions, PERF_LP2_COIN, 1);
-  test_computeEquilibriumRobustness_vs_checkEquilibrium(solver_DLP_coin, solver_PP, comPositions, PERF_DLP_COIN, 1);
+  test_computeEquilibriumRobustness_vs_checkEquilibrium(solver_LP_coin, solver_PP, comPositions, PERF_LP_COIN, NULL, 1);
+  test_computeEquilibriumRobustness_vs_checkEquilibrium(solver_LP2_coin, solver_PP, comPositions, PERF_LP2_COIN, NULL, 1);
+  test_computeEquilibriumRobustness_vs_checkEquilibrium(solver_DLP_coin, solver_PP, comPositions, PERF_DLP_COIN, NULL, 1);
 #endif
 
 
-- 
GitLab