1
1
cmake_minimum_required (VERSION 3.1 )
2
-
2
+ project ( aws-crt-cpp CXX C )
3
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 )
4
4
5
+ include (CTest )
6
+
5
7
if (DEFINED CMAKE_PREFIX_PATH )
6
8
file (TO_CMAKE_PATH "${CMAKE_PREFIX_PATH} " CMAKE_PREFIX_PATH )
7
9
endif ()
@@ -28,93 +30,44 @@ if (NOT CMAKE_BUILD_TYPE)
28
30
set (CMAKE_BUILD_TYPE "RelWithDebInfo" )
29
31
endif ()
30
32
31
- set (AWS_CRT_CPP_VERSION "v0.6.8 " )
33
+ set (AWS_CRT_CPP_VERSION "v0.7.1 " )
32
34
33
35
configure_file (include /aws/crt/Config.h.in ${CMAKE_CURRENT_LIST_DIR} /include/aws/crt/Config.h @ONLY )
34
36
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} )
42
42
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" )
46
45
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 )
87
47
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 )
93
52
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 )
96
57
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 )
104
58
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 )
105
66
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 )
110
69
endif ()
111
70
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
-
118
71
include (AwsCFlags )
119
72
include (AwsSharedLibSetup )
120
73
@@ -226,38 +179,38 @@ if (WIN32)
226
179
endif ()
227
180
endif ()
228
181
229
- add_library (${CMAKE_PROJECT_NAME } ${AWS_CRT_CPP_SRC} )
182
+ add_library (${PROJECT_NAME } ${AWS_CRT_CPP_SRC} )
230
183
231
184
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 )
234
187
endif ()
235
188
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} )
238
191
239
- aws_prepare_symbol_visibility_args (${CMAKE_PROJECT_NAME } "AWS_CRT_CPP" )
192
+ aws_prepare_symbol_visibility_args (${PROJECT_NAME } "AWS_CRT_CPP" )
240
193
241
194
#set warnings
242
195
if (MSVC )
243
- target_compile_options (${CMAKE_PROJECT_NAME } PRIVATE /W4 /WX /wd4068 )
196
+ target_compile_options (${PROJECT_NAME } PRIVATE /W4 /WX /wd4068 )
244
197
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 )
246
199
endif ()
247
200
248
201
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" )
250
203
endif ()
251
204
252
- target_include_directories (${CMAKE_PROJECT_NAME } PUBLIC
205
+ target_include_directories (${PROJECT_NAME } PUBLIC
253
206
$< BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include>
254
207
$< INSTALL_INTERFACE:include> )
255
208
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} )
261
214
262
215
install (FILES ${AWS_CRT_HEADERS} DESTINATION "include/aws/crt" COMPONENT Development )
263
216
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
269
222
install (FILES ${AWS_CRT_EXTERNAL_HEADERS} DESTINATION "include/aws/crt/external" COMPONENT Development )
270
223
271
224
install (
272
- TARGETS ${CMAKE_PROJECT_NAME }
273
- EXPORT ${CMAKE_PROJECT_NAME } -targets
225
+ TARGETS ${PROJECT_NAME }
226
+ EXPORT ${PROJECT_NAME } -targets
274
227
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Development
275
228
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Development
276
229
RUNTIME DESTINATION bin COMPONENT Runtime
@@ -282,18 +235,22 @@ else()
282
235
set (TARGET_DIR "static" )
283
236
endif ()
284
237
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} "
287
240
NAMESPACE AWS::
288
241
COMPONENT Development )
289
242
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"
292
245
@ONLY )
293
246
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/"
296
249
COMPONENT Development )
297
250
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
+
0 commit comments