Adds test drivers for concurrent hash maps
[folly.git] / CMake / folly-deps.cmake
1 include(CheckCXXSourceCompiles)
2
3 find_package(Boost 1.55.0 MODULE
4   COMPONENTS
5     context
6     chrono
7     date_time
8     filesystem
9     program_options
10     regex
11     system
12     thread
13   REQUIRED
14 )
15 set(FOLLY_SHINY_DEPENDENCIES
16   Boost::chrono
17   Boost::context
18   Boost::date_time
19   Boost::filesystem
20   Boost::program_options
21   Boost::regex
22   Boost::system
23   OpenSSL::SSL
24   OpenSSL::Crypto
25 )
26
27 find_package(DoubleConversion MODULE REQUIRED)
28 list(APPEND FOLLY_LINK_LIBRARIES ${DOUBLE_CONVERSION_LIBRARY})
29 list(APPEND FOLLY_INCLUDE_DIRECTORIES ${DOUBLE_CONVERSION_INCLUDE_DIR})
30
31 set(FOLLY_HAVE_LIBGFLAGS OFF)
32 find_package(gflags CONFIG QUIET)
33 if (gflags_FOUND)
34   message(STATUS "Found gflags from package config")
35   set(FOLLY_HAVE_LIBGFLAGS ON)
36   set(FOLLY_SHINY_DEPENDENCIES ${FOLLY_SHINY_DEPENDENCIES} gflags)
37   list(APPEND CMAKE_REQUIRED_LIBRARIES ${GFLAGS_LIBRARIES})
38   list(APPEND CMAKE_REQUIRED_INCLUDES ${GFLAGS_INCLUDE_DIR})
39 else()
40   find_package(GFlags MODULE)
41   set(FOLLY_HAVE_LIBGFLAGS ${LIBGFLAGS_FOUND})
42   list(APPEND FOLLY_LINK_LIBRARIES ${LIBGFLAGS_LIBRARY})
43   list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBGFLAGS_INCLUDE_DIR})
44   list(APPEND CMAKE_REQUIRED_LIBRARIES ${LIBGFLAGS_LIBRARY})
45   list(APPEND CMAKE_REQUIRED_INCLUDES ${LIBGFLAGS_INCLUDE_DIR})
46 endif()
47
48 set(FOLLY_HAVE_LIBGLOG OFF)
49 find_package(glog CONFIG QUIET)
50 if (glog_FOUND)
51   message(STATUS "Found glog from package config")
52   set(FOLLY_HAVE_LIBGLOG ON)
53   set(FOLLY_SHINY_DEPENDENCIES ${FOLLY_SHINY_DEPENDENCIES} glog::glog)
54 else()
55   find_package(GLog MODULE)
56   set(FOLLY_HAVE_LIBGLOG ${LIBGLOG_FOUND})
57   list(APPEND FOLLY_LINK_LIBRARIES ${LIBGLOG_LIBRARY})
58   list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBGLOG_INCLUDE_DIR})
59 endif()
60
61 find_package(Libevent CONFIG QUIET)
62 if(TARGET event)
63   message(STATUS "Found libevent from package config")
64   set(FOLLY_SHINY_DEPENDENCIES ${FOLLY_SHINY_DEPENDENCIES} event)
65 else()
66   find_package(LibEvent MODULE REQUIRED)
67   list(APPEND FOLLY_LINK_LIBRARIES ${LIBEVENT_LIB})
68   list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBEVENT_INCLUDE_DIR})
69 endif()
70
71 find_package(OpenSSL MODULE REQUIRED)
72
73 find_package(PThread MODULE)
74 set(FOLLY_HAVE_PTHREAD ${LIBPTHREAD_FOUND})
75 if (LIBPTHREAD_FOUND)
76   list(APPEND CMAKE_REQUIRED_LIBRARIES ${LIBPTHREAD_LIBRARIES})
77   list(APPEND CMAKE_REQUIRED_INCLUDES ${LIBPTHREAD_INCLUDE_DIRS})
78   list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBPTHREAD_INCLUDE_DIRS})
79   list(APPEND FOLLY_LINK_LIBRARIES ${LIBPTHREAD_LIBRARIES})
80 endif()
81
82 find_package(ZLIB MODULE)
83 set(FOLLY_HAVE_LIBZ ${ZLIB_FOUND})
84 if (ZLIB_FOUND)
85   list(APPEND FOLLY_INCLUDE_DIRECTORIES ${ZLIB_INCLUDE_DIRS})
86   list(APPEND FOLLY_LINK_LIBRARIES ${ZLIB_LIBRARIES})
87 endif()
88
89 find_package(BZip2 MODULE)
90 set(FOLLY_HAVE_LIBBZ2 ${BZIP2_FOUND})
91 if (BZIP2_FOUND)
92   list(APPEND FOLLY_INCLUDE_DIRECTORIES ${BZIP2_INCLUDE_DIRS})
93   list(APPEND FOLLY_LINK_LIBRARIES ${BZIP2_LIBRARIES})
94 endif()
95
96 find_package(LibLZMA MODULE)
97 set(FOLLY_HAVE_LIBLZMA ${LIBLZMA_FOUND})
98 if (LIBLZMA_FOUND)
99   list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBLZMA_INCLUDE_DIRS})
100   list(APPEND FOLLY_LINK_LIBRARIES ${LIBLZMA_LIBRARIES})
101 endif()
102
103 # TODO: We should ideally build FindXXX modules for the following libraries,
104 # rather than the simple checks we currently have here.
105 CHECK_INCLUDE_FILE_CXX(zstd.h FOLLY_HAVE_LIBZSTD)
106 if (FOLLY_HAVE_LIBZSTD)
107   list(APPEND FOLLY_LINK_LIBRARIES zstd)
108 endif()
109 CHECK_INCLUDE_FILE_CXX(snappy.h FOLLY_HAVE_LIBSNAPPY)
110 if (FOLLY_HAVE_LIBSNAPPY)
111   list(APPEND FOLLY_LINK_LIBRARIES snappy)
112 endif()
113 CHECK_INCLUDE_FILE_CXX(lz4.h FOLLY_HAVE_LIBLZ4)
114 if (FOLLY_HAVE_LIBLZ4)
115   list(APPEND FOLLY_LINK_LIBRARIES lz4)
116 endif()
117
118 find_package(LibDwarf)
119 list(APPEND FOLLY_LINK_LIBRARIES ${LIBDWARF_LIBRARIES})
120 list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBDWARF_INCLUDE_DIRS})
121 CHECK_INCLUDE_FILE_CXX(libdwarf/dwarf.h FOLLY_HAVE_LIBDWARF_DWARF_H)
122
123 find_package(Libiberty)
124 list(APPEND FOLLY_LINK_LIBRARIES ${LIBIBERTY_LIBRARIES})
125 list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBIBERTY_INCLUDE_DIRS})
126
127 find_package(LibAIO)
128 list(APPEND FOLLY_LINK_LIBRARIES ${LIBAIO_LIBRARIES})
129 list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBAIO_INCLUDE_DIRS})
130
131 find_package(LibURCU)
132 list(APPEND FOLLY_LINK_LIBRARIES ${LIBURCU_LIBRARIES})
133 list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBURCU_INCLUDE_DIRS})
134
135 list(APPEND FOLLY_LINK_LIBRARIES ${CMAKE_DL_LIBS})
136 list(APPEND CMAKE_REQUIRED_LIBRARIES ${CMAKE_DL_LIBS})