@ -9,6 +9,8 @@
# W I T H O U T W A R R A N T I E S O R C O N D I T I O N S O F A N Y K I N D , e i t h e r e x p r e s s o r i m p l i e d .
#
set_property ( GLOBAL PROPERTY LAUNCHER_UNIFIED_BINARY_DIR ${ CMAKE_CURRENT_BINARY_DIR } )
# L a u n c h e r t a r g e t s f o r a p r o j e c t n e e d t o b e g e n e r a t e d w h e n c o n f i g u r i n g a p r o j e c t .
# W h e n b u i l d i n g t h e e n g i n e s o u r c e , t h i s f i l e w i l l b e i n c l u d e d b y L a u n c h e r U n i f i e d ' s C M a k e L i s t s . t x t
# W h e n u s i n g a n i n s t a l l e d e n g i n e , t h i s f i l e w i l l b e i n c l u d e d b y t h e F i n d L a u n c h e r G e n e r a t o r . c m a k e s c r i p t
@ -40,28 +42,8 @@ foreach(project_name project_path IN ZIP_LISTS LY_PROJECTS_TARGET_NAME LY_PROJEC
# I n t h e m o n o l i t h i c c a s e , w e n e e d t o r e g i s t e r t h e g e m m o d u l e s , t o d o s o w e w i l l g e n e r a t e a S t a t i c M o d u l e s . i n l
# f i l e f r o m S t a t i c M o d u l e s . i n
set_property ( GLOBAL APPEND PROPERTY LY_STATIC_MODULE_PROJECTS_NAME ${ project_name } )
get_property ( game_gem_dependencies GLOBAL PROPERTY LY_DELAYED_DEPENDENCIES_ ${ project_name } .GameLauncher )
unset ( extern_module_declarations )
unset ( module_invocations )
foreach ( game_gem_dependency ${ game_gem_dependencies } )
# T o m a t c h t h e c o n v e n t i o n o n h o w g e m s t a r g e t s v s g e m m o d u l e s a r e n a m e d , w e r e m o v e t h e " G e m : : " f r o m p r e f i x
# a n d r e m o v e t h e " . S t a t i c " f r o m t h e s u f f i x
string ( REGEX REPLACE "^Gem::" "Gem_" game_gem_dependency ${ game_gem_dependency } )
string ( REGEX REPLACE "^Project::" "Project_" game_gem_dependency ${ game_gem_dependency } )
# R e p l a c e " . " w i t h " _ "
string ( REPLACE "." "_" game_gem_dependency ${ game_gem_dependency } )
string ( APPEND extern_module_declarations "extern \" C\ " AZ::Module* CreateModuleClass_${game_gem_dependency}();\n" )
string ( APPEND module_invocations " modulesOut.push_back(CreateModuleClass_${game_gem_dependency}());\n" )
endforeach ( )
configure_file ( StaticModules.in
$ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / $ { p r o j e c t _ n a m e } . G a m e L a u n c h e r / I n c l u d e s / S t a t i c M o d u l e s . i n l
)
set ( game_build_dependencies
$ { g a m e _ g e m _ d e p e n d e n c i e s }
@ -70,29 +52,9 @@ foreach(project_name project_path IN ZIP_LISTS LY_PROJECTS_TARGET_NAME LY_PROJEC
if ( PAL_TRAIT_BUILD_SERVER_SUPPORTED )
get_property ( server_gem_dependencies GLOBAL PROPERTY LY_DELAYED_DEPENDENCIES_ ${ project_name } .ServerLauncher )
unset ( extern_module_declarations )
unset ( module_invocations )
foreach ( server_gem_dependency ${ server_gem_dependencies } )
# T o m a t c h t h e c o n v e n t i o n o n h o w g e m s t a r g e t s v s g e m m o d u l e s a r e n a m e d , w e r e m o v e t h e " G e m : : " f r o m p r e f i x
# a n d r e m o v e t h e " . S t a t i c " f r o m t h e s u f f i x
string ( REGEX REPLACE "^Gem::" "Gem_" server_gem_dependency ${ server_gem_dependency } )
string ( REGEX REPLACE "^Project::" "Project_" server_gem_dependency ${ server_gem_dependency } )
# R e p l a c e " . " w i t h " _ "
string ( REPLACE "." "_" server_gem_dependency ${ server_gem_dependency } )
string ( APPEND extern_module_declarations "extern \" C\ " AZ::Module* CreateModuleClass_${server_gem_dependency}();\n" )
string ( APPEND module_invocations " modulesOut.push_back(CreateModuleClass_${server_gem_dependency}());\n" )
endforeach ( )
configure_file ( StaticModules.in
$ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / $ { p r o j e c t _ n a m e } . S e r v e r L a u n c h e r / I n c l u d e s / S t a t i c M o d u l e s . i n l
)
set ( server_build_dependencies
$ { ga m e _ g e m _ d e p e n d e n c i e s }
$ { s e r v e r _ g e m _ d e p e n d e n c i e s }
L e g a c y : : C r y S y s t e m
)
endif ( )
@ -186,3 +148,63 @@ foreach(project_name project_path IN ZIP_LISTS LY_PROJECTS_TARGET_NAME LY_PROJEC
endif ( )
endforeach ( )
# ! D e f e r g e n e r a t i o n o f t h e S t a t i c M o d u l e s . i n l f i l e n e e d e d i n m o n o l i t h i c b u i l d s u n t i l a f t e r a l l t h e C M a k e t a r g e t s a r e k n o w n
# T h i s i s t h a t t h e G E M _ M O D U L E t a r g e t r u n t i m e d e p e n d e n c i e s c a n b e p a r s e d t o d i s c o v e r t h e l i s t o f d e p e n d e n t m o d u l e s
# t o l o a d
function ( ly_delayed_generate_static_modules_inl )
if ( LY_MONOLITHIC_GAME )
get_property ( launcher_unified_binary_dir GLOBAL PROPERTY LAUNCHER_UNIFIED_BINARY_DIR )
get_property ( project_names GLOBAL PROPERTY LY_STATIC_MODULE_PROJECTS_NAME )
foreach ( project_name ${ project_names } )
unset ( extern_module_declarations )
unset ( module_invocations )
unset ( all_game_gem_dependencies )
ly_get_gem_load_dependencies ( all_game_gem_dependencies ${ project_name } .GameLauncher )
foreach ( game_gem_dependency ${ all_game_gem_dependencies } )
# T o m a t c h t h e c o n v e n t i o n o n h o w g e m s t a r g e t s v s g e m m o d u l e s a r e n a m e d ,
# w e r e m o v e t h e " . S t a t i c " f r o m t h e s u f f i x
# R e p l a c e " . " w i t h " _ "
string ( REPLACE "." "_" game_gem_dependency ${ game_gem_dependency } )
string ( APPEND extern_module_declarations "extern \" C\ " AZ::Module* CreateModuleClass_Gem_${game_gem_dependency}();\n" )
string ( APPEND module_invocations " modulesOut.push_back(CreateModuleClass_Gem_${game_gem_dependency}());\n" )
endforeach ( )
configure_file ( ${ CMAKE_CURRENT_FUNCTION_LIST_DIR } /StaticModules.in
$ { l a u n c h e r _ u n i f i e d _ b i n a r y _ d i r } / $ { p r o j e c t _ n a m e } . G a m e L a u n c h e r / I n c l u d e s / S t a t i c M o d u l e s . i n l
)
if ( PAL_TRAIT_BUILD_SERVER_SUPPORTED )
get_property ( server_gem_dependencies GLOBAL PROPERTY LY_STATIC_MODULE_PROJECTS_DEPENDENCIES_ ${ project_name } .ServerLauncher )
unset ( extern_module_declarations )
unset ( module_invocations )
unset ( all_server_gem_dependencies )
ly_get_gem_load_dependencies ( all_server_gem_dependencies ${ project_name } .ServerLauncher )
foreach ( server_gem_dependency ${ server_gem_dependencies } )
ly_get_gem_load_dependencies ( server_gem_load_dependencies ${ server_gem_dependency } )
list ( APPEND all_server_gem_dependencies ${ server_gem_load_dependencies } ${ server_gem_dependency } )
endforeach ( )
foreach ( server_gem_dependency ${ all_server_gem_dependencies } )
# R e p l a c e " . " w i t h " _ "
string ( REPLACE "." "_" server_gem_dependency ${ server_gem_dependency } )
string ( APPEND extern_module_declarations "extern \" C\ " AZ::Module* CreateModuleClass_Gem_${server_gem_dependency}();\n" )
string ( APPEND module_invocations " modulesOut.push_back(CreateModuleClass_Gem_${server_gem_dependency}());\n" )
endforeach ( )
configure_file ( ${ CMAKE_CURRENT_FUNCTION_LIST_DIR } /StaticModules.in
$ { l a u n c h e r _ u n i f i e d _ b i n a r y _ d i r } / $ { p r o j e c t _ n a m e } . S e r v e r L a u n c h e r / I n c l u d e s / S t a t i c M o d u l e s . i n l
)
endif ( )
endforeach ( )
endif ( )
endfunction ( )