|
@@ -1844,6 +1844,17 @@ begin
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
+type
|
|
|
|
+ TUnsortedDuplicatesStringList = class(TStringList)
|
|
|
|
+ public
|
|
|
|
+ function Add(const S: string): Integer; override;
|
|
|
|
+ end;
|
|
|
|
+
|
|
|
|
+ TUnsortedCompilerOptionsStringList = class(TStringList)
|
|
|
|
+ public
|
|
|
|
+ constructor Create;
|
|
|
|
+ end;
|
|
|
|
+
|
|
var
|
|
var
|
|
CustomFpmakeCommandlineOptions: TStrings;
|
|
CustomFpmakeCommandlineOptions: TStrings;
|
|
CustomFpMakeCommandlineValues: TStrings;
|
|
CustomFpMakeCommandlineValues: TStrings;
|
|
@@ -2927,7 +2938,7 @@ end;
|
|
procedure AddCustomFpmakeCommandlineOption(const ACommandLineOption, HelpMessage : string);
|
|
procedure AddCustomFpmakeCommandlineOption(const ACommandLineOption, HelpMessage : string);
|
|
begin
|
|
begin
|
|
if not assigned(CustomFpmakeCommandlineOptions) then
|
|
if not assigned(CustomFpmakeCommandlineOptions) then
|
|
- CustomFpmakeCommandlineOptions := TStringList.Create;
|
|
|
|
|
|
+ CustomFpmakeCommandlineOptions := TUnsortedCompilerOptionsStringList.Create;
|
|
CustomFpmakeCommandlineOptions.Values[ACommandLineOption]:=HelpMessage;
|
|
CustomFpmakeCommandlineOptions.Values[ACommandLineOption]:=HelpMessage;
|
|
end;
|
|
end;
|
|
|
|
|
|
@@ -3001,7 +3012,7 @@ begin
|
|
Result:=Nil;
|
|
Result:=Nil;
|
|
If (S='') then
|
|
If (S='') then
|
|
Exit;
|
|
Exit;
|
|
- Result:=TStringList.Create;
|
|
|
|
|
|
+ Result:=TUnsortedCompilerOptionsStringList.Create;
|
|
Repeat
|
|
Repeat
|
|
P:=Pos(' ',S);
|
|
P:=Pos(' ',S);
|
|
If P=0 then
|
|
If P=0 then
|
|
@@ -3591,7 +3602,7 @@ constructor TPackageVariant.Create(ACollection: TCollection);
|
|
begin
|
|
begin
|
|
inherited Create(ACollection);
|
|
inherited Create(ACollection);
|
|
FTargets := TTargets.Create(TTarget);
|
|
FTargets := TTargets.Create(TTarget);
|
|
- FOptions := TStringList.Create;
|
|
|
|
|
|
+ FOptions := TUnsortedCompilerOptionsStringList.Create;
|
|
FIncludePath:=TConditionalStrings.Create(TConditionalString);
|
|
FIncludePath:=TConditionalStrings.Create(TConditionalString);
|
|
FSourcePath:=TConditionalStrings.Create(TConditionalString);
|
|
FSourcePath:=TConditionalStrings.Create(TConditionalString);
|
|
end;
|
|
end;
|
|
@@ -3781,6 +3792,32 @@ end;
|
|
|
|
|
|
{$endif NO_THREADING}
|
|
{$endif NO_THREADING}
|
|
|
|
|
|
|
|
+{****************************************************************************
|
|
|
|
+ TUnsortedDuplicatesStringList
|
|
|
|
+****************************************************************************}
|
|
|
|
+
|
|
|
|
+function TUnsortedDuplicatesStringList.Add(const S: string): Integer;
|
|
|
|
+
|
|
|
|
+begin
|
|
|
|
+ result := IndexOf(S);
|
|
|
|
+ If result > -1 then
|
|
|
|
+ Case DUplicates of
|
|
|
|
+ DupAccept,
|
|
|
|
+ DupIgnore : Exit;
|
|
|
|
+ DupError : Error(SDuplicateString,0)
|
|
|
|
+ end;
|
|
|
|
+ inherited Add(S);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+{****************************************************************************
|
|
|
|
+ TUnsortedCompilerOptionsStringList
|
|
|
|
+****************************************************************************}
|
|
|
|
+
|
|
|
|
+constructor TUnsortedCompilerOptionsStringList.Create;
|
|
|
|
+begin
|
|
|
|
+ Inherited Create;
|
|
|
|
+ Duplicates:=DupAccept;
|
|
|
|
+end;
|
|
|
|
|
|
{****************************************************************************
|
|
{****************************************************************************
|
|
TNamedItem
|
|
TNamedItem
|
|
@@ -4601,14 +4638,14 @@ end;
|
|
function TPackage.GetOptions: TStrings;
|
|
function TPackage.GetOptions: TStrings;
|
|
begin
|
|
begin
|
|
If (FOptions=Nil) then
|
|
If (FOptions=Nil) then
|
|
- FOptions:=TStringList.Create;
|
|
|
|
|
|
+ FOptions:=TUnsortedCompilerOptionsStringList.Create;
|
|
Result:=FOptions;
|
|
Result:=FOptions;
|
|
end;
|
|
end;
|
|
|
|
|
|
function TPackage.GetTransmitOptions: TStrings;
|
|
function TPackage.GetTransmitOptions: TStrings;
|
|
begin
|
|
begin
|
|
If (FTransmitOptions=Nil) then
|
|
If (FTransmitOptions=Nil) then
|
|
- FTransmitOptions:=TStringList.Create;
|
|
|
|
|
|
+ FTransmitOptions:=TUnsortedCompilerOptionsStringList.Create;
|
|
Result:=FTransmitOptions;
|
|
Result:=FTransmitOptions;
|
|
end;
|
|
end;
|
|
|
|
|
|
@@ -4778,7 +4815,7 @@ Var
|
|
T : TTarget;
|
|
T : TTarget;
|
|
S, O, FN : String;
|
|
S, O, FN : String;
|
|
SL : TStringList;
|
|
SL : TStringList;
|
|
- L : TStringList;
|
|
|
|
|
|
+ L : TUnsortedDuplicatesStringList;
|
|
I : Integer;
|
|
I : Integer;
|
|
iCPU : TCPU;
|
|
iCPU : TCPU;
|
|
iOS : TOS;
|
|
iOS : TOS;
|
|
@@ -4809,7 +4846,7 @@ begin
|
|
SL.Add('-dUNIX');
|
|
SL.Add('-dUNIX');
|
|
SL.Add('-M'+ModeToString(T.Mode));
|
|
SL.Add('-M'+ModeToString(T.Mode));
|
|
// Include Path
|
|
// Include Path
|
|
- L:=TStringList.Create;
|
|
|
|
|
|
+ L:=TUnsortedDuplicatesStringList.Create;
|
|
L.Duplicates:=dupIgnore;
|
|
L.Duplicates:=dupIgnore;
|
|
AddDependencyPaths(L,depInclude,T);
|
|
AddDependencyPaths(L,depInclude,T);
|
|
AddConditionalStrings(P, L,P.IncludePath,Defaults.CompileTarget);
|
|
AddConditionalStrings(P, L,P.IncludePath,Defaults.CompileTarget);
|
|
@@ -5366,7 +5403,7 @@ end;
|
|
function TCustomDefaults.GetOptions: TStrings;
|
|
function TCustomDefaults.GetOptions: TStrings;
|
|
begin
|
|
begin
|
|
If (FOptions=Nil) then
|
|
If (FOptions=Nil) then
|
|
- FOptions:=TStringList.Create;
|
|
|
|
|
|
+ FOptions:=TUnsortedCompilerOptionsStringList.Create;
|
|
Result:=FOptions;
|
|
Result:=FOptions;
|
|
end;
|
|
end;
|
|
|
|
|
|
@@ -6338,7 +6375,7 @@ begin
|
|
else if assigned(CustomFpmakeCommandlineOptions) and CheckCustomOption(I,CustOptName) then
|
|
else if assigned(CustomFpmakeCommandlineOptions) and CheckCustomOption(I,CustOptName) then
|
|
begin
|
|
begin
|
|
if not assigned(CustomFpMakeCommandlineValues) then
|
|
if not assigned(CustomFpMakeCommandlineValues) then
|
|
- CustomFpMakeCommandlineValues := TStringList.Create;
|
|
|
|
|
|
+ CustomFpMakeCommandlineValues := TUnsortedCompilerOptionsStringList.Create;
|
|
CustomFpMakeCommandlineValues.Values[CustOptName]:=OptionArg(I, true)
|
|
CustomFpMakeCommandlineValues.Values[CustOptName]:=OptionArg(I, true)
|
|
end
|
|
end
|
|
else if (not CheckBuildOptionSetValue(I)) and (not CheckPackageVariantOptionSetValue(I))
|
|
else if (not CheckBuildOptionSetValue(I)) and (not CheckPackageVariantOptionSetValue(I))
|
|
@@ -7915,7 +7952,7 @@ procedure TBuildEngine.GetCompilerCommand(Args: TStrings; APackage: TPackage;
|
|
ATarget: TTarget; Env: TStrings);
|
|
ATarget: TTarget; Env: TStrings);
|
|
|
|
|
|
Var
|
|
Var
|
|
- L : TStringList;
|
|
|
|
|
|
+ L : TUnsortedDuplicatesStringList;
|
|
s : string;
|
|
s : string;
|
|
ExtCmd,ErrS: string;
|
|
ExtCmd,ErrS: string;
|
|
i : Integer;
|
|
i : Integer;
|
|
@@ -7949,7 +7986,7 @@ begin
|
|
Args.Add('-FE'+AddPathPrefix(APackage,APackage.GetBinOutputDir(Defaults.CompileTarget)));
|
|
Args.Add('-FE'+AddPathPrefix(APackage,APackage.GetBinOutputDir(Defaults.CompileTarget)));
|
|
Args.Add('-FU'+AddPathPrefix(APackage,APackage.GetUnitsOutputDir(Defaults.CompileTarget)));
|
|
Args.Add('-FU'+AddPathPrefix(APackage,APackage.GetUnitsOutputDir(Defaults.CompileTarget)));
|
|
// Object Path
|
|
// Object Path
|
|
- L:=TStringList.Create;
|
|
|
|
|
|
+ L:=TUnsortedDuplicatesStringList.Create;
|
|
L.Duplicates:=dupIgnore;
|
|
L.Duplicates:=dupIgnore;
|
|
AddConditionalStrings(APackage, L,APackage.ObjectPath, Defaults.CompileTarget);
|
|
AddConditionalStrings(APackage, L,APackage.ObjectPath, Defaults.CompileTarget);
|
|
AddConditionalStrings(APackage, L,ATarget.ObjectPath, Defaults.CompileTarget);
|
|
AddConditionalStrings(APackage, L,ATarget.ObjectPath, Defaults.CompileTarget);
|
|
@@ -7957,7 +7994,7 @@ begin
|
|
Args.Add('-Fo'+AddPathPrefix(APackage,L[i]));
|
|
Args.Add('-Fo'+AddPathPrefix(APackage,L[i]));
|
|
FreeAndNil(L);
|
|
FreeAndNil(L);
|
|
// Unit Dirs
|
|
// Unit Dirs
|
|
- L:=TStringList.Create;
|
|
|
|
|
|
+ L:=TUnsortedDuplicatesStringList.Create;
|
|
L.Duplicates:=dupIgnore;
|
|
L.Duplicates:=dupIgnore;
|
|
AddDependencyUnitPaths(L,APackage);
|
|
AddDependencyUnitPaths(L,APackage);
|
|
AddDependencyPaths(L,depUnit,ATarget);
|
|
AddDependencyPaths(L,depUnit,ATarget);
|
|
@@ -7967,7 +8004,7 @@ begin
|
|
Args.Add('-Fu'+AddPathPrefix(APackage,L[i]));
|
|
Args.Add('-Fu'+AddPathPrefix(APackage,L[i]));
|
|
FreeAndNil(L);
|
|
FreeAndNil(L);
|
|
// Include Path
|
|
// Include Path
|
|
- L:=TStringList.Create;
|
|
|
|
|
|
+ L:=TUnsortedDuplicatesStringList.Create;
|
|
L.Duplicates:=dupIgnore;
|
|
L.Duplicates:=dupIgnore;
|
|
AddDependencyPaths(L,depInclude,ATarget);
|
|
AddDependencyPaths(L,depInclude,ATarget);
|
|
AddConditionalStrings(APackage, L,APackage.IncludePath, Defaults.CompileTarget);
|
|
AddConditionalStrings(APackage, L,APackage.IncludePath, Defaults.CompileTarget);
|
|
@@ -9350,7 +9387,7 @@ Var
|
|
RemainingList : TStrings;
|
|
RemainingList : TStrings;
|
|
i : longint;
|
|
i : longint;
|
|
begin
|
|
begin
|
|
- List:=TStringList.Create;
|
|
|
|
|
|
+ List:=TUnsortedDuplicatesStringList.Create;
|
|
List.Duplicates:=DupIgnore;
|
|
List.Duplicates:=DupIgnore;
|
|
try
|
|
try
|
|
List.Add(APackage.GetUnitConfigOutputFilename(aTarget));
|
|
List.Add(APackage.GetUnitConfigOutputFilename(aTarget));
|
|
@@ -9358,7 +9395,7 @@ begin
|
|
if (List.Count>0) then
|
|
if (List.Count>0) then
|
|
begin
|
|
begin
|
|
CmdDeleteFiles(List);
|
|
CmdDeleteFiles(List);
|
|
- DirectoryList:=TStringList.Create;
|
|
|
|
|
|
+ DirectoryList:=TUnsortedDuplicatesStringList.Create;
|
|
DirectoryList.Duplicates:=DupIgnore;
|
|
DirectoryList.Duplicates:=DupIgnore;
|
|
try
|
|
try
|
|
GetDirectoriesFromFilelist(List,DirectoryList);
|
|
GetDirectoriesFromFilelist(List,DirectoryList);
|
|
@@ -10071,7 +10108,7 @@ end;
|
|
function TTarget.GetOptions: TStrings;
|
|
function TTarget.GetOptions: TStrings;
|
|
begin
|
|
begin
|
|
If Foptions=Nil then
|
|
If Foptions=Nil then
|
|
- FOptions:=TStringList.Create;
|
|
|
|
|
|
+ FOptions:=TUnsortedCompilerOptionsStringList.Create;
|
|
Result:=FOptions;
|
|
Result:=FOptions;
|
|
end;
|
|
end;
|
|
|
|
|
|
@@ -11084,7 +11121,7 @@ end;
|
|
function TCommand.GetOptions: TStrings;
|
|
function TCommand.GetOptions: TStrings;
|
|
begin
|
|
begin
|
|
If (FOptions=Nil) then
|
|
If (FOptions=Nil) then
|
|
- FOptions:=TStringList.Create;
|
|
|
|
|
|
+ FOptions:=TUnsortedCompilerOptionsStringList.Create;
|
|
Result:=FOptions;
|
|
Result:=FOptions;
|
|
end;
|
|
end;
|
|
|
|
|