targets_cfg.py 3.7 KB
Newer Older
1
# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
2 3 4 5
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals
Y
Yi Wu 已提交
6
rocksdb_target_header = """load("@fbcode_macros//build_defs:auto_headers.bzl", "AutoHeaders")
7
load("@fbcode_macros//build_defs:cpp_library.bzl", "cpp_library")
8
load(":defs.bzl", "test_binary")
9 10

REPO_PATH = package_name() + "/"
Y
Yi Wu 已提交
11

12
ROCKSDB_COMPILER_FLAGS = [
Y
Yi Wu 已提交
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
    "-fno-builtin-memcmp",
    "-DROCKSDB_PLATFORM_POSIX",
    "-DROCKSDB_LIB_IO_POSIX",
    "-DROCKSDB_FALLOCATE_PRESENT",
    "-DROCKSDB_MALLOC_USABLE_SIZE",
    "-DROCKSDB_RANGESYNC_PRESENT",
    "-DROCKSDB_SCHED_GETCPU_PRESENT",
    "-DROCKSDB_SUPPORT_THREAD_LOCAL",
    "-DOS_LINUX",
    # Flags to enable libs we include
    "-DSNAPPY",
    "-DZLIB",
    "-DBZIP2",
    "-DLZ4",
    "-DZSTD",
28
    "-DZSTD_STATIC_LINKING_ONLY",
Y
Yi Wu 已提交
29 30 31 32 33
    "-DGFLAGS=gflags",
    "-DNUMA",
    "-DTBB",
    # Needed to compile in fbcode
    "-Wno-expansion-to-defined",
F
Fosco Marotto 已提交
34 35 36
    # Added missing flags from output of build_detect_platform
    "-DROCKSDB_PTHREAD_ADAPTIVE_MUTEX",
    "-DROCKSDB_BACKTRACE",
Y
Yi Wu 已提交
37
    "-Wnarrowing",
38
    "-DROCKSDB_NO_DYNAMIC_EXTENSION",
39 40
]

41
ROCKSDB_EXTERNAL_DEPS = [
Y
Yi Wu 已提交
42 43 44 45 46 47 48 49 50
    ("bzip2", None, "bz2"),
    ("snappy", None, "snappy"),
    ("zlib", None, "z"),
    ("gflags", None, "gflags"),
    ("lz4", None, "lz4"),
    ("zstd", None),
    ("tbb", None),
    ("numa", None, "numa"),
    ("googletest", None, "gtest"),
51 52
]

53
ROCKSDB_PREPROCESSOR_FLAGS = [
Y
Yi Wu 已提交
54 55 56
    # Directories with files for #include
    "-I" + REPO_PATH + "include/",
    "-I" + REPO_PATH,
57
]
58

59
ROCKSDB_ARCH_PREPROCESSOR_FLAGS = {
S
Siying Dong 已提交
60 61 62 63
    "x86_64": [
        "-DHAVE_SSE42",
        "-DHAVE_PCLMUL",
    ],
64
}
Y
Yi Wu 已提交
65 66 67 68 69 70 71

build_mode = read_config("fbcode", "build_mode")

is_opt_mode = build_mode.startswith("opt")

# -DNDEBUG is added by default in opt mode in fbcode. But adding it twice
# doesn't harm and avoid forgetting to add it.
72
ROCKSDB_COMPILER_FLAGS += (["-DNDEBUG"] if is_opt_mode else [])
73 74 75

sanitizer = read_config("fbcode", "sanitizer")

76 77
# Do not enable jemalloc if sanitizer presents. RocksDB will further detect
# whether the binary is linked with jemalloc at runtime.
78 79 80
ROCKSDB_COMPILER_FLAGS += (["-DROCKSDB_JEMALLOC"] if sanitizer == "" else [])

ROCKSDB_EXTERNAL_DEPS += ([("jemalloc", None, "headers")] if sanitizer == "" else [])
81 82 83 84 85
"""


library_template = """
cpp_library(
86 87 88
    name = "{name}",
    srcs = [{srcs}],
    {headers_attr_prefix}headers = {headers},
89 90 91
    arch_preprocessor_flags = ROCKSDB_ARCH_PREPROCESSOR_FLAGS,
    compiler_flags = ROCKSDB_COMPILER_FLAGS,
    preprocessor_flags = ROCKSDB_PREPROCESSOR_FLAGS,
92
    deps = [{deps}],
93
    external_deps = ROCKSDB_EXTERNAL_DEPS,
94 95 96 97 98
)
"""

binary_template = """
cpp_binary(
Y
Yi Wu 已提交
99 100
    name = "%s",
    srcs = [%s],
101 102 103
    arch_preprocessor_flags = ROCKSDB_ARCH_PREPROCESSOR_FLAGS,
    compiler_flags = ROCKSDB_COMPILER_FLAGS,
    preprocessor_flags = ROCKSDB_PREPROCESSOR_FLAGS,
Y
Yi Wu 已提交
104
    deps = [%s],
105
    external_deps = ROCKSDB_EXTERNAL_DEPS,
106 107 108
)
"""

Y
Yi Wu 已提交
109 110 111 112 113 114 115
test_cfg_template = """    [
        "%s",
        "%s",
        "%s",
    ],
"""

116 117
unittests_template = """
# [test_name, test_src, test_type]
Y
Yi Wu 已提交
118 119
ROCKS_TESTS = [
%s]
120 121

# Generate a test rule for each entry in ROCKS_TESTS
Y
Yi Wu 已提交
122 123
# Do not build the tests in opt mode, since SyncPoint and other test code
# will not be included.
124 125 126 127 128 129 130 131 132 133 134 135 136
[
    test_binary(
        parallelism = parallelism,
        rocksdb_arch_preprocessor_flags = ROCKSDB_ARCH_PREPROCESSOR_FLAGS,
        rocksdb_compiler_flags = ROCKSDB_COMPILER_FLAGS,
        rocksdb_external_deps = ROCKSDB_EXTERNAL_DEPS,
        rocksdb_preprocessor_flags = ROCKSDB_PREPROCESSOR_FLAGS,
        test_cc = test_cc,
        test_name = test_name,
    )
    for test_name, test_cc, parallelism in ROCKS_TESTS
    if not is_opt_mode
]
137
"""