@ -20,33 +20,46 @@ if(json_error)
message ( FATAL_ERROR "Unable to read key 'engine' from 'project.json', error: ${json_error}" )
endif ( )
# R e a d t h e l i s t o f p a t h s f r o m ~ . o 3 d e / o 3 d e _ m a n i f e s t . j s o n
file ( TO_CMAKE_PATH "$ENV{USERPROFILE}" home_directory ) # W i n d o w s
if( ( NOT home_directory ) OR ( NOT EXISTS ${ home_directory } ) )
file( TO_CMAKE_PATH "$ENV{HOME}" home_directory ) # U n i x
if ( DEFINED ENV{USERPROFILE} AND EXISTS $ENV{ USERPROFILE } )
set ( manifest_path $ENV{ USERPROFILE } /.o3de/o3de_manifest.json ) # W i n d o w s
else( )
set( manifest_path $ENV{ HOME } /.o3de/o3de_manifest.json ) # U n i x
endif ( )
if ( NOT home_directory )
message ( FATAL_ERROR "Cannot find user home directory, the o3de manifest cannot be found" )
endif ( )
# S e t m a n i f e s t p a t h t o p a t h i n t h e u s e r h o m e d i r e c t o r y
set ( manifest_path ${ home_directory } /.o3de/o3de_manifest.json )
# R e a d t h e ~ / . o 3 d e / o 3 d e _ m a n i f e s t . j s o n f i l e a n d l o o k t h r o u g h t h e ' e n g i n e s _ p a t h ' o b j e c t .
# F i n d a k e y t h a t m a t c h e s L Y _ E N G I N E _ N A M E _ T O _ U S E a n d u s e t h a t a s t h e e n g i n e p a t h .
if ( EXISTS ${ manifest_path } )
file ( READ ${ manifest_path } manifest_json )
string ( JSON engines_count ERROR_VARIABLE json_error LENGTH ${ manifest_json } engines )
string ( JSON engines_path_count ERROR_VARIABLE json_error LENGTH ${ manifest_json } engines_path )
if ( json_error )
message ( FATAL_ERROR "Unable to read key 'engines ' from '${manifest_path}', error: ${json_error}")
message ( FATAL_ERROR "Unable to read key 'engines _path ' from '${manifest_path}', error: ${json_error}")
endif ( )
math ( EXPR engines_count "${engines_count}-1" )
foreach ( engine_path_index RANGE ${ engines_count } )
string ( JSON engine_path ERROR_VARIABLE json_error GET ${ manifest_json } engines ${ engine_path_index } )
if ( ${ json_error } )
message ( FATAL_ERROR "Unable to read engines[${engine_path_index}] '${manifest_path}', error: ${json_error}" )
string ( JSON engines_path_type ERROR_VARIABLE json_error TYPE ${ manifest_json } engines_path )
if ( json_error OR NOT ${ engines_path_type } STREQUAL "OBJECT" )
message ( FATAL_ERROR "Type of 'engines_path' in '${manifest_path}' is not a JSON Object, error: ${json_error}" )
endif ( )
math ( EXPR engines_path_count "${engines_path_count}-1" )
foreach ( engine_path_index RANGE ${ engines_path_count } )
string ( JSON engine_name ERROR_VARIABLE json_error MEMBER ${ manifest_json } engines_path ${ engine_path_index } )
if ( json_error )
message ( FATAL_ERROR "Unable to read 'engines_path/${engine_path_index}' from '${manifest_path}', error: ${json_error}" )
endif ( )
if ( engine_path )
list ( APPEND CMAKE_MODULE_PATH "${engine_path}/cmake" )
if ( LY_ENGINE_NAME_TO_USE STREQUAL engine_name )
string ( JSON engine_path ERROR_VARIABLE json_error GET ${ manifest_json } engines_path ${ engine_name } )
if ( json_error )
message ( FATAL_ERROR "Unable to read value from 'engines_path/${engine_name}', error: ${json_error}" )
endif ( )
if ( engine_path )
list ( APPEND CMAKE_MODULE_PATH "${engine_path}/cmake" )
break ( )
endif ( )
endif ( )
endforeach ( )
else ( )
message ( FATAL_ERROR "Engine registration is required before configuring a project. Please register an engine by running 'scripts/o3de register --this-engine'" )
endif ( )