2
0

fpimpdef.pp 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. {$APPTYPE CONSOLE}
  2. program FPimpdef;
  3. {$DEFINE STANDALONE}
  4. {$IFNDEF FPC}
  5. uses
  6. dmisc,
  7. ImpDef;
  8. {$ELSE}
  9. uses
  10. DOS,
  11. ImpDef;
  12. {$ENDIF}
  13. var
  14. binname:string;
  15. function Ofound(const short,full:string):longint;
  16. var
  17. i:longint;
  18. begin
  19. Ofound:=-1;
  20. for i:=1 to ParamCount do
  21. if(paramstr(i)=short)or(paramstr(i)=full)then
  22. begin
  23. Ofound:=i;
  24. exit;
  25. end;
  26. end;
  27. function GetOption(const short,full:string):string;
  28. var
  29. i:longint;
  30. begin
  31. i:=Ofound(short,full);
  32. if i>0 then
  33. GetOption:=paramstr(succ(i))
  34. else
  35. GetOption:='';
  36. end;
  37. procedure help_info;
  38. var
  39. fn:string[255];
  40. jj:cardinal;
  41. begin
  42. fn:=paramstr(0);
  43. for jj:=length(fn)downto 1 do
  44. if fn[jj] in [':','\','/']then
  45. begin
  46. fn:=copy(fn,succ(jj),255);
  47. break;
  48. end;
  49. writeln('Usage: ',fn,' [options]');
  50. writeln('Options:');
  51. writeln('-i | --input <file> - set input file;');
  52. writeln('-o | --output <file> - set output .def file');
  53. writeln('-l | --library <file> - set output static library');
  54. writeln('-s | --assembler <name> - use <name> for assembler (default asw)');
  55. writeln('-r | --archiver <name> - use <name> for archiver (default arw)');
  56. writeln('-h | --help - show this screen');
  57. halt;
  58. end;
  59. {$ifndef UNIX}
  60. procedure AddExt(var s:string);
  61. var
  62. s1:string;
  63. i:longint;
  64. begin
  65. s1:=copy(s,length(s)-3,4);
  66. for i:=1 to length(s1)do
  67. s1[i]:=upcase(s1[i]);
  68. if s1<>'.EXE'then
  69. s:=s+'.EXE';
  70. end;
  71. {$endif}
  72. var
  73. EnvPath:string;
  74. begin
  75. binname:=GetOption('-i','--input');
  76. if(binname='')or(Ofound('-h','--help')>0)then
  77. help_info;
  78. asw_name:=GetOption('-s','--assembler');
  79. if asw_name='' then
  80. asw_name:='asw';
  81. arw_name:=GetOption('-r','--archiver');
  82. if arw_name='' then
  83. arw_name:='arw';
  84. {$ifndef UNIX}
  85. AddExt(asw_name);
  86. AddExt(arw_name);
  87. {$endif}
  88. EnvPath:=GetEnv('Path');
  89. if EnvPath='' then
  90. EnvPath:=GetEnv('PATH');
  91. asw_name:=FSearch(asw_name,EnvPath);
  92. arw_name:=FSearch(arw_name,EnvPath);
  93. if not makedef(binname,GetOption('-o','--output'),GetOption('-l','--library'))then
  94. begin
  95. writeln('Export names not found');
  96. halt(1);
  97. end;
  98. end.