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

cc_defaults {
    name: "libcutils_test_default",
    srcs: ["sockets_test.cpp"],

    target: {
        android: {
            srcs: [
                "AshmemTest.cpp",
                "MemsetTest.cpp",
                "PropertiesTest.cpp",
                "sched_policy_test.cpp",
                "trace-dev_test.cpp",
                "test_str_parms.cpp",
                "android_get_control_socket_test.cpp",
                "android_get_control_file_test.cpp",
                "multiuser_test.cpp"
            ],
        },

        not_windows: {
            srcs: [
                "test_str_parms.cpp",
            ],
        },
    },

    multilib: {
        lib32: {
            suffix: "32",
        },
        lib64: {
            suffix: "64",
        },
    },

    cflags: [
        "-Wall",
        "-Wextra",
        "-Werror",
    ],
}

test_libraries = [
    "libcutils",
    "liblog",
    "libbase",
]

cc_test {
    name: "libcutils_test",
    test_suites: ["device-tests"],
    defaults: ["libcutils_test_default"],
    host_supported: true,
    shared_libs: test_libraries,
}

cc_test {
    name: "libcutils_test_static",
    test_suites: ["device-tests"],
    defaults: ["libcutils_test_default"],
    static_libs: ["libc"] + test_libraries,
    stl: "libc++_static",

    target: {
        android: {
            static_executable: true,
        },
        windows: {
            host_ldlibs: ["-lws2_32"],

            enabled: true,
        },
    },
}
