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

liblog_sources = [
    "config_read.cpp",
    "config_write.cpp",
    "log_event_list.cpp",
    "log_event_write.cpp",
    "logger_lock.cpp",
    "logger_name.cpp",
    "logger_read.cpp",
    "logger_write.cpp",
    "logprint.cpp",
    "stderr_write.cpp",
]
liblog_host_sources = [
    "fake_log_device.cpp",
    "fake_writer.cpp",
]
liblog_target_sources = [
    "event_tag_map.cpp",
    "log_time.cpp",
    "properties.cpp",
    "pmsg_reader.cpp",
    "pmsg_writer.cpp",
    "logd_reader.cpp",
    "logd_writer.cpp",
]

cc_library_headers {
    name: "liblog_headers",
    host_supported: true,
    vendor_available: true,
    recovery_available: true,
    export_include_dirs: ["include"],
    system_shared_libs: [],
    stl: "none",
    target: {
        windows: {
            enabled: true,
        },
        linux_bionic: {
            enabled: true,
        },
        vendor: {
            override_export_include_dirs: ["include_vndk"],
        },
    },
}

// Shared and static library for host and device
// ========================================================
cc_library {
    name: "liblog",
    host_supported: true,
    recovery_available: true,
    srcs: liblog_sources,

    target: {
        host: {
            srcs: liblog_host_sources,
            cflags: ["-DFAKE_LOG_DEVICE=1"],
        },
        android: {
            version_script: "liblog.map.txt",
            srcs: liblog_target_sources,
            // AddressSanitizer runtime library depends on liblog.
            sanitize: {
                address: false,
            },
        },
        android_arm: {
            // TODO: This is to work around b/24465209. Remove after root cause is fixed
            pack_relocations: false,
            ldflags: ["-Wl,--hash-style=both"],
        },
        windows: {
            enabled: true,
        },
        not_windows: {
            srcs: ["event_tag_map.cpp"],
        },
        linux_bionic: {
            enabled: true,
        },
    },

    header_libs: ["liblog_headers"],
    export_header_lib_headers: ["liblog_headers"],

    stubs: {
        symbol_file: "liblog.map.txt",
        versions: ["10000"],
    },

    cflags: [
        "-Werror",
        // This is what we want to do:
        //  liblog_cflags := $(shell \
        //   sed -n \
        //       's/^\([0-9]*\)[ \t]*liblog[ \t].*/-DLIBLOG_LOG_TAG=\1/p' \
        //       $(LOCAL_PATH)/event.logtags)
        // so make sure we do not regret hard-coding it as follows:
        "-DLIBLOG_LOG_TAG=1006",
        "-DSNET_EVENT_LOG_TAG=1397638484",
    ],
    logtags: ["event.logtags"],
    compile_multilib: "both",
}

ndk_headers {
    name: "liblog_ndk_headers",
    from: "include/android",
    to: "android",
    srcs: ["include/android/log.h"],
    license: "NOTICE",
}

ndk_library {
    name: "liblog",
    symbol_file: "liblog.map.txt",
    first_version: "9",
    unversioned_until: "current",
}

llndk_library {
    name: "liblog",
    symbol_file: "liblog.map.txt",
    export_include_dirs: ["include_vndk"],
}
