1 set(fw_name "capi-media-vision")
3 cmake_minimum_required(VERSION 3.13)
5 option(BUILD_VISUALIZER "Build visualizer for testing 2D/3D output" OFF)
6 option(BUILD_CAMERA_PACKET "Build camera packet output test" OFF)
9 add_compile_definitions(BUILD_VISUALIZER)
12 if(MV_3D_POINTCLOUD_IS_AVAILABLE)
13 add_compile_definitions(MV_3D_POINTCLOUD_IS_AVAILABLE)
16 set(MV_COMMON_LIB_NAME "mv_common")
17 set(MV_BARCODE_DETECTOR_LIB_NAME "mv_barcode_detector" CACHE STRING
18 "Name of the library will be built for barcode detecting module (without extension).")
19 set(MV_BARCODE_GENERATOR_LIB_NAME "mv_barcode_generator" CACHE STRING
20 "Name of the library will be built for barcode generating module (without extension).")
21 set(MV_IMAGE_LIB_NAME "mv_image" CACHE STRING
22 "Name of the library will be built for image module (without extension).")
23 set(MV_FACE_LIB_NAME "mv_face" CACHE STRING
24 "Name of the library will be built for barcode generating module (without extension).")
25 set(MV_SURVEILLANCE_LIB_NAME "mv_surveillance" CACHE STRING
26 "Name of the library will be built for surveillance module (without extension).")
27 set(MV_INFERENCE_LIB_NAME "mv_inference" CACHE STRING
28 "Name of the library will be built for inference module (without extension).")
29 set(MV_TRAINING_LIB_NAME "mv_training" CACHE STRING
30 "Name of the library will be built for training module (without extension).")
31 set(MV_FACE_RECOG_LIB_NAME "mv_face_recognition" CACHE STRING
32 "Name of the library will be built for face recognition module (without extension).")
33 set(MV_3D_LIB_NAME "mv_3d" CACHE STRING
34 "Name of the library will be built for 3d module (without extension).")
35 set(MV_ROI_TRACKER_LIB_NAME "mv_roi_tracker" CACHE STRING
36 "Name of the library will be built for tracker module (without extension).")
37 set(MV_OBJECT_DETECTION_LIB_NAME "mv_object_detection" CACHE STRING
38 "Name of the library will be built for object detection module (without extension).")
39 set(MV_OBJECT_DETECTION_3D_LIB_NAME "mv_object_detection_3d" CACHE STRING
40 "Name of the library will be built for object detection 3d module (without extension).")
41 set(MV_LANDMARK_DETECTION_LIB_NAME "mv_landmark_detection" CACHE STRING
42 "Name of the library will be built for object detection 3d module (without extension).")
43 set(MV_IMAGE_CLASSIFICATION_LIB_NAME "mv_image_classification" CACHE STRING
44 "Name of the library will be built for image classification module (without extension).")
45 set(MV_IMAGE_SEGMENTATION_LIB_NAME "mv_image_segmentation" CACHE STRING
46 "Name of the library will be built for image segmentation module (without extension).")
48 include(FindPkgConfig)
49 include(GNUInstallDirs)
51 add_subdirectory(mv_common)
52 add_subdirectory(mv_machine_learning)
53 add_subdirectory(mv_barcode)
54 add_subdirectory(mv_image)
55 add_subdirectory(mv_face)
56 add_subdirectory(mv_surveillance)
57 add_subdirectory(mv_3d)
58 add_subdirectory(mv_roi_tracker)
59 add_subdirectory(test)
61 set(TOTAL_REQUIRED "")
64 set(pc_dependents "capi-media-tool")
65 set(PC_NAME ${fw_name}-common)
66 set(PC_REQUIRED ${pc_dependents})
67 set(PC_LDFLAGS "-l${MV_COMMON_LIB_NAME}")
70 ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-common.pc
73 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-common.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
74 list(APPEND TOTAL_LDFLAGS ${PC_LDFLAGS})
76 # now all sub package dependent common
77 set(PC_REQUIRED ${fw_name}-common)
79 set(PC_NAME ${fw_name}-barcode)
80 set(PC_LDFLAGS "-l${MV_BARCODE_DETECTOR_LIB_NAME} -l${MV_BARCODE_GENERATOR_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
83 ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-barcode.pc
86 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-barcode.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
87 list(APPEND TOTAL_REQUIRED ${PC_NAME})
88 list(APPEND TOTAL_LDFLAGS ${PC_LDFLAGS})
90 set(PC_NAME ${fw_name}-face)
91 set(PC_LDFLAGS "-l${MV_FACE_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
94 ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-face.pc
97 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-face.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
98 list(APPEND TOTAL_REQUIRED ${PC_NAME})
99 list(APPEND TOTAL_LDFLAGS ${PC_LDFLAGS})
101 set(PC_NAME ${fw_name}-image)
102 set(PC_LDFLAGS "-l${MV_IMAGE_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
105 ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-image.pc
108 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-image.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
109 list(APPEND TOTAL_REQUIRED ${PC_NAME})
110 list(APPEND TOTAL_LDFLAGS ${PC_LDFLAGS})
112 set(PC_NAME ${fw_name}-surveillance)
113 set(PC_LDFLAGS "-l${MV_SURVEILLANCE_LIB_NAME} -l${MV_FACE_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
116 ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-surveillance.pc
119 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-surveillance.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
120 list(APPEND TOTAL_REQUIRED ${PC_NAME})
121 list(APPEND TOTAL_LDFLAGS ${PC_LDFLAGS})
123 set(PC_NAME ${fw_name}-3d)
124 set(PC_LDFLAGS "-l${MV_3D_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
127 ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-3d.pc
130 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-3d.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
131 list(APPEND TOTAL_REQUIRED ${PC_NAME})
132 list(APPEND TOTAL_LDFLAGS ${PC_LDFLAGS})
134 set(PC_NAME ${fw_name}-inference)
135 set(PC_LDFLAGS "-l${MV_INFERENCE_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
138 ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-inference.pc
141 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-inference.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
142 list(APPEND TOTAL_REQUIRED ${PC_NAME})
143 list(APPEND TOTAL_LDFLAGS ${PC_LDFLAGS})
145 set(PC_NAME ${fw_name}-tracker)
146 set(PC_LDFLAGS "-l${MV_ROI_TRACKER_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
149 ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-tracker.pc
152 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-tracker.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
153 list(APPEND TOTAL_REQUIRED ${PC_NAME})
154 list(APPEND TOTAL_LDFLAGS ${PC_LDFLAGS})
156 if (${ENABLE_ML_FACE_RECOGNITION})
157 set(PC_NAME ${fw_name}-training)
158 set(PC_LDFLAGS "-l${MV_TRAINING_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
161 ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-training.pc
164 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-training.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
165 list(APPEND TOTAL_REQUIRED ${PC_NAME})
166 list(APPEND TOTAL_LDFLAGS ${PC_LDFLAGS})
168 set(PC_NAME ${fw_name}-face-recognition)
169 set(PC_LDFLAGS "-l${MV_FACE_RECOG_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
172 ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-face-recognition.pc
175 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-face-recognition.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
176 install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/mv_machine_learning/face_recognition/meta/face_recognition.json DESTINATION ${CMAKE_INSTALL_DATADIR}/${fw_name})
177 list(APPEND TOTAL_REQUIRED ${PC_NAME})
178 list(APPEND TOTAL_LDFLAGS ${PC_LDFLAGS})
181 if (${ENABLE_ML_IMAGE_CLASSIFICATION})
182 set(PC_NAME ${fw_name}-image-classification)
183 set(PC_LDFLAGS "-l${MV_IMAGE_CLASSIFICATION_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
186 ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-image-classification.pc
189 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-image-classification.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
190 install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/mv_machine_learning/image_classification/meta/image_classification.json DESTINATION ${CMAKE_INSTALL_DATADIR}/${fw_name})
191 list(APPEND TOTAL_REQUIRED ${PC_NAME})
192 list(APPEND TOTAL_LDFLAGS ${PC_LDFLAGS})
195 if (${ENABLE_ML_OBJECT_DETECTION})
196 set(PC_NAME ${fw_name}-object-detection)
197 set(PC_LDFLAGS "-l${MV_OBJECT_DETECTION_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
200 ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-object-detection.pc
203 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-object-detection.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
204 set(OBJECT_DETECTION_JSON_FILES
205 "${CMAKE_CURRENT_SOURCE_DIR}/mv_machine_learning/object_detection/meta/object_detection.json"
206 "${CMAKE_CURRENT_SOURCE_DIR}/mv_machine_learning/object_detection/meta/object_detection_plugin.json"
207 "${CMAKE_CURRENT_SOURCE_DIR}/mv_machine_learning/object_detection/meta/face_detection.json"
208 "${CMAKE_CURRENT_SOURCE_DIR}/mv_machine_learning/object_detection/meta/face_detection_plugin.json"
210 install(FILES ${OBJECT_DETECTION_JSON_FILES} DESTINATION ${CMAKE_INSTALL_DATADIR}/${fw_name})
211 list(APPEND TOTAL_REQUIRED ${PC_NAME})
212 list(APPEND TOTAL_LDFLAGS ${PC_LDFLAGS})
215 if (${ENABLE_ML_OBJECT_DETECTION_3D})
216 set(PC_NAME ${fw_name}-object-detection-3d)
217 set(PC_LDFLAGS "-l${MV_OBJECT_DETECTION_3D_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
220 ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-object-detection-3d.pc
223 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-object-detection-3d.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
224 install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/mv_machine_learning/object_detection_3d/meta/object_detection_3d.json DESTINATION ${CMAKE_INSTALL_DATADIR}/${fw_name})
225 list(APPEND TOTAL_REQUIRED ${PC_NAME})
226 list(APPEND TOTAL_LDFLAGS ${PC_LDFLAGS})
229 if (${ENABLE_ML_LANDMARK_DETECTION})
230 set(PC_NAME ${fw_name}-landmark-detection)
231 set(PC_LDFLAGS "-l${MV_LANDMARK_DETECTION_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
234 ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-landmark-detection.pc
237 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-landmark-detection.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
238 install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/mv_machine_learning/landmark_detection/meta/facial_landmark.json DESTINATION ${CMAKE_INSTALL_DATADIR}/${fw_name})
239 install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/mv_machine_learning/landmark_detection/meta/pose_landmark.json DESTINATION ${CMAKE_INSTALL_DATADIR}/${fw_name})
240 list(APPEND TOTAL_REQUIRED ${PC_NAME})
241 list(APPEND TOTAL_LDFLAGS ${PC_LDFLAGS})
244 if (${ENABLE_ML_IMAGE_SEGMENTATION})
245 set(PC_NAME ${fw_name}-image-segmentation)
246 set(PC_LDFLAGS "-l${MV_IMAGE_SEGMENTATION_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
249 ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-image-segmentation.pc
252 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-image-segmentation.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
253 install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/mv_machine_learning/image_segmentation/meta/selfie_segmentation.json DESTINATION ${CMAKE_INSTALL_DATADIR}/${fw_name})
254 install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/mv_machine_learning/image_segmentation/meta/selfie_segmentation_plugin.json DESTINATION ${CMAKE_INSTALL_DATADIR}/${fw_name})
255 list(APPEND TOTAL_REQUIRED ${PC_NAME})
256 list(APPEND TOTAL_LDFLAGS ${PC_LDFLAGS})
259 string(REPLACE ";" " " TOTAL_LDFLAGS "${TOTAL_LDFLAGS}")
260 string(REPLACE " " ";" TOTAL_LDFLAGS_LIST "${TOTAL_LDFLAGS}")
261 list(REMOVE_DUPLICATES TOTAL_LDFLAGS_LIST)
262 string(REPLACE ";" " " TOTAL_LDFLAGS "${TOTAL_LDFLAGS_LIST}")
264 string(REPLACE ";" " " TOTAL_REQUIRED "${TOTAL_REQUIRED}")
265 string(REPLACE " " ";" TOTAL_REQUIRED_LIST "${TOTAL_REQUIRED}")
266 list(REMOVE_DUPLICATES TOTAL_REQUIRED_LIST)
267 string(REPLACE ";" " " TOTAL_REQUIRED "${TOTAL_REQUIRED_LIST}")
269 set(PC_NAME ${fw_name})
270 set(PC_REQUIRED "${TOTAL_REQUIRED}")
271 set(PC_LDFLAGS "${TOTAL_LDFLAGS}")
274 ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}.pc
278 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
279 install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/media-vision-config.json DESTINATION ${CMAKE_INSTALL_DATADIR}/${fw_name})