######################################################################################## # 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. # ######################################################################################## def build(bld): ######################################################################################## # We need to build a /dev relative path, otherwise we will get a gem/code relative path ######################################################################################## import os driver_node = bld.path.find_or_declare('Gems/ScriptCanvas/Code/Include/ScriptCanvas/') gem_node = bld.path.find_or_declare('Gems/ScriptCanvas/Code/Include/ScriptCanvas/') script_canvas_dir = driver_node.path_from(gem_node) ######################################################################################## USE = ['EditorUI_QT','EditorCommon','EditorCore','AzToolsFramework', 'ExpressionEvaluationAPI'] USE = USE + bld.make_aws_library_task_list(['LyMetricsProducer', 'LyMetricsShared', 'LyIdentity']) COMMON_DEFINES = ['SCRIPTCANVAS', 'SCRIPTCANVAS_ERRORS_ENABLED', 'ENABLE_EXTENDED_MATH_SUPPORT=0', 'SCRIPTCANVAS_DISABLE_OPTIMIZATIONS=1'] ######################################################################################## EXECUTION_NOTIFICATION_DEFINES = [ 'SC_EXECUTION_TRACE_ENABLED' # this is REQUIRED for debugging/execution logging ] DEBUG_DEBUGGER_DEFINES = [] # 'SCRIPT_CANVAS_DEBUGGER_IS_ALWAYS_OBSERVING', # for aggressive logging that ignores filtering (probably only for debug/development purposes) # 'SCRIPT_CANVAS_DEBUGGER_CONNECT_TO_ANYTHING_BUT_SELF', # connect to the first target that is not self # 'SCRIPT_CANVAS_DEBUG_DEBUGGER' # to debug the ScriptCanvas Debugging systems themselves # ] ######################################################################################## CODEGEN_FILE_LIST = [ # Internal 'Include/ScriptCanvas/Internal/Nodes/ExpressionNodeBase.h', 'Include/ScriptCanvas/Internal/Nodes/StringFormatted.h', 'Include/ScriptCanvas/Internal/Nodes/BaseTimerNode.h', # Core 'Include/ScriptCanvas/Libraries/Core/EBusEventHandler.h', 'Include/ScriptCanvas/Libraries/Core/ExtractProperty.h', 'Include/ScriptCanvas/Libraries/Core/ForEach.h', 'Include/ScriptCanvas/Libraries/Core/FunctionNode.h', 'Include/ScriptCanvas/Libraries/Core/Repeater.h', 'Include/ScriptCanvas/Libraries/Core/GetVariable.h', 'Include/ScriptCanvas/Libraries/Core/SetVariable.h', 'Include/ScriptCanvas/Libraries/Core/ScriptEventBase.h', 'Include/ScriptCanvas/Libraries/Core/SendScriptEvent.h', 'Include/ScriptCanvas/Libraries/Core/ReceiveScriptEvent.h', 'Include/ScriptCanvas/Libraries/Core/Start.h', 'Include/ScriptCanvas/Libraries/Core/ExecutionNode.h', # Entity 'Include/ScriptCanvas/Libraries/Entity/Rotate.h', # Logic 'Include/ScriptCanvas/Libraries/Logic/Any.h', 'Include/ScriptCanvas/Libraries/Logic/Cycle.h', 'Include/ScriptCanvas/Libraries/Logic/Gate.h', 'Include/ScriptCanvas/Libraries/Logic/Indexer.h', 'Include/ScriptCanvas/Libraries/Logic/IsNull.h', 'Include/ScriptCanvas/Libraries/Logic/Multiplexer.h', 'Include/ScriptCanvas/Libraries/Logic/Once.h', 'Include/ScriptCanvas/Libraries/Logic/OrderedSequencer.h', 'Include/ScriptCanvas/Libraries/Logic/Sequencer.h', 'Include/ScriptCanvas/Libraries/Logic/TargetedSequencer.h', 'Include/ScriptCanvas/Libraries/Logic/WeightedRandomSequencer.h', # String 'Include/ScriptCanvas/Libraries/String/Format.h', 'Include/ScriptCanvas/Libraries/String/Print.h', 'Include/ScriptCanvas/Libraries/String/Replace.h', 'Include/ScriptCanvas/Libraries/String/Contains.h', 'Include/ScriptCanvas/Libraries/String/Utilities.h', # Time 'Include/ScriptCanvas/Libraries/Time/Countdown.h', 'Include/ScriptCanvas/Libraries/Time/Duration.h', 'Include/ScriptCanvas/Libraries/Time/HeartBeat.h', 'Include/ScriptCanvas/Libraries/Time/Timer.h', # Unit Testing 'Include/ScriptCanvas/Libraries/UnitTesting/AddFailure.h', 'Include/ScriptCanvas/Libraries/UnitTesting/AddSuccess.h', 'Include/ScriptCanvas/Libraries/UnitTesting/Checkpoint.h', 'Include/ScriptCanvas/Libraries/UnitTesting/ExpectEqual.h', 'Include/ScriptCanvas/Libraries/UnitTesting/ExpectFalse.h', 'Include/ScriptCanvas/Libraries/UnitTesting/ExpectGreaterThan.h', 'Include/ScriptCanvas/Libraries/UnitTesting/ExpectGreaterThanEqual.h', 'Include/ScriptCanvas/Libraries/UnitTesting/ExpectLessThan.h', 'Include/ScriptCanvas/Libraries/UnitTesting/ExpectLessThanEqual.h', 'Include/ScriptCanvas/Libraries/UnitTesting/ExpectNotEqual.h', 'Include/ScriptCanvas/Libraries/UnitTesting/ExpectTrue.h', 'Include/ScriptCanvas/Libraries/UnitTesting/MarkComplete.h', 'Include/ScriptCanvas/Libraries/Operators/Operator.h', # Containers 'Include/ScriptCanvas/Libraries/Operators/Containers/OperatorAt.h', 'Include/ScriptCanvas/Libraries/Operators/Containers/OperatorBack.h', 'Include/ScriptCanvas/Libraries/Operators/Containers/OperatorClear.h', 'Include/ScriptCanvas/Libraries/Operators/Containers/OperatorEmpty.h', 'Include/ScriptCanvas/Libraries/Operators/Containers/OperatorErase.h', 'Include/ScriptCanvas/Libraries/Operators/Containers/OperatorFront.h', 'Include/ScriptCanvas/Libraries/Operators/Containers/OperatorInsert.h', 'Include/ScriptCanvas/Libraries/Operators/Containers/OperatorSize.h', 'Include/ScriptCanvas/Libraries/Operators/Containers/OperatorPushBack.h', # Math 'Include/ScriptCanvas/Libraries/Math/Random.h', 'Include/ScriptCanvas/Libraries/Math/MathExpression.h', 'Include/ScriptCanvas/Libraries/Operators/Math/OperatorArithmetic.h', 'Include/ScriptCanvas/Libraries/Operators/Math/OperatorAdd.h', 'Include/ScriptCanvas/Libraries/Operators/Math/OperatorSub.h', 'Include/ScriptCanvas/Libraries/Operators/Math/OperatorMul.h', 'Include/ScriptCanvas/Libraries/Operators/Math/OperatorDiv.h', 'Include/ScriptCanvas/Libraries/Operators/Math/OperatorDivideByNumber.h', 'Include/ScriptCanvas/Libraries/Operators/Math/OperatorLength.h', 'Include/ScriptCanvas/Libraries/Operators/Math/OperatorLerp.h', ] # ScriptCanvas core execution engine is built as a static library. bld.CryEngineStaticLibrary( target = 'ScriptCanvas', platforms = ['all'], configurations = ['all'], file_list = ['scriptcanvasgem_common.waf_files', 'scriptcanvasgem_runtime_asset.waf_files'], defines = COMMON_DEFINES, export_defines = [ 'SCRIPTCANVAS_ERRORS_ENABLED'], profile_defines = list(DEBUG_DEBUGGER_DEFINES + EXECUTION_NOTIFICATION_DEFINES), profile_dedicated_defines = list(DEBUG_DEBUGGER_DEFINES + EXECUTION_NOTIFICATION_DEFINES), debug_defines = list(DEBUG_DEBUGGER_DEFINES + EXECUTION_NOTIFICATION_DEFINES), debug_dedicated_defines = list(DEBUG_DEBUGGER_DEFINES + EXECUTION_NOTIFICATION_DEFINES), test_all_defines = list(DEBUG_DEBUGGER_DEFINES + EXECUTION_NOTIFICATION_DEFINES), includes = ['Include', 'Include/ScriptCanvas'], use = ['AzCore', 'AzFramework', 'ScriptEventsStatic','ScriptCanvasDebugger', 'ExpressionEvaluation'], features = ['az_code_gen'], win_features = ['crcfix'], vs_filter = 'Gems/ScriptCanvas', disable_pch = True, export_includes = ['.', 'Include', 'Include/ScriptCanvas'], # the gem's includes az_code_gen = [ { 'files' : CODEGEN_FILE_LIST, 'scripts' : [os.path.join(script_canvas_dir, 'Include/ScriptCanvas/CodeGen/Drivers/ScriptCanvasNode.py')], } ], ) bld.CryEngineStaticLibrary( target = 'ScriptCanvasDebugger', platforms = ['all'], configurations = ['all'], file_list = ['scriptcanvasgem_debugger.waf_files'], defines = COMMON_DEFINES, export_defines = [ 'SCRIPTCANVAS_ERRORS_ENABLED'], profile_defines = list(DEBUG_DEBUGGER_DEFINES + EXECUTION_NOTIFICATION_DEFINES), profile_dedicated_defines = list(DEBUG_DEBUGGER_DEFINES + EXECUTION_NOTIFICATION_DEFINES), debug_defines = list(DEBUG_DEBUGGER_DEFINES + EXECUTION_NOTIFICATION_DEFINES), debug_dedicated_defines = list(DEBUG_DEBUGGER_DEFINES + EXECUTION_NOTIFICATION_DEFINES), test_all_defines = list(DEBUG_DEBUGGER_DEFINES + EXECUTION_NOTIFICATION_DEFINES), includes = ['Include', 'Include/ScriptCanvas'], use = ['AzCore', 'AzFramework', 'ScriptEventsStatic'], win_features = ['crcfix'], vs_filter = 'Gems/ScriptCanvas', disable_pch = True, export_includes = ['.', 'Include', 'Include/ScriptCanvas'], # the gem's includes ) # ScriptCanvas editor engine is built as a static library. Contains class that need to be complete in order to run across dll boundaries. bld.CryEngineStaticLibrary( target = 'ScriptCanvasEditor', platforms = ['win', 'darwin', 'linux'], configurations = ['debug', 'profile','debug_test', 'profile_test'], file_list = ['scriptcanvasgem_editor_static.waf_files'], defines = ['SCRIPTCANVAS_EDITOR'] + COMMON_DEFINES, export_defines = ['SCRIPTCANVAS_ERRORS_ENABLED'], includes = [ 'Editor/Static/Include', 'Editor/Static/Source', bld.Path('Code/CryEngine/CryCommon') ], export_includes = [ 'Editor/Static/Include' ], use = list(USE) + ['ScriptCanvas'], uselib = ['QT5CORE', 'QT5GUI', 'QT5WIDGETS'], features = ['qt5','az_code_gen'], win_features = ['crcfix'], vs_filter = 'Gems/ScriptCanvas', disable_pch = True ) bld.DefineGem( includes = [ '.' , '..', 'Include', 'Include/ScriptCanvas' ], export_includes = [ '.', 'Include/ScriptCanvas', 'Editor/Include' ], defines = COMMON_DEFINES, export_defines = [ 'SCRIPTCANVAS_ERRORS_ENABLED'], platforms = ['all'], configurations = ['all'], use = ['ScriptCanvas','ScriptEvents'], pch = 'Source/precompiled.cpp', win_features = ['crcfix'], file_list = ['scriptcanvasgem_game.waf_files' ], test_all_file_list = ['scriptcanvasgem_tests.waf_files'], vs_filter = 'Gems/ScriptCanvas', linux_rpath = ['$ORIGIN'], ######################################## # Editor Gem configuration editor = dict( defines = ['SCRIPTCANVAS_EDITOR'] + COMMON_DEFINES, export_defines = [ 'SCRIPTCANVAS_ERRORS_ENABLED'], features = ['qt5','az_code_gen'], platforms = ['win', 'darwin', 'linux'], exclude_monolithic = True, client_only = True, uselib = ['QT5CORE','QT5GUI','QT5WIDGETS'], vs_filter = 'Gems/ScriptCanvas', file_list = ['scriptcanvasgem_editor.waf_files', 'scriptcanvasgem_editor_asset.waf_files', 'scriptcanvasgem_editor_builder.waf_files'], test_all_file_list = ['scriptcanvasgem_tests.waf_files'], includes = [ 'Include', 'Include/ScriptCanvas', 'Editor/Include', 'Source', bld.Path('Code/CryEngine/CryCommon'), bld.Path('Code/Sandbox/Plugins/EditorCommon'), bld.Path('Code/Sandbox/Editor'), bld.Path('Code/Sandbox/Editor/Include') ], export_includes = [ 'Editor/Include' ], pch = 'Editor/precompiled.cpp', # Platform Specific use = list(USE) + ['ScriptCanvasEditor','CryCommon','AssetBuilderSDK', 'GraphCanvasWidgets'], win_features = ['crcfix'], darwin_cxxflags = ['-Wno-error', '-Wno-unused-local-typedef'], darwin_uselib =['AWS_CPP_SDK_ALL'], ) ######################################## )