mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-16 18:09:23 +02:00
IDE: package macros with parameters usable in packages, new macro PkgOutDir, from Luiz Americo
git-svn-id: trunk@50472 -
This commit is contained in:
parent
ec869d657e
commit
674d60d033
@ -255,13 +255,15 @@ resourcestring
|
||||
lisConfigDirectory = 'Lazarus config directory';
|
||||
|
||||
lisPkgMacroPackageDirectoryParameterIsPackageID = 'Package directory. '
|
||||
+'Parameter is package ID';
|
||||
+'Parameter is package ID, e.g. "Name" or "Name 1.0"';
|
||||
lisPkgMacroPackageSourceSearchPathParameterIsPackageID = 'Package source '
|
||||
+'search path. Parameter is package ID';
|
||||
+'search path. Parameter is package ID, e.g. "Name" or "Name 1.0"';
|
||||
lisPkgMacroPackageUnitSearchPathParameterIsPackageID = 'Package unit search '
|
||||
+'path. Parameter is package ID';
|
||||
+'path. Parameter is package ID, e.g. "Name" or "Name 1.0"';
|
||||
lisPkgMacroPackageIncludeFilesSearchPathParameterIsPackageID = 'Package '
|
||||
+'include files search path. Parameter is package ID';
|
||||
+'include files search path. Parameter is package ID, e.g. "Name" or "Name 1.0"';
|
||||
lisPkgMacroPackageNameParameterIsPackageID = 'Package name. Parameter is package ID, e.g. "Name" or "Name 1.0"';
|
||||
lisPkgMacroPackageOutputDirectoryParameterIsPackageID = 'Package output directory. Parameter is package ID, e.g. "Name" or "Name 1.0"';
|
||||
|
||||
// main bar menu
|
||||
lisMenuFile = '&File';
|
||||
|
@ -2229,24 +2229,42 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
if s = '' then
|
||||
begin
|
||||
// check local macros
|
||||
if SysUtils.CompareText(MacroName,'PkgOutDir')=0 then begin
|
||||
Handled:=true;
|
||||
if Data=CompilerOptionMacroNormal then
|
||||
s:=CompilerOptions.ParsedOpts.GetParsedValue(pcosOutputDir)
|
||||
else
|
||||
s:=CompilerOptions.ParsedOpts.GetParsedPIValue(pcosOutputDir);
|
||||
exit;
|
||||
end
|
||||
else if SysUtils.CompareText(MacroName,'PkgDir')=0 then begin
|
||||
Handled:=true;
|
||||
s:=FDirectory;
|
||||
exit;
|
||||
end
|
||||
else if SysUtils.CompareText(MacroName,'PkgName')=0 then begin
|
||||
Handled:=true;
|
||||
s:=Name;
|
||||
exit;
|
||||
if SysUtils.CompareText(MacroName,'PkgOutDir')=0 then begin
|
||||
Handled:=true;
|
||||
if Data=CompilerOptionMacroNormal then
|
||||
s:=CompilerOptions.ParsedOpts.GetParsedValue(pcosOutputDir)
|
||||
else
|
||||
s:=CompilerOptions.ParsedOpts.GetParsedPIValue(pcosOutputDir);
|
||||
exit;
|
||||
end
|
||||
else if SysUtils.CompareText(MacroName,'PkgDir')=0 then begin
|
||||
Handled:=true;
|
||||
s:=FDirectory;
|
||||
exit;
|
||||
end
|
||||
else if SysUtils.CompareText(MacroName,'PkgName')=0 then begin
|
||||
Handled:=true;
|
||||
s:=Name;
|
||||
exit;
|
||||
end
|
||||
else if SysUtils.CompareText(MacroName,'PkgIncPath')=0 then begin
|
||||
Handled:=true;
|
||||
s:=GetIncludePath(false);
|
||||
exit;
|
||||
end
|
||||
else if SysUtils.CompareText(MacroName,'PkgSrcPath')=0 then begin
|
||||
Handled:=true;
|
||||
s:=SourceDirectories.CreateSearchPathFromAllFiles;
|
||||
exit;
|
||||
end
|
||||
else if SysUtils.CompareText(MacroName,'PkgUnitPath')=0 then begin
|
||||
Handled:=true;
|
||||
s:=GetUnitPath(false);
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
|
||||
// check global macros
|
||||
|
@ -251,11 +251,16 @@ type
|
||||
var {%H-}Abort: boolean): string;
|
||||
function MacroFunctionPkgIncPath(const s: string; const {%H-}Data: PtrInt;
|
||||
var {%H-}Abort: boolean): string;
|
||||
function MacroFunctionPkgName(const s: string; const {%H-}Data: PtrInt;
|
||||
var {%H-}Abort: boolean): string;
|
||||
function MacroFunctionPkgOutDir(const s: string; const {%H-}Data: PtrInt;
|
||||
var {%H-}Abort: boolean): string;
|
||||
function MacroFunctionCTPkgDir(Data: Pointer): boolean;
|
||||
function MacroFunctionCTPkgSrcPath(Data: Pointer): boolean;
|
||||
function MacroFunctionCTPkgUnitPath(Data: Pointer): boolean;
|
||||
function MacroFunctionCTPkgIncPath(Data: Pointer): boolean;
|
||||
function MacroFunctionCTPkgName(Data: Pointer): boolean;
|
||||
function MacroFunctionCTPkgOutDir(Data: Pointer): boolean;
|
||||
function GetPackageFromMacroParameter(const TheID: string;
|
||||
out APackage: TLazPackage): boolean;
|
||||
public
|
||||
@ -1027,6 +1032,12 @@ begin
|
||||
GlobalMacroList.Add(TTransferMacro.Create('PkgIncPath','',
|
||||
lisPkgMacroPackageIncludeFilesSearchPathParameterIsPackageID,
|
||||
@MacroFunctionPkgIncPath,[]));
|
||||
GlobalMacroList.Add(TTransferMacro.Create('PkgName','',
|
||||
lisPkgMacroPackageNameParameterIsPackageID,
|
||||
@MacroFunctionPkgName,[]));
|
||||
GlobalMacroList.Add(TTransferMacro.Create('PkgOutDir','',
|
||||
lisPkgMacroPackageOutputDirectoryParameterIsPackageID,
|
||||
@MacroFunctionPkgOutDir,[]));
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -1182,6 +1193,23 @@ begin
|
||||
Result:='';
|
||||
end;
|
||||
|
||||
function TLazPackageGraph.MacroFunctionPkgName(const s: string;
|
||||
const Data: PtrInt; var Abort: boolean): string;
|
||||
begin
|
||||
Result := s;
|
||||
end;
|
||||
|
||||
function TLazPackageGraph.MacroFunctionPkgOutDir(const s: string;
|
||||
const Data: PtrInt; var Abort: boolean): string;
|
||||
var
|
||||
APackage: TLazPackage;
|
||||
begin
|
||||
if GetPackageFromMacroParameter(s,APackage) then
|
||||
Result:=APackage.GetOutputDirectory
|
||||
else
|
||||
Result:='';
|
||||
end;
|
||||
|
||||
function TLazPackageGraph.MacroFunctionCTPkgDir(Data: Pointer): boolean;
|
||||
var
|
||||
FuncData: PReadFunctionData;
|
||||
@ -1235,6 +1263,17 @@ begin
|
||||
Result:=true;
|
||||
end;
|
||||
|
||||
function TLazPackageGraph.MacroFunctionCTPkgOutDir(Data: Pointer): boolean;
|
||||
var
|
||||
FuncData: PReadFunctionData;
|
||||
APackage: TLazPackage;
|
||||
begin
|
||||
FuncData:=PReadFunctionData(Data);
|
||||
Result:=GetPackageFromMacroParameter(FuncData^.Param,APackage);
|
||||
if Result then
|
||||
FuncData^.Result:=APackage.GetOutputDirectory;
|
||||
end;
|
||||
|
||||
function TLazPackageGraph.GetPackageFromMacroParameter(const TheID: string;
|
||||
out APackage: TLazPackage): boolean;
|
||||
var
|
||||
|
@ -2973,6 +2973,8 @@ begin
|
||||
'PKGINCPATH',nil,@PackageGraph.MacroFunctionCTPkgIncPath);
|
||||
CodeToolBoss.DefineTree.MacroFunctions.AddExtended(
|
||||
'PKGNAME',nil,@PackageGraph.MacroFunctionCTPkgName);
|
||||
CodeToolBoss.DefineTree.MacroFunctions.AddExtended(
|
||||
'PKGOUTDIR',nil,@PackageGraph.MacroFunctionCTPkgOutDir);
|
||||
|
||||
LazPackageDescriptors:=TLazPackageDescriptors.Create;
|
||||
LazPackageDescriptors.AddDefaultPackageDescriptors;
|
||||
|
Loading…
Reference in New Issue
Block a user