//
// 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 = [
    "log_event_list.c",
    "log_event_write.c",
    "logger_write.c",
    "config_write.c",
    "logger_name.c",
    "logger_lock.c",
]
liblog_host_sources = [
    "fake_log_device.c",
    "fake_writer.c",
]
liblog_target_sources = [
    "event_tag_map.c",
    "config_read.c",
    "log_time.cpp",
    "log_is_loggable.c",
    "logprint.c",
    "pmsg_reader.c",
    "pmsg_writer.c",
    "logd_reader.c",
    "logd_writer.c",
    "logger_read.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: {
                never: true,
            },
        },
        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.c"],
        },
        linux: {
            host_ldlibs: ["-lrt"],
        },
    },

    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=1005",
        "-DSNET_EVENT_LOG_TAG=1397638484",
    ],
    logtags: ["event.logtags"],
    compile_multilib: "both",
    stl: "none",
}
