# 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.

load("@rules_proto//proto:defs.bzl", "proto_library")
load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_proto_library", "objc_library")

licenses(["notice"])  # Apache v2

exports_files(["LICENSE"])

COPTS = [
    "-DBTHREAD_USE_FAST_PTHREAD_MUTEX",
    "-D__const__=__unused__",
    "-D_GNU_SOURCE",
    "-DUSE_SYMBOLIZE",
    "-DNO_TCMALLOC",
    "-D__STDC_FORMAT_MACROS",
    "-D__STDC_LIMIT_MACROS",
    "-D__STDC_CONSTANT_MACROS",
    "-DGFLAGS_NS=google",
] + select({
    "//bazel/config:brpc_with_glog": ["-DBRPC_WITH_GLOG=1"],
    "//conditions:default": ["-DBRPC_WITH_GLOG=0"],
}) + select({
    "//bazel/config:brpc_with_mesalink": ["-DUSE_MESALINK"],
    "//conditions:default": [""],
}) + select({
    "//bazel/config:brpc_with_thrift": ["-DENABLE_THRIFT_FRAMED_PROTOCOL=1"],
    "//conditions:default": [""],
}) + select({
    "//bazel/config:brpc_with_thrift_legacy_version": [],
    "//conditions:default": ["-DTHRIFT_STDCXX=std"],
}) + select({
    "//bazel/config:brpc_with_rdma": ["-DBRPC_WITH_RDMA=1"],
    "//conditions:default": [""],
})

LINKOPTS = [
    "-pthread",
    "-ldl",
] + select({
    "@bazel_tools//tools/osx: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,__Z13GetStackTracePPvii",
        "-Wl,-U,_RegisterThriftProtocol",
    ],
    "//conditions:default": [
        "-lrt",
    ],
}) + select({
    "//bazel/config:brpc_with_mesalink": [
        "-lmesalink",
    ],
    "//conditions:default": [],
}) + select({
    "//bazel/config:brpc_with_rdma": [
        "-libverbs",
    ],
    "//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({
              "//bazel/config:brpc_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/base64url.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/thread_key.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({
    "@bazel_tools//tools/osx: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 = [
        "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_descriptor_posix.h",
        "src/butil/file_util.h",
        "src/butil/files/file.h",
        "src/butil/files/file_path.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/string_printf.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/third_party/dynamic_annotations/dynamic_annotations.h",
        "src/butil/third_party/murmurhash3/murmurhash3.h",
        "src/butil/threading/platform_thread.h",
        "src/butil/threading/thread_id_name_manager.h",
        "src/butil/threading/thread_restrictions.h",
        "src/butil/time.h",
        "src/butil/time/time.h",
        "src/butil/type_traits.h",
        ":config_h",
    ],
    enable_modules = True,
    includes = ["src/"],
    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",
    ],
    tags = ["manual"],
    deps = [
        "@com_github_gflags_gflags//:gflags",
    ] + select({
        "//bazel/config:brpc_with_glog": ["@com_github_google_glog//:glog"],
        "//conditions:default": [],
    }),
)

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",
    ],
    copts = COPTS + select({
        "//bazel/config:brpc_build_for_unittest": [
            "-DBVAR_NOT_LINK_DEFAULT_VARIABLES",
            "-DUNIT_TEST",
        ],
        "//conditions:default": [],
    }),
    includes = [
        "src/",
    ],
    linkopts = LINKOPTS,
    visibility = ["//visibility:public"],
    deps = [
        "@com_github_gflags_gflags//:gflags",
        "@com_github_madler_zlib//:zlib",
        "@com_google_protobuf//:protobuf",
    ] + select({
        "//bazel/config:brpc_with_glog": ["@com_github_google_glog//:glog"],
        "//conditions:default": [],
    }) + select({
        "@bazel_tools//tools/osx:darwin": [":macos_lib"],
        "//conditions:default": [],
    }) + select({
        "//bazel/config:brpc_with_boringssl": ["@boringssl//:ssl", "@boringssl//:crypto"],
        "//conditions:default": ["@openssl//:ssl", "@openssl//:crypto"],
    }),
)

cc_library(
    name = "bvar",
    srcs = glob(
        [
            "src/bvar/*.cpp",
            "src/bvar/detail/*.cpp",
        ],
        exclude = [
            "src/bvar/default_variables.cpp",
        ],
    ) + select({
        "//bazel/config:brpc_build_for_unittest": [],
        "//conditions:default": ["src/bvar/default_variables.cpp"],
    }),
    hdrs = glob([
        "src/bvar/*.h",
        "src/bvar/utils/*.h",
        "src/bvar/detail/*.h",
    ]),
    copts = COPTS + select({
        "//bazel/config:brpc_build_for_unittest": [
            "-DBVAR_NOT_LINK_DEFAULT_VARIABLES",
            "-DUNIT_TEST",
        ],
        "//conditions:default": [],
    }),
    includes = [
        "src/",
    ],
    linkopts = LINKOPTS,
    visibility = ["//visibility:public"],
    deps = [
        ":butil",
    ],
)

cc_library(
    name = "bthread",
    srcs = glob([
        "src/bthread/*.cpp",
    ]),
    hdrs = glob([
        "src/bthread/*.h",
        "src/bthread/*.list",
    ]),
    copts = COPTS,
    includes = [
        "src/",
    ],
    linkopts = LINKOPTS,
    visibility = ["//visibility:public"],
    deps = [
        ":butil",
        ":bvar",
    ],
)

cc_library(
    name = "json2pb",
    srcs = glob([
        "src/json2pb/*.cpp",
    ]),
    hdrs = glob([
        "src/json2pb/*.h",
    ]),
    copts = COPTS,
    includes = [
        "src/",
    ],
    linkopts = LINKOPTS,
    visibility = ["//visibility:public"],
    deps = [
        ":butil",
    ],
)

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",
    ]),
    copts = COPTS,
    includes = [
        "src/",
    ],
    linkopts = LINKOPTS,
    visibility = ["//visibility:public"],
    deps = [
        ":brpc_idl_options_cc_proto",
        ":butil",
        "@com_google_protobuf//:protoc_lib",
    ],
)

filegroup(
    name = "brpc_idl_options_proto_srcs",
    srcs = [
        "src/idl_options.proto",
    ],
    visibility = ["//visibility:public"],
)

proto_library(
    name = "brpc_idl_options_proto",
    srcs = [":brpc_idl_options_proto_srcs"],
    visibility = ["//visibility:public"],
    deps = [
        "@com_google_protobuf//:descriptor_proto",
    ],
)

cc_proto_library(
    name = "brpc_idl_options_cc_proto",
    visibility = ["//visibility:public"],
    deps = [":brpc_idl_options_proto"],
)

filegroup(
    name = "brpc_internal_proto_srcs",
    srcs = glob([
        "src/brpc/*.proto",
        "src/brpc/policy/*.proto",
    ]),
    visibility = ["//visibility:public"],
)

proto_library(
    name = "brpc_internal_proto",
    srcs = [":brpc_internal_proto_srcs"],
    strip_import_prefix = "src",
    visibility = ["//visibility:public"],
    deps = [
        ":brpc_idl_options_proto",
        "@com_google_protobuf//:descriptor_proto",
    ],
)

cc_proto_library(
    name = "brpc_internal_cc_proto",
    visibility = ["//visibility:public"],
    deps = [":brpc_internal_proto"],
)

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",
        "src/brpc/event_dispatcher_epoll.cpp",
        "src/brpc/event_dispatcher_kqueue.cpp",
    ]) + select({
        "//bazel/config:brpc_with_thrift": glob([
            "src/brpc/thrift*.cpp",
            "src/brpc/**/thrift*.cpp",
        ]),
        "//conditions:default": [],
    }),
    hdrs = glob([
        "src/brpc/*.h",
        "src/brpc/**/*.h",
        "src/brpc/event_dispatcher_epoll.cpp",
        "src/brpc/event_dispatcher_kqueue.cpp",
    ]),
    copts = COPTS,
    includes = [
        "src/",
    ],
    linkopts = LINKOPTS,
    visibility = ["//visibility:public"],
    deps = [
        ":brpc_internal_cc_proto",
        ":bthread",
        ":butil",
        ":bvar",
        ":json2pb",
        ":mcpack2pb",
        "@com_github_google_leveldb//:leveldb",
    ] + select({
        "//bazel/config:brpc_with_thrift": [
            "@org_apache_thrift//:thrift",
        ],
        "//conditions:default": [],
    }),
)

cc_binary(
    name = "protoc-gen-mcpack",
    srcs = [
        "src/mcpack2pb/generator.cpp",
    ],
    copts = COPTS,
    linkopts = LINKOPTS,
    visibility = ["//visibility:public"],
    deps = [
        ":brpc",
        ":brpc_idl_options_cc_proto",
    ],
)
