blob: 9ff66b08cfca97c7515bcd2e23b514097a9e78d8 [file] [log] [blame]
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",
],
}