// Copyright 2022 The Pigweed Authors
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy of
// the License at
//
//     https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.

package {
    default_applicable_licenses: ["external_pigweed_license"],
}

cc_library_static {
    name: "pw_protobuf",
    vendor_available: true,
    export_include_dirs: ["public"],
    header_libs: [
        "fuchsia_sdk_lib_fit",
        "fuchsia_sdk_lib_stdcompat",
        "pw_assert_headers",
        "pw_assert_log_headers",
        "pw_function_headers",
        "pw_log_headers",
        "pw_log_null_headers",
        "pw_polyfill_headers",
        "pw_preprocessor_headers",
        "pw_result_headers",
        "pw_span_headers",
    ],
    export_header_lib_headers: [
        "pw_assert_headers",
        "pw_assert_log_headers",
        "pw_function_headers",
        "pw_log_headers",
        "pw_log_null_headers",
        "pw_preprocessor_headers",
        "pw_result_headers",
        "pw_span_headers",
    ],
    host_supported: true,
    srcs: [
        "decoder.cc",
        "encoder.cc",
        "find.cc",
        "map_utils.cc",
        "message.cc",
        "stream_decoder.cc",
    ],
    static_libs: [
        "pw_bytes",
        "pw_containers",
        "pw_status",
        "pw_stream",
        "pw_string",
        "pw_varint",
    ],
    export_static_lib_headers: [
        "pw_bytes",
        "pw_containers",
        "pw_status",
        "pw_stream",
        "pw_varint",
    ],
}

cc_library_headers {
    name: "pw_protobuf_pwpb_headers",
    vendor_available: true,
    host_supported: true,
    generated_headers: [
        "google_protobuf_descriptor_pwpb_h",
        "pw_protobuf_protos_common_pwpb_h",
    ],
    export_generated_headers: [
        "google_protobuf_descriptor_pwpb_h",
        "pw_protobuf_protos_common_pwpb_h",
    ],
}

// Copies the proto files to a prefix directory to add the prefix to the
// compiled proto. The prefix is taken from the directory name of the first
// item listen in out.
genrule_defaults {
    name: "pw_protobuf_add_prefix_to_proto",
    cmd: "out_files=($(out)); prefix=$$(dirname $${out_files[0]}); " +
         "mkdir -p $${prefix}; cp -t $${prefix} $(in);"
}

genrule {
    name: "pw_protobuf_common_proto_with_prefix",
    defaults: ["pw_protobuf_add_prefix_to_proto"],
    srcs: [
        "pw_protobuf_protos/common.proto",
    ],
    out: [
        "pw_protobuf/pw_protobuf_protos/common.proto",
    ],
}

genrule {
    name: "pw_protobuf_protos_common_pwpb_h",
    srcs: [":pw_protobuf_common_proto_with_prefix",],
    cmd: "python3 $(location pw_protobuf_compiler_py) " +
         "--proto-path=external/pigweed/pw_protobuf/ " +
         "--proto-path=external/protobuf/src/ " +
         "--out-dir=$$(dirname $(location pw_protobuf_protos/common.pwpb.h)) " +
         "--plugin-path=$(location pw_protobuf_plugin_py) " +
         "--compile-dir=$$(dirname $(in)) " +
         "--sources $(in) " +
         "--language pwpb " +
         "--no-experimental-proto3-optional " +
         "--protoc=$(location aprotoc) ",
    out: [
        "pw_protobuf_protos/common.pwpb.h",
    ],
    tools: [
        "aprotoc",
        "pw_protobuf_plugin_py",
        "pw_protobuf_compiler_py",
    ],
}

// Generate the google/protobuf/descriptor.pwpb.h which is commonly imported.
genrule {
    name: "google_protobuf_descriptor_pwpb_h",
    // The libprotobuf-internal-descriptor-proto filegroup is unavailable so
    // instead filter for just the descriptor.proto.
    srcs: [":libprotobuf-internal-protos",],
    cmd: "in_files=($(in)); compile_dir=$$(dirname $${in_files[0]}); " +
         "proto_files=(); " +
         "for f in \"$${in_files[@]}\"; do " +
         "if [[ \"$${f##*descriptor.}\" == \"proto\" ]]; then " +
         "proto_files+=(\"$${f}\"); fi; done; " +
         "python3 $(location pw_protobuf_compiler_py) " +
         "--proto-path=external/protobuf/src/ " +
         "--out-dir=$$(dirname $(location google/protobuf/descriptor.pwpb.h)) " +
         "--plugin-path=$(location pw_protobuf_plugin_py) " +
         "--compile-dir=$${compile_dir} " +
         "--sources $${proto_files} " +
         "--language pwpb " +
         "--no-experimental-proto3-optional " +
         "--protoc=$(location aprotoc) ",
    out: [
        "google/protobuf/descriptor.pwpb.h",
    ],
    tools: [
        "aprotoc",
        "pw_protobuf_plugin_py",
        "pw_protobuf_compiler_py",
    ],
}

genrule {
    name: "pw_protobuf_codegen_protos_py",
    srcs: ["pw_protobuf_codegen_protos/codegen_options.proto"],
    cmd: "$(location aprotoc) " +
         "-I$$(dirname $(in)) " +
         "--python_out=$(genDir) " +
         "$(in)",
    out: [
        "codegen_options_pb2.py",
    ],
    tools: [
        "aprotoc",
    ],
}

python_library_host {
    name: "pw_protobuf_codegen_protos_py_lib",
    srcs: [
        ":pw_protobuf_codegen_protos_py",
    ],
    pkg_path: "pw_protobuf_codegen_protos",
}

genrule {
    name: "pw_protobuf_protos_py",
    srcs: [
        "pw_protobuf_protos/common.proto",
        "pw_protobuf_protos/field_options.proto",
        "pw_protobuf_protos/status.proto",
        ":libprotobuf-internal-protos",
    ],
    cmd: "$(location aprotoc) " +
         "-I$$(dirname $(location pw_protobuf_protos/common.proto)) " +
         "-Iexternal/protobuf/src/ " +
         "--python_out=$(genDir) " +
         "$(in)",
    out: [
        "common_pb2.py",
        "field_options_pb2.py",
        "status_pb2.py",
    ],
    tools: [
        "aprotoc",
    ],
}

python_library_host {
    name: "pw_protobuf_protos_py_lib",
    srcs: [
        ":pw_protobuf_protos_py",
    ],
    pkg_path: "pw_protobuf_protos",
}
