@@ -2,277 +2,4 @@ cmake_minimum_required(VERSION 3.5)
2
2
3
3
project (open_simulation_interface )
4
4
5
- # Toplevel check
6
- set (OSI_IS_TOP_LEVEL OFF )
7
- if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR )
8
- set (OSI_IS_TOP_LEVEL ON )
9
- endif ()
10
-
11
- # Set the C++ standard
12
- set (CMAKE_CXX_STANDARD 11 CACHE STRING "C++ standard to be used" )
13
- set (CMAKE_CXX_STANDARD_REQUIRED ON )
14
-
15
- # Optional Flatbuffer support
16
- option (OSI_BUILD_FLATBUFFER "Build flatbuffer versions of libraries" OFF )
17
- option (OSI_BUILD_DOCUMENTATION "Build flatbuffer versions of libraries" ${OSI_IS_TOP_LEVEL} )
18
-
19
- # Set a default build type if none was specified
20
- set (default_build_type "Release" )
21
- if (EXISTS "${CMAKE_SOURCE_DIR} /.git" )
22
- set (default_build_type "Debug" )
23
- endif ()
24
-
25
- # read the version number from the file "VERSION"
26
- file (STRINGS "VERSION" VERSION_CONTENTS )
27
- foreach (LINE ${VERSION_CONTENTS} )
28
- string (REGEX REPLACE " |\t " "" LINE ${LINE} )
29
- string (REGEX MATCH "^[^=]+" VERSION_NAME ${LINE} )
30
- string (REPLACE "${VERSION_NAME} =" "" VERSION_VALUE ${LINE} )
31
- set (${VERSION_NAME} "${VERSION_VALUE} " )
32
- endforeach ()
33
- set (OPEN_SIMULATION_INTERFACE_VERSION ${VERSION_MAJOR} .${VERSION_MINOR}.${VERSION_PATCH} )
34
-
35
- set (${PROJECT_NAME} _SOVERSION "${VERSION_MAJOR} .${VERSION_MINOR} .${VERSION_PATCH} " )
36
- set (${PROJECT_NAME} _LIBVERSION "${VERSION_MAJOR} .${VERSION_MINOR} .${VERSION_PATCH} " )
37
-
38
- # configure build version
39
- if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES )
40
- message (STATUS "Setting build type to '${default_build_type} ' as none was specified." )
41
- set (CMAKE_BUILD_TYPE "${default_build_type} " CACHE
42
- STRING "Choose the type of build." FORCE )
43
- # Set the possible values of build type for cmake-gui
44
- set_property (CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
45
- "Debug" "Release" "MinSizeRel" "RelWithDebInfo" )
46
- endif ()
47
-
48
- # Offer the user the choice of overriding the installation directories
49
- set (OSI_INSTALL_LIB_DIR lib CACHE PATH "Installation directory for libraries" )
50
- set (OSI_INSTALL_INCLUDE_DIR include CACHE PATH "Installation directory for header files" )
51
-
52
- if (WIN32 AND NOT CYGWIN )
53
- set (DEF_INSTALL_CMAKE_DIR CMake/${PROJECT_NAME}-${VERSION_MAJOR} )
54
- else ()
55
- set (DEF_INSTALL_CMAKE_DIR lib/cmake/${PROJECT_NAME}-${VERSION_MAJOR} )
56
- endif ()
57
- set (OSI_INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR} CACHE PATH "Installation directory for CMake files" )
58
-
59
- set (OSI_INSTALL_LIB_DIR ${OSI_INSTALL_LIB_DIR} /osi${VERSION_MAJOR} )
60
- set (OSI_INSTALL_INCLUDE_DIR ${OSI_INSTALL_INCLUDE_DIR} /osi${VERSION_MAJOR} )
61
-
62
- configure_file (osi_version.proto.in osi_version.proto )
63
-
64
- find_package (Protobuf 2.6.1 REQUIRED )
65
- set (PROTOBUF_IMPORT_DIRS ${PROTOBUF_INCLUDE_DIRS} )
66
-
67
- set (OSI_PROTO_FILES
68
- ${CMAKE_CURRENT_BINARY_DIR} /osi_version.proto
69
- osi_common.proto
70
- osi_datarecording.proto
71
- osi_detectedtrafficsign.proto
72
- osi_detectedtrafficlight.proto
73
- osi_detectedroadmarking.proto
74
- osi_detectedlane.proto
75
- osi_detectedobject.proto
76
- osi_detectedoccupant.proto
77
- osi_environment.proto
78
- osi_groundtruth.proto
79
- osi_hostvehicledata.proto
80
- osi_motionrequest.proto
81
- osi_trafficsign.proto
82
- osi_trafficlight.proto
83
- osi_trafficupdate.proto
84
- osi_trafficcommand.proto
85
- osi_trafficcommandupdate.proto
86
- osi_referenceline.proto
87
- osi_roadmarking.proto
88
- osi_route.proto
89
- osi_lane.proto
90
- osi_logicallane.proto
91
- osi_featuredata.proto
92
- osi_logicaldetectiondata.proto
93
- osi_object.proto
94
- osi_occupant.proto
95
- osi_sensordata.proto
96
- osi_sensorviewconfiguration.proto
97
- osi_sensorspecific.proto
98
- osi_sensorview.proto
99
- osi_streamingupdate.proto
100
- )
101
-
102
- protobuf_generate_cpp (PROTO_SRCS PROTO_HEADERS ${OSI_PROTO_FILES} )
103
- set (FLAT_HEADERS "" )
104
- if (OSI_BUILD_FLATBUFFER )
105
- set (FLAT_FBS "" )
106
- find_package (flatbuffers REQUIRED )
107
- if (NOT FLATBUFFERS_FLATC_EXECUTABLE )
108
- set (FLATBUFFERS_FLATC_EXECUTABLE ${flatbuffers_DIR} /../../tools/flatbuffers/flatc )
109
- endif ()
110
- file (WRITE "${CMAKE_CURRENT_BINARY_DIR} /descriptor.fbs" "namespace osi3;" )
111
- file (MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /include" )
112
- list (APPEND FLAT_FBS "${CMAKE_CURRENT_BINARY_DIR} /descriptor.fbs" )
113
- foreach (proto ${OSI_PROTO_FILES} )
114
- get_filename_component (proto_base ${proto} NAME_WE )
115
- set (fbs "${proto_base} .fbs" )
116
- add_custom_command (
117
- OUTPUT "${fbs} "
118
- COMMAND ${FLATBUFFERS_FLATC_EXECUTABLE} -I "${PROTOBUF_IMPORT_DIRS} " -I "${CMAKE_CURRENT_BINARY_DIR} " -o "${CMAKE_CURRENT_BINARY_DIR} " --proto "${proto} "
119
- DEPENDS "${proto} "
120
- WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR} "
121
- COMMENT "Convert ${proto} to ${fbs} using flatc"
122
- )
123
- list (APPEND FLAT_FBS "${CMAKE_CURRENT_BINARY_DIR} /${fbs} " )
124
- endforeach ()
125
-
126
- foreach (flat ${FLAT_FBS} )
127
- get_filename_component (flat_base ${flat} NAME_WE )
128
- set (fbs "${flat_base} .fbs" )
129
- set (fbh "${flat_base} _generated.h" )
130
- add_custom_command (
131
- OUTPUT "include/${fbh} "
132
- COMMAND ${FLATBUFFERS_FLATC_EXECUTABLE} -o "${CMAKE_CURRENT_BINARY_DIR} /include" --cpp --gen-mutable --gen-name-strings --scoped-enums "${fbs} "
133
- DEPENDS "${FLAT_FBS} "
134
- WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} "
135
- COMMENT "Process ${fbs} to ${fbh} using flatc"
136
- )
137
- list (APPEND FLAT_HEADERS "${CMAKE_CURRENT_BINARY_DIR} /include/${fbh} " )
138
- endforeach ()
139
-
140
- add_custom_target (${PROJECT_NAME} _fbs_build ALL DEPENDS "${FLAT_HEADERS} " )
141
- add_library (${PROJECT_NAME} _fbs INTERFACE )
142
- add_library (${PROJECT_NAME} ::${PROJECT_NAME}_fbs ALIAS ${PROJECT_NAME} _fbs )
143
- target_include_directories (${PROJECT_NAME} _fbs INTERFACE $< BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR} /include/> )
144
- target_include_directories (${PROJECT_NAME} _fbs SYSTEM INTERFACE $< INSTALL_INTERFACE:$< INSTALL_PREFIX> /include> )
145
- target_link_libraries (${PROJECT_NAME} _fbs INTERFACE flatbuffers::flatbuffers )
146
- endif ()
147
-
148
- add_library (${PROJECT_NAME} _static STATIC ${PROTO_SRCS} ${PROTO_HEADERS} )
149
- add_library (${PROJECT_NAME} ::${PROJECT_NAME}_static ALIAS ${PROJECT_NAME} _static )
150
- target_include_directories (${PROJECT_NAME} _static
151
- PUBLIC
152
- ${PROTOBUF_INCLUDE_DIR}
153
- $< BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR} >
154
- $< INSTALL_INTERFACE:${OSI_INSTALL_INCLUDE_DIR} >
155
- )
156
- target_link_libraries (${PROJECT_NAME} _static PUBLIC ${PROTOBUF_LIBRARY} )
157
- install (TARGETS ${PROJECT_NAME} _static
158
- EXPORT ${PROJECT_NAME} _targets
159
- ARCHIVE DESTINATION "${OSI_INSTALL_LIB_DIR} " COMPONENT lib )
160
-
161
-
162
- add_library (${PROJECT_NAME} _obj OBJECT ${PROTO_SRCS} ${PROTO_HEADERS} )
163
- add_library (${PROJECT_NAME} ::${PROJECT_NAME}_obj ALIAS ${PROJECT_NAME} _obj )
164
- target_include_directories (${PROJECT_NAME} _obj
165
- PUBLIC
166
- ${PROTOBUF_INCLUDE_DIR}
167
- $< BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR} >
168
- $< INSTALL_INTERFACE:${OSI_INSTALL_INCLUDE_DIR} >
169
- )
170
- set_property (TARGET ${PROJECT_NAME} _obj PROPERTY POSITION_INDEPENDENT_CODE ON )
171
-
172
-
173
- add_library (${PROJECT_NAME} _pic STATIC $< TARGET_OBJECTS:${PROJECT_NAME} _obj> )
174
- add_library (${PROJECT_NAME} ::${PROJECT_NAME}_pic ALIAS ${PROJECT_NAME} _pic )
175
- target_include_directories (${PROJECT_NAME} _pic
176
- PUBLIC
177
- ${PROTOBUF_INCLUDE_DIR}
178
- $< BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR} >
179
- $< INSTALL_INTERFACE:${OSI_INSTALL_INCLUDE_DIR} >
180
- )
181
- target_link_libraries (${PROJECT_NAME} _pic PUBLIC ${PROTOBUF_LIBRARY} )
182
-
183
- set_property (TARGET ${PROJECT_NAME} _pic PROPERTY POSITION_INDEPENDENT_CODE ON )
184
-
185
- install (TARGETS ${PROJECT_NAME} _pic
186
- EXPORT ${PROJECT_NAME} _targets
187
- ARCHIVE DESTINATION "${OSI_INSTALL_LIB_DIR} " COMPONENT lib )
188
-
189
- add_library (${PROJECT_NAME} SHARED $< TARGET_OBJECTS:${PROJECT_NAME} _obj> )
190
- add_library (${PROJECT_NAME} ::${PROJECT_NAME} ALIAS ${PROJECT_NAME} )
191
- target_include_directories (${PROJECT_NAME}
192
- PUBLIC
193
- ${PROTOBUF_INCLUDE_DIR}
194
- $< BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR} >
195
- $< INSTALL_INTERFACE:${OSI_INSTALL_INCLUDE_DIR} >
196
- )
197
-
198
- set_property (
199
- TARGET ${PROJECT_NAME}
200
- PROPERTY SOVERSION ${${PROJECT_NAME}_SOVERSION}
201
- )
202
- set_property (
203
- TARGET ${PROJECT_NAME}
204
- PROPERTY VERSION ${${PROJECT_NAME}_LIBVERSION}
205
- )
206
-
207
- target_link_libraries (${PROJECT_NAME} PUBLIC ${PROTOBUF_LIBRARY} )
208
- install (TARGETS ${PROJECT_NAME}
209
- EXPORT ${PROJECT_NAME} _targets
210
- DESTINATION "${OSI_INSTALL_LIB_DIR} " COMPONENT lib )
211
-
212
- # Copy proto headers to where they are expected by the package config file
213
- add_custom_command (
214
- TARGET ${PROJECT_NAME} POST_BUILD
215
- COMMAND ${CMAKE_COMMAND} -E make_directory
216
- ${CMAKE_CURRENT_BINARY_DIR} /${OSI_INSTALL_INCLUDE_DIR}
217
- COMMAND ${CMAKE_COMMAND} -E copy
218
- ${PROTO_HEADERS}
219
- ${CMAKE_CURRENT_BINARY_DIR} /${OSI_INSTALL_INCLUDE_DIR} )
220
-
221
- # Create the package config files
222
- include (CMakePackageConfigHelpers )
223
- write_basic_package_version_file (
224
- "${CMAKE_CURRENT_BINARY_DIR} /open_simulation_interface-config-version.cmake"
225
- VERSION ${OPEN_SIMULATION_INTERFACE_VERSION}
226
- COMPATIBILITY SameMajorVersion
227
- )
228
-
229
- export (EXPORT ${PROJECT_NAME} _targets
230
- FILE "${CMAKE_CURRENT_BINARY_DIR} /open_simulation_interface-targets.cmake"
231
- NAMESPACE ${PROJECT_NAME} ::
232
- )
233
-
234
- configure_package_config_file (open_simulation_interface-config.cmake.in
235
- "${CMAKE_CURRENT_BINARY_DIR} /open_simulation_interface-config.cmake"
236
- INSTALL_DESTINATION ${OSI_INSTALL_CMAKE_DIR}
237
- PATH_VARS OSI_INSTALL_INCLUDE_DIR
238
- NO_CHECK_REQUIRED_COMPONENTS_MACRO
239
- )
240
-
241
- # Install the *cmake files
242
- install (FILES
243
- "${CMAKE_CURRENT_BINARY_DIR} /open_simulation_interface-config.cmake"
244
- "${CMAKE_CURRENT_BINARY_DIR} /open_simulation_interface-config-version.cmake"
245
- DESTINATION "${OSI_INSTALL_CMAKE_DIR} "
246
- COMPONENT dev )
247
-
248
- # Header files
249
- install (FILES ${PROTO_HEADERS} ${FLAT_HEADERS}
250
- DESTINATION "${OSI_INSTALL_INCLUDE_DIR} " )
251
-
252
- # Install the export set for use with the install-tree
253
- install (EXPORT ${PROJECT_NAME} _targets
254
- FILE open_simulation_interface-targets.cmake
255
- NAMESPACE ${PROJECT_NAME} ::
256
- DESTINATION "${OSI_INSTALL_CMAKE_DIR} "
257
- COMPONENT dev )
258
-
259
- if (OSI_BUILD_DOCUMENTATION )
260
- # add a target to generate API documentation with Doxygen
261
- # Dependencies: Doxygen and proto2cpp.py
262
- find_package (Doxygen )
263
- if (Doxygen_FOUND )
264
- set (FILTER_PROTO2CPP_PY_PATH CACHE PATH "directory to the filter proto2cpp.py" )
265
- if (NOT EXISTS ${FILTER_PROTO2CPP_PY_PATH} /proto2cpp.py )
266
- message (WARNING "${FILTER_PROTO2CPP_PY_PATH} /proto2cpp.py could not be found." )
267
- else ()
268
- set (doxyfile_in ${CMAKE_CURRENT_SOURCE_DIR} /doxygen_config.cmake.in )
269
- set (doxyfile ${CMAKE_CURRENT_BINARY_DIR} /Doxyfile )
270
-
271
- configure_file (${doxyfile_in} ${doxyfile} @ONLY )
272
-
273
- add_custom_target (api_doc ALL
274
- COMMAND ${DOXYGEN_EXECUTABLE} ${doxyfile}
275
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} )
276
- endif ()
277
- endif ()
278
- endif ()
5
+ add_subdirectory (doxygen )
0 commit comments