@ -8,6 +8,14 @@
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." )
unset ( normalized_external_build_dirs )
foreach ( external_dir ${ LY_INSTALL_EXTERNAL_BUILD_DIRS } )
cmake_path ( ABSOLUTE_PATH external_dir BASE_DIRECTORY ${ LY_ROOT_FOLDER } NORMALIZE )
list ( APPEND normalized_external_build_dirs ${ external_dir } )
endforeach ( )
set ( LY_INSTALL_EXTERNAL_BUILD_DIRS ${ normalized_external_build_dirs } )
set ( CMAKE_INSTALL_MESSAGE NEVER ) # S i m p l i f y m e s s a g e s t o r e d u c e o u t p u t n o i s e
define_property ( TARGET PROPERTY LY_INSTALL_GENERATE_RUN_TARGET
@ -19,13 +27,25 @@ define_property(TARGET PROPERTY LY_INSTALL_GENERATE_RUN_TARGET
] ]
)
ly_set ( CMAKE_INSTALL_DEFAULT_COMPONENT_NAME Core )
# W e c a n h a v e e l e m e n t s b e i n g i n s t a l l e d u n d e r t h e f o l l o w i n g c o m p o n e n t s :
# - Core ( required for all ) ( d e f a u l t )
# - D e f a u l t
# - D e f a u l t _ $ < C O N F I G >
# - M o n o l i t h i c
# - M o n o l i t h i c _ $ < C O N F I G >
# D e b u g / M o n o l i t h i c a r e b u i l d p e r m u t a t i o n s , s o f o r a C M a k e r u n , i t c a n o n l y g e n e r a t e
# o n e o f t h e p e r m u t a t i o n s . E a c h b u i l d p e r m u t a t i o n c a n g e n e r a t e o n l y o n e c m a k e _ i n s t a l l . c m a k e .
# E a c h b u i l d p e r m u t a t i o n w i l l g e n e r a t e t h e s a m e e l e m e n t s i n C o r e .
# C P a c k i s a b l e t o p u t t h e t w o t o g e t h e r b y t a k i n g C o r e f r o m o n e p e r m u t a t i o n a n d t h e n t a k i n g
# e a c h p e r m u t a t i o n .
ly_set ( CMAKE_INSTALL_DEFAULT_COMPONENT_NAME CORE )
if ( LY_MONOLITHIC_GAME )
set ( LY_BUILD_PERMUTATION Monolithic )
else ( )
set ( LY_BUILD_PERMUTATION Default )
endif ( )
string ( TOUPPER ${ LY_BUILD_PERMUTATION } LY_INSTALL_PERMUTATION_COMPONENT )
cmake_path ( RELATIVE_PATH CMAKE_RUNTIME_OUTPUT_DIRECTORY BASE_DIRECTORY ${ CMAKE_BINARY_DIR } OUTPUT_VARIABLE runtime_output_directory )
cmake_path ( RELATIVE_PATH CMAKE_LIBRARY_OUTPUT_DIRECTORY BASE_DIRECTORY ${ CMAKE_BINARY_DIR } OUTPUT_VARIABLE library_output_directory )
@ -65,14 +85,24 @@ function(ly_setup_target OUTPUT_CONFIGURED_TARGET ALIAS_TARGET_NAME absolute_tar
continue ( )
endif ( )
# F o r s o m e cases ( e.g. codegen ) w e g e n e r a t e h e a d e r s t h a t e n d u p i n t h e B U I L D _ D I R . S i n c e t h e B U I L D _ D I R
# i s p e r - p e r m u t a t i o n , w e n e e d t o i n s t a l l s u c h h e a d e r s p e r p e r m u t a t i o n . F o r t h e o t h e r c a s e s , w e c a n i n s t a l l
# u n d e r t h e d e f a u l t c o m p o n e n t s i n c e t h e y a r e s h a r e d a c r o s s p e r m u t a t i o n s / c o n f i g s .
cmake_path ( IS_PREFIX CMAKE_BINARY_DIR ${ include_directory } NORMALIZE include_directory_child_of_build )
if ( NOT include_directory_child_of_build )
set ( include_directory_component ${ CMAKE_INSTALL_DEFAULT_COMPONENT_NAME } )
else ( )
set ( include_directory_component ${ LY_INSTALL_PERMUTATION_COMPONENT } )
endif ( )
unset ( rel_include_dir )
cmake_path ( RELATIVE_PATH include_directory BASE_DIRECTORY ${ LY_ROOT_FOLDER } OUTPUT_VARIABLE rel_include_dir )
cmake_path ( APPEND rel_include_dir ".." )
cmake_path ( NORMAL_PATH rel_include_dir OUTPUT_VARIABLE destination_dir )
install ( DIRECTORY ${ include_directory }
ly_ install( DIRECTORY ${ include_directory }
D E S T I N A T I O N $ { d e s t i n a t i o n _ d i r }
C O M P O N E N T $ { C M A K E _ I N S T A L L _ D E F A U L T _ C O M P O N E N T _ N A M E }
C O M P O N E N T $ { in c l u d e _ d i r e c t o r y _ c o m p o n e n t }
F I L E S _ M A T C H I N G
P A T T E R N * . h
P A T T E R N * . h p p
@ -104,18 +134,23 @@ function(ly_setup_target OUTPUT_CONFIGURED_TARGET ALIAS_TARGET_NAME absolute_tar
R U N T I M E _ S U B D I R $ { t a r g e t _ r u n t i m e _ o u t p u t _ s u b d i r e c t o r y }
)
else ( )
install (
T A R G E T S $ { T A R G E T _ N A M E }
A R C H I V E
D E S T I N A T I O N $ { a r c h i v e _ o u t p u t _ d i r e c t o r y }
C O M P O N E N T $ { C M A K E _ I N S T A L L _ D E F A U L T _ C O M P O N E N T _ N A M E }
L I B R A R Y
D E S T I N A T I O N $ { l i b r a r y _ o u t p u t _ d i r e c t o r y } / $ { t a r g e t _ l i b r a r y _ o u t p u t _ s u b d i r e c t o r y }
C O M P O N E N T $ { C M A K E _ I N S T A L L _ D E F A U L T _ C O M P O N E N T _ N A M E }
R U N T I M E
D E S T I N A T I O N $ { r u n t i m e _ o u t p u t _ d i r e c t o r y } / $ { t a r g e t _ r u n t i m e _ o u t p u t _ s u b d i r e c t o r y }
C O M P O N E N T $ { C M A K E _ I N S T A L L _ D E F A U L T _ C O M P O N E N T _ N A M E }
)
foreach ( conf IN LISTS CMAKE_CONFIGURATION_TYPES )
string ( TOUPPER ${ conf } UCONF )
ly_install ( TARGETS ${ TARGET_NAME }
A R C H I V E
D E S T I N A T I O N $ { a r c h i v e _ o u t p u t _ d i r e c t o r y }
C O M P O N E N T $ { L Y _ I N S T A L L _ P E R M U T A T I O N _ C O M P O N E N T } _ $ { U C O N F }
C O N F I G U R A T I O N S $ { c o n f }
L I B R A R Y
D E S T I N A T I O N $ { l i b r a r y _ o u t p u t _ d i r e c t o r y } / $ { t a r g e t _ l i b r a r y _ o u t p u t _ s u b d i r e c t o r y }
C O M P O N E N T $ { L Y _ I N S T A L L _ P E R M U T A T I O N _ C O M P O N E N T } _ $ { U C O N F }
C O N F I G U R A T I O N S $ { c o n f }
R U N T I M E
D E S T I N A T I O N $ { r u n t i m e _ o u t p u t _ d i r e c t o r y } / $ { t a r g e t _ r u n t i m e _ o u t p u t _ s u b d i r e c t o r y }
C O M P O N E N T $ { L Y _ I N S T A L L _ P E R M U T A T I O N _ C O M P O N E N T } _ $ { U C O N F }
C O N F I G U R A T I O N S $ { c o n f }
)
endforeach ( )
endif ( )
# C M a k e L i s t s . t x t r e l a t e d f i l e s
@ -157,16 +192,15 @@ function(ly_setup_target OUTPUT_CONFIGURED_TARGET ALIAS_TARGET_NAME absolute_tar
endif ( )
# I n c l u d e s n e e d a d d i t i o n a l p r o c e s s i n g t o a d d t h e i n s t a l l r o o t
if ( include_directories )
foreach ( include ${ include_directories } )
string ( GENEX_STRIP ${ include } include_genex_expr )
if ( include_genex_expr STREQUAL include ) # o n l y f o r c a s e s w h e r e t h e r e a r e n o g e n e r a t i o n e x p r e s s i o n s
# M a k e t h e i n c l u d e p a t h r e l a t i v e t o t h e s o u r c e d i r w h e r e t h e t a r g e t w i l l b e d e c l a r e d
cmake_path ( RELATIVE_PATH include BASE_DIRECTORY ${ absolute_target_source_dir } OUTPUT_VARIABLE target_include )
string ( APPEND INCLUDE_DIRECTORIES_PLACEHOLDER "${PLACEHOLDER_INDENT}${target_include}\n" )
endif ( )
endforeach ( )
endif ( )
foreach ( include IN LISTS include_directories )
string ( GENEX_STRIP ${ include } include_genex_expr )
if ( include_genex_expr STREQUAL include ) # o n l y f o r c a s e s w h e r e t h e r e a r e n o g e n e r a t i o n e x p r e s s i o n s
# M a k e t h e i n c l u d e p a t h r e l a t i v e t o t h e s o u r c e d i r w h e r e t h e t a r g e t w i l l b e d e c l a r e d
cmake_path ( RELATIVE_PATH include BASE_DIRECTORY ${ absolute_target_source_dir } OUTPUT_VARIABLE target_include )
list ( APPEND INCLUDE_DIRECTORIES_PLACEHOLDER "${PLACEHOLDER_INDENT}${target_include}" )
endif ( )
endforeach ( )
list ( JOIN INCLUDE_DIRECTORIES_PLACEHOLDER "\n" INCLUDE_DIRECTORIES_PLACEHOLDER )
string ( REPEAT " " 8 PLACEHOLDER_INDENT )
get_target_property ( RUNTIME_DEPENDENCIES_PLACEHOLDER ${ TARGET_NAME } MANUALLY_ADDED_DEPENDENCIES )
@ -178,27 +212,27 @@ function(ly_setup_target OUTPUT_CONFIGURED_TARGET ALIAS_TARGET_NAME absolute_tar
endif ( )
string ( REPEAT " " 12 PLACEHOLDER_INDENT )
get_ target_property( inteface_build_dependencies_props ${ TARGET_NAME } INTERFACE_LINK_LIBRARIES )
get_ property( interface_build_dependencies_props TARGET ${ TARGET_NAME } PROPERTY LY_DELAYED_LINK )
unset ( INTERFACE_BUILD_DEPENDENCIES_PLACEHOLDER )
if ( inteface_build_dependencies_props )
foreach ( build_dependency ${ inteface_build_dependencies_props } )
# S k i p w r a p p i n g p r o d u c e d w h e n t a r g e t s a r e n o t c r e a t e d i n t h e s a m e d i r e c t o r y
if ( NOT ${ build_dependency } MATCHES "^::@" )
list ( APPEND INTERFACE_BUILD_DEPENDENCIES_PLACEHOLDER "${PLACEHOLDER_INDENT}${build_dependency}" )
endif ( )
endforeach ( )
endif ( )
# W e a l s o n e e d t o p a s s t h e p r i v a t e l i n k l i b r a r i e s s i n c e w e w i l l u s e t h a t t o g e n e r a t e t h e r u n t i m e d e p e n d e n c i e s
get_target_property ( private_build_dependencies_props ${ TARGET_NAME } LINK_LIBRARIES )
if ( private_build_dependencies_props )
foreach ( build_dependency ${ private_build_dependencies_props } )
if ( interface_build_dependencies_props )
cmake_parse_arguments ( build_deps "" "" "PRIVATE;PUBLIC;INTERFACE" ${ interface_build_dependencies_props } )
# I n t e r f a c e a n d p u b l i c d e p e n d e n c i e s s h o u l d a l w a y s b e e x p o s e d
set ( build_deps_target ${ build_deps_INTERFACE } )
if ( build_deps_PUBLIC )
set ( build_deps_target "${build_deps_target};${build_deps_PUBLIC}" )
endif ( )
# P r i v a t e d e p e n d e n c i e s s h o u l d o n l y b e e x p o s e d i f i t i s a s t a t i c l i b r a r y , s i n c e i n t h o s e c a s e s , l i n k
# d e p e n d e n c i e s a r e t r a n s f e r e d t o t h e d o w n s t r e a m d e p e n d e n c i e s
if ( "${target_type}" STREQUAL "STATIC_LIBRARY" )
set ( build_deps_target "${build_deps_target};${build_deps_PRIVATE}" )
endif ( )
foreach ( build_dependency IN LISTS build_deps_target )
# S k i p w r a p p i n g p r o d u c e d w h e n t a r g e t s a r e n o t c r e a t e d i n t h e s a m e d i r e c t o r y
if ( NOT ${ build_dependency} MATCHES "^::@" )
if ( build_dependency)
list ( APPEND INTERFACE_BUILD_DEPENDENCIES_PLACEHOLDER "${PLACEHOLDER_INDENT}${build_dependency}" )
endif ( )
endforeach ( )
endif ( )
list ( REMOVE_DUPLICATES INTERFACE_BUILD_DEPENDENCIES_PLACEHOLDER )
list ( JOIN INTERFACE_BUILD_DEPENDENCIES_PLACEHOLDER "\n" INTERFACE_BUILD_DEPENDENCIES_PLACEHOLDER )
string ( REPEAT " " 8 PLACEHOLDER_INDENT )
@ -269,10 +303,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"
D E S T I N A T I O N $ { r e l a t i v e _ t a r g e t _ s o u r c e _ d i r } / P l a t f o r m / $ { P A L _ P L A T F O R M _ N A M E } / $ { L Y _ B U I L D _ P E R M U T A T I O N }
C O M P O N E N T $ { C M A K E _ I N S T A L L _ D E F A U L T _ C O M P O N E N T _ N A M E }
)
foreach ( conf IN LISTS CMAKE_CONFIGURATION_TYPES )
string ( TOUPPER ${ conf } UCONF )
ly_install ( FILES "${target_install_source_dir}/Platform/${PAL_PLATFORM_NAME}/${LY_BUILD_PERMUTATION}/${NAME_PLACEHOLDER}_${conf}.cmake"
D E S T I N A T I O N $ { r e l a t i v e _ t a r g e t _ s o u r c e _ d i r } / P l a t f o r m / $ { P A L _ P L A T F O R M _ N A M E } / $ { L Y _ B U I L D _ P E R M U T A T I O N }
C O M P O N E N T $ { L Y _ I N S T A L L _ P E R M U T A T I O N _ C O M P O N E N T } _ $ { U C O N F }
C O N F I G U R A T I O N S $ { c o n f }
)
endforeach ( )
# S i n c e a C M a k e L i s t s . t x t c o u l d c o n t a i n m u l t i p l e t a r g e t s , w e g e n e r a t e i t i n a f o l d e r p e r t a r g e t
ly_file_read ( ${ LY_ROOT_FOLDER } /cmake/install/InstalledTarget.in target_cmakelists_template )
@ -312,7 +351,8 @@ function(ly_setup_subdirectory absolute_target_source_dir)
@ c m a k e _ c o p y r i g h t _ c o m m e n t @
include ( Platform/ ${ PAL_PLATFORM_NAME } /platform_ ${ PAL_PLATFORM_NAME_LOWERCASE } .cmake )
] ] @ O N L Y )
install ( FILES "${target_install_source_dir}/CMakeLists.txt"
ly_install ( FILES "${target_install_source_dir}/CMakeLists.txt"
D E S T I N A T I O N $ { r e l a t i v e _ t a r g e t _ s o u r c e _ d i r }
C O M P O N E N T $ { C M A K E _ I N S T A L L _ D E F A U L T _ C O M P O N E N T _ N A M E }
)
@ -322,12 +362,12 @@ include(Platform/${PAL_PLATFORM_NAME}/platform_${PAL_PLATFORM_NAME_LOWERCASE}.cm
file ( CONFIGURE OUTPUT "${target_install_source_dir}/Platform/${PAL_PLATFORM_NAME}/platform_${PAL_PLATFORM_NAME_LOWERCASE}.cmake" CONTENT [[
@ c m a k e _ c o p y r i g h t _ c o m m e n t @
if ( LY_MONOLITHIC_GAME )
include ( Platform/ ${ PAL_PLATFORM_NAME } /Monolithic/permutation.cmake )
include ( Platform/ ${ PAL_PLATFORM_NAME } /Monolithic/permutation.cmake OPTIONAL )
else ( )
include ( Platform/ ${ PAL_PLATFORM_NAME } /Default/permutation.cmake )
endif ( )
] ] )
install( FILES "${target_install_source_dir}/Platform/${PAL_PLATFORM_NAME}/platform_${PAL_PLATFORM_NAME_LOWERCASE}.cmake"
ly_ install( FILES "${target_install_source_dir}/Platform/${PAL_PLATFORM_NAME}/platform_${PAL_PLATFORM_NAME_LOWERCASE}.cmake"
D E S T I N A T I O N $ { r e l a t i v e _ t a r g e t _ s o u r c e _ d i r } / P l a t f o r m / $ { P A L _ P L A T F O R M _ N A M E }
C O M P O N E N T $ { C M A K E _ I N S T A L L _ D E F A U L T _ C O M P O N E N T _ N A M E }
)
@ -347,63 +387,45 @@ endif()
" $ { G E M _ V A R I A N T _ T O _ L O A D _ P L A C E H O L D E R } "
" $ { E N A B L E _ G E M S _ P L A C E H O L D E R } "
)
install ( FILES "${target_install_source_dir}/Platform/${PAL_PLATFORM_NAME}/${LY_BUILD_PERMUTATION}/permutation.cmake"
D E S T I N A T I O N $ { r e l a t i v e _ t a r g e t _ s o u r c e _ d i r } / / P l a t f o r m / $ { P A L _ P L A T F O R M _ N A M E } / $ { L Y _ B U I L D _ P E R M U T A T I O N }
C O M P O N E N T $ { C M A K E _ I N S T A L L _ D E F A U L T _ C O M P O N E N T _ N A M E }
)
endfunction ( )
# ! l y _ s e t u p _ o 3 d e _ i n s t a l l : o r c h e s t r a t e s t h e i n s t a l l a t i o n o f t h e d i f f e r e n t p a r t s . T h i s i s t h e e n t r y p o i n t f r o m t h e r o o t C M a k e L i s t s . t x t
function ( ly_setup_o3de_install )
ly_setup_subdirectories ( )
ly_setup_cmake_install ( )
ly_setup_runtime_dependencies ( )
ly_setup_assets ( )
# M i s c
install ( FILES
$ { L Y _ R O O T _ F O L D E R } / p y t e s t . i n i
$ { L Y _ R O O T _ F O L D E R } / L I C E N S E . t x t
$ { L Y _ R O O T _ F O L D E R } / R E A D M E . m d
D E S T I N A T I O N .
C O M P O N E N T $ { C M A K E _ I N S T A L L _ D E F A U L T _ C O M P O N E N T _ N A M E }
ly_install ( FILES "${target_install_source_dir}/Platform/${PAL_PLATFORM_NAME}/${LY_BUILD_PERMUTATION}/permutation.cmake"
D E S T I N A T I O N $ { r e l a t i v e _ t a r g e t _ s o u r c e _ d i r } / P l a t f o r m / $ { P A L _ P L A T F O R M _ N A M E } / $ { L Y _ B U I L D _ P E R M U T A T I O N }
C O M P O N E N T $ { L Y _ I N S T A L L _ P E R M U T A T I O N _ C O M P O N E N T }
)
if ( COMMAND ly_post_install_steps )
ly_post_install_steps ( )
endif ( )
endfunction ( )
# ! l y _ s e t u p _ c m a k e _ i n s t a l l : i n s t a l l t h e " c m a k e " f o l d e r
function ( ly_setup_cmake_install )
install( DIRECTORY "${LY_ROOT_FOLDER}/cmake"
ly_install ( DIRECTORY "${LY_ROOT_FOLDER}/cmake"
D E S T I N A T I O N .
C O M P O N E N T $ { C M A K E _ I N S T A L L _ D E F A U L T _ C O M P O N E N T _ N A M E }
P A T T E R N " _ _ p y c a c h e _ _ " E X C L U D E
P A T T E R N " F i n d o 3 d e . c m a k e " E X C L U D E
P A T T E R N " c m a k e / C o n f i g u r a t i o n T y p e s . c m a k e " E X C L U D E
R E G E X " 3 r d P a r t y / P l a t f o r m \ / . * \ / B u i l t I n P a c k a g e s _ . * \ . c m a k e " E X C L U D E
)
# C o n n e c t c o n f i g u r a t i o n t y p e s
install( FILES "${LY_ROOT_FOLDER}/cmake/install/ConfigurationTypes.cmake"
ly_ install( FILES "${LY_ROOT_FOLDER}/cmake/install/ConfigurationTypes.cmake"
D E S T I N A T I O N c m a k e
C O M P O N E N T $ { C M A K E _ I N S T A L L _ D E F A U L T _ C O M P O N E N T _ N A M E }
)
# I n j e c t c o d e t h a t w i l l g e n e r a t e e a c h C o n f i g u r a t i o n T y p e _ < C O N F I G > . c m a k e f i l e
set ( install_configuration_type_template [=[
configure_file ( @LY_ROOT_FOLDER@/cmake/install/ConfigurationType_config.cmake.in
$ { C M A K E _ I N S T A L L _ P R E F I X } / c m a k e / P l a t f o r m / @ P A L _ P L A T F O R M _ N A M E @ / @ L Y _ B U I L D _ P E R M U T A T I O N @ / C o n f i g u r a t i o n T y p e s _ $ { C M A K E _ I N S T A L L _ C O N F I G _ N A M E } . c m a k e
# g e n e r a t e e a c h C o n f i g u r a t i o n T y p e _ < C O N F I G > . c m a k e f i l e a n d i n s t a l l i t u n d e r t h a t c o n f i g u r a t i o n
foreach ( conf IN LISTS CMAKE_CONFIGURATION_TYPES )
string ( TOUPPER ${ conf } UCONF )
configure_file ( "${LY_ROOT_FOLDER}/cmake/install/ConfigurationType_config.cmake.in"
" $ { C M A K E _ B I N A R Y _ D I R } / c m a k e / P l a t f o r m / $ { P A L _ P L A T F O R M _ N A M E } / $ { L Y _ B U I L D _ P E R M U T A T I O N } / C o n f i g u r a t i o n T y p e s _ $ { c o n f } . c m a k e "
@ O N L Y
)
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}"
CO M P O N E N T $ { C M A K E _ I N S T A L L _ D E F A U L T _ C O M P O N E N T _ N A M E }
)
ly_install( FILES "${CMAKE_BINARY_DIR}/cmake/Platform/${PAL_PLATFORM_NAME}/${LY_BUILD_PERMUTATION}/ConfigurationTypes_${conf}.cmake"
D E S T I N A T I O N c m a k e / P l a t f o r m / $ { P A L _ P L A T F O R M _ N A M E } / $ { L Y _ B U I L D _ P E R M U T A T I O N }
C O M P O N E N T $ { L Y _ I N S T A L L _ P E R M U T A T I O N _ C O M P O N E N T } _ $ { U C O N F }
C O N F I G U R A T I O N S $ { c o n f }
)
endforeach ( )
# T r a n s f o r m t h e L Y _ E X T E R N A L _ S U B D I R S l i s t i n t o a j s o n a r r a y
set ( indent " " )
@ -422,8 +444,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 (
F I L E S
ly_install ( FILES
" $ { L Y _ R O O T _ F O L D E R } / C M a k e L i s t s . t x t "
" $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / c m a k e / e n g i n e . j s o n "
D E S T I N A T I O N .
@ -446,11 +467,12 @@ function(ly_setup_cmake_install)
list ( APPEND additional_platform_files "${plat_files}" )
endforeach ( )
endforeach ( )
install ( FILES ${ additional_find_files }
ly_install ( FILES ${ additional_find_files }
D E S T I N A T I O N c m a k e / 3 r d P a r t y
C O M P O N E N T $ { C M A K E _ I N S T A L L _ D E F A U L T _ C O M P O N E N T _ N A M E }
)
install( FILES ${ additional_platform_files }
ly_ install( FILES ${ additional_platform_files }
D E S T I N A T I O N c m a k e / 3 r d P a r t y / P l a t f o r m / $ { P A L _ P L A T F O R M _ N A M E }
C O M P O N E N T $ { C M A K E _ I N S T A L L _ D E F A U L T _ C O M P O N E N T _ N A M E }
)
@ -467,7 +489,7 @@ function(ly_setup_cmake_install)
endforeach ( )
configure_file ( ${ LY_ROOT_FOLDER } /cmake/install/Findo3de.cmake.in ${ CMAKE_CURRENT_BINARY_DIR } /cmake/Findo3de.cmake @ONLY )
install( FILES "${CMAKE_CURRENT_BINARY_DIR}/cmake/Findo3de.cmake"
ly_ install( FILES "${CMAKE_CURRENT_BINARY_DIR}/cmake/Findo3de.cmake"
D E S T I N A T I O N c m a k e
C O M P O N E N T $ { C M A K E _ I N S T A L L _ D E F A U L T _ C O M P O N E N T _ N A M E }
)
@ -476,10 +498,12 @@ function(ly_setup_cmake_install)
# a l l t h e a s s o c i a t i o n s i n l y _ a s s o c i a t e _ p a c k a g e a n d t h e n g e n e r a t e t h e m i n t o B u i l t I n P a c k a g e s _ < p l a t f o r m > . c m a k e . T h i s
# w i l l c o n s o l i d a t e a l l a s s o c i a t i o n s i n o n e f i l e
get_property ( all_package_names GLOBAL PROPERTY LY_PACKAGE_NAMES )
list ( REMOVE_DUPLICATES all_package_names )
set ( builtinpackages "# Generated by O3DE install\n\n" )
foreach ( package_name IN LISTS all_package_names )
get_property ( package_hash GLOBAL PROPERTY LY_PACKAGE_HASH_ ${ package_name } )
get_property ( targets GLOBAL PROPERTY LY_PACKAGE_TARGETS_ ${ package_name } )
list ( REMOVE_DUPLICATES targets )
string ( APPEND builtinpackages "ly_associate_package(PACKAGE_NAME ${package_name} TARGETS ${targets} PACKAGE_HASH ${package_hash})\n" )
endforeach ( )
@ -487,7 +511,7 @@ function(ly_setup_cmake_install)
file ( GENERATE OUTPUT ${ pal_builtin_file }
C O N T E N T $ { b u i l t i n p a c k a g e s }
)
install( FILES "${pal_builtin_file}"
ly_ install( FILES "${pal_builtin_file}"
D E S T I N A T I O N c m a k e / 3 r d P a r t y / P l a t f o r m / $ { P A L _ P L A T F O R M _ N A M E }
C O M P O N E N T $ { C M A K E _ I N S T A L L _ D E F A U L T _ C O M P O N E N T _ N A M E }
)
@ -498,14 +522,17 @@ endfunction()
function ( ly_setup_runtime_dependencies )
# C o m m o n f u n c t i o n s u s e d b y t h e b e l l o w c o d e
if ( COMMAND ly_ install_code _function_override)
ly_ install_code _function_override( )
if ( COMMAND ly_ setup_runtime_dependencies_copy _function_override)
ly_ setup_runtime_dependencies_copy _function_override( )
else ( )
install( CODE
ly_ install( CODE
" function ( ly_copy source_file target_directory )
file ( COPY \"\${source_file}\" DESTINATION \"\${target_directory}\" FILE_PERMISSIONS ${ LY_COPY_PERMISSIONS } )
cmake_path ( GET source_file FILENAME file_name )
if ( NOT EXISTS ${ target_directory } / ${ file_name } )
file ( COPY \"\${source_file}\" DESTINATION \"\${target_directory}\" FILE_PERMISSIONS ${ LY_COPY_PERMISSIONS } )
endif ( )
endfunction ( ) "
C O M P O N E N T $ { C M A K E _ I N S T A L L _ D E F A U L T _ C O M P O N E N T _ N A M E }
C O M P O N E N T $ { C M A K E _ I N S T A L L _ D E F A U L T _ C O M P O N E N T _ N A M E }
)
endif ( )
@ -545,9 +572,15 @@ endfunction()"
list ( REMOVE_DUPLICATES runtime_commands )
list ( JOIN runtime_commands " " runtime_commands_str ) # t h e s p a c e s a r e j u s t t o s e e t h e r i g h t i d e n t a t i o n i n t h e c m a k e _ i n s t a l l . c m a k e f i l e
install ( CODE "${runtime_commands_str}"
C O M P O N E N T $ { C M A K E _ I N S T A L L _ D E F A U L T _ C O M P O N E N T _ N A M E }
)
foreach ( conf IN LISTS CMAKE_CONFIGURATION_TYPES )
string ( TOUPPER ${ conf } UCONF )
ly_install ( CODE
" if ( \"\${CMAKE_INSTALL_CONFIG_NAME}\" MATCHES \"^(${conf})\$\")
$ { r u n t i m e _ c o m m a n d s _ s t r }
endif ( ) "
C O M P O N E N T $ { C M A K E _ I N S T A L L _ D E F A U L T _ C O M P O N E N T _ N A M E } _ $ { U C O N F }
)
endforeach ( )
endfunction ( )
@ -632,17 +665,19 @@ function(ly_setup_assets)
if ( NOT gem_install_dest_dir )
cmake_path ( SET gem_install_dest_dir . )
endif ( )
if ( IS_DIRECTORY ${ gem_absolute_path } )
install( DIRECTORY "${gem_absolute_path}"
ly_ install( DIRECTORY "${gem_absolute_path}"
D E S T I N A T I O N $ { g e m _ i n s t a l l _ d e s t _ d i r }
C O M P O N E N T $ { C M A K E _ I N S T A L L _ D E F A U L T _ C O M P O N E N T _ N A M E }
)
elseif ( EXISTS ${ gem_absolute_path } )
install( FILES ${ gem_absolute_path }
ly_ install( FILES ${ gem_absolute_path }
D E S T I N A T I O N $ { g e m _ i n s t a l l _ d e s t _ d i r }
C O M P O N E N T $ { C M A K E _ I N S T A L L _ D E F A U L T _ C O M P O N E N T _ N A M E }
)
endif ( )
endforeach ( )
endforeach ( )
@ -702,4 +737,37 @@ function(ly_setup_subdirectory_enable_gems absolute_target_source_dir output_scr
string ( APPEND enable_gems_calls ${ enable_gems_command } )
endforeach ( )
set ( ${ output_script } ${ enable_gems_calls } PARENT_SCOPE )
endfunction ( )
# ! l y _ s e t u p _ o 3 d e _ i n s t a l l : o r c h e s t r a t e s t h e i n s t a l l a t i o n o f t h e d i f f e r e n t p a r t s . T h i s i s t h e e n t r y p o i n t f r o m t h e r o o t C M a k e L i s t s . t x t
function ( ly_setup_o3de_install )
ly_setup_subdirectories ( )
ly_setup_cmake_install ( )
ly_setup_runtime_dependencies ( )
ly_setup_assets ( )
# M i s c
ly_install ( FILES
$ { L Y _ R O O T _ F O L D E R } / p y t e s t . i n i
$ { L Y _ R O O T _ F O L D E R } / L I C E N S E . t x t
$ { L Y _ R O O T _ F O L D E R } / R E A D M E . m d
D E S T I N A T I O N .
C O M P O N E N T $ { C M A K E _ I N S T A L L _ D E F A U L T _ C O M P O N E N T _ N A M E }
)
# I n j e c t o t h e r b u i l d d i r e c t o r i e s
foreach ( external_dir ${ LY_INSTALL_EXTERNAL_BUILD_DIRS } )
ly_install ( CODE
" set ( LY_CORE_COMPONENT_ALREADY_INCLUDED TRUE )
include ( ${ external_dir } /cmake_install.cmake )
set ( LY_CORE_COMPONENT_ALREADY_INCLUDED FALSE ) "
A L L _ C O M P O N E N T S
)
endforeach ( )
if ( COMMAND ly_post_install_steps )
ly_post_install_steps ( )
endif ( )
endfunction ( )