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(IOWOW_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include") 10 11if("${IOWOW_URL}" STREQUAL "") 12 if(EXISTS ${CMAKE_SOURCE_DIR}/iowow.zip) 13 set(IOWOW_URL ${CMAKE_SOURCE_DIR}/iowow.zip) 14 else() 15 set(IOWOW_URL https://github.com/Softmotions/iowow/archive/master.zip) 16 endif() 17endif() 18 19message("IOWOW_URL: ${IOWOW_URL}") 20 21if (IOS) 22 set(BYPRODUCT "${CMAKE_BINARY_DIR}/lib/libiowow-1.a") 23else() 24 set(BYPRODUCT "${CMAKE_BINARY_DIR}/src/extern_iowow-build/src/libiowow-1.a") 25endif() 26 27set(CMAKE_ARGS -DOWNER_PROJECT_NAME=${PROJECT_NAME} 28 -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} 29 -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR} 30 -DASAN=${ASAN} 31 -DBUILD_SHARED_LIBS=OFF 32 -DBUILD_EXAMPLES=OFF) 33 34foreach(extra 35 CMAKE_C_COMPILER 36 CMAKE_TOOLCHAIN_FILE 37 ANDROID_PLATFORM 38 ANDROID_ABI 39 TEST_TOOL_CMD 40 PLATFORM 41 ENABLE_BITCODE 42 ENABLE_ARC 43 ENABLE_VISIBILITY 44 ENABLE_STRICT_TRY_COMPILE 45 ARCHS) 46 if(DEFINED ${extra}) 47 list(APPEND CMAKE_ARGS "-D${extra}=${${extra}}") 48 endif() 49endforeach() 50message("IOWOW CMAKE_ARGS: ${CMAKE_ARGS}") 51 52ExternalProject_Add( 53 extern_iowow 54 URL ${IOWOW_URL} 55 DOWNLOAD_NAME iowow.zip 56 TIMEOUT 360 57 PREFIX ${CMAKE_BINARY_DIR} 58 BUILD_IN_SOURCE OFF 59 UPDATE_COMMAND "" 60 UPDATE_DISCONNECTED ${_UPDATE_DISCONNECTED} 61 LOG_DOWNLOAD OFF 62 LOG_UPDATE OFF 63 LOG_BUILD OFF 64 LOG_CONFIGURE OFF 65 LOG_INSTALL OFF 66 CMAKE_ARGS ${CMAKE_ARGS} 67 BUILD_BYPRODUCTS ${BYPRODUCT} 68) 69 70add_library(iowow_s STATIC IMPORTED GLOBAL) 71set_target_properties( 72 iowow_s 73 PROPERTIES 74 IMPORTED_LOCATION ${BYPRODUCT} 75) 76add_dependencies(iowow_s extern_iowow) 77 78if (DO_INSTALL_CORE) 79 install(FILES "${BYPRODUCT}" 80 DESTINATION ${CMAKE_INSTALL_LIBDIR}) 81endif() 82 83list(APPEND PROJECT_LLIBRARIES iowow_s m) 84list(APPEND PROJECT_INCLUDE_DIRS "${IOWOW_INCLUDE_DIR}") 85