// Copyright (C) 2019 The Android Open Source Project
//
// 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
//
//      http://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.

java_library {
    name: "icing-java-proto-lite",
    proto: {
        // If you change the proto type, also update jarjar-rules.txt to match
        // the corresponding proto lib's package path.
        type: "lite",
        include_dirs: ["external/protobuf/src"],
        canonical_path_from_root: false,
    },
    srcs: ["icing/proto/*.proto"],
    jarjar_rules: "jarjar-rules.txt",
    sdk_version: "core_current",
}

cc_defaults {
    name: "libicing_defaults",

    // For debug / treemap purposes.
    //strip: {
    //    keep_symbols: true,
    //},

    cflags: [
        "-Wall",
        "-Werror",
        "-Wextra",
        "-Wno-deprecated-declarations",
        "-Wno-ignored-qualifiers",
        "-Wno-missing-field-initializers",
        "-Wno-sign-compare",
        "-Wno-tautological-constant-out-of-range-compare",
        "-Wno-undefined-var-template",
        "-Wno-unused-function",
        "-Wno-unused-parameter",
        "-Wno-extern-c-compat",

        "-funsigned-char",
        "-fvisibility=hidden",

        "-Bsymbolic",
    ],
}

cc_library_static {
    name: "icing-c-proto",
    defaults: ["libicing_defaults"],
    proto: {
        type: "lite",
        // Find protos relative from where they're specified (useful for external protos)
        canonical_path_from_root: false,
        // Need to be able to see the .pb.h files that are generated
        export_proto_headers: true,
    },
    srcs: ["icing/**/*.proto"],
}

cc_library_shared {
    name: "libicing_jni",
    defaults: ["libicing_defaults"],
    srcs: [
        "icing/**/*.cc",
    ],
    exclude_srcs: [
        // Tests
        "icing/**/*_test.cc",
        // Benchmarks
        "icing/**/*_benchmark.cc",
        // Test-only related files (i.e. utils)
        "icing/testing/**/*",
        // Tools for manual debugging/investigating
        "icing/tools/**/*",
    ],
    static_libs: [
        "icing-c-proto",
        "libutf",
    ],
    shared_libs: [
        "libandroidicu",
        "liblog",
        // TODO(b/147509515): We only need the full version for GzipStream. If we can remove
        // that dependency, then we can just use libprotobuf-cpp-lite
        "libprotobuf-cpp-full",
        "libz",
    ],

    version_script: "icing/jni.lds",
}

// TODO(cassiewang): Add build rules and a TEST_MAPPING for cc_tests
