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") 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 part_name = "device_unionpi_tiger" 31} 32 33hc_gen_c("generate_source") { 34 sources = [ 35 "$product_config_path/hdf_config/uhdf/camera/pipeline_core/config.hcs", 36 "$product_config_path/hdf_config/uhdf/camera/pipeline_core/params.hcs", 37 ] 38} 39 40action("copy_source") { 41 script = "/usr/bin/env" 42 outputs = [ "$target_out_dir/tmp.c" ] # no use, just for gn complains 43 args = [ 44 "cp", 45 "-f", 46 ] 47 args += rebase_path(get_target_outputs(":generate_source")) 48 args += [ rebase_path( 49 "$camera_path/pipeline_core/pipeline_impl/src/strategy/config/") ] 50 deps = [ ":generate_source" ] 51} 52 53ohos_prebuilt_etc("config.c") { 54 deps = [ ":copy_source" ] 55 source = 56 "$camera_path/pipeline_core/pipeline_impl/src/strategy/config/config.c" 57 exec_script( 58 "/usr/bin/env", 59 [ 60 "touch", 61 rebase_path( 62 "$camera_path/pipeline_core/pipeline_impl/src/strategy/config/config.c"), 63 ]) 64} 65 66ohos_prebuilt_etc("params.c") { 67 deps = [ ":copy_source" ] 68 source = 69 "$camera_path/pipeline_core/pipeline_impl/src/strategy/config/params.c" 70 exec_script( 71 "/usr/bin/env", 72 [ 73 "touch", 74 rebase_path( 75 "$camera_path/pipeline_core/pipeline_impl/src/strategy/config/params.c"), 76 ]) 77} 78 79hc_gen("build_ipp_algo_config") { 80 sources = [ rebase_path( 81 "$product_config_path/hdf_config/uhdf/camera/pipeline_core/ipp_algo_config.hcs") ] 82} 83 84ohos_prebuilt_etc("ipp_algo_config.hcb") { 85 deps = [ ":build_ipp_algo_config" ] 86 hcs_outputs = get_target_outputs(":build_ipp_algo_config") 87 source = hcs_outputs[0] 88 relative_install_dir = "hdfconfig" 89 install_images = [ chipset_base_dir ] 90 part_name = "device_unionpi_tiger" 91} 92 93config("example_config") { 94 visibility = [ ":*" ] 95 96 cflags = [ 97 "-Wno-error", 98 "-Wno-unused-function", 99 "-Wno-unused-parameter", 100 ] 101} 102 103group("chipset_build") { 104 public_deps = [ 105 ":camera_host_config.hcb", 106 ":config.c", 107 ":ipp_algo_config.hcb", 108 ":params.c", 109 "$board_camera_path/driver_adapter/test/v4l2_test:v4l2_main", 110 "$board_camera_path/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_surface: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 "drivers_interface_display:libdisplay_composer_proxy_1.0", 227 "hitrace:hitrace_meter", 228 "ipc:ipc_single", 229 ] 230 public_configs = [ ":camhdi_impl_config" ] 231 install_images = [ chipset_base_dir ] 232 part_name = "device_unionpi_tiger" 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_surface: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 "drivers_interface_display:libdisplay_composer_proxy_1.0", 277 "hitrace:hitrace_meter", 278 "ipc:ipc_single", 279 ] 280 281 public_configs = [ ":camhdi_impl_config" ] 282 part_name = "device_unionpi_tiger" 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