diff --git a/Code/Framework/AzCore/CMakeLists.txt b/Code/Framework/AzCore/CMakeLists.txt index eec5b37e03..60c5f50594 100644 --- a/Code/Framework/AzCore/CMakeLists.txt +++ b/Code/Framework/AzCore/CMakeLists.txt @@ -12,10 +12,12 @@ ly_get_list_relative_pal_filename(pal_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/${PAL_PLATFORM_NAME}) ly_get_list_relative_pal_filename(common_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/Common) -if(PAL_TRAIT_PROF_PIX_SUPPORTED AND LY_PIX_ENABLED) - set(LY_PIX_PATH "${LY_3RDPARTY_PATH}/winpixeventruntime" CACHE PATH "Path to the Windows Pix Event Runtime.") - set(AZ_CORE_PIX_BUILD_DEPENDENCIES 3rdParty::pix) - set(AZ_CORE_PIX_BUILD_DEFINES "USE_PIX") +if(PAL_TRAIT_PROF_PIX_SUPPORTED) + set(LY_PIX_ENABLED OFF CACHE BOOL "Enables PIX profiler integration.") + if(LY_PIX_ENABLED) + message(STATUS "PIX found, enabling as profiler") + set(AZ_CORE_PIX_BUILD_DEPENDENCIES 3rdParty::pix) + endif() endif() ly_add_target( @@ -41,9 +43,6 @@ ly_add_target( 3rdParty::zstd 3rdParty::cityhash ${AZ_CORE_PIX_BUILD_DEPENDENCIES} - COMPILE_DEFINITIONS - PUBLIC - ${AZ_CORE_PIX_BUILD_DEFINES} ) ly_add_source_properties( SOURCES diff --git a/Gems/Atom/RHI/3rdParty/Findrenderdoc.cmake b/Gems/Atom/RHI/3rdParty/Findrenderdoc.cmake new file mode 100644 index 0000000000..7b7c312169 --- /dev/null +++ b/Gems/Atom/RHI/3rdParty/Findrenderdoc.cmake @@ -0,0 +1,15 @@ +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +ly_add_external_target( + NAME renderdoc + 3RDPARTY_ROOT_DIRECTORY "${LY_RENDERDOC_PATH}" + VERSION + INCLUDE_DIRECTORIES . + COMPILE_DEFINITIONS USE_RENDER_DOC +) diff --git a/Gems/Atom/RHI/Code/Platform/AppleTV/AtomRHITests_traits_appletv.cmake b/Gems/Atom/RHI/3rdParty/Platform/Linux/renderdoc_linux.cmake similarity index 69% rename from Gems/Atom/RHI/Code/Platform/AppleTV/AtomRHITests_traits_appletv.cmake rename to Gems/Atom/RHI/3rdParty/Platform/Linux/renderdoc_linux.cmake index 1aeb95c7b1..a74d250901 100644 --- a/Gems/Atom/RHI/Code/Platform/AppleTV/AtomRHITests_traits_appletv.cmake +++ b/Gems/Atom/RHI/3rdParty/Platform/Linux/renderdoc_linux.cmake @@ -6,5 +6,4 @@ # # -set(ATOM_RHI_TRAIT_BUILD_SUPPORTS_TEST FALSE) -set(ATOM_RHI_TRAIT_BUILD_SUPPORTS_EDIT FALSE) +set(RENDERDOC_RUNTIME_DEPENDENCIES "${BASE_PATH}/librenderdoc.so") diff --git a/Gems/Atom/RHI/3rdParty/Platform/Windows/renderdoc_windows.cmake b/Gems/Atom/RHI/3rdParty/Platform/Windows/renderdoc_windows.cmake new file mode 100644 index 0000000000..559863ca07 --- /dev/null +++ b/Gems/Atom/RHI/3rdParty/Platform/Windows/renderdoc_windows.cmake @@ -0,0 +1,9 @@ +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +set(RENDERDOC_RUNTIME_DEPENDENCIES "${BASE_PATH}/renderdoc.dll") diff --git a/Gems/Atom/RHI/CMakeLists.txt b/Gems/Atom/RHI/CMakeLists.txt index 28a3e1ad7d..074f6acfd7 100644 --- a/Gems/Atom/RHI/CMakeLists.txt +++ b/Gems/Atom/RHI/CMakeLists.txt @@ -6,6 +6,8 @@ # # +ly_add_external_target_path(${CMAKE_CURRENT_LIST_DIR}/3rdParty) + add_subdirectory(Code) add_subdirectory(DX12) add_subdirectory(Metal) diff --git a/Gems/Atom/RHI/Code/CMakeLists.txt b/Gems/Atom/RHI/Code/CMakeLists.txt index 343736ff7c..879fc7d2ce 100644 --- a/Gems/Atom/RHI/Code/CMakeLists.txt +++ b/Gems/Atom/RHI/Code/CMakeLists.txt @@ -11,19 +11,11 @@ ly_get_list_relative_pal_filename(pal_source_dir ${CMAKE_CURRENT_LIST_DIR}/Sourc include(${pal_dir}/AtomRHITests_traits_${PAL_PLATFORM_NAME_LOWERCASE}.cmake) -set(LY_RENDERDOC_ENABLED OFF CACHE BOOL "Enable RenderDoc integration.") -set(RENDERDOC_CMAKE ${CMAKE_CURRENT_SOURCE_DIR}/${pal_dir}/renderdoc_${PAL_PLATFORM_NAME_LOWERCASE}.cmake) -if(EXISTS ${RENDERDOC_CMAKE}) - include(${RENDERDOC_CMAKE}) -endif() - -if(LY_RENDERDOC_ENABLED AND TARGET "3rdParty::renderdoc") - message(STATUS "Renderdoc found, adding as runtime dependency") - set(USE_RENDERDOC_DEFINE "USE_RENDERDOC") - set(RENDERDOC_BUILD_DEPENDENCY "3rdParty::renderdoc") -else() - set(USE_RENDERDOC_DEFINE "") - set(RENDERDOC_BUILD_DEPENDENCY "") +if(PAL_TRAIT_BUILD_RENDERDOC_SUPPORTED) + set(LY_RENDERDOC_ENABLED OFF CACHE BOOL "Enable RenderDoc integration. Use LY_RENDERDOC_PATH to specific the path to RenderDoc.") + if(LY_RENDERDOC_ENABLED) + set(RENDERDOC_DEPENDENCY 3rdParty::renderdoc) + endif() endif() ly_add_target( @@ -62,10 +54,10 @@ ly_add_target( AZ::AzFramework Gem::Atom_RHI.Reflect PUBLIC - ${RENDERDOC_BUILD_DEPENDENCY} + ${RENDERDOC_DEPENDENCY} COMPILE_DEFINITIONS PUBLIC - ${USE_RENDERDOC_DEFINE} + ${RENDERDOC_DEFINE} ) ly_add_target( diff --git a/Gems/Atom/RHI/Code/Platform/Android/AtomRHITests_traits_android.cmake b/Gems/Atom/RHI/Code/Platform/Android/AtomRHITests_traits_android.cmake index 1aeb95c7b1..5b77ec1593 100644 --- a/Gems/Atom/RHI/Code/Platform/Android/AtomRHITests_traits_android.cmake +++ b/Gems/Atom/RHI/Code/Platform/Android/AtomRHITests_traits_android.cmake @@ -8,3 +8,4 @@ set(ATOM_RHI_TRAIT_BUILD_SUPPORTS_TEST FALSE) set(ATOM_RHI_TRAIT_BUILD_SUPPORTS_EDIT FALSE) +set(PAL_TRAIT_BUILD_RENDERDOC_SUPPORTED FALSE) diff --git a/Gems/Atom/RHI/Code/Platform/Linux/AtomRHITests_traits_linux.cmake b/Gems/Atom/RHI/Code/Platform/Linux/AtomRHITests_traits_linux.cmake index 64d44f1648..5379a47e49 100644 --- a/Gems/Atom/RHI/Code/Platform/Linux/AtomRHITests_traits_linux.cmake +++ b/Gems/Atom/RHI/Code/Platform/Linux/AtomRHITests_traits_linux.cmake @@ -8,3 +8,9 @@ set(ATOM_RHI_TRAIT_BUILD_SUPPORTS_TEST FALSE) set(ATOM_RHI_TRAIT_BUILD_SUPPORTS_EDIT TRUE) +if(LY_MONOLITHIC_GAME) + set(PAL_TRAIT_BUILD_RENDERDOC_SUPPORTED FALSE) +else() + set(PAL_TRAIT_BUILD_RENDERDOC_SUPPORTED TRUE) +endif() +set(LY_RENDERDOC_PATH "/usr/local" CACHE PATH "Path to RenderDoc.") diff --git a/Gems/Atom/RHI/Code/Platform/Linux/renderdoc_linux.cmake b/Gems/Atom/RHI/Code/Platform/Linux/renderdoc_linux.cmake deleted file mode 100644 index 222a3d5768..0000000000 --- a/Gems/Atom/RHI/Code/Platform/Linux/renderdoc_linux.cmake +++ /dev/null @@ -1,29 +0,0 @@ -# -# Copyright (c) Contributors to the Open 3D Engine Project. -# For complete copyright and license terms please see the LICENSE at the root of this distribution. -# -# SPDX-License-Identifier: Apache-2.0 OR MIT -# -# - -# Prevent bundling the renderdoc dll with a packaged title -if(NOT LY_MONOLITHIC_GAME) - if(DEFINED ENV{"ATOM_RENDERDOC_PATH"}) - set(RENDERDOC_PATH ENV{"ATOM_RENDERDOC_PATH"}) - endif() - - if(RENDERDOC_PATH) - # Normalize file path - file(TO_CMAKE_PATH "${RENDERDOC_PATH}" RENDERDOC_PATH) - - if(EXISTS "${RENDERDOC_PATH}/librenderdoc.so") - ly_add_external_target( - NAME renderdoc - VERSION - 3RDPARTY_ROOT_DIRECTORY ${RENDERDOC_PATH} - INCLUDE_DIRECTORIES "." - RUNTIME_DEPENDENCIES "${RENDERDOC_PATH}/librenderdoc.so" - ) - endif() - endif() -endif() \ No newline at end of file diff --git a/Gems/Atom/RHI/Code/Platform/Mac/AtomRHITests_traits_mac.cmake b/Gems/Atom/RHI/Code/Platform/Mac/AtomRHITests_traits_mac.cmake index a5f701c3cf..419331db3b 100644 --- a/Gems/Atom/RHI/Code/Platform/Mac/AtomRHITests_traits_mac.cmake +++ b/Gems/Atom/RHI/Code/Platform/Mac/AtomRHITests_traits_mac.cmake @@ -8,3 +8,4 @@ set(ATOM_RHI_TRAIT_BUILD_SUPPORTS_TEST TRUE) set(ATOM_RHI_TRAIT_BUILD_SUPPORTS_EDIT TRUE) +set(PAL_TRAIT_BUILD_RENDERDOC_SUPPORTED FALSE) diff --git a/Gems/Atom/RHI/Code/Platform/Windows/AtomRHITests_traits_windows.cmake b/Gems/Atom/RHI/Code/Platform/Windows/AtomRHITests_traits_windows.cmake index a5f701c3cf..78a4c4c069 100644 --- a/Gems/Atom/RHI/Code/Platform/Windows/AtomRHITests_traits_windows.cmake +++ b/Gems/Atom/RHI/Code/Platform/Windows/AtomRHITests_traits_windows.cmake @@ -8,3 +8,9 @@ set(ATOM_RHI_TRAIT_BUILD_SUPPORTS_TEST TRUE) set(ATOM_RHI_TRAIT_BUILD_SUPPORTS_EDIT TRUE) +if(LY_MONOLITHIC_GAME) + set(PAL_TRAIT_BUILD_RENDERDOC_SUPPORTED FALSE) +else() + set(PAL_TRAIT_BUILD_RENDERDOC_SUPPORTED TRUE) +endif() +set(LY_RENDERDOC_PATH "$ENV{PROGRAMFILES}/RenderDoc" CACHE PATH "Path to RenderDoc.") diff --git a/Gems/Atom/RHI/Code/Platform/Windows/renderdoc_windows.cmake b/Gems/Atom/RHI/Code/Platform/Windows/renderdoc_windows.cmake deleted file mode 100644 index 90c44bcb7c..0000000000 --- a/Gems/Atom/RHI/Code/Platform/Windows/renderdoc_windows.cmake +++ /dev/null @@ -1,31 +0,0 @@ -# -# Copyright (c) Contributors to the Open 3D Engine Project. -# For complete copyright and license terms please see the LICENSE at the root of this distribution. -# -# SPDX-License-Identifier: Apache-2.0 OR MIT -# -# - -# Prevent bundling the renderdoc dll with a packaged title -if(NOT LY_MONOLITHIC_GAME) - # Common installation path for renderdoc path - set(RENDERDOC_PATH "$ENV{PROGRAMFILES}/RenderDoc") - if(DEFINED ENV{"ATOM_RENDERDOC_PATH"}) - set(RENDERDOC_PATH ENV{"ATOM_RENDERDOC_PATH"}) - endif() - - if(RENDERDOC_PATH) - # Normalize file path - file(TO_CMAKE_PATH "${RENDERDOC_PATH}" RENDERDOC_PATH) - - if(EXISTS "${RENDERDOC_PATH}/renderdoc.dll") - ly_add_external_target( - NAME renderdoc - VERSION - 3RDPARTY_ROOT_DIRECTORY ${RENDERDOC_PATH} - INCLUDE_DIRECTORIES "." - RUNTIME_DEPENDENCIES "${RENDERDOC_PATH}/renderdoc.dll" - ) - endif() - endif() -endif() \ No newline at end of file diff --git a/Gems/Atom/RHI/Code/Platform/iOS/AtomRHITests_traits_ios.cmake b/Gems/Atom/RHI/Code/Platform/iOS/AtomRHITests_traits_ios.cmake index 1aeb95c7b1..5b77ec1593 100644 --- a/Gems/Atom/RHI/Code/Platform/iOS/AtomRHITests_traits_ios.cmake +++ b/Gems/Atom/RHI/Code/Platform/iOS/AtomRHITests_traits_ios.cmake @@ -8,3 +8,4 @@ set(ATOM_RHI_TRAIT_BUILD_SUPPORTS_TEST FALSE) set(ATOM_RHI_TRAIT_BUILD_SUPPORTS_EDIT FALSE) +set(PAL_TRAIT_BUILD_RENDERDOC_SUPPORTED FALSE) diff --git a/cmake/3rdParty.cmake b/cmake/3rdParty.cmake index 0142a6a4b6..310e341305 100644 --- a/cmake/3rdParty.cmake +++ b/cmake/3rdParty.cmake @@ -122,7 +122,13 @@ function(ly_add_external_target) set(BASE_PATH "${LY_3RDPARTY_PATH}/${ly_add_external_target_3RDPARTY_DIRECTORY}") else() - ly_install_external_target(${ly_add_external_target_3RDPARTY_ROOT_DIRECTORY}) + # only install external 3rdParty that are within the source tree + cmake_path(RELATIVE_PATH ly_add_external_target_3RDPARTY_ROOT_DIRECTORY + BASE_DIRECTORY ${LY_ROOT_FOLDER} + OUTPUT_VARIABLE relative_path) + if(relative_path AND NOT relative_path MATCHES "^../") + ly_install_external_target(${ly_add_external_target_3RDPARTY_ROOT_DIRECTORY}) + endif() set(BASE_PATH "${ly_add_external_target_3RDPARTY_ROOT_DIRECTORY}") endif() @@ -309,7 +315,7 @@ function(ly_install_external_target 3RDPARTY_ROOT_DIRECTORY) ly_install_files(FILES ${CMAKE_CURRENT_LIST_FILE} DESTINATION cmake/3rdParty ) - ly_install_directory(DIRECTORIES ${3RDPARTY_ROOT_DIRECTORY}) + ly_install_directory(DIRECTORIES "${3RDPARTY_ROOT_DIRECTORY}") endfunction() diff --git a/cmake/3rdParty/FindPIX.cmake b/cmake/3rdParty/FindPIX.cmake index e4652467ac..f69896f78f 100644 --- a/cmake/3rdParty/FindPIX.cmake +++ b/cmake/3rdParty/FindPIX.cmake @@ -6,14 +6,13 @@ # # -if(LY_PIX_ENABLED) - file(TO_CMAKE_PATH "${LY_PIX_PATH}" PIX_PATH) - message(STATUS "PIX found: ${PIX_PATH}") +set(LY_PIX_PATH "${LY_3RDPARTY_PATH}/winpixeventruntime" CACHE PATH "Path to the Windows Pix Event Runtime.") + +ly_add_external_target( + NAME pix + 3RDPARTY_ROOT_DIRECTORY ${LY_PIX_PATH} + VERSION + INCLUDE_DIRECTORIES Include + COMPILE_DEFINITIONS USE_PIX +) - ly_add_external_target( - NAME pix - 3RDPARTY_ROOT_DIRECTORY "${PIX_PATH}" - VERSION - INCLUDE_DIRECTORIES include - ) -endif()