// 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",

        // 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",

        // 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)",
}
