CMakeLists.txt 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297
  1. #
  2. # Copyright (c) Contributors to the Open 3D Engine Project.
  3. # For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. #
  5. # SPDX-License-Identifier: Apache-2.0 OR MIT
  6. #
  7. #
  8. set(SCRIPT_CANVAS_COMMON_DEFINES
  9. SCRIPTCANVAS
  10. ENABLE_EXTENDED_MATH_SUPPORT=0
  11. )
  12. set(SCRIPT_CANVAS_EXECUTION_NOTIFICATION_DEFINES
  13. $<$<NOT:$<CONFIG:Release>>:SC_EXECUTION_TRACE_ENABLED> # this is REQUIRED for debugging/execution logging
  14. )
  15. # note that the above define controls whether the debug static library has member variables in its classes, in its API,
  16. # and thus must be transmitted to all users of the static library or else the sizeof the structs will mismatch.
  17. # It must thus be an INTERFACE or PUBLIC compile definition
  18. set(SCRIPT_CANVAS_DEBUG_DEBUGGER_DEFINES
  19. $<$<NOT:$<CONFIG:Release>>:
  20. # SCRIPT_CANVAS_DEBUGGER_IS_ALWAYS_OBSERVING # for aggressive logging that ignores filtering (probably only for debug/development purposes)
  21. # SCRIPT_CANVAS_DEBUGGER_CONNECT_TO_ANYTHING_BUT_SELF # connect to the first target that is not self
  22. # SCRIPT_CANVAS_DEBUG_DEBUGGER # to debug the ${gem_name} Debugging systems themselves
  23. >
  24. )
  25. ly_add_target(
  26. NAME ${gem_name}Debugger STATIC
  27. NAMESPACE Gem
  28. FILES_CMAKE
  29. scriptcanvasgem_debugger_files.cmake
  30. INCLUDE_DIRECTORIES
  31. PRIVATE
  32. Include
  33. Include/ScriptCanvas
  34. COMPILE_DEFINITIONS
  35. PUBLIC
  36. SCRIPTCANVAS_ERRORS_ENABLED
  37. ${SCRIPT_CANVAS_EXECUTION_NOTIFICATION_DEFINES}
  38. PRIVATE
  39. ${SCRIPT_CANVAS_COMMON_DEFINES}
  40. ${SCRIPT_CANVAS_DEBUG_DEBUGGER_DEFINES}
  41. BUILD_DEPENDENCIES
  42. PRIVATE
  43. AZ::AzCore
  44. AZ::AzFramework
  45. Gem::ScriptEvents.Static
  46. )
  47. # the script canvas debugger is an optional gem module
  48. # To Enable it, associate it with a project
  49. ly_create_alias(NAME ${gem_name}Debugger.Builders NAMESPACE Gem TARGETS Gem::${gem_name}Debugger)
  50. ly_create_alias(NAME ${gem_name}Debugger.Tools NAMESPACE Gem TARGETS Gem::${gem_name}Debugger)
  51. ly_create_alias(NAME ${gem_name}Debugger.Clients NAMESPACE Gem TARGETS Gem::${gem_name}Debugger)
  52. ly_create_alias(NAME ${gem_name}Debugger.Servers NAMESPACE Gem TARGETS Gem::${gem_name}Debugger)
  53. ly_create_alias(NAME ${gem_name}Debugger.Unified NAMESPACE Gem TARGETS Gem::${gem_name}Debugger)
  54. ly_add_target(
  55. NAME ${gem_name}.Extensions STATIC
  56. NAMESPACE Gem
  57. FILES_CMAKE
  58. scriptcanvasgem_extensions_files.cmake
  59. INCLUDE_DIRECTORIES
  60. PUBLIC
  61. Include
  62. BUILD_DEPENDENCIES
  63. PUBLIC
  64. AZ::AzCore
  65. AZ::AzFramework
  66. )
  67. ly_add_target(
  68. NAME ${gem_name}.API STATIC
  69. NAMESPACE Gem
  70. FILES_CMAKE
  71. scriptcanvasgem_autogen_files.cmake
  72. scriptcanvasgem_headers.cmake
  73. scriptcanvasgem_common_files.cmake
  74. scriptcanvasgem_runtime_asset_files.cmake
  75. INCLUDE_DIRECTORIES
  76. PUBLIC
  77. .
  78. Include
  79. Include/ScriptCanvas
  80. ${SCRIPT_CANVAS_AUTOGEN_BUILD_DIR}
  81. COMPILE_DEFINITIONS
  82. PUBLIC
  83. SCRIPTCANVAS_ERRORS_ENABLED
  84. ${SCRIPT_CANVAS_EXECUTION_NOTIFICATION_DEFINES}
  85. PRIVATE
  86. ${SCRIPT_CANVAS_COMMON_DEFINES}
  87. ${SCRIPT_CANVAS_DEBUG_DEBUGGER_DEFINES}
  88. BUILD_DEPENDENCIES
  89. PUBLIC
  90. Gem::ScriptEvents.Static
  91. Gem::ExpressionEvaluation.Static
  92. Gem::${gem_name}.Extensions
  93. PRIVATE
  94. AZ::AzCore
  95. AZ::AzFramework
  96. Gem::${gem_name}Debugger
  97. AUTOGEN_RULES
  98. *.ScriptCanvasGrammar.xml,ScriptCanvasGrammar_Header.jinja,$path/$fileprefix.generated.h
  99. *.ScriptCanvasGrammar.xml,ScriptCanvasGrammar_Source.jinja,$path/$fileprefix.generated.cpp
  100. *.ScriptCanvasNodeable.xml,ScriptCanvasNodeable_Header.jinja,$path/$fileprefix.generated.h
  101. *.ScriptCanvasNodeable.xml,ScriptCanvasNodeable_Source.jinja,$path/$fileprefix.generated.cpp
  102. *.ScriptCanvasFunction.xml,ScriptCanvasFunction_Header.jinja,$path/$fileprefix.generated.h
  103. *.ScriptCanvasFunction.xml,ScriptCanvasFunction_Source.jinja,$path/$fileprefix.generated.cpp
  104. RUNTIME_DEPENDENCIES
  105. Gem::${gem_name}Debugger
  106. )
  107. ly_add_target(
  108. NAME ${gem_name} ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
  109. NAMESPACE Gem
  110. FILES_CMAKE
  111. scriptcanvasgem_game_files.cmake
  112. INCLUDE_DIRECTORIES
  113. PRIVATE
  114. .
  115. Include/${gem_name}
  116. COMPILE_DEFINITIONS
  117. PUBLIC
  118. SCRIPTCANVAS_ERRORS_ENABLED
  119. SCRIPTCANVAS_EDITOR
  120. PRIVATE
  121. ${SCRIPT_CANVAS_COMMON_DEFINES}
  122. BUILD_DEPENDENCIES
  123. PUBLIC
  124. Gem::${gem_name}.API
  125. PRIVATE
  126. AZ::AzCore
  127. AZ::AzFramework
  128. Gem::ScriptEvents.Static
  129. RUNTIME_DEPENDENCIES
  130. Gem::ScriptEvents
  131. Gem::ExpressionEvaluation
  132. )
  133. # Inject the gem name into the Module source file
  134. ly_add_source_properties(
  135. SOURCES
  136. Source/ScriptCanvasGem.cpp
  137. PROPERTY COMPILE_DEFINITIONS
  138. VALUES
  139. O3DE_GEM_NAME=${gem_name}
  140. O3DE_GEM_VERSION=${gem_version})
  141. # the "${gem_name}" target is active in Clients and Servers
  142. ly_create_alias(NAME ${gem_name}.Clients NAMESPACE Gem TARGETS Gem::${gem_name})
  143. ly_create_alias(NAME ${gem_name}.Servers NAMESPACE Gem TARGETS Gem::${gem_name})
  144. ly_create_alias(NAME ${gem_name}.Unified NAMESPACE Gem TARGETS Gem::${gem_name})
  145. if(PAL_TRAIT_BUILD_HOST_TOOLS)
  146. ly_add_target(
  147. NAME ${gem_name}.Editor.Static STATIC
  148. NAMESPACE Gem
  149. AUTOMOC
  150. AUTOUIC
  151. AUTORCC
  152. FILES_CMAKE
  153. scriptcanvasgem_editor_files.cmake
  154. scriptcanvasgem_editor_asset_files.cmake
  155. scriptcanvasgem_editor_builder_files.cmake
  156. scriptcanvasgem_editor_tools_files.cmake
  157. scriptcanvasgem_game_files.cmake
  158. COMPILE_DEFINITIONS
  159. PUBLIC
  160. SCRIPTCANVAS_ERRORS_ENABLED
  161. PRIVATE
  162. ${SCRIPT_CANVAS_COMMON_DEFINES}
  163. INCLUDE_DIRECTORIES
  164. PUBLIC
  165. Editor/Include
  166. PRIVATE
  167. .
  168. Editor
  169. Tools
  170. ${SCRIPT_CANVAS_AUTOGEN_BUILD_DIR}
  171. BUILD_DEPENDENCIES
  172. PUBLIC
  173. Legacy::CryCommon
  174. AZ::AzCore
  175. AZ::AssetBuilderSDK
  176. ${additional_dependencies}
  177. Gem::${gem_name}.API
  178. Gem::ScriptEvents.Static
  179. Gem::GraphCanvasWidgets
  180. Gem::ExpressionEvaluation.Static
  181. PRIVATE
  182. Legacy::EditorCore
  183. RUNTIME_DEPENDENCIES
  184. Gem::${gem_name}
  185. )
  186. ly_add_target(
  187. NAME ${gem_name}.Editor GEM_MODULE
  188. NAMESPACE Gem
  189. FILES_CMAKE
  190. scriptcanvasgem_editor_shared_files.cmake
  191. COMPILE_DEFINITIONS
  192. PUBLIC
  193. SCRIPTCANVAS_ERRORS_ENABLED
  194. PRIVATE
  195. SCRIPTCANVAS_EDITOR
  196. ${SCRIPT_CANVAS_COMMON_DEFINES}
  197. INCLUDE_DIRECTORIES
  198. PUBLIC
  199. Editor/Include
  200. PRIVATE
  201. .
  202. Editor
  203. BUILD_DEPENDENCIES
  204. PRIVATE
  205. AZ::AzToolsFramework
  206. PUBLIC
  207. Gem::${gem_name}.Editor.Static
  208. RUNTIME_DEPENDENCIES
  209. 3rdParty::Qt::Core
  210. 3rdParty::Qt::Gui
  211. 3rdParty::Qt::Widgets
  212. Legacy::EditorCore
  213. AZ::AzQtComponents
  214. Gem::GraphCanvas.Editor
  215. Gem::ScriptEvents.Editor
  216. Gem::ExpressionEvaluation
  217. )
  218. # Inject the gem name into the Module source file
  219. ly_add_source_properties(
  220. SOURCES
  221. Editor/ScriptCanvasEditorGem.cpp
  222. PROPERTY COMPILE_DEFINITIONS
  223. VALUES
  224. O3DE_GEM_NAME=${gem_name}
  225. O3DE_GEM_VERSION=${gem_version})
  226. # the "${gem_name}.Editor" target is active in all dev tools:
  227. ly_create_alias(NAME ${gem_name}.Builders NAMESPACE Gem TARGETS Gem::${gem_name}.Editor)
  228. ly_create_alias(NAME ${gem_name}.Tools NAMESPACE Gem TARGETS Gem::${gem_name}.Editor)
  229. endif()
  230. ################################################################################
  231. # Tests
  232. ################################################################################
  233. if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
  234. ly_add_target(
  235. NAME ${gem_name}.Tests MODULE
  236. NAMESPACE Gem
  237. FILES_CMAKE
  238. scriptcanvasgem_tests_files.cmake
  239. INCLUDE_DIRECTORIES
  240. PRIVATE
  241. Include
  242. Tests
  243. BUILD_DEPENDENCIES
  244. PRIVATE
  245. AZ::AzCore
  246. AZ::AzCoreTestCommon
  247. AZ::AzFramework
  248. AZ::AzTest
  249. Gem::${gem_name}.API
  250. )
  251. ly_add_googletest(
  252. NAME Gem::${gem_name}.Tests
  253. )
  254. if(PAL_TRAIT_BUILD_HOST_TOOLS)
  255. ly_add_target(
  256. NAME ${gem_name}.Editor.Tests MODULE
  257. NAMESPACE Gem
  258. FILES_CMAKE
  259. scriptcanvasgem_editor_tests_files.cmake
  260. INCLUDE_DIRECTORIES
  261. PRIVATE
  262. Builder
  263. Editor
  264. BUILD_DEPENDENCIES
  265. PRIVATE
  266. AZ::AzCoreTestCommon
  267. AZ::AzTest
  268. Gem::${gem_name}.API
  269. Gem::${gem_name}.Editor.Static
  270. )
  271. ly_add_googletest(
  272. NAME Gem::${gem_name}.Editor.Tests
  273. )
  274. endif()
  275. endif()