1# Copyright (c) 2022 - 2023 Shenzhen Kaihong Digital Industry Development Co., Ltd. 2# Licensed under the Apache License, Version 2.0 (the "License"); 3# you may not use this file except in compliance with the License. 4# You may obtain a copy of the License at 5# 6# http://www.apache.org/licenses/LICENSE-2.0 7# 8# Unless required by applicable law or agreed to in writing, software 9# distributed under the License is distributed on an "AS IS" BASIS, 10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11# See the License for the specific language governing permissions and 12# limitations under the License. 13import("//build/ohos.gni") 14import("//device/board/${product_company}/${device_name}/device.gni") 15import("//drivers/hdf_core/adapter/uhdf2/uhdf.gni") 16import("//drivers/peripheral/camera/camera.gni") 17import("$hdf_framework_path/tools/hc-gen/hc_gen.gni") 18 19hc_gen("build_camera_host_config") { 20 sources = [ rebase_path( 21 "$product_config_path/hdf_config/uhdf/camera/hdi_impl/camera_host_config.hcs") ] 22} 23 24ohos_prebuilt_etc("camera_host_config.hcb") { 25 deps = [ ":build_camera_host_config" ] 26 hcs_outputs = get_target_outputs(":build_camera_host_config") 27 source = hcs_outputs[0] 28 relative_install_dir = "hdfconfig" 29 install_images = [ chipset_base_dir ] 30 subsystem_name = "kaihong_products" 31 part_name = "kaihong_products" 32} 33 34hc_gen_c("generate_source") { 35 sources = [ 36 "$product_config_path/hdf_config/uhdf/camera/pipeline_core/config.hcs", 37 "$product_config_path/hdf_config/uhdf/camera/pipeline_core/params.hcs", 38 ] 39} 40 41action("copy_source") { 42 script = "/usr/bin/env" 43 outputs = [ "$target_out_dir/tmp.c" ] # no use, just for gn complains 44 args = [ 45 "cp", 46 "-f", 47 ] 48 args += rebase_path(get_target_outputs(":generate_source")) 49 args += [ rebase_path( 50 "$camera_path/pipeline_core/pipeline_impl/src/strategy/config/") ] 51 deps = [ ":generate_source" ] 52} 53 54ohos_prebuilt_etc("config.c") { 55 deps = [ ":copy_source" ] 56 source = 57 "$camera_path/pipeline_core/pipeline_impl/src/strategy/config/config.c" 58 exec_script( 59 "/usr/bin/env", 60 [ 61 "touch", 62 rebase_path( 63 "$camera_path/pipeline_core/pipeline_impl/src/strategy/config/config.c"), 64 ]) 65} 66 67ohos_prebuilt_etc("params.c") { 68 deps = [ ":copy_source" ] 69 source = 70 "$camera_path/pipeline_core/pipeline_impl/src/strategy/config/params.c" 71 exec_script( 72 "/usr/bin/env", 73 [ 74 "touch", 75 rebase_path( 76 "$camera_path/pipeline_core/pipeline_impl/src/strategy/config/params.c"), 77 ]) 78} 79 80hc_gen("build_ipp_algo_config") { 81 sources = [ rebase_path( 82 "$product_config_path/hdf_config/uhdf/camera/pipeline_core/ipp_algo_config.hcs") ] 83} 84 85ohos_prebuilt_etc("ipp_algo_config.hcb") { 86 deps = [ ":build_ipp_algo_config" ] 87 hcs_outputs = get_target_outputs(":build_ipp_algo_config") 88 source = hcs_outputs[0] 89 relative_install_dir = "hdfconfig" 90 install_images = [ chipset_base_dir ] 91 subsystem_name = "kaihong_products" 92 part_name = "kaihong_products" 93} 94 95config("example_config") { 96 visibility = [ ":*" ] 97 98 cflags = [ 99 "-Wno-error", 100 "-Wno-unused-function", 101 "-Wno-unused-parameter", 102 ] 103} 104 105group("chipset_build") { 106 public_deps = [ 107 ":camera_host_config.hcb", 108 ":config.c", 109 ":ipp_algo_config.hcb", 110 ":params.c", 111 "$board_camera_path/pipeline_core:camera_ipp_algo_example", 112 ] 113} 114 115config("camhdi_impl_config") { 116 visibility = [ ":*" ] 117 cflags = [ 118 "-DGST_DISABLE_DEPRECATED", 119 "-DHAVE_CONFIG_H", 120 ] 121 122 ldflags = [ "-Wl" ] 123 124 if (enable_camera_device_utest) { 125 cflags += [ 126 "-fprofile-arcs", 127 "-ftest-coverage", 128 ] 129 130 ldflags += [ "--coverage" ] 131 } 132} 133 134host_sources = [ 135 "$camera_path/../v4l2/src/camera_device/camera_device_vdi_impl.cpp", 136 "$camera_path/../v4l2/src/camera_dump.cpp", 137 "$camera_path/../v4l2/src/camera_host/camera_host_config.cpp", 138 "$camera_path/../v4l2/src/camera_host/camera_host_vdi_impl.cpp", 139 "$camera_path/../v4l2/src/camera_host/hcs_deal.cpp", 140 "$camera_path/../v4l2/src/offline_stream_operator/offline_stream.cpp", 141 "$camera_path/../v4l2/src/offline_stream_operator/offline_stream_operator_vdi_impl.cpp", 142 "$camera_path/../v4l2/src/stream_operator/capture_message.cpp", 143 "$camera_path/../v4l2/src/stream_operator/capture_request.cpp", 144 "$camera_path/../v4l2/src/stream_operator/stream_base.cpp", 145 "$camera_path/../v4l2/src/stream_operator/stream_operator_vdi_impl.cpp", 146 "$camera_path/../v4l2/src/stream_operator/stream_post_view.cpp", 147 "$camera_path/../v4l2/src/stream_operator/stream_preview.cpp", 148 "$camera_path/../v4l2/src/stream_operator/stream_statistics.cpp", 149 "$camera_path/../v4l2/src/stream_operator/stream_still_capture.cpp", 150 "$camera_path/../v4l2/src/stream_operator/stream_tunnel/standard/stream_tunnel.cpp", 151 "$camera_path/../v4l2/src/stream_operator/stream_video.cpp", 152] 153 154host_includes = [ 155 "$camera_path/../../interfaces/include", 156 "$camera_path/include", 157 "$camera_path/metadata_manager/include", 158 "$camera_path/utils/watchdog", 159 "$camera_path/../interfaces", 160 "$camera_path/../v4l2/include", 161 "$camera_path/../v4l2/include/camera_host", 162 "$camera_path/../v4l2/include/camera_device", 163 "$camera_path/../v4l2/include/stream_operator", 164 "$camera_path/../v4l2/src/stream_operator/stream_tunnel/standard", 165 "$camera_path/../v4l2/include/offline_stream_operator", 166 "$camera_path/device_manager/include/", 167 "$camera_path/buffer_manager/src/buffer_adapter/standard", 168 "$camera_path/utils/event", 169 "$camera_path/../../display/interfaces/include", 170 171 #producer 172 "$camera_path/pipeline_core/utils", 173 "$camera_path/pipeline_core/include", 174 "$camera_path/pipeline_core/host_stream/include", 175 "$camera_path/pipeline_core/nodes/include", 176 "$camera_path/pipeline_core/nodes/src/node_base", 177 "$camera_path/pipeline_core/nodes/src/dummy_node", 178 "$camera_path/pipeline_core/pipeline_impl/include", 179 "$camera_path/pipeline_core/pipeline_impl/src", 180 "$camera_path/pipeline_core/pipeline_impl/src/builder", 181 "$camera_path/pipeline_core/pipeline_impl/src/dispatcher", 182 "$camera_path/pipeline_core/pipeline_impl/src/parser", 183 "$camera_path/pipeline_core/pipeline_impl/src/strategy", 184 "$camera_path/pipeline_core/ipp/include", 185] 186 187ohos_shared_library("camera_host_vdi_impl_1.0") { 188 sources = host_sources 189 include_dirs = host_includes 190 191 deps = [ 192 "$board_camera_path/device_manager:camera_device_manager", 193 "$board_camera_path/metadata_manager:camera_metadata_manager", 194 "$board_camera_path/pipeline_core:camera_pipeline_core", 195 "$camera_path/buffer_manager:camera_buffer_manager", 196 "$camera_path/utils:camera_utils", 197 ] 198 199 defines = [] 200 if (enable_camera_device_utest) { 201 defines += [ "CAMERA_DEVICE_UTEST" ] 202 } 203 if (use_hitrace) { 204 defines += [ "HITRACE_LOG_ENABLED" ] 205 } 206 207 if (is_standard_system) { 208 external_deps = [ 209 "c_utils:utils", 210 "graphic_surface:surface", 211 "hdf_core:libhdf_host", 212 "hdf_core:libhdf_ipc_adapter", 213 "hdf_core:libhdf_utils", 214 "hdf_core:libhdi", 215 "hilog:libhilog", 216 "ipc:ipc_single", 217 ] 218 if (use_hitrace) { 219 external_deps += [ "hitrace:libhitracechain" ] 220 } 221 } else { 222 external_deps = [ "hilog:libhilog" ] 223 } 224 external_deps += [ 225 "drivers_interface_camera:libbuffer_producer_sequenceable_1.0", 226 "drivers_interface_camera:metadata", 227 "drivers_interface_display:libdisplay_composer_proxy_1.0", 228 "hitrace:hitrace_meter", 229 "ipc:ipc_single", 230 ] 231 public_configs = [ ":camhdi_impl_config" ] 232 install_images = [ chipset_base_dir ] 233 subsystem_name = "kaihong_products" 234 part_name = "kaihong_products" 235} 236 237ohos_static_library("camera_host_vdi_impl_1.0_static") { 238 sources = host_sources 239 include_dirs = host_includes 240 241 deps = [ 242 "$board_camera_path/device_manager:camera_device_manager", 243 "$board_camera_path/metadata_manager:camera_metadata_manager", 244 "$board_camera_path/pipeline_core:camera_pipeline_core", 245 "$camera_path/buffer_manager:camera_buffer_manager", 246 "$camera_path/utils:camera_utils", 247 ] 248 249 defines = [] 250 if (enable_camera_device_utest) { 251 defines += [ "CAMERA_DEVICE_UTEST" ] 252 } 253 if (use_hitrace) { 254 defines += [ "HITRACE_LOG_ENABLED" ] 255 } 256 257 if (is_standard_system) { 258 external_deps = [ 259 "c_utils:utils", 260 "graphic_surface:surface", 261 "hdf_core:libhdf_host", 262 "hdf_core:libhdf_ipc_adapter", 263 "hdf_core:libhdf_utils", 264 "hdf_core:libhdi", 265 "hilog:libhilog", 266 "hitrace:hitrace_meter", 267 "ipc:ipc_single", 268 ] 269 if (use_hitrace) { 270 external_deps += [ "hitrace:libhitracechain" ] 271 } 272 } else { 273 external_deps = [ "hilog:libhilog" ] 274 } 275 external_deps += [ 276 "drivers_interface_camera:libbuffer_producer_sequenceable_1.0", 277 "drivers_interface_camera:metadata", 278 "drivers_interface_display:libdisplay_composer_proxy_1.0", 279 "hitrace:hitrace_meter", 280 "ipc:ipc_single", 281 ] 282 283 public_configs = [ ":camhdi_impl_config" ] 284 subsystem_name = "kaihong_products" 285 part_name = "kaihong_products" 286} 287 288group("camera_board_test") { 289 if (target_cpu == "x86_64") { 290 deps = [] 291 } else { 292 testonly = true 293 deps = [ 294 #device manager test 295 "device_manager/test/unittest:camera_board_device_manager_unittest", 296 297 #driver adapter v4l2 test 298 "driver_adapter/test/v4l2_test:v4l2_main", 299 300 #driver adapter v4l2 unittest 301 "driver_adapter/test/unittest:v4l2_adapter_unittest", 302 303 # pipeline core test 304 "pipeline_core/test/unittest:camera_pipeline_core_test_ut", 305 306 # demo test 307 "demo:ohos_camera_demo", 308 ] 309 } 310} 311