// Copyright (C) 2016 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_defaults {
    name: "gmock_flags",

    local_include_dirs: ["include"],
    export_include_dirs: ["include"],

    cflags: ["-Wno-missing-field-initializers", "-Wno-unused-parameter"],
}

cc_defaults {
    name: "gmock_ndk",
    sdk_version: "9",
    stl: "gnustl_static",
    cppflags: ["-std=c++11"],
}

cc_defaults {
    name: "gmock_defaults",
    host_supported: true,
    sanitize: {
        never: true,
    },
    target: {
        windows: {
            enabled: true,
        },
    },
}

cc_library_static {
    name: "libgmock_ndk",
    defaults: ["gmock_ndk", "gmock_flags"],
    srcs: ["src/gmock-all.cc"],
    static_libs: ["libgtest_ndk_gnustl"],
}

cc_library_static {
    name: "libgmock_main_ndk",
    defaults: ["gmock_ndk", "gmock_flags"],
    srcs: ["src/gmock_main.cc"],
    static_libs: ["libgtest_ndk_gnustl"],
}

cc_library_static {
    name: "libgmock",
    defaults: ["gmock_defaults", "gmock_flags"],
    srcs: ["src/gmock-all.cc"],
    rtti: true,
    static_libs: ["libgtest"],
    vendor_available: true,
}

cc_library_static {
    name: "libgmock_main",
    defaults: ["gmock_defaults", "gmock_flags"],
    srcs: ["src/gmock_main.cc"],
    static_libs: ["libgtest"],
    vendor_available: true,
}

// Deprecated: use libgmock instead
cc_library_host_static {
    name: "libgmock_host",
    defaults: ["gmock_defaults", "gmock_flags"],
    whole_static_libs: ["libgmock"],
}

cc_library_host_static {
    name: "libgmock_main_host",
    defaults: ["gmock_defaults", "gmock_flags"],
    whole_static_libs: ["libgmock_main"],
}

// Tests are in the Android.mk. Run with external/googletest/run_tests.py.
