// Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
//
// Use of this source code is governed by a BSD-style license
// that can be found in the LICENSE file in the root of the source
// tree. An additional intellectual property rights grant can be found
// in the file PATENTS.  All contributing project authors may
// be found in the AUTHORS file in the root of the source tree.

// These defines will apply to all source files
// Think again before changing it
cc_defaults {
    name: "webrtc_flags",
    vendor: true,

    cflags: [
        "-DWEBRTC_POSIX",
        "-DWEBRTC_LINUX",
        "-DWEBRTC_THREAD_RR",
        "-DWEBRTC_CLOCK_TYPE_REALTIME",
        "-DWEBRTC_ANDROID",

        // The following macros are used by modules,
        // we might need to re-organize them
        // "-DWEBRTC_ANDROID_OPENSLES", // [module audio_device]
        // "-DNETEQ_VOICEENGINE_CODECS", // [module audio_coding neteq]
        // "-DWEBRTC_MODULE_UTILITY_VIDEO", // [module media_file] [module utility]

        "-Wall",
        "-Werror",
        // The following warnings are disabled in most webrtc modules,
        // until we upgrade to newer cleaner upstream webrtc.
        "-Wno-missing-braces",
        "-Wno-missing-field-initializers",
        "-Wno-unused-parameter",
    ],

    header_libs: ["libwebrtc_headers"],

    arch: {
        arm: {
            instruction_set: "arm",

            cflags: [
                "-DWEBRTC_ARCH_ARM",
                // "-DWEBRTC_DETECT_ARM_NEON", // only used in a build configuration without Neon
                // TODO(kma): figure out if the above define could be moved to NDK build only.

                // The following upstram ARM_NEON and ARMV7A defintions do not work on AOSP yet.
                // They should be fixed in the next merge from upstream.
                //# TODO(kma): test if the code under next two macros works with generic GCC compilers
                // "-DWEBRTC_ARCH_ARM_NEON",
                // "-flax-vector-conversions",
                // "-DWEBRTC_ARCH_ARM_V7A",
            ],
        },
    },

    // The following clang-tidy checks are disabled in most webrtc modules,
    // until we upgrade to newer cleaner upstream webrtc.
    tidy_checks: [
        "-cert-*",
        "-clang-analyzer-*",
        "-hicpp-*",
        "-llvm-*",
        "-google-build-namespaces",
        "-google-default-arguments",
        "-google-explicit-constructor",
        "-google-runtime-int",
        "-google-runtime-operator",
        "-misc-incorrect-roundings",
        "-misc-macro-parentheses",
        "-misc-misplaced-widening-cast",
        "-misc-noexcept-move-constructor",
        "-misc-suspicious-string-compare",
        "-misc-unused-parameters",
        "-misc-unused-using-decls",
        "-performance-type-promotion-in-math-fn",
        "-performance-unnecessary-copy-initialization",
        "-performance-unnecessary-value-param",
    ],
}

cc_library_shared {
    name: "libwebrtc_audio_preprocessing",
    vendor: true,

    whole_static_libs: [
        "libwebrtc_aec",
        "libwebrtc_aecm",
        "libwebrtc_agc",
        "libwebrtc_apm",
        "libwebrtc_apm_utility",
        "libwebrtc_apvad",
        "libwebrtc_base",
        "libwebrtc_beamformer",
        "libwebrtc_common",
        "libwebrtc_intell",
        "libwebrtc_isac",
        "libwebrtc_resampler",
        "libwebrtc_ns",
        "libwebrtc_spl",
        "libwebrtc_system_wrappers",
        "libwebrtc_transient",
        "libwebrtc_vad",
    ],

    shared_libs: [
        "liblog",
        "libcutils",
        "libdl",
        "libprotobuf-cpp-lite",
    ],

    arch: {
        arm: {
            instruction_set: "arm",
        },
    },
}

cc_library_shared {
    name: "libwebrtc_audio_coding",
    vendor: true,

    whole_static_libs: [
        "libwebrtc_base",
        "libwebrtc_common",
        "libwebrtc_intell",
        "libwebrtc_isac",
        "libwebrtc_isacfix",
        "libwebrtc_resampler",
        "libwebrtc_spl",
        "libwebrtc_system_wrappers",
    ],

    shared_libs: [
        "libprotobuf-cpp-lite",
        "liblog",
        "libcutils",
        "libdl",
    ],

    arch: {
        arm: {
            instruction_set: "arm",
        },
    },
}

cc_library_headers {
    name: "libwebrtc_headers",
    vendor: true,
    export_include_dirs: ["."],
}

subdirs = ["webrtc/*"]
