targets_cfg.py 3.6 KB
Newer Older
1 2 3 4
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals
A
Andres Suarez 已提交
5
rocksdb_target_header = """REPO_PATH = package_name() + "/"
Y
Yi Wu 已提交
6

7
BUCK_BINS = "buck-out/gen/" + REPO_PATH
Y
Yi Wu 已提交
8

9
TEST_RUNNER = REPO_PATH + "buckifier/rocks_test_runner.sh"
Y
Yi Wu 已提交
10

11
rocksdb_compiler_flags = [
Y
Yi Wu 已提交
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
    "-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",
    "-DGFLAGS=gflags",
    "-DNUMA",
    "-DTBB",
    # Needed to compile in fbcode
    "-Wno-expansion-to-defined",
32 33 34
]

rocksdb_external_deps = [
Y
Yi Wu 已提交
35 36 37 38 39 40 41 42 43
    ("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"),
44 45 46
]

rocksdb_preprocessor_flags = [
Y
Yi Wu 已提交
47 48 49
    # Directories with files for #include
    "-I" + REPO_PATH + "include/",
    "-I" + REPO_PATH,
50
]
51 52

rocksdb_arch_preprocessor_flags = {
S
Siying Dong 已提交
53 54 55 56
    "x86_64": [
        "-DHAVE_SSE42",
        "-DHAVE_PCLMUL",
    ],
57
}
Y
Yi Wu 已提交
58 59 60 61 62 63 64 65 66

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.
if is_opt_mode:
    rocksdb_compiler_flags.append("-DNDEBUG")
67 68 69 70 71 72 73
"""


library_template = """
cpp_library(
    name = "%s",
    srcs = [%s],
Y
Yi Wu 已提交
74
    headers = %s,
75
    arch_preprocessor_flags = rocksdb_arch_preprocessor_flags,
76
    compiler_flags = rocksdb_compiler_flags,
Y
Yi Wu 已提交
77 78
    preprocessor_flags = rocksdb_preprocessor_flags,
    deps = [%s],
79 80 81 82 83 84
    external_deps = rocksdb_external_deps,
)
"""

binary_template = """
cpp_binary(
Y
Yi Wu 已提交
85 86 87 88 89 90 91
    name = "%s",
    srcs = [%s],
    arch_preprocessor_flags = rocksdb_arch_preprocessor_flags,
    compiler_flags = rocksdb_compiler_flags,
    preprocessor_flags = rocksdb_preprocessor_flags,
    deps = [%s],
    external_deps = rocksdb_external_deps,
92 93 94
)
"""

Y
Yi Wu 已提交
95 96 97 98 99 100 101
test_cfg_template = """    [
        "%s",
        "%s",
        "%s",
    ],
"""

102 103
unittests_template = """
# [test_name, test_src, test_type]
Y
Yi Wu 已提交
104 105
ROCKS_TESTS = [
%s]
106 107

# Generate a test rule for each entry in ROCKS_TESTS
Y
Yi Wu 已提交
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
# Do not build the tests in opt mode, since SyncPoint and other test code
# will not be included.
if not is_opt_mode:
    for test_cfg in ROCKS_TESTS:
        test_name = test_cfg[0]
        test_cc = test_cfg[1]
        ttype = "gtest" if test_cfg[2] == "parallel" else "simple"
        test_bin = test_name + "_bin"

        cpp_binary (
          name = test_bin,
          srcs = [test_cc],
          deps = [":rocksdb_test_lib"],
          preprocessor_flags = rocksdb_preprocessor_flags,
          arch_preprocessor_flags = rocksdb_arch_preprocessor_flags,
          compiler_flags = rocksdb_compiler_flags,
          external_deps = rocksdb_external_deps,
        )

        custom_unittest(
          name = test_name,
          type = ttype,
          deps = [":" + test_bin],
          command = [TEST_RUNNER, BUCK_BINS + test_bin]
        )
133 134 135 136

custom_unittest(
    name = "make_rocksdbjavastatic",
    command = ["internal_repo_rocksdb/make_rocksdbjavastatic.sh"],
Y
Yi Wu 已提交
137
    type = "simple",
138 139 140 141 142
)

custom_unittest(
    name = "make_rocksdb_lite_release",
    command = ["internal_repo_rocksdb/make_rocksdb_lite_release.sh"],
Y
Yi Wu 已提交
143
    type = "simple",
144
)
145
"""