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

subdirs = [
    "c2hal",
    "test",
    "utils",
]

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

// This configuration is inherited by all hidl-gen-generated modules.
cc_defaults {
    name: "hidl-module-defaults",
    cflags: [
        "-Wall",
        "-Werror",
    ],
    product_variables: {
        debuggable: {
            cflags: ["-D__ANDROID_DEBUGGABLE__"]
        },
        treble: {
            cflags: ["-D__ANDROID_TREBLE__"]
        },
    },
}

//
// libhidl-gen-hash
//
cc_library {
    name: "libhidl-gen-hash",
    host_supported: true,
    defaults: ["hidl-gen-defaults"],
    srcs: ["Hash.cpp"],
    local_include_dirs: ["include_hash/hidl-hash"],
    export_include_dirs: ["include_hash"],
    shared_libs: [
        "libbase",
        "libcrypto",
        "libssl",
    ],
}

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

//
// libhidl-gen-ast
//

cc_library_host_shared {
    name: "libhidl-gen-ast",
    defaults: ["hidl-gen-defaults"],
    srcs: [
        "Coordinator.cpp",
        "generateCpp.cpp",
        "generateCppImpl.cpp",
        "generateJava.cpp",
        "generateVts.cpp",
        "hidl-gen_y.yy",
        "hidl-gen_l.ll",
        "AST.cpp",
    ],
    shared_libs: [
        "libbase",
        "liblog",
        "libhidl-gen",
        "libhidl-gen-hash",
        "libhidl-gen-utils",
    ],
}

//
// hidl-gen
//
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-utils",
    ],
}
