Newer
Older
# Copyright (c) 2015-2016 CNRS
# Copyright (c) 2015 Wandercraft, 86 rue de Paris 91400 Orsay, France.
# This file is part of Pinocchio
# pinocchio is free software: you can redistribute it
# and/or modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation, either version
# 3 of the License, or (at your option) any later version.
# pinocchio is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Lesser Public License for more details. You should have
# received a copy of the GNU Lesser General Public License along with
# <http://www.gnu.org/licenses/>.
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
INCLUDE(cmake/base.cmake)
INCLUDE(cmake/boost.cmake)
INCLUDE(cmake/cpack.cmake)
INCLUDE(cmake/eigen.cmake)
INCLUDE(cmake/python.cmake)
SET(PROJECT_NAME pinocchio)
SET(PROJECT_DESCRIPTION "Rigid multi body dynamics algorithms")
SET(PROJECT_URL "http://github.com/stac-of-tasks/pinocchio")
IF(APPLE)
SET(CMAKE_MACOSX_RPATH 1)
ENDIF(APPLE)
# Disable -Werror on Unix for now.
SET(CXX_DISABLE_WERROR True)
SET(CMAKE_VERBOSE_MAKEFILE True)
SETUP_PROJECT()
IF(WIN32)
SET(LINK copy_if_different)
ELSE(WIN32)
SET(LINK create_symlink)
ENDIF(WIN32)

Nicolas Mansard
committed
# --- OPTIONS ----------------------------------------
OPTION (BUILD_BENCHMARK "Build the benchmarks" OFF)
OPTION (BUILD_UNIT_TESTS "Build the unitary tests" ON)
OPTION (BUILD_UTILS "Build the utils" OFF)
OPTION (INITIALIZE_WITH_NAN "Initialize Eigen entries with NaN" OFF)
Valenza Florian
committed
OPTION (BUILD_TESTS_WITH_HPP "Build geom tests and benchmarks with hpp to do comparisons" OFF)
OPTION (BUILD_PYTHON_INTERFACE "Build the python binding" ON)
IF (INITIALIZE_WITH_NAN)
MESSAGE (STATUS "Initialize with NaN all the Eigen entries")
ADD_DEFINITIONS(-DEIGEN_INITIALIZE_MATRICES_BY_NAN)
ENDIF (INITIALIZE_WITH_NAN)
# ----------------------------------------------------
# --- DEPENDANCIES -----------------------------------
# ----------------------------------------------------

Nicolas Mansard
committed
ADD_REQUIRED_DEPENDENCY("eigen3 >= 3.0.5")
ADD_OPTIONAL_DEPENDENCY("eigenpy >= 1.3.0")

Nicolas Mansard
committed
ADD_OPTIONAL_DEPENDENCY("metapod >= 1.0.7")
ADD_OPTIONAL_DEPENDENCY("urdfdom >= 0.2.10")
ADD_OPTIONAL_DEPENDENCY("hpp-fcl >= 0.4.1")
IF(HPP_FCL_FOUND AND URDFDOM_FOUND)
Valenza Florian
committed
ADD_REQUIRED_DEPENDENCY("assimp >= 3.0")
ENDIF(HPP_FCL_FOUND AND URDFDOM_FOUND)
Valenza Florian
committed
SET(BOOST_COMPONENTS filesystem unit_test_framework system)
SEARCH_FOR_BOOST()
# Path to boost headers
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
# ----------------------------------------------------
# --- INCLUDE ----------------------------------------
# ----------------------------------------------------
SET(${PROJECT_NAME}_MATH_HEADERS
Valenza Florian
committed
math/fwd.hpp
Justin Carpentier
committed
math/sincos.hpp
Valenza Florian
committed
math/quaternion.hpp
)
SET(${PROJECT_NAME}_TOOLS_HEADERS
Justin Carpentier
committed
tools/timer.hpp
Valenza Florian
committed
tools/string-generator.hpp
tools/file-explorer.hpp
)
SET(${PROJECT_NAME}_SPATIAL_HEADERS
spatial/se3.hpp
spatial/motion.hpp
spatial/force.hpp
spatial/inertia.hpp
spatial/fwd.hpp
spatial/skew.hpp
Valenza Florian
committed
spatial/frame.hpp
)
SET(${PROJECT_NAME}_MULTIBODY_JOINT_HEADERS
multibody/joint/joint-dense.hpp
multibody/joint/joint-revolute.hpp
multibody/joint/joint-revolute-unaligned.hpp
multibody/joint/joint-spherical.hpp
multibody/joint/joint-spherical-ZYX.hpp
multibody/joint/joint-prismatic.hpp
multibody/joint/joint-prismatic-unaligned.hpp
multibody/joint/joint-planar.hpp
multibody/joint/joint-translation.hpp
multibody/joint/joint-free-flyer.hpp
multibody/joint/joint-variant.hpp
multibody/joint/joint-generic.hpp
multibody/joint/joint-accessor.hpp
multibody/joint/joint-basic-visitors.hpp
multibody/joint/joint-basic-visitors.hxx
)
SET(${PROJECT_NAME}_MULTIBODY_PARSER_HEADERS
multibody/parser/sample-models.hpp
SET(${PROJECT_NAME}_MULTIBODY_HEADERS
multibody/constraint.hpp
multibody/force-set.hpp
multibody/joint.hpp
jcarpent
committed
multibody/model.hxx

Nicolas Mansard
committed
multibody/visitor.hpp
)
SET(${PROJECT_NAME}_ALGORITHM_HEADERS
algorithm/rnea.hxx
algorithm/crba.hpp
jcarpent
committed
algorithm/jacobian.hxx

Nicolas Mansard
committed
algorithm/kinematics.hpp
algorithm/kinematics.hxx
algorithm/center-of-mass.hxx
Valenza Florian
committed
algorithm/joint-configuration.hpp
Valenza Florian
committed
algorithm/operational-frames.hpp
algorithm/compute-all-terms.hpp
Justin Carpentier
committed
)
IF(${BUILD_PYTHON_INTERFACE} STREQUAL "ON")
SET(${PROJECT_NAME}_PYTHON_HEADERS
python/eigen_container.hpp
python/handler.hpp
python/python.hpp
python/se3.hpp
python/force.hpp
python/motion.hpp
python/inertia.hpp
Valenza Florian
committed
python/joint-derived.hpp
Valenza Florian
committed
python/joints-models.hpp
python/joints-variant.hpp
Valenza Florian
committed
python/frame.hpp
python/model.hpp
python/data.hpp

Nicolas Mansard
committed
python/algorithms.hpp
)
ENDIF(${BUILD_PYTHON_INTERFACE} STREQUAL "ON")
Valenza Florian
committed
IF(HPP_FCL_FOUND)
LIST(APPEND ${PROJECT_NAME}_PYTHON_HEADERS
Valenza Florian
committed
python/geometry-object.hpp
Valenza Florian
committed
python/geometry-model.hpp
python/geometry-data.hpp
)
ENDIF(HPP_FCL_FOUND)

Nicolas Mansard
committed
IF(URDFDOM_FOUND)
Valenza Florian
committed
LIST(APPEND ${PROJECT_NAME}_MULTIBODY_PARSER_HEADERS
multibody/parser/urdf.hpp
jcarpent
committed
multibody/parser/urdf.hxx
Valenza Florian
committed
LIST(APPEND ${PROJECT_NAME}_MULTIBODY_PARSER_HEADERS
multibody/parser/from-collada-to-fcl.hpp
multibody/parser/urdf-with-geometry.hpp
Valenza Florian
committed
multibody/parser/urdf-with-geometry.hxx
Valenza Florian
committed
)
ADD_DEFINITIONS(-DWITH_URDFDOM)

Nicolas Mansard
committed
ENDIF(URDFDOM_FOUND)
Valenza Florian
committed
LIST(APPEND ${PROJECT_NAME}_SPATIAL_HEADERS
spatial/fcl-pinocchio-conversions.hpp
)
Valenza Florian
committed
LIST(APPEND ${PROJECT_NAME}_MULTIBODY_HEADERS
Valenza Florian
committed
multibody/geometry.hxx
Valenza Florian
committed
LIST(APPEND ${PROJECT_NAME}_ALGORITHM_HEADERS
algorithm/collisions.hpp
)
Valenza Florian
committed
LIST(APPEND ${PROJECT_NAME}_MULTIBODY_PARSER_HEADERS
multibody/parser/lua.hpp
multibody/parser/lua/lua_tables.hpp
)
Valenza Florian
committed
SET(HEADERS
${${PROJECT_NAME}_MATH_HEADERS}
${${PROJECT_NAME}_TOOLS_HEADERS}
${${PROJECT_NAME}_SPATIAL_HEADERS}
${${PROJECT_NAME}_MULTIBODY_JOINT_HEADERS}
${${PROJECT_NAME}_MULTIBODY_PARSER_HEADERS}
${${PROJECT_NAME}_MULTIBODY_HEADERS}
${${PROJECT_NAME}_ALGORITHM_HEADERS}
${${PROJECT_NAME}_PYTHON_HEADERS}
exception.hpp
assert.hpp
)
LIST(REMOVE_DUPLICATES HEADERS)
PKG_CONFIG_APPEND_LIBS (${PROJECT_NAME})
PKG_CONFIG_APPEND_BOOST_LIBS(${BOOST_COMPONENTS})
MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio")
Justin Carpentier
committed
MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/math")
MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/spatial")
MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/multibody")
MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/multibody/joint")
MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/multibody/parser")
MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/multibody/parser/lua")
MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/tools")
MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/algorithm")
MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/python")
Valenza Florian
committed
FOREACH(header ${HEADERS})
GET_FILENAME_COMPONENT(headerPath ${header} PATH)
EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E ${LINK}
${${PROJECT_NAME}_SOURCE_DIR}/src/${header}
${${PROJECT_NAME}_BINARY_DIR}/include/${PROJECT_NAME}/${header})
INSTALL(FILES ${${PROJECT_NAME}_SOURCE_DIR}/src/${header}
DESTINATION ${CMAKE_INSTALL_PREFIX}/include/${PROJECT_NAME}/${headerPath}
PERMISSIONS OWNER_READ GROUP_READ WORLD_READ OWNER_WRITE)
ENDFOREACH(header)
ADD_SUBDIRECTORY(src)

Nicolas Mansard
committed
# --- EXECUTABLES --------------------------------------------------------------
# --- EXECUTABLES --------------------------------------------------------------
# --- EXECUTABLES --------------------------------------------------------------
ADD_SUBDIRECTORY(unittest)
IF (BUILD_UTILS)
ADD_SUBDIRECTORY (utils)
ENDIF (BUILD_UTILS)