Bläddra i källkod

* Added ability to add targets to a packagevariant

git-svn-id: trunk@22361 -
joost 13 år sedan
förälder
incheckning
a74b6e8573
1 ändrade filer med 50 tillägg och 5 borttagningar
  1. 50 5
      packages/fpmkunit/src/fpmkunit.pp

+ 50 - 5
packages/fpmkunit/src/fpmkunit.pp

@@ -209,6 +209,7 @@ Const
   AllMessages = [vlError,vlWarning,vlCommand,vlInfo];
 
 Type
+  TTargets = Class;
   { TNamedItem }
 
   TNamedItem = Class(TCollectionItem)
@@ -437,10 +438,12 @@ Type
   TPackageVariant = class(TNamedItem)
   private
     FOptions: TStrings;
+    FTargets: TTargets;
   public
     constructor Create(ACollection: TCollection); override;
     destructor Destroy; override;
     property Options: TStrings read FOptions;
+    property Targets: TTargets read FTargets;
   end;
 
   { TPackageVariants }
@@ -534,6 +537,7 @@ Type
   Public
     Constructor Create(ACollection : TCollection); override;
     Destructor Destroy; override;
+    procedure AssignTo(Dest: TPersistent); override;
     Function  GetOutputFileName (AOs : TOS) : String; Virtual;
     Function HaveOptions : Boolean;
     procedure SetName(const AValue: String);override;
@@ -2184,12 +2188,14 @@ end;
 constructor TPackageVariant.Create(ACollection: TCollection);
 begin
   inherited Create(ACollection);
+  FTargets := TTargets.Create(TTarget);
   FOptions := TStringList.Create;
 end;
 
 destructor TPackageVariant.Destroy;
 begin
   FOptions.Free;
+  FTargets.Free;
   inherited Destroy;
 end;
 
@@ -2231,10 +2237,7 @@ begin
   result := self.add as TPackageVariant;
   result.Name := AName;
   if FDefaultPackageVariantName='' then
-    begin
     FDefaultPackageVariantName:=AName;
-    FActivePackageVariantName:=AName;
-    end;
 end;
 
 {$endif HAS_UNIT_PROCESS}
@@ -3143,17 +3146,23 @@ end;
 
 procedure TPackage.SetDefaultPackageVariant;
 var
-  i: integer;
+  i,j: integer;
   PackageVariants: TPackageVariants;
 begin
   for i := 0 to FPackageVariants.Count-1 do
     begin
     PackageVariants := TPackageVariants(FPackageVariants.Items[i]);
     if Installer.FPackageVariantSettings.Values[PackageVariants.Name]<>'' then
-      PackageVariants.ActivePackageVariantName:= Installer.FPackageVariantSettings.Values[PackageVariants.Name];
+      PackageVariants.ActivePackageVariantName:= Installer.FPackageVariantSettings.Values[PackageVariants.Name]
+    else
+      PackageVariants.ActivePackageVariantName:= PackageVariants.DefaultPackageVariantName;
     Dictionary.AddVariable(PackageVariants.Name,PackageVariants.ActivePackageVariantName);
     SetUnitsOutputDir(FUnitsOutputDir+'$('+PackageVariants.name+')');
     SetPackageUnitInstallDir(FPackageUnitInstallDir+'$('+PackageVariants.Name+')');
+    // Do not add targets f the package is inerited
+    if PackageVariants.GetOwner=Self then
+      for j := 0 to PackageVariants.ActivePackageVariant.Targets.count -1 do
+        targets.add.assign(PackageVariants.ActivePackageVariant.Targets.items[j]);
     end;
 end;
 
@@ -6616,6 +6625,42 @@ begin
   inherited Destroy;
 end;
 
+procedure TTarget.AssignTo(Dest: TPersistent);
+var
+  DestTarget: TTarget;
+begin
+  if Dest is TTarget then
+    begin
+    DestTarget := TTarget(Dest);
+    DestTarget.Dependencies.Assign(Dependencies);
+    DestTarget.Commands.Assign(Commands);
+    DestTarget.FTargetState := FTargetState;
+    DestTarget.TargetType := TargetType;
+    DestTarget.CPUs := CPUs;
+    DestTarget.OSes := OSes;
+    DestTarget.Mode := Mode;
+    DestTarget.Options := Options;
+    DestTarget.Name :=  Name;
+    DestTarget.Extension:= Extension;
+    DestTarget.FPCTarget := FPCTarget;
+    DestTarget.FileType := FileType;
+    DestTarget.Directory := Directory;
+    DestTarget.ResourceStrings := ResourceStrings;
+    DestTarget.Install := Install;
+    DestTarget.FTargetSourceFileName := fTargetSourceFileName;
+    DestTarget.ObjectPath.Assign(ObjectPath);
+    DestTarget.UnitPath.Assign(UnitPath);
+    DestTarget.IncludePath.Assign(IncludePath);
+    DestTarget.FXML := FXML;
+    DestTarget.AfterCompile := AfterCompile;
+    DestTarget.BeforeCompile := BeforeCompile;
+    DestTarget.BeforeClean := BeforeCompile;
+    DestTarget.AfterClean := AfterClean;
+    end
+  else
+    inherited AssignTo(Dest);
+end;
+
 function TTarget.GetOptions: TStrings;
 begin
   If Foptions=Nil then