// Copyright (C) 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.

package {
    // See: http://go/android-license-faq
    // A large-scale-change added 'default_applicable_licenses' to import
    // all of the 'license_kinds' from "frameworks_av_license"
    // to get the below license kinds:
    //   SPDX-license-identifier-Apache-2.0
    default_applicable_licenses: ["frameworks_av_license"],
}

tidy_errors = [
    // https://clang.llvm.org/extra/clang-tidy/checks/list.html
    // For many categories, the checks are too many to specify individually.
    // Feel free to disable as needed - as warnings are generally ignored,
    // we treat warnings as errors.
    "android-*",
    "bugprone-*",
    "cert-*",
    "clang-analyzer-security*",
    "google-*",
    "misc-*",
    //"modernize-*",  // explicitly list the modernize as they can be subjective.
    "modernize-avoid-bind",
    //"modernize-avoid-c-arrays", // std::array<> can be verbose
    "modernize-concat-nested-namespaces",
    //"modernize-deprecated-headers", // C headers still ok even if there is C++ equivalent.
    "modernize-deprecated-ios-base-aliases",
    "modernize-loop-convert",
    "modernize-make-shared",
    "modernize-make-unique",
    "modernize-pass-by-value",
    "modernize-raw-string-literal",
    "modernize-redundant-void-arg",
    "modernize-replace-auto-ptr",
    "modernize-replace-random-shuffle",
    "modernize-return-braced-init-list",
    "modernize-shrink-to-fit",
    "modernize-unary-static-assert",
    "modernize-use-auto",
    "modernize-use-bool-literals",
    "modernize-use-default-member-init",
    "modernize-use-emplace",
    "modernize-use-equals-default",
    "modernize-use-equals-delete",
    "modernize-use-nodiscard",
    "modernize-use-noexcept",
    "modernize-use-nullptr",
    "modernize-use-override",
    // "modernize-use-trailing-return-type", // not necessarily more readable
    "modernize-use-transparent-functors",
    "modernize-use-uncaught-exceptions",
    "modernize-use-using",
    "performance-*",

    // Remove some pedantic stylistic requirements.
    "-android-cloexec-dup", // found in AAudioServiceEndpointMMAP.cpp
    "-bugprone-narrowing-conversions", // found in several interface from size_t to int32_t

    "-google-readability-casting", // C++ casts not always necessary and may be verbose
    "-google-readability-todo", // do not require TODO(info)
    "-google-build-using-namespace", // Reenable and fix later.
    "-google-global-names-in-headers", // found in several files

    "-misc-non-private-member-variables-in-classes", // found in aidl generated files

]

cc_defaults {
    name: "libaaudioservice_dependencies",

    shared_libs: [
        "libaaudio_internal",
        "libaudioclient",
        "libaudioutils",
        "libmedia_helper",
        "libmediametrics",
        "libmediautils",
        "libbase",
        "libbinder",
        "libcutils",
        "liblog",
        "libutils",
        "aaudio-aidl-cpp",
        "framework-permission-aidl-cpp",
        "libaudioclient_aidl_conversion",
        "packagemanager_aidl-cpp",
        "com.android.media.aaudio-aconfig-cc",
    ],

    static_libs: [
        "libaudioflinger",
    ]
}

cc_library_static {

    name: "libaaudioservice",

    defaults: [
        "libaaudioservice_dependencies",
        "latest_android_media_audio_common_types_cpp_shared",
    ],

    srcs: [
        "AAudioClientTracker.cpp",
        "AAudioCommandQueue.cpp",
        "AAudioEndpointManager.cpp",
        "AAudioMixer.cpp",
        "AAudioService.cpp",
        "AAudioServiceEndpoint.cpp",
        "AAudioServiceEndpointCapture.cpp",
        "AAudioServiceEndpointMMAP.cpp",
        "AAudioServiceEndpointPlay.cpp",
        "AAudioServiceEndpointShared.cpp",
        "AAudioServiceStreamBase.cpp",
        "AAudioServiceStreamMMAP.cpp",
        "AAudioServiceStreamShared.cpp",
        "AAudioStreamTracker.cpp",
        "AAudioThread.cpp",
        "SharedMemoryProxy.cpp",
        "SharedMemoryWrapper.cpp",
        "SharedRingBuffer.cpp",
        "TimestampScheduler.cpp",
    ],

    cflags: [
        "-Wthread-safety",
        "-Wno-unused-parameter",
        "-Wall",
        "-Werror",
    ],

    export_shared_lib_headers: [
        "libaaudio_internal",
        "framework-permission-aidl-cpp",
    ],

    header_libs: [
        "libaudiohal_headers",
    ],

    include_dirs: [
        "frameworks/av/media/libnbaio/include_mono",
        "frameworks/av/media/libnbaio/include",
    ],

    tidy: true,
    tidy_checks: tidy_errors,
    tidy_checks_as_errors: tidy_errors,
    tidy_flags: [
        "-format-style=file",
    ]
}
