mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-17 01:59:18 +02:00
* Implemented distclean command, which cleans up all targets
git-svn-id: trunk@17985 -
This commit is contained in:
parent
e32317bca4
commit
25a9052ced
@ -102,7 +102,7 @@ Type
|
|||||||
|
|
||||||
TLogEvent = Procedure (Level : TVerboseLevel; Const Msg : String) of Object;
|
TLogEvent = Procedure (Level : TVerboseLevel; Const Msg : String) of Object;
|
||||||
|
|
||||||
TRunMode = (rmCompile,rmBuild,rmInstall,rmArchive,rmClean,rmManifest);
|
TRunMode = (rmCompile,rmBuild,rmInstall,rmArchive,rmClean,rmDistClean,rmManifest);
|
||||||
|
|
||||||
Const
|
Const
|
||||||
// Aliases
|
// Aliases
|
||||||
@ -854,7 +854,8 @@ Type
|
|||||||
Procedure Install(APackage : TPackage);
|
Procedure Install(APackage : TPackage);
|
||||||
Procedure Archive(APackage : TPackage);
|
Procedure Archive(APackage : TPackage);
|
||||||
Procedure Manifest(APackage : TPackage);
|
Procedure Manifest(APackage : TPackage);
|
||||||
Procedure Clean(APackage : TPackage);
|
Procedure Clean(APackage : TPackage; AllTargets: boolean);
|
||||||
|
Procedure Clean(APackage : TPackage; ACPU:TCPU; AOS : TOS);
|
||||||
Procedure CompileDependencies(APackage : TPackage);
|
Procedure CompileDependencies(APackage : TPackage);
|
||||||
Function CheckExternalPackage(Const APackageName : String):TPackage;
|
Function CheckExternalPackage(Const APackageName : String):TPackage;
|
||||||
procedure CreateOutputDir(APackage: TPackage);
|
procedure CreateOutputDir(APackage: TPackage);
|
||||||
@ -863,7 +864,7 @@ Type
|
|||||||
Procedure Install(Packages : TPackages);
|
Procedure Install(Packages : TPackages);
|
||||||
Procedure Archive(Packages : TPackages);
|
Procedure Archive(Packages : TPackages);
|
||||||
procedure Manifest(Packages: TPackages);
|
procedure Manifest(Packages: TPackages);
|
||||||
Procedure Clean(Packages : TPackages);
|
Procedure Clean(Packages : TPackages; AllTargets: boolean);
|
||||||
Property ListMode : Boolean Read FListMode Write FListMode;
|
Property ListMode : Boolean Read FListMode Write FListMode;
|
||||||
Property ForceCompile : Boolean Read FForceCompile Write FForceCompile;
|
Property ForceCompile : Boolean Read FForceCompile Write FForceCompile;
|
||||||
Property ExternalPackages: TPackages Read FExternalPackages;
|
Property ExternalPackages: TPackages Read FExternalPackages;
|
||||||
@ -903,7 +904,7 @@ Type
|
|||||||
Procedure AnalyzeOptions;
|
Procedure AnalyzeOptions;
|
||||||
Procedure Usage(const FMT : String; Args : Array of const);
|
Procedure Usage(const FMT : String; Args : Array of const);
|
||||||
Procedure Compile(Force : Boolean); virtual;
|
Procedure Compile(Force : Boolean); virtual;
|
||||||
Procedure Clean; virtual;
|
Procedure Clean(AllTargets: boolean); virtual;
|
||||||
Procedure Install; virtual;
|
Procedure Install; virtual;
|
||||||
Procedure Archive; virtual;
|
Procedure Archive; virtual;
|
||||||
Procedure Manifest; virtual;
|
Procedure Manifest; virtual;
|
||||||
@ -2329,8 +2330,8 @@ Var
|
|||||||
OB,OU : String;
|
OB,OU : String;
|
||||||
I : Integer;
|
I : Integer;
|
||||||
begin
|
begin
|
||||||
OB:=IncludeTrailingPathDelimiter(GetBinOutputDir(Defaults.CPU,Defaults.OS));
|
OB:=IncludeTrailingPathDelimiter(GetBinOutputDir(ACPU,AOS));
|
||||||
OU:=IncludeTrailingPathDelimiter(GetUnitsOutputDir(Defaults.CPU,Defaults.OS));
|
OU:=IncludeTrailingPathDelimiter(GetUnitsOutputDir(ACPU,AOS));
|
||||||
AddConditionalStrings(List,CleanFiles,ACPU,AOS);
|
AddConditionalStrings(List,CleanFiles,ACPU,AOS);
|
||||||
For I:=0 to FTargets.Count-1 do
|
For I:=0 to FTargets.Count-1 do
|
||||||
FTargets.TargetItems[I].GetCleanFiles(List, OU, OB, ACPU, AOS);
|
FTargets.TargetItems[I].GetCleanFiles(List, OU, OB, ACPU, AOS);
|
||||||
@ -3297,6 +3298,8 @@ begin
|
|||||||
FRunMode:=rmInstall
|
FRunMode:=rmInstall
|
||||||
else if CheckCommand(I,'c','clean') then
|
else if CheckCommand(I,'c','clean') then
|
||||||
FRunMode:=rmClean
|
FRunMode:=rmClean
|
||||||
|
else if CheckCommand(I,'dc','distclean') then
|
||||||
|
FRunMode:=rmDistClean
|
||||||
else if CheckCommand(I,'a','archive') then
|
else if CheckCommand(I,'a','archive') then
|
||||||
FRunMode:=rmarchive
|
FRunMode:=rmarchive
|
||||||
else if CheckCommand(I,'M','manifest') then
|
else if CheckCommand(I,'M','manifest') then
|
||||||
@ -3418,9 +3421,9 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TCustomInstaller.Clean;
|
procedure TCustomInstaller.Clean(AllTargets: boolean);
|
||||||
begin
|
begin
|
||||||
BuildEngine.Clean(Packages);
|
BuildEngine.Clean(Packages, AllTargets);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -3463,7 +3466,8 @@ begin
|
|||||||
rmBuild : Compile(True);
|
rmBuild : Compile(True);
|
||||||
rmInstall : Install;
|
rmInstall : Install;
|
||||||
rmArchive : Archive;
|
rmArchive : Archive;
|
||||||
rmClean : Clean;
|
rmClean : Clean(False);
|
||||||
|
rmDistClean: Clean(True);
|
||||||
rmManifest : Manifest;
|
rmManifest : Manifest;
|
||||||
end;
|
end;
|
||||||
except
|
except
|
||||||
@ -4980,48 +4984,28 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TBuildEngine.Clean(APackage: TPackage);
|
procedure TBuildEngine.Clean(APackage: TPackage; AllTargets: boolean);
|
||||||
Var
|
var
|
||||||
List : TStringList;
|
ACPU: TCpu;
|
||||||
DirectoryList : TStringList;
|
AOS: TOS;
|
||||||
begin
|
begin
|
||||||
Log(vlInfo,SInfoCleaningPackage,[APackage.Name]);
|
Log(vlInfo,SInfoCleaningPackage,[APackage.Name]);
|
||||||
try
|
try
|
||||||
If (APackage.Directory<>'') then
|
If (APackage.Directory<>'') then
|
||||||
EnterDir(APackage.Directory);
|
EnterDir(APackage.Directory);
|
||||||
DoBeforeClean(Apackage);
|
DoBeforeClean(Apackage);
|
||||||
List:=TStringList.Create;
|
if AllTargets then
|
||||||
try
|
begin
|
||||||
List.Add(APackage.GetUnitsOutputDir(Defaults.CPU,Defaults.OS) + PathDelim + UnitConfigFile);
|
for ACPU:=low(TCpu) to high(TCpu) do
|
||||||
APackage.GetCleanFiles(List,Defaults.CPU,Defaults.OS);
|
for AOS:=low(TOS) to high(TOS) do
|
||||||
if (List.Count>0) then
|
begin
|
||||||
begin
|
if FileExists(APackage.GetUnitsOutputDir(ACPU,AOS)) or
|
||||||
CmdDeleteFiles(List);
|
FileExists(APackage.GetBinOutputDir(ACPU,AOS)) then
|
||||||
DirectoryList := TStringList.Create;
|
Clean(APackage,ACPU,AOS);
|
||||||
try
|
end;
|
||||||
GetDirectoriesFromFilelist(List,DirectoryList);
|
end
|
||||||
CmdRemoveDirs(DirectoryList);
|
else
|
||||||
|
Clean(APackage, Defaults.CPU, Defaults.OS);
|
||||||
DirectoryList.Clear;
|
|
||||||
if DirectoryExists(APackage.GetBinOutputDir(Defaults.CPU,Defaults.OS)) then
|
|
||||||
DirectoryList.Add(APackage.GetBinOutputDir(Defaults.CPU,Defaults.OS));
|
|
||||||
if DirectoryExists(APackage.GetUnitsOutputDir(Defaults.CPU,Defaults.OS)) then
|
|
||||||
DirectoryList.Add(APackage.GetUnitsOutputDir(Defaults.CPU,Defaults.OS));
|
|
||||||
CmdRemoveDirs(DirectoryList);
|
|
||||||
|
|
||||||
DirectoryList.Clear;
|
|
||||||
if DirectoryExists(ExtractFileDir(APackage.GetBinOutputDir(Defaults.CPU,Defaults.OS))) then
|
|
||||||
DirectoryList.Add(ExtractFileDir(APackage.GetBinOutputDir(Defaults.CPU,Defaults.OS)));
|
|
||||||
if DirectoryExists(ExtractFileDir(APackage.GetUnitsOutputDir(Defaults.CPU,Defaults.OS))) then
|
|
||||||
DirectoryList.Add(ExtractFileDir(APackage.GetUnitsOutputDir(Defaults.CPU,Defaults.OS)));
|
|
||||||
CmdRemoveDirs(DirectoryList);
|
|
||||||
finally
|
|
||||||
DirectoryList.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
Finally
|
|
||||||
List.Free;
|
|
||||||
end;
|
|
||||||
DoAfterClean(Apackage);
|
DoAfterClean(Apackage);
|
||||||
Finally
|
Finally
|
||||||
If (APackage.Directory<>'') then
|
If (APackage.Directory<>'') then
|
||||||
@ -5029,6 +5013,45 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TBuildEngine.Clean(APackage: TPackage; ACPU: TCPU; AOS: TOS);
|
||||||
|
Var
|
||||||
|
List : TStringList;
|
||||||
|
DirectoryList : TStringList;
|
||||||
|
begin
|
||||||
|
List:=TStringList.Create;
|
||||||
|
try
|
||||||
|
List.Add(APackage.GetUnitsOutputDir(ACPU,AOS) + PathDelim + UnitConfigFile);
|
||||||
|
APackage.GetCleanFiles(List,ACPU,AOS);
|
||||||
|
if (List.Count>0) then
|
||||||
|
begin
|
||||||
|
CmdDeleteFiles(List);
|
||||||
|
DirectoryList := TStringList.Create;
|
||||||
|
try
|
||||||
|
GetDirectoriesFromFilelist(List,DirectoryList);
|
||||||
|
CmdRemoveDirs(DirectoryList);
|
||||||
|
|
||||||
|
DirectoryList.Clear;
|
||||||
|
if DirectoryExists(APackage.GetBinOutputDir(ACPU,AOS)) then
|
||||||
|
DirectoryList.Add(APackage.GetBinOutputDir(ACPU,AOS));
|
||||||
|
if DirectoryExists(APackage.GetUnitsOutputDir(ACPU,AOS)) then
|
||||||
|
DirectoryList.Add(APackage.GetUnitsOutputDir(ACPU,AOS));
|
||||||
|
CmdRemoveDirs(DirectoryList);
|
||||||
|
|
||||||
|
DirectoryList.Clear;
|
||||||
|
if DirectoryExists(ExtractFileDir(APackage.GetBinOutputDir(ACPU,AOS))) then
|
||||||
|
DirectoryList.Add(ExtractFileDir(APackage.GetBinOutputDir(ACPU,AOS)));
|
||||||
|
if DirectoryExists(ExtractFileDir(APackage.GetUnitsOutputDir(ACPU,AOS))) then
|
||||||
|
DirectoryList.Add(ExtractFileDir(APackage.GetUnitsOutputDir(ACPU,AOS)));
|
||||||
|
CmdRemoveDirs(DirectoryList);
|
||||||
|
finally
|
||||||
|
DirectoryList.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Finally
|
||||||
|
List.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
Procedure TBuildEngine.Manifest(APackage : TPackage);
|
Procedure TBuildEngine.Manifest(APackage : TPackage);
|
||||||
Var
|
Var
|
||||||
@ -5132,7 +5155,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TBuildEngine.Clean(Packages: TPackages);
|
procedure TBuildEngine.Clean(Packages: TPackages; AllTargets: boolean);
|
||||||
Var
|
Var
|
||||||
I : Integer;
|
I : Integer;
|
||||||
P : TPackage;
|
P : TPackage;
|
||||||
@ -5144,7 +5167,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
P:=Packages.PackageItems[i];
|
P:=Packages.PackageItems[i];
|
||||||
If PackageOK(P) then
|
If PackageOK(P) then
|
||||||
Clean(P);
|
Clean(P, AllTargets);
|
||||||
log(vlWarning, SWarnCleanPackagecomplete, [P.Name]);
|
log(vlWarning, SWarnCleanPackagecomplete, [P.Name]);
|
||||||
end;
|
end;
|
||||||
If Assigned(AfterClean) then
|
If Assigned(AfterClean) then
|
||||||
|
Loading…
Reference in New Issue
Block a user