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

// -----------------------------------------------------------------------------
// Benchmarks.
// -----------------------------------------------------------------------------

// Build benchmarks for the device. Run with:
//   adb shell liblog-benchmarks
cc_benchmark {
    name: "liblog-benchmarks",
    cflags: [
        "-Wall",
        "-Wextra",
        "-Werror",
        "-fno-builtin",
    ],
    shared_libs: [
        "libm",
        "libbase",
        "libcutils",
    ],
    static_libs: ["liblog"],
    srcs: ["liblog_benchmark.cpp"],
}

// -----------------------------------------------------------------------------
// Unit tests.
// -----------------------------------------------------------------------------

cc_defaults {
    name: "liblog-tests-defaults",

    cflags: [
        "-fstack-protector-all",
        "-g",
        "-Wall",
        "-Wextra",
        "-Werror",
        "-fno-builtin",
    ],
    srcs: [
        "libc_test.cpp",
        "liblog_default_tag.cpp",
        "liblog_global_state.cpp",
        "liblog_test.cpp",
        "log_id_test.cpp",
        "log_radio_test.cpp",
        "log_read_test.cpp",
        "log_system_test.cpp",
        "log_time_test.cpp",
        "log_wrap_test.cpp",
        "logprint_test.cpp",
        "rwlock_test.cpp",
    ],
    shared_libs: [
        "libcutils",
        "libbase",
    ],
    static_libs: ["liblog"],
    isolated: true,
}

// Build tests for the device (with .so). Run with:
//   adb shell /data/nativetest/liblog-unit-tests/liblog-unit-tests
cc_test {
    name: "liblog-unit-tests",
    defaults: ["liblog-tests-defaults"],
}

cc_test {
    name: "CtsLiblogTestCases",
    defaults: ["liblog-tests-defaults"],
    multilib: {
        lib32: {
            suffix: "32",
        },
        lib64: {
            suffix: "64",
        },
    },

    cflags: ["-DNO_PSTORE"],
    test_suites: [
        "cts",
        "vts",
    ],
}

cc_test_host {
    name: "liblog-host-test",
    static_libs: ["liblog"],
    shared_libs: ["libbase"],
    srcs: [
        "liblog_host_test.cpp",
        "liblog_default_tag.cpp",
        "liblog_global_state.cpp",
        "rwlock_test.cpp",
    ],
    isolated: true,
}
