X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;ds=sidebyside;f=CMake%2Ffolly-deps.cmake;h=2d0a8be4a1c87cc9905008248b76f9f8fdfca9db;hb=b50a3dd838801676f9f5a3d5f0b9a094a8175d72;hp=37cd56f55aeec61deaee3be34a6e15e056e5c763;hpb=b3061cbef59895199c3b98aa4757dc3379a6af06;p=folly.git diff --git a/CMake/folly-deps.cmake b/CMake/folly-deps.cmake index 37cd56f5..2d0a8be4 100755 --- a/CMake/folly-deps.cmake +++ b/CMake/folly-deps.cmake @@ -1,32 +1,136 @@ -find_package(Boost 1.55.0 MODULE - COMPONENTS - context - chrono - date_time - filesystem - program_options - regex - system - thread - REQUIRED -) - -find_package(DoubleConversion MODULE REQUIRED) - -find_package(gflags CONFIG) -if(NOT TARGET gflags) - find_package(GFlags MODULE REQUIRED) -endif() - -find_package(glog CONFIG) -if(NOT TARGET glog::glog) - find_package(GLog MODULE REQUIRED) -endif() - -find_package(Libevent CONFIG) -if(NOT TARGET event) - find_package(LibEvent MODULE REQUIRED) -endif() - -find_package(OpenSSL MODULE REQUIRED) -find_package(PThread MODULE) +include(CheckCXXSourceCompiles) + +find_package(Boost 1.55.0 MODULE + COMPONENTS + context + chrono + date_time + filesystem + program_options + regex + system + thread + REQUIRED +) +set(FOLLY_SHINY_DEPENDENCIES + Boost::chrono + Boost::context + Boost::date_time + Boost::filesystem + Boost::program_options + Boost::regex + Boost::system + OpenSSL::SSL + OpenSSL::Crypto +) + +find_package(DoubleConversion MODULE REQUIRED) +list(APPEND FOLLY_LINK_LIBRARIES ${DOUBLE_CONVERSION_LIBRARY}) +list(APPEND FOLLY_INCLUDE_DIRECTORIES ${DOUBLE_CONVERSION_INCLUDE_DIR}) + +set(FOLLY_HAVE_LIBGFLAGS OFF) +find_package(gflags CONFIG QUIET) +if (gflags_FOUND) + message(STATUS "Found gflags from package config") + set(FOLLY_HAVE_LIBGFLAGS ON) + set(FOLLY_SHINY_DEPENDENCIES ${FOLLY_SHINY_DEPENDENCIES} gflags) + list(APPEND CMAKE_REQUIRED_LIBRARIES ${GFLAGS_LIBRARIES}) + list(APPEND CMAKE_REQUIRED_INCLUDES ${GFLAGS_INCLUDE_DIR}) +else() + find_package(GFlags MODULE) + set(FOLLY_HAVE_LIBGFLAGS ${LIBGFLAGS_FOUND}) + list(APPEND FOLLY_LINK_LIBRARIES ${LIBGFLAGS_LIBRARY}) + list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBGFLAGS_INCLUDE_DIR}) + list(APPEND CMAKE_REQUIRED_LIBRARIES ${LIBGFLAGS_LIBRARY}) + list(APPEND CMAKE_REQUIRED_INCLUDES ${LIBGFLAGS_INCLUDE_DIR}) +endif() + +set(FOLLY_HAVE_LIBGLOG OFF) +find_package(glog CONFIG QUIET) +if (glog_FOUND) + message(STATUS "Found glog from package config") + set(FOLLY_HAVE_LIBGLOG ON) + set(FOLLY_SHINY_DEPENDENCIES ${FOLLY_SHINY_DEPENDENCIES} glog::glog) +else() + find_package(GLog MODULE) + set(FOLLY_HAVE_LIBGLOG ${LIBGLOG_FOUND}) + list(APPEND FOLLY_LINK_LIBRARIES ${LIBGLOG_LIBRARY}) + list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBGLOG_INCLUDE_DIR}) +endif() + +find_package(Libevent CONFIG QUIET) +if(TARGET event) + message(STATUS "Found libevent from package config") + set(FOLLY_SHINY_DEPENDENCIES ${FOLLY_SHINY_DEPENDENCIES} event) +else() + find_package(LibEvent MODULE REQUIRED) + list(APPEND FOLLY_LINK_LIBRARIES ${LIBEVENT_LIB}) + list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBEVENT_INCLUDE_DIR}) +endif() + +find_package(OpenSSL MODULE REQUIRED) + +find_package(PThread MODULE) +set(FOLLY_HAVE_PTHREAD ${LIBPTHREAD_FOUND}) +if (LIBPTHREAD_FOUND) + list(APPEND CMAKE_REQUIRED_LIBRARIES ${LIBPTHREAD_LIBRARIES}) + list(APPEND CMAKE_REQUIRED_INCLUDES ${LIBPTHREAD_INCLUDE_DIRS}) + list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBPTHREAD_INCLUDE_DIRS}) + list(APPEND FOLLY_LINK_LIBRARIES ${LIBPTHREAD_LIBRARIES}) +endif() + +find_package(ZLIB MODULE) +set(FOLLY_HAVE_LIBZ ${ZLIB_FOUND}) +if (ZLIB_FOUND) + list(APPEND FOLLY_INCLUDE_DIRECTORIES ${ZLIB_INCLUDE_DIRS}) + list(APPEND FOLLY_LINK_LIBRARIES ${ZLIB_LIBRARIES}) +endif() + +find_package(BZip2 MODULE) +set(FOLLY_HAVE_LIBBZ2 ${BZIP2_FOUND}) +if (BZIP2_FOUND) + list(APPEND FOLLY_INCLUDE_DIRECTORIES ${BZIP2_INCLUDE_DIRS}) + list(APPEND FOLLY_LINK_LIBRARIES ${BZIP2_LIBRARIES}) +endif() + +find_package(LibLZMA MODULE) +set(FOLLY_HAVE_LIBLZMA ${LIBLZMA_FOUND}) +if (LIBLZMA_FOUND) + list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBLZMA_INCLUDE_DIRS}) + list(APPEND FOLLY_LINK_LIBRARIES ${LIBLZMA_LIBRARIES}) +endif() + +# TODO: We should ideally build FindXXX modules for the following libraries, +# rather than the simple checks we currently have here. +CHECK_INCLUDE_FILE_CXX(zstd.h FOLLY_HAVE_LIBZSTD) +if (FOLLY_HAVE_LIBZSTD) + list(APPEND FOLLY_LINK_LIBRARIES zstd) +endif() +CHECK_INCLUDE_FILE_CXX(snappy.h FOLLY_HAVE_LIBSNAPPY) +if (FOLLY_HAVE_LIBSNAPPY) + list(APPEND FOLLY_LINK_LIBRARIES snappy) +endif() +CHECK_INCLUDE_FILE_CXX(lz4.h FOLLY_HAVE_LIBLZ4) +if (FOLLY_HAVE_LIBLZ4) + list(APPEND FOLLY_LINK_LIBRARIES lz4) +endif() + +find_package(LibDwarf) +list(APPEND FOLLY_LINK_LIBRARIES ${LIBDWARF_LIBRARIES}) +list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBDWARF_INCLUDE_DIRS}) +CHECK_INCLUDE_FILE_CXX(libdwarf/dwarf.h FOLLY_HAVE_LIBDWARF_DWARF_H) + +find_package(Libiberty) +list(APPEND FOLLY_LINK_LIBRARIES ${LIBIBERTY_LIBRARIES}) +list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBIBERTY_INCLUDE_DIRS}) + +find_package(LibAIO) +list(APPEND FOLLY_LINK_LIBRARIES ${LIBAIO_LIBRARIES}) +list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBAIO_INCLUDE_DIRS}) + +find_package(LibURCU) +list(APPEND FOLLY_LINK_LIBRARIES ${LIBURCU_LIBRARIES}) +list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBURCU_INCLUDE_DIRS}) + +list(APPEND FOLLY_LINK_LIBRARIES ${CMAKE_DL_LIBS}) +list(APPEND CMAKE_REQUIRED_LIBRARIES ${CMAKE_DL_LIBS})