Ver Fonte

+ support for -Xp to path the compiler executables to fpc

git-svn-id: trunk@5040 -
florian há 19 anos atrás
pai
commit
edf01e4460
2 ficheiros alterados com 18 adições e 4 exclusões
  1. 1 0
      compiler/options.pas
  2. 17 4
      compiler/utils/fpc.pp

+ 1 - 0
compiler/options.pas

@@ -1258,6 +1258,7 @@ begin
                         else
                           include(initglobalswitches,cs_link_map);
                       end;
+                    'p' : ; { Ignore used by fpc.pp }
                     'r' :
                       begin
                         rlinkpath:=Copy(more,2,length(More)-1);

+ 17 - 4
compiler/utils/fpc.pp

@@ -71,6 +71,9 @@ program fpc;
       findclose(Info);
     end;
 
+  var
+    extrapath : ansistring;
+
   function findexe(var ppcbin:string): boolean;
     var
       path : string;
@@ -79,9 +82,16 @@ program fpc;
       findexe:=false;
       ppcbin:=ppcbin+exeext;
 
+      if (extrapath<>'') and (extrapath[length(extrapath)]<>DirectorySeparator) then
+        extrapath:=extrapath+DirectorySeparator;
       { get path of fpc.exe }
       path:=splitpath(paramstr(0));
-      if FileExists(path+ppcbin) then
+      if FileExists(extrapath+ppcbin) then
+       begin
+         ppcbin:=extrapath+ppcbin;
+         findexe:=true;
+       end
+      else if FileExists(path+ppcbin) then
        begin
          ppcbin:=path+ppcbin;
          findexe:=true;
@@ -111,6 +121,7 @@ program fpc;
      ppccommandline:='';
      cpusuffix     :='';        // if not empty, signals attempt at cross
                                 // compiler.
+     extrapath     :='';
 {$ifdef i386}
      ppcbin:='ppc386';
      processorname:='i386';
@@ -204,8 +215,10 @@ program fpc;
                            ppcbin:='ppcross'+cpusuffix;
                          end;
                  end
-                   else
-                     ppccommandline:=ppccommandline+s+' ';
+              else if pos('-Xp',s)=1 then
+                extrapath:=copy(s,4,length(s)-3)
+              else
+                ppccommandline:=ppccommandline+s+' ';
             end;
        end;
 
@@ -233,4 +246,4 @@ program fpc;
      if errorvalue<>0 then
        error(ppcbin+' returned an error exitcode (normal if you did not specify a source file to be compiled)');
      halt(errorvalue);
-  end.
+  end.