Browse Source

+ added CustomArg

pierre 26 years ago
parent
commit
9b20ad8b3e
1 changed files with 55 additions and 23 deletions
  1. 55 23
      ide/text/fpswitch.pas

+ 55 - 23
ide/text/fpswitch.pas

@@ -113,7 +113,9 @@ const
       ('~N~ormal','~D~ebug','~R~elease');
     SwitchesModeStr : array[TSwitchMode] of string[8]=
       ('NORMAL','DEBUG','RELEASE');
-
+    CustomArg : array[TSwitchMode] of string=
+      ('','','');
+      
 var
     LibLinkerSwitches,
     DebugInfoSwitches,
@@ -480,6 +482,24 @@ begin
     Items^.ForEach(@writeitem);
 end;
 
+procedure WriteCustom;
+var
+  s : string;
+  i : longint;
+begin
+  s:=CustomArg[SwitchesMode];
+  While s<>'' do
+    begin
+       i:=pos(' ',s);
+       if i=0 then i:=256;
+       writeln(CfgFile,' '+Copy(s,1,i-1));
+       if i=256 then
+         s:=''
+       else
+         s:=copy(s,i+1,255);
+    end;
+end;
+
 
 function TSwitches.ReadItemsCfg(const s:string):boolean;
 
@@ -551,6 +571,7 @@ begin
      DebugInfoSwitches^.WriteItemsCfg;
      ProfileInfoSwitches^.WriteItemsCfg;
      MemorySizeSwitches^.WriteItemsCfg;
+     WriteCustom;
      Writeln(CfgFile,'#ENDIF');
      Writeln(CfgFile,'');
    end;
@@ -563,6 +584,7 @@ procedure ReadSwitches(const fn:string);
 var
   c : char;
   s : string;
+  res : boolean;
   OldSwitchesMode,i : TSwitchMode;
 begin
   assign(CfgFile,fn);
@@ -580,39 +602,46 @@ begin
      if (length(s)>=2) and (s[1]='-') then
       begin
       c:=s[2];
+      res:=false;
       Delete(s,1,2);
       case c of
-       'd' : ConditionalSwitches^.ReadItemsCfg(s);
-       'X' : LibLinkerSwitches^.ReadItemsCfg(s);
-       'g' : DebugInfoSwitches^.ReadItemsCfg(s);
-       'p' : ProfileInfoSwitches^.ReadItemsCfg(s);
-       'S' : SyntaxSwitches^.ReadItemsCfg(s);
-       'F' : DirectorySwitches^.ReadItemsCfg(s);
-       'T' : TargetSwitches^.ReadItemsCfg(s);
-       'R' : AsmReaderSwitches^.ReadItemsCfg(s);
+       'd' : res:=ConditionalSwitches^.ReadItemsCfg(s);
+       'X' : res:=LibLinkerSwitches^.ReadItemsCfg(s);
+       'g' : res:=DebugInfoSwitches^.ReadItemsCfg(s);
+       'p' : res:=ProfileInfoSwitches^.ReadItemsCfg(s);
+       'S' : res:=SyntaxSwitches^.ReadItemsCfg(s);
+       'F' : res:=DirectorySwitches^.ReadItemsCfg(s);
+       'T' : res:=TargetSwitches^.ReadItemsCfg(s);
+       'R' : res:=AsmReaderSwitches^.ReadItemsCfg(s);
        'C' : begin
-               CodegenSwitches^.ReadItemsCfg(s);
-               MemorySizeSwitches^.ReadItemsCfg(s);
+               res:=CodegenSwitches^.ReadItemsCfg(s);
+               if not res then
+                 res:=MemorySizeSwitches^.ReadItemsCfg(s);
              end;
-       'v' : VerboseSwitches^.ReadItemsCfg(s);
+       'v' : res:=VerboseSwitches^.ReadItemsCfg(s);
        'O' : begin
+               res:=true;
                if not OptimizationSwitches^.ReadItemsCfg(s) then
                  if not ProcessorSwitches^.ReadItemsCfg(s) then
-                   OptimizingGoalSwitches^.ReadItemsCfg(s)
+                   res:=OptimizingGoalSwitches^.ReadItemsCfg(s)
              end;
-      end;
+       end;
+      { keep all others as a string }
+      if not res then
+       CustomArg[SwitchesMode]:=CustomArg[SwitchesMode]+' -'+c+s;
       end
      else
       if (Copy(s,1,7)='#IFDEF ') then
        begin
-    Delete(s,1,7);
-    for i:=low(TSwitchMode) to high(TSwitchMode) do
-     if s=SwitchesModeStr[i] then
-      begin
-        SwitchesMode:=i;
-        break;
-      end;
-       end;
+         Delete(s,1,7);
+         for i:=low(TSwitchMode) to high(TSwitchMode) do
+         if s=SwitchesModeStr[i] then
+           begin
+             SwitchesMode:=i;
+             break;
+           end;
+       end
+      else;
    end;
   close(CfgFile);
   SwitchesMode:=OldSwitchesMode;
@@ -793,7 +822,10 @@ end;
 end.
 {
   $Log$
-  Revision 1.7  1999-02-06 00:07:48  florian
+  Revision 1.8  1999-02-08 17:38:52  pierre
+   + added CustomArg
+
+  Revision 1.7  1999/02/06 00:07:48  florian
     * speed/size optimization is now a radio button
 
   Revision 1.6  1999/02/05 13:51:44  peter