CMakeLists.txt 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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. # Expose some internal of Optick for better integration with 03DE
  9. set(OPTICK_GIT_PATCH "${CMAKE_CURRENT_SOURCE_DIR}/optick.patch")
  10. # Add Optick dependency using FetchContent
  11. include(FetchContent)
  12. FetchContent_Declare(
  13. Optick
  14. GIT_REPOSITORY "https://github.com/bombomby/optick.git"
  15. GIT_TAG "8abd28dee1a4034c973a3d32cd1777118e72df7e" # version 1.4.0+
  16. PATCH_COMMAND cmake -P "${LY_ROOT_FOLDER}/cmake/PatchIfNotAlreadyPatched.cmake" ${OPTICK_GIT_PATCH}
  17. )
  18. set(OPTICK_ENABLED ON)
  19. set(OPTICK_BUILD_GUI_APP OFF)
  20. set(OPTICK_INSTALL_TARGETS OFF)
  21. message(STATUS "OptickProfiler Gem uses https://github.com/bombomby/optick.git version 1.4.0 (License: MIT)")
  22. message(STATUS " With patch: ${OPTICK_GIT_PATCH}")
  23. FetchContent_MakeAvailable(Optick)
  24. # Let's not clutter the root of any IDE folder structure with 3rd party dependencies
  25. # Setting the FOLDER makes it show up there in the solution build in VS and similarly
  26. # any other IDEs that organize in folders.
  27. set_target_properties(
  28. OptickCore
  29. PROPERTIES
  30. FOLDER "3rdParty Dependencies"
  31. )
  32. ly_add_target(
  33. NAME ${gem_name}.Static STATIC
  34. NAMESPACE Gem
  35. FILES_CMAKE
  36. optickprofiler_files.cmake
  37. INCLUDE_DIRECTORIES
  38. PUBLIC
  39. Include
  40. PRIVATE
  41. Source
  42. BUILD_DEPENDENCIES
  43. PUBLIC
  44. AZ::AzCore
  45. AZ::AzFramework
  46. OptickCore
  47. )
  48. ly_add_target(
  49. NAME ${gem_name} ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
  50. NAMESPACE Gem
  51. FILES_CMAKE
  52. optickprofiler_shared_files.cmake
  53. INCLUDE_DIRECTORIES
  54. PUBLIC
  55. Include
  56. PRIVATE
  57. Source
  58. BUILD_DEPENDENCIES
  59. PRIVATE
  60. Gem::${gem_name}.Static
  61. )
  62. ly_add_source_properties(
  63. SOURCES
  64. Source/ProfilerModule.cpp
  65. PROPERTY COMPILE_DEFINITIONS
  66. VALUES
  67. O3DE_GEM_NAME=${gem_name}
  68. O3DE_GEM_VERSION=${gem_version})
  69. ly_create_alias(NAME ${gem_name}.Servers NAMESPACE Gem TARGETS Gem::${gem_name})
  70. ly_create_alias(NAME ${gem_name}.Builders NAMESPACE Gem TARGETS Gem::${gem_name})
  71. ly_create_alias(NAME ${gem_name}.Clients NAMESPACE Gem TARGETS Gem::${gem_name})
  72. ly_create_alias(NAME ${gem_name}.Unified NAMESPACE Gem TARGETS Gem::${gem_name})
  73. ly_create_alias(NAME ${gem_name}.Tools NAMESPACE Gem TARGETS Gem::${gem_name})