Skip to content

Commit

Permalink
Merge pull request #32 from robotology/fix/osqp_0.6.0
Browse files Browse the repository at this point in the history
Restore compatibility with osqp version 0.6.0.
Closes #31
  • Loading branch information
GiulioRomualdi authored Sep 24, 2019
2 parents c006659 + ac2a551 commit c469a83
Show file tree
Hide file tree
Showing 6 changed files with 116 additions and 7 deletions.
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED 11)

project(OsqpEigen
LANGUAGES CXX
VERSION 0.4.1)
VERSION 0.5.0)

# add GNU dirs
include(GNUInstallDirs)
Expand Down Expand Up @@ -102,7 +102,7 @@ install(TARGETS ${LIBRARY_TARGET_NAME}
include(InstallBasicPackageFiles)
install_basic_package_files(${PROJECT_NAME}
VERSION ${${PROJECT_NAME}_VERSION}
COMPATIBILITY AnyNewerVersion
COMPATIBILITY SameMinorVersion
VARS_PREFIX ${PROJECT_NAME}
NO_CHECK_REQUIRED_COMPONENTS_MACRO
CONFIG_TEMPLATE ${CMAKE_SOURCE_DIR}/cmake/OsqpEigenConfig.cmake.in)
Expand Down
55 changes: 55 additions & 0 deletions cmake/BasicConfigVersion-SameMinorVersion.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# This is a basic version file for the Config-mode of find_package().
# It is used by write_basic_package_version_file() as input file for configure_file()
# to create a version-file which can be installed along a config.cmake file.
#
# The created file sets PACKAGE_VERSION_EXACT if the current version string and
# the requested version string are exactly the same and it sets
# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version,
# but only if the requested major and minor versions are the same as the current
# one.
# The variable CVF_VERSION must be set before calling configure_file().


set(PACKAGE_VERSION "@CVF_VERSION@")

if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
set(PACKAGE_VERSION_COMPATIBLE FALSE)
else()

if("@CVF_VERSION@" MATCHES "^([0-9]+)\\.([0-9]+)")
set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}")
set(CVF_VERSION_MINOR "${CMAKE_MATCH_2}")
else()
set(CVF_VERSION_MAJOR "@CVF_VERSION@")
set(CVF_VERSION_MINOR "")
endif()

if((PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR) AND
(PACKAGE_FIND_VERSION_MINOR STREQUAL CVF_VERSION_MINOR))
set(PACKAGE_VERSION_COMPATIBLE TRUE)
else()
set(PACKAGE_VERSION_COMPATIBLE FALSE)
endif()

if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
set(PACKAGE_VERSION_EXACT TRUE)
endif()
endif()


# if the installed project requested no architecture check, don't perform the check
if("@CVF_ARCH_INDEPENDENT@")
return()
endif()

# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "@CMAKE_SIZEOF_VOID_P@" STREQUAL "")
return()
endif()

# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "@CMAKE_SIZEOF_VOID_P@")
math(EXPR installedBits "@CMAKE_SIZEOF_VOID_P@ * 8")
set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
set(PACKAGE_VERSION_UNSUITABLE TRUE)
endif()
3 changes: 3 additions & 0 deletions cmake/InstallBasicPackageFiles.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,9 @@ include(GNUInstallDirs)
include(CMakePackageConfigHelpers)
include(CMakeParseArguments)

# custom version of the write_basic_package_version_file
# available only from cmake 3.11
include(WriteBasicConfigVersionFile)

function(INSTALL_BASIC_PACKAGE_FILES _Name)

Expand Down
51 changes: 51 additions & 0 deletions cmake/WriteBasicConfigVersionFile.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.

#[=======================================================================[.rst:
WriteBasicConfigVersionFile
---------------------------

.. deprecated:: 3.0

Use the identical command :command:`write_basic_package_version_file()`
from module :module:`CMakePackageConfigHelpers`.

::

WRITE_BASIC_CONFIG_VERSION_FILE( filename
[VERSION major.minor.patch]
COMPATIBILITY (AnyNewerVersion|SameMajorVersion|SameMinorVersion|ExactVersion)
[ARCH_INDEPENDENT]
)


#]=======================================================================]

function(WRITE_BASIC_CONFIG_VERSION_FILE _filename)

set(options ARCH_INDEPENDENT )
set(oneValueArgs VERSION COMPATIBILITY )
set(multiValueArgs )

cmake_parse_arguments(CVF "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})

if(CVF_UNPARSED_ARGUMENTS)
message(FATAL_ERROR "Unknown keywords given to WRITE_BASIC_CONFIG_VERSION_FILE(): \"${CVF_UNPARSED_ARGUMENTS}\"")
endif()

set(versionTemplateFile "${CMAKE_CURRENT_SOURCE_DIR}/cmake/BasicConfigVersion-${CVF_COMPATIBILITY}.cmake.in")
if(NOT EXISTS "${versionTemplateFile}")
message(FATAL_ERROR "Bad COMPATIBILITY value used for WRITE_BASIC_CONFIG_VERSION_FILE(): \"${CVF_COMPATIBILITY}\"")
endif()

if("${CVF_VERSION}" STREQUAL "")
if ("${PROJECT_VERSION}" STREQUAL "")
message(FATAL_ERROR "No VERSION specified for WRITE_BASIC_CONFIG_VERSION_FILE()")
else()
set(CVF_VERSION "${PROJECT_VERSION}")
endif()
endif()

configure_file("${versionTemplateFile}" "${_filename}" @ONLY)

endfunction()
4 changes: 3 additions & 1 deletion include/OsqpEigen/Data.tpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,9 @@ bool OsqpEigen::Data::setHessianMatrix(const Eigen::SparseMatrix<T> &hessianMatr
}

//set the hessian matrix
if(!OsqpEigen::SparseMatrixHelper::createOsqpSparseMatrix(hessianMatrix, m_data->P)){
// osqp 0.6.0 required only the upper triangular part of the hessian matrix
Eigen::SparseMatrix<T> hessianMatrixUpperTriangular = hessianMatrix.template triangularView<Eigen::Upper>();
if(!OsqpEigen::SparseMatrixHelper::createOsqpSparseMatrix(hessianMatrixUpperTriangular, m_data->P)){
std::cerr << "[OsqpEigen::Data::setHessianMatrix] Unable to instantiate the osqp sparse matrix."
<< std::endl;
return false;
Expand Down
6 changes: 2 additions & 4 deletions src/Solver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,8 @@ bool OsqpEigen::Solver::initSolver()
return false;
}

m_workspace = osqp_setup(m_data->getData(),
m_settings->getSettings());

if(m_workspace == OSQP_NULL){
if(osqp_setup(&m_workspace, m_data->getData(),
m_settings->getSettings()) != 0 ){
std::cerr << "[OsqpEigen::Solver::initSolver] Unable to setup the workspace."
<< std::endl;
return false;
Expand Down

0 comments on commit c469a83

Please sign in to comment.