targets_cfg.py 3.1 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
Y
Yi Wu 已提交
5
rocksdb_target_header = """import os
I
Islam AbdelRahman 已提交
6 7

TARGETS_PATH = os.path.dirname(__file__)
Y
Yi Wu 已提交
8 9 10

REPO_PATH = TARGETS_PATH[(TARGETS_PATH.find('fbcode/') + len('fbcode/')):] + "/"

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

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

15
rocksdb_compiler_flags = [
Y
Yi Wu 已提交
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
    "-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",
36 37 38
]

rocksdb_external_deps = [
Y
Yi Wu 已提交
39 40 41 42 43 44 45 46 47
    ("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"),
48 49 50
]

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

rocksdb_arch_preprocessor_flags = {
Y
Yi Wu 已提交
57
    "x86_64": ["-DHAVE_SSE42"],
58
}
59 60 61 62 63 64 65
"""


library_template = """
cpp_library(
    name = "%s",
    srcs = [%s],
Y
Yi Wu 已提交
66
    headers = %s,
67
    arch_preprocessor_flags = rocksdb_arch_preprocessor_flags,
68
    compiler_flags = rocksdb_compiler_flags,
Y
Yi Wu 已提交
69 70
    preprocessor_flags = rocksdb_preprocessor_flags,
    deps = [%s],
71 72 73 74 75 76
    external_deps = rocksdb_external_deps,
)
"""

binary_template = """
cpp_binary(
Y
Yi Wu 已提交
77 78 79 80 81 82 83
    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,
84 85 86
)
"""

Y
Yi Wu 已提交
87 88 89 90 91 92 93
test_cfg_template = """    [
        "%s",
        "%s",
        "%s",
    ],
"""

94 95
unittests_template = """
# [test_name, test_src, test_type]
Y
Yi Wu 已提交
96 97
ROCKS_TESTS = [
%s]
98 99 100 101 102 103 104 105 106 107 108 109 110

# Generate a test rule for each entry in ROCKS_TESTS
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,
111
      arch_preprocessor_flags = rocksdb_arch_preprocessor_flags,
112 113 114 115 116 117 118 119 120 121
      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]
    )
122 123 124 125

custom_unittest(
    name = "make_rocksdbjavastatic",
    command = ["internal_repo_rocksdb/make_rocksdbjavastatic.sh"],
Y
Yi Wu 已提交
126
    type = "simple",
127 128 129 130 131
)

custom_unittest(
    name = "make_rocksdb_lite_release",
    command = ["internal_repo_rocksdb/make_rocksdb_lite_release.sh"],
Y
Yi Wu 已提交
132
    type = "simple",
133
)
134
"""