//
// 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.c",
    "config_write.c",
    "local_logger.c",
    "log_event_list.c",
    "log_event_write.c",
    "log_ratelimit.cpp",
    "logger_lock.c",
    "logger_name.c",
    "logger_read.c",
    "logger_write.c",
    "logprint.c",
]
liblog_host_sources = [
    "fake_log_device.c",
    "fake_writer.c",
]
liblog_target_sources = [
    "event_tag_map.cpp",
    "log_time.cpp",
    "properties.c",
    "pmsg_reader.c",
    "pmsg_writer.c",
    "logd_reader.c",
    "logd_writer.c",
]

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

    srcs: liblog_sources,

    target: {
        host: {
            srcs: liblog_host_sources,
            cflags: ["-DFAKE_LOG_DEVICE=1"],
        },
        android: {
            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
            ldflags: ["-Wl,--hash-style=both"],
        },
        windows: {
            srcs: ["uio.c"],
            enabled: true,
        },
        not_windows: {
            srcs: ["event_tag_map.cpp"],
        },
        linux: {
            host_ldlibs: ["-lrt"],
        },
        linux_bionic: {
            enabled: true,
        },
    },

    export_include_dirs: ["include"],

    cflags: [
        "-Werror",
        "-fvisibility=hidden",
        // 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_headers",
    from: "include/android",
    to: "android",
    srcs: ["include/android/log.h"],
    license: "NOTICE",
}

cc_library_headers {
    name: "liblog_vndk_headers",
    export_include_dirs: ["include_vndk"],
}

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