Skip to content
This repository was archived by the owner on Nov 28, 2025. It is now read-only.

Commit db725fd

Browse files
committed
Merge branch 'master' into devel
2 parents f26e1df + c98edf3 commit db725fd

File tree

9 files changed

+149
-152
lines changed

9 files changed

+149
-152
lines changed

.git-blame-ignore-revs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# pre-commit run -a (Guilhem Saurel, 2022-07-27)
2+
db4d991c9d727b8454695ce8d88948b948c6b36f

.pre-commit-config.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,7 @@ repos:
3333
rev: 5.0.4
3434
hooks:
3535
- id: flake8
36+
- repo: https://github.com/cheshirekow/cmake-format-precommit
37+
rev: v0.6.13
38+
hooks:
39+
- id: cmake-format

CMakeLists.txt

Lines changed: 68 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,87 +1,85 @@
1-
# Copyright 2010-2020, Florent Lamiraux, Thomas Moulard, Olivier Stasse, Guilhem Saurel, JRL, CNRS/AIST, LAAS-CNRS
1+
# Copyright 2010-2020, Florent Lamiraux, Thomas Moulard, Olivier Stasse, Guilhem
2+
# Saurel, JRL, CNRS/AIST, LAAS-CNRS
23

3-
CMAKE_MINIMUM_REQUIRED(VERSION 3.1)
4+
cmake_minimum_required(VERSION 3.1)
45

56
# Project properties
6-
SET(PROJECT_ORG stack-of-tasks)
7-
SET(PROJECT_NAME dynamic-graph-python)
8-
SET(PROJECT_DESCRIPTION "Dynamic graph library Python bindings")
9-
SET(PROJECT_URL "https://github.com/${PROJECT_ORG}/${PROJECT_NAME}")
7+
set(PROJECT_ORG stack-of-tasks)
8+
set(PROJECT_NAME dynamic-graph-python)
9+
set(PROJECT_DESCRIPTION "Dynamic graph library Python bindings")
10+
set(PROJECT_URL "https://github.com/${PROJECT_ORG}/${PROJECT_NAME}")
1011

1112
# Project options
12-
OPTION(SUFFIX_SO_VERSION "Suffix library name with its version" ON)
13+
option(SUFFIX_SO_VERSION "Suffix library name with its version" ON)
1314

1415
# Project configuration
15-
SET(PROJECT_USE_CMAKE_EXPORT TRUE)
16-
SET(CUSTOM_HEADER_DIR "dynamic-graph/python")
17-
SET(CXX_DISABLE_WERROR TRUE)
18-
SET(DOXYGEN_USE_MATHJAX YES)
16+
set(PROJECT_USE_CMAKE_EXPORT TRUE)
17+
set(CUSTOM_HEADER_DIR "dynamic-graph/python")
18+
set(CXX_DISABLE_WERROR TRUE)
19+
set(DOXYGEN_USE_MATHJAX YES)
1920

2021
# JRL-cmakemodule setup
21-
INCLUDE(cmake/base.cmake)
22-
INCLUDE(cmake/boost.cmake)
23-
INCLUDE(cmake/python.cmake)
22+
include(cmake/base.cmake)
23+
include(cmake/boost.cmake)
2424

2525
# Project definition
26-
COMPUTE_PROJECT_ARGS(PROJECT_ARGS LANGUAGES CXX)
27-
PROJECT(${PROJECT_NAME} ${PROJECT_ARGS})
28-
CHECK_MINIMAL_CXX_STANDARD(14 ENFORCE)
26+
compute_project_args(PROJECT_ARGS LANGUAGES CXX)
27+
project(${PROJECT_NAME} ${PROJECT_ARGS})
28+
check_minimal_cxx_standard(14 ENFORCE)
2929

3030
# Project dependencies
31-
FINDPYTHON()
32-
33-
ADD_PROJECT_DEPENDENCY(dynamic-graph 4.4.0 REQUIRED)
34-
ADD_PROJECT_DEPENDENCY(eigenpy REQUIRED)
35-
SEARCH_FOR_BOOST_PYTHON(REQUIRED)
36-
IF(BUILD_TESTING)
37-
FIND_PACKAGE(Boost REQUIRED COMPONENTS unit_test_framework)
38-
ENDIF(BUILD_TESTING)
39-
40-
IF(Boost_VERSION GREATER 107299 OR Boost_VERSION_MACRO GREATER 107299)
31+
add_project_dependency(dynamic-graph 4.4.0 REQUIRED)
32+
add_project_dependency(eigenpy 2.7.10 REQUIRED)
33+
include(cmake/python.cmake) # TODO: overwriting eigenpy/python.cmake
34+
if(BUILD_TESTING)
35+
find_package(Boost REQUIRED COMPONENTS unit_test_framework)
36+
endif(BUILD_TESTING)
37+
38+
if(Boost_VERSION GREATER 107299 OR Boost_VERSION_MACRO GREATER 107299)
4139
# Silence a warning about a deprecated use of boost bind by boost >= 1.73
4240
# without dropping support for boost < 1.73
43-
ADD_DEFINITIONS(-DBOOST_BIND_GLOBAL_PLACEHOLDERS)
44-
ENDIF()
41+
add_definitions(-DBOOST_BIND_GLOBAL_PLACEHOLDERS)
42+
endif()
4543

4644
# Main Library
47-
SET(${PROJECT_NAME}_HEADERS
48-
include/${CUSTOM_HEADER_DIR}/api.hh
49-
include/${CUSTOM_HEADER_DIR}/convert-dg-to-py.hh
50-
include/${CUSTOM_HEADER_DIR}/dynamic-graph-py.hh
51-
include/${CUSTOM_HEADER_DIR}/fwd.hh
52-
include/${CUSTOM_HEADER_DIR}/interpreter.hh
53-
include/${CUSTOM_HEADER_DIR}/module.hh
54-
include/${CUSTOM_HEADER_DIR}/python-compat.hh
55-
include/${CUSTOM_HEADER_DIR}/signal.hh
56-
include/${CUSTOM_HEADER_DIR}/signal-wrapper.hh
57-
)
58-
59-
SET(${PROJECT_NAME}_SOURCES
60-
src/interpreter.cc
61-
src/dynamic_graph/python-compat.cc
62-
src/dynamic_graph/entity-py.cc
63-
src/dynamic_graph/convert-dg-to-py.cc
64-
)
65-
66-
ADD_LIBRARY(${PROJECT_NAME} SHARED
67-
${${PROJECT_NAME}_SOURCES} ${${PROJECT_NAME}_HEADERS})
68-
TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME} SYSTEM PUBLIC ${PYTHON_INCLUDE_DIR})
69-
TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME} PUBLIC $<INSTALL_INTERFACE:include>)
70-
TARGET_LINK_LIBRARIES(${PROJECT_NAME} PUBLIC ${PYTHON_LIBRARY}
71-
dynamic-graph::dynamic-graph)
72-
TARGET_LINK_BOOST_PYTHON(${PROJECT_NAME} PRIVATE)
73-
74-
IF(SUFFIX_SO_VERSION)
75-
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION})
76-
ENDIF(SUFFIX_SO_VERSION)
77-
78-
TARGET_COMPILE_DEFINITIONS(${PROJECT_NAME} PRIVATE PYTHON_LIBRARY="${PYTHON_LIBRARY}")
79-
80-
INSTALL(TARGETS ${PROJECT_NAME} EXPORT ${TARGETS_EXPORT_NAME} DESTINATION lib)
81-
82-
ADD_SUBDIRECTORY(src)
83-
IF(BUILD_TESTING)
84-
ADD_SUBDIRECTORY(tests)
85-
ENDIF(BUILD_TESTING)
86-
87-
INSTALL(FILES package.xml DESTINATION share/${PROJECT_NAME})
45+
set(${PROJECT_NAME}_HEADERS
46+
include/${CUSTOM_HEADER_DIR}/api.hh
47+
include/${CUSTOM_HEADER_DIR}/convert-dg-to-py.hh
48+
include/${CUSTOM_HEADER_DIR}/dynamic-graph-py.hh
49+
include/${CUSTOM_HEADER_DIR}/fwd.hh
50+
include/${CUSTOM_HEADER_DIR}/interpreter.hh
51+
include/${CUSTOM_HEADER_DIR}/module.hh
52+
include/${CUSTOM_HEADER_DIR}/python-compat.hh
53+
include/${CUSTOM_HEADER_DIR}/signal.hh
54+
include/${CUSTOM_HEADER_DIR}/signal-wrapper.hh)
55+
56+
set(${PROJECT_NAME}_SOURCES
57+
src/interpreter.cc src/dynamic_graph/python-compat.cc
58+
src/dynamic_graph/entity-py.cc src/dynamic_graph/convert-dg-to-py.cc)
59+
60+
add_library(${PROJECT_NAME} SHARED ${${PROJECT_NAME}_SOURCES}
61+
${${PROJECT_NAME}_HEADERS})
62+
target_include_directories(${PROJECT_NAME} PUBLIC $<INSTALL_INTERFACE:include>)
63+
target_link_libraries(
64+
${PROJECT_NAME} PUBLIC dynamic-graph::dynamic-graph
65+
Python${PYTHON_VERSION_MAJOR}::Python)
66+
target_link_boost_python(${PROJECT_NAME} PRIVATE)
67+
68+
if(SUFFIX_SO_VERSION)
69+
set_target_properties(${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION})
70+
endif(SUFFIX_SO_VERSION)
71+
72+
target_compile_definitions(${PROJECT_NAME}
73+
PRIVATE PYTHON_LIBRARY="${PYTHON_LIBRARY}")
74+
75+
install(
76+
TARGETS ${PROJECT_NAME}
77+
EXPORT ${TARGETS_EXPORT_NAME}
78+
DESTINATION lib)
79+
80+
add_subdirectory(src)
81+
if(BUILD_TESTING)
82+
add_subdirectory(tests)
83+
endif(BUILD_TESTING)
84+
85+
install(FILES package.xml DESTINATION share/${PROJECT_NAME})

cmake

Submodule cmake updated 95 files

package.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0"?>
22
<package format="3">
33
<name>dynamic-graph-python</name>
4-
<version>4.0.5</version>
4+
<version>4.0.6</version>
55
<description>
66
Dynamic graph library Python bindings
77
</description>

src/CMakeLists.txt

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,20 @@
1-
# Python bindings
1+
# Python bindings
22

3-
ADD_SUBDIRECTORY(dynamic_graph)
3+
add_subdirectory(dynamic_graph)
44

5-
SET(PYTHON_SOURCES
6-
__init__.py
7-
attrpath.py
8-
entity.py
9-
signal_base.py
10-
script_shortcuts.py
11-
tools.py
12-
)
5+
set(PYTHON_SOURCES __init__.py attrpath.py entity.py signal_base.py
6+
script_shortcuts.py tools.py)
137

14-
FOREACH(source ${PYTHON_SOURCES})
15-
PYTHON_INSTALL_ON_SITE(dynamic_graph ${source})
16-
ENDFOREACH(source)
8+
foreach(source ${PYTHON_SOURCES})
9+
python_install_on_site(dynamic_graph ${source})
10+
endforeach(source)
1711

1812
# --- ADD the wrap on the dg modules
19-
LINK_DIRECTORIES(${DYNAMIC_GRAPH_PLUGINDIR})
20-
DYNAMIC_GRAPH_PYTHON_MODULE("tracer" dynamic-graph::tracer tracer-wrap
21-
SOURCE_PYTHON_MODULE ${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/tracer/wrap.cc)
22-
DYNAMIC_GRAPH_PYTHON_MODULE("tracer_real_time" dynamic-graph::tracer-real-time tracer_real_time-wrap
23-
SOURCE_PYTHON_MODULE ${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/tracer_real_time/wrap.cc)
13+
link_directories(${DYNAMIC_GRAPH_PLUGINDIR})
14+
dynamic_graph_python_module(
15+
"tracer" dynamic-graph::tracer tracer-wrap SOURCE_PYTHON_MODULE
16+
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/tracer/wrap.cc)
17+
dynamic_graph_python_module(
18+
"tracer_real_time" dynamic-graph::tracer-real-time tracer_real_time-wrap
19+
SOURCE_PYTHON_MODULE
20+
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/tracer_real_time/wrap.cc)

src/dynamic_graph/CMakeLists.txt

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,24 @@
1-
# Copyright 2010-2021, Florent Lamiraux, Thomas Moulard, Olivier Stasse, Guilhem Saurel, JRL, CNRS/AIST, LAAS-CNRS
1+
# Copyright 2010-2021, Florent Lamiraux, Thomas Moulard, Olivier Stasse, Guilhem
2+
# Saurel, JRL, CNRS/AIST, LAAS-CNRS
23

3-
SET(PYTHON_MODULE wrap)
4+
set(PYTHON_MODULE wrap)
45

5-
ADD_LIBRARY(${PYTHON_MODULE} MODULE
6-
debug-py.cc
7-
dynamic-graph-py.cc
8-
factory-py.cc
9-
pool-py.cc
10-
signal-base-py.cc
11-
signal-wrapper.cc
12-
)
6+
add_library(
7+
${PYTHON_MODULE} MODULE debug-py.cc dynamic-graph-py.cc factory-py.cc
8+
pool-py.cc signal-base-py.cc signal-wrapper.cc)
139

14-
TARGET_LINK_LIBRARIES(${PYTHON_MODULE} PUBLIC ${PROJECT_NAME} eigenpy::eigenpy)
15-
TARGET_LINK_BOOST_PYTHON(${PYTHON_MODULE} PRIVATE)
10+
target_link_libraries(${PYTHON_MODULE} PUBLIC ${PROJECT_NAME} eigenpy::eigenpy)
11+
target_link_boost_python(${PYTHON_MODULE} PRIVATE)
1612

1713
# Remove prefix lib
18-
SET_TARGET_PROPERTIES(${PYTHON_MODULE} PROPERTIES PREFIX "")
14+
set_target_properties(${PYTHON_MODULE} PROPERTIES PREFIX "")
1915

20-
IF(UNIX AND NOT APPLE)
21-
SET_TARGET_PROPERTIES(${PYTHON_MODULE} PROPERTIES INSTALL_RPATH "\$ORIGIN/../../..")
22-
ENDIF()
16+
if(UNIX AND NOT APPLE)
17+
set_target_properties(${PYTHON_MODULE} PROPERTIES INSTALL_RPATH
18+
"\$ORIGIN/../../..")
19+
endif()
2320

24-
INSTALL(TARGETS ${PYTHON_MODULE}
21+
install(
22+
TARGETS ${PYTHON_MODULE}
2523
EXPORT ${TARGETS_EXPORT_NAME}
2624
DESTINATION ${PYTHON_SITELIB}/dynamic_graph)

tests/CMakeLists.txt

Lines changed: 43 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,56 @@
1-
# Copyright 2010-2020, Florent Lamiraux, Thomas Moulard, Olivier Stasse, Guilhem Saurel, JRL, CNRS/AIST, LAAS-CNRS
1+
# Copyright 2010-2020, Florent Lamiraux, Thomas Moulard, Olivier Stasse, Guilhem
2+
# Saurel, JRL, CNRS/AIST, LAAS-CNRS
23

34
# Test the interpreter
4-
ADD_UNIT_TEST(interpreter-test interpreter-test.cc)
5-
TARGET_LINK_LIBRARIES(interpreter-test PRIVATE ${PROJECT_NAME})
5+
add_unit_test(interpreter-test interpreter-test.cc)
6+
target_link_libraries(interpreter-test PRIVATE ${PROJECT_NAME})
67

78
# Test runfile
8-
ADD_UNIT_TEST(interpreter-test-runfile interpreter-test-runfile.cc)
9-
TARGET_LINK_LIBRARIES(interpreter-test-runfile PRIVATE ${PROJECT_NAME})
10-
TARGET_INCLUDE_DIRECTORIES(interpreter-test-runfile PRIVATE Boost::unit_test_framework)
11-
TARGET_COMPILE_DEFINITIONS(interpreter-test-runfile PRIVATE PATH="${CMAKE_CURRENT_LIST_DIR}/")
9+
add_unit_test(interpreter-test-runfile interpreter-test-runfile.cc)
10+
target_link_libraries(interpreter-test-runfile PRIVATE ${PROJECT_NAME})
11+
target_include_directories(interpreter-test-runfile
12+
PRIVATE Boost::unit_test_framework)
13+
target_compile_definitions(interpreter-test-runfile
14+
PRIVATE PATH="${CMAKE_CURRENT_LIST_DIR}/")
1215

13-
# Test the module generation
14-
## Create an entity
16+
# Test the module generation Create an entity
1517

16-
SET(LIBRARY_NAME "custom_entity")
17-
ADD_LIBRARY(${LIBRARY_NAME} SHARED "${LIBRARY_NAME}.cpp")
18-
IF(SUFFIX_SO_VERSION)
19-
SET_TARGET_PROPERTIES(${LIBRARY_NAME}
20-
PROPERTIES SOVERSION ${PROJECT_VERSION})
21-
ENDIF(SUFFIX_SO_VERSION)
18+
set(LIBRARY_NAME "custom_entity")
19+
add_library(${LIBRARY_NAME} SHARED "${LIBRARY_NAME}.cpp")
20+
if(SUFFIX_SO_VERSION)
21+
set_target_properties(${LIBRARY_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION})
22+
endif(SUFFIX_SO_VERSION)
2223

2324
target_link_libraries(${LIBRARY_NAME} PRIVATE dynamic-graph::dynamic-graph)
2425

25-
## Create its bindings
26-
## This mimics DYNAMIC_GRAPH_PYTHON_MODULE(${LIBRARY_NAME} ${LIBRARY_NAME} "${LIBRARY_NAME}-wrap")
26+
# Create its bindings This mimics DYNAMIC_GRAPH_PYTHON_MODULE(${LIBRARY_NAME}
27+
# ${LIBRARY_NAME} "${LIBRARY_NAME}-wrap")
2728

28-
CONFIGURE_FILE(
29-
${PROJECT_SOURCE_DIR}/cmake/dynamic_graph/submodule/__init__.py.cmake
30-
${CMAKE_CURRENT_BINARY_DIR}/${LIBRARY_NAME}/__init__.py
31-
)
32-
SET(PYTHON_MODULE "${LIBRARY_NAME}-wrap")
33-
set(DYNAMICGRAPH_MODULE_HEADER "${CMAKE_SOURCE_DIR}/tests/custom_entity_module.h")
3429
configure_file(
35-
${PROJECT_SOURCE_DIR}/cmake/dynamic_graph/python-module-py.cc.in
36-
${CMAKE_CURRENT_BINARY_DIR}/python-module-py.cc
37-
@ONLY
38-
)
39-
ADD_LIBRARY(${PYTHON_MODULE} MODULE ${CMAKE_CURRENT_BINARY_DIR}/python-module-py.cc)
40-
SET_TARGET_PROPERTIES(${PYTHON_MODULE} PROPERTIES
41-
PREFIX ""
42-
OUTPUT_NAME ${LIBRARY_NAME}/wrap)
43-
44-
IF(UNIX AND NOT APPLE)
45-
TARGET_LINK_LIBRARIES(${PYTHON_MODULE} PRIVATE "-Wl,--no-as-needed")
46-
ENDIF(UNIX AND NOT APPLE)
47-
48-
TARGET_LINK_LIBRARIES(${PYTHON_MODULE} PRIVATE
49-
${LIBRARY_NAME} dynamic-graph-python
50-
${PYTHON_LIBRARY})
51-
TARGET_LINK_BOOST_PYTHON(${PYTHON_MODULE} PRIVATE)
52-
TARGET_INCLUDE_DIRECTORIES(${PYTHON_MODULE} SYSTEM PRIVATE ${PYTHON_INCLUDE_DIRS})
53-
54-
## Test it
55-
ADD_PYTHON_UNIT_TEST("test-custom-entity" "tests/test_custom_entity.py" src tests)
30+
${PROJECT_SOURCE_DIR}/cmake/dynamic_graph/submodule/__init__.py.cmake
31+
${CMAKE_CURRENT_BINARY_DIR}/${LIBRARY_NAME}/__init__.py)
32+
set(PYTHON_MODULE "${LIBRARY_NAME}-wrap")
33+
set(DYNAMICGRAPH_MODULE_HEADER
34+
"${CMAKE_SOURCE_DIR}/tests/custom_entity_module.h")
35+
configure_file(${PROJECT_SOURCE_DIR}/cmake/dynamic_graph/python-module-py.cc.in
36+
${CMAKE_CURRENT_BINARY_DIR}/python-module-py.cc @ONLY)
37+
add_library(${PYTHON_MODULE} MODULE
38+
${CMAKE_CURRENT_BINARY_DIR}/python-module-py.cc)
39+
set_target_properties(${PYTHON_MODULE}
40+
PROPERTIES PREFIX "" OUTPUT_NAME ${LIBRARY_NAME}/wrap)
41+
42+
if(UNIX AND NOT APPLE)
43+
target_link_libraries(${PYTHON_MODULE} PRIVATE "-Wl,--no-as-needed")
44+
endif(UNIX AND NOT APPLE)
45+
46+
target_link_libraries(${PYTHON_MODULE} PRIVATE ${LIBRARY_NAME} ${PROJECT_NAME})
47+
target_link_boost_python(${PYTHON_MODULE} PRIVATE)
48+
target_include_directories(${PYTHON_MODULE} SYSTEM
49+
PRIVATE ${PYTHON_INCLUDE_DIRS})
50+
51+
# Test it
52+
add_python_unit_test("test-custom-entity" "tests/test_custom_entity.py" src
53+
tests)
5654

5755
# also test other bindings, using this custom entity
58-
ADD_PYTHON_UNIT_TEST("test-bindings" "tests/test_bindings.py" src tests)
56+
add_python_unit_test("test-bindings" "tests/test_bindings.py" src tests)

0 commit comments

Comments
 (0)