// 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.

cc_defaults {
    name: "hidl-gen-defaults",
    cflags: [
        "-Wall",
        "-Werror",
    ],
    target: {
        host: {
            cflags: ["-O0", "-g"],
        }
    }
}

// This configuration is inherited by all hidl-gen-generated modules.
cc_defaults {
    name: "hidl-module-defaults",
    cflags: [
        "-Wall",
        "-Werror",
        "-Wextra-semi",
    ],
    tidy_checks: [
        // _hidl_cb and addOnewayTask are stuck because of the legacy ABI
        "-performance-unnecessary-value-param",
    ],
    product_variables: {
        debuggable: {
            cflags: ["-D__ANDROID_DEBUGGABLE__"]
        },
    },
}

// This configuration is inherited by all hidl-gen-java modules
java_defaults {
    name: "hidl-java-module-defaults",
    // TODO(b/68433855): allow HIDL java to build in the PDK
    product_variables: {
        pdk: {
            enabled: false,
        },
    },
}

cc_library_host_shared {
    name: "libhidl-gen",
    defaults: ["hidl-gen-defaults"],
    srcs: [
        "Annotation.cpp",
        "ArrayType.cpp",
        "CompoundType.cpp",
        "ConstantExpression.cpp",
        "DeathRecipientType.cpp",
        "DocComment.cpp",
        "EnumType.cpp",
        "HandleType.cpp",
        "HidlTypeAssertion.cpp",
        "Interface.cpp",
        "Location.cpp",
        "MemoryType.cpp",
        "Method.cpp",
        "NamedType.cpp",
        "PointerType.cpp",
        "FmqType.cpp",
        "ScalarType.cpp",
        "Scope.cpp",
        "StringType.cpp",
        "Type.cpp",
        "TypeDef.cpp",
        "VectorType.cpp",
    ],
    shared_libs: [
        "libbase",
        "liblog",
        "libhidl-gen-hash",
        "libhidl-gen-host-utils",
        "libhidl-gen-utils",
    ],
    export_shared_lib_headers: [
        "libbase",
        "libhidl-gen-host-utils",
        "libhidl-gen-utils",
    ],
    export_include_dirs: ["."], // for tests
}

cc_library_host_shared {
    name: "libhidl-gen-ast",
    defaults: ["hidl-gen-defaults"],
    srcs: [
        "Coordinator.cpp",
        "generateCpp.cpp",
        "generateCppAdapter.cpp",
        "generateCppImpl.cpp",
        "generateDependencies.cpp",
        "generateJava.cpp",
        "generateJavaImpl.cpp",
        "generateVts.cpp",
        "hidl-gen_y.yy",
        "hidl-gen_l.ll",
        "AST.cpp",
    ],
    shared_libs: [
        "libbase",
        "liblog",
        "libhidl-gen",
        "libhidl-gen-hash",
        "libhidl-gen-host-utils",
        "libhidl-gen-utils",
    ],
    export_shared_lib_headers: [
        "libbase",
        "libhidl-gen-hash",
        "libhidl-gen-utils",
    ],
    export_include_dirs: ["."], // for tests
    yacc: {
        gen_location_hh: true,
        gen_position_hh: true,
    }
}

cc_binary_host {
    name: "hidl-gen",
    defaults: ["hidl-gen-defaults"],
    srcs: ["main.cpp"],
    shared_libs: [
        "libbase",
        "liblog",
        "libhidl-gen",
        "libhidl-gen-ast",
        "libhidl-gen-hash",
        "libhidl-gen-host-utils",
        "libhidl-gen-utils",
    ],
}
