Skip to content

Commit 605517c

Browse files
committed
Merge branch 'master' into devel
2 parents 73c5966 + 1769d4b commit 605517c

File tree

5 files changed

+114
-197
lines changed

5 files changed

+114
-197
lines changed

CMakeLists.txt

Lines changed: 87 additions & 166 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,40 @@
1-
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
1+
CMAKE_MINIMUM_REQUIRED(VERSION 3.1)
22

3-
# Setup project properties
3+
# Project properties
44
SET(PROJECT_ORG stack-of-tasks)
55
SET(PROJECT_NAME dynamic-graph)
66
SET(PROJECT_DESCRIPTION "Dynamic graph library")
7-
SET(PROJECT_URL "http://github.com/${PROJECT_ORG}/${PROJECT_NAME}")
7+
SET(PROJECT_URL "https://github.com/${PROJECT_ORG}/${PROJECT_NAME}")
88
SET(PROJECT_SUFFIX "-v3")
99

10-
# Export CMake Target
11-
SET(PROJECT_USE_CMAKE_EXPORT TRUE)
10+
# Project options
11+
OPTION(SUFFIX_SO_VERSION "Suffix library name with its version" ON)
1212

13-
# Make sure that every header is generated in dynamic-graph
13+
# Project configuration
14+
SET(PROJECT_USE_CMAKE_EXPORT TRUE)
1415
SET(CUSTOM_HEADER_DIR ${PROJECT_NAME})
15-
16-
# Do not fail on warning
1716
SET(CXX_DISABLE_WERROR TRUE)
17+
SET(DOXYGEN_USE_MATHJAX YES)
18+
SET(DYNAMIC_GRAPH_PLUGINDIR "${CMAKE_INSTALL_PREFIX}/lib/${PROJECT_NAME}-plugins")
19+
SET(PACKAGE_EXTRA_MACROS "set(DYNAMIC_GRAPH_PLUGINDIR ${DYNAMIC_GRAPH_PLUGINDIR})")
20+
SET(PKG_CONFIG_EXTRA "plugindir=${DYNAMIC_GRAPH_PLUGINDIR}")
21+
SET(CMAKE_INSTALL_RPATH "${DYNAMIC_GRAPH_PLUGINDIR}")
1822

23+
# JRL-cmakemodule setup
1924
INCLUDE(cmake/base.cmake)
25+
INCLUDE(cmake/boost.cmake)
2026

21-
# Specify the project.
27+
# Project definition
2228
COMPUTE_PROJECT_ARGS(PROJECT_ARGS LANGUAGES CXX)
2329
PROJECT(${PROJECT_NAME} ${PROJECT_ARGS})
2430

25-
# jrl-cmakemodules handling of usual modules
26-
INCLUDE(cmake/pthread.cmake)
27-
INCLUDE(cmake/boost.cmake)
31+
INCLUDE(cmake/pthread.cmake) # needs to be included after the CXX definition
2832

29-
ADD_REQUIRED_DEPENDENCY(eigen3)
33+
# Project dependencies
34+
ADD_PROJECT_DEPENDENCY(Eigen3 REQUIRED PKG_CONFIG_REQUIRES eigen3)
3035
SET(BOOST_COMPONENTS serialization system unit_test_framework thread)
3136
SEARCH_FOR_BOOST()
32-
33-
# Allows math in mathjax.
34-
SET(DOXYGEN_USE_MATHJAX YES)
35-
36-
# Defines paths.
37-
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
37+
SEARCH_FOR_PTHREAD()
3838

3939
# Add configuration headers for plug-ins.
4040
GENERATE_CONFIGURATION_HEADER(
@@ -43,32 +43,63 @@ GENERATE_CONFIGURATION_HEADER(
4343
${HEADER_DIR}
4444
config-tracer-real-time.hh DG_TRACERREALTIME tracer_real_time_EXPORTS)
4545

46-
set(PACKAGE_EXTRA_MACROS
47-
"set (DYNAMIC_GRAPH_PLUGINDIR \${CMAKE_CURRENT_LIST_DIR}/../../plugin)")
48-
49-
# Specific to PKG module
50-
# FIXME: to be changed into lib/dynamic-graph
51-
# to avoid name collision when installing dynamic-graph in /usr.
52-
SET(PLUGINDIR "${CMAKE_INSTALL_FULL_LIBDIR}/plugin")
53-
54-
# Add extra keys to pkg-config file to export the location of the
55-
# plug-in directory in a robust manner.
56-
SET(PKG_CONFIG_EXTRA "plugindir=${PLUGINDIR}")
57-
58-
# Add dependency toward dynamic graph library in pkg-config file.
59-
PKG_CONFIG_APPEND_LIBS(${PROJECT_NAME})
60-
61-
# Search for Boost.
62-
SEARCH_FOR_PTHREAD()
63-
64-
65-
####################################
66-
### Main Library
67-
####################################
6846
# Verbosity level
69-
IF (NOT (\"${CMAKE_VERBOSITY_LEVEL}\" STREQUAL \"\"))
47+
IF(NOT (\"${CMAKE_VERBOSITY_LEVEL}\" STREQUAL \"\"))
7048
ADD_DEFINITIONS(-DVP_DEBUG_MODE=${CMAKE_VERBOSITY_LEVEL} -DVP_DEBUG)
71-
ENDIF (NOT (\"${CMAKE_VERBOSITY_LEVEL}\" STREQUAL \"\"))
49+
ENDIF(NOT (\"${CMAKE_VERBOSITY_LEVEL}\" STREQUAL \"\"))
50+
51+
# Main Library
52+
SET(${PROJECT_NAME}_HEADERS
53+
include/${CUSTOM_HEADER_DIR}/fwd.hh
54+
include/${CUSTOM_HEADER_DIR}/debug.h
55+
include/${CUSTOM_HEADER_DIR}/real-time-logger.h
56+
include/${CUSTOM_HEADER_DIR}/real-time-logger-def.h
57+
58+
include/${CUSTOM_HEADER_DIR}/dynamic-graph-api.h
59+
60+
include/${CUSTOM_HEADER_DIR}/entity.h
61+
include/${CUSTOM_HEADER_DIR}/factory.h
62+
include/${CUSTOM_HEADER_DIR}/pool.h
63+
64+
include/${CUSTOM_HEADER_DIR}/exception-abstract.h
65+
include/${CUSTOM_HEADER_DIR}/exception-factory.h
66+
include/${CUSTOM_HEADER_DIR}/exception-signal.h
67+
include/${CUSTOM_HEADER_DIR}/exception-traces.h
68+
69+
include/${CUSTOM_HEADER_DIR}/signal.h
70+
include/${CUSTOM_HEADER_DIR}/signal-array.h
71+
include/${CUSTOM_HEADER_DIR}/signal-base.h
72+
include/${CUSTOM_HEADER_DIR}/signal-ptr.h
73+
include/${CUSTOM_HEADER_DIR}/signal-time-dependent.h
74+
include/${CUSTOM_HEADER_DIR}/signal-ptr.t.cpp
75+
include/${CUSTOM_HEADER_DIR}/signal.t.cpp
76+
include/${CUSTOM_HEADER_DIR}/time-dependency.h
77+
include/${CUSTOM_HEADER_DIR}/time-dependency.t.cpp
78+
include/${CUSTOM_HEADER_DIR}/signal-caster.h
79+
include/${CUSTOM_HEADER_DIR}/signal-cast-helper.h
80+
include/${CUSTOM_HEADER_DIR}/all-signals.h
81+
include/${CUSTOM_HEADER_DIR}/signal-helper.h
82+
include/${CUSTOM_HEADER_DIR}/entity-helper.h
83+
84+
include/${CUSTOM_HEADER_DIR}/tracer.h
85+
include/${CUSTOM_HEADER_DIR}/tracer-real-time.h
86+
87+
include/${CUSTOM_HEADER_DIR}/command.h
88+
include/${CUSTOM_HEADER_DIR}/eigen-io.h
89+
include/${CUSTOM_HEADER_DIR}/linear-algebra.h
90+
include/${CUSTOM_HEADER_DIR}/value.h
91+
92+
include/${CUSTOM_HEADER_DIR}/command-setter.h
93+
include/${CUSTOM_HEADER_DIR}/command-setter.t.cpp
94+
include/${CUSTOM_HEADER_DIR}/command-getter.h
95+
include/${CUSTOM_HEADER_DIR}/command-getter.t.cpp
96+
include/${CUSTOM_HEADER_DIR}/command-direct-getter.h
97+
include/${CUSTOM_HEADER_DIR}/command-direct-setter.h
98+
include/${CUSTOM_HEADER_DIR}/command-bind.h
99+
include/${CUSTOM_HEADER_DIR}/all-commands.h
100+
101+
include/${CUSTOM_HEADER_DIR}/logger.h
102+
)
72103
73104
SET(${PROJECT_NAME}_SOURCES
74105
src/debug/debug.cpp
@@ -94,134 +125,24 @@ SET(${PROJECT_NAME}_SOURCES
94125
src/command/command.cpp
95126
)
96127
97-
SET(${PROJECT_NAME}_HEADERS
98-
include/dynamic-graph/fwd.hh
99-
include/dynamic-graph/debug.h
100-
include/dynamic-graph/real-time-logger.h
101-
include/dynamic-graph/real-time-logger-def.h
102-
103-
include/dynamic-graph/dynamic-graph-api.h
104-
105-
include/dynamic-graph/entity.h
106-
include/dynamic-graph/factory.h
107-
include/dynamic-graph/pool.h
108-
109-
include/dynamic-graph/exception-abstract.h
110-
include/dynamic-graph/exception-factory.h
111-
include/dynamic-graph/exception-signal.h
112-
include/dynamic-graph/exception-traces.h
113-
114-
include/dynamic-graph/signal.h
115-
include/dynamic-graph/signal-array.h
116-
include/dynamic-graph/signal-base.h
117-
include/dynamic-graph/signal-ptr.h
118-
include/dynamic-graph/signal-time-dependent.h
119-
include/dynamic-graph/signal-ptr.t.cpp
120-
include/dynamic-graph/signal.t.cpp
121-
include/dynamic-graph/time-dependency.h
122-
include/dynamic-graph/time-dependency.t.cpp
123-
include/dynamic-graph/signal-caster.h
124-
include/dynamic-graph/signal-cast-helper.h
125-
include/dynamic-graph/all-signals.h
126-
include/dynamic-graph/signal-helper.h
127-
include/dynamic-graph/entity-helper.h
128-
129-
include/dynamic-graph/tracer.h
130-
include/dynamic-graph/tracer-real-time.h
131-
132-
include/dynamic-graph/command.h
133-
include/dynamic-graph/eigen-io.h
134-
include/dynamic-graph/linear-algebra.h
135-
include/dynamic-graph/value.h
136-
137-
include/dynamic-graph/command-setter.h
138-
include/dynamic-graph/command-setter.t.cpp
139-
include/dynamic-graph/command-getter.h
140-
include/dynamic-graph/command-getter.t.cpp
141-
include/dynamic-graph/command-direct-getter.h
142-
include/dynamic-graph/command-direct-setter.h
143-
include/dynamic-graph/command-bind.h
144-
include/dynamic-graph/all-commands.h
145-
146-
include/dynamic-graph/logger.h
147-
)
148-
149-
ADD_LIBRARY(${PROJECT_NAME}
150-
SHARED ${${PROJECT_NAME}_SOURCES} ${${PROJECT_NAME}_HEADERS})
151-
152-
SET(PUBLIC_HEADER ${${PROJECT_NAME}_HEADERS})
153-
154-
INSTALL(TARGETS ${PROJECT_NAME}
155-
EXPORT ${TARGETS_EXPORT_NAME}
156-
PUBLIC_HEADER
157-
INCLUDES DESTINATION include
158-
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
159-
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
160-
)
161-
162-
# We need to include Eigen3 because the CMakeFile at 16.04 LTS
163-
# is not so modern.
164-
target_include_directories(${PROJECT_NAME}
165-
PUBLIC
166-
$<BUILD_INTERFACE:${CMAKE_BUILD_DIR}/include>
167-
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>
168-
$<BUILD_INTERFACE:${EIGEN3_INCLUDE_DIRS}>
169-
INTERFACE ${EIGEN3_INCLUDE_DIRS}
170-
$<INSTALL_INTERFACE:include>
171-
)
172-
173-
OPTION(SUFFIX_SO_VERSION
174-
"Suffix shared library name by a string depending on git status of project"
175-
ON)
176-
177-
IF (${SUFFIX_SO_VERSION} EQUAL "ON")
178-
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION})
179-
ENDIF ()
180-
181-
IF (UNIX)
182-
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${CMAKE_DL_LIBS} pthread)
183-
ENDIF (UNIX)
184-
128+
ADD_LIBRARY(${PROJECT_NAME} SHARED
129+
${${PROJECT_NAME}_SOURCES} ${${PROJECT_NAME}_HEADERS})
130+
TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME} SYSTEM PUBLIC ${EIGEN3_INCLUDE_DIR})
131+
TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME} PUBLIC $<INSTALL_INTERFACE:include>)
185132
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${Boost_LIBRARIES})
186133
187-
####################################
188-
### Plugins
189-
####################################
190-
SET(plugins_list
191-
src/traces/tracer
192-
src/traces/tracer-real-time
193-
)
194-
195-
SET(tracer-real-time_dependency tracer)
196-
197-
FOREACH(plugin_file ${plugins_list})
198-
GET_FILENAME_COMPONENT(plugin ${plugin_file} NAME)
199-
ADD_LIBRARY(${plugin} SHARED "${plugin_file}.cpp")
200-
201-
TARGET_LINK_LIBRARIES(${plugin}
202-
${PROJECT_NAME} ${${plugin}_dependency}
203-
${Boost_LIBRARIES})
134+
IF(UNIX)
135+
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${CMAKE_DL_LIBS} pthread)
136+
ENDIF(UNIX)
204137
205-
SET_TARGET_PROPERTIES(${plugin}
206-
PROPERTIES
207-
PREFIX ""
208-
)
138+
IF(SUFFIX_SO_VERSION)
139+
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION})
140+
ENDIF(SUFFIX_SO_VERSION)
209141
210-
INSTALL(TARGETS ${plugin}
211-
EXPORT ${TARGET_NAME}
212-
DESTINATION ${PLUGINDIR})
213-
ENDFOREACH(plugin_file)
142+
INSTALL(TARGETS ${PROJECT_NAME} EXPORT ${TARGETS_EXPORT_NAME} DESTINATION lib)
214143
144+
ADD_SUBDIRECTORY(src)
215145
ADD_SUBDIRECTORY(tests)
216146
217-
get_cmake_property(_variableNames VARIABLES)
218-
list (SORT _variableNames)
219-
foreach (_variableName ${_variableNames})
220-
LIST(APPEND LOGGING_WATCHED_VARIABLES
221-
${_variableName}
222-
)
223-
endforeach()
224-
147+
PKG_CONFIG_APPEND_LIBS(${PROJECT_NAME})
225148
INSTALL(FILES package.xml DESTINATION share/${PROJECT_NAME})
226-
227-
MESSAGE(STATUS "dynamic_graph_VERSION=${dynamic_graph_VERSION}")

package.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<package format="2">
22
<name>dynamic-graph</name>
3-
<version>3.8.1</version>
3+
<version>4.0.0</version>
44
<description>
55
Dynamic graph library
66
</description>

src/CMakeLists.txt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
SET(plugins
2+
traces/tracer
3+
traces/tracer-real-time
4+
)
5+
6+
SET(tracer-real-time_deps tracer)
7+
8+
FOREACH(plugin ${plugins})
9+
GET_FILENAME_COMPONENT(LIBRARY_NAME ${plugin} NAME)
10+
ADD_LIBRARY(${LIBRARY_NAME} SHARED ${plugin})
11+
12+
IF(SUFFIX_SO_VERSION)
13+
SET_TARGET_PROPERTIES(${LIBRARY_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION})
14+
ENDIF(SUFFIX_SO_VERSION)
15+
16+
TARGET_LINK_LIBRARIES(${LIBRARY_NAME} ${PROJECT_NAME} ${${LIBRARY_NAME}_deps})
17+
18+
INSTALL(TARGETS ${LIBRARY_NAME} EXPORT ${TARGETS_EXPORT_NAME}
19+
DESTINATION ${DYNAMIC_GRAPH_PLUGINDIR})
20+
ENDFOREACH(plugin)

tests/CMakeLists.txt

Lines changed: 5 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,24 @@
1-
# Copyright 2010, Olivier Stasse, JRL, CNRS/AIST
2-
#
1+
# Copyright 2010-2020, Olivier Stasse, Guilhem Saurel, JRL, CNRS/AIST, LAAS-CNRS
32

4-
ADD_DEFINITIONS(-DDEBUG=2)
5-
6-
# Add Boost path to include directories.
7-
#INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
8-
9-
# Make Boost.Test generates the main function in test cases.
103
ADD_DEFINITIONS(-DBOOST_TEST_DYN_LINK -DBOOST_TEST_MAIN)
114

125
ADD_DEFINITIONS(-DTESTS_DATADIR="${CMAKE_CURRENT_SOURCE_DIR}/data")
136
ADD_DEFINITIONS(-DTESTS_PLUGINDIR="${LIBRARY_OUTPUT_PATH}")
147
ADD_DEFINITIONS(-DTESTS_DYNLIBSUFFIX="${CMAKE_SHARED_LIBRARY_SUFFIX}")
158

16-
# DYNAMIC_GRAPH_TEST(NAME)
17-
# ------------------------
18-
#
19-
# Define a test named `NAME'.
20-
#
21-
# This macro will create a binary from `NAME.cpp', link it against
22-
# Boost and add it to the test suite.
23-
#
249
MACRO(DYNAMIC_GRAPH_TEST NAME)
25-
ADD_EXECUTABLE(${NAME} ${NAME}.cpp)
26-
ADD_TEST(${NAME} ${RUNTIME_OUTPUT_DIRECTORY}/${NAME})
27-
28-
TARGET_LINK_LIBRARIES(${NAME} ${PROJECT_NAME})
29-
ADD_DEPENDENCIES(${NAME} ${PROJECT_NAME})
30-
31-
# Link against Boost.
32-
TARGET_LINK_LIBRARIES(${NAME} ${Boost_LIBRARIES})
33-
10+
ADD_UNIT_TEST(${NAME} ${NAME}.cpp)
11+
TARGET_LINK_LIBRARIES(${NAME} ${PROJECT_NAME} ${Boost_LIBRARIES})
3412
ENDMACRO(DYNAMIC_GRAPH_TEST)
3513

36-
3714
# Signal cast test.
3815
SET(signalcast_libs signal-cast-registerer-libA signal-cast-registerer-libB)
3916

4017
FOREACH(lib ${signalcast_libs})
41-
ADD_LIBRARY(${lib} SHARED ${lib}.cpp)
42-
18+
ADD_LIBRARY(${lib} SHARED ${lib})
4319
TARGET_LINK_LIBRARIES(${lib} ${PROJECT_NAME})
44-
ADD_DEPENDENCIES(${lib} ${PROJECT_NAME})
4520
ENDFOREACH()
21+
4622
DYNAMIC_GRAPH_TEST(signal-cast-registerer)
4723

4824
# Unit testing.

0 commit comments

Comments
 (0)