home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / vp21beta.zip / LRTLSRC.RAR / LINKLNX / LINKLNX.PAS
Pascal/Delphi Source File  |  2000-08-15  |  2KB  |  81 lines

  1. {█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█}
  2. {█                                                       █}
  3. {█      Virtual Pascal for Linux                         █}
  4. {█      Wrapper for Watcom 11.x linker                   █}
  5. {█      ─────────────────────────────────────────────────█}
  6. {█      Copyright (C) 1999 Joerg Pleumann                █}
  7. {█                                                       █}
  8. {▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀}
  9.  
  10. program LinkLnx;
  11.  
  12. {$H+}
  13.  
  14. uses
  15.   SysUtils, Dos;
  16.  
  17. function Split(var S: string; Separator: Char): string;
  18. var
  19.   P: Integer;
  20. begin
  21.   P := Pos(Separator, S);
  22.   if P = 0 then
  23.   begin
  24.     Result := S;
  25.     S := '';
  26.   end
  27.   else
  28.   begin
  29.     Result := Copy(S, 1, P - 1);
  30.     Delete(S, 1, P);
  31.   end;
  32. end;
  33.  
  34. function Replace(const S: string; OldChar, NewChar: Char): string;
  35. var
  36.   I: Integer;
  37. begin
  38.   Result := S;
  39.   for I := 1 to Length(Result) do
  40.     if Result[I] = OldChar then Result[I] := NewChar;
  41. end;
  42.  
  43. var
  44.   BaseDir, InFile, OutFile, Arguments, Line: string;
  45.   Stream: Text;
  46.  
  47. begin
  48.   BaseDir := ExtractFileDir(ExpandFileName(ParamStr(0)));
  49.   InFile := Copy(ParamStr(1), 2, Length(ParamStr(1)) - 2);
  50.   OutFile := ChangeFileExt(InFile, '.wat');
  51.  
  52.   Assign(Stream, InFile);
  53.   Reset(Stream);
  54.  
  55.   while not EOF(Stream) do
  56.   begin
  57.     ReadLn(Stream, Line);
  58.     Arguments := Arguments + Line;
  59.   end;
  60.  
  61.   Close(Stream);
  62.  
  63.   Assign(Stream, OutFile);
  64.   Rewrite(Stream);
  65.  
  66.   WriteLn(Stream, 'file ', Replace(Split(Arguments, ','), '+', ','));
  67.   WriteLn(Stream, 'name ', Split(Arguments, ','), '');
  68.   WriteLn(Stream, 'option map=', Split(Arguments, ','));
  69.   WriteLn(Stream, 'library ', Replace(Split(Arguments, ','), '+', ','));
  70.  
  71.   WriteLn(Stream, 'format elf');
  72.   WriteLn(Stream, 'option undefsok');
  73.   WriteLn(Stream, 'libpath ', BaseDir, '\..\lib.w32');
  74.  
  75.   Close(Stream);
  76.  
  77.   WriteLn('[Linker=', BaseDir + '\wlink.exe @' + OutFile + ']');
  78.   Exec(BaseDir + '\wlink.exe', '@' + OutFile);
  79.   WriteLn('[DosError=', DosError, ', DosExitCode=', DosExitCode, ']');
  80. end.
  81.