|
1 |
| -CMAKE_MINIMUM_REQUIRED(VERSION 3.1) |
| 1 | +cmake_minimum_required(VERSION 3.1) |
2 | 2 |
|
3 | 3 | # Project properties
|
4 |
| -SET(PROJECT_ORG stack-of-tasks) |
5 |
| -SET(PROJECT_NAME dynamic-graph) |
6 |
| -SET(PROJECT_DESCRIPTION "Dynamic graph library") |
7 |
| -SET(PROJECT_URL "https://github.com/${PROJECT_ORG}/${PROJECT_NAME}") |
| 4 | +set(PROJECT_ORG stack-of-tasks) |
| 5 | +set(PROJECT_NAME dynamic-graph) |
| 6 | +set(PROJECT_DESCRIPTION "Dynamic graph library") |
| 7 | +set(PROJECT_URL "https://github.com/${PROJECT_ORG}/${PROJECT_NAME}") |
8 | 8 |
|
9 | 9 | # Project options
|
10 |
| -OPTION(SUFFIX_SO_VERSION "Suffix library name with its version" ON) |
| 10 | +option(SUFFIX_SO_VERSION "Suffix library name with its version" ON) |
11 | 11 |
|
12 | 12 | # Project configuration
|
13 |
| -SET(PROJECT_USE_CMAKE_EXPORT TRUE) |
14 |
| -SET(CUSTOM_HEADER_DIR ${PROJECT_NAME}) |
15 |
| -SET(CXX_DISABLE_WERROR TRUE) |
| 13 | +set(PROJECT_USE_CMAKE_EXPORT TRUE) |
| 14 | +set(CUSTOM_HEADER_DIR ${PROJECT_NAME}) |
| 15 | +set(CXX_DISABLE_WERROR TRUE) |
16 | 16 |
|
17 | 17 | # Doxygen setup
|
18 |
| -SET(DOXYGEN_USE_MATHJAX YES) |
19 |
| -SET(DOXYGEN_USE_TEMPLATE_CSS YES) |
| 18 | +set(DOXYGEN_USE_MATHJAX YES) |
| 19 | +set(DOXYGEN_USE_TEMPLATE_CSS YES) |
20 | 20 |
|
21 | 21 | # JRL-cmakemodule setup
|
22 |
| -INCLUDE(cmake/base.cmake) |
23 |
| -INCLUDE(cmake/boost.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 |
| -INCLUDE(cmake/pthread.cmake) # needs to be included after the CXX definition |
| 30 | +include(cmake/pthread.cmake) # needs to be included after the CXX definition |
31 | 31 |
|
32 | 32 | # Project dependencies
|
33 |
| -IF(BUILD_TESTING) |
34 |
| - FIND_PACKAGE(Boost REQUIRED COMPONENTS unit_test_framework) |
35 |
| -ENDIF() |
36 |
| -ADD_PROJECT_DEPENDENCY(Boost REQUIRED COMPONENTS serialization system thread) |
37 |
| -ADD_PROJECT_DEPENDENCY(Eigen3 REQUIRED) |
38 |
| -SEARCH_FOR_PTHREAD() |
39 |
| - |
40 |
| -IF(Boost_VERSION GREATER 107299 OR Boost_VERSION_MACRO GREATER 107299) |
| 33 | +if(BUILD_TESTING) |
| 34 | + find_package(Boost REQUIRED COMPONENTS unit_test_framework) |
| 35 | +endif() |
| 36 | +add_project_dependency(Boost REQUIRED COMPONENTS serialization system thread) |
| 37 | +add_project_dependency(Eigen3 REQUIRED) |
| 38 | +search_for_pthread() |
| 39 | + |
| 40 | +if(Boost_VERSION GREATER 107299 OR Boost_VERSION_MACRO GREATER 107299) |
41 | 41 | # Silence a warning about a deprecated use of boost bind by boost >= 1.73
|
42 | 42 | # without dropping support for boost < 1.73
|
43 |
| - ADD_DEFINITIONS(-DBOOST_BIND_GLOBAL_PLACEHOLDERS) |
44 |
| -ENDIF() |
| 43 | + add_definitions(-DBOOST_BIND_GLOBAL_PLACEHOLDERS) |
| 44 | +endif() |
45 | 45 |
|
46 | 46 | # Add configuration headers for plug-ins.
|
47 |
| -GENERATE_CONFIGURATION_HEADER( |
48 |
| - ${HEADER_DIR} config-tracer.hh DG_TRACER tracer_EXPORTS) |
49 |
| -GENERATE_CONFIGURATION_HEADER( |
50 |
| - ${HEADER_DIR} |
51 |
| - config-tracer-real-time.hh DG_TRACERREALTIME tracer_real_time_EXPORTS) |
| 47 | +generate_configuration_header(${HEADER_DIR} config-tracer.hh DG_TRACER |
| 48 | + tracer_EXPORTS) |
| 49 | +generate_configuration_header(${HEADER_DIR} config-tracer-real-time.hh |
| 50 | + DG_TRACERREALTIME tracer_real_time_EXPORTS) |
52 | 51 |
|
53 | 52 | # Verbosity level
|
54 |
| -IF(NOT (\"${CMAKE_VERBOSITY_LEVEL}\" STREQUAL \"\")) |
55 |
| - ADD_DEFINITIONS(-DVP_DEBUG_MODE=${CMAKE_VERBOSITY_LEVEL} -DVP_DEBUG) |
56 |
| -ENDIF(NOT (\"${CMAKE_VERBOSITY_LEVEL}\" STREQUAL \"\")) |
| 53 | +if(NOT (\"${CMAKE_VERBOSITY_LEVEL}\" STREQUAL \"\")) |
| 54 | + add_definitions(-DVP_DEBUG_MODE=${CMAKE_VERBOSITY_LEVEL} -DVP_DEBUG) |
| 55 | +endif(NOT (\"${CMAKE_VERBOSITY_LEVEL}\" STREQUAL \"\")) |
57 | 56 |
|
58 | 57 | # Main Library
|
59 |
| -SET(${PROJECT_NAME}_HEADERS |
60 |
| - include/${CUSTOM_HEADER_DIR}/fwd.hh |
61 |
| - include/${CUSTOM_HEADER_DIR}/debug.h |
62 |
| - include/${CUSTOM_HEADER_DIR}/real-time-logger.h |
63 |
| - include/${CUSTOM_HEADER_DIR}/real-time-logger-def.h |
64 |
| - |
65 |
| - include/${CUSTOM_HEADER_DIR}/dynamic-graph-api.h |
66 |
| - |
67 |
| - include/${CUSTOM_HEADER_DIR}/entity.h |
68 |
| - include/${CUSTOM_HEADER_DIR}/factory.h |
69 |
| - include/${CUSTOM_HEADER_DIR}/pool.h |
70 |
| - |
71 |
| - include/${CUSTOM_HEADER_DIR}/exception-abstract.h |
72 |
| - include/${CUSTOM_HEADER_DIR}/exception-factory.h |
73 |
| - include/${CUSTOM_HEADER_DIR}/exception-signal.h |
74 |
| - include/${CUSTOM_HEADER_DIR}/exception-traces.h |
75 |
| - |
76 |
| - include/${CUSTOM_HEADER_DIR}/signal.h |
77 |
| - include/${CUSTOM_HEADER_DIR}/signal-array.h |
78 |
| - include/${CUSTOM_HEADER_DIR}/signal-base.h |
79 |
| - include/${CUSTOM_HEADER_DIR}/signal-ptr.h |
80 |
| - include/${CUSTOM_HEADER_DIR}/signal-time-dependent.h |
81 |
| - include/${CUSTOM_HEADER_DIR}/signal-ptr.t.cpp |
82 |
| - include/${CUSTOM_HEADER_DIR}/signal.t.cpp |
83 |
| - include/${CUSTOM_HEADER_DIR}/time-dependency.h |
84 |
| - include/${CUSTOM_HEADER_DIR}/time-dependency.t.cpp |
85 |
| - # Kept for a brittle backward compatiblity. |
86 |
| - include/${CUSTOM_HEADER_DIR}/signal-caster.h |
87 |
| - include/${CUSTOM_HEADER_DIR}/signal-cast-helper.h |
88 |
| - include/${CUSTOM_HEADER_DIR}/all-signals.h |
89 |
| - include/${CUSTOM_HEADER_DIR}/signal-helper.h |
90 |
| - include/${CUSTOM_HEADER_DIR}/entity-helper.h |
91 |
| - |
92 |
| - include/${CUSTOM_HEADER_DIR}/tracer.h |
93 |
| - include/${CUSTOM_HEADER_DIR}/tracer-real-time.h |
94 |
| - |
95 |
| - include/${CUSTOM_HEADER_DIR}/command.h |
96 |
| - include/${CUSTOM_HEADER_DIR}/eigen-io.h |
97 |
| - include/${CUSTOM_HEADER_DIR}/linear-algebra.h |
98 |
| - include/${CUSTOM_HEADER_DIR}/value.h |
99 |
| - |
100 |
| - include/${CUSTOM_HEADER_DIR}/command-setter.h |
101 |
| - include/${CUSTOM_HEADER_DIR}/command-setter.t.cpp |
102 |
| - include/${CUSTOM_HEADER_DIR}/command-getter.h |
103 |
| - include/${CUSTOM_HEADER_DIR}/command-getter.t.cpp |
104 |
| - include/${CUSTOM_HEADER_DIR}/command-direct-getter.h |
105 |
| - include/${CUSTOM_HEADER_DIR}/command-direct-setter.h |
106 |
| - include/${CUSTOM_HEADER_DIR}/command-bind.h |
107 |
| - include/${CUSTOM_HEADER_DIR}/all-commands.h |
108 |
| - |
109 |
| - include/${CUSTOM_HEADER_DIR}/logger.h |
110 |
| - ) |
111 |
| - |
112 |
| -SET(${PROJECT_NAME}_SOURCES |
113 |
| - src/debug/debug.cpp |
114 |
| - src/debug/real-time-logger.cpp |
115 |
| - src/debug/logger.cpp |
116 |
| - |
117 |
| - src/dgraph/entity.cpp |
118 |
| - src/dgraph/factory.cpp |
119 |
| - src/dgraph/pool.cpp |
120 |
| - |
121 |
| - src/exception/exception-abstract.cpp |
122 |
| - src/exception/exception-factory.cpp |
123 |
| - src/exception/exception-signal.cpp |
124 |
| - src/exception/exception-traces.cpp |
125 |
| - |
126 |
| - src/mt/process-list.cpp |
127 |
| - |
128 |
| - src/signal/signal-array.cpp |
129 |
| - |
130 |
| - src/command/value.cpp |
131 |
| - src/command/command.cpp |
132 |
| - ) |
133 |
| - |
134 |
| -ADD_LIBRARY(${PROJECT_NAME} SHARED |
135 |
| - ${${PROJECT_NAME}_SOURCES} ${${PROJECT_NAME}_HEADERS}) |
136 |
| -MODERNIZE_TARGET_LINK_LIBRARIES(${PROJECT_NAME} SCOPE PUBLIC |
137 |
| - TARGETS Eigen3::Eigen |
138 |
| - INCLUDE_DIRS ${EIGEN3_INCLUDE_DIR}) |
139 |
| -TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME} PUBLIC $<INSTALL_INTERFACE:include>) |
140 |
| -TARGET_LINK_LIBRARIES(${PROJECT_NAME} PUBLIC Boost::serialization Boost::system Boost::thread) |
141 |
| - |
142 |
| -IF(UNIX) |
143 |
| - TARGET_LINK_LIBRARIES(${PROJECT_NAME} PUBLIC ${CMAKE_DL_LIBS} pthread) |
144 |
| -ENDIF(UNIX) |
145 |
| - |
146 |
| -IF(SUFFIX_SO_VERSION) |
147 |
| - SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION}) |
148 |
| -ENDIF(SUFFIX_SO_VERSION) |
149 |
| - |
150 |
| -INSTALL(TARGETS ${PROJECT_NAME} EXPORT ${TARGETS_EXPORT_NAME} DESTINATION lib) |
151 |
| - |
152 |
| - |
153 |
| -SET(DYNAMIC_GRAPH_PLUGINDIR "lib/${PROJECT_NAME}-plugins") |
154 |
| -SET(PACKAGE_EXTRA_MACROS "set(DYNAMIC_GRAPH_PLUGINDIR ${DYNAMIC_GRAPH_PLUGINDIR})") |
155 |
| -SET(PKG_CONFIG_EXTRA "plugindir=${DYNAMIC_GRAPH_PLUGINDIR}") |
156 |
| - |
157 |
| -ADD_SUBDIRECTORY(src) |
158 |
| -IF(BUILD_TESTING) |
159 |
| - ADD_SUBDIRECTORY(tests) |
160 |
| -ENDIF(BUILD_TESTING) |
161 |
| - |
162 |
| -PKG_CONFIG_APPEND_LIBS(${PROJECT_NAME}) |
163 |
| -INSTALL(FILES package.xml DESTINATION share/${PROJECT_NAME}) |
| 58 | +set(${PROJECT_NAME}_HEADERS |
| 59 | + include/${CUSTOM_HEADER_DIR}/fwd.hh |
| 60 | + include/${CUSTOM_HEADER_DIR}/debug.h |
| 61 | + include/${CUSTOM_HEADER_DIR}/real-time-logger.h |
| 62 | + include/${CUSTOM_HEADER_DIR}/real-time-logger-def.h |
| 63 | + include/${CUSTOM_HEADER_DIR}/dynamic-graph-api.h |
| 64 | + include/${CUSTOM_HEADER_DIR}/entity.h |
| 65 | + include/${CUSTOM_HEADER_DIR}/factory.h |
| 66 | + include/${CUSTOM_HEADER_DIR}/pool.h |
| 67 | + include/${CUSTOM_HEADER_DIR}/exception-abstract.h |
| 68 | + include/${CUSTOM_HEADER_DIR}/exception-factory.h |
| 69 | + include/${CUSTOM_HEADER_DIR}/exception-signal.h |
| 70 | + include/${CUSTOM_HEADER_DIR}/exception-traces.h |
| 71 | + include/${CUSTOM_HEADER_DIR}/signal.h |
| 72 | + include/${CUSTOM_HEADER_DIR}/signal-array.h |
| 73 | + include/${CUSTOM_HEADER_DIR}/signal-base.h |
| 74 | + include/${CUSTOM_HEADER_DIR}/signal-ptr.h |
| 75 | + include/${CUSTOM_HEADER_DIR}/signal-time-dependent.h |
| 76 | + include/${CUSTOM_HEADER_DIR}/signal-ptr.t.cpp |
| 77 | + include/${CUSTOM_HEADER_DIR}/signal.t.cpp |
| 78 | + include/${CUSTOM_HEADER_DIR}/time-dependency.h |
| 79 | + include/${CUSTOM_HEADER_DIR}/time-dependency.t.cpp |
| 80 | + # Kept for a brittle backward compatiblity. |
| 81 | + include/${CUSTOM_HEADER_DIR}/signal-caster.h |
| 82 | + include/${CUSTOM_HEADER_DIR}/signal-cast-helper.h |
| 83 | + include/${CUSTOM_HEADER_DIR}/all-signals.h |
| 84 | + include/${CUSTOM_HEADER_DIR}/signal-helper.h |
| 85 | + include/${CUSTOM_HEADER_DIR}/entity-helper.h |
| 86 | + include/${CUSTOM_HEADER_DIR}/tracer.h |
| 87 | + include/${CUSTOM_HEADER_DIR}/tracer-real-time.h |
| 88 | + include/${CUSTOM_HEADER_DIR}/command.h |
| 89 | + include/${CUSTOM_HEADER_DIR}/eigen-io.h |
| 90 | + include/${CUSTOM_HEADER_DIR}/linear-algebra.h |
| 91 | + include/${CUSTOM_HEADER_DIR}/value.h |
| 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 | + include/${CUSTOM_HEADER_DIR}/logger.h) |
| 101 | + |
| 102 | +set(${PROJECT_NAME}_SOURCES |
| 103 | + src/debug/debug.cpp |
| 104 | + src/debug/real-time-logger.cpp |
| 105 | + src/debug/logger.cpp |
| 106 | + src/dgraph/entity.cpp |
| 107 | + src/dgraph/factory.cpp |
| 108 | + src/dgraph/pool.cpp |
| 109 | + src/exception/exception-abstract.cpp |
| 110 | + src/exception/exception-factory.cpp |
| 111 | + src/exception/exception-signal.cpp |
| 112 | + src/exception/exception-traces.cpp |
| 113 | + src/mt/process-list.cpp |
| 114 | + src/signal/signal-array.cpp |
| 115 | + src/command/value.cpp |
| 116 | + src/command/command.cpp) |
| 117 | + |
| 118 | +add_library(${PROJECT_NAME} SHARED ${${PROJECT_NAME}_SOURCES} |
| 119 | + ${${PROJECT_NAME}_HEADERS}) |
| 120 | +modernize_target_link_libraries( |
| 121 | + ${PROJECT_NAME} |
| 122 | + SCOPE |
| 123 | + PUBLIC |
| 124 | + TARGETS |
| 125 | + Eigen3::Eigen |
| 126 | + INCLUDE_DIRS |
| 127 | + ${EIGEN3_INCLUDE_DIR}) |
| 128 | +target_include_directories(${PROJECT_NAME} PUBLIC $<INSTALL_INTERFACE:include>) |
| 129 | +target_link_libraries(${PROJECT_NAME} PUBLIC Boost::serialization Boost::system |
| 130 | + Boost::thread) |
| 131 | + |
| 132 | +if(UNIX) |
| 133 | + target_link_libraries(${PROJECT_NAME} PUBLIC ${CMAKE_DL_LIBS} pthread) |
| 134 | +endif(UNIX) |
| 135 | + |
| 136 | +if(SUFFIX_SO_VERSION) |
| 137 | + set_target_properties(${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION}) |
| 138 | +endif(SUFFIX_SO_VERSION) |
| 139 | + |
| 140 | +install( |
| 141 | + TARGETS ${PROJECT_NAME} |
| 142 | + EXPORT ${TARGETS_EXPORT_NAME} |
| 143 | + DESTINATION lib) |
| 144 | + |
| 145 | +set(DYNAMIC_GRAPH_PLUGINDIR "lib/${PROJECT_NAME}-plugins") |
| 146 | +set(PACKAGE_EXTRA_MACROS |
| 147 | + "set(DYNAMIC_GRAPH_PLUGINDIR ${DYNAMIC_GRAPH_PLUGINDIR})") |
| 148 | +set(PKG_CONFIG_EXTRA "plugindir=${DYNAMIC_GRAPH_PLUGINDIR}") |
| 149 | + |
| 150 | +add_subdirectory(src) |
| 151 | +if(BUILD_TESTING) |
| 152 | + add_subdirectory(tests) |
| 153 | +endif(BUILD_TESTING) |
| 154 | + |
| 155 | +pkg_config_append_libs(${PROJECT_NAME}) |
| 156 | +install(FILES package.xml DESTINATION share/${PROJECT_NAME}) |
0 commit comments