######################################################################################## # All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or # its licensors. # # For complete copyright and license terms please see the LICENSE at the root of this # distribution (the "License"). All use of this software is governed by the License, # or, if provided, by the license below or the license accompanying this file. Do not # remove or modify any license notices. This file is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # ######################################################################################## from runpy import run_path import os def build(bld): # Defines not only the Gem build, but a static library build as well. Gems that use # this Gem must use = ['CloudGemFrameworkStaticLibrary'] in their wscript files. import lumberyard_sdks is_project_gen = (bld.env['PLATFORM'] == 'project_generator') static_lib_file_list = [] static_lib_use = ['RAPIDJSON', 'AzCore', 'AzTest'] static_lib_features = [] static_lib_uselib = ['BOOST'] static_lib_darwin_lib = [] static_lib_linux_lib = [] static_lib_ios_lib = [] static_lib_appletv_lib = [] static_lib_ios_framework = [] static_lib_appletv_framework = [] static_lib_restricted_libs = {} static_lib_shared = [] gem_file_list = [] if is_project_gen: gem_file_list.append('cloudgemframework.waf_files') gem_file_list.append('lmbraws_unsupported.waf_files') else: if lumberyard_sdks.does_platform_support_aws_native_sdk(bld): gem_file_list.append('cloudgemframework.waf_files') else: gem_file_list.append('lmbraws_unsupported.waf_files') gem_test_uselib = [] gem_darwin_lib = [] gem_linux_lib = [] gem_ios_lib = [] gem_appletv_lib = [] gem_ios_framework = [] gem_appletv_framework = [] gem_restricted_libs = {} restricted_scripts = {} for p0, p1, p2, p3 in bld.env['RESTRICTED_PLATFORMS']: script_dir, script_base = os.path.split(bld.cur_script.abspath()) restricted_script_filename = os.path.join(script_dir, p0, '{0}_{1}'.format(script_base, p1)) if os.path.exists(restricted_script_filename): script = run_path(restricted_script_filename) restricted_scripts[p3] = script if 'init_libs' in script: script['init_libs'](p3, static_lib_restricted_libs, gem_restricted_libs) if is_project_gen: static_lib_file_list += ['static_library.waf_files'] static_lib_file_list += ['static_library_empty.waf_files'] else: if lumberyard_sdks.should_project_include_aws_native_sdk(bld): static_lib_file_list += ['static_library.waf_files'] else: static_lib_file_list += ['static_library_empty.waf_files'] if lumberyard_sdks.does_platform_support_aws_native_sdk(bld): static_lib_uselib += ['AWS_CPP_SDK_ALL'] static_lib_shared += ['awsgem.json'] gem_test_uselib += ['AWS_CPP_SDK_LAMBDA'] gem_darwin_lib += ['curl'] gem_linux_lib += ['curl'] gem_ios_lib += ['curl'] gem_appletv_lib += ['curl'] gem_ios_framework += [ 'security' ] gem_appletv_framework += [ 'security' ] for p,script in restricted_scripts.items(): if 'support_aws_native_sdk' in script: script['support_aws_native_sdk'](p, gem_restricted_libs) kw = dict( file_list = gem_file_list, platforms = ['all'], includes = ['.', bld.Path('Code/CryEngine/CryCommon'), 'Source'], use = ['CloudGemFramework.StaticLibrary','AzFramework'], test_all_uselib = gem_test_uselib, uselib = ['AWS_CPP_SDK_COGNITO_IDENTITY', 'AWS_CPP_SDK_IDENTITY_MANAGEMENT','AWS_CPP_SDK_LAMBDA', 'AWS_CPP_SDK_STS', 'AWS_CPP_SDK_CORE', 'BOOST'], win_uselib = ['BOOSTPYTHON'], darwin_lib = gem_darwin_lib, linux_lib = gem_linux_lib, ios_lib = gem_ios_lib, appletv_lib = gem_appletv_lib, ios_framework = gem_ios_framework, appletv_framework = gem_appletv_framework, # warning added in clang 6.0 / ndk r17, the issue stems from an object in AWS that has virtual functions # but no virtual destructor in the base class android_cxxflags = ['-Wno-delete-non-virtual-dtor'], platform_roots = [bld.PlatformRoot('Source/Platform', export_includes=False)], StaticLibrary = dict( file_list = static_lib_file_list, includes = ['.', bld.Path('Code/CryEngine/CryCommon')], use = static_lib_use, features = static_lib_features, uselib = static_lib_uselib, darwin_lib = static_lib_darwin_lib, linux_lib = static_lib_linux_lib, ios_lib = static_lib_ios_lib, appletv_lib = static_lib_appletv_lib, ios_framework = static_lib_ios_framework, appletv_framework = static_lib_appletv_framework, shared_settings = static_lib_shared, vs_filter = 'Gems', disable_pch = True, platform_roots = [bld.PlatformRoot('Source/Platform', export_includes=False)] ), editor = dict( darwin_lib = gem_darwin_lib, shared_settings = ['awsgem.json'], defines = ['CLOUD_GEM_FRAMEWORK_EDITOR'], platform_roots = [bld.PlatformRoot('Source/Platform', export_includes=False)] ) ) for p in restricted_scripts: if p in gem_restricted_libs: kw['{0}_lib'.format(p)] = gem_restricted_libs[p] if p in static_lib_restricted_libs: kw['StaticLibrary']['{0}_lib'.format(p)] = static_lib_restricted_libs[p] bld.DefineGem(**kw)