// Copyright (C) 2008 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_library_headers {
    name: "libutils_headers",
    vendor_available: true,
    host_supported: true,

    header_libs: [
        "libsystem_headers",
        "libcutils_headers"
    ],
    export_header_lib_headers: [
        "libsystem_headers",
        "libcutils_headers"
    ],
    export_include_dirs: ["include"],

    target: {
        android: {
            header_libs: ["libbacktrace_headers"],
            export_header_lib_headers: ["libbacktrace_headers"],
        },
        linux_bionic: {
            enabled: true,
        },
        windows: {
            enabled: true,
        },
    },
}

cc_library {
    name: "libutils",
    vendor_available: true,
    host_supported: true,

    srcs: [
        "CallStack.cpp",
        "FileMap.cpp",
        "JenkinsHash.cpp",
        "LinearTransform.cpp",
        "NativeHandle.cpp",
        "Printer.cpp",
        "PropertyMap.cpp",
        "RefBase.cpp",
        "SharedBuffer.cpp",
        "Static.cpp",
        "StopWatch.cpp",
        "String8.cpp",
        "String16.cpp",
        "StrongPointer.cpp",
        "SystemClock.cpp",
        "Threads.cpp",
        "Timers.cpp",
        "Tokenizer.cpp",
        "Unicode.cpp",
        "VectorImpl.cpp",
        "misc.cpp",
    ],

    cflags: ["-Werror"],
    include_dirs: ["external/safe-iop/include"],
    header_libs: ["libutils_headers"],
    export_header_lib_headers: ["libutils_headers"],

    arch: {
        mips: {
            cflags: ["-DALIGN_DOUBLE"],
        },
    },

    target: {
        android: {
            srcs: [
                "BlobCache.cpp",
                "Looper.cpp",
                "ProcessCallStack.cpp",
                "Trace.cpp",
            ],

            cflags: ["-fvisibility=protected"],

            shared_libs: [
                "libbacktrace",
                "libcutils",
                "libdl",
                "liblog",
            ],

            sanitize: {
                misc_undefined: ["integer"],
            },
        },

        host: {
            cflags: ["-DLIBUTILS_NATIVE=1"],

            shared: {
                enabled: false,
            },
        },

        linux: {
            srcs: [
                "Looper.cpp",
                "ProcessCallStack.cpp",
            ],
        },
        linux_bionic: {
            enabled: true,
            srcs: [
                "Looper.cpp",
                "ProcessCallStack.cpp",
            ],
        },

        darwin: {
            cflags: ["-Wno-unused-parameter"],
        },

        // Under MinGW, ctype.h doesn't need multi-byte support
        windows: {
            cflags: ["-DMB_CUR_MAX=1"],

            enabled: true,
        },
    },

    clang: true,
}

// Include subdirectory makefiles
// ============================================================

cc_test {
    name: "SharedBufferTest",
    host_supported: true,
    static_libs: ["libutils"],
    shared_libs: ["liblog"],
    srcs: ["SharedBufferTest.cpp"],
}

subdirs = ["tests"]
