Skip to content

Commit de204d4

Browse files
Move to submodules. (#87)
* Move to submodules.
1 parent 007d466 commit de204d4

16 files changed

+82
-189
lines changed

.gitmodules

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "aws-common-runtime/aws-crt-cpp"]
2+
path = aws-common-runtime/aws-crt-cpp
3+
url = https://github.com/awslabs/aws-crt-cpp.git

CMakeLists.txt

+25-85
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
cmake_minimum_required(VERSION 3.1)
2+
project(aws-iot-device-sdk-cpp-v2)
3+
4+
include(CTest)
25

36
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)
47
option(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)
1215
endif()
1316

17+
if (NOT CMAKE_CXX_STANDARD)
18+
set(CMAKE_CXX_STANDARD 11)
19+
endif()
20+
1421
if (UNIX AND NOT APPLE)
1522
include(GNUInstallDirs)
1623
elseif(NOT DEFINED CMAKE_INSTALL_LIBDIR)
1724
set(CMAKE_INSTALL_LIBDIR "lib")
1825
endif()
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)
2229
endif()
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
10332
set(AWS_MODULE_DIR "/${CMAKE_INSTALL_LIBDIR}/cmake")
10433
string(REPLACE ";" "${AWS_MODULE_DIR};" AWS_MODULE_PATH "${CMAKE_PREFIX_PATH}${AWS_MODULE_DIR}")
10534
# Append that generated list to the module search path
10635
list(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")
11139
endif()
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

11656
add_subdirectory(jobs)
11757
add_subdirectory(shadow)

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ is provided by code that been generated from a model of the service.
3030
## Build from source
3131
### Automatically Build and Install AWS Dependencies
3232
```
33-
git clone https://github.com/awslabs/aws-iot-device-sdk-cpp-v2.git
33+
git clone --recursive https://github.com/awslabs/aws-iot-device-sdk-cpp-v2.git
3434
mkdir aws-iot-device-sdk-cpp-v2-build
3535
cd aws-iot-device-sdk-cpp-v2-build
3636
cmake -DCMAKE_INSTALL_PREFIX="<path to where you install>" -DBUILD_DEPS=ON ../aws-iot-device-sdk-cpp-v2

aws-common-runtime/CMakeLists.txt

-23
This file was deleted.

aws-common-runtime/aws-crt-cpp

Submodule aws-crt-cpp added at 1f045a1

aws-common-runtime/cmake/BuildAwsCrtCpp.cmake

-63
This file was deleted.

codebuild/common-posix.sh

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ if [ "$TRAVIS_OS_NAME" != "osx" ]; then
1616
fi
1717

1818
# build SDK
19+
git submodule update --init --recursive
1920
mkdir -p build
2021
pushd build
2122
cmake $CMAKE_ARGS ../

codebuild/common-windows.bat

+2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ mkdir %INSTALL_DIR%
77

88
@rem build SDK
99
mkdir %BUILDS_DIR%\aws-iot-device-sdk-cpp-v2-build
10+
cd %CODEBUILD_SRC_DIR%
11+
git submodule update --init --recursive
1012
cd %BUILDS_DIR%\aws-iot-device-sdk-cpp-v2-build
1113
cmake %CMAKE_ARGS% -DCMAKE_INSTALL_PREFIX="%INSTALL_DIR%" -DCMAKE_PREFIX_PATH="%INSTALL_DIR%" -DBUILD_DEPS=ON %CODEBUILD_SRC_DIR% || goto error
1214
cmake --build . || goto error

discovery/CMakeLists.txt

+10-4
Original file line numberDiff line numberDiff line change
@@ -91,17 +91,23 @@ target_include_directories(Discovery-cpp PUBLIC
9191
$<INSTALL_INTERFACE:include>)
9292

9393
if (NOT IS_SUBDIRECTORY_INCLUDE)
94-
find_package(aws-crt-cpp REQUIRED)
94+
aws_use_package(aws-crt-cpp)
9595
endif()
9696

97-
target_link_libraries(Discovery-cpp AWS::aws-crt-cpp)
97+
target_link_libraries(Discovery-cpp ${DEP_AWS_LIBS})
9898

9999
install(FILES ${AWS_DISCOVERY_HEADERS} DESTINATION "include/aws/discovery/" COMPONENT Development)
100100

101+
if (BUILD_SHARED_LIBS)
102+
set (TARGET_DIR "shared")
103+
else()
104+
set (TARGET_DIR "static")
105+
endif()
101106

102107
install(EXPORT "Discovery-cpp-targets"
103-
DESTINATION "lib/Discovery-cpp/cmake/"
104-
NAMESPACE AWS::)
108+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/Discovery-cpp/cmake/${TARGET_DIR}"
109+
NAMESPACE AWS::
110+
COMPONENT Development)
105111

106112
configure_file("cmake/Discovery-cpp-config.cmake"
107113
"${CMAKE_CURRENT_BINARY_DIR}/Discovery-cpp-config.cmake"

discovery/cmake/Discovery-cpp-config.cmake

+5-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,8 @@ include(CMakeFindDependencyMacro)
22

33
find_dependency(aws-crt-cpp)
44

5-
include(${CMAKE_CURRENT_LIST_DIR}/Discovery-cpp-targets.cmake)
5+
if (BUILD_SHARED_LIBS)
6+
include(${CMAKE_CURRENT_LIST_DIR}/shared/@PROJECT_NAME@-targets.cmake)
7+
else ()
8+
include(${CMAKE_CURRENT_LIST_DIR}/static/@PROJECT_NAME@-targets.cmake)
9+
endif()

jobs/CMakeLists.txt

+10-4
Original file line numberDiff line numberDiff line change
@@ -91,17 +91,23 @@ target_include_directories(IotJobs-cpp PUBLIC
9191
$<INSTALL_INTERFACE:include>)
9292

9393
if (NOT IS_SUBDIRECTORY_INCLUDE)
94-
find_package(aws-crt-cpp REQUIRED)
94+
aws_use_package(aws-crt-cpp)
9595
endif()
9696

97-
target_link_libraries(IotJobs-cpp AWS::aws-crt-cpp)
97+
target_link_libraries(IotJobs-cpp ${DEP_AWS_LIBS})
9898

9999
install(FILES ${AWS_IOTJOBS_HEADERS} DESTINATION "include/aws/iotjobs/" COMPONENT Development)
100100

101+
if (BUILD_SHARED_LIBS)
102+
set (TARGET_DIR "shared")
103+
else()
104+
set (TARGET_DIR "static")
105+
endif()
101106

102107
install(EXPORT "IotJobs-cpp-targets"
103-
DESTINATION "lib/IotJobs-cpp/cmake/"
104-
NAMESPACE AWS::)
108+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/IotJobs-cpp/cmake/${TARGET_DIR}"
109+
NAMESPACE AWS::
110+
COMPONENT Development)
105111

106112
configure_file("cmake/IotJobs-cpp-config.cmake"
107113
"${CMAKE_CURRENT_BINARY_DIR}/IotJobs-cpp-config.cmake"

jobs/cmake/IotJobs-cpp-config.cmake

+5-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,8 @@ include(CMakeFindDependencyMacro)
22

33
find_dependency(aws-crt-cpp)
44

5-
include(${CMAKE_CURRENT_LIST_DIR}/IotJobs-cpp-targets.cmake)
5+
if (BUILD_SHARED_LIBS)
6+
include(${CMAKE_CURRENT_LIST_DIR}/shared/@PROJECT_NAME@-targets.cmake)
7+
else ()
8+
include(${CMAKE_CURRENT_LIST_DIR}/static/@PROJECT_NAME@-targets.cmake)
9+
endif()

samples/mqtt/basic_pub_sub/CMakeLists.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,5 @@ target_include_directories(${PUB_SUB_PROJECT_NAME} PUBLIC
2727
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
2828
$<INSTALL_INTERFACE:include>)
2929

30-
target_link_libraries(${PUB_SUB_PROJECT_NAME} AWS::aws-crt-cpp)
30+
aws_use_package(aws-crt-cpp)
31+
target_link_libraries(${PUB_SUB_PROJECT_NAME} ${DEP_AWS_LIBS})

samples/mqtt/raw_pub_sub/CMakeLists.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,5 @@ target_include_directories(${PUB_SUB_PROJECT_NAME} PUBLIC
2727
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
2828
$<INSTALL_INTERFACE:include>)
2929

30-
target_link_libraries(${PUB_SUB_PROJECT_NAME} AWS::aws-crt-cpp)
30+
aws_use_package(aws-crt-cpp)
31+
target_link_libraries(${PUB_SUB_PROJECT_NAME} ${DEP_AWS_LIBS})

shadow/CMakeLists.txt

+10-4
Original file line numberDiff line numberDiff line change
@@ -91,17 +91,23 @@ target_include_directories(IotShadow-cpp PUBLIC
9191
$<INSTALL_INTERFACE:include>)
9292

9393
if (NOT IS_SUBDIRECTORY_INCLUDE)
94-
find_package(aws-crt-cpp REQUIRED)
94+
aws_use_package(aws-crt-cpp)
9595
endif()
9696

97-
target_link_libraries(IotShadow-cpp AWS::aws-crt-cpp)
97+
target_link_libraries(IotShadow-cpp ${DEP_AWS_LIBS})
9898

9999
install(FILES ${AWS_IOTSHADOW_HEADERS} DESTINATION "include/aws/iotshadow/" COMPONENT Development)
100100

101+
if (BUILD_SHARED_LIBS)
102+
set (TARGET_DIR "shared")
103+
else()
104+
set (TARGET_DIR "static")
105+
endif()
101106

102107
install(EXPORT "IotShadow-cpp-targets"
103-
DESTINATION "lib/IotShadow-cpp/cmake/"
104-
NAMESPACE AWS::)
108+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/IotShadow-cpp/cmake/${TARGET_DIR}"
109+
NAMESPACE AWS::
110+
COMPONENT Development)
105111

106112
configure_file("cmake/IotShadow-cpp-config.cmake"
107113
"${CMAKE_CURRENT_BINARY_DIR}/IotShadow-cpp-config.cmake"

shadow/cmake/IotShadow-cpp-config.cmake

+5-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,8 @@ include(CMakeFindDependencyMacro)
22

33
find_dependency(aws-crt-cpp)
44

5-
include(${CMAKE_CURRENT_LIST_DIR}/IotShadow-cpp-targets.cmake)
5+
if (BUILD_SHARED_LIBS)
6+
include(${CMAKE_CURRENT_LIST_DIR}/shared/@PROJECT_NAME@-targets.cmake)
7+
else ()
8+
include(${CMAKE_CURRENT_LIST_DIR}/static/@PROJECT_NAME@-targets.cmake)
9+
endif()

0 commit comments

Comments
 (0)