fpmktype.pp 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. {$mode objfpc}
  2. {$h+}
  3. unit fpmktype;
  4. interface
  5. uses sysutils;
  6. Type
  7. TFileType = (ftSource,ftUnit,ftObject,ftResource,ftExecutable,ftStaticLibrary,
  8. ftSharedLibrary);
  9. TFileTypes = set of TFileType;
  10. TOS = (Amiga,Atari,Darwin,FreeBSD,Go32v2,Linux,MacOS,MorphOS,NetBSD,
  11. Netware,NetwLibc,OpenBSD,OS2,PalmOS,Solaris,Win32,Win64,wince,Emx);
  12. TOSes = Set of TOS;
  13. TCPU = (Arm,I386,PPC,SPARC,X86_64,m68k);
  14. TCPUS = Set of TCPU;
  15. TCompilerMode = (FPC,TP,ObjFPC,Delphi,MacPas);
  16. TCompilerModes = Set of TCompilerMode;
  17. TTargetType = (ttUnit,ttProgram,ttExampleUnit,ttExampleProgram);
  18. TTargetTypes = set of TTargetType;
  19. TTargetState = (tsNeutral,tsCompiling,tsCompiled,tsInstalled);
  20. TTargetStates = Set of TTargetState;
  21. TVerboseLevel = (vlError,vlWarning,vlInfo,vlCompare,vlCommand,vldebug);
  22. TVerboseLevels = Set of TVerboseLevel;
  23. TCommandAt = (caBeforeCompile,caAfterCompile,
  24. caBeforeInstall,caAfterInstall,
  25. caBeforeArchive,caAfterArchive,
  26. caBeforeClean,caAfterClean,
  27. caBeforeDownload,caAfterDownload);
  28. TLogEvent = Procedure (Level : TVerboseLevel; Const Msg : String) of Object;
  29. EInstallerError = Class(Exception);
  30. {$i fpmkcnst.inc}
  31. Function OSToString(OS: TOS) : String;
  32. Function OSesToString(OSes: TOSes) : String;
  33. Function CPUToString(CPU: TCPU) : String;
  34. Function CPUSToString(CPUS: TCPUS) : String;
  35. Function StringToOS(S : String) : TOS;
  36. Function OSesToString(S : String) : TOSes;
  37. Function StringToCPU(S : String) : TCPU;
  38. Function StringToCPUS(S : String) : TCPUS;
  39. Function ModeToString(Mode: TCompilerMode) : String;
  40. Function StringToMode(S : String) : TCompilerMode;
  41. Function MakeTargetString(CPU : TCPU;OS: TOS) : String;
  42. Procedure StringToCPUOS(S : String; Var CPU : TCPU; Var OS: TOS);
  43. implementation
  44. uses typinfo;
  45. resourcestring
  46. SErrInvalidCPU = 'Invalid CPU name : "%s"';
  47. SErrInvalidOS = 'Invalid OS name : "%s"';
  48. SErrInvalidMode = 'Invalid compiler mode : "%s"';
  49. SErrInvalidTarget = 'Invalid compiler target: %s';
  50. Function OSToString(OS: TOS) : String;
  51. begin
  52. Result:=LowerCase(GetenumName(TypeInfo(TOS),Ord(OS)));
  53. end;
  54. Function OSesToString(OSes: TOSes) : String;
  55. begin
  56. Result:=LowerCase(SetToString(PtypeInfo(TypeInfo(TOSes)),Integer(OSes),False));
  57. end;
  58. Function CPUToString(CPU: TCPU) : String;
  59. begin
  60. Result:=LowerCase(GetenumName(TypeInfo(TCPU),Ord(CPU)));
  61. end;
  62. Function CPUSToString(CPUS: TCPUS) : String;
  63. begin
  64. Result:=LowerCase(SetToString(PTypeInfo(TypeInfo(TCPUS)),Integer(CPUS),False));
  65. end;
  66. Function StringToOS(S : String) : TOS;
  67. Var
  68. I : Integer;
  69. begin
  70. I:=GetEnumValue(TypeInfo(TOS),S);
  71. if (I=-1) then
  72. Raise EInstallerError.CreateFmt(SErrInvalidOS,[S]);
  73. Result:=TOS(I);
  74. end;
  75. Function OSesToString(S : String) : TOSes;
  76. begin
  77. Result:=TOSes(StringToSet(PTypeInfo(TypeInfo(TOSes)),S));
  78. end;
  79. Function StringToCPU(S : String) : TCPU;
  80. Var
  81. I : Integer;
  82. begin
  83. I:=GetEnumValue(TypeInfo(TCPU),S);
  84. if (I=-1) then
  85. Raise EInstallerError.CreateFmt(SErrInvalidCPU,[S]);
  86. Result:=TCPU(I);
  87. end;
  88. Function StringToCPUS(S : String) : TCPUS;
  89. begin
  90. Result:=TCPUS(StringToSet(PTypeInfo(TypeInfo(TCPUS)),S));
  91. end;
  92. Function ModeToString(Mode: TCompilerMode) : String;
  93. begin
  94. Result:=LowerCase(GetenumName(TypeInfo(TCompilerMode),Ord(Mode)));
  95. end;
  96. Function StringToMode(S : String) : TCompilerMode;
  97. Var
  98. I : Integer;
  99. begin
  100. I:=GetEnumValue(TypeInfo(TCompilerMode),S);
  101. if (I=-1) then
  102. Raise EInstallerError.CreateFmt(SErrInvalidMode,[S]);
  103. Result:=TCompilerMode(I);
  104. end;
  105. Function MakeTargetString(CPU : TCPU;OS: TOS) : String;
  106. begin
  107. Result:=CPUToString(CPU)+'-'+OSToString(OS);
  108. end;
  109. Procedure StringToCPUOS(S : String; Var CPU : TCPU; Var OS: TOS);
  110. Var
  111. P : integer;
  112. begin
  113. P:=Pos('-',S);
  114. If (P=0) then
  115. Raise EInstallerError.CreateFmt(SErrInvalidTarget,[S]);
  116. CPU:=StringToCPU(Copy(S,1,P-1));
  117. OS:=StringToOs(Copy(S,P+1,Length(S)-P));
  118. end;
  119. end.