| package { |
| default_visibility: [ |
| ":__subpackages__", |
| "//vendor:__subpackages__", |
| ], |
| } |
| |
| cc_library_headers { |
| name: "libcamera_headers", |
| vendor: true, |
| export_include_dirs: [ |
| "include", |
| "src/libcamera", |
| ], |
| } |
| |
| genrule { |
| name: "libcamera_controls_gen_h", |
| srcs: [ |
| "src/libcamera/control_ids_core.yaml", |
| "src/libcamera/control_ids_draft.yaml", |
| "src/libcamera/control_ranges.yaml", |
| "include/libcamera/control_ids.h.in", |
| ], |
| tools: ["libcamera_controls_script_host"], |
| cmd: "$(location libcamera_controls_script_host)" + |
| " -o $(genDir)/include/libcamera/control_ids.h" + |
| " --mode controls" + |
| " -t $(location include/libcamera/control_ids.h.in)" + |
| " -r $(location src/libcamera/control_ranges.yaml)" + |
| " $(location src/libcamera/control_ids_core.yaml)" + |
| " $(location src/libcamera/control_ids_draft.yaml)", |
| out: [ |
| "include/libcamera/control_ids.h", |
| ], |
| export_include_dirs: [ |
| ".", |
| "include", |
| ], |
| } |
| |
| genrule { |
| name: "libcamera_controls_gen_src", |
| srcs: [ |
| "src/libcamera/control_ids_core.yaml", |
| "src/libcamera/control_ids_draft.yaml", |
| "src/libcamera/control_ranges.yaml", |
| "src/libcamera/control_ids.cpp.in", |
| ], |
| tools: [":libcamera_controls_script_host"], |
| cmd: "$(location :libcamera_controls_script_host)" + |
| " -o $(genDir)/src/libcamera/control_ids.cpp" + |
| " --mode controls" + |
| " -t $(location src/libcamera/control_ids.cpp.in)" + |
| " -r $(location src/libcamera/control_ranges.yaml)" + |
| " $(location src/libcamera/control_ids_core.yaml)" + |
| " $(location src/libcamera/control_ids_draft.yaml)", |
| out: [ |
| "src/libcamera/control_ids.cpp", |
| ], |
| } |
| |
| genrule { |
| name: "libcamera_properties_gen_h", |
| srcs: [ |
| "src/libcamera/property_ids_core.yaml", |
| "src/libcamera/property_ids_draft.yaml", |
| "src/libcamera/control_ranges.yaml", |
| "include/libcamera/control_ids.h.in", |
| ], |
| tools: [":libcamera_controls_script_host"], |
| cmd: "$(location :libcamera_controls_script_host)" + |
| " -o $(genDir)/include/libcamera/property_ids.h" + |
| " --mode properties" + |
| " -t $(location include/libcamera/control_ids.h.in)" + |
| " -r $(location src/libcamera/control_ranges.yaml)" + |
| " $(location src/libcamera/property_ids_core.yaml)" + |
| " $(location src/libcamera/property_ids_draft.yaml)", |
| out: [ |
| "include/libcamera/property_ids.h", |
| ], |
| export_include_dirs: [ |
| ".", |
| "include", |
| ], |
| } |
| |
| genrule { |
| name: "libcamera_properties_gen_src", |
| srcs: [ |
| "src/libcamera/property_ids_core.yaml", |
| "src/libcamera/property_ids_draft.yaml", |
| "src/libcamera/control_ranges.yaml", |
| "src/libcamera/control_ids.cpp.in", |
| ], |
| tools: [":libcamera_controls_script_host"], |
| cmd: "$(location :libcamera_controls_script_host)" + |
| " -o $(genDir)/src/libcamera/property_ids.cpp" + |
| " --mode properties" + |
| " -t $(location src/libcamera/control_ids.cpp.in)" + |
| " -r $(location src/libcamera/control_ranges.yaml)" + |
| " $(location src/libcamera/property_ids_core.yaml)" + |
| " $(location src/libcamera/property_ids_draft.yaml)", |
| out: [ |
| "src/libcamera/property_ids.cpp", |
| ], |
| } |
| |
| genrule { |
| name: "libcamera_mojom_core_ipa_module", |
| srcs: [ |
| "include/libcamera/ipa/core.mojom", |
| ], |
| tools: ["libcamera_ipc_parser_host"], |
| cmd: "$(location libcamera_ipc_parser_host)" + |
| " --output-root $(genDir)" + |
| " --input-root ." + |
| " --mojoms $(location include/libcamera/ipa/core.mojom)", |
| out: [ |
| "external/libcamera/include/libcamera/ipa/core.mojom-module", |
| ], |
| export_include_dirs: [ |
| ".", |
| "include", |
| ], |
| } |
| |
| genrule { |
| name: "libcamera_mojom_core_ipa_interface_h", |
| srcs: [ |
| ":libcamera_mojom_core_ipa_module", |
| "//external/libcamera/utils/codegen/ipc:libcamera_mojom_templates", |
| ], |
| tools: ["libcamera_ipc_generate_host"], |
| cmd: "$(location libcamera_ipc_generate_host)" + |
| " generate -g libcamera" + |
| " --bytecode_path $(location //external/libcamera/utils/codegen/ipc:libcamera_mojom_templates)" + |
| " --libcamera_generate_core_header" + |
| " --libcamera_output_path=$(genDir)/include/libcamera/ipa/core_ipa_interface.h" + |
| " $(location :libcamera_mojom_core_ipa_module)", |
| out: [ |
| "include/libcamera/ipa/core_ipa_interface.h", |
| ], |
| export_include_dirs: [ |
| ".", |
| "include", |
| ], |
| } |
| |
| genrule { |
| name: "libcamera_mojom_core_ipa_serializer_h", |
| srcs: [ |
| ":libcamera_mojom_core_ipa_module", |
| "//external/libcamera/utils/codegen/ipc:libcamera_mojom_templates", |
| ], |
| tools: ["libcamera_ipc_generate_host"], |
| cmd: "$(location libcamera_ipc_generate_host)" + |
| " generate -g libcamera" + |
| " --bytecode_path $(location //external/libcamera/utils/codegen/ipc:libcamera_mojom_templates)" + |
| " --libcamera_generate_core_serializer" + |
| " --libcamera_output_path=$(genDir)/include/libcamera/ipa/core_ipa_serializer.h" + |
| " $(location :libcamera_mojom_core_ipa_module)", |
| out: [ |
| "include/libcamera/ipa/core_ipa_serializer.h", |
| ], |
| export_include_dirs: [ |
| ".", |
| "include", |
| ], |
| } |
| |
| genrule { |
| name: "libcamera_format_gen_h", |
| srcs: [ |
| "src/libcamera/formats.yaml", |
| "include/libcamera/formats.h.in", |
| "include/linux/drm_fourcc.h", |
| ], |
| tools: ["libcamera_format_gen_host"], |
| cmd: "$(location libcamera_format_gen_host)" + |
| " -o $(out)" + |
| " $(in)", |
| out: [ |
| "include/libcamera/formats.h", |
| ], |
| export_include_dirs: ["include"], |
| } |
| |
| genrule { |
| name: "libcamera_tracepoint_gen_h", |
| srcs: [ |
| "include/libcamera/internal/tracepoints.h.in", |
| "include/libcamera/internal/tracepoints/pipeline.perfetto", |
| "include/libcamera/internal/tracepoints/request.perfetto", |
| ], |
| tools: ["libcamera_tracepoint_gen_host"], |
| cmd: "$(location libcamera_tracepoint_gen_host)" + |
| " $(out) $(in)", |
| out: [ |
| "include/libcamera/internal/tracepoints.h", |
| ], |
| export_include_dirs: ["include"], |
| } |
| |
| cc_defaults { |
| name: "libcamera_src_base_defaults", |
| vendor: true, |
| header_libs: [ |
| "libcamera_headers", |
| ], |
| export_header_lib_headers: [ |
| "libcamera_headers", |
| ], |
| |
| cflags: [ |
| "-DLIBCAMERA_BASE_PRIVATE", |
| "-DHAVE_LOCALE_T=1", |
| "-DHAVE_ANDROID_OS", |
| ], |
| rtti: true, |
| |
| shared_libs: [ |
| "liblog", |
| ], |
| srcs: [ |
| "src/libcamera/base/backtrace.cpp", |
| "src/libcamera/base/class.cpp", |
| "src/libcamera/base/bound_method.cpp", |
| "src/libcamera/base/event_dispatcher.cpp", |
| "src/libcamera/base/event_dispatcher_poll.cpp", |
| "src/libcamera/base/event_notifier.cpp", |
| "src/libcamera/base/file.cpp", |
| "src/libcamera/base/flags.cpp", |
| "src/libcamera/base/log.cpp", |
| "src/libcamera/base/message.cpp", |
| "src/libcamera/base/mutex.cpp", |
| "src/libcamera/base/object.cpp", |
| "src/libcamera/base/semaphore.cpp", |
| "src/libcamera/base/shared_fd.cpp", |
| "src/libcamera/base/signal.cpp", |
| "src/libcamera/base/thread.cpp", |
| "src/libcamera/base/timer.cpp", |
| "src/libcamera/base/unique_fd.cpp", |
| "src/libcamera/base/utils.cpp", |
| ], |
| } |
| |
| cc_defaults { |
| name: "libcamera_src_defaults", |
| relative_install_path: "hw", |
| vendor: true, |
| generated_headers: [ |
| "libcamera_controls_gen_h", |
| "libcamera_properties_gen_h", |
| "libcamera_mojom_core_ipa_interface_h", |
| "libcamera_mojom_core_ipa_serializer_h", |
| "libcamera_format_gen_h", |
| "libcamera_tracepoint_gen_h", |
| ], |
| header_libs: [ |
| "libandroid_sensor_headers", |
| "libcamera_headers", |
| ], |
| export_header_lib_headers: [ |
| "libcamera_headers", |
| ], |
| |
| cflags: [ |
| "-Wno-unused-but-set-variable", |
| "-Wno-user-defined-warnings", |
| ], |
| cppflags: [ |
| // TODO: check if we load IPA without IPC |
| "-DIPA_PROXY_DIR=\"\"", |
| // TODO: make sure we don't use configurationFile for IPA |
| "-DIPA_CONFIG_DIR=\"\"", |
| // TODO: check relative_install_path of the upcoming ipa impl. |
| "-DIPA_MODULE_DIR=\"/vendor/lib64/libcamera/ipa\"", |
| // TODO: check how pipeline handlers' configuration files are used. |
| "-DLIBCAMERA_DATA_DIR=\"/vendor/etc/camera/libcamera\"", |
| ], |
| rtti: true, |
| shared_libs: [ |
| "android.frameworks.sensorservice-V1-ndk", |
| "libbinder_ndk", |
| "libsensorndkbridge", |
| ], |
| defaults: [ |
| "libcamera_src_base_defaults", |
| ], |
| srcs: [ |
| ":libcamera_controls_gen_src", |
| ":libcamera_properties_gen_src", |
| "src/libcamera/al_gyro_sensor.cpp", |
| "src/libcamera/bayer_format.cpp", |
| "src/libcamera/byte_stream_buffer.cpp", |
| "src/libcamera/camera.cpp", |
| "src/libcamera/camera_controls.cpp", |
| "src/libcamera/camera_lens.cpp", |
| "src/libcamera/camera_manager.cpp", |
| "src/libcamera/camera_sensor.cpp", |
| "src/libcamera/camera_sensor_properties.cpp", |
| "src/libcamera/color_space.cpp", |
| "src/libcamera/controls.cpp", |
| "src/libcamera/control_serializer.cpp", |
| "src/libcamera/control_validator.cpp", |
| "src/libcamera/converter.cpp", |
| "src/libcamera/debug_controls.cpp", |
| "src/libcamera/delayed_controls.cpp", |
| "src/libcamera/device_enumerator.cpp", |
| "src/libcamera/device_enumerator_sysfs.cpp", |
| "src/libcamera/dma_heaps.cpp", |
| "src/libcamera/fence.cpp", |
| "src/libcamera/formats.cpp", |
| "src/libcamera/framebuffer.cpp", |
| "src/libcamera/framebuffer_allocator.cpp", |
| "src/libcamera/geometry.cpp", |
| "src/libcamera/info_frame.cpp", |
| "src/libcamera/ipa_controls.cpp", |
| "src/libcamera/ipa_data_serializer.cpp", |
| "src/libcamera/ipa_interface.cpp", |
| "src/libcamera/ipa_manager.cpp", |
| "src/libcamera/ipa_module.cpp", |
| "src/libcamera/ipa_proxy.cpp", |
| "src/libcamera/ipc_pipe.cpp", |
| "src/libcamera/ipc_pipe_unixsocket.cpp", |
| "src/libcamera/ipc_unixsocket.cpp", |
| "src/libcamera/mapped_framebuffer.cpp", |
| "src/libcamera/media_device.cpp", |
| "src/libcamera/media_object.cpp", |
| "src/libcamera/pipeline_handler.cpp", |
| "src/libcamera/pixel_format.cpp", |
| "src/libcamera/process.cpp", |
| "src/libcamera/pub_key.cpp", |
| "src/libcamera/request.cpp", |
| "src/libcamera/source_paths.cpp", |
| "src/libcamera/stream.cpp", |
| "src/libcamera/sysfs.cpp", |
| "src/libcamera/task_scheduler.cpp", |
| "src/libcamera/transform.cpp", |
| "src/libcamera/v4l2_device.cpp", |
| "src/libcamera/v4l2_pixelformat.cpp", |
| "src/libcamera/v4l2_subdevice.cpp", |
| "src/libcamera/v4l2_videodevice.cpp", |
| "src/libcamera/version.cpp", |
| "src/libcamera/yaml_parser.cpp", |
| ], |
| } |
| |
| cc_defaults { |
| name: "libcamera_android_src_defaults", |
| relative_install_path: "hw", |
| vendor: true, |
| header_libs: [ |
| "libcamera_headers", |
| ], |
| export_header_lib_headers: [ |
| "libcamera_headers", |
| ], |
| |
| cflags: [ |
| "-Wno-unused-but-set-variable", |
| ], |
| cppflags: [ |
| // TODO: check how camera sysconf configuration file is used |
| "-DLIBCAMERA_SYSCONF_DIR=\"/vendor/etc/camera/libcamera\"", |
| "-DPIPELINE_PROXY_DIR=\"/vendor/lib64/libcamera/pipeline\"", |
| ], |
| rtti: true, |
| static_libs: [ |
| "libyaml", |
| "libyuv_static", |
| ], |
| shared_libs: [ |
| "libcamera_metadata", |
| "libcutils", |
| "libdrm", |
| "libexif", |
| "libgbm", |
| "libhardware", |
| "libjpeg", |
| ], |
| defaults: [ |
| "libcamera_src_base_defaults", |
| "libcamera_src_defaults", |
| ], |
| srcs: [ |
| "src/android/camera3_hal.cpp", |
| "src/android/camera_capabilities.cpp", |
| "src/android/camera_device.cpp", |
| "src/android/camera_hal_config.cpp", |
| "src/android/camera_hal_manager.cpp", |
| "src/android/camera_metadata.cpp", |
| "src/android/camera_ops.cpp", |
| "src/android/camera_request.cpp", |
| "src/android/camera_stream.cpp", |
| "src/android/hal_framebuffer.cpp", |
| "src/android/yuv/post_processor_yuv.cpp", |
| "src/android/vendor_tag.cpp", |
| "src/android/jpeg/encoder_libjpeg.cpp", |
| "src/android/jpeg/exif.cpp", |
| "src/android/jpeg/post_processor_jpeg.cpp", |
| "src/android/jpeg/thumbnailer.cpp", |
| "src/android/mm/BufferAdapter.cpp", |
| "src/android/mm/cros_camera_buffer.cpp", |
| "src/android/mm/cros_frame_buffer_allocator.cpp", |
| "src/android/mm/allocator.cpp", |
| "src/android/mm/camera_buffer_manager_impl.cpp", |
| "src/android/mm/minigbm_allocator.cpp", |
| ], |
| } |
| |
| cc_defaults { |
| name: "libcamera_virtual_src_defaults", |
| relative_install_path: "hw", |
| vendor: true, |
| header_libs: [ |
| "libcamera_headers", |
| ], |
| export_header_lib_headers: [ |
| "libcamera_headers", |
| ], |
| |
| cflags: [ |
| "-Wno-unused-but-set-variable", |
| "-Dstrverscmp=strcmp", |
| ], |
| rtti: true, |
| static_libs: [ |
| "libyuv_static", |
| ], |
| shared_libs: [ |
| "libjpeg", |
| ], |
| defaults: [ |
| "libcamera_src_base_defaults", |
| "libcamera_src_defaults", |
| ], |
| srcs: [ |
| "src/libcamera/pipeline/virtual/config_parser.cpp", |
| "src/libcamera/pipeline/virtual/image_frame_generator.cpp", |
| "src/libcamera/pipeline/virtual/test_pattern_generator.cpp", |
| "src/libcamera/pipeline/virtual/virtual.cpp", |
| ], |
| } |
| |
| cc_library_shared { |
| name: "camera.libcamera_hal_virtual", |
| defaults: [ |
| "libcamera_src_defaults", |
| "libcamera_android_src_defaults", |
| "libcamera_virtual_src_defaults", |
| ], |
| } |
| |
| cc_library_shared { |
| name: "camera.libcamera_hal_base", |
| defaults: [ |
| "libcamera_src_defaults", |
| "libcamera_android_src_defaults", |
| "libipu7_ipa_proxy", |
| ], |
| } |
| |
| genrule { |
| name: "libcamera_mojom_ipu7_ipa_module", |
| srcs: [ |
| "include/libcamera/ipa/core.mojom", |
| "include/libcamera/ipa/ipu7.mojom", |
| ], |
| tools: ["libcamera_ipc_parser_host"], |
| cmd: "$(location libcamera_ipc_parser_host)" + |
| " --output-root $(genDir)" + |
| " --input-root ./external/libcamera" + |
| " --mojoms $(location include/libcamera/ipa/core.mojom) $(location include/libcamera/ipa/ipu7.mojom)", |
| out: [ |
| "include/libcamera/ipa/ipu7.mojom-module", |
| ], |
| export_include_dirs: [".", "include"], |
| } |
| |
| genrule { |
| name: "libcamera_mojom_ipu7_ipa_interface_h", |
| srcs: [ |
| ":libcamera_mojom_ipu7_ipa_module", |
| "//external/libcamera/utils/codegen/ipc:libcamera_mojom_templates", |
| ], |
| tools: ["libcamera_ipc_generate_host"], |
| cmd: "$(location libcamera_ipc_generate_host)" + |
| " generate -g libcamera" + |
| " --bytecode_path $(location //external/libcamera/utils/codegen/ipc:libcamera_mojom_templates)" + |
| " --libcamera_generate_header" + |
| " --libcamera_output_path=$(out)" + |
| " $(location :libcamera_mojom_ipu7_ipa_module)", |
| out: [ |
| "include/libcamera/ipa/ipu7_ipa_interface.h", |
| ], |
| export_include_dirs: [".", "include"], |
| } |
| |
| genrule { |
| name: "libcamera_mojom_ipu7_ipa_serializer_h", |
| srcs: [ |
| ":libcamera_mojom_ipu7_ipa_module", |
| "//external/libcamera/utils/codegen/ipc:libcamera_mojom_templates", |
| ], |
| tools: ["libcamera_ipc_generate_host"], |
| cmd: "$(location libcamera_ipc_generate_host)" + |
| " generate -g libcamera" + |
| " --bytecode_path $(location //external/libcamera/utils/codegen/ipc:libcamera_mojom_templates)" + |
| " --libcamera_generate_serializer" + |
| " --libcamera_output_path=$(out)" + |
| " $(location :libcamera_mojom_ipu7_ipa_module)", |
| out: [ |
| "include/libcamera/ipa/ipu7_ipa_serializer.h", |
| ], |
| export_include_dirs: [".", "include"], |
| } |
| |
| genrule { |
| name: "libcamera_mojom_ipu7_ipa_proxy_h", |
| srcs: [ |
| ":libcamera_mojom_ipu7_ipa_module", |
| "//external/libcamera/utils/codegen/ipc:libcamera_mojom_templates", |
| ], |
| tools: ["libcamera_ipc_generate_host"], |
| cmd: "$(location libcamera_ipc_generate_host)" + |
| " generate -g libcamera" + |
| " --bytecode_path $(location //external/libcamera/utils/codegen/ipc:libcamera_mojom_templates)" + |
| " --libcamera_generate_proxy_h" + |
| " --libcamera_output_path=$(out)" + |
| " $(location :libcamera_mojom_ipu7_ipa_module)", |
| out: [ |
| "include/libcamera/ipa/ipu7_ipa_proxy.h", |
| ], |
| export_include_dirs: [".", "include"], |
| } |
| |
| genrule { |
| name: "libcamera_mojom_ipu7_ipa_proxy_cpp", |
| srcs: [ |
| ":libcamera_mojom_ipu7_ipa_module", |
| "//external/libcamera/utils/codegen/ipc:libcamera_mojom_templates", |
| ], |
| tools: ["libcamera_ipc_generate_host"], |
| cmd: "$(location libcamera_ipc_generate_host)" + |
| " generate -g libcamera" + |
| " --bytecode_path $(location //external/libcamera/utils/codegen/ipc:libcamera_mojom_templates)" + |
| " --libcamera_generate_proxy_cpp" + |
| " --libcamera_output_path=$(out)" + |
| " $(location :libcamera_mojom_ipu7_ipa_module)", |
| out: [ |
| "include/libcamera/ipa/ipu7_ipa_proxy.cpp", |
| ], |
| export_include_dirs: [".", "include"], |
| } |
| |
| genrule { |
| name: "libcamera_mojom_ipu7_ipa_proxy_worker_cpp", |
| srcs: [ |
| ":libcamera_mojom_ipu7_ipa_module", |
| "//external/libcamera/utils/codegen/ipc:libcamera_mojom_templates", |
| ], |
| tools: ["libcamera_ipc_generate_host"], |
| cmd: "$(location libcamera_ipc_generate_host)" + |
| " generate -g libcamera" + |
| " --bytecode_path $(location //external/libcamera/utils/codegen/ipc:libcamera_mojom_templates)" + |
| " --libcamera_generate_proxy_worker" + |
| " --libcamera_output_path=$(out)" + |
| " $(location :libcamera_mojom_ipu7_ipa_module)", |
| out: [ |
| "include/libcamera/ipa/ipu7_ipa_proxy_worker.cpp", |
| ], |
| export_include_dirs: [".", "include"], |
| } |
| |
| cc_defaults { |
| name: "libipu7_ipa_proxy", |
| generated_headers: [ |
| "libcamera_mojom_ipu7_ipa_interface_h", |
| "libcamera_mojom_ipu7_ipa_serializer_h", |
| "libcamera_mojom_ipu7_ipa_proxy_h", |
| ], |
| srcs: [ |
| ":libcamera_mojom_ipu7_ipa_proxy_cpp", |
| ":libcamera_mojom_ipu7_ipa_proxy_worker_cpp", |
| ], |
| } |
| |