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

libbase_cppflags = [
    "-Wall",
    "-Wextra",
    "-Werror",
]

cc_library_headers {
    name: "libbase_headers",
    vendor_available: true,
    host_supported: true,
    export_include_dirs: ["include"],

    header_libs: ["libutils_headers"],
    export_header_lib_headers: ["libutils_headers"],

    target: {
        linux_bionic: {
            enabled: true,
        },
        windows: {
            enabled: true,
        },
    },
}

cc_library {
    name: "libbase",
    vendor_available: true,
    clang: true,
    host_supported: true,
    srcs: [
        "file.cpp",
        "logging.cpp",
        "parsenetaddress.cpp",
        "quick_exit.cpp",
        "stringprintf.cpp",
        "strings.cpp",
        "test_utils.cpp",
    ],

    header_libs: ["libbase_headers"],
    export_header_lib_headers: ["libbase_headers"],

    cppflags: libbase_cppflags,
    shared_libs: ["liblog"],
    target: {
        android: {
            srcs: [
                "errors_unix.cpp",
                "properties.cpp",
            ],
            cppflags: ["-Wexit-time-destructors"],
            sanitize: {
                misc_undefined: ["integer"],
            },
        },
        darwin: {
            srcs: ["errors_unix.cpp"],
            cppflags: ["-Wexit-time-destructors"],
        },
        linux_bionic: {
            srcs: ["errors_unix.cpp"],
            cppflags: ["-Wexit-time-destructors"],
            enabled: true,
        },
        linux: {
            srcs: ["errors_unix.cpp"],
            cppflags: ["-Wexit-time-destructors"],
        },
        windows: {
            srcs: [
                "errors_windows.cpp",
                "utf8.cpp",
            ],
            enabled: true,
        },
    },
}

// Tests
// ------------------------------------------------------------------------------
cc_test {
    name: "libbase_test",
    host_supported: true,
    clang: true,
    srcs: [
        "endian_test.cpp",
        "errors_test.cpp",
        "file_test.cpp",
        "logging_test.cpp",
        "parsedouble_test.cpp",
        "parseint_test.cpp",
        "parsenetaddress_test.cpp",
        "quick_exit_test.cpp",
        "stringprintf_test.cpp",
        "strings_test.cpp",
        "test_main.cpp",
    ],
    target: {
        android: {
            srcs: ["properties_test.cpp"],
            sanitize: {
                misc_undefined: ["integer"],
            },
        },
        windows: {
            srcs: ["utf8_test.cpp"],
            enabled: true,
        },
    },
    local_include_dirs: ["."],
    cppflags: libbase_cppflags,
    shared_libs: ["libbase"],
    compile_multilib: "both",
    multilib: {
        lib32: {
            suffix: "32",
        },
        lib64: {
            suffix: "64",
        },
    },
}
