// 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",],
    export_header_lib_headers: ["libsystem_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",
        "Log.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: [
                "Looper.cpp",
                "ProcessCallStack.cpp",
                "Trace.cpp",
            ],

            cflags: ["-fvisibility=protected"],

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

            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"]
