From 61555666fae17d005561cb510c756373f7da7036 Mon Sep 17 00:00:00 2001 From: Francois Bleibel <fbleibel@gmail.com> Date: Wed, 23 Jun 2010 15:59:04 +0900 Subject: [PATCH] Added LAPACK library dependencies in FORTRAN. Adjusted for a change in singletons names from dynamicgraph. --- AUTHORS | 2 +- CMakeLists.txt | 103 ++++++++--------------- include/sot-core/integrator-abstract.h | 4 +- include/sot-core/pool.h | 8 +- src/CMakeLists.txt | 53 +----------- src/factory/additional-functions.cpp | 18 ++-- src/feature/feature-point6d-relative.cpp | 2 +- src/feature/feature-task.cpp | 2 +- src/math/op-point-modifier.cpp | 2 +- src/sot/sot-h.cpp | 4 +- src/task/constraint.cpp | 2 +- src/task/task-conti.cpp | 2 +- unitTesting/CMakeLists.txt | 27 ++---- 13 files changed, 67 insertions(+), 162 deletions(-) diff --git a/AUTHORS b/AUTHORS index f766ee26..77602e72 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1 +1 @@ -Authors: +Authors: Nicolas Mansard, Olivier Stasse, François Keith, François Bleibel \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 2853967b..59cbf88f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,6 +23,19 @@ IF(UNIX) SET(LIB_EXT "") ENDIF(UNIX) +# Languages +# Fortran has, sadly, to be used for LAPACK libraries +# Visual Studio uses precompiled libs so there is no +# need to enable the Fortran language. +enable_language(CXX) +IF( + (NOT "${CMAKE_GENERATOR}" MATCHES "Visual Studio.*") ) +enable_language(Fortran) +ENDIF( + (NOT "${CMAKE_GENERATOR}" MATCHES "Visual Studio.*") +) + + # # Look for dependencies # @@ -30,6 +43,18 @@ ENDIF(UNIX) # Load Pkgconfig macros INCLUDE(FindPkgConfig) SET(PACKAGE_REQUIREMENTS "") +#enable_language(Fortran) +# --- LAPACK -------------------------------------------------- +FIND_PACKAGE(LAPACK) +IF(LAPACK_FOUND) + foreach(lapack_lib ${LAPACK_LIBRARIES}) + LIST(APPEND ${PROJECT_NAME}_LINK_SRC_FLAGS ${lapack_lib}) + LIST(APPEND ${PROJECT_NAME}_LINK_FLAGS ${lapack_lib}) + endforeach(lapack_lib) + IF (WIN32) + LIST(APPEND ${PROJECT_NAME}_CXX_FLAGS "-DBOOST_NUMERIC_BINDINGS_USE_CLAPACK" ) + ENDIF (WIN32) +ENDIF(LAPACK_FOUND) # # Dependency to package MatrixAbstractLayer @@ -53,75 +78,16 @@ ELSE(PACKAGE_REQUIREMENTS STREQUAL "") SET(PACKAGE_REQUIREMENTS "${PACKAGE_REQUIREMENTS}, ${MATRIXABSTRACTLAYER_REQUIRED}") ENDIF(PACKAGE_REQUIREMENTS STREQUAL "") +INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS}) +LINK_DIRECTORIES(${Boost_LIBRARY_DIRS}) -# -# Dependency to package dynamicsJRLJapan -# -SET(DYNAMICSJRLJAPAN_FOUND 0) -SET(DYNAMICSJRLJAPAN_REQUIRED "dynamicsJRLJapan >= 1.16.1") -PKG_CHECK_MODULES(DYNAMICSJRLJAPAN REQUIRED ${DYNAMICSJRLJAPAN_REQUIRED}) -EXEC_PROGRAM(${PKG_CONFIG_EXECUTABLE} ARGS --variable=docdir dynamicsJRLJapan - OUTPUT_VARIABLE DYNAMICSJRLJAPAN_DOCDIR) -MESSAGE(STATUS "pkg-config: ${PKG_CONFIG_EXECUTABLE}") -MESSAGE(STATUS "DYNAMICSJRLJAPAN_DOCDIR=${DYNAMICSJRLJAPAN_DOCDIR}") -SET(DYNAMICSJRLJAPAN_FOUND 1) - -IF(NOT ${DYNAMICSJRLJAPAN_FOUND}) - MESSAGE(FATAL_ERROR "Check that package dynamicsJRLJapan is installed in a directory pointed out by PKG_CONFIG_PATH.") -ENDIF(NOT ${DYNAMICSJRLJAPAN_FOUND}) - -IF(PACKAGE_REQUIREMENTS STREQUAL "") - SET(PACKAGE_REQUIREMENTS ${DYNAMICSJRLJAPAN_REQUIRED}) -ELSE(PACKAGE_REQUIREMENTS STREQUAL "") - SET(PACKAGE_REQUIREMENTS "${PACKAGE_REQUIREMENTS}, ${DYNAMICSJRLJAPAN_REQUIRED}") -ENDIF(PACKAGE_REQUIREMENTS STREQUAL "") - - -# -# Dependency to package hrp2Dynamics -# -SET(HRP2DYNAMICS_FOUND 0) -SET(HRP2DYNAMICS_REQUIRED "hrp2Dynamics >= 1.3.0") -PKG_CHECK_MODULES(HRP2DYNAMICS REQUIRED ${HRP2DYNAMICS_REQUIRED}) -EXEC_PROGRAM(${PKG_CONFIG_EXECUTABLE} ARGS --variable=docdir hrp2Dynamics - OUTPUT_VARIABLE HRP2DYNAMICS_DOCDIR) -MESSAGE(STATUS "pkg-config: ${PKG_CONFIG_EXECUTABLE}") -MESSAGE(STATUS "HRP2DYNAMICS_DOCDIR=${HRP2DYNAMICS_DOCDIR}") -SET(HRP2DYNAMICS_FOUND 1) - -IF(NOT ${HRP2DYNAMICS_FOUND}) - MESSAGE(FATAL_ERROR "Check that package hrp2Dynamics is installed in a directory pointed out by PKG_CONFIG_PATH.") -ENDIF(NOT ${HRP2DYNAMICS_FOUND}) - -IF(PACKAGE_REQUIREMENTS STREQUAL "") - SET(PACKAGE_REQUIREMENTS ${HRP2DYNAMICS_REQUIRED}) -ELSE(PACKAGE_REQUIREMENTS STREQUAL "") - SET(PACKAGE_REQUIREMENTS "${PACKAGE_REQUIREMENTS}, ${HRP2DYNAMICS_REQUIRED}") -ENDIF(PACKAGE_REQUIREMENTS STREQUAL "") - - -# -# Dependency to package walkGenJrl -# -SET(WALKGENJRL_FOUND 0) -SET(WALKGENJRL_REQUIRED "walkGenJrl >= 3.0.0") -PKG_CHECK_MODULES(WALKGENJRL REQUIRED ${WALKGENJRL_REQUIRED}) -EXEC_PROGRAM(${PKG_CONFIG_EXECUTABLE} ARGS --variable=docdir walkGenJrl - OUTPUT_VARIABLE WALKGENJRL_DOCDIR) -MESSAGE(STATUS "pkg-config: ${PKG_CONFIG_EXECUTABLE}") -MESSAGE(STATUS "WALKGENJRL_DOCDIR=${WALKGENJRL_DOCDIR}") -SET(WALKGENJRL_FOUND 1) - -IF(NOT ${WALKGENJRL_FOUND}) - MESSAGE(FATAL_ERROR "Check that package walkGenJrl is installed in a directory pointed out by PKG_CONFIG_PATH.") -ENDIF(NOT ${WALKGENJRL_FOUND}) - -IF(PACKAGE_REQUIREMENTS STREQUAL "") - SET(PACKAGE_REQUIREMENTS ${WALKGENJRL_REQUIRED}) -ELSE(PACKAGE_REQUIREMENTS STREQUAL "") - SET(PACKAGE_REQUIREMENTS "${PACKAGE_REQUIREMENTS}, ${WALKGENJRL_REQUIRED}") -ENDIF(PACKAGE_REQUIREMENTS STREQUAL "") - +# --- BOOST NUMERIC BINDINGS------------------------------------- +IF ("${Boost_VERSION}" STRLESS "104000") + INCLUDE(${CMAKE_MODULE_PATH}/FindBoostNumericBindings.cmake) + MESSAGE(STATUS "BoostNumericBindings_INCLUDE_DIR=${BoostNumericBindings_INCLUDE_DIR}") + INCLUDE_DIRECTORIES(${BoostNumericBindings_INCLUDE_DIR}) + LIST(APPEND ${PROJECT_NAME}_CFLAGS -I${BoostNumericBindings_INCLUDE_DIR}) +ENDIF("${Boost_VERSION}" STRLESS "104000") # # Dependency to package dynamic-graph @@ -152,7 +118,6 @@ FIND_PACKAGE(Boost REQUIRED) include_directories(${Boost_INCLUDE_DIRS}) set(LIBS ${LIBS} ${Boost_LIBRARIES}) - # # pkg-config file # diff --git a/include/sot-core/integrator-abstract.h b/include/sot-core/integrator-abstract.h index 9ddd5507..099d9990 100644 --- a/include/sot-core/integrator-abstract.h +++ b/include/sot-core/integrator-abstract.h @@ -84,7 +84,7 @@ class IntegratorAbstract { std::string objname, signame; Interpreter::objectNameParser(cmdArgs, objname, signame); - Entity& obj = pool.getEntity(objname); + Entity& obj = g_pool.getEntity(objname); SignalBase<int>& sig = obj.getSignal(signame); try { Signal<coefT,int>& sigc = dynamic_cast<Signal<coefT,int>&>(sig); @@ -99,7 +99,7 @@ class IntegratorAbstract { std::string objname, signame; Interpreter::objectNameParser(cmdArgs, objname, signame); - Entity& obj = pool.getEntity(objname); + Entity& obj = g_pool.getEntity(objname); SignalBase<int>& sig = obj.getSignal(signame); try { Signal<coefT,int>& sigc = dynamic_cast<Signal<coefT,int>&>(sig); diff --git a/include/sot-core/pool.h b/include/sot-core/pool.h index 50a48bb2..dec646c8 100644 --- a/include/sot-core/pool.h +++ b/include/sot-core/pool.h @@ -3,7 +3,7 @@ * Copyright Projet JRL-Japan, 2007 *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * - * File: pool.h + * File: g_pool.h * Project: SOT * Author: Nicolas Mansard * @@ -126,9 +126,9 @@ class SOT_CORE_EXPORT PoolStorage be done on os. The commands specific to the <b>pool<\b> object are: - \li <b>list</b> : List all the entities registered in the pool. - \li <b>listFeature</b> : List all the features registered in the pool. - \li <b>listTask</b> : List all the tasks registered in the pool. + \li <b>list</b> : List all the entities registered in the g_pool. + \li <b>listFeature</b> : List all the features registered in the g_pool. + \li <b>listTask</b> : List all the tasks registered in the g_pool. */ void commandLine( const std::string& objectName,const std::string& functionName, std::istringstream& cmdArg, std::ostream& os ); diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 17f61533..aa9c8210 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -82,19 +82,6 @@ ADD_DEFINITIONS(-DDEBUG=2) # provide path to library libMatrixAbstractLayer.so LINK_DIRECTORIES(${MATRIXABSTRACTLAYER_LIBRARY_DIRS}) - -# provide path to library libdynamicsJRLJapan.so -LINK_DIRECTORIES(${DYNAMICSJRLJAPAN_LIBRARY_DIRS}) - - -# provide path to library libhrp2Dynamics.so -LINK_DIRECTORIES(${HRP2DYNAMICS_LIBRARY_DIRS}) - - -# provide path to library libwalkGenJrl.so -LINK_DIRECTORIES(${WALKGENJRL_LIBRARY_DIRS}) - - # provide path to library libdynamic-graph.so LINK_DIRECTORIES(${DYNAMIC_GRAPH_LIBRARY_DIRS}) @@ -113,6 +100,10 @@ SET_TARGET_PROPERTIES(${PROJECT_NAME_LIB} LINK_FLAGS ${${PROJECT_NAME}_src_LDFLAGS} ) +# Add lapack compilation flags and link to library libLapack.so +ADD_DEFINITIONS(${LAPACK_CFLAGS}) +TARGET_LINK_LIBRARIES(${LIBRARY_NAME} ${LAPACK_LIBRARIES}) + # Add MatrixAbstractLayer compilation flags and link to library libMatrixAbstractLayer.so ADD_DEFINITIONS(${MATRIXABSTRACTLAYER_CFLAGS}) IF(UNIX) @@ -125,42 +116,6 @@ foreach(dlink ${MATRIXABSTRACTLAYER_LDFLAGS}) endforeach(dlink) ENDIF(WIN32) -# Add dynamicsJRLJapan compilation flags and link to library libdynamicsJRLJapan.so -ADD_DEFINITIONS(${DYNAMICSJRLJAPAN_CFLAGS}) -IF(UNIX) -TARGET_LINK_LIBRARIES(${LIBRARY_NAME} ${DYNAMICSJRLJAPAN_LIBRARIES}) -ENDIF(UNIX) - -IF(WIN32) -foreach(dlink ${DYNAMICSJRLJAPAN_LDFLAGS}) - SET ( ${PROJECT_NAME}_src_LDFLAGS "${${PROJECT_NAME}_src_LDFLAGS} ${dlink}") -endforeach(dlink) -ENDIF(WIN32) - -# Add hrp2Dynamics compilation flags and link to library libhrp2Dynamics.so -ADD_DEFINITIONS(${HRP2DYNAMICS_CFLAGS}) -IF(UNIX) -TARGET_LINK_LIBRARIES(${LIBRARY_NAME} ${HRP2DYNAMICS_LIBRARIES}) -ENDIF(UNIX) - -IF(WIN32) -foreach(dlink ${HRP2DYNAMICS_LDFLAGS}) - SET ( ${PROJECT_NAME}_src_LDFLAGS "${${PROJECT_NAME}_src_LDFLAGS} ${dlink}") -endforeach(dlink) -ENDIF(WIN32) - -# Add walkGenJrl compilation flags and link to library libwalkGenJrl.so -ADD_DEFINITIONS(${WALKGENJRL_CFLAGS}) -IF(UNIX) -TARGET_LINK_LIBRARIES(${LIBRARY_NAME} ${WALKGENJRL_LIBRARIES}) -ENDIF(UNIX) - -IF(WIN32) -foreach(dlink ${WALKGENJRL_LDFLAGS}) - SET ( ${PROJECT_NAME}_src_LDFLAGS "${${PROJECT_NAME}_src_LDFLAGS} ${dlink}") -endforeach(dlink) -ENDIF(WIN32) - # Add dynamic-graph compilation flags and link to library libdynamic-graph.so ADD_DEFINITIONS(${DYNAMIC_GRAPH_CFLAGS}) IF(UNIX) diff --git a/src/factory/additional-functions.cpp b/src/factory/additional-functions.cpp index a071720b..aa2166ab 100644 --- a/src/factory/additional-functions.cpp +++ b/src/factory/additional-functions.cpp @@ -13,7 +13,7 @@ * * Description * ============ - * SOT-specific functions for the shell + * SOT-specific functions for the g_shell * * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ @@ -24,22 +24,22 @@ #include <sot-core/factory.h> #include <sot-core/additional-functions.h> #include <sot-core/signal-cast.h> -#include <dynamic-graph/all-signals.h> +#include <dynamic-graph/signal.h> #include <sot-core/flags.h> using namespace std; using namespace sot; /* \brief Constructor. At creation, overloads (deregisters-then registers - * again) the 'new' function in the shell + * again) the 'new' function in the g_shell */ AdditionalFunctions::AdditionalFunctions() { // overload 'new' - Shell.deregisterFunction("new"); - Shell.registerFunction("new", &AdditionalFunctions::cmdNew); + g_shell.deregisterFunction("new"); + g_shell.registerFunction("new", &AdditionalFunctions::cmdNew); } AdditionalFunctions::~AdditionalFunctions() { - Shell.deregisterFunction("new"); + g_shell.deregisterFunction("new"); } void AdditionalFunctions::cmdNew( const std::string& cmdLine, istringstream& cmdArg, std::ostream& os ) @@ -54,10 +54,10 @@ void AdditionalFunctions::cmdNew( const std::string& cmdLine, istringstream& cmd string objName; cmdArg >> className >>objName; sotDEBUG(15) << "New <" << className<<"> requested."<<endl; - if( factory.existEntity( className ) ) + if( g_factory.existEntity( className ) ) { sotDEBUG(15) << "New entity<"<<className<<"> " <<objName<<std::endl; - factory.newEntity(className,objName); + g_factory.newEntity(className,objName); } else if( sotFactory.existFeature( className ) ) { @@ -130,7 +130,7 @@ cmdFlagSet( const std::string& cmdLine, istringstream& cmdArg, std::ostream& os try { Signal<Flags,int> &sig1 - = dynamic_cast< Signal<Flags,int>& >( pool.getSignal(cmdArg) ); + = dynamic_cast< Signal<Flags,int>& >( g_pool.getSignal(cmdArg) ); dgDEBUG(25) << "set..."<<endl; Flags fl; try { fl = sig1.accessCopy(); } catch(...) {} diff --git a/src/feature/feature-point6d-relative.cpp b/src/feature/feature-point6d-relative.cpp index df2d687a..52ac3715 100644 --- a/src/feature/feature-point6d-relative.cpp +++ b/src/feature/feature-point6d-relative.cpp @@ -302,7 +302,7 @@ commandLine( const std::string& cmdLine, { std::string nameSdes; cmdArgs >> nameSdes; FeaturePoint6dRelative & sdes - = dynamic_cast< FeaturePoint6dRelative &> (pool.getEntity( nameSdes )); + = dynamic_cast< FeaturePoint6dRelative &> (g_pool.getEntity( nameSdes )); const int timeCurr = positionSIN.getTime() +1; positionSIN.recompute( timeCurr ); positionReferenceSIN.recompute( timeCurr ); diff --git a/src/feature/feature-task.cpp b/src/feature/feature-task.cpp index 7e123cca..f0658341 100644 --- a/src/feature/feature-task.cpp +++ b/src/feature/feature-task.cpp @@ -125,7 +125,7 @@ commandLine( const std::string& cmdLine, if( cmdArgs.good() ) { std::string name; cmdArgs >> name; - TaskAbstract& task = dynamic_cast< TaskAbstract & > (pool .getEntity( name )); + TaskAbstract& task = dynamic_cast< TaskAbstract & > (g_pool .getEntity( name )); taskPtr = &task; errorSIN.plug( &task.taskSOUT ); diff --git a/src/math/op-point-modifier.cpp b/src/math/op-point-modifier.cpp index fe097556..7cb8f29a 100644 --- a/src/math/op-point-modifier.cpp +++ b/src/math/op-point-modifier.cpp @@ -96,7 +96,7 @@ commandLine( const std::string& cmdLine, { Signal< MatrixHomogeneous,int > &sig = dynamic_cast< Signal< MatrixHomogeneous,int >& > - (pool.getSignal( cmdArgs )); + (g_pool.getSignal( cmdArgs )); setTransformation(sig.accessCopy()); } else if( cmdLine == "getTransfo" ) diff --git a/src/sot/sot-h.cpp b/src/sot/sot-h.cpp index cf53f0ab..242c992d 100644 --- a/src/sot/sot-h.cpp +++ b/src/sot/sot-h.cpp @@ -31,14 +31,14 @@ using namespace std; using namespace sot; -//#ifdef VP_DEBUG +#ifdef VP_DEBUG class sotSOTH__INIT { public:sotSOTH__INIT( void ) { sot::DebugTrace::openFile(); } }; sotSOTH__INIT sotSOTH_initiator; -//#endif +#endif /* --------------------------------------------------------------------- */ /* --- CLASS ----------------------------------------------------------- */ diff --git a/src/task/constraint.cpp b/src/task/constraint.cpp index 01c7fce8..130a91f3 100644 --- a/src/task/constraint.cpp +++ b/src/task/constraint.cpp @@ -157,7 +157,7 @@ commandLine( const std::string& cmdLine } else if( cmdLine=="add" ) { - SignalBase<int>* sigA = &pool.getSignal( cmdArgs ); + SignalBase<int>* sigA = &g_pool.getSignal( cmdArgs ); Signal< ml::Matrix,int >* sig = dynamic_cast< Signal<ml::Matrix,int>* >( sigA ); if(! sig ) diff --git a/src/task/task-conti.cpp b/src/task/task-conti.cpp index ecce5700..b07c3b47 100644 --- a/src/task/task-conti.cpp +++ b/src/task/task-conti.cpp @@ -159,7 +159,7 @@ commandLine( const std::string& cmdLine else if( cmdLine=="touch" ) { Signal<ml::Vector,int> & sig - = dynamic_cast< Signal<ml::Vector,int>& >( pool.getSignal( cmdArgs ) ); + = dynamic_cast< Signal<ml::Vector,int>& >( g_pool.getSignal( cmdArgs ) ); timeRef = TIME_REF_TO_BE_SET; //sig.getTime(); q0 = sig.accessCopy(); } diff --git a/unitTesting/CMakeLists.txt b/unitTesting/CMakeLists.txt index 4e3aa15e..3554c019 100644 --- a/unitTesting/CMakeLists.txt +++ b/unitTesting/CMakeLists.txt @@ -14,15 +14,6 @@ FOREACH(test ${tests}) # provide path to library libMatrixAbstractLayer.so LINK_DIRECTORIES(${MATRIXABSTRACTLAYER_LIBRARY_DIRS}) - # provide path to library libdynamicsJRLJapan.so - LINK_DIRECTORIES(${DYNAMICSJRLJAPAN_LIBRARY_DIRS}) - - # provide path to library libhrp2Dynamics.so - LINK_DIRECTORIES(${HRP2DYNAMICS_LIBRARY_DIRS}) - - # provide path to library libwalkGenJrl.so - LINK_DIRECTORIES(${WALKGENJRL_LIBRARY_DIRS}) - # provide path to library libdynamic-graph.so LINK_DIRECTORIES(${DYNAMIC_GRAPH_LIBRARY_DIRS}) @@ -40,24 +31,18 @@ FOREACH(test ${tests}) ADD_DEFINITIONS(${MATRIXABSTRACTLAYER_CFLAGS}) TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} ${MATRIXABSTRACTLAYER_LIBRARIES}) - # Add dynamicsJRLJapan compilation flags and link to library libdynamicsJRLJapan.so - ADD_DEFINITIONS(${DYNAMICSJRLJAPAN_CFLAGS}) - TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} ${DYNAMICSJRLJAPAN_LIBRARIES}) - - # Add hrp2Dynamics compilation flags and link to library libhrp2Dynamics.so - ADD_DEFINITIONS(${HRP2DYNAMICS_CFLAGS}) - TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} ${HRP2DYNAMICS_LIBRARIES}) - - # Add walkGenJrl compilation flags and link to library libwalkGenJrl.so - ADD_DEFINITIONS(${WALKGENJRL_CFLAGS}) - TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} ${WALKGENJRL_LIBRARIES}) - + # Add lapack compilation flags and link to library libLapack.so + ADD_DEFINITIONS(${LAPACK_CFLAGS}) + TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} ${LAPACK_LIBRARIES}) + # Add dynamic-graph compilation flags and link to library libdynamic-graph.so ADD_DEFINITIONS(${DYNAMIC_GRAPH_CFLAGS}) TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} ${DYNAMIC_GRAPH_LIBRARIES}) # FIXME + IF (UNIX) TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} dl) + ENDIF(UNIX) ENDFOREACH(test) -- GitLab