mv_machine_learning: introduce get_result_count API for image classification
[platform/core/api/mediavision.git] / CMakeLists.txt
1 set(fw_name "capi-media-vision")
2 project(${fw_name})
3 cmake_minimum_required(VERSION 3.13)
4
5 option(BUILD_VISUALIZER "Build visualizer for testing 2D/3D output" OFF)
6 option(BUILD_CAMERA_PACKET "Build camera packet output test" OFF)
7
8 if(BUILD_VISUALIZER)
9     add_compile_definitions(BUILD_VISUALIZER)
10 endif()
11
12 if(MV_3D_POINTCLOUD_IS_AVAILABLE)
13     add_compile_definitions(MV_3D_POINTCLOUD_IS_AVAILABLE)
14 endif()
15
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).")
47
48 include(FindPkgConfig)
49 include(GNUInstallDirs)
50
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)
60
61 set(TOTAL_REQUIRED "")
62 set(TOTAL_LDFLAGS "")
63
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}")
68 configure_file(
69     ${fw_name}.pc.in
70     ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-common.pc
71     @ONLY
72 )
73 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-common.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
74 list(APPEND TOTAL_LDFLAGS ${PC_LDFLAGS})
75
76 # now all sub package dependent common
77 set(PC_REQUIRED ${fw_name}-common)
78
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}")
81 configure_file(
82     ${fw_name}.pc.in
83     ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-barcode.pc
84     @ONLY
85 )
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})
89
90 set(PC_NAME ${fw_name}-face)
91 set(PC_LDFLAGS "-l${MV_FACE_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
92 configure_file(
93     ${fw_name}.pc.in
94     ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-face.pc
95     @ONLY
96 )
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})
100
101 set(PC_NAME ${fw_name}-image)
102 set(PC_LDFLAGS "-l${MV_IMAGE_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
103 configure_file(
104     ${fw_name}.pc.in
105     ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-image.pc
106     @ONLY
107 )
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})
111
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}")
114 configure_file(
115     ${fw_name}.pc.in
116     ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-surveillance.pc
117     @ONLY
118 )
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})
122
123 set(PC_NAME ${fw_name}-3d)
124 set(PC_LDFLAGS "-l${MV_3D_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
125 configure_file(
126     ${fw_name}.pc.in
127     ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-3d.pc
128     @ONLY
129 )
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})
133
134 set(PC_NAME ${fw_name}-inference)
135 set(PC_LDFLAGS "-l${MV_INFERENCE_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
136 configure_file(
137     ${fw_name}.pc.in
138     ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-inference.pc
139     @ONLY
140 )
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})
144
145 set(PC_NAME ${fw_name}-tracker)
146 set(PC_LDFLAGS "-l${MV_ROI_TRACKER_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
147 configure_file(
148     ${fw_name}.pc.in
149     ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-tracker.pc
150     @ONLY
151 )
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})
155
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}")
159     configure_file(
160         ${fw_name}.pc.in
161         ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-training.pc
162         @ONLY
163     )
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})
167
168         set(PC_NAME ${fw_name}-face-recognition)
169     set(PC_LDFLAGS "-l${MV_FACE_RECOG_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
170     configure_file(
171         ${fw_name}.pc.in
172         ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-face-recognition.pc
173         @ONLY
174     )
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})
179 endif()
180
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}")
184     configure_file(
185             ${fw_name}.pc.in
186             ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-image-classification.pc
187             @ONLY
188     )
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})
193 endif()
194
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}")
198     configure_file(
199             ${fw_name}.pc.in
200             ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-object-detection.pc
201             @ONLY
202     )
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"
209     )
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})
213 endif()
214
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}")
218     configure_file(
219             ${fw_name}.pc.in
220             ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-object-detection-3d.pc
221             @ONLY
222     )
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})
227 endif()
228
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}")
232     configure_file(
233             ${fw_name}.pc.in
234             ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-landmark-detection.pc
235             @ONLY
236     )
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})
242 endif()
243
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}")
247     configure_file(
248             ${fw_name}.pc.in
249             ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}-image-segmentation.pc
250             @ONLY
251     )
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})
257 endif()
258
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}")
263
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}")
268
269 set(PC_NAME ${fw_name})
270 set(PC_REQUIRED "${TOTAL_REQUIRED}")
271 set(PC_LDFLAGS "${TOTAL_LDFLAGS}")
272 configure_file(
273     ${fw_name}.pc.in
274     ${CMAKE_CURRENT_BINARY_DIR}/${fw_name}.pc
275     @ONLY
276 )
277
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})