Skip to content

Commit 1f045a1

Browse files
Move to submodules (aws#91)
Moved BUILD_DEPS path to use git submodules.
1 parent d525412 commit 1f045a1

23 files changed

+98
-612
lines changed

.gitmodules

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
[submodule "aws-common-runtime/aws-c-common"]
2+
path = aws-common-runtime/aws-c-common
3+
url = https://github.com/awslabs/aws-c-common.git
4+
[submodule "aws-common-runtime/aws-c-io"]
5+
path = aws-common-runtime/aws-c-io
6+
url = https://github.com/awslabs/aws-c-io.git
7+
[submodule "aws-common-runtime/aws-c-compression"]
8+
path = aws-common-runtime/aws-c-compression
9+
url = https://github.com/awslabs/aws-c-compression.git
10+
[submodule "aws-common-runtime/aws-c-cal"]
11+
path = aws-common-runtime/aws-c-cal
12+
url = https://github.com/awslabs/aws-c-cal.git
13+
[submodule "aws-common-runtime/aws-c-auth"]
14+
path = aws-common-runtime/aws-c-auth
15+
url = https://github.com/awslabs/aws-c-auth.git
16+
[submodule "aws-common-runtime/aws-c-http"]
17+
path = aws-common-runtime/aws-c-http
18+
url = https://github.com/awslabs/aws-c-http.git
19+
[submodule "aws-common-runtime/aws-c-mqtt"]
20+
path = aws-common-runtime/aws-c-mqtt
21+
url = https://github.com/awslabs/aws-c-mqtt.git
22+
[submodule "aws-common-runtime/s2n"]
23+
path = aws-common-runtime/s2n
24+
url = https://github.com/awslabs/s2n.git

CMakeLists.txt

Lines changed: 58 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
cmake_minimum_required(VERSION 3.1)
2-
2+
project(aws-crt-cpp CXX C)
33
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)
44

5+
include(CTest)
6+
57
if (DEFINED CMAKE_PREFIX_PATH)
68
file(TO_CMAKE_PATH "${CMAKE_PREFIX_PATH}" CMAKE_PREFIX_PATH)
79
endif()
@@ -28,93 +30,44 @@ if (NOT CMAKE_BUILD_TYPE)
2830
set(CMAKE_BUILD_TYPE "RelWithDebInfo")
2931
endif()
3032

31-
set(AWS_CRT_CPP_VERSION "v0.6.8")
33+
set(AWS_CRT_CPP_VERSION "v0.7.1")
3234

3335
configure_file(include/aws/crt/Config.h.in ${CMAKE_CURRENT_LIST_DIR}/include/aws/crt/Config.h @ONLY)
3436

35-
if (BUILD_DEPS)
36-
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.")
37-
if (DEFINED CMAKE_INSTALL_PREFIX)
38-
set(AWS_DEPS_INSTALL_DIR ${CMAKE_INSTALL_PREFIX})
39-
else()
40-
set(AWS_DEPS_INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/deps/install)
41-
endif()
37+
# This is required in order to append /lib/cmake to each element in CMAKE_PREFIX_PATH
38+
set(AWS_MODULE_DIR "/${CMAKE_INSTALL_LIBDIR}/cmake")
39+
string(REPLACE ";" "${AWS_MODULE_DIR};" AWS_MODULE_PATH "${CMAKE_PREFIX_PATH}${AWS_MODULE_DIR}")
40+
# Append that generated list to the module search path
41+
list(APPEND CMAKE_MODULE_PATH ${AWS_MODULE_PATH})
4242

43-
if (NOT DEFINED CMAKE_PREFIX_PATH)
44-
set(CMAKE_PREFIX_PATH ${AWS_DEPS_INSTALL_DIR})
45-
endif()
43+
if (BUILD_DEPS)
44+
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/aws-common-runtime/aws-c-common/cmake")
4645

47-
file(MAKE_DIRECTORY ${AWS_DEPS_BUILD_DIR})
48-
if(TARGET_ARCH STREQUAL "ANDROID")
49-
execute_process(
50-
COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR}
51-
-DTARGET_ARCH=${TARGET_ARCH}
52-
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
53-
-DANDROID_NATIVE_API_LEVEL=${ANDROID_NATIVE_API_LEVEL}
54-
-DANDROID_ABI=${ANDROID_ABI}
55-
-DANDROID_TOOLCHAIN_NAME=${ANDROID_TOOLCHAIN_NAME}
56-
-DANDROID_STANDALONE_TOOLCHAIN=${ANDROID_STANDALONE_TOOLCHAIN}
57-
-DANDROID_STL=${ANDROID_STL}
58-
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
59-
-DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}
60-
-DCMAKE_INSTALL_PREFIX=${AWS_DEPS_INSTALL_DIR}
61-
-DCMAKE_PREFIX_PATH=${AWS_DEPS_INSTALL_DIR}
62-
-DGIT_EXECUTABLE=${GIT_EXECUTABLE}
63-
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
64-
-DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR}
65-
${CMAKE_CURRENT_SOURCE_DIR}/aws-common-runtime
66-
WORKING_DIRECTORY ${AWS_DEPS_BUILD_DIR}
67-
)
68-
69-
else()
70-
execute_process(
71-
COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR}
72-
-DTARGET_ARCH=${TARGET_ARCH}
73-
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
74-
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
75-
-DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}
76-
-DCMAKE_PREFIX_PATH=${AWS_DEPS_INSTALL_DIR}
77-
-DCMAKE_INSTALL_PREFIX=${AWS_DEPS_INSTALL_DIR}
78-
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}
79-
-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_CURRENT_BINARY_DIR}/bin
80-
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
81-
-DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR}
82-
${CMAKE_CURRENT_SOURCE_DIR}/aws-common-runtime
83-
WORKING_DIRECTORY ${AWS_DEPS_BUILD_DIR}
84-
RESULT_VARIABLE BUILD_AWSCRT_EXIT_CODE
85-
)
86-
endif()
46+
include(AwsFindPackage)
8747

88-
if (NOT ${BUILD_AWSCRT_EXIT_CODE} EQUAL 0)
89-
message(FATAL_ERROR "Failed to configure aws crt libraries.")
90-
endif()
91-
execute_process(COMMAND ${CMAKE_COMMAND} --build ${AWS_DEPS_BUILD_DIR} --config ${CMAKE_BUILD_TYPE}
92-
RESULT_VARIABLE BUILD_AWSCRT_EXIT_CODE)
48+
set(IN_SOURCE_BUILD ON)
49+
set(BUILD_TESTING_PREV BUILD_TESTING)
50+
set(BUILD_TESTING OFF)
51+
add_subdirectory(aws-common-runtime/aws-c-common)
9352

94-
if (NOT ${BUILD_AWSCRT_EXIT_CODE} EQUAL 0)
95-
message(FATAL_ERROR "Failed to build aws crt libraries.")
53+
if (UNIX AND NOT APPLE)
54+
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/aws-common-runtime/s2n/cmake/modules")
55+
find_package(LibCrypto REQUIRED)
56+
add_subdirectory(aws-common-runtime/s2n)
9657
endif()
97-
message(STATUS "AWS Common Runtime is installed at: ${AWS_DEPS_INSTALL_DIR}")
98-
99-
#the following two lines are done in this branch intentionally, don't move it. project() does some magic that
100-
#we don't want happening until we're done with the above code.
101-
list(APPEND CMAKE_PREFIX_PATH "${AWS_DEPS_INSTALL_DIR}")
102-
103-
project(aws-crt-cpp)
10458

59+
add_subdirectory(aws-common-runtime/aws-c-io)
60+
add_subdirectory(aws-common-runtime/aws-c-cal)
61+
add_subdirectory(aws-common-runtime/aws-c-compression)
62+
add_subdirectory(aws-common-runtime/aws-c-http)
63+
add_subdirectory(aws-common-runtime/aws-c-auth)
64+
add_subdirectory(aws-common-runtime/aws-c-mqtt)
65+
set(BUILD_TESTING BUILD_TESTING_PREV)
10566
else()
106-
#the following two lines are done in this branch intentionally, don't move it. project() does some magic that
107-
#we want happening exactly right now.
108-
project(aws-crt-cpp)
109-
67+
include(AwsFindPackage)
68+
set(IN_SOURCE_BUILD OFF)
11069
endif()
11170

112-
# This is required in order to append /lib/cmake to each element in CMAKE_PREFIX_PATH
113-
set(AWS_MODULE_DIR "/${CMAKE_INSTALL_LIBDIR}/cmake")
114-
string(REPLACE ";" "${AWS_MODULE_DIR};" AWS_MODULE_PATH "${CMAKE_PREFIX_PATH}${AWS_MODULE_DIR}")
115-
# Append that generated list to the module search path
116-
list(APPEND CMAKE_MODULE_PATH ${AWS_MODULE_PATH})
117-
11871
include(AwsCFlags)
11972
include(AwsSharedLibSetup)
12073

@@ -226,38 +179,38 @@ if (WIN32)
226179
endif ()
227180
endif()
228181

229-
add_library(${CMAKE_PROJECT_NAME} ${AWS_CRT_CPP_SRC})
182+
add_library(${PROJECT_NAME} ${AWS_CRT_CPP_SRC})
230183

231184
if (BUILD_SHARED_LIBS)
232-
target_compile_definitions(${CMAKE_PROJECT_NAME} PUBLIC -DAWS_CRT_CPP_USE_IMPORT_EXPORT)
233-
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE -DAWS_CRT_CPP_EXPORTS)
185+
target_compile_definitions(${PROJECT_NAME} PUBLIC -DAWS_CRT_CPP_USE_IMPORT_EXPORT)
186+
target_compile_definitions(${PROJECT_NAME} PRIVATE -DAWS_CRT_CPP_EXPORTS)
234187
endif()
235188

236-
set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES LINKER_LANGUAGE CXX)
237-
set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES CXX_STANDARD ${CMAKE_CXX_STANDARD})
189+
set_target_properties(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE CXX)
190+
set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD ${CMAKE_CXX_STANDARD})
238191

239-
aws_prepare_symbol_visibility_args(${CMAKE_PROJECT_NAME} "AWS_CRT_CPP")
192+
aws_prepare_symbol_visibility_args(${PROJECT_NAME} "AWS_CRT_CPP")
240193

241194
#set warnings
242195
if (MSVC)
243-
target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE /W4 /WX /wd4068)
196+
target_compile_options(${PROJECT_NAME} PRIVATE /W4 /WX /wd4068)
244197
else ()
245-
target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE -Wall -Wno-long-long -pedantic -Werror)
198+
target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wno-long-long -pedantic -Werror)
246199
endif ()
247200

248201
if (CMAKE_BUILD_TYPE STREQUAL "" OR CMAKE_BUILD_TYPE MATCHES Debug)
249-
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE "-DDEBUG_BUILD")
202+
target_compile_definitions(${PROJECT_NAME} PRIVATE "-DDEBUG_BUILD")
250203
endif ()
251204

252-
target_include_directories(${CMAKE_PROJECT_NAME} PUBLIC
205+
target_include_directories(${PROJECT_NAME} PUBLIC
253206
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
254207
$<INSTALL_INTERFACE:include>)
255208

256-
find_package(aws-c-http REQUIRED)
257-
find_package(aws-c-mqtt REQUIRED)
258-
find_package(aws-c-cal REQUIRED)
259-
find_package(aws-c-auth REQUIRED)
260-
target_link_libraries(${CMAKE_PROJECT_NAME} AWS::aws-c-auth AWS::aws-c-cal AWS::aws-c-http AWS::aws-c-mqtt)
209+
aws_use_package(aws-c-http)
210+
aws_use_package(aws-c-mqtt)
211+
aws_use_package(aws-c-cal)
212+
aws_use_package(aws-c-auth)
213+
target_link_libraries(${PROJECT_NAME} ${DEP_AWS_LIBS})
261214

262215
install(FILES ${AWS_CRT_HEADERS} DESTINATION "include/aws/crt" COMPONENT Development)
263216
install(FILES ${AWS_CRT_AUTH_HEADERS} DESTINATION "include/aws/crt/auth" COMPONENT Development)
@@ -269,8 +222,8 @@ install(FILES ${AWS_CRT_HTTP_HEADERS} DESTINATION "include/aws/crt/http" COMPONE
269222
install(FILES ${AWS_CRT_EXTERNAL_HEADERS} DESTINATION "include/aws/crt/external" COMPONENT Development)
270223

271224
install(
272-
TARGETS ${CMAKE_PROJECT_NAME}
273-
EXPORT ${CMAKE_PROJECT_NAME}-targets
225+
TARGETS ${PROJECT_NAME}
226+
EXPORT ${PROJECT_NAME}-targets
274227
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Development
275228
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Development
276229
RUNTIME DESTINATION bin COMPONENT Runtime
@@ -282,18 +235,22 @@ else()
282235
set (TARGET_DIR "static")
283236
endif()
284237

285-
install(EXPORT "${CMAKE_PROJECT_NAME}-targets"
286-
DESTINATION "${CMAKE_INSTALL_LIBDIR}/${CMAKE_PROJECT_NAME}/cmake/${TARGET_DIR}"
238+
install(EXPORT "${PROJECT_NAME}-targets"
239+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/cmake/${TARGET_DIR}"
287240
NAMESPACE AWS::
288241
COMPONENT Development)
289242

290-
configure_file("cmake/${CMAKE_PROJECT_NAME}-config.cmake"
291-
"${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}-config.cmake"
243+
configure_file("cmake/${PROJECT_NAME}-config.cmake"
244+
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake"
292245
@ONLY)
293246

294-
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}-config.cmake"
295-
DESTINATION "${CMAKE_INSTALL_LIBDIR}/${CMAKE_PROJECT_NAME}/cmake/"
247+
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake"
248+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/cmake/"
296249
COMPONENT Development)
297250

298-
enable_testing()
299-
add_subdirectory(tests)
251+
if (NOT CMAKE_CROSSCOMPILING)
252+
if (BUILD_TESTING)
253+
add_subdirectory(tests)
254+
endif()
255+
endif()
256+

README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,12 @@ More protocols and utilities are coming soon, so stay tuned.
1414

1515
## Building
1616

17-
The C99 libraries are already included for your convenience when you specify the `-DBUILD_DEPS=ON` CMake argument.
17+
The C99 libraries are already included for your convenience as submodules. If you would like to have us build them
18+
by default, be sure to either perform a recursive clone `git clone --recursive` or initialize the submodules via.
19+
`git submodule update --init`. Then, to build, specify the `-DBUILD_DEPS=ON` CMake argument.
1820

1921
If you want to manage these dependencies manually (e.g. you're using them in other projects), simply specify
20-
`-DCMAKE_INSTALL_PREFIX` to point to the directory where you have them installed.
22+
`-DCMAKE_PREFIX_PATH` to point to the absolute path where you have them installed.
2123

2224
## Dependencies?
2325

aws-common-runtime/CMakeLists.txt

Lines changed: 0 additions & 64 deletions
This file was deleted.

aws-common-runtime/aws-c-auth

Submodule aws-c-auth added at 8281ad6

aws-common-runtime/aws-c-cal

Submodule aws-c-cal added at 5f56275

aws-common-runtime/aws-c-common

Submodule aws-c-common added at 045024d

aws-common-runtime/aws-c-compression

Submodule aws-c-compression added at 45d6ba1

aws-common-runtime/aws-c-http

Submodule aws-c-http added at 232f335

aws-common-runtime/aws-c-io

Submodule aws-c-io added at 250484c

aws-common-runtime/aws-c-mqtt

Submodule aws-c-mqtt added at 9895e4d

0 commit comments

Comments
 (0)