mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-11-04 16:59:45 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			112 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
{
 | 
						|
    This file is part of the Free Pascal run time library.
 | 
						|
    Copyright (c) 2007 by Pierre Muller
 | 
						|
    member of the Free Pascal development team.
 | 
						|
 | 
						|
    Dummy assembler program to be able to easily test
 | 
						|
    all FPC targets even without cross tools.
 | 
						|
 | 
						|
    See the file COPYING.FPC, included in this distribution,
 | 
						|
    for details about the copyright.
 | 
						|
 | 
						|
    This program is distributed in the hope that it will be useful,
 | 
						|
    but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | 
						|
 | 
						|
 **********************************************************************}
 | 
						|
 | 
						|
program dummyas;
 | 
						|
 | 
						|
var
 | 
						|
  assembler_name : string;
 | 
						|
  object_name : string;
 | 
						|
  ofile : text;
 | 
						|
 | 
						|
function RemoveSuffix(const st : string) : string;
 | 
						|
var
 | 
						|
  i,last : longint;
 | 
						|
begin
 | 
						|
  last:=length(st);
 | 
						|
  for i:=length(st) downto 1 do
 | 
						|
    begin
 | 
						|
      if st[i]='.' then
 | 
						|
        begin
 | 
						|
          last:=i-1;
 | 
						|
          break;
 | 
						|
        end;
 | 
						|
    end;
 | 
						|
  RemoveSuffix:=Copy(st,1,last);
 | 
						|
end;
 | 
						|
 | 
						|
var
 | 
						|
  i : longint;
 | 
						|
  param : string;
 | 
						|
  skipnext : boolean;
 | 
						|
begin
 | 
						|
  object_name:='';
 | 
						|
  skipnext:=false;
 | 
						|
  for i:=1 to ParamCount do
 | 
						|
    begin
 | 
						|
      param:=Paramstr(i);
 | 
						|
      if skipnext or (length(Param)=0) then
 | 
						|
        begin
 | 
						|
          skipnext:=false;
 | 
						|
          continue;
 | 
						|
        end;
 | 
						|
      if Param='-o' then
 | 
						|
        begin
 | 
						|
          skipnext:=true;
 | 
						|
          object_name:=ParamStr(i+1);
 | 
						|
        end
 | 
						|
      else if (Param[1]='-') then
 | 
						|
        begin
 | 
						|
          { option Param not handled }
 | 
						|
          { Shouldn't be a real problem }
 | 
						|
        end
 | 
						|
      else
 | 
						|
        begin
 | 
						|
          if assembler_name='' then
 | 
						|
            assembler_name:=ParamStr(i)
 | 
						|
          else
 | 
						|
            begin
 | 
						|
              Writeln(stderr,'two non option param found!');
 | 
						|
              Writeln(stderr,'first non option param =',assembler_name);
 | 
						|
              Writeln(stderr,'second non option param =',Param);
 | 
						|
              Writeln(stderr,'Don''t know how to handle this!');
 | 
						|
              halt(1);
 | 
						|
            end;
 | 
						|
        end;
 | 
						|
    end;
 | 
						|
 | 
						|
  if assembler_name='' then
 | 
						|
    begin
 | 
						|
      Writeln(stderr,'Dummyas, no source file specified');
 | 
						|
      halt(1);
 | 
						|
    end;
 | 
						|
  Assign(ofile,assembler_name);
 | 
						|
{$I-}
 | 
						|
  Reset(ofile);
 | 
						|
  if IOResult<>0 then
 | 
						|
    begin
 | 
						|
      Writeln(stderr,'Dummyas, source file not found ',assembler_name);
 | 
						|
      halt(1);
 | 
						|
    end;
 | 
						|
  Close(ofile);
 | 
						|
  if object_name='' then
 | 
						|
    object_name:=RemoveSuffix(assembler_name)+'.o';
 | 
						|
  Assign(ofile,object_name);
 | 
						|
  Rewrite(ofile);
 | 
						|
  if IOResult<>0 then
 | 
						|
    begin
 | 
						|
      Writeln(stderr,'Dummyas, object file not writable ',object_name);
 | 
						|
      halt(1);
 | 
						|
    end;
 | 
						|
  Writeln(ofile,'Dummy as called');
 | 
						|
  for i:=0 to Paramcount do
 | 
						|
    Write(ofile,ParamStr(i),' ');
 | 
						|
  Writeln(ofile);
 | 
						|
  Writeln(ofile,'assembler file=',assembler_name);
 | 
						|
  Writeln(ofile,'object file=',object_name);
 | 
						|
  Close(ofile);
 | 
						|
end.
 |