123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- # Licensed to the Apache Software Foundation (ASF) under one or more
- # contributor license agreements. See the NOTICE file distributed with
- # this work for additional information regarding copyright ownership.
- # The ASF licenses this file to You 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.
- licenses(["notice"])
- cc_library(
- name = "glog",
- srcs = [
- "src/base/commandlineflags.h",
- "src/base/googleinit.h",
- "src/demangle.cc",
- "src/logging.cc",
- "src/raw_logging.cc",
- "src/symbolize.cc",
- "src/utilities.cc",
- "src/vlog_is_on.cc",
- ],
- hdrs = [
- "raw_logging_h",
- "src/base/mutex.h",
- "src/demangle.h",
- "src/symbolize.h",
- "src/utilities.h",
- "src/glog/log_severity.h",
- ":config_h",
- ":logging_h",
- ":stl_logging_h",
- ":vlog_is_on_h",
- ],
- copts = [
- # Disable warnings that exists in glog
- "-Wno-sign-compare",
- "-Wno-unused-local-typedefs",
- # Inject google namespace as "google"
- "-D_START_GOOGLE_NAMESPACE_='namespace google {'",
- "-D_END_GOOGLE_NAMESPACE_='}'",
- "-DGOOGLE_NAMESPACE='google'",
- # Allows src/base/mutex.h to include pthread.h.
- "-DHAVE_PTHREAD",
- # Allows src/logging.cc to determine the host name.
- "-DHAVE_SYS_UTSNAME_H",
- # System header files enabler for src/utilities.cc
- # Enable system calls from syscall.h
- "-DHAVE_SYS_SYSCALL_H",
- # Enable system calls from sys/time.h
- "-DHAVE_SYS_TIME_H",
- "-DHAVE_STDINT_H",
- "-DHAVE_STRING_H",
- # For logging.cc
- "-DHAVE_PREAD",
- "-DHAVE_FCNTL",
- "-DHAVE_SYS_TYPES_H",
- # Allows syslog support
- "-DHAVE_SYSLOG_H",
- # GFlags
- "-isystem $(GENDIR)/external/com_github_gflags_gflags/",
- "-DHAVE_LIB_GFLAGS",
- # Necessary for creating soft links of log files
- "-DHAVE_UNISTD_H",
- ],
- includes = [
- ".",
- "src",
- ],
- visibility = ["//visibility:public"],
- deps = [
- "//external:gflags",
- ],
- )
- # Below are the generation rules that generates the necessary header
- # files for glog. Originally they are generated by CMAKE
- # configure_file() command, which replaces certain template
- # placeholders in the .in files with provided values.
- # gen_sh is a bash script that provides the values for generated
- # header files. Under the hood it is just a wrapper over sed.
- genrule(
- name = "gen_sh",
- outs = [
- "gen.sh",
- ],
- cmd = """
- cat > $@ <<"EOF"
- #! /bin/sh
- sed -e 's/@ac_cv_have_unistd_h@/1/g' \
- -e 's/@ac_cv_have_stdint_h@/1/g' \
- -e 's/@ac_cv_have_systypes_h@/1/g' \
- -e 's/@ac_cv_have_libgflags_h@/1/g' \
- -e 's/@ac_cv_have_uint16_t@/1/g' \
- -e 's/@ac_cv_have___builtin_expect@/1/g' \
- -e 's/@ac_cv_have_.*@/0/g' \
- -e 's/@ac_google_start_namespace@/namespace google {/g' \
- -e 's/@ac_google_end_namespace@/}/g' \
- -e 's/@ac_google_namespace@/google/g' \
- -e 's/@ac_cv___attribute___noinline@/__attribute__((noinline))/g' \
- -e 's/@ac_cv___attribute___noreturn@/__attribute__((noreturn))/g' \
- -e 's/@ac_cv___attribute___printf_4_5@/__attribute__((__format__ (__printf__, 4, 5)))/g'
- EOF""",
- )
- genrule(
- name = "config_h",
- srcs = [
- "src/config.h.cmake.in",
- ],
- outs = [
- "config.h",
- ],
- cmd = "awk '{ gsub(/^#cmakedefine/, \"//cmakedefine\"); print; }' $(<) > $(@)",
- )
- genrule(
- name = "logging_h",
- srcs = [
- "src/glog/logging.h.in",
- ],
- outs = [
- "glog/logging.h",
- ],
- cmd = "$(location :gen_sh) < $(<) > $(@)",
- tools = [":gen_sh"],
- )
- genrule(
- name = "raw_logging_h",
- srcs = [
- "src/glog/raw_logging.h.in",
- ],
- outs = [
- "glog/raw_logging.h",
- ],
- cmd = "$(location :gen_sh) < $(<) > $(@)",
- tools = [":gen_sh"],
- )
- genrule(
- name = "stl_logging_h",
- srcs = [
- "src/glog/stl_logging.h.in",
- ],
- outs = [
- "glog/stl_logging.h",
- ],
- cmd = "$(location :gen_sh) < $(<) > $(@)",
- tools = [":gen_sh"],
- )
- genrule(
- name = "vlog_is_on_h",
- srcs = [
- "src/glog/vlog_is_on.h.in",
- ],
- outs = [
- "glog/vlog_is_on.h",
- ],
- cmd = "$(location :gen_sh) < $(<) > $(@)",
- tools = [":gen_sh"],
- )
|