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