mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-14 08:51:10 +02:00
* Move InsertJSFiles to compiler
git-svn-id: trunk@40439 -
This commit is contained in:
parent
92c07633c2
commit
a3337afa98
@ -412,6 +412,8 @@ type
|
|||||||
FInterfaceType: TPasClassInterfaceType;
|
FInterfaceType: TPasClassInterfaceType;
|
||||||
FRTLVersionCheck: TP2jsRTLVersionCheck;
|
FRTLVersionCheck: TP2jsRTLVersionCheck;
|
||||||
FPrecompileGUID: TGUID;
|
FPrecompileGUID: TGUID;
|
||||||
|
FInsertFilenames: TStringList;
|
||||||
|
procedure AddInsertJSFilename(const aFilename: string);
|
||||||
procedure ConditionEvalLog(Sender: TCondDirectiveEvaluator;
|
procedure ConditionEvalLog(Sender: TCondDirectiveEvaluator;
|
||||||
Args: array of {$ifdef pas2js}jsvalue{$else}const{$endif});
|
Args: array of {$ifdef pas2js}jsvalue{$else}const{$endif});
|
||||||
function ConditionEvalVariable(Sender: TCondDirectiveEvaluator;
|
function ConditionEvalVariable(Sender: TCondDirectiveEvaluator;
|
||||||
@ -431,10 +433,13 @@ type
|
|||||||
function GetWriteDebugLog: boolean;
|
function GetWriteDebugLog: boolean;
|
||||||
function GetWriteMsgToStdErr: boolean;
|
function GetWriteMsgToStdErr: boolean;
|
||||||
function HandleOptionOptimization(C: Char; aValue: String): Boolean;
|
function HandleOptionOptimization(C: Char; aValue: String): Boolean;
|
||||||
|
function IndexOfInsertJSFilename(const aFilename: string): integer;
|
||||||
|
procedure InsertCustomJSFiles(aWriter: TPas2JSMapper);
|
||||||
function OnMacroCfgDir(Sender: TObject; var Params: string; Lvl: integer
|
function OnMacroCfgDir(Sender: TObject; var Params: string; Lvl: integer
|
||||||
): boolean;
|
): boolean;
|
||||||
function OnMacroEnv(Sender: TObject; var Params: string; Lvl: integer
|
function OnMacroEnv(Sender: TObject; var Params: string; Lvl: integer
|
||||||
): boolean;
|
): boolean;
|
||||||
|
procedure RemoveInsertJSFilename(const aFilename: string);
|
||||||
procedure SetCompilerExe(AValue: string);
|
procedure SetCompilerExe(AValue: string);
|
||||||
procedure SetFileCache(AValue: TPas2jsFilesCache);
|
procedure SetFileCache(AValue: TPas2jsFilesCache);
|
||||||
procedure SetMode(AValue: TP2jsMode);
|
procedure SetMode(AValue: TP2jsMode);
|
||||||
@ -580,6 +585,7 @@ type
|
|||||||
property WriteDebugLog: boolean read GetWriteDebugLog write SetWriteDebugLog;
|
property WriteDebugLog: boolean read GetWriteDebugLog write SetWriteDebugLog;
|
||||||
property WriteMsgToStdErr: boolean read GetWriteMsgToStdErr write SetWriteMsgToStdErr;
|
property WriteMsgToStdErr: boolean read GetWriteMsgToStdErr write SetWriteMsgToStdErr;
|
||||||
property ExitCode: longint read GetExitCode write SetExitCode;
|
property ExitCode: longint read GetExitCode write SetExitCode;
|
||||||
|
property InsertFilenames: TStringList read FInsertFilenames;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -1566,7 +1572,7 @@ var
|
|||||||
FoundPasUnitName:=TestUnitName;
|
FoundPasUnitName:=TestUnitName;
|
||||||
end else begin
|
end else begin
|
||||||
// search pas in unit path
|
// search pas in unit path
|
||||||
FoundPasFilename:=Compiler.FileCache.FindUnitFileName(TestUnitName,'',FoundPasIsForeign,FileResolver.StrictFileCase);
|
FoundPasFilename:=Compiler.FileCache.FindUnitFileName(TestUnitName,'',FoundPasIsForeign);
|
||||||
if FoundPasFilename<>'' then
|
if FoundPasFilename<>'' then
|
||||||
FoundPasUnitName:=TestUnitName;
|
FoundPasUnitName:=TestUnitName;
|
||||||
end;
|
end;
|
||||||
@ -1631,7 +1637,7 @@ begin
|
|||||||
if FoundPasFilename='' then
|
if FoundPasFilename='' then
|
||||||
begin
|
begin
|
||||||
// search Pascal file
|
// search Pascal file
|
||||||
FoundPasFilename:=Compiler.FileCache.FindUnitFileName(UseUnitname,InFilename,FoundPasIsForeign,FileResolver.StrictFileCase);
|
FoundPasFilename:=Compiler.FileCache.FindUnitFileName(UseUnitname,InFilename,FoundPasIsForeign);
|
||||||
if FoundPasFilename<>'' then
|
if FoundPasFilename<>'' then
|
||||||
begin
|
begin
|
||||||
if InFilename<>'' then
|
if InFilename<>'' then
|
||||||
@ -2273,7 +2279,7 @@ begin
|
|||||||
DestFilename:=FileCache.GetResolvedMainJSFile;
|
DestFilename:=FileCache.GetResolvedMainJSFile;
|
||||||
CreateFileWriter(DestFilename);
|
CreateFileWriter(DestFilename);
|
||||||
CombinedFileWriter:=aFileWriter;
|
CombinedFileWriter:=aFileWriter;
|
||||||
FileCache.InsertCustomJSFiles(CombinedFileWriter);
|
InsertCustomJSFiles(CombinedFileWriter);
|
||||||
end else begin
|
end else begin
|
||||||
DestFilename:=aFile.JSFilename;
|
DestFilename:=aFile.JSFilename;
|
||||||
end;
|
end;
|
||||||
@ -2290,7 +2296,7 @@ begin
|
|||||||
// create writer for this file
|
// create writer for this file
|
||||||
CreateFileWriter(DestFilename);
|
CreateFileWriter(DestFilename);
|
||||||
if aFile.IsMainFile and not FileCache.AllJSIntoMainJS then
|
if aFile.IsMainFile and not FileCache.AllJSIntoMainJS then
|
||||||
FileCache.InsertCustomJSFiles(aFileWriter);
|
InsertCustomJSFiles(aFileWriter);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// write JavaScript
|
// write JavaScript
|
||||||
@ -3154,9 +3160,9 @@ begin
|
|||||||
if aValue='' then
|
if aValue='' then
|
||||||
Result:=False
|
Result:=False
|
||||||
else
|
else
|
||||||
FileCache.RemoveInsertJSFilename(aValue);
|
RemoveInsertJSFilename(aValue);
|
||||||
end else
|
end else
|
||||||
FileCache.AddInsertJSFilename(aValue);
|
AddInsertJSFilename(aValue);
|
||||||
end;
|
end;
|
||||||
'l': SetOption(coLowercase,aValue<>'-');
|
'l': SetOption(coLowercase,aValue<>'-');
|
||||||
'm':
|
'm':
|
||||||
@ -3983,6 +3989,7 @@ begin
|
|||||||
FLog:=TPas2jsLogger.Create;
|
FLog:=TPas2jsLogger.Create;
|
||||||
FParamMacros:=TPas2jsMacroEngine.Create;
|
FParamMacros:=TPas2jsMacroEngine.Create;
|
||||||
RegisterMessages;
|
RegisterMessages;
|
||||||
|
FInsertFilenames:=TStringList.Create;
|
||||||
|
|
||||||
FFileCache:=TPas2jsFilesCache.Create(Log);
|
FFileCache:=TPas2jsFilesCache.Create(Log);
|
||||||
FFileCache.BaseDirectory:=GetCurrentDirPJ;
|
FFileCache.BaseDirectory:=GetCurrentDirPJ;
|
||||||
@ -4017,6 +4024,7 @@ destructor TPas2jsCompiler.Destroy;
|
|||||||
procedure FreeStuff;
|
procedure FreeStuff;
|
||||||
begin
|
begin
|
||||||
FreeAndNil(FWPOAnalyzer);
|
FreeAndNil(FWPOAnalyzer);
|
||||||
|
FreeAndNil(FInsertFilenames);
|
||||||
|
|
||||||
FMainFile:=nil;
|
FMainFile:=nil;
|
||||||
FreeAndNil(FUnits);
|
FreeAndNil(FUnits);
|
||||||
@ -4137,7 +4145,7 @@ begin
|
|||||||
FUnits.Clear;
|
FUnits.Clear;
|
||||||
FReadingModules.Clear;
|
FReadingModules.Clear;
|
||||||
FFiles.FreeItems;
|
FFiles.FreeItems;
|
||||||
|
FInsertFilenames.Clear;
|
||||||
FPostProcs.Clear;
|
FPostProcs.Clear;
|
||||||
FCompilerExe:='';
|
FCompilerExe:='';
|
||||||
FOptions:=DefaultP2jsCompilerOptions;
|
FOptions:=DefaultP2jsCompilerOptions;
|
||||||
@ -4751,5 +4759,57 @@ begin
|
|||||||
Result:=ExpandFileNamePJ(Filename,FileCache.BaseDirectory);
|
Result:=ExpandFileNamePJ(Filename,FileCache.BaseDirectory);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TPas2jsCompiler.InsertCustomJSFiles(aWriter: TPas2JSMapper);
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
Filename: String;
|
||||||
|
FileResolver: TPas2jsFileResolver;
|
||||||
|
aFile: TPas2jsCachedFile;
|
||||||
|
begin
|
||||||
|
if InsertFilenames.Count=0 then exit;
|
||||||
|
FileResolver:=FileCache.CreateResolver;
|
||||||
|
try
|
||||||
|
for i:=0 to InsertFilenames.Count-1 do begin
|
||||||
|
Filename:=FileCache.FindCustomJSFileName(ResolveDots(InsertFilenames[i]));
|
||||||
|
if Filename='' then
|
||||||
|
begin
|
||||||
|
Log.LogMsg(nCustomJSFileNotFound,[InsertFilenames[i]]);
|
||||||
|
raise EFileNotFoundError.Create('');
|
||||||
|
end;
|
||||||
|
aFile:=FileCache.LoadFile(Filename);
|
||||||
|
if aFile.Source='' then continue;
|
||||||
|
aWriter.WriteFile(aFile.Source,Filename);
|
||||||
|
end
|
||||||
|
finally
|
||||||
|
FileResolver.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TPas2jsCompiler.IndexOfInsertJSFilename(const aFilename: string
|
||||||
|
): integer;
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
for i:=0 to FInsertFilenames.Count-1 do
|
||||||
|
if CompareFilenames(aFilename,InsertFilenames[i])=0 then
|
||||||
|
exit(i);
|
||||||
|
Result:=-1;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TPas2jsCompiler.AddInsertJSFilename(const aFilename: string);
|
||||||
|
begin
|
||||||
|
if IndexOfInsertJSFilename(aFilename)<0 then
|
||||||
|
InsertFilenames.Add(aFilename);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TPas2jsCompiler.RemoveInsertJSFilename(const aFilename: string);
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
i:=IndexOfInsertJSFilename(aFilename);
|
||||||
|
if i>=0 then
|
||||||
|
InsertFilenames.Delete(i);
|
||||||
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
@ -269,7 +269,6 @@ type
|
|||||||
FForeignUnitPathsFromCmdLine: integer;
|
FForeignUnitPathsFromCmdLine: integer;
|
||||||
FIncludePaths: TStringList;
|
FIncludePaths: TStringList;
|
||||||
FIncludePathsFromCmdLine: integer;
|
FIncludePathsFromCmdLine: integer;
|
||||||
FInsertFilenames: TStringList;
|
|
||||||
FLog: TPas2jsLogger;
|
FLog: TPas2jsLogger;
|
||||||
FMainJSFile: string;
|
FMainJSFile: string;
|
||||||
FMainJSFileResolved: string; // only valid if cfsMainJSFileResolved in FStates
|
FMainJSFileResolved: string; // only valid if cfsMainJSFileResolved in FStates
|
||||||
@ -284,13 +283,13 @@ type
|
|||||||
FResetStamp: TChangeStamp;
|
FResetStamp: TChangeStamp;
|
||||||
FSrcMapBaseDir: string;
|
FSrcMapBaseDir: string;
|
||||||
FStates: TPas2jsFileCacheStates;
|
FStates: TPas2jsFileCacheStates;
|
||||||
|
FStrictFileCase: Boolean;
|
||||||
FUnitOutputPath: string;
|
FUnitOutputPath: string;
|
||||||
FUnitPaths: TStringList;
|
FUnitPaths: TStringList;
|
||||||
FUnitPathsFromCmdLine: integer;
|
FUnitPathsFromCmdLine: integer;
|
||||||
function FileExistsILogged(var Filename: string): integer;
|
function FileExistsILogged(var Filename: string): integer;
|
||||||
function FileExistsLogged(const Filename: string): boolean;
|
function FileExistsLogged(const Filename: string): boolean;
|
||||||
function FindCustomJSFileName(const aFilename: string): String;
|
function FindSourceFileName(const aFilename: string): String;
|
||||||
function FindSourceFileName(const aFilename: string; StrictFileCase: Boolean): String;
|
|
||||||
function GetAllJSIntoMainJS: Boolean;
|
function GetAllJSIntoMainJS: Boolean;
|
||||||
function GetSearchLikeFPC: boolean;
|
function GetSearchLikeFPC: boolean;
|
||||||
function GetShowFullFilenames: boolean;
|
function GetShowFullFilenames: boolean;
|
||||||
@ -317,10 +316,11 @@ type
|
|||||||
constructor Create(aLog: TPas2jsLogger);
|
constructor Create(aLog: TPas2jsLogger);
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
procedure Reset; virtual;
|
procedure Reset; virtual;
|
||||||
function SearchLowUpCase(var Filename: string; StrictFileCase : Boolean): boolean;
|
function SearchLowUpCase(var Filename: string): boolean;
|
||||||
|
function FindCustomJSFileName(const aFilename: string): String;
|
||||||
function FindUnitJSFileName(const aUnitFilename: string): String;
|
function FindUnitJSFileName(const aUnitFilename: string): String;
|
||||||
function FindUnitFileName(const aUnitname, InFilename: string; out IsForeign: boolean; StrictFileCase: Boolean): String; virtual;
|
function FindUnitFileName(const aUnitname, InFilename: string; out IsForeign: boolean): String; virtual;
|
||||||
function FindIncludeFileName(const aFilename: string; StrictFileCase : Boolean): String; virtual;
|
function FindIncludeFileName(const aFilename: string): String; virtual;
|
||||||
function AddIncludePaths(const Paths: string; FromCmdLine: boolean; out ErrorMsg: string): boolean;
|
function AddIncludePaths(const Paths: string; FromCmdLine: boolean; out ErrorMsg: string): boolean;
|
||||||
function AddNamespaces(const Paths: string; FromCmdLine: boolean; out ErrorMsg: string): boolean;
|
function AddNamespaces(const Paths: string; FromCmdLine: boolean; out ErrorMsg: string): boolean;
|
||||||
function AddUnitPaths(const Paths: string; FromCmdLine: boolean; out ErrorMsg: string): boolean;
|
function AddUnitPaths(const Paths: string; FromCmdLine: boolean; out ErrorMsg: string): boolean;
|
||||||
@ -335,10 +335,6 @@ type
|
|||||||
function FindFile(Filename: string): TPas2jsCachedFile;
|
function FindFile(Filename: string): TPas2jsCachedFile;
|
||||||
function LoadFile(Filename: string; Binary: boolean = false): TPas2jsCachedFile;
|
function LoadFile(Filename: string; Binary: boolean = false): TPas2jsCachedFile;
|
||||||
function NormalizeFilename(const Filename: string; RaiseOnError: boolean): string;
|
function NormalizeFilename(const Filename: string; RaiseOnError: boolean): string;
|
||||||
procedure InsertCustomJSFiles(aWriter: TPas2JSMapper);
|
|
||||||
function IndexOfInsertJSFilename(const aFilename: string): integer;
|
|
||||||
procedure AddInsertJSFilename(const aFilename: string);
|
|
||||||
procedure RemoveInsertJSFilename(const aFilename: string);
|
|
||||||
procedure GetListing(const aDirectory: string; var Files: TStrings;
|
procedure GetListing(const aDirectory: string; var Files: TStrings;
|
||||||
FullPaths: boolean = true);
|
FullPaths: boolean = true);
|
||||||
procedure RaiseDuplicateFile(aFilename: string);
|
procedure RaiseDuplicateFile(aFilename: string);
|
||||||
@ -354,7 +350,6 @@ type
|
|||||||
property ForeignUnitPathsFromCmdLine: integer read FForeignUnitPathsFromCmdLine;
|
property ForeignUnitPathsFromCmdLine: integer read FForeignUnitPathsFromCmdLine;
|
||||||
property IncludePaths: TStringList read FIncludePaths;
|
property IncludePaths: TStringList read FIncludePaths;
|
||||||
property IncludePathsFromCmdLine: integer read FIncludePathsFromCmdLine;
|
property IncludePathsFromCmdLine: integer read FIncludePathsFromCmdLine;
|
||||||
property InsertFilenames: TStringList read FInsertFilenames;
|
|
||||||
property Log: TPas2jsLogger read FLog;
|
property Log: TPas2jsLogger read FLog;
|
||||||
property MainJSFile: string read FMainJSFile write SetMainJSFile;
|
property MainJSFile: string read FMainJSFile write SetMainJSFile;
|
||||||
property MainSrcFileShort: string read FMainSrcFileShort write FMainSrcFileShort;
|
property MainSrcFileShort: string read FMainSrcFileShort write FMainSrcFileShort;
|
||||||
@ -373,6 +368,7 @@ type
|
|||||||
property UnitPathsFromCmdLine: integer read FUnitPathsFromCmdLine;
|
property UnitPathsFromCmdLine: integer read FUnitPathsFromCmdLine;
|
||||||
property OnReadFile: TPas2jsReadFileEvent read FOnReadFile write FOnReadFile;
|
property OnReadFile: TPas2jsReadFileEvent read FOnReadFile write FOnReadFile;
|
||||||
property OnWriteFile: TPas2jsWriteFileEvent read FOnWriteFile write FOnWriteFile;
|
property OnWriteFile: TPas2jsWriteFileEvent read FOnWriteFile write FOnWriteFile;
|
||||||
|
Property StrictFileCase : Boolean Read FStrictFileCase Write FStrictFileCase;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -1312,7 +1308,7 @@ var
|
|||||||
Filename: String;
|
Filename: String;
|
||||||
begin
|
begin
|
||||||
Result:=nil;
|
Result:=nil;
|
||||||
Filename:=Cache.FindIncludeFileName(aFilename,StrictFileCase);
|
Filename:=Cache.FindIncludeFileName(aFilename);
|
||||||
if Filename='' then exit;
|
if Filename='' then exit;
|
||||||
try
|
try
|
||||||
Result:=FindSourceFile(Filename);
|
Result:=FindSourceFile(Filename);
|
||||||
@ -1324,7 +1320,7 @@ end;
|
|||||||
function TPas2jsFileResolver.FindIncludeFileName(const aFilename: string): String;
|
function TPas2jsFileResolver.FindIncludeFileName(const aFilename: string): String;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Result:=Cache.FindIncludeFileName(aFilename,StrictFileCase);
|
Result:=Cache.FindIncludeFileName(aFilename);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -1334,7 +1330,7 @@ var
|
|||||||
CurFilename: String;
|
CurFilename: String;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
CurFilename:=Cache.FindSourceFileName(aFileName,StrictFileCase);
|
CurFilename:=Cache.FindSourceFileName(aFileName);
|
||||||
Result:=Cache.LoadFile(CurFilename).CreateLineReader(false);
|
Result:=Cache.LoadFile(CurFilename).CreateLineReader(false);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1663,7 +1659,6 @@ begin
|
|||||||
FLog:=aLog;
|
FLog:=aLog;
|
||||||
FOptions:=DefaultPas2jsFileCacheOptions;
|
FOptions:=DefaultPas2jsFileCacheOptions;
|
||||||
FIncludePaths:=TStringList.Create;
|
FIncludePaths:=TStringList.Create;
|
||||||
FInsertFilenames:=TStringList.Create;
|
|
||||||
FForeignUnitPaths:=TStringList.Create;
|
FForeignUnitPaths:=TStringList.Create;
|
||||||
FNamespaces:=TStringList.Create;
|
FNamespaces:=TStringList.Create;
|
||||||
FUnitPaths:=TStringList.Create;
|
FUnitPaths:=TStringList.Create;
|
||||||
@ -1683,7 +1678,6 @@ begin
|
|||||||
FFiles.FreeItems;
|
FFiles.FreeItems;
|
||||||
FreeAndNil(FDirectoryCache);
|
FreeAndNil(FDirectoryCache);
|
||||||
FreeAndNil(FFiles);
|
FreeAndNil(FFiles);
|
||||||
FreeAndNil(FInsertFilenames);
|
|
||||||
FreeAndNil(FIncludePaths);
|
FreeAndNil(FIncludePaths);
|
||||||
FreeAndNil(FForeignUnitPaths);
|
FreeAndNil(FForeignUnitPaths);
|
||||||
FreeAndNil(FNamespaces);
|
FreeAndNil(FNamespaces);
|
||||||
@ -1710,7 +1704,6 @@ begin
|
|||||||
FUnitPathsFromCmdLine:=0;
|
FUnitPathsFromCmdLine:=0;
|
||||||
FIncludePaths.Clear;
|
FIncludePaths.Clear;
|
||||||
FIncludePathsFromCmdLine:=0;
|
FIncludePathsFromCmdLine:=0;
|
||||||
FInsertFilenames.Clear;
|
|
||||||
FStates:=FStates-[cfsMainJSFileResolved];
|
FStates:=FStates-[cfsMainJSFileResolved];
|
||||||
FNamespaces.Clear;
|
FNamespaces.Clear;
|
||||||
FNamespacesFromCmdLine:=0;
|
FNamespacesFromCmdLine:=0;
|
||||||
@ -1865,57 +1858,6 @@ begin
|
|||||||
raise EFileNotFoundError.Create('invalid file name "'+Filename+'"');
|
raise EFileNotFoundError.Create('invalid file name "'+Filename+'"');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TPas2jsFilesCache.InsertCustomJSFiles(aWriter: TPas2JSMapper);
|
|
||||||
var
|
|
||||||
i: Integer;
|
|
||||||
Filename: String;
|
|
||||||
FileResolver: TPas2jsFileResolver;
|
|
||||||
aFile: TPas2jsCachedFile;
|
|
||||||
begin
|
|
||||||
if InsertFilenames.Count=0 then exit;
|
|
||||||
FileResolver:=CreateResolver;
|
|
||||||
try
|
|
||||||
for i:=0 to InsertFilenames.Count-1 do begin
|
|
||||||
Filename:=FindCustomJSFileName(ResolveDots(InsertFilenames[i]));
|
|
||||||
if Filename='' then
|
|
||||||
begin
|
|
||||||
Log.LogMsg(nCustomJSFileNotFound,[InsertFilenames[i]]);
|
|
||||||
raise EFileNotFoundError.Create('');
|
|
||||||
end;
|
|
||||||
aFile:=LoadFile(Filename);
|
|
||||||
if aFile.Source='' then continue;
|
|
||||||
aWriter.WriteFile(aFile.Source,Filename);
|
|
||||||
end
|
|
||||||
finally
|
|
||||||
FileResolver.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TPas2jsFilesCache.IndexOfInsertJSFilename(const aFilename: string
|
|
||||||
): integer;
|
|
||||||
var
|
|
||||||
i: Integer;
|
|
||||||
begin
|
|
||||||
for i:=0 to FInsertFilenames.Count-1 do
|
|
||||||
if CompareFilenames(aFilename,InsertFilenames[i])=0 then
|
|
||||||
exit(i);
|
|
||||||
Result:=-1;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TPas2jsFilesCache.AddInsertJSFilename(const aFilename: string);
|
|
||||||
begin
|
|
||||||
if IndexOfInsertJSFilename(aFilename)<0 then
|
|
||||||
InsertFilenames.Add(aFilename);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TPas2jsFilesCache.RemoveInsertJSFilename(const aFilename: string);
|
|
||||||
var
|
|
||||||
i: Integer;
|
|
||||||
begin
|
|
||||||
i:=IndexOfInsertJSFilename(aFilename);
|
|
||||||
if i>=0 then
|
|
||||||
InsertFilenames.Delete(i);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TPas2jsFilesCache.GetListing(const aDirectory: string;
|
procedure TPas2jsFilesCache.GetListing(const aDirectory: string;
|
||||||
var Files: TStrings; FullPaths: boolean);
|
var Files: TStrings; FullPaths: boolean);
|
||||||
@ -2066,7 +2008,7 @@ begin
|
|||||||
Result:=ExpandFileNamePJ(Filename,BaseDirectory);
|
Result:=ExpandFileNamePJ(Filename,BaseDirectory);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TPas2jsFilesCache.FindIncludeFileName(const aFilename: string; StrictFileCase : Boolean): String;
|
function TPas2jsFilesCache.FindIncludeFileName(const aFilename: string): String;
|
||||||
|
|
||||||
function SearchCasedInIncPath(const Filename: string): string;
|
function SearchCasedInIncPath(const Filename: string): string;
|
||||||
var
|
var
|
||||||
@ -2077,12 +2019,12 @@ function TPas2jsFilesCache.FindIncludeFileName(const aFilename: string; StrictFi
|
|||||||
if BaseDirectory<>'' then
|
if BaseDirectory<>'' then
|
||||||
begin
|
begin
|
||||||
Result:=BaseDirectory+Filename;
|
Result:=BaseDirectory+Filename;
|
||||||
if SearchLowUpCase(Result,StrictFileCase) then exit;
|
if SearchLowUpCase(Result) then exit;
|
||||||
end;
|
end;
|
||||||
// then search in include path
|
// then search in include path
|
||||||
for i:=0 to IncludePaths.Count-1 do begin
|
for i:=0 to IncludePaths.Count-1 do begin
|
||||||
Result:=IncludeTrailingPathDelimiter(IncludePaths[i])+Filename;
|
Result:=IncludeTrailingPathDelimiter(IncludePaths[i])+Filename;
|
||||||
if SearchLowUpCase(Result,StrictFileCase) then exit;
|
if SearchLowUpCase(Result) then exit;
|
||||||
end;
|
end;
|
||||||
Result:='';
|
Result:='';
|
||||||
end;
|
end;
|
||||||
@ -2100,7 +2042,7 @@ begin
|
|||||||
if FilenameIsAbsolute(Filename) then
|
if FilenameIsAbsolute(Filename) then
|
||||||
begin
|
begin
|
||||||
Result:=Filename;
|
Result:=Filename;
|
||||||
if not SearchLowUpCase(Result,StrictFileCase) then
|
if not SearchLowUpCase(Result) then
|
||||||
Result:='';
|
Result:='';
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
@ -2121,7 +2063,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TPas2jsFilesCache.FindSourceFileName(const aFilename: string; StrictFileCase : Boolean): String;
|
function TPas2jsFilesCache.FindSourceFileName(const aFilename: string): String;
|
||||||
|
|
||||||
Var
|
Var
|
||||||
Found: Boolean;
|
Found: Boolean;
|
||||||
@ -2142,18 +2084,18 @@ begin
|
|||||||
raise EFileNotFoundError.Create(aFilename)
|
raise EFileNotFoundError.Create(aFilename)
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TPas2jsFilesCache.FindUnitFileName(const aUnitname, InFilename: string; out IsForeign: boolean; StrictFileCase : Boolean): String;
|
function TPas2jsFilesCache.FindUnitFileName(const aUnitname, InFilename: string; out IsForeign: boolean): String;
|
||||||
|
|
||||||
function SearchInDir(Dir: string; var Filename: string): boolean;
|
function SearchInDir(Dir: string; var Filename: string): boolean;
|
||||||
// search in Dir for pp, pas, p times given case, lower case, upper case
|
// search in Dir for pp, pas, p times given case, lower case, upper case
|
||||||
begin
|
begin
|
||||||
Dir:=IncludeTrailingPathDelimiter(Dir);
|
Dir:=IncludeTrailingPathDelimiter(Dir);
|
||||||
Filename:=Dir+aUnitname+'.pp';
|
Filename:=Dir+aUnitname+'.pp';
|
||||||
if SearchLowUpCase(Filename,StrictFileCase) then exit(true);
|
if SearchLowUpCase(Filename) then exit(true);
|
||||||
Filename:=Dir+aUnitname+'.pas';
|
Filename:=Dir+aUnitname+'.pas';
|
||||||
if SearchLowUpCase(Filename,StrictFileCase) then exit(true);
|
if SearchLowUpCase(Filename) then exit(true);
|
||||||
Filename:=Dir+aUnitname+'.p';
|
Filename:=Dir+aUnitname+'.p';
|
||||||
if SearchLowUpCase(Filename,StrictFileCase) then exit(true);
|
if SearchLowUpCase(Filename) then exit(true);
|
||||||
Result:=false;
|
Result:=false;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -2170,11 +2112,11 @@ begin
|
|||||||
Result:=ResolveDots(aFilename);
|
Result:=ResolveDots(aFilename);
|
||||||
if FilenameIsAbsolute(Result) then
|
if FilenameIsAbsolute(Result) then
|
||||||
begin
|
begin
|
||||||
if SearchLowUpCase(Result,StrictFileCase) then exit;
|
if SearchLowUpCase(Result) then exit;
|
||||||
end else
|
end else
|
||||||
begin
|
begin
|
||||||
Result:=ResolveDots(BaseDirectory+Result);
|
Result:=ResolveDots(BaseDirectory+Result);
|
||||||
if SearchLowUpCase(Result,StrictFileCase) then exit;
|
if SearchLowUpCase(Result) then exit;
|
||||||
end;
|
end;
|
||||||
exit('');
|
exit('');
|
||||||
end;
|
end;
|
||||||
@ -2286,7 +2228,7 @@ begin
|
|||||||
Log.LogMsgIgnoreFilter(nSearchingFileNotFound,[FormatPath(Filename)]);
|
Log.LogMsgIgnoreFilter(nSearchingFileNotFound,[FormatPath(Filename)]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TPas2jsFilesCache.SearchLowUpCase(var Filename: string; StrictFileCase : Boolean): boolean;
|
function TPas2jsFilesCache.SearchLowUpCase(var Filename: string): boolean;
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
{$IFNDEF CaseInsensitiveFilenames}
|
{$IFNDEF CaseInsensitiveFilenames}
|
||||||
|
@ -35,7 +35,7 @@ Type
|
|||||||
Function Compiler : TPas2JSCompiler;
|
Function Compiler : TPas2JSCompiler;
|
||||||
Function HandleException(E: exception) : Boolean; override;
|
Function HandleException(E: exception) : Boolean; override;
|
||||||
function FindPCU(const UseUnitName: string): string;override;
|
function FindPCU(const UseUnitName: string): string;override;
|
||||||
function FindPCU(const UseUnitName: string; out aFormat: TPas2JSPrecompileFormat): string;
|
function FindPCU(const UseUnitName: string; out aFormat: TPas2JSPrecompileFormat): string;
|
||||||
Function HasReader : Boolean; override;
|
Function HasReader : Boolean; override;
|
||||||
Function ReadContinue: Boolean; override;
|
Function ReadContinue: Boolean; override;
|
||||||
Function ReadCanContinue : Boolean; override;
|
Function ReadCanContinue : Boolean; override;
|
||||||
@ -199,7 +199,7 @@ function TFilerPCUSupport.FindPCU(const UseUnitName: string; out aFormat: TPas2
|
|||||||
CurFormat:=PrecompileFormats[i];
|
CurFormat:=PrecompileFormats[i];
|
||||||
if not CurFormat.Enabled then continue;
|
if not CurFormat.Enabled then continue;
|
||||||
Filename:=DirPath+UseUnitName+'.'+CurFormat.Ext;
|
Filename:=DirPath+UseUnitName+'.'+CurFormat.Ext;
|
||||||
if Compiler.FileCache.SearchLowUpCase(Filename,MyFile.FileResolver.StrictFileCase) then
|
if Compiler.FileCache.SearchLowUpCase(Filename) then
|
||||||
begin
|
begin
|
||||||
FindPCU:=Filename;
|
FindPCU:=Filename;
|
||||||
aFormat:=CurFormat;
|
aFormat:=CurFormat;
|
||||||
|
Loading…
Reference in New Issue
Block a user