Skip to content

Commit a219617

Browse files
authored
Merge pull request #19 from awslabs/FB-ConsoleStaging
Fb console staging
2 parents 5bb3b4e + dea2e85 commit a219617

File tree

83 files changed

+1440
-757
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

83 files changed

+1440
-757
lines changed

CMakeLists.txt

Lines changed: 121 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ find_package(Git)
2929
# ADD_CUSTOM_CLIENTS - semi-colon delimited list of format serviceName=<yourserviceName>,version=<theVersionNumber>;serviceName2=<yourOtherServiceName>,version=<versionNumber2>
3030
# to use these arguments, you should add the api definition .normal.json file for your service to the api-description folder in the generator.
3131
# NDK_DIR - directory where the android NDK is installed; if not set, the location will be read from the ANDROID_NDK environment variable
32+
# CUSTOM_PLATFORM_DIR - directory where custom platform scripts, modules, and source resides
3233

3334
# Settings to pull in an external, non-system install of Curl
3435
# On platforms that by default build these libraries (Android), you must define these for both Curl and Openssl; partial building isn't supported
@@ -73,6 +74,7 @@ SET(PLATFORM_WINDOWS 0)
7374
SET(PLATFORM_LINUX 0)
7475
SET(PLATFORM_ANDROID 0)
7576
SET(PLATFORM_APPLE 0)
77+
SET(PLATFORM_CUSTOM 0)
7678

7779
if("${TARGET_ARCH}" STREQUAL "WINDOWS")
7880
SET(PLATFORM_WINDOWS 1)
@@ -88,6 +90,8 @@ elseif("${TARGET_ARCH}" STREQUAL "ANDROID")
8890
endif()
8991
# TODO: check for patch, it's required to build zlib/curl/openssl
9092
# TODO: check for sh, it's required to generate the standalone toolchains
93+
elseif(TARGET_ARCH)
94+
SET(PLATFORM_CUSTOM 1)
9195
else()
9296
message(STATUS "TARGET_ARCH not specified; inferring host OS to be platform compilation target")
9397
if(WIN32)
@@ -113,6 +117,7 @@ endif()
113117
if(PLATFORM_WINDOWS)
114118
message(STATUS "Generating windows build config")
115119
set(SDK_INSTALL_BINARY_PREFIX "windows")
120+
set(USE_WINDOWS_DLL_SEMANTICS 1)
116121
elseif(PLATFORM_LINUX)
117122
message(STATUS "Generating linux build config")
118123
set(SDK_INSTALL_BINARY_PREFIX "linux")
@@ -223,6 +228,33 @@ elseif(PLATFORM_ANDROID)
223228
else()
224229
message(STATUS "Standalone toolchain disabled; this is not a well-supported option")
225230
endif()
231+
232+
add_definitions("-DDISABLE_HOME_DIR_REDIRECT")
233+
234+
elseif(PLATFORM_CUSTOM)
235+
if(NOT CUSTOM_PLATFORM_DIR )
236+
message(FATAL_ERROR "Custom platforms require the CUSTOM_PLATFORM_DIR parameter to be set")
237+
endif()
238+
239+
file(TO_CMAKE_PATH "${CUSTOM_PLATFORM_DIR}" __custom_platform_dir)
240+
if(NOT IS_DIRECTORY "${__custom_platform_dir}")
241+
message(FATAL_ERROR "${CUSTOM_PLATFORM_DIR} is not a valid directory for a custom platform")
242+
endif()
243+
244+
set(__toolchain_file ${__custom_platform_dir}/${TARGET_ARCH}.toolchain.cmake)
245+
IF(NOT (EXISTS ${__toolchain_file}))
246+
message(FATAL "Custom architecture target ${TARGET_ARCH} requires a cmake toolchain file at: ${__toolchain_file}")
247+
endif()
248+
SET(CMAKE_TOOLCHAIN_FILE ${__toolchain_file})
249+
250+
set(CUSTOM_PLATFORM_SOURCE_PATH "${__custom_platform_dir}/src")
251+
list(APPEND CMAKE_MODULE_PATH "${__custom_platform_dir}/modules")
252+
253+
string(TOLOWER "${TARGET_ARCH}" __lower_arch)
254+
set(SDK_INSTALL_BINARY_PREFIX ${__lower_arch})
255+
include(${__custom_platform_dir}/${__lower_arch}_platform.cmake)
256+
257+
message(STATUS "Generating ${__lower_arch} build config")
226258
else()
227259
message(FATAL_ERROR "Unknown target platform. How did this happen?")
228260
endif()
@@ -231,7 +263,6 @@ if(BUILD_SHARED_LIBS)
231263
SET(ARCHIVE_DIRECTORY "bin")
232264
SET(LIBTYPE SHARED)
233265
if(PLATFORM_WINDOWS)
234-
add_definitions("-DUSE_IMPORT_EXPORT")
235266
SET(SUFFIX dll)
236267
elseif(PLATFORM_LINUX OR PLATFORM_ANDROID)
237268
SET(SUFFIX so)
@@ -363,8 +394,17 @@ elseif(ENABLE_INJECTED_ENCRYPTION)
363394
message(STATUS "You will need to inject an encryption implementation before making any http requests!")
364395
endif()
365396

397+
# use response files to prevent command-line-too-big errors for large libraries like iam
398+
SET(CMAKE_CXX_USE_RESPONSE_FILE_FOR_OBJECTS 1)
399+
SET(CMAKE_CXX_USE_RESPONSE_FILE_FOR_INCLUDES 1)
400+
SET(CMAKE_CXX_RESPONSE_FILE_LINK_FLAG "@")
401+
366402
project(aws-sdk-cpp-all)
367403

404+
if(PLATFORM_CUSTOM)
405+
apply_custom_post_toolchain_settings()
406+
endif()
407+
368408
# install setup
369409
# This install section must come after the initial "project(..)" declaration since that's when the compiler settings are discovered; prior to that CMAKE_SIZEOF_VOID_P is empty
370410
# install syntax (after building): cmake -DCMAKE_INSTALL_CONFIG_NAME=<Release/Debug> -DCMAKE_INSTALL_PREFIX=<install_root> -P cmake_install.cmake
@@ -407,7 +447,12 @@ SET(COMPILER_GCC 0)
407447
if(MSVC)
408448
SET(COMPILER_MSVC 1)
409449
else()
410-
SET(COMPILER_GCC 1)
450+
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
451+
SET(COMPILER_CLANG 1)
452+
else()
453+
SET(COMPILER_GCC 1)
454+
endif()
455+
SET(USE_GCC_FLAGS 1)
411456
endif()
412457

413458
# Based on the FORCE_SHARED_CRT and BUILD_SHARED_LIBS options, make sure our compile/link flags bring in the right CRT library
@@ -736,20 +781,29 @@ set(CMAKE_CONFIGURATION_TYPES
736781
# pass this flag to the jsoncpp amalgamated source
737782
add_definitions(-DJSON_USE_EXCEPTION=0)
738783

739-
if(NOT PLATFORM_WINDOWS)
740-
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
741-
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions")
742-
if(NOT BUILD_SHARED_LIBS)
743-
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
784+
# cmake warnings
785+
if(MSVC)
786+
#remove bogus errors at generation time if these variables haven't been manually set
787+
if(NOT CMAKE_CONFIGURATION_TYPES)
788+
set(CMAKE_CONFIGURATION_TYPES "Debug;Release;MinSizeRel;RelWithDebInfo")
789+
endif()
790+
791+
if(NOT CMAKE_CXX_FLAGS_DEBUGOPT)
792+
set(CMAKE_CXX_FLAGS_DEBUGOPT "")
793+
endif()
794+
795+
if(NOT CMAKE_EXE_LINKER_FLAGS_DEBUGOPT)
796+
set(CMAKE_EXE_LINKER_FLAGS_DEBUGOPT "")
797+
endif()
798+
799+
if(NOT CMAKE_SHARED_LINKER_FLAGS_DEBUGOPT)
800+
set(CMAKE_SHARED_LINKER_FLAGS_DEBUGOPT "")
744801
endif()
745802
endif()
746803

747-
# warning control
804+
# compiler warning control
748805
if(PLATFORM_WINDOWS)
749806
if(MSVC)
750-
# some of the clients are exceeding the 16-bit code section limit when building x64 debug, so use /bigobj when we build
751-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj")
752-
753807
# warnings as errors, max warning level (4)
754808
if(NOT CMAKE_CXX_FLAGS MATCHES "/WX")
755809
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX")
@@ -761,45 +815,69 @@ if(PLATFORM_WINDOWS)
761815
else()
762816
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
763817
endif()
764-
765-
#remove bogus errors at generation time if these variables haven't been manually set
766-
if(NOT CMAKE_CONFIGURATION_TYPES)
767-
set(CMAKE_CONFIGURATION_TYPES "Debug;Release;MinSizeRel;RelWithDebInfo")
768-
endif()
769-
770-
if(NOT CMAKE_CXX_FLAGS_DEBUGOPT)
771-
set(CMAKE_CXX_FLAGS_DEBUGOPT "")
772-
endif()
773-
774-
if(NOT CMAKE_EXE_LINKER_FLAGS_DEBUGOPT)
775-
set(CMAKE_EXE_LINKER_FLAGS_DEBUGOPT "")
776-
endif()
777-
778-
if(NOT CMAKE_SHARED_LINKER_FLAGS_DEBUGOPT)
779-
set(CMAKE_SHARED_LINKER_FLAGS_DEBUGOPT "")
780-
endif()
781818
endif()
782-
elseif(PLATFORM_LINUX OR PLATFORM_ANDROID OR PLATFORM_APPLE)
819+
elseif(USE_GCC_FLAGS)
783820
# max warning level, warnings are errors, turn off unused private field. We have one for an empty class.
784821
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror -pedantic -Wextra")
785822

786-
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
823+
if(COMPILER_CLANG)
787824
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-private-field")
825+
if(PLATFORM_ANDROID AND ANDROID_ABI MATCHES "mips*")
826+
string(REGEX REPLACE "-finline-functions" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
827+
endif()
788828
endif()
789829
endif()
790830

791-
if(PLATFORM_WINDOWS)
831+
# other compiler flags
832+
if(MSVC)
833+
# some of the clients are exceeding the 16-bit code section limit when building x64 debug, so use /bigobj when we build
834+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj")
835+
792836
if(NOT ENABLE_RTTI)
793837
string(REGEX REPLACE "/GR " " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
794838
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /GR-")
795839
endif()
796-
else()
797-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions")
840+
841+
# special windows build options:
842+
# debug info: pdbs with dlls, embedded in static libs
843+
# release optimisations to purely focus on size, override debug info settings as necessary
844+
if(BUILD_SHARED_LIBS)
845+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi")
846+
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")
847+
else()
848+
if(CMAKE_CXX_FLAGS MATCHES "/Zi")
849+
string(REGEX REPLACE "/Zi" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
850+
endif()
851+
if(CMAKE_CXX_FLAGS_DEBUG MATCHES "/Zi")
852+
message(STATUS "Clearing pdb setting")
853+
string(REGEX REPLACE "/Zi" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
854+
endif()
855+
856+
# put Z7 in config-specific flags so we can strip from release if we're concerned about size
857+
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Z7")
858+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Z7")
859+
endif()
860+
798861
if(MINIMIZE_SIZE)
799-
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -s")
862+
# strip debug info from release
863+
string(REGEX REPLACE "/Z[a-zA-Z0-9]" "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
864+
string(REGEX REPLACE "/DEBUG" "" CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}")
865+
866+
# strip optimization settings and replace with
867+
string(REGEX REPLACE "/O[a-zA-Z0-9]*" "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
868+
869+
# pure size flags
870+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /O1 /Ob0 /Os")
800871
endif()
801-
if(NOT ENABLE_RTTI)
802-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti")
872+
elseif(USE_GCC_FLAGS)
873+
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions")
874+
875+
if(NOT BUILD_SHARED_LIBS)
876+
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
877+
endif()
878+
879+
if(MINIMIZE_SIZE)
880+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -s")
803881
endif()
804882
endif()
805883

@@ -945,41 +1023,14 @@ if(BUILD_CURL OR BUILD_OPENSSL)
9451023
set_property(TARGET curl PROPERTY IMPORTED_LOCATION ${CURL_LIBRARY_DIR}/libcurl.a)
9461024
endif()
9471025

948-
# special windows build options:
949-
# debug info: pdbs with dlls, embedded in static libs
950-
# release optimisations to purely focus on size, override debug info settings as necessary
951-
if(PLATFORM_WINDOWS)
1026+
if(USE_WINDOWS_DLL_SEMANTICS)
9521027
if(BUILD_SHARED_LIBS)
953-
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi")
954-
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")
955-
else()
956-
if(CMAKE_CXX_FLAGS MATCHES "/Zi")
957-
string(REGEX REPLACE "/Zi" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
958-
endif()
959-
if(CMAKE_CXX_FLAGS_DEBUG MATCHES "/Zi")
960-
message(STATUS "Clearing pdb setting")
961-
string(REGEX REPLACE "/Zi" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
962-
endif()
963-
964-
# put Z7 in config-specific flags so we can strip from release if we're concerned about size
965-
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Z7")
966-
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Z7")
1028+
add_definitions("-DUSE_IMPORT_EXPORT")
9671029
endif()
9681030

969-
if(MINIMIZE_SIZE)
970-
# strip debug info from release
971-
string(REGEX REPLACE "/Z[a-zA-Z0-9]" "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
972-
string(REGEX REPLACE "/DEBUG" "" CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}")
973-
974-
# strip optimization settings and replace with
975-
string(REGEX REPLACE "/O[a-zA-Z0-9]*" "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
976-
977-
# pure size flags
978-
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /O1 /Ob0 /Os")
979-
endif()
1031+
add_definitions(-DUSE_WINDOWS_DLL_SEMANTICS)
9801032
endif()
9811033

982-
9831034
# default libraries to link in per-platform
9841035
if(PLATFORM_WINDOWS)
9851036
set(PLATFORM_DEP_LIBS Userenv )
@@ -1009,6 +1060,10 @@ endif()
10091060

10101061
LIST(APPEND EXPORTS "")
10111062

1063+
if(PLATFORM_CUSTOM)
1064+
apply_custom_platform_settings()
1065+
endif()
1066+
10121067
#sdks
10131068
add_subdirectory(aws-cpp-sdk-core)
10141069
LIST(APPEND EXPORTS "aws-cpp-sdk-core")

android-build/build_and_test_android.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -168,12 +168,14 @@ def SetupJniDirectory(abi, clean):
168168

169169
def CopyNativeLibraries(buildSharedObjects, jniDir, buildDir, abi):
170170
if buildSharedObjects:
171-
platformLibDir = os.path.join(os.environ['ANDROID_NDK'], "platforms", "android-21", "arch-arm", "usr", "lib")
172-
171+
toolchainName = abi + "-standalone-clang-android-21-libc++_shared"
172+
toolchainDir = os.path.join('toolchains', 'android', toolchainName)
173+
174+
platformLibDir = os.path.join(toolchainDir, "sysroot", "usr", "lib")
173175
shutil.copy(os.path.join(platformLibDir, "liblog.so"), jniDir)
174176

175-
stdLibDir = os.path.join(os.environ['ANDROID_NDK'], "sources", "cxx-stl", "gnu-libstdc++", "4.9", "libs", abi)
176-
shutil.copy(os.path.join(stdLibDir, "libgnustl_shared.so"), jniDir)
177+
stdLibDir = os.path.join(toolchainDir, 'arm-linux-androideabi', 'lib')
178+
shutil.copy(os.path.join(stdLibDir, "libc++_shared.so"), jniDir)
177179

178180
soPattern = re.compile(".*\.so$")
179181

@@ -218,6 +220,7 @@ def BuildNative(abi, clean, buildDir, jniDir, installDir, buildType, buildShared
218220
"-DTARGET_ARCH=ANDROID",
219221
"-DANDROID_ABI=" + abi,
220222
"-DCMAKE_BUILD_TYPE=" + buildType,
223+
"-DENABLE_UNITY_BUILD=ON",
221224
'-DTEST_CERT_PATH="/data/data/aws.coretests/certs"',
222225
'-DBUILD_ONLY=dynamodb;sqs;s3;lambda;kinesis;cognito-identity;transfer;iam;identity-management;access-management',
223226
".."] )

android-tests/android-tests.iml

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

0 commit comments

Comments
 (0)