mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-18 06:59:21 +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';
|
lisConfigDirectory = 'Lazarus config directory';
|
||||||
|
|
||||||
lisPkgMacroPackageDirectoryParameterIsPackageID = 'Package directory. '
|
lisPkgMacroPackageDirectoryParameterIsPackageID = 'Package directory. '
|
||||||
+'Parameter is package ID';
|
+'Parameter is package ID, e.g. "Name" or "Name 1.0"';
|
||||||
lisPkgMacroPackageSourceSearchPathParameterIsPackageID = 'Package source '
|
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 '
|
lisPkgMacroPackageUnitSearchPathParameterIsPackageID = 'Package unit search '
|
||||||
+'path. Parameter is package ID';
|
+'path. Parameter is package ID, e.g. "Name" or "Name 1.0"';
|
||||||
lisPkgMacroPackageIncludeFilesSearchPathParameterIsPackageID = 'Package '
|
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
|
// main bar menu
|
||||||
lisMenuFile = '&File';
|
lisMenuFile = '&File';
|
||||||
|
@ -2229,6 +2229,8 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
if s = '' then
|
||||||
|
begin
|
||||||
// check local macros
|
// check local macros
|
||||||
if SysUtils.CompareText(MacroName,'PkgOutDir')=0 then begin
|
if SysUtils.CompareText(MacroName,'PkgOutDir')=0 then begin
|
||||||
Handled:=true;
|
Handled:=true;
|
||||||
@ -2247,6 +2249,22 @@ begin
|
|||||||
Handled:=true;
|
Handled:=true;
|
||||||
s:=Name;
|
s:=Name;
|
||||||
exit;
|
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;
|
end;
|
||||||
|
|
||||||
// check global macros
|
// check global macros
|
||||||
|
@ -251,11 +251,16 @@ type
|
|||||||
var {%H-}Abort: boolean): string;
|
var {%H-}Abort: boolean): string;
|
||||||
function MacroFunctionPkgIncPath(const s: string; const {%H-}Data: PtrInt;
|
function MacroFunctionPkgIncPath(const s: string; const {%H-}Data: PtrInt;
|
||||||
var {%H-}Abort: boolean): string;
|
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 MacroFunctionCTPkgDir(Data: Pointer): boolean;
|
||||||
function MacroFunctionCTPkgSrcPath(Data: Pointer): boolean;
|
function MacroFunctionCTPkgSrcPath(Data: Pointer): boolean;
|
||||||
function MacroFunctionCTPkgUnitPath(Data: Pointer): boolean;
|
function MacroFunctionCTPkgUnitPath(Data: Pointer): boolean;
|
||||||
function MacroFunctionCTPkgIncPath(Data: Pointer): boolean;
|
function MacroFunctionCTPkgIncPath(Data: Pointer): boolean;
|
||||||
function MacroFunctionCTPkgName(Data: Pointer): boolean;
|
function MacroFunctionCTPkgName(Data: Pointer): boolean;
|
||||||
|
function MacroFunctionCTPkgOutDir(Data: Pointer): boolean;
|
||||||
function GetPackageFromMacroParameter(const TheID: string;
|
function GetPackageFromMacroParameter(const TheID: string;
|
||||||
out APackage: TLazPackage): boolean;
|
out APackage: TLazPackage): boolean;
|
||||||
public
|
public
|
||||||
@ -1027,6 +1032,12 @@ begin
|
|||||||
GlobalMacroList.Add(TTransferMacro.Create('PkgIncPath','',
|
GlobalMacroList.Add(TTransferMacro.Create('PkgIncPath','',
|
||||||
lisPkgMacroPackageIncludeFilesSearchPathParameterIsPackageID,
|
lisPkgMacroPackageIncludeFilesSearchPathParameterIsPackageID,
|
||||||
@MacroFunctionPkgIncPath,[]));
|
@MacroFunctionPkgIncPath,[]));
|
||||||
|
GlobalMacroList.Add(TTransferMacro.Create('PkgName','',
|
||||||
|
lisPkgMacroPackageNameParameterIsPackageID,
|
||||||
|
@MacroFunctionPkgName,[]));
|
||||||
|
GlobalMacroList.Add(TTransferMacro.Create('PkgOutDir','',
|
||||||
|
lisPkgMacroPackageOutputDirectoryParameterIsPackageID,
|
||||||
|
@MacroFunctionPkgOutDir,[]));
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1182,6 +1193,23 @@ begin
|
|||||||
Result:='';
|
Result:='';
|
||||||
end;
|
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;
|
function TLazPackageGraph.MacroFunctionCTPkgDir(Data: Pointer): boolean;
|
||||||
var
|
var
|
||||||
FuncData: PReadFunctionData;
|
FuncData: PReadFunctionData;
|
||||||
@ -1235,6 +1263,17 @@ begin
|
|||||||
Result:=true;
|
Result:=true;
|
||||||
end;
|
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;
|
function TLazPackageGraph.GetPackageFromMacroParameter(const TheID: string;
|
||||||
out APackage: TLazPackage): boolean;
|
out APackage: TLazPackage): boolean;
|
||||||
var
|
var
|
||||||
|
@ -2973,6 +2973,8 @@ begin
|
|||||||
'PKGINCPATH',nil,@PackageGraph.MacroFunctionCTPkgIncPath);
|
'PKGINCPATH',nil,@PackageGraph.MacroFunctionCTPkgIncPath);
|
||||||
CodeToolBoss.DefineTree.MacroFunctions.AddExtended(
|
CodeToolBoss.DefineTree.MacroFunctions.AddExtended(
|
||||||
'PKGNAME',nil,@PackageGraph.MacroFunctionCTPkgName);
|
'PKGNAME',nil,@PackageGraph.MacroFunctionCTPkgName);
|
||||||
|
CodeToolBoss.DefineTree.MacroFunctions.AddExtended(
|
||||||
|
'PKGOUTDIR',nil,@PackageGraph.MacroFunctionCTPkgOutDir);
|
||||||
|
|
||||||
LazPackageDescriptors:=TLazPackageDescriptors.Create;
|
LazPackageDescriptors:=TLazPackageDescriptors.Create;
|
||||||
LazPackageDescriptors.AddDefaultPackageDescriptors;
|
LazPackageDescriptors.AddDefaultPackageDescriptors;
|
||||||
|
Loading…
Reference in New Issue
Block a user