//
// Copyright (C) 2018-2019 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 = [
    "SN100x",
]

cc_library_headers {
    name: "libnqnfc_hal_headers",

    export_include_dirs: [
        "extns/impl",
        "halimpl/inc",
        "halimpl/common",
        "halimpl/utils",
    ],
    vendor_available: true,
}

cc_library_headers {
    name: "libese_client_headers",
    export_include_dirs: [
        "inc",
        "jcos_client/inc",
        "ls_client/inc",
    ],
    vendor_available: true,
}

cc_library_shared {

    name: "se_nq_extn_client",
    defaults: ["hidl_defaults"],
    vendor: true,

    srcs: [
        "utils/phNxpConfig.cc",
        "utils/sparse_crc32.cc",
        "src/eSEClientIntf.cc",
        "src/phNxpLog.cc"
    ],
    export_include_dirs: [
     "inc",
     "utils",
     "jcos_client/inc",
     "ls_client/inc",
    ],
    local_include_dirs: [
        "inc",
        "utils",
        "jcos_client/inc",
        "ls_client/inc",
    ],
    shared_libs: [
        "libbase",
        "libcutils",
        "libdl",
        "libhidlbase",
        "liblog",
        "libutils",
        "libchrome",
        "libdl",
        "libhidlbase",
    ],
    sanitize: {
        cfi: true,
        integer_overflow: true,
    },
}

cc_library_shared {

    name: "jcos_nq_client",
    defaults: ["hidl_defaults"],
    vendor: true,

    srcs: [
        "jcos_client/src/JcDnld.cpp",
        "jcos_client/src/JcopOsDownload.cpp",
    ],

    local_include_dirs: [
        "inc",
        "utils",
        "jcos_client/inc",
    ],
    shared_libs: [
        "libbase",
        "libcutils",
        "libdl",
        "libhidlbase",
        "liblog",
        "libutils",
        "libchrome",
        "libdl",
        "libhidlbase",
    ],
    sanitize: {
        cfi: true,
        integer_overflow: true,
    },
}

cc_library_shared {

    name: "ls_nq_client",
    defaults: ["hidl_defaults"],
    vendor: true,

    srcs: [
        "ls_client/src/LsClient.cpp",
        "ls_client/src/LsLib.cpp",
    ],

    local_include_dirs: [
        "inc",
        "utils",
        "ls_client/inc",
    ],
    shared_libs: [
        "libbase",
        "libcutils",
        "libdl",
        "libhidlbase",
        "liblog",
        "libutils",
        "libchrome",
        "libdl",
        "libhidlbase",
        "se_nq_extn_client"
    ],
    sanitize: {
        cfi: true,
        integer_overflow: true,
    },
}

cc_library_shared {
    name: "nfc_nci.nqx.default.hw",
    defaults: ["hidl_defaults"],
    vendor: true,

    srcs: [
        "halimpl/common/*.cc",
        "halimpl/dnld/*.cc",
        "halimpl/hal/*.cc",
        "halimpl/log/*.cc",
        "halimpl/self-test/*.cc",
        "halimpl/src/adaptation/EseAdaptation.cpp",
        "halimpl/tml/*.cc",
        "halimpl/utils/*.cc",
        "halimpl/utils/*.cpp",
        "halimpl/configs/*.cpp",
        "halimpl/mifare/*.cc",
    ],
    shared_libs: [
        "libbase",
        "libcutils",
        "liblog",
        "libhardware",
        "libhardware_legacy",
        "libhidlbase",
        "libutils",
        "android.hardware.nfc@1.0",
        "android.hardware.nfc@1.1",
        "android.hardware.nfc@1.2",
        "vendor.nxp.hardware.nfc@1.0",
        "vendor.nxp.hardware.nfc@1.1",
        "vendor.nxp.hardware.nfc@2.0",
        "android.hardware.secure_element@1.0",
        "vendor.nxp.nxpnfclegacy@1.0",
        "hal_libnfc"
    ],
    local_include_dirs: [
        "halimpl/dnld",
        "halimpl/hal",
        "halimpl/log",
        "halimpl/self-test",
        "halimpl/tml",
        "halimpl/src/include",
        "halimpl/configs",
        "jcos_client/inc",
    ],
    export_include_dirs: [
        "extns/impl/nxpnfc/2.0/",
        "halimpl/inc",
        "halimpl/common",
        "halimpl/utils",
        "halimpl/hal",
        "halimpl/mifare",
        "halimpl/ese-clients/inc",
        "halimpl/configs",
        "halimpl/tml",
    ],
    cflags: [
        "-DBUILDCFG=1",
        "-Wall",
        "-Werror",
        "-Wno-implicit-fallthrough",
        "-DNFC_HAL_TARGET=TRUE",
        "-DNFC_RW_ONLY=TRUE",
        "-DNXP_EXTNS=TRUE",
        "-DNFC_NXP_AID_MAX_SIZE_DYN=TRUE",
        "-DNXP_NFCC_HCE_F=TRUE",
        "-DNFC_NXP_LISTEN_ROUTE_TBL_OPTIMIZATION=TRUE",
        "-DNFC_NXP_HFO_SETTINGS=FALSE",
        "-DANDROID",
        "-DNXP_HW_SELF_TEST"
    ],
}
