11cmake_minimum_required (VERSION 3.1)
2+ project (aws-iot-device-sdk-cpp-v2)
3+
4+ include (CTest)
25
36option (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 )
47option (BUILD_SAMPLES "Build samples as part of the build" ON )
@@ -11,107 +14,44 @@ if (DEFINED CMAKE_INSTALL_PREFIX)
1114 file (TO_CMAKE_PATH "${CMAKE_INSTALL_PREFIX} " CMAKE_INSTALL_PREFIX )
1215endif ()
1316
17+ if (NOT CMAKE_CXX_STANDARD)
18+ set (CMAKE_CXX_STANDARD 11)
19+ endif ()
20+
1421if (UNIX AND NOT APPLE )
1522 include (GNUInstallDirs)
1623elseif (NOT DEFINED CMAKE_INSTALL_LIBDIR)
1724 set (CMAKE_INSTALL_LIBDIR "lib" )
1825endif ()
1926
20- if (NOT CMAKE_BUILD_TYPE )
21- set (CMAKE_BUILD_TYPE "RelWithDebInfo" )
27+ if (${CMAKE_INSTALL_LIBDIR} STREQUAL "lib64" )
28+ set (FIND_LIBRARY_USE_LIB64_PATHS true )
2229endif ()
2330
24- if (BUILD_DEPS)
25- 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." )
26- if (DEFINED CMAKE_INSTALL_PREFIX )
27- set (AWS_DEPS_INSTALL_DIR ${CMAKE_INSTALL_PREFIX} )
28- else ()
29- set (AWS_DEPS_INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR} /deps/install )
30- endif ()
31-
32- if (NOT DEFINED CMAKE_PREFIX_PATH )
33- set (CMAKE_PREFIX_PATH ${AWS_DEPS_INSTALL_DIR} )
34- endif ()
35-
36- file (MAKE_DIRECTORY ${AWS_DEPS_BUILD_DIR} )
37- if (TARGET_ARCH STREQUAL "ANDROID" )
38- execute_process (
39- COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR}
40- -DTARGET_ARCH=${TARGET_ARCH}
41- -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
42- -DANDROID_NATIVE_API_LEVEL=${ANDROID_NATIVE_API_LEVEL}
43- -DANDROID_ABI=${ANDROID_ABI}
44- -DANDROID_TOOLCHAIN_NAME=${ANDROID_TOOLCHAIN_NAME}
45- -DANDROID_STANDALONE_TOOLCHAIN=${ANDROID_STANDALONE_TOOLCHAIN}
46- -DANDROID_STL=${ANDROID_STL}
47- -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
48- -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}
49- -DCMAKE_INSTALL_PREFIX=${AWS_DEPS_INSTALL_DIR}
50- -DCMAKE_PREFIX_PATH=${AWS_DEPS_INSTALL_DIR}
51- -DGIT_EXECUTABLE=${GIT_EXECUTABLE}
52- -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
53- -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
54- -DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR}
55- ${CMAKE_CURRENT_SOURCE_DIR} /aws-common-runtime
56- WORKING_DIRECTORY ${AWS_DEPS_BUILD_DIR}
57- )
58-
59- else ()
60- execute_process (
61- COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR}
62- -DTARGET_ARCH=${TARGET_ARCH}
63- -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
64- -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
65- -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}
66- -DCMAKE_PREFIX_PATH=${AWS_DEPS_INSTALL_DIR}
67- -DCMAKE_INSTALL_PREFIX=${AWS_DEPS_INSTALL_DIR}
68- -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}
69- -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_CURRENT_BINARY_DIR} /bin
70- -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
71- -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
72- -DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR}
73- ${CMAKE_CURRENT_SOURCE_DIR} /aws-common-runtime
74- WORKING_DIRECTORY ${AWS_DEPS_BUILD_DIR}
75- RESULT_VARIABLE BUILD_AWSCRT_EXIT_CODE
76- )
77- endif ()
78-
79- if (NOT ${BUILD_AWSCRT_EXIT_CODE} EQUAL 0)
80- message (FATAL_ERROR "Failed to configure aws crt libraries." )
81- endif ()
82- execute_process (COMMAND ${CMAKE_COMMAND} --build ${AWS_DEPS_BUILD_DIR} --config ${CMAKE_BUILD_TYPE}
83- RESULT_VARIABLE BUILD_AWSCRT_EXIT_CODE)
84-
85- if (NOT ${BUILD_AWSCRT_EXIT_CODE} EQUAL 0)
86- message (FATAL_ERROR "Failed to build aws crt libraries." )
87- endif ()
88- message (STATUS "AWS Common Runtime is installed at: ${AWS_DEPS_INSTALL_DIR} " )
89-
90- #the following two lines are done in this branch intentionally, don't move it. project() does some magic that
91- #we don't want happening until we're done with the above code.
92- list (APPEND CMAKE_PREFIX_PATH "${AWS_DEPS_INSTALL_DIR} " )
93-
94- project (aws-iot-device-sdk-cpp-v2)
95-
96- else ()
97- #the following two lines are done in this branch intentionally, don't move it. project() does some magic that
98- #we want happening exactly right now.
99- project (aws-iot-device-sdk-cpp-v2)
100-
101- endif ()
10231# This is required in order to append /lib/cmake to each element in CMAKE_PREFIX_PATH
10332set (AWS_MODULE_DIR "/${CMAKE_INSTALL_LIBDIR} /cmake" )
10433string (REPLACE ";" "${AWS_MODULE_DIR} ;" AWS_MODULE_PATH "${CMAKE_PREFIX_PATH}${AWS_MODULE_DIR} " )
10534# Append that generated list to the module search path
10635list (APPEND CMAKE_MODULE_PATH ${AWS_MODULE_PATH} )
10736
108-
109- if (NOT CMAKE_CXX_STANDARD)
110- set (CMAKE_CXX_STANDARD 11)
37+ if (NOT CMAKE_BUILD_TYPE )
38+ set (CMAKE_BUILD_TYPE "RelWithDebInfo" )
11139endif ()
11240
113- set (IS_SUBDIRECTORY_INCLUDE true )
114- find_package (aws-crt-cpp REQUIRED)
41+ if (BUILD_DEPS)
42+ list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR} /aws-common-runtime/aws-crt-cpp/aws-common-runtime/aws-c-common/cmake" )
43+
44+ include (AwsFindPackage)
45+ set (IN_SOURCE_BUILD ON )
46+ set (BUILD_TESTING_PREV BUILD_TESTING)
47+ set (BUILD_TESTING OFF )
48+ add_subdirectory (aws-common-runtime/aws-crt-cpp)
49+
50+ set (BUILD_TESTING BUILD_TESTING_PREV)
51+ else ()
52+ include (AwsFindPackage)
53+ set (IN_SOURCE_BUILD OFF )
54+ endif ()
11555
11656add_subdirectory (jobs)
11757add_subdirectory (shadow)
0 commit comments