# 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"], )