1# Copyright (c) 2021 - 2023 Huawei Device 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") 18import("camera.gni") 19 20hc_gen("build_camera_host_config") { 21 sources = [ rebase_path( 22 "$camera_product_name_path/hdf_config/uhdf/camera/hdi_impl/camera_host_config.hcs") ] 23} 24 25ohos_prebuilt_etc("camera_host_config.hcb") { 26 deps = [ ":build_camera_host_config" ] 27 hcs_outputs = get_target_outputs(":build_camera_host_config") 28 source = hcs_outputs[0] 29 relative_install_dir = "hdfconfig" 30 subsystem_name = "device_yangfan" 31 part_name = "device_yangfan" 32} 33 34hc_gen_c("generate_source") { 35 sources = [ 36 "$camera_product_name_path/hdf_config/uhdf/camera/pipeline_core/config.hcs", 37 "$camera_product_name_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 "$camera_product_name_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 subsystem_name = "device_yangfan" 91 part_name = "device_yangfan" 92} 93 94config("example_config") { 95 visibility = [ ":*" ] 96 97 cflags = [ 98 "-Wno-error", 99 "-Wno-unused-function", 100 "-Wno-unused-parameter", 101 ] 102} 103 104group("chipset_build") { 105 public_deps = [ 106 ":camera_host_config.hcb", 107 ":config.c", 108 ":ipp_algo_config.hcb", 109 ":params.c", 110 "$camera_device_name_path/camera/pipeline_core:camera_ipp_algo_example", 111 ] 112} 113 114config("camhdi_impl_config") { 115 visibility = [ ":*" ] 116 cflags = [ 117 "-DGST_DISABLE_DEPRECATED", 118 "-DHAVE_CONFIG_H", 119 ] 120 121 ldflags = [ "-Wl" ] 122 123 if (enable_camera_device_utest) { 124 cflags += [ 125 "-fprofile-arcs", 126 "-ftest-coverage", 127 ] 128 129 ldflags += [ "--coverage" ] 130 } 131} 132 133host_sources = [ 134 "$camera_path/../v4l2/src/camera_device/camera_device_vdi_impl.cpp", 135 "$camera_path/../v4l2/src/camera_dump.cpp", 136 "$camera_path/../v4l2/src/camera_host/camera_host_config.cpp", 137 "$camera_path/../v4l2/src/camera_host/camera_host_vdi_impl.cpp", 138 "$camera_path/../v4l2/src/camera_host/hcs_deal.cpp", 139 "$camera_path/../v4l2/src/offline_stream_operator/offline_stream.cpp", 140 "$camera_path/../v4l2/src/offline_stream_operator/offline_stream_operator_vdi_impl.cpp", 141 "$camera_path/../v4l2/src/stream_operator/capture_message.cpp", 142 "$camera_path/../v4l2/src/stream_operator/capture_request.cpp", 143 "$camera_path/../v4l2/src/stream_operator/stream_base.cpp", 144 "$camera_path/../v4l2/src/stream_operator/stream_operator_vdi_impl.cpp", 145 "$camera_path/../v4l2/src/stream_operator/stream_post_view.cpp", 146 "$camera_path/../v4l2/src/stream_operator/stream_preview.cpp", 147 "$camera_path/../v4l2/src/stream_operator/stream_statistics.cpp", 148 "$camera_path/../v4l2/src/stream_operator/stream_still_capture.cpp", 149 "$camera_path/../v4l2/src/stream_operator/stream_tunnel/standard/stream_tunnel.cpp", 150 "$camera_path/../v4l2/src/stream_operator/stream_video.cpp", 151] 152 153host_includes = [ 154 "$camera_path/../../interfaces/include", 155 "$camera_path/include", 156 "$camera_path/metadata_manager/include", 157 "$camera_path/utils/watchdog", 158 "$camera_path/../interfaces", 159 "$camera_path/../v4l2/include", 160 "$camera_path/../v4l2/include/camera_host", 161 "$camera_path/../v4l2/include/camera_device", 162 "$camera_path/../v4l2/include/stream_operator", 163 "$camera_path/../v4l2/src/stream_operator/stream_tunnel/standard", 164 "$camera_path/../v4l2/include/offline_stream_operator", 165 "$camera_path/device_manager/include/", 166 "$camera_path/buffer_manager/src/buffer_adapter/standard", 167 "$camera_path/utils/event", 168 "$camera_path/../../display/interfaces/include", 169 170 #producer 171 "$camera_path/pipeline_core/utils", 172 "$camera_path/pipeline_core/include", 173 "$camera_path/pipeline_core/host_stream/include", 174 "$camera_path/pipeline_core/nodes/include", 175 "$camera_path/pipeline_core/nodes/src/node_base", 176 "$camera_path/pipeline_core/nodes/src/dummy_node", 177 "$camera_path/pipeline_core/pipeline_impl/include", 178 "$camera_path/pipeline_core/pipeline_impl/src", 179 "$camera_path/pipeline_core/pipeline_impl/src/builder", 180 "$camera_path/pipeline_core/pipeline_impl/src/dispatcher", 181 "$camera_path/pipeline_core/pipeline_impl/src/parser", 182 "$camera_path/pipeline_core/pipeline_impl/src/strategy", 183 "$camera_path/pipeline_core/ipp/include", 184] 185 186ohos_shared_library("camera_host_vdi_impl_1.0") { 187 sources = host_sources 188 include_dirs = host_includes 189 190 deps = [ 191 "$board_camera_path/device_manager:camera_device_manager", 192 "$board_camera_path/metadata_manager:camera_metadata_manager", 193 "$board_camera_path/pipeline_core:camera_pipeline_core", 194 "$camera_path/buffer_manager:camera_buffer_manager", 195 "$camera_path/utils:camera_utils", 196 ] 197 198 defines = [] 199 if (enable_camera_device_utest) { 200 defines += [ "CAMERA_DEVICE_UTEST" ] 201 } 202 if (use_hitrace) { 203 defines += [ "HITRACE_LOG_ENABLED" ] 204 } 205 206 if (is_standard_system) { 207 external_deps = [ 208 "c_utils:utils", 209 "graphic_chipsetsdk:surface", 210 "hdf_core:libhdf_host", 211 "hdf_core:libhdf_ipc_adapter", 212 "hdf_core:libhdf_utils", 213 "hdf_core:libhdi", 214 "hilog:libhilog", 215 "ipc:ipc_single", 216 ] 217 if (use_hitrace) { 218 external_deps += [ "hitrace:libhitracechain" ] 219 } 220 } else { 221 external_deps = [ "hilog:libhilog" ] 222 } 223 external_deps += [ 224 "drivers_interface_camera:libbuffer_producer_sequenceable_1.0", 225 "drivers_interface_camera:metadata", 226 "hitrace:hitrace_meter", 227 "ipc:ipc_single", 228 ] 229 public_configs = [ ":camhdi_impl_config" ] 230 install_images = [ chipset_base_dir ] 231 subsystem_name = "device_yangfan" 232 part_name = "device_yangfan" 233} 234 235ohos_static_library("camera_host_vdi_impl_1.0_static") { 236 sources = host_sources 237 include_dirs = host_includes 238 239 deps = [ 240 "$board_camera_path/device_manager:camera_device_manager", 241 "$board_camera_path/metadata_manager:camera_metadata_manager", 242 "$board_camera_path/pipeline_core:camera_pipeline_core", 243 "$camera_path/buffer_manager:camera_buffer_manager", 244 "$camera_path/utils:camera_utils", 245 ] 246 247 defines = [] 248 if (enable_camera_device_utest) { 249 defines += [ "CAMERA_DEVICE_UTEST" ] 250 } 251 if (use_hitrace) { 252 defines += [ "HITRACE_LOG_ENABLED" ] 253 } 254 255 if (is_standard_system) { 256 external_deps = [ 257 "c_utils:utils", 258 "graphic_chipsetsdk:surface", 259 "hdf_core:libhdf_host", 260 "hdf_core:libhdf_ipc_adapter", 261 "hdf_core:libhdf_utils", 262 "hdf_core:libhdi", 263 "hilog:libhilog", 264 "hitrace:hitrace_meter", 265 "ipc:ipc_single", 266 ] 267 if (use_hitrace) { 268 external_deps += [ "hitrace:libhitracechain" ] 269 } 270 } else { 271 external_deps = [ "hilog:libhilog" ] 272 } 273 external_deps += [ 274 "drivers_interface_camera:libbuffer_producer_sequenceable_1.0", 275 "drivers_interface_camera:metadata", 276 "hitrace:hitrace_meter", 277 "ipc:ipc_single", 278 ] 279 280 public_configs = [ ":camhdi_impl_config" ] 281 subsystem_name = "device_yangfan" 282 part_name = "device_yangfan" 283} 284 285group("camera_board_test") { 286 if (target_cpu == "x86_64") { 287 deps = [] 288 } else { 289 testonly = true 290 deps = [ 291 #device manager test 292 "device_manager/test/unittest:camera_board_device_manager_unittest", 293 294 #driver adapter v4l2 test 295 "driver_adapter/test/v4l2_test:v4l2_main", 296 297 #driver adapter v4l2 unittest 298 "driver_adapter/test/unittest:v4l2_adapter_unittest", 299 300 # pipeline core test 301 "pipeline_core/test/unittest:camera_pipeline_core_test_ut", 302 303 # demo test 304 "demo:ohos_camera_demo", 305 ] 306 } 307} 308