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

//
// libhidl-gen
//
cc_library_shared {
    name: "libhidl-gen",
    host_supported: true,
    cflags: [
        "-O0",
        "-g",
    ],
    srcs: [
        "Annotation.cpp",
        "ArrayType.cpp",
        "CompoundType.cpp",
        "ConstantExpression.cpp",
        "DeathRecipientType.cpp",
        "EnumType.cpp",
        "FQName.cpp",
        "HandleType.cpp",
        "Interface.cpp",
        "MemoryType.cpp",
        "Method.cpp",
        "NamedType.cpp",
        "PointerType.cpp",
        "PredefinedType.cpp",
        "RefType.cpp",
        "ScalarType.cpp",
        "Scope.cpp",
        "StringType.cpp",
        "Type.cpp",
        "TypeDef.cpp",
        "VectorType.cpp",
    ],
    shared_libs: [
        "libbase",
        "liblog",
        "libhidl-gen-utils",
    ],
}

//
// libhidl-gen-ast
//

cc_library_host_shared {
    name: "libhidl-gen-ast",
    cflags: [
        "-O0",
        "-g",
    ],
    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-utils",
    ],
}

//
// hidl-gen
//
cc_binary_host {
    name: "hidl-gen",
    srcs: ["main.cpp"],

    shared_libs: [
        "libbase",
        "liblog",
        "libhidl-gen",
        "libhidl-gen-ast",
        "libhidl-gen-utils",
    ],

    cflags: [
        "-O0",
        "-g",
    ],
}
