mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-14 00:59:30 +02:00
* Abstracted handling of defines
git-svn-id: trunk@20169 -
This commit is contained in:
parent
b3c246e9f6
commit
24d175e0a7
@ -348,7 +348,7 @@ var
|
||||
begin
|
||||
case s[2] of
|
||||
'd': // -d define
|
||||
Scanner.Defines.Append(UpperCase(Copy(s, 3, Length(s))));
|
||||
Scanner.AddDefine(UpperCase(Copy(s, 3, Length(s))));
|
||||
'F': // -F
|
||||
if (length(s)>2) and (s[3] = 'i') then // -Fi include path
|
||||
FileResolver.AddIncludePath(Copy(s, 4, Length(s)));
|
||||
@ -378,42 +378,42 @@ begin
|
||||
FileResolver := TFileResolver.Create;
|
||||
FileResolver.UseStreams:=UseStreams;
|
||||
Scanner := TPascalScanner.Create(FileResolver);
|
||||
Scanner.Defines.Append('FPK');
|
||||
Scanner.Defines.Append('FPC');
|
||||
Scanner.AddDefine('FPK');
|
||||
Scanner.AddDefine('FPC');
|
||||
SCanner.LogEvents:=AEngine.ScannerLogEvents;
|
||||
SCanner.OnLog:=AEngine.Onlog;
|
||||
|
||||
// TargetOS
|
||||
s := UpperCase(OSTarget);
|
||||
Scanner.Defines.Append(s);
|
||||
Scanner.AddDefine(s);
|
||||
if s = 'LINUX' then
|
||||
Scanner.Defines.Append('UNIX')
|
||||
Scanner.AddDefine('UNIX')
|
||||
else if s = 'FREEBSD' then
|
||||
begin
|
||||
Scanner.Defines.Append('BSD');
|
||||
Scanner.Defines.Append('UNIX');
|
||||
Scanner.AddDefine('BSD');
|
||||
Scanner.AddDefine('UNIX');
|
||||
end else if s = 'NETBSD' then
|
||||
begin
|
||||
Scanner.Defines.Append('BSD');
|
||||
Scanner.Defines.Append('UNIX');
|
||||
Scanner.AddDefine('BSD');
|
||||
Scanner.AddDefine('UNIX');
|
||||
end else if s = 'SUNOS' then
|
||||
begin
|
||||
Scanner.Defines.Append('SOLARIS');
|
||||
Scanner.Defines.Append('UNIX');
|
||||
Scanner.AddDefine('SOLARIS');
|
||||
Scanner.AddDefine('UNIX');
|
||||
end else if s = 'GO32V2' then
|
||||
Scanner.Defines.Append('DPMI')
|
||||
Scanner.AddDefine('DPMI')
|
||||
else if s = 'BEOS' then
|
||||
Scanner.Defines.Append('UNIX')
|
||||
Scanner.AddDefine('UNIX')
|
||||
else if s = 'QNX' then
|
||||
Scanner.Defines.Append('UNIX');
|
||||
Scanner.AddDefine('UNIX');
|
||||
|
||||
// TargetCPU
|
||||
s := UpperCase(CPUTarget);
|
||||
Scanner.Defines.Append('CPU'+s);
|
||||
Scanner.AddDefine('CPU'+s);
|
||||
if (s='x86_64') then
|
||||
Scanner.Defines.Append('CPU64')
|
||||
Scanner.AddDefine('CPU64')
|
||||
else
|
||||
Scanner.Defines.Append('CPU32');
|
||||
Scanner.AddDefine('CPU32');
|
||||
|
||||
Parser := TPasParser.Create(Scanner, FileResolver, AEngine);
|
||||
Filename := '';
|
||||
|
@ -345,6 +345,8 @@ type
|
||||
destructor Destroy; override;
|
||||
procedure OpenFile(const AFilename: string);
|
||||
function FetchToken: TToken;
|
||||
Procedure AddDefine(S : String);
|
||||
Procedure RemoveDefine(S : String);
|
||||
|
||||
property FileResolver: TBaseFileResolver read FFileResolver;
|
||||
property CurSourceFile: TLineReader read FCurSourceFile;
|
||||
@ -1184,10 +1186,7 @@ begin
|
||||
Param := UpperCase(Param);
|
||||
Index:=Pos(':=',Param);
|
||||
If (Index=0) then
|
||||
begin
|
||||
if Defines.IndexOf(Param) < 0 then
|
||||
Defines.Add(Param);
|
||||
end
|
||||
AddDefine(Param)
|
||||
else
|
||||
begin
|
||||
MV:=Trim(Param);
|
||||
@ -1208,9 +1207,9 @@ Var
|
||||
|
||||
begin
|
||||
Param := UpperCase(Param);
|
||||
Index := Defines.IndexOf(Param);
|
||||
if Index >= 0 then
|
||||
Defines.Delete(Index)
|
||||
Index:=FDefines.IndexOf(Param);
|
||||
If (Index<0) then
|
||||
RemoveDefine(Param)
|
||||
else
|
||||
begin
|
||||
Index := FMacros.IndexOf(Param);
|
||||
@ -1786,4 +1785,22 @@ begin
|
||||
FOptions:=AValue;
|
||||
end;
|
||||
|
||||
Procedure TPascalScanner.AddDefine(S : String);
|
||||
|
||||
begin
|
||||
If FDefines.IndexOf(S)=-1 then
|
||||
FDefines.Add(S);
|
||||
end;
|
||||
|
||||
Procedure TPascalScanner.RemoveDefine(S : String);
|
||||
|
||||
Var
|
||||
I : Integer;
|
||||
|
||||
begin
|
||||
I:=FDefines.IndexOf(S);
|
||||
if (I<>-1) then
|
||||
FDefines.Delete(I);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
Loading…
Reference in New Issue
Block a user