//
// Copyright 2020 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_library {
    name : "libobj_reader",
    vendor : true,
    srcs: [
        "MtlReader.cpp",
        "ObjReader.cpp",
    ],
    shared_libs : [
        "libbase",
    ]
}

cc_test{
    name : "obj_reader_tests",
    test_suites : ["device-tests"],
    vendor : true,
    srcs : ["ObjReaderTests.cpp"],
    shared_libs : [
        "libobj_reader",
        "libcutils",
        "libbase",
        "libutils",
    ],
    required: [
        "VolvoXC40_low.obj",
        "VolvoXC40_low.mtl",
    ],
}

cc_library{
    name : "libanimation_module",
    vendor : true,
    srcs : [
        "AnimationModule.cpp",
    ],
    shared_libs : [
        "android.hardware.automotive.vehicle@2.0",
        "libbase",
        "libhidlbase",
        "libutils",
    ],
}

cc_test{
    name : "animation_module_tests",
    test_suites : ["device-tests"],
    vendor : true,
    srcs : ["AnimationModuleTests.cpp"],
    shared_libs : [
        "android.hardware.automotive.vehicle@2.0",
        "libanimation_module",
        "libcutils",
        "libbase",
        "libhidlbase",
        "libhardware",
        "libutils",
    ],
}

cc_library{
    name : "libvhal_handler",
    vendor : true,
    srcs : [
        "VhalHandler.cpp",
    ],
    shared_libs : [
        "android.hardware.automotive.vehicle@2.0",
        "android.hidl.memory@1.0",
        "libcutils",
        "libbase",
        "libbinder",
        "libhidlbase",
        "libhardware",
        "libhidlmemory",
        "libui",
        "libutils",
    ],
}

cc_test{
    name : "vhal_handler_tests",
    test_suites : ["device-tests"],
    vendor : true,
    srcs : ["VhalHandlerTests.cpp"],
    shared_libs : [
        "android.hardware.automotive.vehicle@2.0",
        "libvhal_handler",
        "libcutils",
        "libbase",
        "libbinder",
        "libhidlbase",
        "libhardware",
        "libhidlmemory",
        "libui",
        "libutils",
    ],
}

cc_binary{
    name : "android.automotive.sv.service@1.0-impl",
    vendor : true,
    srcs : [
        "CoreLibSetupHelper.cpp",
        "SurroundViewService.cpp",
        "SurroundView2dSession.cpp",
        "SurroundView3dSession.cpp",
        "VhalHandler.cpp",
        "service.cpp",
    ],
    init_rc : ["android.automotive.sv.service@1.0-impl.rc"],
    shared_libs : [
        "android.hardware.automotive.evs@1.1",
        "android.hardware.automotive.sv@1.0",
        "android.hardware.automotive.vehicle@2.0",
        "android.hidl.memory@1.0",
        "libbase",
        "libbinder",
        "libcamera_metadata",
        "libcore_lib_shared",
        "libcutils",
        "libhardware",
        "libhidlbase",
        "libhidlmemory",
        "libui",
        "libutils",
    ],
    required : [
        "cam0.png",
        "cam1.png",
        "cam2.png",
        "cam3.png",
    ],
    // Disable builds except for arm64 and emulator devices
    enabled : false,
    arch : {
        arm64 : {
            enabled : true,
        },
        x86 : {
            enabled : true,
        },
        x86_64 : {
            enabled : true,
        },
    },
    vintf_fragments : [
        "manifest_android.hardware.automotive.sv@1.0.xml",
    ],
}

cc_prebuilt_library_shared{
    name : "libcore_lib_shared",
    proprietary : true,
    arch : {
        arm64 : {srcs : ["lib/arm64/libcore_lib_shared.so"]},
        x86 : {srcs : ["lib/x86/libcore_lib_shared.so"]},
        x86_64 : {srcs : ["lib/x86-64/libcore_lib_shared.so"]},
    },
    shared_libs : [
        "libutils",
        "libcutils",
        "libbase",
        "libEGL",
        "libGLESv2",
        "libGLESv3",
        "libc",
        "libm",
        "libdl",
        "libz",
        "liblog",
    ],
}

prebuilt_etc{
    name : "cam0.png",
    src : "test_data/0.png",
    sub_dir : "automotive/sv",
}

prebuilt_etc{
    name : "cam1.png",
    src : "test_data/1.png",
    sub_dir : "automotive/sv",
}

prebuilt_etc{
    name : "cam2.png",
    src : "test_data/2.png",
    sub_dir : "automotive/sv",
}

prebuilt_etc {
name:
    "cam3.png", src : "test_data/3.png", sub_dir : "automotive/sv",
}

prebuilt_etc {
    name: "cube.obj",
    src: "test_data/cube.obj",
    sub_dir: "automotive/sv",
}

prebuilt_etc {
    name: "cube.mtl",
    src: "test_data/cube.mtl",
    sub_dir: "automotive/sv",
}
