# 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"]) # Apache v2 exports_files(["LICENSE"]) load(":bazel/brpc.bzl", "brpc_proto_library") config_setting( name = "with_glog", define_values = {"with_glog": "true"}, visibility = ["//visibility:public"], ) config_setting( name = "with_mesalink", define_values = {"with_mesalink": "true"}, visibility = ["//visibility:public"], ) config_setting( name = "with_thrift", define_values = {"with_thrift": "true"}, visibility = ["//visibility:public"], ) config_setting( name = "unittest", define_values = {"unittest": "true"}, ) config_setting( name = "darwin", values = {"cpu": "darwin"}, visibility = ["//visibility:public"], ) config_setting( name = "linux", values = {"cpu": "linux"}, visibility = ["//visibility:public"], ) COPTS = [ "-DBTHREAD_USE_FAST_PTHREAD_MUTEX", "-D__const__=", "-D_GNU_SOURCE", "-DUSE_SYMBOLIZE", "-DNO_TCMALLOC", "-D__STDC_FORMAT_MACROS", "-D__STDC_LIMIT_MACROS", "-D__STDC_CONSTANT_MACROS", "-DGFLAGS_NS=google", ] + select({ ":with_glog": ["-DBRPC_WITH_GLOG=1"], "//conditions:default": ["-DBRPC_WITH_GLOG=0"], }) + select({ ":with_mesalink": ["-DUSE_MESALINK"], "//conditions:default": [""], }) + select({ ":with_thrift": ["-DENABLE_THRIFT_FRAMED_PROTOCOL=1"], "//conditions:default": [""], }) LINKOPTS = [ "-lpthread", "-ldl", ] + select({ ":darwin": [ "-framework CoreFoundation", "-framework CoreGraphics", "-framework CoreData", "-framework CoreText", "-framework Security", "-framework Foundation", "-Wl,-U,_MallocExtension_ReleaseFreeMemory", "-Wl,-U,_ProfilerStart", "-Wl,-U,_ProfilerStop", "-Wl,-U,_RegisterThriftProtocol", ], "//conditions:default": [ "-lrt", ], }) + select({ ":with_mesalink": [ "-lmesalink", ], "//conditions:default": [], }) + select({ ":with_thrift": [ "-lthriftnb", "-levent", "-lthrift"], "//conditions:default": [], }) genrule( name = "config_h", outs = [ "src/butil/config.h", ], cmd = """cat << EOF >$@""" + """ // This file is auto-generated. #ifndef BUTIL_CONFIG_H #define BUTIL_CONFIG_H #ifdef BRPC_WITH_GLOG #undef BRPC_WITH_GLOG #endif #define BRPC_WITH_GLOG """ + select({ ":with_glog": "1", "//conditions:default": "0", }) + """ #endif // BUTIL_CONFIG_H EOF """ ) BUTIL_SRCS = [ "src/butil/third_party/dmg_fp/g_fmt.cc", "src/butil/third_party/dmg_fp/dtoa_wrapper.cc", "src/butil/third_party/dynamic_annotations/dynamic_annotations.c", "src/butil/third_party/icu/icu_utf.cc", "src/butil/third_party/superfasthash/superfasthash.c", "src/butil/third_party/modp_b64/modp_b64.cc", "src/butil/third_party/symbolize/demangle.cc", "src/butil/third_party/symbolize/symbolize.cc", "src/butil/third_party/snappy/snappy-sinksource.cc", "src/butil/third_party/snappy/snappy-stubs-internal.cc", "src/butil/third_party/snappy/snappy.cc", "src/butil/third_party/murmurhash3/murmurhash3.cpp", "src/butil/arena.cpp", "src/butil/at_exit.cc", "src/butil/atomicops_internals_x86_gcc.cc", "src/butil/base64.cc", "src/butil/big_endian.cc", "src/butil/cpu.cc", "src/butil/debug/alias.cc", "src/butil/debug/asan_invalid_access.cc", "src/butil/debug/crash_logging.cc", "src/butil/debug/debugger.cc", "src/butil/debug/debugger_posix.cc", "src/butil/debug/dump_without_crashing.cc", "src/butil/debug/proc_maps_linux.cc", "src/butil/debug/stack_trace.cc", "src/butil/debug/stack_trace_posix.cc", "src/butil/environment.cc", "src/butil/files/file.cc", "src/butil/files/file_posix.cc", "src/butil/files/file_enumerator.cc", "src/butil/files/file_enumerator_posix.cc", "src/butil/files/file_path.cc", "src/butil/files/file_path_constants.cc", "src/butil/files/memory_mapped_file.cc", "src/butil/files/memory_mapped_file_posix.cc", "src/butil/files/scoped_file.cc", "src/butil/files/scoped_temp_dir.cc", "src/butil/file_util.cc", "src/butil/file_util_posix.cc", "src/butil/guid.cc", "src/butil/guid_posix.cc", "src/butil/hash.cc", "src/butil/lazy_instance.cc", "src/butil/location.cc", "src/butil/memory/aligned_memory.cc", "src/butil/memory/ref_counted.cc", "src/butil/memory/ref_counted_memory.cc", "src/butil/memory/singleton.cc", "src/butil/memory/weak_ptr.cc", "src/butil/posix/file_descriptor_shuffle.cc", "src/butil/posix/global_descriptors.cc", "src/butil/process_util.cc", "src/butil/rand_util.cc", "src/butil/rand_util_posix.cc", "src/butil/fast_rand.cpp", "src/butil/safe_strerror_posix.cc", "src/butil/sha1_portable.cc", "src/butil/strings/latin1_string_conversions.cc", "src/butil/strings/nullable_string16.cc", "src/butil/strings/safe_sprintf.cc", "src/butil/strings/string16.cc", "src/butil/strings/string_number_conversions.cc", "src/butil/strings/string_split.cc", "src/butil/strings/string_piece.cc", "src/butil/strings/string_util.cc", "src/butil/strings/string_util_constants.cc", "src/butil/strings/stringprintf.cc", "src/butil/strings/utf_offset_string_conversions.cc", "src/butil/strings/utf_string_conversion_utils.cc", "src/butil/strings/utf_string_conversions.cc", "src/butil/synchronization/cancellation_flag.cc", "src/butil/synchronization/condition_variable_posix.cc", "src/butil/synchronization/waitable_event_posix.cc", "src/butil/threading/non_thread_safe_impl.cc", "src/butil/threading/platform_thread_posix.cc", "src/butil/threading/simple_thread.cc", "src/butil/threading/thread_checker_impl.cc", "src/butil/threading/thread_collision_warner.cc", "src/butil/threading/thread_id_name_manager.cc", "src/butil/threading/thread_local_posix.cc", "src/butil/threading/thread_local_storage.cc", "src/butil/threading/thread_local_storage_posix.cc", "src/butil/threading/thread_restrictions.cc", "src/butil/threading/watchdog.cc", "src/butil/time/clock.cc", "src/butil/time/default_clock.cc", "src/butil/time/default_tick_clock.cc", "src/butil/time/tick_clock.cc", "src/butil/time/time.cc", "src/butil/time/time_posix.cc", "src/butil/version.cc", "src/butil/logging.cc", "src/butil/class_name.cpp", "src/butil/errno.cpp", "src/butil/find_cstr.cpp", "src/butil/status.cpp", "src/butil/string_printf.cpp", "src/butil/thread_local.cpp", "src/butil/unix_socket.cpp", "src/butil/endpoint.cpp", "src/butil/fd_utility.cpp", "src/butil/files/temp_file.cpp", "src/butil/files/file_watcher.cpp", "src/butil/time.cpp", "src/butil/zero_copy_stream_as_streambuf.cpp", "src/butil/crc32c.cc", "src/butil/containers/case_ignored_flat_map.cpp", "src/butil/iobuf.cpp", "src/butil/binary_printer.cpp", "src/butil/recordio.cc", "src/butil/popen.cpp", ] + select({ ":darwin": [ "src/butil/time/time_mac.cc", "src/butil/mac/scoped_mach_port.cc", ], "//conditions:default": [ "src/butil/file_util_linux.cc", "src/butil/threading/platform_thread_linux.cc", "src/butil/strings/sys_string_conversions_posix.cc", ], }) objc_library( name = "macos_lib", hdrs = [":config_h", "src/butil/atomicops.h", "src/butil/atomicops_internals_atomicword_compat.h", "src/butil/atomicops_internals_mac.h", "src/butil/base_export.h", "src/butil/basictypes.h", "src/butil/build_config.h", "src/butil/compat.h", "src/butil/compiler_specific.h", "src/butil/containers/hash_tables.h", "src/butil/debug/debugger.h", "src/butil/debug/leak_annotations.h", "src/butil/file_util.h", "src/butil/file_descriptor_posix.h", "src/butil/files/file_path.h", "src/butil/files/file.h", "src/butil/files/scoped_file.h", "src/butil/lazy_instance.h", "src/butil/logging.h", "src/butil/mac/bundle_locations.h", "src/butil/mac/foundation_util.h", "src/butil/mac/scoped_cftyperef.h", "src/butil/mac/scoped_typeref.h", "src/butil/macros.h", "src/butil/memory/aligned_memory.h", "src/butil/memory/scoped_policy.h", "src/butil/memory/scoped_ptr.h", "src/butil/move.h", "src/butil/port.h", "src/butil/posix/eintr_wrapper.h", "src/butil/scoped_generic.h", "src/butil/strings/string16.h", "src/butil/strings/string_piece.h", "src/butil/strings/string_util.h", "src/butil/strings/string_util_posix.h", "src/butil/strings/sys_string_conversions.h", "src/butil/synchronization/lock.h", "src/butil/time/time.h", "src/butil/time.h", "src/butil/third_party/dynamic_annotations/dynamic_annotations.h", "src/butil/threading/platform_thread.h", "src/butil/threading/thread_restrictions.h", "src/butil/threading/thread_id_name_manager.h", "src/butil/type_traits.h", "src/butil/third_party/murmurhash3/murmurhash3.h", ], non_arc_srcs = [ "src/butil/mac/bundle_locations.mm", "src/butil/mac/foundation_util.mm", "src/butil/file_util_mac.mm", "src/butil/threading/platform_thread_mac.mm", "src/butil/strings/sys_string_conversions_mac.mm", ], deps = [ "@com_github_gflags_gflags//:gflags", ] + select({ ":with_glog": ["@com_github_google_glog//:glog"], "//conditions:default": [], }), includes = ["src/"], enable_modules = True, tags = ["manual"], ) cc_library( name = "butil", srcs = BUTIL_SRCS, hdrs = glob([ "src/butil/*.h", "src/butil/*.hpp", "src/butil/**/*.h", "src/butil/**/*.hpp", "src/butil/**/**/*.h", "src/butil/**/**/*.hpp", "src/butil/**/**/**/*.h", "src/butil/**/**/**/*.hpp", "src/butil/third_party/dmg_fp/dtoa.cc", ]) + [":config_h"], deps = [ "@com_google_protobuf//:protobuf", "@com_github_gflags_gflags//:gflags", "@zlib//:zlib", ] + select({ ":with_glog": ["@com_github_google_glog//:glog"], "//conditions:default": [], }) + select({ ":darwin": [":macos_lib"], "//conditions:default": [], }) + select({ ":darwin": ["//external:ssl_macos"], "//conditions:default": ["//external:ssl"], }), includes = [ "src/", ], copts = COPTS + select({ ":unittest": [ "-DBVAR_NOT_LINK_DEFAULT_VARIABLES", "-DUNIT_TEST", ], "//conditions:default": [], }), linkopts = LINKOPTS, visibility = ["//visibility:public"], ) cc_library( name = "bvar", srcs = glob([ "src/bvar/*.cpp", "src/bvar/detail/*.cpp", ], exclude = [ "src/bvar/default_variables.cpp", ]) + select({ ":unittest": [], "//conditions:default": ["src/bvar/default_variables.cpp"], }), hdrs = glob([ "src/bvar/*.h", "src/bvar/utils/*.h", "src/bvar/detail/*.h", ]), includes = [ "src/", ], deps = [ ":butil", ], copts = COPTS + select({ ":unittest": [ "-DBVAR_NOT_LINK_DEFAULT_VARIABLES", "-DUNIT_TEST", ], "//conditions:default": [], }), linkopts = LINKOPTS, visibility = ["//visibility:public"], ) cc_library( name = "bthread", srcs = glob([ "src/bthread/*.cpp", ]), hdrs = glob([ "src/bthread/*.h", "src/bthread/*.list", ]), includes = [ "src/" ], deps = [ ":butil", ":bvar", ], copts = COPTS, linkopts = LINKOPTS, visibility = ["//visibility:public"], ) cc_library( name = "json2pb", srcs = glob([ "src/json2pb/*.cpp", ]), hdrs = glob([ "src/json2pb/*.h", ]), includes = [ "src/", ], deps = [ ":butil", ], copts = COPTS, linkopts = LINKOPTS, visibility = ["//visibility:public"], ) cc_library( name = "mcpack2pb", srcs = [ "src/mcpack2pb/field_type.cpp", "src/mcpack2pb/mcpack2pb.cpp", "src/mcpack2pb/parser.cpp", "src/mcpack2pb/serializer.cpp", ], hdrs = glob([ "src/mcpack2pb/*.h", ]), includes = [ "src/", ], deps = [ ":butil", ":cc_brpc_idl_options_proto", "@com_google_protobuf//:protoc_lib", ], copts = COPTS, linkopts = LINKOPTS, visibility = ["//visibility:public"], ) brpc_proto_library( name = "cc_brpc_idl_options_proto", srcs = [ "src/idl_options.proto", ], deps = [ "@com_google_protobuf//:cc_wkt_protos" ], visibility = ["//visibility:public"], ) brpc_proto_library( name = "cc_brpc_internal_proto", srcs = glob([ "src/brpc/*.proto", "src/brpc/policy/*.proto", ]), include = "src/", deps = [ ":cc_brpc_idl_options_proto", "@com_google_protobuf//:cc_wkt_protos" ], visibility = ["//visibility:public"], ) cc_library( name = "brpc", srcs = glob([ "src/brpc/*.cpp", "src/brpc/**/*.cpp", ], exclude = [ "src/brpc/thrift_service.cpp", "src/brpc/thrift_message.cpp", "src/brpc/policy/thrift_protocol.cpp", ]) + select({ ":with_thrift" : glob([ "src/brpc/thrift*.cpp", "src/brpc/**/thrift*.cpp"]), "//conditions:default" : [], }), hdrs = glob([ "src/brpc/*.h", "src/brpc/**/*.h" ]), includes = [ "src/", ], deps = [ ":butil", ":bthread", ":bvar", ":json2pb", ":mcpack2pb", ":cc_brpc_internal_proto", "@com_github_google_leveldb//:leveldb", ], copts = COPTS, linkopts = LINKOPTS, visibility = ["//visibility:public"], ) cc_binary( name = "protoc-gen-mcpack", srcs = [ "src/mcpack2pb/generator.cpp", ], deps = [ ":cc_brpc_idl_options_proto", ":brpc", ], copts = COPTS, linkopts = LINKOPTS, visibility = ["//visibility:public"], )