• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1include(ExternalProject)
2
3if (${CMAKE_VERSION} VERSION_LESS "3.8.0")
4  set(_UPDATE_DISCONNECTED 0)
5else()
6  set(_UPDATE_DISCONNECTED 1)
7endif()
8
9set(FACIL_SOURCE_DIR "${CMAKE_BINARY_DIR}/src/extern_facil")
10set(FACIL_BINARY_DIR "${CMAKE_BINARY_DIR}/src/extern_facil")
11set(FACIL_INCLUDE_DIR "${FACIL_BINARY_DIR}/lib/facil")
12set(FACIL_LIBRARY_DIR "${FACIL_BINARY_DIR}")
13
14if("${FACIL_URL}" STREQUAL "")
15  if(EXISTS ${CMAKE_SOURCE_DIR}/facil.zip)
16    set(FACIL_URL ${CMAKE_SOURCE_DIR}/facil.zip)
17  else()
18    set(FACIL_URL https://github.com/Softmotions/facil.io/archive/master.zip)
19  endif()
20endif()
21
22message("FACIL_URL: ${FACIL_URL}")
23
24set(CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
25               -DCMAKE_C_FLAGS=-fPIC -fvisibility=hidden)
26
27foreach(extra
28              CMAKE_C_COMPILER
29              CMAKE_TOOLCHAIN_FILE
30              ANDROID_PLATFORM
31              ANDROID_ABI
32              TEST_TOOL_CMD
33              PLATFORM
34              ENABLE_BITCODE
35              ENABLE_ARC
36              ENABLE_VISIBILITY
37              ENABLE_STRICT_TRY_COMPILE
38              ARCHS)
39  if(DEFINED ${extra})
40    list(APPEND CMAKE_ARGS "-D${extra}=${${extra}}")
41  endif()
42endforeach()
43message("FACIL CMAKE_ARGS: ${CMAKE_ARGS}")
44
45ExternalProject_Add(
46  extern_facil
47  URL ${FACIL_URL}
48  DOWNLOAD_NAME facil.zip
49  TIMEOUT 360
50  # Remove in-source makefile to avoid clashing
51  PATCH_COMMAND rm -f ./makefile
52  PREFIX ${CMAKE_BINARY_DIR}
53  BUILD_IN_SOURCE ON
54  GIT_PROGRESS ON
55  UPDATE_COMMAND ""
56  INSTALL_COMMAND ""
57  UPDATE_DISCONNECTED ${_UPDATE_DISCONNECTED}
58  LOG_DOWNLOAD OFF
59  LOG_UPDATE OFF
60  LOG_BUILD OFF
61  LOG_CONFIGURE OFF
62  LOG_INSTALL OFF
63  CMAKE_ARGS ${CMAKE_ARGS}
64  BUILD_BYPRODUCTS "${FACIL_LIBRARY_DIR}/libfacil.io.a"
65)
66
67add_library(facil_s STATIC IMPORTED GLOBAL)
68set_target_properties(
69   facil_s
70   PROPERTIES
71   IMPORTED_LOCATION "${FACIL_LIBRARY_DIR}/libfacil.io.a"
72)
73add_dependencies(facil_s extern_facil)
74
75if (DO_INSTALL_CORE)
76  install(FILES "${FACIL_LIBRARY_DIR}/libfacil.io.a"
77          RENAME "libfacilio-1.a"
78          DESTINATION ${CMAKE_INSTALL_LIBDIR})
79endif()
80
81list(APPEND PROJECT_LLIBRARIES facil_s)
82list(APPEND PROJECT_INCLUDE_DIRS "${FACIL_INCLUDE_DIR}"
83                                 "${FACIL_INCLUDE_DIR}/fiobj"
84                                 "${FACIL_INCLUDE_DIR}/http"
85                                 "${FACIL_INCLUDE_DIR}/cli"
86                                 "${FACIL_INCLUDE_DIR}/tls")
87