瀏覽代碼

* Do not sort the order of the unit, include and object path

git-svn-id: trunk@15260 -
joost 15 年之前
父節點
當前提交
79fc8fc460
共有 1 個文件被更改,包括 28 次插入8 次删除
  1. 28 8
      packages/fpmkunit/src/fpmkunit.pp

+ 28 - 8
packages/fpmkunit/src/fpmkunit.pp

@@ -951,7 +951,13 @@ Procedure SplitCommand(Const Cmd : String; Var Exe,Options : String);
 
 
 Implementation
 Implementation
 
 
-uses typinfo;
+uses typinfo, rtlconsts;
+
+type
+  TUnsortedDuplicatesStringList = class(TStringList)
+  public
+    function Add(const S: string): Integer; override;
+  end;
 
 
 ResourceString
 ResourceString
   SErrInvalidCPU        = 'Invalid CPU name "%s"';
   SErrInvalidCPU        = 'Invalid CPU name "%s"';
@@ -1552,6 +1558,22 @@ end;
 {$endif HAS_UNIT_PROCESS}
 {$endif HAS_UNIT_PROCESS}
 
 
 
 
+{****************************************************************************
+                           TUnsortedDuplicatesStringList
+****************************************************************************}
+
+function TUnsortedDuplicatesStringList.Add(const S: string): Integer;
+
+begin
+  result := IndexOf(S);
+  If result > -1 then
+    Case DUplicates of
+      DupIgnore : Exit;
+      DupError : Error(SDuplicateString,0)
+    end;
+  inherited Add(S);
+end;
+
 {****************************************************************************
 {****************************************************************************
                                 TNamedItem
                                 TNamedItem
 ****************************************************************************}
 ****************************************************************************}
@@ -3610,7 +3632,8 @@ end;
 
 
 Function TBuildEngine.GetCompilerCommand(APackage : TPackage; ATarget : TTarget) : String;
 Function TBuildEngine.GetCompilerCommand(APackage : TPackage; ATarget : TTarget) : String;
 Var
 Var
-  L,Args : TStringList;
+  L : TUnsortedDuplicatesStringList;
+  Args : TStringList;
   i : Integer;
   i : Integer;
 begin
 begin
   if ATarget.TargetSourceFileName = '' then
   if ATarget.TargetSourceFileName = '' then
@@ -3638,8 +3661,7 @@ begin
     Args.Add('-FE'+APackage.GetBinOutputDir(Defaults.CPU,Defaults.OS));
     Args.Add('-FE'+APackage.GetBinOutputDir(Defaults.CPU,Defaults.OS));
   Args.Add('-FU'+APackage.GetUnitsOutputDir(Defaults.CPU,Defaults.OS));
   Args.Add('-FU'+APackage.GetUnitsOutputDir(Defaults.CPU,Defaults.OS));
   // Object Path
   // Object Path
-  L:=TStringList.Create;
-  L.Sorted:=true;
+  L:=TUnsortedDuplicatesStringList.Create;
   L.Duplicates:=dupIgnore;
   L.Duplicates:=dupIgnore;
   AddConditionalStrings(L,APackage.ObjectPath,Defaults.CPU,Defaults.OS);
   AddConditionalStrings(L,APackage.ObjectPath,Defaults.CPU,Defaults.OS);
   AddConditionalStrings(L,ATarget.ObjectPath,Defaults.CPU,Defaults.OS);
   AddConditionalStrings(L,ATarget.ObjectPath,Defaults.CPU,Defaults.OS);
@@ -3647,8 +3669,7 @@ begin
     Args.Add('-Fo'+L[i]);
     Args.Add('-Fo'+L[i]);
   FreeAndNil(L);
   FreeAndNil(L);
   // Unit Dirs
   // Unit Dirs
-  L:=TStringList.Create;
-  L.Sorted:=true;
+  L:=TUnsortedDuplicatesStringList.Create;
   L.Duplicates:=dupIgnore;
   L.Duplicates:=dupIgnore;
   AddDependencyUnitPaths(L,APackage);
   AddDependencyUnitPaths(L,APackage);
   AddConditionalStrings(L,APackage.UnitPath,Defaults.CPU,Defaults.OS);
   AddConditionalStrings(L,APackage.UnitPath,Defaults.CPU,Defaults.OS);
@@ -3657,8 +3678,7 @@ begin
     Args.Add('-Fu'+L[i]);
     Args.Add('-Fu'+L[i]);
   FreeAndNil(L);
   FreeAndNil(L);
   // Include Path
   // Include Path
-  L:=TStringList.Create;
-  L.Sorted:=true;
+  L:=TUnsortedDuplicatesStringList.Create;
   L.Duplicates:=dupIgnore;
   L.Duplicates:=dupIgnore;
   AddDependencyIncludePaths(L,ATarget);
   AddDependencyIncludePaths(L,ATarget);
   AddConditionalStrings(L,APackage.IncludePath,Defaults.CPU,Defaults.OS);
   AddConditionalStrings(L,APackage.IncludePath,Defaults.CPU,Defaults.OS);