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