This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
pxz-hos-client-cpp-module/support/aws-sdk-cpp-master/scripts/build_example.py

94 lines
4.2 KiB
Python
Raw Normal View History

# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0.
#
import os
import argparse
import os
import shutil
import subprocess
def GetBuildEnvironments():
return { 'Windows2017' : { 'global_build_call' : 'msbuild ALL_BUILD.vcxproj',
'parallel_option' : ' -m:??',
'configs': ' -p:Configuration=??',
'generator_param' : {
'x86' : ' -G \"Visual Studio 15 2017\"',
'x86_64' : ' -G \"Visual Studio 15 2017 Win64\"'} },
'Ubuntu' : { 'global_build_call' : 'make',
'parallel_option' : ' -j??',
'configs': '',
'generator_param' : {
'x86' : ' -DCMAKE_CXX_FLAGS=-m32',
'x86_64' : ''} } }
def ParseArguments():
argMap = {}
parser = argparse.ArgumentParser(description="AWSNativeSDK Run all examples from Github aws-doc-sdk-examples repository.")
parser.add_argument("--platform", action="store")
parser.add_argument("--cpuArchitecture", action="store")
parser.add_argument("--configs", action="store")
parser.add_argument("--parallel", action="store")
parser.add_argument("--sdkInstallDir", action="store")
parser.add_argument("--exampleSourceDir", action="store")
args = vars( parser.parse_args() )
argMap[ "platform" ] = args[ "platform" ] or "Ubuntu"
argMap[ "configs" ] = args[ "configs" ] or "Debug"
argMap[ "cpuArchitecture" ] = args[ "cpuArchitecture"] or "x86_64"
argMap[ "parallel" ] = args[ "parallel" ] or "8"
argMap[ "sdkInstallDir" ] = args[ "sdkInstallDir" ] or "./install"
argMap[ "exampleSourceDir" ] = args[ "exampleSourceDir" ] or os.path.join("aws-doc-sdk-examples", "cpp", "example_code")
return argMap
def BuildExample(platform, cpuArchitecture, buildDir, buildType, sdkInstallDir, sourceDir, parallel):
buildEnvironment = GetBuildEnvironments()
if os.path.exists(buildDir):
shutil.rmtree(buildDir)
os.mkdir(buildDir)
os.chdir(buildDir)
cmake_call = "cmake" + buildEnvironment[ platform ][ "generator_param" ][ cpuArchitecture ]
cmake_call = cmake_call + " -DBUILD_SHARED_LIBS=ON"
cmake_call = cmake_call + " -DCMAKE_BUILD_TYPE=" + buildType
cmake_call = cmake_call + " -DCMAKE_PREFIX_PATH=" + sdkInstallDir
cmake_call = cmake_call + " -DAWSSDK_ROOT_DIR=" + sdkInstallDir
cmake_call = cmake_call + " " + sourceDir
print("cmake call = " + cmake_call)
subprocess.check_call(cmake_call, shell = True)
build_call = buildEnvironment[ platform ][ 'global_build_call' ]
build_call = build_call + buildEnvironment[ platform ][ 'configs' ].replace("??", buildType)
build_call = build_call + buildEnvironment[ platform ][ 'parallel_option' ].replace("??", parallel)
print("build call = " + build_call)
subprocess.check_call(build_call, shell = True)
def Main():
arguments = ParseArguments()
currentDirectory = os.getcwd()
quotedSdkInstallDir = '"' + os.path.abspath(arguments[ "sdkInstallDir" ]) + '"'
exampleSourceDir = os.path.abspath(arguments[ "exampleSourceDir" ])
for serviceName in os.listdir(exampleSourceDir):
serviceDir = os.path.join(exampleSourceDir, serviceName)
if not os.path.isdir(serviceDir):
continue
else:
if any(str(file) == "CMakeLists.txt" for file in os.listdir(serviceDir)):
if serviceName == "redshift":
continue
os.chdir(currentDirectory)
BuildExample(platform = arguments[ "platform" ],
cpuArchitecture = arguments[ "cpuArchitecture" ],
buildDir = os.path.join(currentDirectory, serviceName),
buildType = arguments[ "configs" ],
sdkInstallDir = quotedSdkInstallDir,
sourceDir = serviceDir,
parallel = arguments[ "parallel" ])
# Run from powershell; make sure msbuild is in PATH environment variable
Main()