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

hidl_flags = [
    "-O0",
    "-g",
    "-Wall",
    "-Werror",
]

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

//
// libhidl-gen-hash
//
cc_library_shared {
    name: "libhidl-gen-hash",
    host_supported: true,
    cflags: hidl_flags,
    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",
    cflags: hidl_flags,
    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",
    cflags: hidl_flags,
    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",
    cflags: hidl_flags,
    srcs: ["main.cpp"],
    shared_libs: [
        "libbase",
        "liblog",
        "libhidl-gen",
        "libhidl-gen-ast",
        "libhidl-gen-hash",
        "libhidl-gen-utils",
    ],
}
