@@ -1357,16 +1357,32 @@ def initialize_from_subproject_call(self,
13571357 project_default_options : OptionDict ,
13581358 cmd_line_options : OptionDict ,
13591359 machine_file_options : OptionDict ) -> None :
1360- # pick up pending per-project settings from the toplevel project() invocation
1361- options = {k : v for k , v in self .pending_subproject_options .items () if k .subproject == subproject }
13621360
1363- # apply project() and subproject() default_options
1364- for key , valstr in itertools .chain (project_default_options .items (), spcall_default_options .items ()):
1361+ options : OptionDict = {}
1362+
1363+ # project() default_options
1364+ for key , valstr in project_default_options .items ():
1365+ if key .subproject == subproject :
1366+ without_subp = key .evolve (subproject = None )
1367+ raise MesonException (f'subproject name not needed in default_options; use "{ without_subp } " instead of "{ key } "' )
1368+
13651369 if key .subproject is None :
13661370 key = key .evolve (subproject = subproject )
1367- elif key .subproject == subproject :
1371+ options [key ] = valstr
1372+
1373+ # augments from the toplevel project() default_options
1374+ for key , valstr in self .pending_subproject_options .items ():
1375+ if key .subproject == subproject :
1376+ options [key ] = valstr
1377+
1378+ # subproject() default_options
1379+ for key , valstr in spcall_default_options .items ():
1380+ if key .subproject == subproject :
13681381 without_subp = key .evolve (subproject = None )
13691382 raise MesonException (f'subproject name not needed in default_options; use "{ without_subp } " instead of "{ key } "' )
1383+
1384+ if key .subproject is None :
1385+ key = key .evolve (subproject = subproject )
13701386 options [key ] = valstr
13711387
13721388 # then global settings from machine file and command line
0 commit comments