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

Commit db4d991

Browse files
committed
pre-commit run -a
1 parent bafda4f commit db4d991

File tree

4 files changed

+139
-144
lines changed

4 files changed

+139
-144
lines changed

CMakeLists.txt

Lines changed: 66 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,82 +1,83 @@
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)
22+
include(cmake/base.cmake)
23+
include(cmake/boost.cmake)
2324

2425
# Project definition
25-
COMPUTE_PROJECT_ARGS(PROJECT_ARGS LANGUAGES CXX)
26-
PROJECT(${PROJECT_NAME} ${PROJECT_ARGS})
27-
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)
2829

2930
# Project dependencies
30-
ADD_PROJECT_DEPENDENCY(dynamic-graph 4.4.0 REQUIRED)
31-
ADD_PROJECT_DEPENDENCY(eigenpy 2.7.10 REQUIRED)
32-
INCLUDE(cmake/python.cmake) # TODO: overwriting eigenpy/python.cmake
33-
IF(BUILD_TESTING)
34-
FIND_PACKAGE(Boost REQUIRED COMPONENTS unit_test_framework)
35-
ENDIF(BUILD_TESTING)
36-
37-
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)
3839
# Silence a warning about a deprecated use of boost bind by boost >= 1.73
3940
# without dropping support for boost < 1.73
40-
ADD_DEFINITIONS(-DBOOST_BIND_GLOBAL_PLACEHOLDERS)
41-
ENDIF()
41+
add_definitions(-DBOOST_BIND_GLOBAL_PLACEHOLDERS)
42+
endif()
4243

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

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 & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +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} ${PROJECT_NAME})
50-
TARGET_LINK_BOOST_PYTHON(${PYTHON_MODULE} PRIVATE)
51-
TARGET_INCLUDE_DIRECTORIES(${PYTHON_MODULE} SYSTEM PRIVATE ${PYTHON_INCLUDE_DIRS})
52-
53-
## Test it
54-
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)
5554

5655
# also test other bindings, using this custom entity
57-
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)