fpimpdef.pp 2.0 KB

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