|
1 | 1 | if (NOT FOLLY_INSTALL_DIR) |
2 | | - set(FOLLY_INSTALL_DIR $ENV{HOME}/folly) |
| 2 | + set(FOLLY_INSTALL_DIR ${CMAKE_BINARY_DIR}/folly-install) |
3 | 3 | endif () |
4 | 4 |
|
5 | | -# Check if the correct version of folly is already installed. |
6 | | -set(FOLLY_VERSION v2018.06.25.00) |
7 | | -set(FOLLY_VERSION_FILE ${FOLLY_INSTALL_DIR}/${FOLLY_VERSION}) |
8 | 5 | if (RSOCKET_INSTALL_DEPS) |
9 | | - if (NOT EXISTS ${FOLLY_VERSION_FILE}) |
10 | | - # Remove the old version of folly. |
11 | | - file(REMOVE_RECURSE ${FOLLY_INSTALL_DIR}) |
12 | | - set(INSTALL_FOLLY True) |
13 | | - endif () |
14 | | -endif () |
15 | | - |
16 | | -if (INSTALL_FOLLY) |
17 | | - # Build and install folly. |
18 | | - ExternalProject_Add( |
19 | | - folly-ext |
20 | | - GIT_REPOSITORY https://github.com/facebook/folly |
21 | | - GIT_TAG ${FOLLY_VERSION} |
22 | | - BINARY_DIR folly-ext-prefix/src/folly-ext/folly |
23 | | - CONFIGURE_COMMAND autoreconf -ivf |
24 | | - COMMAND ./configure CXX=${CMAKE_CXX_COMPILER} |
25 | | - --prefix=${FOLLY_INSTALL_DIR} |
26 | | - BUILD_COMMAND make -j4 |
27 | | - INSTALL_COMMAND make install |
28 | | - COMMAND cmake -E touch ${FOLLY_VERSION_FILE}) |
29 | | - |
30 | | - set(FOLLY_INCLUDE_DIR ${FOLLY_INSTALL_DIR}/include) |
31 | | - set(lib ${CMAKE_SHARED_LIBRARY_PREFIX}folly${CMAKE_SHARED_LIBRARY_SUFFIX}) |
32 | | - set(benchlib ${CMAKE_SHARED_LIBRARY_PREFIX}follybenchmark${CMAKE_SHARED_LIBRARY_SUFFIX}) |
33 | | - set(FOLLY_LIBRARY ${FOLLY_INSTALL_DIR}/lib/${lib}) |
34 | | - set(FOLLY_BENCHMARK_LIBRARY ${FOLLY_INSTALL_DIR}/lib/${benchlib}) |
35 | | - |
36 | | - # CMake requires directories listed in INTERFACE_INCLUDE_DIRECTORIES to exist. |
37 | | - file(MAKE_DIRECTORY ${FOLLY_INCLUDE_DIR}) |
38 | | -else () |
39 | | - # Use installed folly. |
40 | | - find_package(Folly REQUIRED) |
| 6 | + execute_process( |
| 7 | + COMMAND |
| 8 | + ${CMAKE_SOURCE_DIR}/scripts/build_folly.sh |
| 9 | + ${CMAKE_BINARY_DIR}/folly-src |
| 10 | + ${FOLLY_INSTALL_DIR} |
| 11 | + RESULT_VARIABLE folly_result |
| 12 | + ) |
| 13 | + if (NOT "${folly_result}" STREQUAL "0") |
| 14 | + message(FATAL_ERROR "failed to build folly") |
| 15 | + endif() |
41 | 16 | endif () |
42 | 17 |
|
43 | 18 | find_package(Threads) |
44 | | -find_library(EVENT_LIBRARY event) |
45 | | - |
46 | | -add_library(folly SHARED IMPORTED) |
47 | | -set_property(TARGET folly PROPERTY IMPORTED_LOCATION ${FOLLY_LIBRARY}) |
48 | | -set_property(TARGET folly |
49 | | - APPEND PROPERTY INTERFACE_LINK_LIBRARIES |
50 | | - ${EXTRA_LINK_FLAGS} ${EVENT_LIBRARY} ${CMAKE_THREAD_LIBS_INIT}) |
51 | | -if (TARGET folly-ext) |
52 | | - add_dependencies(folly folly-ext) |
53 | | -endif () |
54 | | - |
55 | | -add_library(folly-benchmark SHARED IMPORTED) |
56 | | -set_property(TARGET folly-benchmark PROPERTY IMPORTED_LOCATION ${FOLLY_BENCHMARK_LIBRARY}) |
57 | | -set_property(TARGET folly-benchmark |
58 | | - APPEND PROPERTY INTERFACE_LINK_LIBRARIES |
59 | | - ${EXTRA_LINK_FLAGS} ${EVENT_LIBRARY} ${CMAKE_THREAD_LIBS_INIT}) |
60 | | -if (TARGET folly-ext) |
61 | | - add_dependencies(folly-benchmark folly-ext) |
62 | | -endif () |
63 | | - |
64 | | -# Folly includes are marked as system to prevent errors on non-standard |
65 | | -# extensions when compiling with -pedantic and -Werror. |
66 | | -set_property(TARGET folly |
67 | | - APPEND PROPERTY INTERFACE_SYSTEM_INCLUDE_DIRECTORIES ${FOLLY_INCLUDE_DIR}) |
68 | | -set_property(TARGET folly |
69 | | - APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${FOLLY_INCLUDE_DIR}) |
70 | | -set_property(TARGET folly-benchmark |
71 | | - APPEND PROPERTY INTERFACE_SYSTEM_INCLUDE_DIRECTORIES ${FOLLY_INCLUDE_DIR}) |
72 | | -set_property(TARGET folly-benchmark |
73 | | - APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${FOLLY_INCLUDE_DIR}) |
| 19 | +find_package(folly CONFIG REQUIRED PATHS ${FOLLY_INSTALL_DIR}) |
0 commit comments