// 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_static {
    name: "libhidl-gen",
    defaults: ["hidl-gen-defaults"],
    srcs: [
        "Annotation.cpp",
        "ArrayType.cpp",
        "CompoundType.cpp",
        "ConstantExpression.cpp",
        "DeathRecipientType.cpp",
        "DocComment.cpp",
        "EnumType.cpp",
        "FmqType.cpp",
        "HandleType.cpp",
        "HidlTypeAssertion.cpp",
        "Interface.cpp",
        "Location.cpp",
        "MemoryType.cpp",
        "Method.cpp",
        "NamedType.cpp",
        "PointerType.cpp",
        "ScalarType.cpp",
        "Scope.cpp",
        "StringType.cpp",
        "Type.cpp",
        "TypeDef.cpp",
        "VectorType.cpp",
    ],
    header_libs: ["libhwbinder_headers"],  // for constants
    shared_libs: [
        "libbase",
        "liblog",
    ],
    static_libs: [
        "libcrypto",
        "libhidl-gen-hash",
        "libhidl-gen-host-utils",
        "libhidl-gen-utils",
    ],
    export_shared_lib_headers: ["libbase"],
    export_static_lib_headers: [
        "libhidl-gen-hash",
        "libhidl-gen-host-utils",
        "libhidl-gen-utils",
    ],
    export_include_dirs: ["."], // for tests
}

cc_library_host_static {
    name: "libhidl-gen-ast",
    defaults: ["hidl-gen-defaults"],
    srcs: [
        "AST.cpp",
        "Coordinator.cpp",
        "generateCpp.cpp",
        "generateCppAdapter.cpp",
        "generateCppImpl.cpp",
        "generateDependencies.cpp",
        "generateFormattedHidl.cpp",
        "generateInheritanceHierarchy.cpp",
        "generateJava.cpp",
        "generateJavaImpl.cpp",
        "generateVts.cpp",
        "hidl-gen_l.ll",
        "hidl-gen_y.yy",
    ],
    shared_libs: [
        "libbase",
        "libjsoncpp",
    ],
    static_libs: [
        "libcrypto",
        "libhidl-gen",
        "libhidl-gen-hash",
        "libhidl-gen-host-utils",
        "libhidl-gen-utils",
    ],
    export_shared_lib_headers: ["libbase"],
    export_static_lib_headers: [
        "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"],
    static_libs: [
        "libbase",
        "libcrypto",
        "libhidl-gen",
        "libhidl-gen-ast",
        "libhidl-gen-hash",
        "libhidl-gen-host-utils",
        "libhidl-gen-utils",
        "libjsoncpp",
        "liblog",
    ],
}
