summaryrefslogtreecommitdiff
path: root/packages/fpmkunit/src
diff options
context:
space:
mode:
authorflorian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2>2011-04-10 19:20:48 +0000
committerflorian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2>2011-04-10 19:20:48 +0000
commit160cc1e115eeb75638dce6effdd16b2bc810ddb4 (patch)
treeb791a95695a7cf674e61a6153139c6f9c6c491fa /packages/fpmkunit/src
parent3843727e74b31bbf2a34e7e3b89ee422269f770e (diff)
parent413a6aa6469e6c297780217a27ca91363c637944 (diff)
downloadfpc-160cc1e115eeb75638dce6effdd16b2bc810ddb4.tar.gz
* rebase to trunk@17295avr
git-svn-id: http://svn.freepascal.org/svn/fpc/branches/avr@17296 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/fpmkunit/src')
-rw-r--r--packages/fpmkunit/src/fpmkunit.pp30
1 files changed, 23 insertions, 7 deletions
diff --git a/packages/fpmkunit/src/fpmkunit.pp b/packages/fpmkunit/src/fpmkunit.pp
index 6586444eeb..78ac12c3b3 100644
--- a/packages/fpmkunit/src/fpmkunit.pp
+++ b/packages/fpmkunit/src/fpmkunit.pp
@@ -69,7 +69,7 @@ Type
linux,go32v2,win32,os2,freebsd,beos,netbsd,
amiga,atari, solaris, qnx, netware, openbsd,wdosx,
palmos,macos,darwin,emx,watcom,morphos,netwlibc,
- win64,wince,gba,nds,embedded,symbian
+ win64,wince,gba,nds,embedded,symbian,haiku
);
TOSes = Set of TOS;
@@ -114,7 +114,7 @@ Const
AllOSes = [Low(TOS)..High(TOS)];
AllCPUs = [Low(TCPU)..High(TCPU)];
- AllUnixOSes = [Linux,FreeBSD,NetBSD,OpenBSD,Darwin,QNX,BeOS,Solaris];
+ AllUnixOSes = [Linux,FreeBSD,NetBSD,OpenBSD,Darwin,QNX,BeOS,Solaris,Haiku];
AllBSDOSes = [FreeBSD,NetBSD,OpenBSD,Darwin];
AllWindowsOSes = [Win32,Win64,WinCE];
@@ -148,7 +148,8 @@ Const
{ gba } ( false, false, false, false, false, false, true, false, false, false),
{ nds } ( false, false, false, false, false, false, true, false, false, false),
{ embedded }( false, true, true, true, true, true, true, true, true, true ),
- { symbian } ( false, true, false, false, false, false, true, false, false, false)
+ { symbian } ( false, true, false, false, false, false, true, false, false, false),
+ { haiku } ( false, true, false, false, false, false, false, false, false, false)
);
// Useful
@@ -4462,6 +4463,7 @@ end;
function TBuildEngine.CheckExternalPackage(Const APackageName : String):TPackage;
var
S : String;
+ F : String;
I : Integer;
begin
// Already checked?
@@ -4481,11 +4483,25 @@ begin
Log(vldebug, SDbgExternalDependency, [APackageName,S]);
Result.FTargetState:=tsInstalled;
// Load unit config if it exists
- S:=IncludeTrailingPathDelimiter(S)+UnitConfigFile;
- if FileExists(S) then
+ F:=IncludeTrailingPathDelimiter(S)+UnitConfigFile;
+ if FileExists(F) then
begin
- Log(vlDebug, Format(SDbgLoading, [S]));
- Result.LoadUnitConfigFromFile(S);
+ Log(vlDebug, Format(SDbgLoading, [F]));
+ Result.LoadUnitConfigFromFile(F);
+ end
+ else if FileExists(IncludeTrailingPathDelimiter(S)+FPMakePPFile) then
+ begin
+ // The package is not installed, but the source-path is given.
+ // It is an external package so it is impossible to compile it, so
+ // assume that it has been compiled earlier.
+ F := IncludeTrailingPathDelimiter(Result.UnitDir) + Result.GetUnitsOutputDir(Defaults.CPU,Defaults.OS);
+ // If the unit-directory does not exist, you know for sure that
+ // the package is not compiled
+ if DirectoryExists(F) then
+ begin
+ Result.UnitDir := F;
+ Result.FTargetState:=tsCompiled;
+ end;
end;
// Check recursive implicit dependencies
CompileDependencies(Result);