From 748b9e423fb6da68a4b0c730d871c4f210d47703 Mon Sep 17 00:00:00 2001 From: jcarpent Date: Thu, 30 Jun 2016 11:53:46 +0200 Subject: [PATCH 1/8] [Git] Update gitignore --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index b56fdea15..8a0511951 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -build/ +build* release/ _build/ _release/ From ae6cfc588c6e81d1b22e231b4eb9e55a9bc22a66 Mon Sep 17 00:00:00 2001 From: jcarpent Date: Thu, 30 Jun 2016 11:54:12 +0200 Subject: [PATCH 2/8] [CMake] Set rpath policy for APPLE --- CMakeLists.txt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b92155203..afe2ba6d2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ # -# Copyright (c) 2015 LAAS-CNRS +# Copyright (c) 2015-2016 LAAS-CNRS # # This file is part of eigenpy. # eigenpy is free software: you can redistribute it and/or @@ -33,6 +33,15 @@ STRING(REPLACE "-pedantic" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) IF(APPLE) SET(CMAKE_MACOSX_RPATH TRUE) + SET(CMAKE_SKIP_BUILD_RPATH FALSE) + SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) + SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) + + #SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") + LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir) + IF("${isSystemDir}" STREQUAL "-1") + SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") + ENDIF("${isSystemDir}" STREQUAL "-1") ENDIF(APPLE) # ---------------------------------------------------- From 30ebc395aaeafe2f0682089892ded0967d0b2811 Mon Sep 17 00:00:00 2001 From: jcarpent Date: Thu, 30 Jun 2016 11:54:56 +0200 Subject: [PATCH 3/8] [CMake] Handle the link against boost_python with the new cmake macro --- CMakeLists.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index afe2ba6d2..710a42e03 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -118,7 +118,7 @@ ELSE(APPLE) ADD_LIBRARY(${PROJECT_NAME} SHARED ${${PROJECT_NAME}_SOURCES} ${${PROJECT_NAME}_HEADERS}) ENDIF(APPLE) -TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${Boost_LIBRARIES} ${PYTHON_LIBRARIES}) +TARGET_LINK_BOOST_PYTHON(${PROJECT_NAME}) PKG_CONFIG_USE_DEPENDENCY(${PROJECT_NAME} eigen3) INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) @@ -126,11 +126,13 @@ INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) # --- UNIT TEST -------------------------------------- # ---------------------------------------------------- ADD_LIBRARY(matrix SHARED unittest/matrix.cpp) -TARGET_LINK_LIBRARIES(matrix ${Boost_LIBRARIES} ${PROJECT_NAME}) +TARGET_LINK_LIBRARIES(matrix ${PROJECT_NAME}) +TARGET_LINK_BOOST_PYTHON(matrix) SET_TARGET_PROPERTIES(matrix PROPERTIES PREFIX "") ADD_LIBRARY(geometry SHARED unittest/geometry.cpp) -TARGET_LINK_LIBRARIES(geometry ${Boost_LIBRARIES} ${PROJECT_NAME}) +TARGET_LINK_LIBRARIES(geometry ${PROJECT_NAME}) +TARGET_LINK_BOOST_PYTHON(geometry) SET_TARGET_PROPERTIES(geometry PROPERTIES PREFIX "") IF(EIGEN_NUMPY_ALIGNED) @@ -141,7 +143,5 @@ PKG_CONFIG_APPEND_LIBS(${PROJECT_NAME}) PKG_CONFIG_APPEND_CFLAGS("-I${PYTHON_INCLUDE_DIRS}") PKG_CONFIG_APPEND_CFLAGS("-I${NUMPY_INCLUDE_DIRS}") PKG_CONFIG_APPEND_BOOST_LIBS(${BOOST_COMPONENTS}) -PKG_CONFIG_APPEND_LIBS_RAW(${PYTHON_LIBRARIES}) - SETUP_PROJECT_FINALIZE() From 4d77c0ec2981d47a44e90f16e071ec2c682f48bb Mon Sep 17 00:00:00 2001 From: jcarpent Date: Thu, 30 Jun 2016 11:58:22 +0200 Subject: [PATCH 4/8] [CMake] On APPLE, the library can become SHARED --- CMakeLists.txt | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 710a42e03..dc48de736 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -111,12 +111,7 @@ SET(${PROJECT_NAME}_SOURCES src/quaternion.cpp ) -# With Darwin system, the library needs to be static for a complete exposion of eigen structure under Python -IF(APPLE) - ADD_LIBRARY(${PROJECT_NAME} ${${PROJECT_NAME}_SOURCES} ${${PROJECT_NAME}_HEADERS}) -ELSE(APPLE) - ADD_LIBRARY(${PROJECT_NAME} SHARED ${${PROJECT_NAME}_SOURCES} ${${PROJECT_NAME}_HEADERS}) -ENDIF(APPLE) +ADD_LIBRARY(${PROJECT_NAME} SHARED ${${PROJECT_NAME}_SOURCES} ${${PROJECT_NAME}_HEADERS}) TARGET_LINK_BOOST_PYTHON(${PROJECT_NAME}) PKG_CONFIG_USE_DEPENDENCY(${PROJECT_NAME} eigen3) From 9d5c46e9ff753d750794d79e17ca04fd46e83d3a Mon Sep 17 00:00:00 2001 From: jcarpent Date: Thu, 30 Jun 2016 11:58:44 +0200 Subject: [PATCH 5/8] [CMake] Clean dependancies section --- CMakeLists.txt | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index dc48de736..f32ef3b27 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,11 +57,16 @@ ENDIF(EIGEN_NUMPY_ALIGNED) # --- DEPENDANCIES ----------------------------------- # ---------------------------------------------------- ADD_REQUIRED_DEPENDENCY("eigen3 >= 3.0.5") + SET(BOOST_COMPONENTS python) SEARCH_FOR_BOOST() -set(Python_ADDITIONAL_VERSIONS 2.7) -FINDPYTHON() +# Add Boost path to include directories. +INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS}) + +FINDPYTHON(2.7 EXACT REQUIRED) +INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_DIRS}) FIND_NUMPY() +INCLUDE_DIRECTORIES(${NUMPY_INCLUDE_DIRS}) # ---------------------------------------------------- # --- INCLUDE ---------------------------------------- @@ -99,9 +104,6 @@ ENDFOREACH(header) # ---------------------------------------------------- # --- TARGETS ---------------------------------------- # ---------------------------------------------------- -INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_DIRS} ${NUMPY_INCLUDE_DIRS}) -# Add Boost path to include directories. -INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS}) SET(${PROJECT_NAME}_SOURCES src/exception.cpp From a6867bd92d169a955b0b9f7f505dcfe70a7ae1ec Mon Sep 17 00:00:00 2001 From: jcarpent Date: Thu, 30 Jun 2016 13:47:08 +0200 Subject: [PATCH 6/8] [CMake] Sync submodule cmake --- cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake b/cmake index 57838adc2..1c4340af2 160000 --- a/cmake +++ b/cmake @@ -1 +1 @@ -Subproject commit 57838adc2c73410b4b2c9af39c014e640fbbac7b +Subproject commit 1c4340af274bdd1a918e4eb77dc1b404fae45ae1 From 8e85b3fe4b69baa54c00fbf55e745d4eaeaa758d Mon Sep 17 00:00:00 2001 From: jcarpent Date: Thu, 30 Jun 2016 14:03:20 +0200 Subject: [PATCH 7/8] [CMake] Rework unit tests --- CMakeLists.txt | 16 ++++++---------- unittest/CMakeLists.txt | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 10 deletions(-) create mode 100644 unittest/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index f32ef3b27..b6709408b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -48,6 +48,7 @@ ENDIF(APPLE) # --- OPTIONS --------------------------------------- # ---------------------------------------------------- OPTION (EIGEN_NUMPY_ALIGNED "Directly aligned data between Numpy and Eigen" OFF) +OPTION (BUILD_UNIT_TESTS "Build the unitary tests" ON) IF(EIGEN_NUMPY_ALIGNED) ADD_DEFINITIONS(-DEIGENPY_ALIGNED) @@ -104,7 +105,6 @@ ENDFOREACH(header) # ---------------------------------------------------- # --- TARGETS ---------------------------------------- # ---------------------------------------------------- - SET(${PROJECT_NAME}_SOURCES src/exception.cpp src/eigenpy.cpp @@ -122,15 +122,11 @@ INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) # ---------------------------------------------------- # --- UNIT TEST -------------------------------------- # ---------------------------------------------------- -ADD_LIBRARY(matrix SHARED unittest/matrix.cpp) -TARGET_LINK_LIBRARIES(matrix ${PROJECT_NAME}) -TARGET_LINK_BOOST_PYTHON(matrix) -SET_TARGET_PROPERTIES(matrix PROPERTIES PREFIX "") - -ADD_LIBRARY(geometry SHARED unittest/geometry.cpp) -TARGET_LINK_LIBRARIES(geometry ${PROJECT_NAME}) -TARGET_LINK_BOOST_PYTHON(geometry) -SET_TARGET_PROPERTIES(geometry PROPERTIES PREFIX "") +ADD_SUBDIRECTORY(unittest) + +# ---------------------------------------------------- +# --- EXECUTABLES ------------------------------------ +# ---------------------------------------------------- IF(EIGEN_NUMPY_ALIGNED) PKG_CONFIG_APPEND_CFLAGS("-DEIGENPY_ALIGNED") diff --git a/unittest/CMakeLists.txt b/unittest/CMakeLists.txt new file mode 100644 index 000000000..b80a2ea47 --- /dev/null +++ b/unittest/CMakeLists.txt @@ -0,0 +1,41 @@ +# +# Copyright (c) 2016 CNRS +# +# This file is part of eigenpy +# 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 +# Pinocchio If not, see +# . + +MACRO(ADD_LIB_UNIT_TEST test PKGS) + IF (BUILD_UNIT_TESTS) + ADD_LIBRARY(${test} SHARED ${test}) + ELSE (BUILD_UNIT_TESTS) + ADD_LIBRARY(${test} SHARED EXCLUDE_FROM_ALL ${test}) + ENDIF (BUILD_UNIT_TESTS) + FOREACH(PKG ${PKGS}) + PKG_CONFIG_USE_DEPENDENCY(${test} ${PKG}) + ENDFOREACH(PKG) + TARGET_LINK_LIBRARIES(${test} ${PROJECT_NAME}) + TARGET_LINK_BOOST_PYTHON(${test}) + SET_TARGET_PROPERTIES(${test} PROPERTIES PREFIX "") + + IF(APPLE) + # We need to change the extension for python bindings + SET_TARGET_PROPERTIES(${test} PROPERTIES SUFFIX ".so") + ENDIF(APPLE) + + #ADD_TEST(test ${test} COMMAND ${test}) + #ADD_DEPENDENCIES(check ${test}) +ENDMACRO(ADD_LIB_UNIT_TEST) + +ADD_LIB_UNIT_TEST(matrix "eigen3") +ADD_LIB_UNIT_TEST(geometry "eigen3") + From f0a4387d040dd007fc657b234a46bfe145fd2729 Mon Sep 17 00:00:00 2001 From: jcarpent Date: Tue, 2 Aug 2016 16:00:25 +0200 Subject: [PATCH 8/8] [CMake] Run simple unit test - just load compiled lib --- unittest/CMakeLists.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/unittest/CMakeLists.txt b/unittest/CMakeLists.txt index b80a2ea47..dcd18a04c 100644 --- a/unittest/CMakeLists.txt +++ b/unittest/CMakeLists.txt @@ -32,10 +32,12 @@ MACRO(ADD_LIB_UNIT_TEST test PKGS) SET_TARGET_PROPERTIES(${test} PROPERTIES SUFFIX ".so") ENDIF(APPLE) - #ADD_TEST(test ${test} COMMAND ${test}) - #ADD_DEPENDENCIES(check ${test}) + ADD_TEST(NAME ${test} COMMAND ${PYTHON_EXECUTABLE} -c "import ${test}") + ADD_DEPENDENCIES(check ${test}) ENDMACRO(ADD_LIB_UNIT_TEST) +ADD_CUSTOM_TARGET(check COMMAND ${CMAKE_CTEST_COMMAND}) + ADD_LIB_UNIT_TEST(matrix "eigen3") ADD_LIB_UNIT_TEST(geometry "eigen3")