// 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/*"]