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