diff options
| author | joost <joost@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2010-04-15 20:00:18 +0000 |
|---|---|---|
| committer | joost <joost@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2010-04-15 20:00:18 +0000 |
| commit | 760ba5847365999ebd16af130d4572cefda6ac0b (patch) | |
| tree | 82f8fb58654e3dc5e92d80cbd9cf5c907e1afcff /packages/fpmkunit | |
| parent | e2182124c5d48d6d6cd070046db5688e7780fa9d (diff) | |
| download | fpc-760ba5847365999ebd16af130d4572cefda6ac0b.tar.gz | |
* Write 'Done' when compiling succeeded
* Add the package-path of a dependency to the command line also when it was
not necessary to compile the dependency
* Show a warning when a dependency on a package is added to a target, because
such dependencies are ignored
* When a package is not available for a platform, but nevertheless a
dependency on it is added, give a warning and ignore the package
* When a package is already processed for an earlier dependency, do not fail
but give a notice
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@15147 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/fpmkunit')
| -rw-r--r-- | packages/fpmkunit/src/fpmkunit.pp | 37 |
1 files changed, 29 insertions, 8 deletions
diff --git a/packages/fpmkunit/src/fpmkunit.pp b/packages/fpmkunit/src/fpmkunit.pp index f3a2bc006f..f2e3717685 100644 --- a/packages/fpmkunit/src/fpmkunit.pp +++ b/packages/fpmkunit/src/fpmkunit.pp @@ -991,8 +991,12 @@ ResourceString SWarnSourceFileNotFound = 'Warning: Source file "%s" from package %s not found for %s'; SWarnIncludeFileNotFound = 'Warning: Include file "%s" from package %s not found for %s'; SWarnDepUnitNotFound = 'Warning: Dependency on unit %s is not supported for %s'; + SWarnTargetDependsOnPackage = 'Warning: Target %s of package %s depends on another package (%s). These kind of dependencies are not processed'; + SWarnDependOnOtherPlatformPackage = 'Warning: Package %s depends on package %s which is not available for the %s platform'; + SWarnDone = 'Done'; SInfoCompilingPackage = 'Compiling package %s'; + SInfoPackageAlreadyProcessed = 'Package %s is already processed'; SInfoCompilingTarget = 'Compiling target %s'; SInfoExecutingCommand = 'Executing command "%s %s"'; SInfoCreatingOutputDir = 'Creating output dir "%s"'; @@ -2931,6 +2935,7 @@ procedure TCustomInstaller.Compile(Force: Boolean); begin FBuildEngine.ForceCompile:=Force; FBuildEngine.Compile(FPackages); + Log(vlWarning,SWarnDone); end; @@ -3528,7 +3533,7 @@ begin // - LocalUnitDir // - GlobalUnitDir if (APackage.UnitDir='') and - (APackage.State=tsCompiled) then + (APackage.State in [tsCompiled, tsNoCompile]) then begin APackage.UnitDir:=IncludeTrailingPathDelimiter(FStartDir)+IncludeTrailingPathDelimiter(APackage.Directory)+APackage.GetUnitsOutputDir(Defaults.CPU,Defaults.OS); end; @@ -3825,6 +3830,10 @@ begin if D.TargetFileName<>'' then Result:=FileNewer(D.TargetFileName,OFN) end; + depPackage : + begin + log(vlWarning,SWarnTargetDependsOnPackage,[ATarget.Name, APackage.Name, d.Value]); + end; end; if result then break; @@ -3866,7 +3875,9 @@ begin For I:=0 to ATarget.Dependencies.Count-1 do begin D:=ATarget.Dependencies[i]; - if (D.DependencyType=depUnit) and + if (D.DependencyType=depPackage) then + log(vlWarning,SWarnTargetDependsOnPackage,[ATarget.Name, APackage.Name, d.Value]) + else if (D.DependencyType=depUnit) and (Defaults.CPU in D.CPUs) and (Defaults.OS in D.OSes) then begin T:=TTarget(D.Target); @@ -4024,12 +4035,17 @@ begin P:=TPackage(D.Target); If Assigned(P) then begin - case P.State of - tsNeutral : - MaybeCompile(P); - tsConsidering : - Log(vlWarning,SWarnCircularPackageDependency,[APackage.Name,P.Name]); - end; + if (Defaults.CPU in P.CPUs) and (Defaults.OS in P.OSes) then + begin + case P.State of + tsNeutral : + MaybeCompile(P); + tsConsidering : + Log(vlWarning,SWarnCircularPackageDependency,[APackage.Name,P.Name]); + end; + end + else + Log(vlWarning,SWarnDependOnOtherPlatformPackage,[APackage.Name, D.Value, MakeTargetString(Defaults.CPU, Defaults.OS)]); end else begin @@ -4089,6 +4105,11 @@ end; procedure TBuildEngine.MaybeCompile(APackage: TPackage); begin + if APackage.State in [tsCompiled, tsNoCompile] then + begin + Log(vlInfo,SInfoPackageAlreadyProcessed,[APackage.Name]); + Exit; + end; if APackage.State<>tsNeutral then Error(SErrInvalidState,[APackage.Name]); Log(vlDebug,SDbgConsideringPackage,[APackage.Name]); |
