@ -23,12 +23,12 @@ ly_set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME Core)
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 )
# A n y w h e r e C M A K E _ I N S T A L L _ P R E F I X i s u s e d , i t h a s t o b e e s c a p e d s o i t i s b a k e d i n t o t h e c m a k e _ i n s t a l l . c m a k e s c r i p t i n s t e a d
# o f b a k i n g t h e p a t h . T h i s i s n e e d e d s o ` c m a k e - - i n s t a l l - - p r e f i x < s o m e p r e f i x > ` w o r k s r e g a r d l e s s o f t h e C M A K E _ I N S T A L L _ P R E F I X
# u s e d t o g e n e r a t e t h e s o l u t i o n .
# C M A K E _ I N S T A L L _ P R E F I X i s s t i l l u s e d w h e n b u i l d i n g t h e I N S T A L L t a r g e t
set ( install_output_folder "\${CMAKE_INSTALL_PREFIX}/${runtime_output_directory}/${PAL_PLATFORM_NAME}/$<CONFIG>" )
if ( LY_MONOLITHIC_GAME )
set ( LY_BUILD_PERMUTATION Monolithic )
else ( )
set ( LY_BUILD_PERMUTATION Default )
endif ( )
# ! l y _ s e t u p _ t a r g e t : S e t u p t h e d a t a n e e d e d t o r e - c r e a t e t h e c m a k e t a r g e t c o m m a n d s f o r a s i n g l e t a r g e t
function ( ly_setup_target OUTPUT_CONFIGURED_TARGET ALIAS_TARGET_NAME absolute_target_source_dir )
@ -91,6 +91,10 @@ function(ly_setup_target OUTPUT_CONFIGURED_TARGET ALIAS_TARGET_NAME absolute_tar
cmake_path ( RELATIVE_PATH target_library_output_directory BASE_DIRECTORY ${ CMAKE_LIBRARY_OUTPUT_DIRECTORY } OUTPUT_VARIABLE target_library_output_subdirectory )
endif ( )
cmake_path ( APPEND archive_output_directory "${PAL_PLATFORM_NAME}/$<CONFIG>/${LY_BUILD_PERMUTATION}" )
cmake_path ( APPEND library_output_directory "${PAL_PLATFORM_NAME}/$<CONFIG>/${LY_BUILD_PERMUTATION}" )
cmake_path ( APPEND runtime_output_directory "${PAL_PLATFORM_NAME}/$<CONFIG>/${LY_BUILD_PERMUTATION}" )
if ( COMMAND ly_install_target_override )
# M a c n e e d s s p e c i a l h a n d l i n g b e c a u s e o f a c m a k e i s s u e
ly_install_target_override ( TARGET ${ TARGET_NAME }
@ -104,18 +108,18 @@ function(ly_setup_target OUTPUT_CONFIGURED_TARGET ALIAS_TARGET_NAME absolute_tar
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 } / $ { P A L _ P L A T F O R M _ N A M E } / $ < C O N F I G >
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 } / $ { PA L _ P L A T F O R M _ N A M E } / $ < C O N F I G > / $ { ta 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 }
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 } / $ { ta 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 } / $ { PA L _ P L A T F O R M _ N A M E } / $ < C O N F I G > / $ { ta 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 }
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 } / $ { ta 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 }
)
endif ( )
# C M a k e L i s t s . t x t fi l e
# C M a k e L i s t s . t x t re l a t e d fi l e s
string ( REGEX MATCH "(.*)::(.*)$" match ${ ALIAS_TARGET_NAME } )
if ( match )
set ( NAMESPACE_PLACEHOLDER "NAMESPACE ${CMAKE_MATCH_1}" )
@ -140,7 +144,7 @@ function(ly_setup_target OUTPUT_CONFIGURED_TARGET ALIAS_TARGET_NAME absolute_tar
if ( TARGET_TYPE_PLACEHOLDER IN_LIST GEM_LIBRARY_TYPES )
get_target_property ( gem_module ${ TARGET_NAME } GEM_MODULE )
if ( gem_module )
s e t( TARGET_TYPE_PLACEHOLDER "GEM_ MODULE ")
s tring ( PREPEND TARGET_TYPE_PLACEHOLDER "GEM_ ")
endif ( )
endif ( )
@ -222,32 +226,32 @@ set_target_properties(${RUN_TARGET_NAME} PROPERTIES
)
endif ( )
# C o n f i g f i l e
# C o n f i g f i l e s
set ( target_file_contents "# Generated by O3DE install\n\n" )
if ( NOT target_type STREQUAL INTERFACE_LIBRARY )
unset ( target_location )
set ( runtime_types EXECUTABLE APPLICATION )
if ( target_type IN_LIST runtime_types )
set ( target_location "\${LY_ROOT_FOLDER}/${runtime_output_directory}/${ PAL_PLATFORM_NAME}/$<CONFIG>/${ target_runtime_output_subdirectory}/$<TARGET_FILE_NAME:${TARGET_NAME}>")
set ( target_location "\${LY_ROOT_FOLDER}/${runtime_output_directory}/${ target_runtime_output_subdirectory}/$<TARGET_FILE_NAME:${TARGET_NAME}>")
elseif ( target_type STREQUAL MODULE_LIBRARY )
set ( target_location "\${LY_ROOT_FOLDER}/${library_output_directory}/${ PAL_PLATFORM_NAME}/$<CONFIG>/${ target_library_output_subdirectory}/$<TARGET_FILE_NAME:${TARGET_NAME}>")
set ( target_location "\${LY_ROOT_FOLDER}/${library_output_directory}/${ target_library_output_subdirectory}/$<TARGET_FILE_NAME:${TARGET_NAME}>")
elseif ( target_type STREQUAL SHARED_LIBRARY )
string ( APPEND target_file_contents
" set_property ( TARGET ${ NAME_PLACEHOLDER }
A P P E N D _ S T R I N G P R O P E R T Y I M P O R T E D _ I M P L I B
$ < $ < C O N F I G : $ < C O N F I G > $ < A N G L E - R > : \ " \ $ { L Y _ R O O T _ F O L D E R } / $ { a r c h i v e _ o u t p u t _ d i r e c t o r y } / $ {P A L _ P L A T F O R M _ N A M E } / $ < C O N F I G > / $ <T A R G E T _ L I N K E R _ F I L E _ N A M E : $ { T A R G E T _ N A M E } > \ " $ < A N G L E - R >
$ < $ < C O N F I G : $ < C O N F I G > $ < A N G L E - R > : \ " \ $ { L Y _ R O O T _ F O L D E R } / $ { a r c h i v e _ o u t p u t _ d i r e c t o r y } / $ <T A R G E T _ L I N K E R _ F I L E _ N A M E : $ { T A R G E T _ N A M E } > \ " $ < A N G L E - R >
)
" )
string ( APPEND target_file_contents
" set_property ( TARGET ${ NAME_PLACEHOLDER }
P R O P E R T Y I M P O R T E D _ I M P L I B _ $ < U P P E R _ C A S E : $ < C O N F I G > >
\ " \ $ { L Y _ R O O T _ F O L D E R } / $ { a r c h i v e _ o u t p u t _ d i r e c t o r y } / $ {P A L _ P L A T F O R M _ N A M E } / $ < C O N F I G > / $ <T A R G E T _ L I N K E R _ F I L E _ N A M E : $ { T A R G E T _ N A M E } > \ "
\ " \ $ { L Y _ R O O T _ F O L D E R } / $ { a r c h i v e _ o u t p u t _ d i r e c t o r y } / $ <T A R G E T _ L I N K E R _ F I L E _ N A M E : $ { T A R G E T _ N A M E } > \ "
)
" )
set ( target_location "\${LY_ROOT_FOLDER}/${library_output_directory}/${ PAL_PLATFORM_NAME}/$<CONFIG>/${ target_library_output_subdirectory}/$<TARGET_FILE_NAME:${TARGET_NAME}>")
set ( target_location "\${LY_ROOT_FOLDER}/${library_output_directory}/${ target_library_output_subdirectory}/$<TARGET_FILE_NAME:${TARGET_NAME}>")
else ( ) # S T A T I C _ L I B R A R Y , O B J E C T _ L I B R A R Y , I N T E R F A C E _ L I B R A R Y
set ( target_location "\${LY_ROOT_FOLDER}/${archive_output_directory}/$ {PAL_PLATFORM_NAME}/$<CONFIG>/$ <TARGET_LINKER_FILE_NAME:${TARGET_NAME}>")
set ( target_location "\${LY_ROOT_FOLDER}/${archive_output_directory}/$ <TARGET_LINKER_FILE_NAME:${TARGET_NAME}>")
endif ( )
if ( target_location )
@ -265,9 +269,9 @@ set_property(TARGET ${NAME_PLACEHOLDER}
endif ( )
set ( target_install_source_dir ${ CMAKE_CURRENT_BINARY_DIR } /install/ ${ relative_target_source_dir } )
file ( GENERATE OUTPUT "${target_install_source_dir}/ ${NAME_PLACEHOLDER}_$<CONFIG>.cmake" CONTENT "${target_file_contents}" )
install ( FILES "${target_install_source_dir}/ ${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 }
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 }
)
@ -299,16 +303,44 @@ function(ly_setup_subdirectory absolute_target_source_dir)
string ( APPEND all_configured_targets "${configured_target}" )
endforeach ( )
# I n i t i a l i z e t h e t a r g e t i n s t a l l s o u r c e d i r e c t o r y t o p a t h u n d e r n e a t h t h e c u r r e n t b i n a r y d i r e c t o r y
set ( target_install_source_dir "${CMAKE_CURRENT_BINARY_DIR}/install/${relative_target_source_dir}" )
ly_file_read ( ${ LY_ROOT_FOLDER } /cmake/install/Copyright.in cmake_copyright_comment )
# 1 . C r e a t e t h e b a s e C M a k e L i s t s . t x t t h a t w i l l j u s t i n c l u d e a c m a k e f i l e p e r p l a t f o r m
file ( CONFIGURE OUTPUT "${target_install_source_dir}/CMakeLists.txt" CONTENT [[
@ 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"
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 }
)
# 2 . F o r t h i s p l a t f o r m f i l e , c r e a t e a P l a t f o r m / $ { P A L _ P L A T F O R M _ N A M 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 O W E R C A S E } . c m a k e f i l e
# t h a t w i l l i n c l u d e d i f f e r e n t c o n f i g u r a t i o n permutations ( e.g. monolithic vs non-monolithic )
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 )
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"
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 }
)
# 3 . F o r t h i s c o n f i g u r a t i o n p e r m u t a t i o n , g e n e r a t e a P l a t f o r m / $ { P A L _ P L A T F O R M _ N A M E } / $ { p e r m u t a t i o n } / p e r m u t a t i o n . c m a k e
# t h a t w i l l d e c l a r e t h e t a r g e t a n d c o n f i g u r e i t
ly_setup_subdirectory_create_alias ( "${absolute_target_source_dir}" CREATE_ALIASES_PLACEHOLDER )
ly_setup_subdirectory_set_gem_variant_to_load ( "${absolute_target_source_dir}" GEM_VARIANT_TO_LOAD_PLACEHOLDER )
ly_setup_subdirectory_enable_gems ( "${absolute_target_source_dir}" ENABLE_GEMS_PLACEHOLDER )
ly_file_read ( ${ LY_ROOT_FOLDER } /cmake/install/Copyright.in cmake_copyright_comment )
# I n i t i a l i z e t h e t a r g e t i n s t a l l s o u r c e d i r e c t o r y t o p a t h u n d e r n e a t h t h e c u r r e n t b i n a r y d i r e c t o r y
set ( target_install_source_dir ${ CMAKE_CURRENT_BINARY_DIR } /install/ ${ relative_target_source_dir } )
# W r i t e o u t a l l t h e a g g r e g a t e d l y _ a d d _ t a r g e t f u n c t i o n c a l l s a n d t h e f i n a l ly_create_alias ( ) c a l l s t o t h e t a r g e t C M a k e L i s t s . t x t
file ( WRITE ${ target_install_source_dir } /CMakeLists.txt
file ( WRITE "${target_install_source_dir}/Platform/${PAL_PLATFORM_NAME}/${LY_BUILD_PERMUTATION}/permutation.cmake"
" $ { c m a k e _ c o p y r i g h t _ c o m m e n t } "
" $ { a l l _ c o n f i g u r e d _ t a r g e t s } "
" \ n "
@ -316,9 +348,8 @@ function(ly_setup_subdirectory absolute_target_source_dir)
" $ { 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}/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 }
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 }
)
@ -362,10 +393,10 @@ function(ly_setup_cmake_install)
# 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 / Co 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
$ { C M A K E _ I N S T A L L _ P R E F I X } / c m a k e / Pl 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 @ / Co 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
@ O N L Y
)
message ( STATUS "Generated ${CMAKE_INSTALL_PREFIX}/cmake/ ConfigurationTypes_${CMAKE_INSTALL_CONFIG_NAME}.cmake")
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}"
@ -493,6 +524,11 @@ endfunction()"
endif ( )
# r u n t i m e d e p e n d e n c i e s t h a t n e e d t o b e c o p i e d t o t h e o u t p u t
# A n y w h e r e C M A K E _ I N S T A L L _ P R E F I X i s u s e d , i t h a s t o b e e s c a p e d s o i t i s b a k e d i n t o t h e c m a k e _ i n s t a l l . c m a k e s c r i p t i n s t e a d
# o f b a k i n g t h e p a t h . T h i s i s n e e d e d s o ` c m a k e - - i n s t a l l - - p r e f i x < s o m e p r e f i x > ` w o r k s r e g a r d l e s s o f t h e C M A K E _ I N S T A L L _ P R E F I X
# u s e d t o g e n e r a t e t h e s o l u t i o n .
# C M A K E _ I N S T A L L _ P R E F I X i s s t i l l u s e d w h e n b u i l d i n g t h e I N S T A L L t a r g e t
set ( install_output_folder "\${CMAKE_INSTALL_PREFIX}/${runtime_output_directory}/${PAL_PLATFORM_NAME}/$<CONFIG>/${LY_BUILD_PERMUTATION}" )
set ( target_file_dir "${install_output_folder}/${target_runtime_output_subdirectory}" )
ly_get_runtime_dependencies ( runtime_dependencies ${ target } )
foreach ( runtime_dependency ${ runtime_dependencies } )