Skip to content

Commit a992f33

Browse files
committed
Draft DynamoDB changes for build scripts
Build and export header changes to use as reference for the required code-generation changes in following commits.
1 parent 4b3b522 commit a992f33

File tree

7 files changed

+393
-92
lines changed

7 files changed

+393
-92
lines changed

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ else ()
9999

100100
# -- main build targets --
101101
add_subdirectory(src)
102+
add_subdirectory(generated)
102103

103104
# -- Tests and packaging if running this as top project --
104105
if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)

generated/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
add_subdirectory(aws-cpp-sdk-dynamodb)
Lines changed: 110 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -1,76 +1,110 @@
1-
add_project(aws-cpp-sdk-dynamodb "C++ SDK for the AWS dynamodb service" aws-cpp-sdk-core)
2-
3-
file(GLOB AWS_DYNAMODB_HEADERS
4-
"include/aws/dynamodb/*.h"
5-
)
6-
7-
file(GLOB AWS_DYNAMODB_MODEL_HEADERS
8-
"include/aws/dynamodb/model/*.h"
9-
)
10-
11-
file(GLOB AWS_DYNAMODB_SOURCE
12-
"source/*.cpp"
13-
)
14-
15-
file(GLOB AWS_DYNAMODB_MODEL_SOURCE
16-
"source/model/*.cpp"
17-
)
18-
19-
file(GLOB DYNAMODB_UNIFIED_HEADERS
20-
${AWS_DYNAMODB_HEADERS}
21-
${AWS_DYNAMODB_MODEL_HEADERS}
22-
)
23-
24-
file(GLOB DYNAMODB_UNITY_SRC
25-
${AWS_DYNAMODB_SOURCE}
26-
${AWS_DYNAMODB_MODEL_SOURCE}
27-
)
28-
29-
if(ENABLE_UNITY_BUILD)
30-
enable_unity_build("DYNAMODB" DYNAMODB_UNITY_SRC)
31-
endif()
32-
33-
file(GLOB DYNAMODB_SRC
34-
${DYNAMODB_UNIFIED_HEADERS}
35-
${DYNAMODB_UNITY_SRC}
36-
)
37-
38-
if(WIN32)
39-
#if we are compiling for visual studio, create a sane directory tree.
40-
if(MSVC)
41-
source_group("Header Files\\aws\\dynamodb" FILES ${AWS_DYNAMODB_HEADERS})
42-
source_group("Header Files\\aws\\dynamodb\\model" FILES ${AWS_DYNAMODB_MODEL_HEADERS})
43-
source_group("Source Files" FILES ${AWS_DYNAMODB_SOURCE})
44-
source_group("Source Files\\model" FILES ${AWS_DYNAMODB_MODEL_SOURCE})
45-
endif(MSVC)
46-
endif()
47-
48-
set(DYNAMODB_INCLUDES
49-
"${CMAKE_CURRENT_SOURCE_DIR}/include/"
50-
)
51-
52-
add_library(${PROJECT_NAME} ${DYNAMODB_SRC})
53-
add_library(AWS::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
54-
55-
set_compiler_flags(${PROJECT_NAME})
56-
set_compiler_warnings(${PROJECT_NAME})
57-
58-
if(USE_WINDOWS_DLL_SEMANTICS AND BUILD_SHARED_LIBS)
59-
target_compile_definitions(${PROJECT_NAME} PRIVATE "AWS_DYNAMODB_EXPORTS")
60-
endif()
61-
62-
target_include_directories(${PROJECT_NAME} PUBLIC
63-
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
64-
$<INSTALL_INTERFACE:include>)
65-
66-
target_link_libraries(${PROJECT_NAME} PRIVATE ${PLATFORM_DEP_LIBS} ${PROJECT_LIBS})
67-
68-
69-
setup_install()
70-
71-
install (FILES ${AWS_DYNAMODB_HEADERS} DESTINATION ${INCLUDE_DIRECTORY}/aws/dynamodb)
72-
install (FILES ${AWS_DYNAMODB_MODEL_HEADERS} DESTINATION ${INCLUDE_DIRECTORY}/aws/dynamodb/model)
73-
74-
do_packaging()
75-
76-
1+
if (LEGACY_BUILD)
2+
add_project(aws-cpp-sdk-dynamodb "C++ SDK for the AWS dynamodb service" aws-cpp-sdk-core)
3+
4+
file(GLOB AWS_DYNAMODB_HEADERS
5+
"include/aws/dynamodb/*.h"
6+
)
7+
8+
file(GLOB AWS_DYNAMODB_MODEL_HEADERS
9+
"include/aws/dynamodb/model/*.h"
10+
)
11+
12+
file(GLOB AWS_DYNAMODB_SOURCE
13+
"source/*.cpp"
14+
)
15+
16+
file(GLOB AWS_DYNAMODB_MODEL_SOURCE
17+
"source/model/*.cpp"
18+
)
19+
20+
file(GLOB DYNAMODB_UNIFIED_HEADERS
21+
${AWS_DYNAMODB_HEADERS}
22+
${AWS_DYNAMODB_MODEL_HEADERS}
23+
)
24+
25+
file(GLOB DYNAMODB_UNITY_SRC
26+
${AWS_DYNAMODB_SOURCE}
27+
${AWS_DYNAMODB_MODEL_SOURCE}
28+
)
29+
30+
if (ENABLE_UNITY_BUILD)
31+
enable_unity_build("DYNAMODB" DYNAMODB_UNITY_SRC)
32+
endif ()
33+
34+
file(GLOB DYNAMODB_SRC
35+
${DYNAMODB_UNIFIED_HEADERS}
36+
${DYNAMODB_UNITY_SRC}
37+
)
38+
39+
if (WIN32)
40+
#if we are compiling for visual studio, create a sane directory tree.
41+
if (MSVC)
42+
source_group("Header Files\\aws\\dynamodb" FILES ${AWS_DYNAMODB_HEADERS})
43+
source_group("Header Files\\aws\\dynamodb\\model" FILES ${AWS_DYNAMODB_MODEL_HEADERS})
44+
source_group("Source Files" FILES ${AWS_DYNAMODB_SOURCE})
45+
source_group("Source Files\\model" FILES ${AWS_DYNAMODB_MODEL_SOURCE})
46+
endif (MSVC)
47+
endif ()
48+
49+
set(DYNAMODB_INCLUDES
50+
"${CMAKE_CURRENT_SOURCE_DIR}/include/"
51+
)
52+
53+
add_library(${PROJECT_NAME} ${DYNAMODB_SRC})
54+
add_library(AWS::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
55+
56+
set_compiler_flags(${PROJECT_NAME})
57+
set_compiler_warnings(${PROJECT_NAME})
58+
59+
if (USE_WINDOWS_DLL_SEMANTICS AND BUILD_SHARED_LIBS)
60+
target_compile_definitions(${PROJECT_NAME} PRIVATE "AWS_DYNAMODB_EXPORTS")
61+
endif ()
62+
63+
target_include_directories(${PROJECT_NAME} PUBLIC
64+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
65+
$<INSTALL_INTERFACE:include>)
66+
67+
target_link_libraries(${PROJECT_NAME} PRIVATE ${PLATFORM_DEP_LIBS} ${PROJECT_LIBS})
68+
69+
70+
setup_install()
71+
72+
install(FILES ${AWS_DYNAMODB_HEADERS} DESTINATION ${INCLUDE_DIRECTORY}/aws/dynamodb)
73+
install(FILES ${AWS_DYNAMODB_MODEL_HEADERS} DESTINATION ${INCLUDE_DIRECTORY}/aws/dynamodb/model)
74+
75+
do_packaging()
76+
else ()
77+
add_library(aws-sdk-cpp-dynamodb)
78+
add_library(aws-sdk-cpp::dynamodb ALIAS aws-sdk-cpp-dynamodb)
79+
80+
target_include_directories(
81+
aws-sdk-cpp-dynamodb
82+
PUBLIC ${CMAKE_CURRENT_BINARY_DIR}
83+
PUBLIC ${aws-crt-cpp_INCLUDE_DIRS}
84+
PUBLIC ${CJSON_INCLUDE_DIRS}
85+
)
86+
message(STATUS "CRT: ${aws-crt-cpp_LIBRARY_DIRS}")
87+
target_link_directories(
88+
aws-sdk-cpp-dynamodb
89+
PUBLIC ${aws-crt-cpp_LIBRARY_DIRS}
90+
PUBLIC ${CJSON_LIBRARY_DIRS}
91+
)
92+
target_link_libraries(
93+
aws-sdk-cpp-dynamodb
94+
aws-sdk-cpp::core
95+
${aws-crt-cpp_LIBRARIES}
96+
${CJSON_LIBRARIES}
97+
tinyxml2::tinyxml2
98+
CURL::libcurl
99+
)
100+
101+
include(GenerateExportHeader)
102+
generate_export_header(
103+
aws-sdk-cpp-dynamodb
104+
EXPORT_MACRO_NAME AWS_DYNAMODB_API # to be backward compatible during LEGACY_BUILD exist until 1.11
105+
)
106+
107+
add_subdirectory(include)
108+
add_subdirectory(source)
109+
110+
endif ()
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
target_include_directories(
2+
aws-sdk-cpp-dynamodb
3+
BEFORE
4+
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
5+
)

generated/aws-cpp-sdk-dynamodb/include/aws/dynamodb/DynamoDB_EXPORTS.h

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,30 @@
55

66
#pragma once
77

8-
#ifdef _MSC_VER
9-
//disable windows complaining about max template size.
10-
#pragma warning (disable : 4503)
11-
#endif // _MSC_VER
8+
#ifdef NON_LEGACY_BUILD
9+
#include "aws-sdk-cpp-dynamodb_export.h"
10+
#else
1211

13-
#if defined (USE_WINDOWS_DLL_SEMANTICS) || defined (_WIN32)
1412
#ifdef _MSC_VER
15-
#pragma warning(disable : 4251)
13+
//disable windows complaining about max template size.
14+
#pragma warning (disable : 4503)
1615
#endif // _MSC_VER
1716

18-
#ifdef USE_IMPORT_EXPORT
19-
#ifdef AWS_DYNAMODB_EXPORTS
20-
#define AWS_DYNAMODB_API __declspec(dllexport)
17+
#if defined (USE_WINDOWS_DLL_SEMANTICS) || defined (_WIN32)
18+
#ifdef _MSC_VER
19+
#pragma warning(disable : 4251)
20+
#endif // _MSC_VER
21+
22+
#ifdef USE_IMPORT_EXPORT
23+
#ifdef AWS_DYNAMODB_EXPORTS
24+
#define AWS_DYNAMODB_API __declspec(dllexport)
25+
#else
26+
#define AWS_DYNAMODB_API __declspec(dllimport)
27+
#endif /* AWS_DYNAMODB_EXPORTS */
2128
#else
22-
#define AWS_DYNAMODB_API __declspec(dllimport)
23-
#endif /* AWS_DYNAMODB_EXPORTS */
24-
#else
29+
#define AWS_DYNAMODB_API
30+
#endif // USE_IMPORT_EXPORT
31+
#else // defined (USE_WINDOWS_DLL_SEMANTICS) || defined (WIN32)
2532
#define AWS_DYNAMODB_API
26-
#endif // USE_IMPORT_EXPORT
27-
#else // defined (USE_WINDOWS_DLL_SEMANTICS) || defined (WIN32)
28-
#define AWS_DYNAMODB_API
29-
#endif // defined (USE_WINDOWS_DLL_SEMANTICS) || defined (WIN32)
33+
#endif // defined (USE_WINDOWS_DLL_SEMANTICS) || defined (WIN32)
34+
#endif
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
target_sources(aws-sdk-cpp-dynamodb
2+
PRIVATE
3+
${CMAKE_CURRENT_SOURCE_DIR}/DynamoDBClient.cpp
4+
${CMAKE_CURRENT_SOURCE_DIR}/DynamoDBEndpoint.cpp
5+
${CMAKE_CURRENT_SOURCE_DIR}/DynamoDBErrorMarshaller.cpp
6+
${CMAKE_CURRENT_SOURCE_DIR}/DynamoDBErrors.cpp
7+
${AWS_DYNAMODB_MODEL_SOURCE}
8+
)
9+
add_subdirectory(model)

0 commit comments

Comments
 (0)