WIP, need to merge from development

Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com>
This commit is contained in:
Esteban Papp
2021-10-18 16:13:35 -07:00
parent f1a38ded86
commit c842fce4bf
4 changed files with 100 additions and 53 deletions
+1 -1
View File
@@ -168,4 +168,4 @@ function(ly_install_run_script SCRIPT)
COMPONENT ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME} # use the default for the time being
)
endfunction()
endfunction()
+25 -10
View File
@@ -136,6 +136,7 @@ endif()
install(FILES ${_cmake_package_dest}
DESTINATION ./Tools/Redistributables/CMake
COMPONENT ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME}
)
# the version string and git tags are intended to be synchronized so it should be safe to use that instead
@@ -159,6 +160,7 @@ if(${CPACK_PACKAGE_VERSION} VERSION_GREATER "0.0.0.0")
if (${_status_code} EQUAL 0 AND EXISTS ${_3rd_party_license_dest})
install(FILES ${_3rd_party_license_dest}
DESTINATION .
COMPONENT ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME}
)
else()
file(REMOVE ${_3rd_party_license_dest})
@@ -242,29 +244,35 @@ ly_configure_cpack_component(
DISPLAY_NAME "${PROJECT_NAME}"
DESCRIPTION "${PROJECT_NAME} Headers, scripts and common files"
)
#file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}" "set(LY_CPACK_COMPONENTS_ALL ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME})\n")
file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}" "set(LY_CPACK_COMPONENTS_ALL ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME})\n")
foreach(conf IN LISTS CMAKE_CONFIGURATION_TYPES)
string(TOUPPER ${conf} UCONF)
unset(flags)
if(${conf} STREQUAL profile)
if(${conf} STREQUAL profile AND ${LY_BUILD_PERMUTATION} STREQUAL Default)
set(flags REQUIRED)
else()
set(flags DISABLED)
endif()
unset(permutation_description)
if(${LY_BUILD_PERMUTATION} STREQUAL Monolithic)
set(permutation_description " monolithic ")
endif()
# Inject a check to not declare components that have not been built. We are using AzCore since that is a
# common target that will always be build, in every permutation and configuration
#file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}"
# "if(EXISTS \"${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}/${conf}/${CMAKE_STATIC_LIBRARY_PREFIX}AzCore${CMAKE_STATIC_LIBRARY_SUFFIX}\")\n")
file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}"
"if(EXISTS \"${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}/${conf}/${CMAKE_STATIC_LIBRARY_PREFIX}AzCore${CMAKE_STATIC_LIBRARY_SUFFIX}\")\n")
ly_configure_cpack_component(
${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME}_${UCONF} ${flags}
${LY_INSTALL_PERMUTATION_COMPONENT}_${UCONF} ${flags}
DISPLAY_NAME "${PROJECT_NAME} (${conf})"
DESCRIPTION "${PROJECT_NAME} Libraries and Tools in ${conf}"
DESCRIPTION "${PROJECT_NAME} Libraries and Tools in${permutation_description}${conf}"
)
#file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}"
#"list(APPEND LY_CPACK_COMPONENTS_ALL ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME}_${UCONF})
#endif()\n")
file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}"
"list(APPEND LY_CPACK_COMPONENTS_ALL ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME}_${UCONF})
endif()\n")
endforeach()
@@ -279,4 +287,11 @@ if(LY_INSTALLER_DOWNLOAD_URL)
)
endif()
#file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}" "set(CPACK_COMPONENTS_ALL \${LY_CPACK_COMPONENTS_ALL})\n")
# Inject other build directories
foreach(external_dir ${LY_INSTALL_EXTERNAL_BUILD_DIRS})
file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}"
"include(${external_dir}/CPackConfig.cmake)\n"
)
endforeach()
file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}" "set(CPACK_COMPONENTS_ALL \${LY_CPACK_COMPONENTS_ALL})\n")
+49 -24
View File
@@ -8,6 +8,8 @@
include(cmake/FileUtil.cmake)
set(LY_INSTALL_EXTERNAL_BUILD_DIRS "" CACHE PATH "External build directories to be included in the install process. This allows to package non-monolithic and monolithic.")
set(CMAKE_INSTALL_MESSAGE NEVER) # Simplify messages to reduce output noise
define_property(TARGET PROPERTY LY_INSTALL_GENERATE_RUN_TARGET
@@ -19,12 +21,25 @@ define_property(TARGET PROPERTY LY_INSTALL_GENERATE_RUN_TARGET
]]
)
ly_set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME Core)
# We can have elements being installed under the following components:
# - Core (required for all) (default)
# - Default
# - Default_$<CONFIG>
# - Monolithic
# - Monolithic_$<CONFIG>
# Debug/Monolithic are build permutations, so for a CMake run, it can only generate
# one of the permutations. Each build permutation can generate only one cmake_install.cmake.
# Each build permutation will generate the same elements in Core.
# CPack is able to put the two together by taking Core from one permutation and then taking
# each permutation.
ly_set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME Core)
if(LY_MONOLITHIC_GAME)
set(LY_BUILD_PERMUTATION Monolithic)
set(LY_INSTALL_PERMUTATION_COMPONENT Monolithic)
else()
set(LY_BUILD_PERMUTATION Default)
set(LY_INSTALL_PERMUTATION_COMPONENT Default)
endif()
cmake_path(RELATIVE_PATH CMAKE_RUNTIME_OUTPUT_DIRECTORY BASE_DIRECTORY ${CMAKE_BINARY_DIR} OUTPUT_VARIABLE runtime_output_directory)
@@ -106,19 +121,18 @@ function(ly_setup_target OUTPUT_CONFIGURED_TARGET ALIAS_TARGET_NAME absolute_tar
else()
foreach(conf IN LISTS CMAKE_CONFIGURATION_TYPES)
string(TOUPPER ${conf} UCONF)
install(
TARGETS ${TARGET_NAME}
install(TARGETS ${TARGET_NAME}
ARCHIVE
DESTINATION ${archive_output_directory}
COMPONENT ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME}_${UCONF}
COMPONENT ${LY_INSTALL_PERMUTATION_COMPONENT}_${UCONF}
CONFIGURATIONS ${conf}
LIBRARY
DESTINATION ${library_output_directory}/${target_library_output_subdirectory}
COMPONENT ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME}_${UCONF}
COMPONENT ${LY_INSTALL_PERMUTATION_COMPONENT}_${UCONF}
CONFIGURATIONS ${conf}
RUNTIME
DESTINATION ${runtime_output_directory}/${target_runtime_output_subdirectory}
COMPONENT ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME}_${UCONF}
COMPONENT ${LY_INSTALL_PERMUTATION_COMPONENT}_${UCONF}
CONFIGURATIONS ${conf}
)
endforeach()
@@ -275,10 +289,15 @@ set_property(TARGET ${NAME_PLACEHOLDER}
set(target_install_source_dir ${CMAKE_CURRENT_BINARY_DIR}/install/${relative_target_source_dir})
file(GENERATE OUTPUT "${target_install_source_dir}/Platform/${PAL_PLATFORM_NAME}/${LY_BUILD_PERMUTATION}/${NAME_PLACEHOLDER}_$<CONFIG>.cmake" CONTENT "${target_file_contents}")
install(FILES "${target_install_source_dir}/Platform/${PAL_PLATFORM_NAME}/${LY_BUILD_PERMUTATION}/${NAME_PLACEHOLDER}_$<CONFIG>.cmake"
DESTINATION ${relative_target_source_dir}/Platform/${PAL_PLATFORM_NAME}/${LY_BUILD_PERMUTATION}
COMPONENT ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME}
)
foreach(conf IN LISTS CMAKE_CONFIGURATION_TYPES)
string(TOUPPER ${conf} UCONF)
install(FILES "${target_install_source_dir}/Platform/${PAL_PLATFORM_NAME}/${LY_BUILD_PERMUTATION}/${NAME_PLACEHOLDER}_${conf}.cmake"
DESTINATION ${relative_target_source_dir}/Platform/${PAL_PLATFORM_NAME}/${LY_BUILD_PERMUTATION}
COMPONENT ${LY_INSTALL_PERMUTATION_COMPONENT}_${UCONF}
CONFIGURATIONS ${conf}
)
endforeach()
# Since a CMakeLists.txt could contain multiple targets, we generate it in a folder per target
ly_file_read(${LY_ROOT_FOLDER}/cmake/install/InstalledTarget.in target_cmakelists_template)
@@ -353,9 +372,10 @@ endif()
"${GEM_VARIANT_TO_LOAD_PLACEHOLDER}"
"${ENABLE_GEMS_PLACEHOLDER}"
)
install(FILES "${target_install_source_dir}/Platform/${PAL_PLATFORM_NAME}/${LY_BUILD_PERMUTATION}/permutation.cmake"
DESTINATION ${relative_target_source_dir}//Platform/${PAL_PLATFORM_NAME}/${LY_BUILD_PERMUTATION}
COMPONENT ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME}
DESTINATION ${relative_target_source_dir}/Platform/${PAL_PLATFORM_NAME}/${LY_BUILD_PERMUTATION}
COMPONENT ${LY_INSTALL_PERMUTATION_COMPONENT}
)
endfunction()
@@ -377,6 +397,11 @@ function(ly_setup_o3de_install)
COMPONENT ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME}
)
# Inject other build directories
foreach(external_dir ${LY_INSTALL_EXTERNAL_BUILD_DIRS})
install(CODE "include(${external_dir}/cmake_install.cmake)")
endforeach()
if(COMMAND ly_post_install_steps)
ly_post_install_steps()
endif()
@@ -399,18 +424,19 @@ function(ly_setup_cmake_install)
DESTINATION cmake
COMPONENT ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME}
)
# Inject code that will generate each ConfigurationType_<CONFIG>.cmake file
set(install_configuration_type_template [=[
configure_file(@LY_ROOT_FOLDER@/cmake/install/ConfigurationType_config.cmake.in
${CMAKE_INSTALL_PREFIX}/cmake/Platform/@PAL_PLATFORM_NAME@/@LY_BUILD_PERMUTATION@/ConfigurationTypes_${CMAKE_INSTALL_CONFIG_NAME}.cmake
# generate each ConfigurationType_<CONFIG>.cmake file and install it under that configuration
foreach(conf IN LISTS CMAKE_CONFIGURATION_TYPES)
string(TOUPPER ${conf} UCONF)
configure_file("${LY_ROOT_FOLDER}/cmake/install/ConfigurationType_config.cmake.in"
"${CMAKE_BINARY_DIR}/cmake/Platform/${PAL_PLATFORM_NAME}/${LY_BUILD_PERMUTATION}/ConfigurationTypes_${conf}.cmake"
@ONLY
)
message(STATUS "Generated ${CMAKE_INSTALL_PREFIX}/cmake/Platform/@PAL_PLATFORM_NAME@/@LY_BUILD_PERMUTATION@/ConfigurationTypes_${CMAKE_INSTALL_CONFIG_NAME}.cmake")
]=])
string(CONFIGURE "${install_configuration_type_template}" install_configuration_type @ONLY)
install(CODE "${install_configuration_type}"
COMPONENT ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME}
)
install(FILES "${CMAKE_BINARY_DIR}/cmake/Platform/${PAL_PLATFORM_NAME}/${LY_BUILD_PERMUTATION}/ConfigurationTypes_${conf}.cmake"
DESTINATION cmake/Platform/${PAL_PLATFORM_NAME}/${LY_BUILD_PERMUTATION}
COMPONENT ${LY_INSTALL_PERMUTATION_COMPONENT}_${UCONF}
CONFIGURATIONS ${conf}
)
endforeach()
# Transform the LY_EXTERNAL_SUBDIRS list into a json array
set(indent " ")
@@ -429,8 +455,7 @@ function(ly_setup_cmake_install)
configure_file(${LY_ROOT_FOLDER}/cmake/install/engine.json.in ${CMAKE_CURRENT_BINARY_DIR}/cmake/engine.json @ONLY)
install(
FILES
install(FILES
"${LY_ROOT_FOLDER}/CMakeLists.txt"
"${CMAKE_CURRENT_BINARY_DIR}/cmake/engine.json"
DESTINATION .
+25 -18
View File
@@ -58,24 +58,31 @@ function(ly_install_target_override)
set_property(TARGET ${ly_platform_install_target_TARGET} PROPERTY RESOURCE "")
endif()
install(
TARGETS ${ly_platform_install_target_TARGET}
ARCHIVE
DESTINATION ${ly_platform_install_target_ARCHIVE_DIR}
COMPONENT ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME}
LIBRARY
DESTINATION ${ly_platform_install_target_LIBRARY_DIR}/${ly_platform_install_target_LIBRARY_SUBDIR}
COMPONENT ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME}
RUNTIME
DESTINATION ${ly_platform_install_target_RUNTIME_DIR}/${ly_platform_install_target_RUNTIME_SUBDIR}
COMPONENT ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME}
BUNDLE
DESTINATION ${ly_platform_install_target_RUNTIME_DIR}/${ly_platform_install_target_RUNTIME_SUBDIR}
COMPONENT ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME}
RESOURCE
DESTINATION ${ly_platform_install_target_RUNTIME_DIR}/${ly_platform_install_target_RUNTIME_SUBDIR}
COMPONENT ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME}
)
foreach(conf IN LISTS CMAKE_CONFIGURATION_TYPES)
string(TOUPPER ${conf} UCONF)
install(TARGETS ${TARGET_NAME}
ARCHIVE
DESTINATION ${ly_platform_install_target_ARCHIVE_DIR}
COMPONENT ${LY_INSTALL_PERMUTATION_COMPONENT}_${UCONF}
CONFIGURATIONS ${conf}
LIBRARY
DESTINATION ${ly_platform_install_target_LIBRARY_DIR}/${ly_platform_install_target_LIBRARY_SUBDIR}
COMPONENT ${LY_INSTALL_PERMUTATION_COMPONENT}_${UCONF}
CONFIGURATIONS ${conf}
RUNTIME
DESTINATION ${ly_platform_install_target_RUNTIME_DIR}/${ly_platform_install_target_RUNTIME_SUBDIR}
COMPONENT ${LY_INSTALL_PERMUTATION_COMPONENT}_${UCONF}
CONFIGURATIONS ${conf}
BUNDLE
DESTINATION ${ly_platform_install_target_RUNTIME_DIR}/${ly_platform_install_target_RUNTIME_SUBDIR}
COMPONENT ${LY_INSTALL_PERMUTATION_COMPONENT}_${UCONF}
CONFIGURATIONS ${conf}
RESOURCE
DESTINATION ${ly_platform_install_target_RUNTIME_DIR}/${ly_platform_install_target_RUNTIME_SUBDIR}
COMPONENT ${LY_INSTALL_PERMUTATION_COMPONENT}_${UCONF}
CONFIGURATIONS ${conf}
)
endforeach()
set(install_relative_binaries_path "${ly_platform_install_target_RUNTIME_DIR}/${ly_platform_install_target_RUNTIME_SUBDIR}")