Cherry-picked c9f4600bf3
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com>
This commit is contained in:
@@ -477,26 +477,52 @@ function(ly_setup_cmake_install)
|
||||
COMPONENT ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME}
|
||||
)
|
||||
|
||||
# Findo3de.cmake file: we generate a different Findo3de.camke file than the one we have in cmake. This one is going to expose all
|
||||
# targets that are pre-built
|
||||
unset(FIND_PACKAGES_PLACEHOLDER)
|
||||
|
||||
# Add to the FIND_PACKAGES_PLACEHOLDER all directories in which ly_add_target were called in
|
||||
get_property(all_subdirectories GLOBAL PROPERTY LY_ALL_TARGET_DIRECTORIES)
|
||||
foreach(target_subdirectory IN LISTS all_subdirectories)
|
||||
cmake_path(RELATIVE_PATH target_subdirectory BASE_DIRECTORY ${LY_ROOT_FOLDER} OUTPUT_VARIABLE relative_target_subdirectory)
|
||||
string(APPEND FIND_PACKAGES_PLACEHOLDER " add_subdirectory(${relative_target_subdirectory})\n")
|
||||
endforeach()
|
||||
|
||||
# Findo3de.cmake file: we generate a different Findo3de.cmake file than the one we have in the source dir.
|
||||
configure_file(${LY_ROOT_FOLDER}/cmake/install/Findo3de.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/cmake/Findo3de.cmake @ONLY)
|
||||
ly_install(FILES "${CMAKE_CURRENT_BINARY_DIR}/cmake/Findo3de.cmake"
|
||||
DESTINATION cmake
|
||||
COMPONENT ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME}
|
||||
)
|
||||
|
||||
# BuiltInPackage_<platform>.cmake: since associations could happen in any cmake file across the engine. We collect
|
||||
# all the associations in ly_associate_package and then generate them into BuiltInPackages_<platform>.cmake. This
|
||||
# will consolidate all associations in one file
|
||||
unset(find_subdirectories)
|
||||
# Add to find_subdirectories all directories in which ly_add_target were called in
|
||||
get_property(all_subdirectories GLOBAL PROPERTY LY_ALL_TARGET_DIRECTORIES)
|
||||
foreach(target_subdirectory IN LISTS all_subdirectories)
|
||||
cmake_path(RELATIVE_PATH target_subdirectory BASE_DIRECTORY ${LY_ROOT_FOLDER} OUTPUT_VARIABLE relative_target_subdirectory)
|
||||
string(APPEND find_subdirectories "add_subdirectory(${relative_target_subdirectory})\n")
|
||||
endforeach()
|
||||
set(permutation_find_subdirectories ${CMAKE_CURRENT_BINARY_DIR}/cmake/Platform/${PAL_PLATFORM_NAME}/${LY_BUILD_PERMUTATION}/o3de_subdirectories_${PAL_PLATFORM_NAME_LOWERCASE}.cmake)
|
||||
file(GENERATE OUTPUT ${permutation_find_subdirectories}
|
||||
CONTENT
|
||||
"# Generated by O3DE install\n
|
||||
${find_subdirectories}
|
||||
"
|
||||
)
|
||||
ly_install(FILES "${permutation_find_subdirectories}"
|
||||
DESTINATION cmake/Platform/${PAL_PLATFORM_NAME}/${LY_BUILD_PERMUTATION}
|
||||
COMPONENT ${LY_INSTALL_PERMUTATION_COMPONENT}
|
||||
)
|
||||
|
||||
set(pal_builtin_file ${CMAKE_CURRENT_BINARY_DIR}/cmake/3rdParty/Platform/${PAL_PLATFORM_NAME}/BuiltInPackages_${PAL_PLATFORM_NAME_LOWERCASE}.cmake)
|
||||
file(GENERATE OUTPUT ${pal_builtin_file}
|
||||
CONTENT
|
||||
"# Generated by O3DE install\n
|
||||
if(LY_MONOLITHIC_GAME)
|
||||
include(cmake/3rdParty/Platform/${PAL_PLATFORM_NAME}/Monolithic/BuiltInPackages_${PAL_PLATFORM_NAME_LOWERCASE}.cmake)
|
||||
else()
|
||||
include(cmake/3rdParty/Platform/${PAL_PLATFORM_NAME}/Default/BuiltInPackages_${PAL_PLATFORM_NAME_LOWERCASE}.cmake)
|
||||
endif()
|
||||
"
|
||||
)
|
||||
ly_install(FILES "${pal_builtin_file}"
|
||||
DESTINATION cmake/3rdParty/Platform/${PAL_PLATFORM_NAME}
|
||||
COMPONENT ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME}
|
||||
)
|
||||
|
||||
# ${LY_BUILD_PERMUTATION}/BuiltInPackage_<platform>.cmake: since associations could happen in any cmake file across the engine. We collect
|
||||
# all the associations in ly_associate_package and then generate them into BuiltInPackages_<platform>.cmake. This will consolidate all
|
||||
# associations in one file
|
||||
# Associations are sensitive to platform and build permutation, so we make different files for each.
|
||||
get_property(all_package_names GLOBAL PROPERTY LY_PACKAGE_NAMES)
|
||||
list(REMOVE_DUPLICATES all_package_names)
|
||||
set(builtinpackages "# Generated by O3DE install\n\n")
|
||||
@@ -507,13 +533,13 @@ function(ly_setup_cmake_install)
|
||||
string(APPEND builtinpackages "ly_associate_package(PACKAGE_NAME ${package_name} TARGETS ${targets} PACKAGE_HASH ${package_hash})\n")
|
||||
endforeach()
|
||||
|
||||
set(pal_builtin_file ${CMAKE_CURRENT_BINARY_DIR}/cmake/3rdParty/Platform/${PAL_PLATFORM_NAME}/BuiltInPackages_${PAL_PLATFORM_NAME_LOWERCASE}.cmake)
|
||||
file(GENERATE OUTPUT ${pal_builtin_file}
|
||||
set(permutation_builtin_file ${CMAKE_CURRENT_BINARY_DIR}/cmake/Platform/${PAL_PLATFORM_NAME}/${LY_BUILD_PERMUTATION}/BuiltInPackages_${PAL_PLATFORM_NAME_LOWERCASE}.cmake)
|
||||
file(GENERATE OUTPUT ${permutation_builtin_file}
|
||||
CONTENT ${builtinpackages}
|
||||
)
|
||||
ly_install(FILES "${pal_builtin_file}"
|
||||
DESTINATION cmake/3rdParty/Platform/${PAL_PLATFORM_NAME}
|
||||
COMPONENT ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME}
|
||||
ly_install(FILES "${permutation_builtin_file}"
|
||||
DESTINATION cmake/Platform/${PAL_PLATFORM_NAME}/${LY_BUILD_PERMUTATION}
|
||||
COMPONENT ${LY_INSTALL_PERMUTATION_COMPONENT}
|
||||
)
|
||||
|
||||
endfunction()
|
||||
|
||||
@@ -12,7 +12,15 @@ include(FindPackageHandleStandardArgs)
|
||||
|
||||
# This will be called from within the installed engine's CMakeLists.txt
|
||||
macro(ly_find_o3de_packages)
|
||||
@FIND_PACKAGES_PLACEHOLDER@
|
||||
if(LY_MONOLITHIC_GAME)
|
||||
set(monolithic_file "${LY_ROOT_FOLDER}/Platform/${PAL_PLATFORM_NAME}/Monolithic/o3de_subdirectories_${PAL_PLATFORM_NAME_LOWERCASE}.cmake")
|
||||
if(NOT EXISTS ${monolithic_file})
|
||||
message(FATAL_ERROR "O3DE SDK was not generated to support monolithic builds")
|
||||
endif()
|
||||
include("${monolithic_file}")
|
||||
else()
|
||||
include("cmake/Platform/${PAL_PLATFORM_NAME}/Default/o3de_subdirectories_${PAL_PLATFORM_NAME_LOWERCASE}.cmake")
|
||||
endif()
|
||||
find_package(LauncherGenerator)
|
||||
endmacro()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user