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