CMakeLists.txt 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  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(O3DE_IMGUI_RELEASE_ENABLED ON CACHE BOOL "Allow IMGUI in release builds")
  9. if($<CONFIG:release> AND NOT O3DE_IMGUI_RELEASE_ENABLED)
  10. set(config_base_defines IMGUI_DISABLED)
  11. else()
  12. set(config_base_defines IMGUI_ENABLED)
  13. endif()
  14. o3de_pal_dir(pal_source_dir ${CMAKE_CURRENT_LIST_DIR}/Source/Platform/${PAL_PLATFORM_NAME} "${gem_restricted_path}" "${gem_path}" "${gem_parent_relative_path}")
  15. # This library is the 3rdParty imgui that is in the Gem's External
  16. ly_add_target(
  17. NAME ${gem_name}.imguilib ${PAL_TRAIT_MONOLITHIC_DRIVEN_LIBRARY_TYPE}
  18. NAMESPACE Gem
  19. FILES_CMAKE
  20. imgui_lib_files.cmake
  21. ${pal_source_dir}/platform_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
  22. PLATFORM_INCLUDE_FILES
  23. ${pal_source_dir}/imgui_${PAL_PLATFORM_NAME_LOWERCASE}.cmake
  24. INCLUDE_DIRECTORIES
  25. PRIVATE
  26. Source
  27. INTERFACE
  28. ../External/ImGui/v1.82
  29. PUBLIC
  30. Include
  31. COMPILE_DEFINITIONS
  32. PUBLIC
  33. ${config_base_defines}
  34. INTERFACE
  35. $<$<NOT:$<BOOL:${LY_MONOLITHIC_GAME}>>:IMGUI_API_IMPORT>
  36. IMGUI_INCLUDE_IMGUI_USER_H
  37. BUILD_DEPENDENCIES
  38. PRIVATE
  39. AZ::AzCore
  40. )
  41. ly_add_target(
  42. NAME ${gem_name}.ImGuiLYUtils STATIC
  43. NAMESPACE Gem
  44. FILES_CMAKE
  45. imgui_lyutils_static_files.cmake
  46. INCLUDE_DIRECTORIES
  47. PRIVATE
  48. Include
  49. Source
  50. BUILD_DEPENDENCIES
  51. PUBLIC
  52. Gem::${gem_name}.imguilib
  53. Legacy::CryCommon
  54. RUNTIME_DEPENDENCIES
  55. Gem::${gem_name}.imguilib
  56. )
  57. ly_add_target(
  58. NAME ${gem_name}.Static STATIC
  59. NAMESPACE Gem
  60. FILES_CMAKE
  61. imgui_common_files.cmake
  62. PLATFORM_INCLUDE_FILES
  63. ${pal_source_dir}/platform_${PAL_PLATFORM_NAME_LOWERCASE}.cmake
  64. INCLUDE_DIRECTORIES
  65. PRIVATE
  66. Source
  67. PUBLIC
  68. Include
  69. BUILD_DEPENDENCIES
  70. PUBLIC
  71. Gem::${gem_name}.ImGuiLYUtils
  72. PRIVATE
  73. Gem::LmbrCentral
  74. )
  75. ly_add_target(
  76. NAME ${gem_name} ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
  77. NAMESPACE Gem
  78. FILES_CMAKE
  79. imgui_shared_files.cmake
  80. INCLUDE_DIRECTORIES
  81. PRIVATE
  82. Source
  83. PUBLIC
  84. Include
  85. BUILD_DEPENDENCIES
  86. PRIVATE
  87. Gem::${gem_name}.Static
  88. RUNTIME_DEPENDENCIES
  89. Gem::LmbrCentral
  90. )
  91. # Inject the gem name into the Module source file
  92. ly_add_source_properties(
  93. SOURCES
  94. Source/ImGuiGem.cpp
  95. PROPERTY COMPILE_DEFINITIONS
  96. VALUES
  97. O3DE_GEM_NAME=${gem_name}
  98. O3DE_GEM_VERSION=${gem_version})
  99. # Load the above "Gem::${gem_name}" module in Clients and Servers:
  100. ly_create_alias(NAME ${gem_name}.Clients NAMESPACE Gem TARGETS Gem::${gem_name})
  101. ly_create_alias(NAME ${gem_name}.Servers NAMESPACE Gem TARGETS Gem::${gem_name})
  102. ly_create_alias(NAME ${gem_name}.Unified NAMESPACE Gem TARGETS Gem::${gem_name})
  103. if(PAL_TRAIT_BUILD_HOST_TOOLS)
  104. ly_add_target(
  105. NAME ${gem_name}.Editor GEM_MODULE
  106. NAMESPACE Gem
  107. FILES_CMAKE
  108. imgui_editor_files.cmake
  109. COMPILE_DEFINITIONS
  110. PRIVATE
  111. IMGUI_GEM_EDITOR
  112. INCLUDE_DIRECTORIES
  113. PRIVATE
  114. .
  115. Editor
  116. Source
  117. PUBLIC
  118. Include
  119. BUILD_DEPENDENCIES
  120. PRIVATE
  121. Gem::${gem_name}.Static
  122. RUNTIME_DEPENDENCIES
  123. Gem::LmbrCentral.Editor
  124. )
  125. # Load the above "Gem::${gem_name}.Editor" module in only tools and builders.
  126. ly_create_alias(NAME ${gem_name}.Builders NAMESPACE Gem TARGETS Gem::${gem_name}.Editor)
  127. ly_create_alias(NAME ${gem_name}.Tools NAMESPACE Gem TARGETS Gem::${gem_name}.Editor)
  128. endif()