|
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 |
2 | 3 |
|
3 | | -CMAKE_MINIMUM_REQUIRED(VERSION 3.1) |
| 4 | +cmake_minimum_required(VERSION 3.1) |
4 | 5 |
|
5 | 6 | # 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}") |
10 | 11 |
|
11 | 12 | # 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) |
13 | 14 |
|
14 | 15 | # 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) |
19 | 20 |
|
20 | 21 | # 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) |
24 | 24 |
|
25 | 25 | # 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) |
29 | 29 |
|
30 | 30 | # 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) |
41 | 39 | # Silence a warning about a deprecated use of boost bind by boost >= 1.73 |
42 | 40 | # 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() |
45 | 43 |
|
46 | 44 | # 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}) |
0 commit comments