]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | from __future__ import absolute_import |
2 | from __future__ import division | |
3 | from __future__ import print_function | |
4 | from __future__ import unicode_literals | |
11fdf7f2 | 5 | rocksdb_target_header = """load("@fbcode_macros//build_defs:auto_headers.bzl", "AutoHeaders") |
494da23a TL |
6 | load("@fbcode_macros//build_defs:cpp_library.bzl", "cpp_library") |
7 | load(":defs.bzl", "test_binary") | |
11fdf7f2 TL |
8 | |
9 | REPO_PATH = package_name() + "/" | |
10 | ||
494da23a | 11 | ROCKSDB_COMPILER_FLAGS = [ |
11fdf7f2 TL |
12 | "-fno-builtin-memcmp", |
13 | "-DROCKSDB_PLATFORM_POSIX", | |
14 | "-DROCKSDB_LIB_IO_POSIX", | |
15 | "-DROCKSDB_FALLOCATE_PRESENT", | |
16 | "-DROCKSDB_MALLOC_USABLE_SIZE", | |
17 | "-DROCKSDB_RANGESYNC_PRESENT", | |
18 | "-DROCKSDB_SCHED_GETCPU_PRESENT", | |
19 | "-DROCKSDB_SUPPORT_THREAD_LOCAL", | |
20 | "-DOS_LINUX", | |
21 | # Flags to enable libs we include | |
22 | "-DSNAPPY", | |
23 | "-DZLIB", | |
24 | "-DBZIP2", | |
25 | "-DLZ4", | |
26 | "-DZSTD", | |
494da23a | 27 | "-DZSTD_STATIC_LINKING_ONLY", |
11fdf7f2 TL |
28 | "-DGFLAGS=gflags", |
29 | "-DNUMA", | |
30 | "-DTBB", | |
31 | # Needed to compile in fbcode | |
32 | "-Wno-expansion-to-defined", | |
33 | # Added missing flags from output of build_detect_platform | |
34 | "-DROCKSDB_PTHREAD_ADAPTIVE_MUTEX", | |
35 | "-DROCKSDB_BACKTRACE", | |
36 | "-Wnarrowing", | |
7c673cae FG |
37 | ] |
38 | ||
494da23a | 39 | ROCKSDB_EXTERNAL_DEPS = [ |
11fdf7f2 TL |
40 | ("bzip2", None, "bz2"), |
41 | ("snappy", None, "snappy"), | |
42 | ("zlib", None, "z"), | |
43 | ("gflags", None, "gflags"), | |
44 | ("lz4", None, "lz4"), | |
45 | ("zstd", None), | |
46 | ("tbb", None), | |
47 | ("numa", None, "numa"), | |
48 | ("googletest", None, "gtest"), | |
7c673cae FG |
49 | ] |
50 | ||
494da23a | 51 | ROCKSDB_PREPROCESSOR_FLAGS = [ |
11fdf7f2 TL |
52 | # Directories with files for #include |
53 | "-I" + REPO_PATH + "include/", | |
54 | "-I" + REPO_PATH, | |
7c673cae | 55 | ] |
11fdf7f2 | 56 | |
494da23a | 57 | ROCKSDB_ARCH_PREPROCESSOR_FLAGS = { |
11fdf7f2 TL |
58 | "x86_64": [ |
59 | "-DHAVE_SSE42", | |
60 | "-DHAVE_PCLMUL", | |
61 | ], | |
62 | } | |
63 | ||
64 | build_mode = read_config("fbcode", "build_mode") | |
65 | ||
66 | is_opt_mode = build_mode.startswith("opt") | |
67 | ||
68 | # -DNDEBUG is added by default in opt mode in fbcode. But adding it twice | |
69 | # doesn't harm and avoid forgetting to add it. | |
494da23a TL |
70 | ROCKSDB_COMPILER_FLAGS += (["-DNDEBUG"] if is_opt_mode else []) |
71 | ||
72 | sanitizer = read_config("fbcode", "sanitizer") | |
73 | ||
74 | # Do not enable jemalloc if sanitizer presents. RocksDB will further detect | |
75 | # whether the binary is linked with jemalloc at runtime. | |
76 | ROCKSDB_COMPILER_FLAGS += (["-DROCKSDB_JEMALLOC"] if sanitizer == "" else []) | |
77 | ||
78 | ROCKSDB_EXTERNAL_DEPS += ([("jemalloc", None, "headers")] if sanitizer == "" else []) | |
7c673cae FG |
79 | """ |
80 | ||
81 | ||
82 | library_template = """ | |
83 | cpp_library( | |
11fdf7f2 TL |
84 | name = "{name}", |
85 | srcs = [{srcs}], | |
86 | {headers_attr_prefix}headers = {headers}, | |
494da23a TL |
87 | arch_preprocessor_flags = ROCKSDB_ARCH_PREPROCESSOR_FLAGS, |
88 | compiler_flags = ROCKSDB_COMPILER_FLAGS, | |
89 | preprocessor_flags = ROCKSDB_PREPROCESSOR_FLAGS, | |
11fdf7f2 | 90 | deps = [{deps}], |
494da23a | 91 | external_deps = ROCKSDB_EXTERNAL_DEPS, |
7c673cae FG |
92 | ) |
93 | """ | |
94 | ||
95 | binary_template = """ | |
96 | cpp_binary( | |
11fdf7f2 TL |
97 | name = "%s", |
98 | srcs = [%s], | |
494da23a TL |
99 | arch_preprocessor_flags = ROCKSDB_ARCH_PREPROCESSOR_FLAGS, |
100 | compiler_flags = ROCKSDB_COMPILER_FLAGS, | |
101 | preprocessor_flags = ROCKSDB_PREPROCESSOR_FLAGS, | |
11fdf7f2 | 102 | deps = [%s], |
494da23a | 103 | external_deps = ROCKSDB_EXTERNAL_DEPS, |
7c673cae FG |
104 | ) |
105 | """ | |
106 | ||
11fdf7f2 TL |
107 | test_cfg_template = """ [ |
108 | "%s", | |
109 | "%s", | |
110 | "%s", | |
111 | ], | |
112 | """ | |
113 | ||
7c673cae FG |
114 | unittests_template = """ |
115 | # [test_name, test_src, test_type] | |
11fdf7f2 TL |
116 | ROCKS_TESTS = [ |
117 | %s] | |
7c673cae FG |
118 | |
119 | # Generate a test rule for each entry in ROCKS_TESTS | |
11fdf7f2 TL |
120 | # Do not build the tests in opt mode, since SyncPoint and other test code |
121 | # will not be included. | |
494da23a TL |
122 | [ |
123 | test_binary( | |
124 | parallelism = parallelism, | |
125 | rocksdb_arch_preprocessor_flags = ROCKSDB_ARCH_PREPROCESSOR_FLAGS, | |
126 | rocksdb_compiler_flags = ROCKSDB_COMPILER_FLAGS, | |
127 | rocksdb_external_deps = ROCKSDB_EXTERNAL_DEPS, | |
128 | rocksdb_preprocessor_flags = ROCKSDB_PREPROCESSOR_FLAGS, | |
129 | test_cc = test_cc, | |
130 | test_name = test_name, | |
131 | ) | |
132 | for test_name, test_cc, parallelism in ROCKS_TESTS | |
133 | if not is_opt_mode | |
134 | ] | |
7c673cae | 135 | """ |