lazbuild: EnableDefaultMacroEnvVar use uppercase env var

This commit is contained in:
mattias 2022-04-18 00:15:17 +02:00
parent 835a3a7f52
commit fa5b6be1c0

View File

@ -310,41 +310,33 @@ procedure TBuildManager.OnMacroSubstitution(TheMacro: TTransferMacro;
Abort: boolean; Depth: integer); Abort: boolean; Depth: integer);
{$IFDEF EnableDefaultMacroEnvVar} {$IFDEF EnableDefaultMacroEnvVar}
var var
VarCnt, i, BestIndex: Integer; VarCnt, i: Integer;
EnvStr: String; EnvStr, UpperMacroName: String;
p: SizeInt; p: SizeInt;
{$ENDIF} {$ENDIF}
begin begin
if TheMacro=nil then begin if TheMacro=nil then begin
{$IFDEF EnableDefaultMacroEnvVar} {$IFDEF EnableDefaultMacroEnvVar}
if s='' then begin if s='' then begin
// default: use environment variable // default: use uppercase environment variable
VarCnt:=GetEnvironmentVariableCountUTF8; VarCnt:=GetEnvironmentVariableCountUTF8;
if length(fEnv)<>VarCnt then begin if length(fEnv)<>VarCnt then begin
SetLength(fEnv,VarCnt); SetLength(fEnv,VarCnt);
for i:=0 to VarCnt-1 do for i:=0 to VarCnt-1 do
fEnv[i]:=GetEnvironmentStringUTF8(i); fEnv[i]:=GetEnvironmentStringUTF8(i+1);
end; end;
BestIndex:=-1; UpperMacroName:=UTF8UpperCase(MacroName);
for i:=0 to VarCnt-1 do begin for i:=0 to VarCnt-1 do begin
EnvStr:=fEnv[i]; EnvStr:=fEnv[i];
p:=Pos('=',EnvStr); p:=Pos('=',EnvStr);
if p<2 then continue; if p<2 then continue;
if (p-1=length(MacroName)) and CompareMem(@MacroName[1],@EnvStr[1],p-1) then if (p-1=length(UpperMacroName)) and CompareMem(@UpperMacroName[1],@EnvStr[1],p-1) then
begin begin
// perfect match
Handled:=true; Handled:=true;
s:=copy(EnvStr,p+1,length(EnvStr)); s:=copy(EnvStr,p+1,length(EnvStr));
exit; exit;
end else if (BestIndex<0) and (UTF8CompareText(MacroName,LeftStr(EnvStr,p-1))=0) then
begin
// case insensitive match -> use and search further
Handled:=true;
BestIndex:=i;
s:=copy(EnvStr,p+1,length(EnvStr));
end; end;
end; end;
if Handled then exit;
end; end;
{$ENDIF} {$ENDIF}