@@ -2,277 +2,4 @@ cmake_minimum_required(VERSION 3.5)
22
33project (open_simulation_interface)
44
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