diff --git a/ide/buildmanager.pas b/ide/buildmanager.pas index 5ed6b341ce..029f4c5092 100644 --- a/ide/buildmanager.pas +++ b/ide/buildmanager.pas @@ -2212,14 +2212,15 @@ function TBuildManager.OnGetBuildMacroValues(Options: TBaseCompilerOptions; procedure SetProjectMacroValues(Vars: TCTCfgScriptVariables); var Target: String; + CurMode: String; begin - Target:=GetModeMatrixTarget(Options); - if EnvironmentOptions<>nil then - ApplyBuildMatrixMacros(EnvironmentOptions.BuildMatrixOptions,Target,Vars); - if (Project1<>nil) and (Project1.BuildModes<>nil) then - begin - ApplyBuildMatrixMacros(Project1.BuildModes.SharedMatrixOptions,Target,Vars); - ApplyBuildMatrixMacros(Project1.BuildModes.SessionMatrixOptions,Target,Vars); + if Project1<>nil then begin + Target:=GetModeMatrixTarget(Options); + CurMode:=Project1.ActiveBuildMode.Identifier; + if EnvironmentOptions<>nil then + ApplyBuildMatrixMacros(EnvironmentOptions.BuildMatrixOptions,Target,CurMode,Vars); + ApplyBuildMatrixMacros(Project1.BuildModes.SharedMatrixOptions,Target,CurMode,Vars); + ApplyBuildMatrixMacros(Project1.BuildModes.SessionMatrixOptions,Target,CurMode,Vars); end; SetCmdLineOverrides(Vars); {$IFDEF VerboseBuildMacros} diff --git a/ide/modematrixopts.pas b/ide/modematrixopts.pas index 41e89cb092..377783993e 100644 --- a/ide/modematrixopts.pas +++ b/ide/modematrixopts.pas @@ -162,7 +162,7 @@ function CreateBuildMatrixOptionGUID: string; function SplitMatrixMacro(MacroAssignment: string; out MacroName, MacroValue: string; ExceptionOnError: boolean): boolean; -procedure ApplyBuildMatrixMacros(Options: TBuildMatrixOptions; Target: string; +procedure ApplyBuildMatrixMacros(Options: TBuildMatrixOptions; Target, ActiveMode: string; CfgVars: TCTCfgScriptVariables); implementation @@ -385,8 +385,8 @@ begin Result:=true; end; -procedure ApplyBuildMatrixMacros(Options: TBuildMatrixOptions; Target: string; - CfgVars: TCTCfgScriptVariables); +procedure ApplyBuildMatrixMacros(Options: TBuildMatrixOptions; + Target, ActiveMode: string; CfgVars: TCTCfgScriptVariables); var i: Integer; Option: TBuildMatrixOption; @@ -395,6 +395,7 @@ begin for i:=0 to Options.Count-1 do begin Option:=Options[i]; if Option.Typ<>bmotIDEMacro then continue; + if not Option.FitsMode(ActiveMode) then continue; if not Option.FitsTarget(Target) then continue; //debugln(['ApplyBuildMatrixMacros Option.MacroName="',Option.MacroName,'" Value="',Option.Value,'"']); CfgVars.Values[Option.MacroName]:=Option.Value;