1# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
2# Edit definitions below to specify paths to include files and libraries of all 3rd party libraries
3
4# TODO: Make this work with find_package and/or get rid of it
5#
6# This example assumes all the libraries locate in directories under THIRDPARTY_HOME environment variable
7# Set environment variable THIRDPARTY_HOME to point to your third party libraries home (Unix style dir separators)
8# or change the paths below to reflect where the libraries actually reside
9#
10set (THIRDPARTY_LIBS "")         # Initialization, don't touch
11
12#
13# Defaults
14#
15set(GFLAGS_HOME $ENV{THIRDPARTY_HOME}/Gflags.Library)
16set(GFLAGS_INCLUDE ${GFLAGS_HOME}/build/native/include)
17set(GFLAGS_LIB_DEBUG ${GFLAGS_HOME}/lib/native/debug/amd64/gflags.lib)
18set(GFLAGS_LIB_RELEASE ${GFLAGS_HOME}/lib/native/retail/amd64/gflags.lib)
19
20# ================================================== GFLAGS ==================================================
21# For compatibility
22if (GFLAGS)
23  set(WITH_GFLAGS ON)
24endif ()
25
26if (WITH_GFLAGS)
27  message(STATUS "GFLAGS library is enabled")
28
29  if(DEFINED ENV{GFLAGS_INCLUDE})
30    set(GFLAGS_INCLUDE $ENV{GFLAGS_INCLUDE})
31  endif()
32
33  if(DEFINED ENV{GFLAGS_LIB_DEBUG})
34    set(GFLAGS_LIB_DEBUG $ENV{GFLAGS_LIB_DEBUG})
35  endif()
36
37  if(DEFINED ENV{GFLAGS_LIB_RELEASE})
38    set(GFLAGS_LIB_RELEASE $ENV{GFLAGS_LIB_RELEASE})
39  endif()
40
41  set(GFLAGS_CXX_FLAGS -DGFLAGS=gflags)
42  set(GFLAGS_LIBS debug ${GFLAGS_LIB_DEBUG} optimized ${GFLAGS_LIB_RELEASE})
43
44  add_definitions(${GFLAGS_CXX_FLAGS})
45  include_directories(${GFLAGS_INCLUDE})
46  set (THIRDPARTY_LIBS ${THIRDPARTY_LIBS} ${GFLAGS_LIBS})
47else ()
48  message(STATUS "GFLAGS library is disabled")
49endif ()
50
51# ================================================== SNAPPY ==================================================
52#
53# Edit these 4 lines to define paths to Snappy
54#
55set(SNAPPY_HOME $ENV{THIRDPARTY_HOME}/Snappy.Library)
56set(SNAPPY_INCLUDE ${SNAPPY_HOME}/build/native/inc/inc)
57set(SNAPPY_LIB_DEBUG ${SNAPPY_HOME}/lib/native/debug/amd64/snappy.lib)
58set(SNAPPY_LIB_RELEASE ${SNAPPY_HOME}/lib/native/retail/amd64/snappy.lib)
59
60# For compatibility
61if(SNAPPY)
62  set(WITH_SNAPPY ON)
63endif ()
64
65if (WITH_SNAPPY)
66  message(STATUS "SNAPPY library is enabled")
67
68  if(DEFINED ENV{SNAPPY_INCLUDE})
69    set(SNAPPY_INCLUDE $ENV{SNAPPY_INCLUDE})
70  endif()
71
72  if(DEFINED ENV{SNAPPY_LIB_DEBUG})
73    set(SNAPPY_LIB_DEBUG $ENV{SNAPPY_LIB_DEBUG})
74  endif()
75
76  if(DEFINED ENV{SNAPPY_LIB_RELEASE})
77    set(SNAPPY_LIB_RELEASE $ENV{SNAPPY_LIB_RELEASE})
78  endif()
79
80  set(SNAPPY_CXX_FLAGS -DSNAPPY)
81  set(SNAPPY_LIBS debug ${SNAPPY_LIB_DEBUG} optimized ${SNAPPY_LIB_RELEASE})
82
83  add_definitions(${SNAPPY_CXX_FLAGS})
84  include_directories(${SNAPPY_INCLUDE})
85  set (THIRDPARTY_LIBS ${THIRDPARTY_LIBS} ${SNAPPY_LIBS})
86else ()
87  message(STATUS "SNAPPY library is disabled")
88endif ()
89
90# ================================================== LZ4 ==================================================
91#
92# Edit these 4 lines to define paths to LZ4
93#
94set(LZ4_HOME $ENV{THIRDPARTY_HOME}/LZ4.Library)
95set(LZ4_INCLUDE ${LZ4_HOME}/build/native/inc/inc)
96set(LZ4_LIB_DEBUG ${LZ4_HOME}/lib/native/debug/amd64/lz4.lib)
97set(LZ4_LIB_RELEASE ${LZ4_HOME}/lib/native/retail/amd64/lz4.lib)
98
99
100# For compatibility
101if (LZ4)
102  set(WITH_LZ4 ON)
103endif ()
104
105if (WITH_LZ4)
106  message(STATUS "LZ4 library is enabled")
107
108  if(DEFINED ENV{LZ4_INCLUDE})
109    set(LZ4_INCLUDE $ENV{LZ4_INCLUDE})
110  endif()
111
112  if(DEFINED ENV{LZ4_LIB_DEBUG})
113    set(LZ4_LIB_DEBUG $ENV{LZ4_LIB_DEBUG})
114  endif()
115
116  if(DEFINED ENV{LZ4_LIB_RELEASE})
117    set(LZ4_LIB_RELEASE $ENV{LZ4_LIB_RELEASE})
118  endif()
119
120  set(LZ4_CXX_FLAGS -DLZ4)
121  set(LZ4_LIBS debug ${LZ4_LIB_DEBUG} optimized ${LZ4_LIB_RELEASE})
122
123  add_definitions(${LZ4_CXX_FLAGS})
124  include_directories(${LZ4_INCLUDE})
125  set (THIRDPARTY_LIBS ${THIRDPARTY_LIBS} ${LZ4_LIBS})
126else ()
127  message(STATUS "LZ4 library is disabled")
128endif ()
129
130# ================================================== ZLIB ==================================================
131#
132# Edit these 4 lines to define paths to ZLIB
133#
134set(ZLIB_HOME $ENV{THIRDPARTY_HOME}/ZLIB.Library)
135set(ZLIB_INCLUDE ${ZLIB_HOME}/build/native/inc/inc)
136set(ZLIB_LIB_DEBUG ${ZLIB_HOME}/lib/native/debug/amd64/zlib.lib)
137set(ZLIB_LIB_RELEASE ${ZLIB_HOME}/lib/native/retail/amd64/zlib.lib)
138
139# For compatibilty
140if (ZLIB)
141  set(WITH_ZLIB ON)
142endif ()
143
144if (WITH_ZLIB)
145  message(STATUS "ZLIB library is enabled")
146
147  if(DEFINED ENV{ZLIB_INCLUDE})
148    set(ZLIB_INCLUDE $ENV{ZLIB_INCLUDE})
149  endif()
150
151  if(DEFINED ENV{ZLIB_LIB_DEBUG})
152    set(ZLIB_LIB_DEBUG $ENV{ZLIB_LIB_DEBUG})
153  endif()
154
155  if(DEFINED ENV{ZLIB_LIB_RELEASE})
156    set(ZLIB_LIB_RELEASE $ENV{ZLIB_LIB_RELEASE})
157  endif()
158
159  set(ZLIB_CXX_FLAGS -DZLIB)
160  set(ZLIB_LIBS debug ${ZLIB_LIB_DEBUG} optimized ${ZLIB_LIB_RELEASE})
161
162  add_definitions(${ZLIB_CXX_FLAGS})
163  include_directories(${ZLIB_INCLUDE})
164  set (THIRDPARTY_LIBS ${THIRDPARTY_LIBS} ${ZLIB_LIBS})
165else ()
166  message(STATUS "ZLIB library is disabled")
167endif ()
168
169# ================================================== XPRESS ==================================================
170# This makes use of built-in Windows API, no additional includes, links to a system lib
171
172# For compatibilty
173if (XPRESS)
174  set(WITH_XPRESS ON)
175endif ()
176
177if (WITH_XPRESS)
178  message(STATUS "XPRESS is enabled")
179
180  add_definitions(-DXPRESS)
181
182  # We are using the implementation provided by the system
183  set (SYSTEM_LIBS ${SYSTEM_LIBS} Cabinet.lib)
184else ()
185  message(STATUS "XPRESS is disabled")
186endif ()
187
188
189# ================================================== ZSTD ==================================================
190#
191# Edit these 4 lines to define paths to ZSTD
192#
193set(ZSTD_HOME $ENV{THIRDPARTY_HOME}/ZSTD.Library)
194set(ZSTD_INCLUDE ${ZSTD_HOME}/build/native/inc)
195set(ZSTD_LIB_DEBUG ${ZSTD_HOME}/lib/native/debug/amd64/libzstd_static.lib)
196set(ZSTD_LIB_RELEASE ${ZSTD_HOME}/lib/native/retail/amd64/libzstd_static.lib)
197
198# For compatibility
199if (ZSTD)
200  set(WITH_ZSTD ON)
201endif ()
202
203if (WITH_ZSTD)
204  message(STATUS "ZSTD library is enabled")
205
206  if(DEFINED ENV{ZSTD_INCLUDE})
207    set(ZSTD_INCLUDE $ENV{ZSTD_INCLUDE})
208  endif()
209
210  if(DEFINED ENV{ZSTD_LIB_DEBUG})
211    set(ZSTD_LIB_DEBUG $ENV{ZSTD_LIB_DEBUG})
212  endif()
213
214  if(DEFINED ENV{ZSTD_LIB_RELEASE})
215    set(ZSTD_LIB_RELEASE $ENV{ZSTD_LIB_RELEASE})
216  endif()
217
218  # ZSTD_STATIC_LINKING_ONLY only allows us to create an allocation functions override
219  # When jemalloc is in use
220  set(ZSTD_LIBS debug ${ZSTD_LIB_DEBUG} optimized ${ZSTD_LIB_RELEASE})
221
222  add_definitions(-DZSTD -DZSTD_STATIC_LINKING_ONLY)
223  include_directories(${ZSTD_INCLUDE})
224  set (THIRDPARTY_LIBS ${THIRDPARTY_LIBS} ${ZSTD_LIBS})
225else ()
226  message(STATUS "ZSTD library is disabled")
227endif ()
228
229#
230# Edit these 4 lines to define paths to Jemalloc
231#
232set(JEMALLOC_HOME $ENV{THIRDPARTY_HOME}/Jemalloc.Library)
233set(JEMALLOC_INCLUDE ${JEMALLOC_HOME}/build/native/inc)
234set(JEMALLOC_LIB_DEBUG ${JEMALLOC_HOME}/lib/native/debug/amd64/jemalloc.lib)
235set(JEMALLOC_LIB_RELEASE ${JEMALLOC_HOME}/lib/native/retail/amd64/jemalloc.lib)
236
237# ================================================== JEMALLOC ==================================================
238if(JEMALLOC)
239  set(WITH_JEMALLOC ON)
240endif()
241
242if (WITH_JEMALLOC)
243  message(STATUS "JEMALLOC library is enabled")
244  set(JEMALLOC_CXX_FLAGS "-DROCKSDB_JEMALLOC -DJEMALLOC_EXPORT= -DJEMALLOC_NO_RENAME")
245
246  if(DEFINED ENV{JEMALLOC_INCLUDE})
247    set(JEMALLOC_INCLUDE $ENV{JEMALLOC_INCLUDE})
248  endif()
249
250  if(DEFINED ENV{JEMALLOC_LIB_DEBUG})
251    set(JEMALLOC_LIB_DEBUG $ENV{JEMALLOC_LIB_DEBUG})
252  endif()
253
254  if(DEFINED ENV{JEMALLOC_LIB_RELEASE})
255    set(JEMALLOC_LIB_RELEASE $ENV{JEMALLOC_LIB_RELEASE})
256  endif()
257
258  set(JEMALLOC_LIBS debug ${JEMALLOC_LIB_DEBUG} optimized ${JEMALLOC_LIB_RELEASE})
259
260  add_definitions(${JEMALLOC_CXX_FLAGS})
261  include_directories(${JEMALLOC_INCLUDE})
262  set (THIRDPARTY_LIBS ${THIRDPARTY_LIBS} ${JEMALLOC_LIBS})
263  set (ARTIFACT_SUFFIX "_je")
264
265else ()
266  set (ARTIFACT_SUFFIX "")
267  message(STATUS "JEMALLOC library is disabled")
268endif ()
269