• 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(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