diff options
Diffstat (limited to 'compiler/utils/fpimpdef.pp')
-rw-r--r-- | compiler/utils/fpimpdef.pp | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/compiler/utils/fpimpdef.pp b/compiler/utils/fpimpdef.pp new file mode 100644 index 0000000000..323cb3be95 --- /dev/null +++ b/compiler/utils/fpimpdef.pp @@ -0,0 +1,98 @@ +{$APPTYPE CONSOLE} +program FPimpdef; +{$DEFINE STANDALONE} +{$IFNDEF FPC} +uses + dmisc, + ImpDef; +{$ELSE} +uses + DOS, + ImpDef; +{$ENDIF} +var +binname:string; +function Ofound(const short,full:string):longint; +var + i:longint; +begin + Ofound:=-1; + for i:=1 to ParamCount do + if(paramstr(i)=short)or(paramstr(i)=full)then + begin + Ofound:=i; + exit; + end; +end; +function GetOption(const short,full:string):string; +var + i:longint; +begin + i:=Ofound(short,full); + if i>0 then + GetOption:=paramstr(succ(i)) + else + GetOption:=''; +end; +procedure help_info; +var + fn:string[255]; + jj:cardinal; +begin + fn:=paramstr(0); + for jj:=length(fn)downto 1 do + if fn[jj] in [':','\','/']then + begin + fn:=copy(fn,succ(jj),255); + break; + end; + writeln('Usage: ',fn,' [options]'); + writeln('Options:'); + writeln('-i | --input <file> - set input file;'); + writeln('-o | --output <file> - set output .def file'); + writeln('-l | --library <file> - set output static library'); + writeln('-s | --assembler <name> - use <name> for assembler (default asw)'); + writeln('-r | --archiver <name> - use <name> for archiver (default arw)'); + writeln('-h | --help - show this screen'); + halt; +end; +{$ifndef UNIX} +procedure AddExt(var s:string); + var + s1:string; + i:longint; + begin + s1:=copy(s,length(s)-3,4); + for i:=1 to length(s1)do + s1[i]:=upcase(s1[i]); + if s1<>'.EXE'then + s:=s+'.EXE'; + end; +{$endif} +var + EnvPath:string; +begin +binname:=GetOption('-i','--input'); +if(binname='')or(Ofound('-h','--help')>0)then + help_info; + as_name:=GetOption('-s','--assembler'); + if as_name='' then + as_name:='as'; + ar_name:=GetOption('-r','--archiver'); + if ar_name='' then + ar_name:='ar'; +{$ifndef UNIX} + AddExt(as_name); + AddExt(ar_name); +{$endif} + EnvPath:=GetEnv('Path'); + if EnvPath='' then + EnvPath:=GetEnv('PATH'); + as_name:=FSearch(as_name,EnvPath); + ar_name:=FSearch(ar_name,EnvPath); +if not makedef(binname,GetOption('-o','--output'),GetOption('-l','--library'))then + begin + writeln('Export names not found'); + halt(1); + end; +end. |