]>
Commit | Line | Data |
---|---|---|
7c673cae | 1 | #!/bin/sh |
f67539c2 | 2 | # Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. |
7c673cae FG |
3 | # |
4 | # Set environment variables so that we can compile rocksdb using | |
5 | # fbcode settings. It uses the latest g++ and clang compilers and also | |
6 | # uses jemalloc | |
7 | # Environment variables that change the behavior of this script: | |
8 | # PIC_BUILD -- if true, it will only take pic versions of libraries from fbcode. libraries that don't have pic variant will not be included | |
9 | ||
10 | ||
11 | BASEDIR=`dirname $BASH_SOURCE` | |
12 | source "$BASEDIR/dependencies.sh" | |
13 | ||
14 | CFLAGS="" | |
15 | ||
16 | # libgcc | |
17 | LIBGCC_INCLUDE="$LIBGCC_BASE/include" | |
18 | LIBGCC_LIBS=" -L $LIBGCC_BASE/lib" | |
19 | ||
20 | # glibc | |
21 | GLIBC_INCLUDE="$GLIBC_BASE/include" | |
22 | GLIBC_LIBS=" -L $GLIBC_BASE/lib" | |
23 | ||
24 | # snappy | |
25 | SNAPPY_INCLUDE=" -I $SNAPPY_BASE/include/" | |
26 | if test -z $PIC_BUILD; then | |
27 | SNAPPY_LIBS=" $SNAPPY_BASE/lib/libsnappy.a" | |
28 | else | |
29 | SNAPPY_LIBS=" $SNAPPY_BASE/lib/libsnappy_pic.a" | |
30 | fi | |
31 | CFLAGS+=" -DSNAPPY" | |
32 | ||
33 | if test -z $PIC_BUILD; then | |
34 | # location of zlib headers and libraries | |
35 | ZLIB_INCLUDE=" -I $ZLIB_BASE/include/" | |
36 | ZLIB_LIBS=" $ZLIB_BASE/lib/libz.a" | |
37 | CFLAGS+=" -DZLIB" | |
38 | ||
39 | # location of bzip headers and libraries | |
40 | BZIP_INCLUDE=" -I $BZIP2_BASE/include/" | |
41 | BZIP_LIBS=" $BZIP2_BASE/lib/libbz2.a" | |
42 | CFLAGS+=" -DBZIP2" | |
43 | ||
44 | LZ4_INCLUDE=" -I $LZ4_BASE/include/" | |
45 | LZ4_LIBS=" $LZ4_BASE/lib/liblz4.a" | |
46 | CFLAGS+=" -DLZ4" | |
11fdf7f2 | 47 | fi |
7c673cae | 48 | |
11fdf7f2 TL |
49 | ZSTD_INCLUDE=" -I $ZSTD_BASE/include/" |
50 | if test -z $PIC_BUILD; then | |
7c673cae | 51 | ZSTD_LIBS=" $ZSTD_BASE/lib/libzstd.a" |
11fdf7f2 TL |
52 | else |
53 | ZSTD_LIBS=" $ZSTD_BASE/lib/libzstd_pic.a" | |
7c673cae | 54 | fi |
494da23a | 55 | CFLAGS+=" -DZSTD -DZSTD_STATIC_LINKING_ONLY" |
7c673cae FG |
56 | |
57 | # location of gflags headers and libraries | |
58 | GFLAGS_INCLUDE=" -I $GFLAGS_BASE/include/" | |
59 | if test -z $PIC_BUILD; then | |
60 | GFLAGS_LIBS=" $GFLAGS_BASE/lib/libgflags.a" | |
61 | else | |
62 | GFLAGS_LIBS=" $GFLAGS_BASE/lib/libgflags_pic.a" | |
63 | fi | |
64 | CFLAGS+=" -DGFLAGS=gflags" | |
65 | ||
66 | # location of jemalloc | |
67 | JEMALLOC_INCLUDE=" -I $JEMALLOC_BASE/include/" | |
68 | JEMALLOC_LIB=" $JEMALLOC_BASE/lib/libjemalloc.a" | |
69 | ||
70 | if test -z $PIC_BUILD; then | |
71 | # location of numa | |
72 | NUMA_INCLUDE=" -I $NUMA_BASE/include/" | |
73 | NUMA_LIB=" $NUMA_BASE/lib/libnuma.a" | |
74 | CFLAGS+=" -DNUMA" | |
75 | ||
76 | # location of libunwind | |
77 | LIBUNWIND="$LIBUNWIND_BASE/lib/libunwind.a" | |
78 | fi | |
79 | ||
80 | # location of TBB | |
81 | TBB_INCLUDE=" -isystem $TBB_BASE/include/" | |
82 | if test -z $PIC_BUILD; then | |
83 | TBB_LIBS="$TBB_BASE/lib/libtbb.a" | |
84 | else | |
85 | TBB_LIBS="$TBB_BASE/lib/libtbb_pic.a" | |
86 | fi | |
87 | CFLAGS+=" -DTBB" | |
88 | ||
f67539c2 TL |
89 | test "$USE_SSE" || USE_SSE=1 |
90 | export USE_SSE | |
91 | test "$PORTABLE" || PORTABLE=1 | |
92 | export PORTABLE | |
7c673cae FG |
93 | |
94 | BINUTILS="$BINUTILS_BASE/bin" | |
95 | AR="$BINUTILS/ar" | |
96 | ||
97 | DEPS_INCLUDE="$SNAPPY_INCLUDE $ZLIB_INCLUDE $BZIP_INCLUDE $LZ4_INCLUDE $ZSTD_INCLUDE $GFLAGS_INCLUDE $NUMA_INCLUDE $TBB_INCLUDE" | |
98 | ||
99 | STDLIBS="-L $GCC_BASE/lib64" | |
100 | ||
101 | CLANG_BIN="$CLANG_BASE/bin" | |
102 | CLANG_LIB="$CLANG_BASE/lib" | |
103 | CLANG_SRC="$CLANG_BASE/../../src" | |
104 | ||
105 | CLANG_ANALYZER="$CLANG_BIN/clang++" | |
106 | CLANG_SCAN_BUILD="$CLANG_SRC/llvm/tools/clang/tools/scan-build/bin/scan-build" | |
107 | ||
108 | if [ -z "$USE_CLANG" ]; then | |
109 | # gcc | |
110 | CC="$GCC_BASE/bin/gcc" | |
111 | CXX="$GCC_BASE/bin/g++" | |
20effc67 | 112 | AR="$GCC_BASE/bin/gcc-ar" |
7c673cae FG |
113 | |
114 | CFLAGS+=" -B$BINUTILS/gold" | |
115 | CFLAGS+=" -isystem $GLIBC_INCLUDE" | |
116 | CFLAGS+=" -isystem $LIBGCC_INCLUDE" | |
117 | JEMALLOC=1 | |
118 | else | |
119 | # clang | |
120 | CLANG_INCLUDE="$CLANG_LIB/clang/stable/include" | |
121 | CC="$CLANG_BIN/clang" | |
122 | CXX="$CLANG_BIN/clang++" | |
20effc67 | 123 | AR="$CLANG_BIN/llvm-ar" |
7c673cae FG |
124 | |
125 | KERNEL_HEADERS_INCLUDE="$KERNEL_HEADERS_BASE/include" | |
126 | ||
127 | CFLAGS+=" -B$BINUTILS/gold -nostdinc -nostdlib" | |
128 | CFLAGS+=" -isystem $LIBGCC_BASE/include/c++/5.x " | |
129 | CFLAGS+=" -isystem $LIBGCC_BASE/include/c++/5.x/x86_64-facebook-linux " | |
130 | CFLAGS+=" -isystem $GLIBC_INCLUDE" | |
131 | CFLAGS+=" -isystem $LIBGCC_INCLUDE" | |
132 | CFLAGS+=" -isystem $CLANG_INCLUDE" | |
133 | CFLAGS+=" -isystem $KERNEL_HEADERS_INCLUDE/linux " | |
134 | CFLAGS+=" -isystem $KERNEL_HEADERS_INCLUDE " | |
135 | CFLAGS+=" -Wno-expansion-to-defined " | |
136 | CXXFLAGS="-nostdinc++" | |
137 | fi | |
138 | ||
139 | CFLAGS+=" $DEPS_INCLUDE" | |
11fdf7f2 | 140 | CFLAGS+=" -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 -DHAVE_SSE42" |
7c673cae FG |
141 | CXXFLAGS+=" $CFLAGS" |
142 | ||
143 | EXEC_LDFLAGS=" $SNAPPY_LIBS $ZLIB_LIBS $BZIP_LIBS $LZ4_LIBS $ZSTD_LIBS $GFLAGS_LIBS $NUMA_LIB $TBB_LIBS" | |
144 | EXEC_LDFLAGS+=" -B$BINUTILS/gold" | |
145 | EXEC_LDFLAGS+=" -Wl,--dynamic-linker,/usr/local/fbcode/gcc-5-glibc-2.23/lib/ld.so" | |
146 | EXEC_LDFLAGS+=" $LIBUNWIND" | |
147 | EXEC_LDFLAGS+=" -Wl,-rpath=/usr/local/fbcode/gcc-5-glibc-2.23/lib" | |
148 | # required by libtbb | |
149 | EXEC_LDFLAGS+=" -ldl" | |
150 | ||
151 | PLATFORM_LDFLAGS="$LIBGCC_LIBS $GLIBC_LIBS $STDLIBS -lgcc -lstdc++" | |
152 | ||
153 | EXEC_LDFLAGS_SHARED="$SNAPPY_LIBS $ZLIB_LIBS $BZIP_LIBS $LZ4_LIBS $ZSTD_LIBS $GFLAGS_LIBS $TBB_LIBS" | |
154 | ||
155 | VALGRIND_VER="$VALGRIND_BASE/bin/" | |
156 | ||
157 | LUA_PATH="$LUA_BASE" | |
158 | ||
159 | if test -z $PIC_BUILD; then | |
160 | LUA_LIB=" $LUA_PATH/lib/liblua.a" | |
161 | else | |
162 | LUA_LIB=" $LUA_PATH/lib/liblua_pic.a" | |
163 | fi | |
164 | ||
f67539c2 TL |
165 | USE_FOLLY_DISTRIBUTED_MUTEX=1 |
166 | ||
7c673cae | 167 | export CC CXX AR CFLAGS CXXFLAGS EXEC_LDFLAGS EXEC_LDFLAGS_SHARED VALGRIND_VER JEMALLOC_LIB JEMALLOC_INCLUDE CLANG_ANALYZER CLANG_SCAN_BUILD LUA_PATH LUA_LIB |