|
1 | 1 | cmake_minimum_required(VERSION 3.1)
|
2 |
| -project(aws-iot-device-sdk-cpp-v2 CXX) |
| 2 | + |
| 3 | +option(BUILD_DEPS "Builds aws common runtime dependencies as part of build, only do this if you don't want to control your dependency chain." OFF) |
3 | 4 |
|
4 | 5 | if (UNIX AND NOT APPLE)
|
5 | 6 | include(GNUInstallDirs)
|
6 | 7 | elseif(NOT DEFINED CMAKE_INSTALL_LIBDIR)
|
7 | 8 | set(CMAKE_INSTALL_LIBDIR "lib")
|
8 | 9 | endif()
|
9 | 10 |
|
| 11 | +if (BUILD_DEPS) |
| 12 | + set(AWS_DEPS_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/deps CACHE STRING "If BUILD_DEPS is on, aws common runtime dependencies build in this directory.") |
| 13 | + if (DEFINED CMAKE_INSTALL_PREFIX) |
| 14 | + set(AWS_DEPS_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}) |
| 15 | + else() |
| 16 | + set(AWS_DEPS_INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/deps/install) |
| 17 | + endif() |
| 18 | + |
| 19 | + if (NOT DEFINED CMAKE_PREFIX_PATH) |
| 20 | + set(CMAKE_PREFIX_PATH ${AWS_DEPS_INSTALL_DIR}) |
| 21 | + endif() |
| 22 | + |
| 23 | + file(MAKE_DIRECTORY ${AWS_DEPS_BUILD_DIR}) |
| 24 | + if(TARGET_ARCH STREQUAL "ANDROID") |
| 25 | + execute_process( |
| 26 | + COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} |
| 27 | + -DTARGET_ARCH=${TARGET_ARCH} |
| 28 | + -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} |
| 29 | + -DANDROID_NATIVE_API_LEVEL=${ANDROID_NATIVE_API_LEVEL} |
| 30 | + -DANDROID_ABI=${ANDROID_ABI} |
| 31 | + -DANDROID_TOOLCHAIN_NAME=${ANDROID_TOOLCHAIN_NAME} |
| 32 | + -DANDROID_STANDALONE_TOOLCHAIN=${ANDROID_STANDALONE_TOOLCHAIN} |
| 33 | + -DANDROID_STL=${ANDROID_STL} |
| 34 | + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} |
| 35 | + -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} |
| 36 | + -DCMAKE_INSTALL_PREFIX=${AWS_DEPS_INSTALL_DIR} |
| 37 | + -DCMAKE_PREFIX_PATH=${AWS_DEPS_INSTALL_DIR} |
| 38 | + -DGIT_EXECUTABLE=${GIT_EXECUTABLE} |
| 39 | + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} |
| 40 | + ${CMAKE_CURRENT_SOURCE_DIR}/aws-common-runtime |
| 41 | + WORKING_DIRECTORY ${AWS_DEPS_BUILD_DIR} |
| 42 | + ) |
| 43 | + |
| 44 | + else() |
| 45 | + execute_process( |
| 46 | + COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} |
| 47 | + -DTARGET_ARCH=${TARGET_ARCH} |
| 48 | + -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} |
| 49 | + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} |
| 50 | + -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} |
| 51 | + -DCMAKE_PREFIX_PATH=${AWS_DEPS_INSTALL_DIR} |
| 52 | + -DCMAKE_INSTALL_PREFIX=${AWS_DEPS_INSTALL_DIR} |
| 53 | + -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH} |
| 54 | + -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_CURRENT_BINARY_DIR}/bin |
| 55 | + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} |
| 56 | + ${CMAKE_CURRENT_SOURCE_DIR}/aws-common-runtime |
| 57 | + WORKING_DIRECTORY ${AWS_DEPS_BUILD_DIR} |
| 58 | + RESULT_VARIABLE BUILD_AWSCRT_EXIT_CODE |
| 59 | + ) |
| 60 | + endif() |
| 61 | + |
| 62 | + if (NOT ${BUILD_AWSCRT_EXIT_CODE} EQUAL 0) |
| 63 | + message(FATAL_ERROR "Failed to configure aws crt libraries.") |
| 64 | + endif() |
| 65 | + execute_process(COMMAND ${CMAKE_COMMAND} --build ${AWS_DEPS_BUILD_DIR} --config ${CMAKE_BUILD_TYPE} |
| 66 | + RESULT_VARIABLE BUILD_AWSCRT_EXIT_CODE) |
| 67 | + |
| 68 | + if (NOT ${BUILD_AWSCRT_EXIT_CODE} EQUAL 0) |
| 69 | + message(FATAL_ERROR "Failed to build aws crt libraries.") |
| 70 | + endif() |
| 71 | + message(STATUS "AWS Common Runtime is installed at: ${AWS_DEPS_INSTALL_DIR}") |
| 72 | + |
| 73 | + #the following two lines are done in this branch intentionally, don't move it. project() does some magic that |
| 74 | + #we don't want happening until we're done with the above code. |
| 75 | + list(APPEND CMAKE_PREFIX_PATH "${AWS_DEPS_INSTALL_DIR}") |
| 76 | + |
| 77 | + project(aws-iot-device-sdk-cpp-v2 CXX) |
| 78 | + |
| 79 | +else() |
| 80 | + #the following two lines are done in this branch intentionally, don't move it. project() does some magic that |
| 81 | + #we want happening exactly right now. |
| 82 | + project(aws-iot-device-sdk-cpp-v2 CXX) |
| 83 | + |
| 84 | +endif() |
| 85 | + |
10 | 86 | list(APPEND CMAKE_MODULE_PATH "${CMAKE_PREFIX_PATH}/${CMAKE_INSTALL_LIBDIR}/cmake")
|
11 | 87 |
|
12 | 88 | if (NOT CMAKE_CXX_STANDARD)
|
|
0 commit comments