// Copyright (C) 2016 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.

// =========
// incidentd
// =========

cc_binary {
    name: "incidentd",

    srcs: [
        "src/**/*.cpp",
        "src/**/*.proto",
        ":incidentd_section_list",
    ],

    cflags: [
        "-Wall",
        "-Werror",
        "-Wno-missing-field-initializers",
        "-Wno-unused-variable",
        "-Wunused-parameter",
        "-Wno-tautological-undefined-compare",

        // Allow implicit fallthrough in IncidentService.cpp:85 until it is fixed.
        "-Wno-error=implicit-fallthrough",

        // optimize for size (protobuf glop can get big)
        "-Os",
        //"-g",
        //"-O0",
    ],

    local_include_dirs: ["src"],
    generated_headers: ["gen-platform-proto-constants"],

    proto: {
        type: "lite",
    },

    shared_libs: [
        "libbase",
        "libbinder",
        "libdebuggerd_client",
        "libdumputils",
        "libincident",
        "liblog",
        "libprotoutil",
        "libservices",
        "libutils",
        "libprotobuf-cpp-lite",
    ],

    static_libs: [
        "libincidentcompanion",
        "libplatformprotos",
    ],

    product_variables: {
        debuggable: {
            cflags: ["-DALLOW_RESTRICTED_SECTIONS=1"],
        },
    },


    init_rc: ["incidentd.rc"],
}

// ==============
// incidentd_test
// ==============

cc_test {
    name: "incidentd_test",
    test_suites: ["device-tests"],

    cflags: [
        "-Werror",
        "-Wall",
        "-Wno-unused-variable",
        "-Wunused-parameter",
        "-g",
        "-Wno-tautological-undefined-compare",

        // Allow implicit fallthrough in IncidentService.cpp:85 until it is fixed.
        "-Wno-error=implicit-fallthrough",
    ],

    local_include_dirs: ["src"],
    generated_headers: ["gen-platform-proto-constants"],

    srcs: [
        "tests/**/*.cpp",
        "tests/**/*.proto",
        "src/FdBuffer.cpp",
        "src/Privacy.cpp",
        "src/PrivacyFilter.cpp",
        "src/Reporter.cpp",
        "src/Section.cpp",
        "src/Throttler.cpp",
        "src/WorkDirectory.cpp",
        "src/incidentd_util.cpp",
        "src/proto_util.cpp",
        "src/report_directory.cpp",
        "src/**/*.proto",
    ],

    data: ["testdata/**/*"],

    static_libs: [
        "libgmock",
        "libincidentcompanion",
        "libplatformprotos-test",
    ],
    shared_libs: [
        "libbase",
        "libbinder",
        "libdebuggerd_client",
        "libdumputils",
        "libincident",
        "liblog",
        "libprotobuf-cpp-full",
        "libprotoutil",
        "libservices",
        "libutils",
    ],

    target: {
        android: {
            proto: {
                type: "full",
            },
        },
    },
}

genrule {
    name: "incidentd_section_list",
    tools: ["incident-section-gen"],
    out: ["section_list.cpp"],
    cmd: "$(location incident-section-gen) incidentd > $(out)",
}
