* Package variants are stored in the package-dictionary, so there are more

places now where the package-dictionary should be used instead of the 
   global one.

git-svn-id: trunk@22357 -
This commit is contained in:
joost 2012-09-08 15:26:29 +00:00
parent eae11f81bb
commit dfb01f7391

View File

@ -402,8 +402,11 @@ Type
{ TPackageDictionary }
TPackageDictionary = Class(TDictionary)
private
FMasterDictionary: TDictionary;
Public
Function GetValue(const AName,Args : String) : String; override;
property MasterDictionary: TDictionary read FMasterDictionary write FMasterDictionary;
end;
@ -988,7 +991,7 @@ Type
Procedure InstallUnitConfigFile(APAckage : TPackage; Const Dest : String);
Function InstallPackageSourceFiles(APAckage : TPackage; stt : TSourceTypes; ttt : TTargetTypes; Const Dest : String):Boolean;
Function FileNewer(const Src,Dest : String) : Boolean;
Procedure LogSearchPath(const ASearchPathName:string;Path:TConditionalStrings; ACPU:TCPU;AOS:TOS);
Procedure LogSearchPath(APackage: TPackage;const ASearchPathName:string;Path:TConditionalStrings; ACPU:TCPU;AOS:TOS);
Function FindFileInPath(APackage: TPackage; Path:TConditionalStrings; AFileName:String; var FoundPath:String;ACPU:TCPU;AOS:TOS):Boolean;
procedure GetDirectoriesFromFilelist(const AFileList, ADirectoryList: TStringList);
@ -1176,6 +1179,7 @@ Type
TInstallerClass = Class of TCustomInstaller;
TDictionaryClass = Class of TDictionary;
TPackageDictionaryClass = Class of TPackageDictionary;
Type
TArchiveEvent = Procedure (Const AFileName : String; List : TStrings) of Object;
@ -1183,7 +1187,7 @@ Type
Var
DictionaryClass : TDictionaryClass = TDictionary;
PackageDictionaryClass : TDictionaryClass = TPackageDictionary;
PackageDictionaryClass : TPackageDictionaryClass = TPackageDictionary;
OnArchiveFiles : TArchiveEvent = Nil;
ArchiveFilesProc : TArchiveProc = Nil;
@ -1909,15 +1913,16 @@ begin
end;
function AddConditionalStrings(Dest : TStrings; Src : TConditionalStrings;ACPU:TCPU;AOS:TOS; Const APrefix : String='') : Integer ;
function AddConditionalStrings(APackage: TPackage; Dest : TStrings; Src : TConditionalStrings;ACPU:TCPU;AOS:TOS; Const APrefix : String='') : Integer ;
Var
I : Integer;
C : TConditionalString;
D : TDictionary;
D : TPackageDictionary;
S : String;
begin
Result:=0;
D := PackageDictionaryClass.Create(nil);
D.MasterDictionary := APackage.Dictionary;
try
D.AddVariable('CPU',CPUToString(ACPU));
D.AddVariable('OS',OSToString(AOS));
@ -2275,7 +2280,10 @@ begin
I:=Flist.IndexOf(AName);
If (I=-1) then
begin
result := GlobalDictionary.GetValue(AName,Args);
if assigned(MasterDictionary) then
result := MasterDictionary.GetValue(AName,Args)
else
result := GlobalDictionary.GetValue(AName,Args);
Exit;
end;
O:=Flist.Objects[I];
@ -2812,7 +2820,7 @@ end;
function TPackage.GetPackageUnitInstallDir(ACPU: TCPU; AOS: TOS): String;
begin
result:=FixPath(GlobalDictionary.Substitute(FPackageUnitInstallDir,['CPU',CPUToString(ACPU),'OS',OSToString(AOS),'target',MakeTargetString(ACPU,AOS)]));
result:=FixPath(Dictionary.Substitute(FPackageUnitInstallDir,['CPU',CPUToString(ACPU),'OS',OSToString(AOS),'target',MakeTargetString(ACPU,AOS)]));
end;
procedure TPackage.SetPackageUnitInstallDir(AValue: string);
@ -2837,7 +2845,7 @@ Var
begin
OB:=IncludeTrailingPathDelimiter(GetBinOutputDir(ACPU,AOS));
OU:=IncludeTrailingPathDelimiter(GetUnitsOutputDir(ACPU,AOS));
AddConditionalStrings(List,CleanFiles,ACPU,AOS);
AddConditionalStrings(Self, List,CleanFiles,ACPU,AOS);
For I:=0 to FTargets.Count-1 do
FTargets.TargetItems[I].GetCleanFiles(List, OU, OB, ACPU, AOS);
end;
@ -2850,7 +2858,7 @@ Var
T : TTarget;
begin
if Types=[] then
AddConditionalStrings(List,InstallFiles,ACPU,AOS)
AddConditionalStrings(Self, List,InstallFiles,ACPU,AOS)
else
begin
OB:=IncludeTrailingPathDelimiter(GetBinOutputDir(Defaults.CPU,Defaults.OS));
@ -4696,7 +4704,7 @@ begin
end;
Procedure TBuildEngine.LogSearchPath(const ASearchPathName:string;Path:TConditionalStrings; ACPU:TCPU;AOS:TOS);
procedure TBuildEngine.LogSearchPath(APackage: TPackage; const ASearchPathName: string; Path: TConditionalStrings; ACPU: TCPU; AOS: TOS);
var
S : String;
I : Integer;
@ -4710,7 +4718,7 @@ begin
begin
if S<>'' then
S:=S+PathSeparator;
S:=S+GlobalDictionary.ReplaceStrings(C.Value)
S:=S+APackage.Dictionary.ReplaceStrings(C.Value)
end;
end;
if S<>'' then
@ -4757,7 +4765,7 @@ Procedure TBuildEngine.ResolveFileNames(APackage : TPackage; ACPU:TCPU;AOS:TOS;D
var
SD,SF : String;
begin
LogSearchPath('package source',APackage.SourcePath,ACPU,AOS);
LogSearchPath(APackage,'package source',APackage.SourcePath,ACPU,AOS);
SD:=APackage.Dictionary.ReplaceStrings(T.Directory);
SF:=APackage.Dictionary.ReplaceStrings(T.SourceFileName);
if SD='' then
@ -4782,8 +4790,8 @@ Procedure TBuildEngine.ResolveFileNames(APackage : TPackage; ACPU:TCPU;AOS:TOS;D
D : TDependency;
j : integer;
begin
LogSearchPath('target include',T.IncludePath,ACPU,AOS);
LogSearchPath('package include',APackage.IncludePath,ACPU,AOS);
LogSearchPath(APackage,'target include',T.IncludePath,ACPU,AOS);
LogSearchPath(APackage,'package include',APackage.IncludePath,ACPU,AOS);
for j:=0 to T.Dependencies.Count-1 do
begin
D:=T.Dependencies[j];
@ -4827,7 +4835,7 @@ Procedure TBuildEngine.ResolveFileNames(APackage : TPackage; ACPU:TCPU;AOS:TOS;D
var
SD,SF : String;
begin
LogSearchPath('package example',APackage.ExamplePath,ACPU,AOS);
LogSearchPath(APackage,'package example',APackage.ExamplePath,ACPU,AOS);
SD:=APackage.Dictionary.ReplaceStrings(T.Directory);
SF:=APackage.Dictionary.ReplaceStrings(T.SourceFileName);
if SD='' then
@ -5058,8 +5066,8 @@ begin
// Object Path
L:=TUnsortedDuplicatesStringList.Create;
L.Duplicates:=dupIgnore;
AddConditionalStrings(L,APackage.ObjectPath,Defaults.CPU,Defaults.OS);
AddConditionalStrings(L,ATarget.ObjectPath,Defaults.CPU,Defaults.OS);
AddConditionalStrings(APackage, L,APackage.ObjectPath,Defaults.CPU,Defaults.OS);
AddConditionalStrings(APackage, L,ATarget.ObjectPath,Defaults.CPU,Defaults.OS);
for i:=0 to L.Count-1 do
Args.Add('-Fo'+AddPathPrefix(APackage,L[i]));
FreeAndNil(L);
@ -5068,8 +5076,8 @@ begin
L.Duplicates:=dupIgnore;
AddDependencyUnitPaths(L,APackage);
AddDependencyPaths(L,depUnit,ATarget);
AddConditionalStrings(L,APackage.UnitPath,Defaults.CPU,Defaults.OS);
AddConditionalStrings(L,ATarget.UnitPath,Defaults.CPU,Defaults.OS);
AddConditionalStrings(APackage, L,APackage.UnitPath,Defaults.CPU,Defaults.OS);
AddConditionalStrings(APackage, L,ATarget.UnitPath,Defaults.CPU,Defaults.OS);
for i:=0 to L.Count-1 do
Args.Add('-Fu'+AddPathPrefix(APackage,L[i]));
FreeAndNil(L);
@ -5077,8 +5085,8 @@ begin
L:=TUnsortedDuplicatesStringList.Create;
L.Duplicates:=dupIgnore;
AddDependencyPaths(L,depInclude,ATarget);
AddConditionalStrings(L,APackage.IncludePath,Defaults.CPU,Defaults.OS);
AddConditionalStrings(L,ATarget.IncludePath,Defaults.CPU,Defaults.OS);
AddConditionalStrings(APackage, L,APackage.IncludePath,Defaults.CPU,Defaults.OS);
AddConditionalStrings(APackage, L,ATarget.IncludePath,Defaults.CPU,Defaults.OS);
for i:=0 to L.Count-1 do
Args.Add('-Fi'+AddPathPrefix(APackage,L[i]));
FreeAndNil(L);