Updating submodules
[hiphop-php.git] / third-party / watchman / CMakeLists.txt
blob81e5836f295712c745954a715c82d73aaf0ff9cd
1 add_library(libwatchmanclient INTERFACE)
3 include(ExternalProject)
4 include(HPHPFunctions)
7 get_target_property(BOOST_INCLUDE_DIR boost INTERFACE_INCLUDE_DIRECTORIES)
8 get_target_property(DOUBLE_CONVERSION_INCLUDE_DIR double-conversion INTERFACE_INCLUDE_DIRECTORIES)
9 get_target_property(FMT_INCLUDE_DIR fmt INTERFACE_INCLUDE_DIRECTORIES)
10 get_target_property(FOLLY_INCLUDE_DIR folly INTERFACE_INCLUDE_DIRECTORIES)
11 get_target_property(JEMALLOC_INCLUDE_DIR jemalloc INTERFACE_INCLUDE_DIRECTORIES)
13 set(WATCHMAN_DEPS folly boost fmt jemalloc double-conversion)
15 ExternalProject_Add(
16   bundled_watchman
17   SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src/
18   BUILD_ALWAYS ON
19   PATCH_COMMAND
20     "${CMAKE_COMMAND}" -E copy
21     "${CMAKE_CURRENT_SOURCE_DIR}/cppclient-CMakeLists.txt"
22     "watchman/cppclient/CMakeLists.txt"
23   SOURCE_SUBDIR watchman/cppclient
24   CMAKE_ARGS
25     -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
26     -DCMAKE_INSTALL_INCLUDEDIR=include
27     -DCMAKE_INSTALL_LIBDIR=lib
29     -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
30     -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
31     -DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT}
32     -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
33     -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
35     "-DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}"
36     "-DBOOST_INCLUDE_DIR=${BOOST_INCLUDE_DIR}"
37     "-DDOUBLE_CONVERSION_INCLUDE_DIR=${DOUBLE_CONVERSION_INCLUDE_DIR}"
38     "-DFMT_INCLUDE_DIR=${FMT_INCLUDE_DIR}"
39     "-DFOLLY_INCLUDE_DIR=${FOLLY_INCLUDE_DIR}"
40     "-DGLOG_INCLUDE_DIR=${GLOG_INCLUDE_DIR}"
41     "-DJEMALLOC_INCLUDE_DIR=${JEMALLOC_INCLUDE_DIR}"
42     "-DLIBEVENT_INCLUDE_DIR=${LIBEVENT_INCLUDE_DIR}"
43     "-DOPENSSL_INCLUDE_DIR=${OPENSSL_INCLUDE_DIR}"
44   DEPENDS ${WATCHMAN_DEPS}
45   EXCLUDE_FROM_ALL
48 find_package(libWatchmanClient)
49 if(WATCHMANCLIENT_INCLUDE_DIRS AND WATCHMANCLIENT_LIBRARIES)
50   target_include_directories(libwatchmanclient INTERFACE "${WATCHMANCLIENT_INCLUDE_DIRS}")
51   target_link_libraries(libwatchmanclient INTERFACE "${WATCHMANCLIENT_LIBRARIES}")
52 else()
53   add_dependencies(libwatchmanclient bundled_watchman)
54   ExternalProject_Get_Property(bundled_watchman INSTALL_DIR)
55   target_include_directories(libwatchmanclient INTERFACE "${INSTALL_DIR}/include")
56   add_library(watchman_deps INTERFACE)
57   target_link_libraries(watchman_deps INTERFACE ${WATCHMAN_DEPS})
58   target_link_libraries(
59     libwatchmanclient
60     INTERFACE
61     "${INSTALL_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}watchmanclient${CMAKE_STATIC_LIBRARY_SUFFIX}"
62     watchman_deps
63   )
64 endif()