thirdparty.inc 7.8 KB

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