* TFPPackage.PackageVariants added

git-svn-id: trunk@40687 -
This commit is contained in:
joost 2018-12-28 23:37:18 +00:00
parent f6e32ae90e
commit 4eadd2ce16

View File

@ -98,6 +98,29 @@ type
Property Dependencies[Index : Integer] : TFPDependency Read GetDependency Write SetDependency;default;
end;
{ TFPPackageVariant }
TFPPackageVariant = class(TCollectionItem)
private
FName: string;
FIsInheritable: boolean;
FOptions: TStringArray;
public
property Name: string read FName write FName;
property IsInheritable: boolean read FIsInheritable write FIsInheritable;
property Options: TStringArray read FOptions write FOptions;
end;
{ TFPPackageVariants }
TFPPackageVariants = class(TCollection)
protected
function GetItem(Index: Integer): TFPPackageVariant;
public
property Items[Index: Integer]: TFPPackageVariant read GetItem;
end;
{ TFPPackage }
TFPPackage = Class(TStreamCollectionItem)
@ -126,6 +149,7 @@ type
FChecksum : cardinal;
FLocalFileName : String;
FPackagesStructure: TFPCustomPackagesStructure;
FPackageVariants: TFPPackageVariants;
function GetFileName: String;
function GetRepository: TFPRepository;
procedure SetName(const AValue: String);
@ -169,6 +193,8 @@ type
// Manual package from commandline not in official repository
Property LocalFileName : String Read FLocalFileName Write FLocalFileName;
Property PackagesStructure: TFPCustomPackagesStructure read FPackagesStructure write FPackagesStructure;
// Read from unit config file, not in official repository
Property PackageVariants: TFPPackageVariants read FPackageVariants;
end;
{ TFPPackages }
@ -325,6 +351,7 @@ const
KeyFPMakeOptions = 'FPMakeOptions';
KeyCPU = 'CPU';
KeyOS = 'OS';
KeyPkgVar = 'PackageVariant_';
ResourceString
SErrInvalidCPU = 'Invalid CPU name : "%s"';
@ -359,6 +386,13 @@ begin
OS:=StringToOs(Copy(S,P+1,Length(S)-P));
end;
{ TFPPackageVariants }
function TFPPackageVariants.GetItem(Index: Integer): TFPPackageVariant;
begin
Result := inherited GetItem(Index) as TFPPackageVariant;
end;
{ TFPCustomPackagesStructure }
function TFPCustomPackagesStructure.GetUnitDirectory(APackage: TFPPackage): string;
@ -482,6 +516,7 @@ begin
FOSes:=AllOSes;
FCPUs:=AllCPUs;
FDependencies:=TFPDependencies.Create(TFPDependency);
FPackageVariants:=TFPPackageVariants.Create(TFPPackageVariant);
end;
@ -625,7 +660,9 @@ var
VCPU : TCPU;
i,k : Integer;
DepChecksum : Cardinal;
DepName : String;
DepName: String;
PackageVariantStr, PackageVariantName: String;
PackageVariant: TFPPackageVariant;
D : TFPDependency;
begin
With AStringList do
@ -668,6 +705,25 @@ begin
//NeedLibC:=Upcase(Values[KeyNeedLibC])='Y';
IsFPMakeAddIn:=Upcase(Values[KeyAddIn])='Y';
FPMakePluginUnits:=Values[KeyPluginUnits];
// Read packagevariants
i := 1;
repeat
PackageVariantStr := Values[KeyPkgVar+IntToStr(i)];
if PackageVariantStr<>'' then
begin
PackageVariant := FPackageVariants.Add as TFPPackageVariant;
PackageVariantName := Copy(PackageVariantStr, 1, pos(':', PackageVariantStr) -1);
if RightStr(PackageVariantName, 1) = '*' then
begin
PackageVariantName := Copy(PackageVariantName, 1, Length(PackageVariantName) -1);
PackageVariant.IsInheritable := True;
end;
PackageVariant.Name := PackageVariantName;
PackageVariant.Options := Copy(PackageVariantStr, pos(':', PackageVariantStr) +1).Split(',');
end;
inc(i);
until PackageVariantStr='';
end;
end;