Browse Source

* remove dependency on fpmktype

git-svn-id: trunk@7530 -
peter 18 years ago
parent
commit
2d28dae41b
5 changed files with 134 additions and 8 deletions
  1. 129 3
      utils/fppkg/fprepos.pp
  2. 1 1
      utils/fppkg/fpxmlrep.pp
  3. 2 2
      utils/fppkg/pkgmkconv.pp
  4. 1 1
      utils/fppkg/pkgoptions.pp
  5. 1 1
      utils/fppkg/reptest.pp

+ 129 - 3
utils/fppkg/fprepos.pp

@@ -19,14 +19,23 @@ interface
 uses
   classes,sysutils,
   contnrs,
-  streamcoll,
-  fpmktype;
+  streamcoll;
 
 Const
   StreamVersion   : Integer = 1;
   StreamSignature = $FEEF;
 
 Type
+  TOS = (osNone,Amiga,Atari,Darwin,FreeBSD,Go32v2,Linux,MacOS,MorphOS,NetBSD,
+         Netware,NetwLibc,OpenBSD,OS2,PalmOS,Solaris,Win32,Win64,WinCE,Emx);
+  TOSes = Set of TOS;
+
+  TCPU = (cpuNone,Arm,I386,PPC,SPARC,X86_64,M68K,PPC64);
+  TCPUS = Set of TCPU;
+
+  TCompilerMode = (cmFPC,cmTP,cmObjFPC,cmDelphi,cmMacPas);
+  TCompilerModes = Set of TCompilerMode;
+
   { TFPVersion }
 
   TFPVersion = Class(TPersistent)
@@ -197,6 +206,20 @@ Const
   // Max level of dependency searching before we decide it's a circular dependency.
   DefaultMaxDependencyLevel = 15;
 
+Function OSToString(OS: TOS) : String;
+Function OSesToString(OSes: TOSes) : String;
+Function CPUToString(CPU: TCPU) : String;
+Function CPUSToString(CPUS: TCPUS) : String;
+Function StringToOS(S : String) : TOS;
+Function OSesToString(S : String) : TOSes;
+Function StringToCPU(S : String) : TCPU;
+Function StringToCPUS(S : String) : TCPUS;
+Function ModeToString(Mode: TCompilerMode) : String;
+Function StringToMode(S : String) : TCompilerMode;
+Function MakeTargetString(CPU : TCPU;OS: TOS) : String;
+Procedure StringToCPUOS(S : String; Var CPU : TCPU; Var OS: TOS);
+
+
 Implementation
 
 uses
@@ -204,7 +227,10 @@ uses
   uriparser;
 
 ResourceString
-
+  SErrInvalidCPU           = 'Invalid CPU name : "%s"';
+  SErrInvalidOS            = 'Invalid OS name : "%s"';
+  SErrInvalidMode          = 'Invalid compiler mode : "%s"';
+  SErrInvalidTarget        = 'Invalid compiler target: %s';
   SErrPackageNotFound      = 'Package "%s" not found.';
   SErrInvalidRepositorySig = 'Invalid repository stream. Stream signature incorrect';
   SErrBackupFailed         = 'Failed to back up file "%s" to "%s".';
@@ -213,6 +239,106 @@ ResourceString
   SErrMaxLevelExceeded     = 'Maximum number of dependency levels exceeded (%d) at package "%s".';
 
 
+Function OSToString(OS: TOS) : String;
+
+begin
+  Result:=LowerCase(GetenumName(TypeInfo(TOS),Ord(OS)));
+end;
+
+Function OSesToString(OSes: TOSes) : String;
+
+begin
+  Result:=LowerCase(SetToString(PtypeInfo(TypeInfo(TOSes)),Integer(OSes),False));
+end;
+
+Function CPUToString(CPU: TCPU) : String;
+
+begin
+  Result:=LowerCase(GetenumName(TypeInfo(TCPU),Ord(CPU)));
+end;
+
+Function CPUSToString(CPUS: TCPUS) : String;
+
+begin
+  Result:=LowerCase(SetToString(PTypeInfo(TypeInfo(TCPUS)),Integer(CPUS),False));
+end;
+
+Function StringToOS(S : String) : TOS;
+
+Var
+  I : Integer;
+
+begin
+  I:=GetEnumValue(TypeInfo(TOS),S);
+  if (I=-1) then
+    Raise EPackage.CreateFmt(SErrInvalidOS,[S]);
+  Result:=TOS(I);
+end;
+
+
+Function OSesToString(S : String) : TOSes;
+
+begin
+  Result:=TOSes(StringToSet(PTypeInfo(TypeInfo(TOSes)),S));
+end;
+
+Function StringToCPU(S : String) : TCPU;
+
+Var
+  I : Integer;
+
+begin
+  I:=GetEnumValue(TypeInfo(TCPU),S);
+  if (I=-1) then
+    Raise EPackage.CreateFmt(SErrInvalidCPU,[S]);
+  Result:=TCPU(I);
+end;
+
+Function StringToCPUS(S : String) : TCPUS;
+
+begin
+  Result:=TCPUS(StringToSet(PTypeInfo(TypeInfo(TCPUS)),S));
+end;
+
+Function ModeToString(Mode: TCompilerMode) : String;
+
+begin
+  Result:=LowerCase(GetenumName(TypeInfo(TCompilerMode),Ord(Mode)));
+end;
+
+Function StringToMode(S : String) : TCompilerMode;
+
+Var
+  I : Integer;
+
+begin
+  I:=GetEnumValue(TypeInfo(TCompilerMode),S);
+  if (I=-1) then
+    Raise EPackage.CreateFmt(SErrInvalidMode,[S]);
+  Result:=TCompilerMode(I);
+end;
+
+
+Function MakeTargetString(CPU : TCPU;OS: TOS) : String;
+
+begin
+  Result:=CPUToString(CPU)+'-'+OSToString(OS);
+end;
+
+Procedure StringToCPUOS(S : String; Var CPU : TCPU; Var OS: TOS);
+
+Var
+  P : integer;
+
+begin
+  P:=Pos('-',S);
+  If (P=0) then
+    Raise EPackage.CreateFmt(SErrInvalidTarget,[S]);
+  CPU:=StringToCPU(Copy(S,1,P-1));
+  OS:=StringToOs(Copy(S,P+1,Length(S)-P));
+end;
+
+
 { TFPVersion }
 
 function TFPVersion.GetAsString: String;

+ 1 - 1
utils/fppkg/fpxmlrep.pp

@@ -17,7 +17,7 @@ unit fpxmlrep;
 interface
 
 uses
-  Classes, SysUtils, dom, fprepos, fpmktype;
+  Classes, SysUtils, dom, fprepos;
 
 Type
 

+ 2 - 2
utils/fppkg/pkgmkconv.pp

@@ -77,7 +77,7 @@ end;
 Function IsCPU (S: String) : Boolean;
 
 begin
-  Result:=Pos(lowercase(S)+',','i386,powerpc,arm,alpha,sparc,')<>0
+  Result:=Pos(lowercase(S)+',','i386,powerpc,arm,alpha,sparc,x86_64,powerpc64,')<>0
 end;
 
 Function GetOSCPU(L : String; var OS,CPU : String) : String;
@@ -123,7 +123,7 @@ begin
     Add('');
     Add(' { Generated automatically by '+ExtractFileName(Paramstr(0))+' on '+DateToStr(Sysutils.Date)+' }');
     Add('');
-    Add('uses fpmktype,fpmkunit;');
+    Add('uses fpmkunit;');
     Add('');
     Add('Var');
     Add('  T : TTarget;');

+ 1 - 1
utils/fppkg/pkgoptions.pp

@@ -16,7 +16,7 @@ unit pkgoptions;
 
 interface
 
-uses Classes, Sysutils, Inifiles, fpmktype;
+uses Classes, Sysutils, Inifiles, fprepos;
 
 Const
   DefaultManifestFile      = 'manifest.xml';

+ 1 - 1
utils/fppkg/reptest.pp

@@ -17,7 +17,7 @@ unit reptest;
 interface
 
 uses
-  Classes, SysUtils, fprepos, fpmktype;
+  Classes, SysUtils, fprepos;
 
 // Num restricted to 1 2 3. 4 will create package with unsatisfied dependency.
 Function CreateTestRep(Num : Integer) : TFPRepository;