@@ -902,7 +902,7 @@ def do_subproject(self, subp_name: SubProject, kwargs: kwtypes.DoSubproject, for
902902 if required and not subproject .found ():
903903 raise InterpreterException (f'Subproject "{ subproject .subdir } " required but not found.' )
904904 if kwargs ['version' ]:
905- pv = self .build .subprojects [subp_name ]
905+ pv = self .build .projects [subp_name ]. version
906906 wanted = kwargs ['version' ]
907907 if pv == 'undefined' or not mesonlib .version_compare_many (pv , wanted )[0 ]:
908908 raise InterpreterException (f'Subproject { subp_name } version is { pv } but { wanted } required.' )
@@ -1016,7 +1016,6 @@ def _do_subproject_meson(self, subp_name: SubProject, subdir: str,
10161016 # We always need the subi.build_def_files, to propagate sub-sub-projects
10171017 self .build_def_files .update (subi .get_build_def_files ())
10181018 self .build .merge (subi .build )
1019- self .build .subprojects [subp_name ] = subi .project_version
10201019 return self .subprojects [subp_name ]
10211020
10221021 def _do_subproject_cmake (self , subp_name : SubProject , subdir : str ,
@@ -1276,7 +1275,7 @@ def func_project(self, node: mparser.FunctionNode, args: T.Tuple[str, T.List[str
12761275 if self .cargo is None :
12771276 self .load_root_cargo_lock_file ()
12781277
1279- self .build .projects [self .subproject ] = proj_name
1278+ self .build .projects [self .subproject ] = build . BuildProject ( proj_name , self . project_version )
12801279 mlog .log ('Project name:' , mlog .bold (proj_name ))
12811280 mlog .log ('Project version:' , mlog .bold (self .project_version ))
12821281
@@ -2934,12 +2933,17 @@ def func_add_global_link_arguments(self, node: mparser.FunctionNode, args: T.Tup
29342933 @typed_pos_args ('add_project_arguments' , varargs = str )
29352934 @typed_kwargs ('add_project_arguments' , NATIVE_KW , LANGUAGE_KW )
29362935 def func_add_project_arguments (self , node : mparser .FunctionNode , args : T .Tuple [T .List [str ]], kwargs : 'kwtypes.FuncAddProjectArgs' ) -> None :
2937- self ._add_project_arguments (node , self .build .projects_args [kwargs ['native' ]], args [0 ], kwargs )
2936+ self ._add_project_arguments (node , self .current_build_project ().project_args [kwargs ['native' ]],
2937+ args [0 ], kwargs )
29382938
29392939 @typed_pos_args ('add_project_link_arguments' , varargs = str )
29402940 @typed_kwargs ('add_global_arguments' , NATIVE_KW , LANGUAGE_KW )
29412941 def func_add_project_link_arguments (self , node : mparser .FunctionNode , args : T .Tuple [T .List [str ]], kwargs : 'kwtypes.FuncAddProjectArgs' ) -> None :
2942- self ._add_project_arguments (node , self .build .projects_link_args [kwargs ['native' ]], args [0 ], kwargs )
2942+ self ._add_project_arguments (node , self .current_build_project ().project_link_args [kwargs ['native' ]],
2943+ args [0 ], kwargs )
2944+
2945+ def current_build_project (self ) -> build .BuildProject :
2946+ return self .build .projects [self .subproject ]
29432947
29442948 @FeatureNew ('add_project_dependencies' , '0.63.0' )
29452949 @typed_pos_args ('add_project_dependencies' , varargs = dependencies .Dependency )
@@ -2959,8 +2963,10 @@ def func_add_project_dependencies(self, node: mparser.FunctionNode, args: T.Tupl
29592963 for idir in i .to_string_list (self .environment .get_source_dir (), self .environment .get_build_dir ()):
29602964 compile_args .extend (comp .get_include_args (idir , system_incdir ))
29612965
2962- self ._add_project_arguments (node , self .build .projects_args [for_machine ], compile_args , kwargs )
2963- self ._add_project_arguments (node , self .build .projects_link_args [for_machine ], d .get_link_args (), kwargs )
2966+ self ._add_project_arguments (node , self .current_build_project ().project_args [for_machine ],
2967+ compile_args , kwargs )
2968+ self ._add_project_arguments (node , self .current_build_project ().project_link_args [for_machine ],
2969+ d .get_link_args (), kwargs )
29642970
29652971 def _warn_about_builtin_args (self , args : T .List [str ]) -> None :
29662972 # -Wpedantic is deliberately not included, since some people want to use it but not use -Wextra
@@ -3005,10 +3011,7 @@ def _add_global_arguments(self, node: mparser.FunctionNode, argsdict: T.Dict[str
30053011
30063012 def _add_project_arguments (self , node : mparser .FunctionNode , argsdict : T .Dict [str , T .Dict [str , T .List [str ]]],
30073013 args : T .List [str ], kwargs : 'kwtypes.FuncAddProjectArgs' ) -> None :
3008- if self .subproject not in argsdict :
3009- argsdict [self .subproject ] = {}
3010- self ._add_arguments (node , argsdict [self .subproject ],
3011- self .project_args_frozen , args , kwargs )
3014+ self ._add_arguments (node , argsdict , self .project_args_frozen , args , kwargs )
30123015
30133016 def _add_arguments (self , node : mparser .FunctionNode , argsdict : T .Dict [str , T .List [str ]],
30143017 args_frozen : bool , args : T .List [str ], kwargs : 'kwtypes.FuncAddProjectArgs' ) -> None :
0 commit comments