mv_machine_learning: add task group build option
[platform/core/api/mediavision.git] / CMakeLists.txt
1 set(fw_name "capi-media-vision")
2 project(${fw_name})
3 cmake_minimum_required(VERSION 2.6...3.13)
4
5 option(BUILD_ML_ONLY "Build mv_machine_learning only" OFF)
6 option(BUILD_VISUALIZER "Build visualizer for testing 2D/3D output" 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_IMAGE_CLASSIFICATION_LIB_NAME "mv_image_classification" CACHE STRING
42        "Name of the library will be built for image classification module (without extension).")
43
44 include(FindPkgConfig)
45 include(GNUInstallDirs)
46
47 add_subdirectory(mv_common)
48 add_subdirectory(mv_machine_learning)
49 if(NOT BUILD_ML_ONLY)
50 add_subdirectory(mv_barcode)
51 add_subdirectory(mv_image)
52 add_subdirectory(mv_face)
53 add_subdirectory(mv_surveillance)
54 add_subdirectory(mv_3d)
55 add_subdirectory(mv_roi_tracker)
56 add_subdirectory(test)
57 endif()
58
59 if(BUILD_ML_ONLY)
60 install(
61         DIRECTORY include/ DESTINATION include/media
62         FILES_MATCHING
63         PATTERN "*_private.h" EXCLUDE
64         PATTERN "*_inference*.h"
65         PATTERN "*_common*.h"
66         )
67 else()
68 install(
69         DIRECTORY include/ DESTINATION include/media
70         FILES_MATCHING
71         PATTERN "*_private.h" EXCLUDE
72         PATTERN "*.h"
73         )
74 endif()
75
76 set(PC_NAME ${fw_name})
77 if (${ENABLE_ML_FACE_RECOGNITION})
78     set(PC_REQUIRED "${fw_name}-barcode ${fw_name}-face ${fw_name}-image ${fw_name}-surveillance ${fw_name}-inference ${fw_name}-training ${fw_name}-face-recognition ${fw_name}-tracker ${fw_name}-3d")
79     set(PC_LDFLAGS "-l${MV_COMMON_LIB_NAME} -l${MV_BARCODE_DETECTOR_LIB_NAME} -l${MV_BARCODE_GENERATOR_LIB_NAME} \
80 -l${MV_IMAGE_LIB_NAME} -l${MV_FACE_LIB_NAME} -l${MV_SURVEILLANCE_LIB_NAME} -l${MV_INFERENCE_LIB_NAME} -l${MV_TRAINING_LIB_NAME} -l${MV_FACE_RECOG_LIB_NAME} -l${MV_ROI_TRACKER_LIB_NAME} -l${MV_3D_LIB_NAME}")
81 else()
82     set(PC_REQUIRED "${fw_name}-barcode ${fw_name}-face ${fw_name}-image ${fw_name}-surveillance ${fw_name}-inference ${fw_name}-tracker ${fw_name}-3d")
83     set(PC_LDFLAGS "-l${MV_COMMON_LIB_NAME} -l${MV_BARCODE_DETECTOR_LIB_NAME} -l${MV_BARCODE_GENERATOR_LIB_NAME} \
84 -l${MV_IMAGE_LIB_NAME} -l${MV_FACE_LIB_NAME} -l${MV_SURVEILLANCE_LIB_NAME} -l${MV_INFERENCE_LIB_NAME} -l${MV_ROI_TRACKER_LIB_NAME} -l${MV_3D_LIB_NAME}")
85 endif()
86
87 configure_file(
88     ${fw_name}.pc.in
89     ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}.pc
90     @ONLY
91 )
92
93 if(NOT BUILD_ML_ONLY)
94 install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
95 endif()
96
97 set(pc_dependents "capi-media-tool")
98 set(PC_NAME ${fw_name}-common)
99 set(PC_REQUIRED ${pc_dependents})
100 set(PC_LDFLAGS "-l${MV_COMMON_LIB_NAME}")
101 configure_file(
102     ${fw_name}.pc.in
103     ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}-common.pc
104     @ONLY
105 )
106 install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}-common.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
107
108 # now all sub package dependent common
109 set(PC_REQUIRED ${fw_name}-common)
110
111 if(NOT BUILD_ML_ONLY)
112 set(PC_NAME ${fw_name}-barcode)
113 set(PC_LDFLAGS "-l${MV_BARCODE_DETECTOR_LIB_NAME} -l${MV_BARCODE_GENERATOR_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
114 configure_file(
115     ${fw_name}.pc.in
116     ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}-barcode.pc
117     @ONLY
118 )
119 install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}-barcode.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
120
121 set(PC_NAME ${fw_name}-face)
122 set(PC_LDFLAGS "-l${MV_FACE_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
123 configure_file(
124     ${fw_name}.pc.in
125     ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}-face.pc
126     @ONLY
127 )
128 install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}-face.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
129
130 set(PC_NAME ${fw_name}-image)
131 set(PC_LDFLAGS "-l${MV_IMAGE_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
132 configure_file(
133     ${fw_name}.pc.in
134     ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}-image.pc
135     @ONLY
136 )
137 install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}-image.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
138
139 set(PC_NAME ${fw_name}-surveillance)
140 set(PC_LDFLAGS "-l${MV_SURVEILLANCE_LIB_NAME} -l${MV_FACE_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
141 configure_file(
142     ${fw_name}.pc.in
143     ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}-surveillance.pc
144     @ONLY
145 )
146 install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}-surveillance.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
147
148 set(PC_NAME ${fw_name}-3d)
149 set(PC_LDFLAGS "-l${MV_3D_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
150 configure_file(
151     ${fw_name}.pc.in
152     ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}-3d.pc
153     @ONLY
154 )
155 install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}-3d.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
156 endif()
157
158 set(PC_NAME ${fw_name}-inference)
159 set(PC_LDFLAGS "-l${MV_INFERENCE_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
160 configure_file(
161     ${fw_name}.pc.in
162     ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}-inference.pc
163     @ONLY
164 )
165 install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}-inference.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
166
167 if (${ENABLE_ML_OBJECT_DETECTION})
168     set(PC_NAME ${fw_name}-object-detection)
169     set(PC_LDFLAGS "-l${MV_OBJECT_DETECTION_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
170     configure_file(
171             ${fw_name}.pc.in
172             ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}-object-detection.pc
173             @ONLY
174     )
175     install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}-object-detection.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
176     install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/mv_machine_learning/object_detection/meta/object_detection.json DESTINATION ${CMAKE_INSTALL_DATADIR}/${fw_name})
177 endif()
178
179 if (${ENABLE_ML_OBJECT_DETECTION_3D})
180     set(PC_NAME ${fw_name}-object-detection-3d)
181     set(PC_LDFLAGS "-l${MV_OBJECT_DETECTION_3D_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
182     configure_file(
183             ${fw_name}.pc.in
184             ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}-object-detection-3d.pc
185             @ONLY
186     )
187     install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}-object-detection-3d.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
188     install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/mv_machine_learning/object_detection_3d/meta/object_detection_3d.json DESTINATION ${CMAKE_INSTALL_DATADIR}/${fw_name})
189 endif()
190
191 if (${ENABLE_ML_IMAGE_CLASSIFICATION})
192     set(PC_NAME ${fw_name}-image-classification)
193     set(PC_LDFLAGS "-l${MV_IMAGE_CLASSIFICATION_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
194     configure_file(
195             ${fw_name}.pc.in
196             ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}-image-classification.pc
197             @ONLY
198     )
199     install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}-image-classification.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
200     install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/mv_machine_learning/image_classification/meta/image_classification.json DESTINATION ${CMAKE_INSTALL_DATADIR}/${fw_name})
201 endif()
202
203 if (${ENABLE_ML_FACE_RECOGNITION})
204     set(PC_NAME ${fw_name}-training)
205     set(PC_LDFLAGS "-l${MV_TRAINING_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
206     configure_file(
207         ${fw_name}.pc.in
208         ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}-training.pc
209         @ONLY
210     )
211     install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}-training.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
212
213         set(PC_NAME ${fw_name}-face-recognition)
214     set(PC_LDFLAGS "-l${MV_FACE_RECOG_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
215     configure_file(
216         ${fw_name}.pc.in
217         ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}-face-recognition.pc
218         @ONLY
219     )
220     install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}-face-recognition.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
221     install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/mv_machine_learning/face_recognition/meta/face_recognition.json DESTINATION ${CMAKE_INSTALL_DATADIR}/${fw_name})
222 endif()
223
224 set(PC_NAME ${fw_name}-tracker)
225 set(PC_LDFLAGS "-l${MV_ROI_TRACKER_LIB_NAME} -l${MV_COMMON_LIB_NAME}")
226 configure_file(
227     ${fw_name}.pc.in
228     ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}-tracker.pc
229     @ONLY
230 )
231 install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}-tracker.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
232
233 install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/media-vision-config.json DESTINATION ${CMAKE_INSTALL_DATADIR}/${fw_name})