forked from apache/incubator-pegasus
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
491 lines (455 loc) · 18.3 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
##############################################################################
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
##############################################################################
cmake_minimum_required(VERSION 3.24.0)
project(pegasus_thirdparties)
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
# require at least gcc 7.0.0
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0.0)
message(FATAL_ERROR "GCC version must be at least 7.0.0!")
endif ()
endif ()
find_package(OpenSSL REQUIRED)
include(ExternalProject)
include(CheckCXXCompilerFlag)
set(TP_DIR ${PROJECT_SOURCE_DIR})
set(TP_OUTPUT ${PROJECT_SOURCE_DIR}/output)
# TMP_DIR = <base>/tmp/<name>
# STAMP_DIR = <base>/Stamp/<name>
# DOWNLOAD_DIR = <base>/Download/<name>
# SOURCE_DIR = <base>/Source/<name>
# BINARY_DIR = <base>/Build/<name>
# INSTALL_DIR = <base>/Install/<name>
# LOG_DIR = <STAMP_DIR>
set_property(DIRECTORY PROPERTY EP_BASE ${TP_DIR}/build)
include(ProcessorCount)
ProcessorCount(PARALLEL)
if(PARALLEL EQUAL 0)
set(PARALLEL 1)
endif()
set(OSS_URL_PREFIX "http://pegasus-thirdparty-package.oss-cn-beijing.aliyuncs.com")
message(STATUS "Setting up third-parties...")
file(MAKE_DIRECTORY ${TP_OUTPUT}/include)
file(MAKE_DIRECTORY ${TP_OUTPUT}/lib)
ExternalProject_Add(boost
URL ${OSS_URL_PREFIX}/boost_1_69_0.tar.bz2
https://dl.bintray.com/boostorg/release/1.69.0/source/boost_1_69_0.tar.bz2
URL_MD5 a1332494397bf48332cb152abfefcec2
CONFIGURE_COMMAND ./bootstrap.sh --prefix=. --with-libraries=system,filesystem --with-toolset=gcc
BUILD_COMMAND ./b2 toolset=gcc cxxflags=-fPIC cxxstd=11 install
INSTALL_COMMAND cp -R include/boost ${TP_OUTPUT}/include && cp -R lib ${TP_OUTPUT}/
BUILD_IN_SOURCE 1
DOWNLOAD_EXTRACT_TIMESTAMP true
DOWNLOAD_NO_PROGRESS true
)
# header-only
file(MAKE_DIRECTORY ${TP_OUTPUT}/include/concurrentqueue)
ExternalProject_Add(concurrentqueue
URL ${OSS_URL_PREFIX}/concurrentqueue-1.0.1.tar.gz
https://codeload.github.com/cameron314/concurrentqueue/tar.gz/v1.0.1
URL_MD5 80016b584fddffd67073349efd7b8958
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND cp -R blockingconcurrentqueue.h concurrentqueue.h lightweightsemaphore.h internal/ ${TP_OUTPUT}/include/concurrentqueue
BUILD_IN_SOURCE 1
DOWNLOAD_EXTRACT_TIMESTAMP true
DOWNLOAD_NO_PROGRESS true
)
# header-only
file(MAKE_DIRECTORY ${TP_OUTPUT}/include/readerwriterqueue)
ExternalProject_Add(readerwriterqueue
URL ${OSS_URL_PREFIX}/readerwriterqueue-1.0.2.tar.gz
https://codeload.github.com/cameron314/readerwriterqueue/tar.gz/v1.0.2
URL_MD5 9e355a2660bd2810cb1874fb7366906e
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND cp -R atomicops.h readerwriterqueue.h ${TP_OUTPUT}/include/readerwriterqueue
BUILD_IN_SOURCE 1
DOWNLOAD_EXTRACT_TIMESTAMP true
DOWNLOAD_NO_PROGRESS true
)
ExternalProject_Add(googletest
URL ${OSS_URL_PREFIX}/googletest-1.14.0.tar.gz
https://github.com/google/googletest/archive/refs/tags/v1.14.0.tar.gz
URL_MD5 c8340a482851ef6a3fe618a082304cfc
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${TP_OUTPUT}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
DOWNLOAD_EXTRACT_TIMESTAMP true
DOWNLOAD_NO_PROGRESS true
)
ExternalProject_Get_property(googletest SOURCE_DIR)
set(googletest_SRC ${SOURCE_DIR})
ExternalProject_Add(gperftools
URL ${OSS_URL_PREFIX}/gperftools-2.13.tar.gz
https://github.com/gperftools/gperftools/releases/download/gperftools-2.13/gperftools-2.13.tar.gz
URL_MD5 4e218a40a354748c50d054c285caaae8
CONFIGURE_COMMAND ./configure --prefix=${TP_OUTPUT} --enable-static=no --enable-frame-pointers=yes
BUILD_IN_SOURCE 1
DOWNLOAD_EXTRACT_TIMESTAMP true
DOWNLOAD_NO_PROGRESS true
)
set(HDFS_CLIENT_DIR "hadoop-hdfs-project/hadoop-hdfs-native-client")
ExternalProject_Add(hadoop
URL ${OSS_URL_PREFIX}/hadoop-release-2.8.4.tar.gz
https://github.com/apache/hadoop/archive/refs/tags/rel/release-2.8.4.tar.gz
URL_MD5 a1be737d4bff14923689619ab6545a96
PATCH_COMMAND ""
COMMAND cd ${HDFS_CLIENT_DIR} && mvn package -Pdist,native -DskipTests -Dmaven.javadoc.skip=true -Dtar
COMMAND cd ${HDFS_CLIENT_DIR} && cp -R target/hadoop-hdfs-native-client-2.8.4/include/. ${TP_OUTPUT}/include/hdfs && cp -R target/hadoop-hdfs-native-client-2.8.4/lib/native/. ${TP_OUTPUT}/lib
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
DOWNLOAD_EXTRACT_TIMESTAMP true
DOWNLOAD_NO_PROGRESS true
)
# header-only
ExternalProject_Add(rapidjson
URL ${OSS_URL_PREFIX}/rapidjson-1.1.0.tar.gz
https://codeload.github.com/Tencent/rapidjson/tar.gz/v1.1.0
URL_MD5 badd12c511e081fec6c89c43a7027bce
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND cp -R include/rapidjson ${TP_OUTPUT}/include
BUILD_IN_SOURCE 1
DOWNLOAD_EXTRACT_TIMESTAMP true
DOWNLOAD_NO_PROGRESS true
)
ExternalProject_Add(thrift
URL ${OSS_URL_PREFIX}/thrift-0.9.3.tar.gz
http://archive.apache.org/dist/thrift/0.9.3/thrift-0.9.3.tar.gz
URL_MD5 88d667a8ae870d5adeca8cb7d6795442
PATCH_COMMAND patch -p1 < ${TP_DIR}/fix_thrift_for_cpp11.patch
CMAKE_ARGS -DCMAKE_BUILD_TYPE=release
-DWITH_JAVA=OFF
-DWITH_PYTHON=OFF
-DWITH_C_GLIB=OFF
-DWITH_CPP=ON
-DBUILD_TESTING=OFF
-DBUILD_EXAMPLES=OFF
-DWITH_QT5=OFF
-DWITH_QT4=OFF
-DWITH_OPENSSL=OFF
-DBUILD_COMPILER=ON
-DBUILD_TUTORIALS=OFF
-DWITH_LIBEVENT=OFF
-DCMAKE_INSTALL_PREFIX=${TP_OUTPUT}
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
-DWITH_SHARED_LIB=OFF
-DBOOST_ROOT=${TP_OUTPUT}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
DEPENDS boost
DOWNLOAD_EXTRACT_TIMESTAMP true
DOWNLOAD_NO_PROGRESS true
)
check_cxx_compiler_flag(-Wformat-overflow COMPILER_SUPPORTS_FORMAT_OVERFLOW)
if (COMPILER_SUPPORTS_FORMAT_OVERFLOW)
set(ZOOKEEPER_CFLAGS -Wno-error=format-overflow)
endif ()
if (NOT APPLE)
set(ZOOKEEPER_WITH_CYRUS_SASL ${TP_OUTPUT})
else ()
set(ZOOKEEPER_WITH_CYRUS_SASL /usr/local/opt/cyrus-sasl/lib)
endif ()
ExternalProject_Add(zookeeper
URL ${OSS_URL_PREFIX}/apache-zookeeper-3.7.0.tar.gz
http://downloads.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0.tar.gz
URL_MD5 44c2a33e01931aed94ef7f3d39d0963e
PATCH_COMMAND ""
COMMAND cd zookeeper-jute && mvn compile && cd ../zookeeper-client/zookeeper-client-c && cmake -DCMAKE_BUILD_TYPE=release -DWANT_CPPUNIT=OFF -DWITH_OPENSSL=OFF -DWITH_CYRUS_SASL=${ZOOKEEPER_WITH_CYRUS_SASL} -DCMAKE_INSTALL_PREFIX=${TP_OUTPUT}
COMMAND cd zookeeper-client/zookeeper-client-c && make -j${PARALLEL}
COMMAND cp -R zookeeper-client/zookeeper-client-c/include/. ${TP_OUTPUT}/include/zookeeper && cp zookeeper-client/zookeeper-client-c/generated/zookeeper.jute.h ${TP_OUTPUT}/include/zookeeper && cp zookeeper-client/zookeeper-client-c/libzookeeper.a ${TP_OUTPUT}/lib && cp zookeeper-client/zookeeper-client-c/libhashtable.a ${TP_OUTPUT}/lib
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
BUILD_IN_SOURCE 1
DOWNLOAD_EXTRACT_TIMESTAMP true
DOWNLOAD_NO_PROGRESS true
)
ExternalProject_Add(libevent
URL ${OSS_URL_PREFIX}/libevent-release-2.1.8-stable.tar.gz
https://github.com/libevent/libevent/archive/release-2.1.8-stable.tar.gz
URL_MD5 80f8652e4b08d2ec86a5f5eb46b74510
PATCH_COMMAND patch -p1 < ${TP_DIR}/fix_libevent_for_macos.patch
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${TP_OUTPUT}
-DEVENT__DISABLE_DEBUG_MODE=On
-DEVENT__DISABLE_BENCHMARK=On
-DEVENT__DISABLE_TESTS=On
-DEVENT__DISABLE_SAMPLES=On
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
DOWNLOAD_EXTRACT_TIMESTAMP true
DOWNLOAD_NO_PROGRESS true
)
ExternalProject_Add(fmt
URL https://github.com/fmtlib/fmt/archive/refs/tags/10.1.1.tar.gz
URL_MD5 0d41a16f1b3878d44e6fd7ff1f6cc45a
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${TP_OUTPUT}
-DCMAKE_BUILD_TYPE=release
-DFMT_TEST=false
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
DOWNLOAD_EXTRACT_TIMESTAMP true
DOWNLOAD_NO_PROGRESS true
)
set(CURL_OPTIONS
--disable-dict
--disable-file
--disable-ftp
--disable-gopher
--disable-imap
--disable-ipv6
--disable-ldap
--disable-ldaps
--disable-manual
--disable-pop3
--disable-rtsp
--disable-shared
--disable-smtp
--disable-telnet
--disable-tftp
--without-brotli
--without-libidn2
--without-librtmp
--without-libssh2
--without-ssl
--without-zlib
--without-zstd
--with-gssapi
)
if (APPLE)
set(CURL_OPTIONS
${CURL_OPTIONS}
--without-nghttp2
)
endif ()
ExternalProject_Add(curl
URL ${OSS_URL_PREFIX}/curl-8.4.0.tar.gz
http://curl.haxx.se/download/curl-8.4.0.tar.gz
URL_MD5 533e8a3b1228d5945a6a512537bea4c7
CONFIGURE_COMMAND CFLAGS=-fPIC CPPFLAGS=-fPIC ./configure --prefix=${TP_OUTPUT}
${CURL_OPTIONS}
BUILD_IN_SOURCE 1
DOWNLOAD_EXTRACT_TIMESTAMP true
DOWNLOAD_NO_PROGRESS true
)
ExternalProject_Add(prometheus-cpp
URL ${OSS_URL_PREFIX}/prometheus-cpp-with-submodules-1.2.4.tar.gz
https://github.com/jupp0r/prometheus-cpp/releases/download/v1.2.4/prometheus-cpp-with-submodules.tar.gz
URL_MD5 cdb515e802aa9aaaf1f6dde1271a20a2
DEPENDS curl
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${TP_OUTPUT}
-DCMAKE_C_FLAGS=-fPIC
-DCMAKE_CXX_FLAGS=-fPIC
-DENABLE_TESTING=OFF
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
DOWNLOAD_EXTRACT_TIMESTAMP true
DOWNLOAD_NO_PROGRESS true
)
# header-only
ExternalProject_Add(nlohmann_json
URL ${OSS_URL_PREFIX}/nlohmann_json-3.9.1.zip
https://github.com/nlohmann/json/releases/download/v3.9.1/include.zip
URL_MD5 d2f66c608af689e21d69a33c220e974e
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND cp -R include/nlohmann ${TP_OUTPUT}/include
BUILD_IN_SOURCE 1
DOWNLOAD_EXTRACT_TIMESTAMP true
DOWNLOAD_NO_PROGRESS true
)
ExternalProject_Add(abseil
URL ${OSS_URL_PREFIX}/abseil-20230802.1.zip
https://github.com/abseil/abseil-cpp/archive/refs/tags/20230802.1.zip
URL_MD5 5c6193dbc82834f8e762c6a28c9cc615
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${TP_OUTPUT}
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
-DABSL_FIND_GOOGLETEST=OFF
-DCMAKE_CXX_STANDARD=17
DOWNLOAD_EXTRACT_TIMESTAMP true
DOWNLOAD_NO_PROGRESS true
)
ExternalProject_Add(s2geometry
URL ${OSS_URL_PREFIX}/s2geometry-0.10.0.tar.gz
https://github.com/google/s2geometry/archive/refs/tags/v0.10.0.tar.gz
URL_MD5 c68f3c5d326dde9255681b9201393a9f
PATCH_COMMAND patch -p1 < ${TP_DIR}/fix_s2_build_with_absl_and_gtest.patch
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${TP_OUTPUT}
-DBUILD_SHARED_LIBS=OFF
-DGTEST_ROOT=${googletest_SRC}/googletest
-DWITH_PYTHON=OFF
-DBUILD_EXAMPLES=OFF
DEPENDS googletest abseil
DOWNLOAD_EXTRACT_TIMESTAMP true
DOWNLOAD_NO_PROGRESS true
)
option(USE_JEMALLOC "use jemalloc" OFF)
message(STATUS "USE_JEMALLOC = ${USE_JEMALLOC}")
ExternalProject_Add(jemalloc
URL ${OSS_URL_PREFIX}/jemalloc-5.2.1.tar.bz2
https://github.com/jemalloc/jemalloc/releases/download/5.2.1/jemalloc-5.2.1.tar.bz2
URL_MD5 3d41fbf006e6ebffd489bdb304d009ae
PATCH_COMMAND patch -p0 < ${TP_DIR}/fix_jemalloc_for_m1_on_macos.patch
CONFIGURE_COMMAND ./configure --prefix=${TP_OUTPUT} --enable-cxx --enable-stats --enable-prof
BUILD_COMMAND make -j${PARALLEL}
INSTALL_COMMAND make install
BUILD_IN_SOURCE 1
DOWNLOAD_EXTRACT_TIMESTAMP true
DOWNLOAD_NO_PROGRESS true
)
set(SNAPPY_OPTIONS
-DCMAKE_INSTALL_PREFIX=${TP_OUTPUT}
-DCMAKE_INSTALL_LIBDIR=lib
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
-DCMAKE_BUILD_TYPE=Release
-DBUILD_SHARED_LIBS=OFF
-DSNAPPY_BUILD_TESTS=OFF
-DSNAPPY_BUILD_BENCHMARKS=OFF
-DSNAPPY_FUZZING_BUILD=OFF
-DSNAPPY_INSTALL=ON)
execute_process(COMMAND arch OUTPUT_VARIABLE ARCH_NAME OUTPUT_STRIP_TRAILING_WHITESPACE)
message(STATUS "ARCH_NAME = ${ARCH_NAME}")
if (ARCH_NAME EQUAL "x86_64")
set(SNAPPY_OPTIONS
${SNAPPY_OPTIONS}
-DSNAPPY_REQUIRE_AVX=ON
-DSNAPPY_REQUIRE_AVX2=ON)
endif ()
ExternalProject_Add(snappy
URL ${OSS_URL_PREFIX}/snappy-1.1.10.tar.gz
https://github.com/google/snappy/archive/refs/tags/1.1.10.tar.gz
URL_MD5 70153395ebe6d72febe2cf2e40026a44
PATCH_COMMAND patch -p1 < ${TP_DIR}/fix_snappy-Wsign-compare-warning.patch
CMAKE_ARGS ${SNAPPY_OPTIONS}
BUILD_COMMAND make -j${PARALLEL}
INSTALL_COMMAND make install
DOWNLOAD_EXTRACT_TIMESTAMP true
DOWNLOAD_NO_PROGRESS true
)
ExternalProject_Add(zstd
URL ${OSS_URL_PREFIX}/zstd-1.5.5.tar.gz
https://github.com/facebook/zstd/releases/download/v1.5.5/zstd-1.5.5.tar.gz
URL_MD5 63251602329a106220e0a5ad26ba656f
PATCH_COMMAND ""
CONFIGURE_COMMAND cmake build/cmake
-DCMAKE_INSTALL_PREFIX=${TP_OUTPUT}
-DCMAKE_INSTALL_LIBDIR=lib
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
-DCMAKE_BUILD_TYPE=Release
-DZSTD_BUILD_PROGRAMS=OFF
-DZSTD_BUILD_TESTS=OFF
-DZSTD_BUILD_CONTRIB=OFF
-DZSTD_BUILD_SHARED=OFF
-DZSTD_BUILD_STATIC=ON
BUILD_COMMAND make -j${PARALLEL}
INSTALL_COMMAND make install
BUILD_IN_SOURCE 1
DOWNLOAD_EXTRACT_TIMESTAMP true
DOWNLOAD_NO_PROGRESS true
)
ExternalProject_Add(lz4
URL ${OSS_URL_PREFIX}/lz4-1.9.4.tar.gz
https://github.com/lz4/lz4/releases/download/v1.9.4/lz4-1.9.4.tar.gz
URL_MD5 e9286adb64040071c5e23498bf753261
PATCH_COMMAND ""
CONFIGURE_COMMAND cmake build/cmake
-DCMAKE_INSTALL_PREFIX=${TP_OUTPUT}
-DCMAKE_INSTALL_LIBDIR=lib
-DLZ4_POSITION_INDEPENDENT_LIB=ON
-DCMAKE_BUILD_TYPE=Release
-DLZ4_BUILD_CLI=OFF
-DBUILD_SHARED_LIBS=OFF
-DBUILD_STATIC_LIBS=ON
BUILD_COMMAND make -j${PARALLEL}
INSTALL_COMMAND make install
BUILD_IN_SOURCE 1
DOWNLOAD_EXTRACT_TIMESTAMP true
DOWNLOAD_NO_PROGRESS true
)
option(ROCKSDB_PORTABLE "Minimum CPU arch to support, or 0 = current CPU, 1 = baseline CPU" 0)
set(ROCKSDB_OPTIONS
-DFAIL_ON_WARNINGS=OFF
-DWITH_BENCHMARK_TOOLS=OFF
-DWITH_TOOLS=OFF
-DWITH_LZ4=ON
-Dlz4_ROOT_DIR=${TP_OUTPUT}
-DWITH_ZSTD=ON
-Dzstd_ROOT_DIR=${TP_OUTPUT}
-DWITH_SNAPPY=ON
-Dsnappy_ROOT_DIR=${TP_OUTPUT}
-DWITH_BZ2=OFF
-DWITH_TESTS=OFF
-DWITH_GFLAGS=OFF
-DUSE_RTTI=ON
-DCMAKE_BUILD_TYPE=Release
-DWITH_JEMALLOC=${USE_JEMALLOC}
-DJEMALLOC_ROOT_DIR=${TP_OUTPUT}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_INSTALL_PREFIX=${TP_OUTPUT}
-DCMAKE_INSTALL_LIBDIR=lib
-DPORTABLE=${ROCKSDB_PORTABLE})
# Link error on MacOS, disable building encfs plugin.
# See https://github.com/pegasus-kv/encfs/issues/4
if (NOT APPLE)
set(ROCKSDB_OPTIONS
${ROCKSDB_OPTIONS}
-DROCKSDB_PLUGINS=encfs)
endif ()
ExternalProject_Add(rocksdb
URL ${OSS_URL_PREFIX}/rocksdb-v8.5.3.tar.gz
https://github.com/facebook/rocksdb/archive/refs/tags/v8.5.3.tar.gz
URL_MD5 f03eac50ec958a21a7cb56183afb8fe4
PATCH_COMMAND patch -p1 < ${TP_DIR}/fix_rocksdb-cmake-PORTABLE-option.patch
COMMAND rm -rf ${TP_DIR}/build/Source/rocksdb/plugin/encfs
COMMAND git clone -b main --depth=1 https://github.com/pegasus-kv/encfs.git ${TP_DIR}/build/Source/rocksdb/plugin/encfs
DEPENDS googletest jemalloc lz4 snappy zstd
CMAKE_ARGS ${ROCKSDB_OPTIONS}
DOWNLOAD_EXTRACT_TIMESTAMP true
DOWNLOAD_NO_PROGRESS true
)
ExternalProject_Add(http-parser
URL ${OSS_URL_PREFIX}/http-parser-2.9.4.zip
https://github.com/nodejs/http-parser/archive/v2.9.4.zip
URL_MD5 f6900b9209d3d6b80c70e050ac33b834
CONFIGURE_COMMAND mkdir -p ${TP_OUTPUT}/include/nodejs
BUILD_COMMAND ""
INSTALL_COMMAND cp -R http_parser.h ${TP_OUTPUT}/include/nodejs/http_parser.h
BUILD_IN_SOURCE 1
DOWNLOAD_EXTRACT_TIMESTAMP true
DOWNLOAD_NO_PROGRESS true
)
ExternalProject_Add(spdlog
URL https://github.com/gabime/spdlog/archive/refs/tags/v1.14.1.tar.gz
URL_MD5 f2c3f15c20e67b261836ff7bfda302cf
PATCH_COMMAND ""
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${TP_OUTPUT}
-DSPDLOG_ENABLE_PCH=ON
-DSPDLOG_BUILD_PIC=ON
-DSPDLOG_FMT_EXTERNAL=ON
-DSPDLOG_NO_EXCEPTIONS=ON
-Dfmt_DIR=${TP_OUTPUT}/lib/cmake/fmt
BUILD_COMMAND make -j${PARALLEL}
INSTALL_COMMAND make install
DEPENDS fmt
DOWNLOAD_EXTRACT_TIMESTAMP true
DOWNLOAD_NO_PROGRESS true
)