codetools: fixed searching include file in fpc.cfg paths, issue #39872

This commit is contained in:
mattias 2024-06-18 17:08:20 +02:00
parent fa535070e5
commit 32c250f997
3 changed files with 15 additions and 14 deletions

View File

@ -6073,13 +6073,15 @@ var
UnitSet: TFPCUnitSetCache;
Dir: String;
begin
Result:=False;
Dir:=ExtractFilePath(Sender.MainFilename);
// search the include file in directories defines in fpc.cfg (by -Fi option)
UnitSet:=CodeToolBoss.GetUnitSetForDirectory(Dir);
if UnitSet<>nil then begin
CfgCache:=UnitSet.GetConfigCache(false);
Result:=Assigned(CfgCache) and Assigned(CfgCache.Includes)
and CfgCache.Includes.GetString(IncName,ExpFilename);
if CfgCache=nil then exit;
if CfgCache.Includes=nil then exit;
Result:=CfgCache.Includes.GetString(IncName,ExpFilename);
end
else
Result:=False;

View File

@ -1983,7 +1983,7 @@ var
FileCount: Integer;
Abort: boolean;
FileInfo: TSearchRec;
ShortFilename, Filename, File_Name: String;
ShortFilename, Filename, File_Name, Ext: String;
begin
// units sources
Units:=TStringToStringTree.Create(false);
@ -2040,14 +2040,13 @@ begin
ShortFilename:=FileInfo.Name;
if (ShortFilename='') or (ShortFilename='.') or (ShortFilename='..') then
continue;
//debugln(['GatherUnitsInSearchPaths ShortFilename=',ShortFilename,' IsDir=',(FileInfo.Attr and faDirectory)>0]);
Ext:=ExtractFileExt(ShortFilename);
if IsPascalIncExt(PChar(Ext))=pietNone then
continue;
Filename:=Directory+ShortFilename;
if FilenameExtIs(ShortFilename,'.inc') then begin
File_Name:=ExtractFileName(Filename);
if (not Includes.Contains(File_Name))
then
Includes[File_Name]:=Filename;
end;
if not Includes.Contains(ShortFilename) then
Includes[ShortFilename]:=Filename;
until FindNextUTF8(FileInfo)<>0;
finally
FindCloseUTF8(FileInfo);

View File

@ -4141,7 +4141,7 @@ var
FoundFilename:=DirectoryCachePool.FindIncludeFileInDirectory(Dir,RelFilename,AnyCase);
if FoundFilename<>'' then begin
{$IFDEF VerboseIncludeSearch}
DebugLn('TLinkScanner.Search Filename="',AFilename,'" Found="',FoundFilename,'"');
DebugLn('TLinkScanner.Search Filename="',RelFilename,'" Found="',FoundFilename,'"');
{$ENDIF}
NewCode:=FOnLoadSource(Self,FoundFilename,true);
if (NewCode<>nil) then
@ -4155,7 +4155,7 @@ var
FoundFilename:=DirectoryCachePool.FindIncludeFileInDirectory(Dir,RelFilename,AnyCase);
if FoundFilename<>'' then begin
{$IFDEF VerboseIncludeSearch}
DebugLn('TLinkScanner.Search Filename="',AFilename,'" Found="',FoundFilename,'"');
DebugLn('TLinkScanner.Search Filename="',RelFilename,'" Found="',FoundFilename,'"');
{$ENDIF}
NewCode:=FOnLoadSource(Self,FoundFilename,true);
if (NewCode<>nil) then
@ -4166,7 +4166,7 @@ var
FoundFilename:=DirectoryCachePool.FindIncludeFileInCompletePath(Dir,RelFilename,AnyCase);
if FoundFilename<>'' then begin
{$IFDEF VerboseIncludeSearch}
DebugLn('TLinkScanner.Search Filename="',AFilename,'" Found="',FoundFilename,'"');
DebugLn('TLinkScanner.Search Filename="',RelFilename,'" Found="',FoundFilename,'"');
{$ENDIF}
NewCode:=FOnLoadSource(Self,FoundFilename,true);
if (NewCode<>nil) then
@ -4177,7 +4177,7 @@ var
// search the include file in directories defines in fpc.cfg (by -Fi option)
if FilenameIsAbsolute(Dir)
and Values.IsDefined('FPC')
and OnFindIncFileInFPCSrcDir(Self,AFilename,FoundFilename) then
and OnFindIncFileInFPCSrcDir(Self,RelFilename,FoundFilename) then
begin
NewCode:=FOnLoadSource(Self,FoundFilename,true);
if NewCode<>nil then