lazarus/ide/frames/compiler_linking_options.pas
paul e9210bf352 ide, ideintf: prepare IDEOptionsIntf and IDE for common package options dialog:
- add GroupPackage and GroupPkgCompiler
  - split compiler options and project options into 2 independent options groups
  - register compiler frames for both GroupCompiler and GroupPkgCompiler
  - change DoOpenIDEOptions: replace filter argument from a class to array of classes to show [project options, compiler options] editor and [package options, compiler options] editors
  - inherit TLazPackageID from TAbstractIDEPackageOptions class
  - fix showing of required frame (like Object inspector or Editor) in the IDE options editor
  + other minor edits

git-svn-id: trunk@29481 -
2011-02-12 13:00:34 +00:00

139 lines
4.2 KiB
ObjectPascal

unit compiler_linking_options;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, LCLProc,
StdCtrls, IDEOptionsIntf, Project, CompilerOptions, LazarusIDEStrConsts;
type
{ TCompilerLinkingOptionsFrame }
TCompilerLinkingOptionsFrame = class(TAbstractIDEOptionsEditor)
chkDebugGDB: TCheckBox;
chkGenerateDwarf: TCheckBox;
chkGenGProfCode: TCheckBox;
chkLinkSmart: TCheckBox;
chkOptionsLinkOpt: TCheckBox;
chkSymbolsStrip: TCheckBox;
chkUseExternalDbgSyms: TCheckBox;
chkUseHeaptrc: TCheckBox;
chkUseLineInfoUnit: TCheckBox;
chkUseValgrind: TCheckBox;
chkWin32GraphicApp: TCheckBox;
edtOptionsLinkOpt: TEdit;
grpDebugging: TGroupBox;
grpLinkLibraries: TGroupBox;
grpOptions: TGroupBox;
TargetSpecificsGrpBox: TGroupBox;
public
function GetTitle: string; override;
procedure Setup(ADialog: TAbstractOptionsEditorDialog); override;
procedure ReadSettings(AOptions: TAbstractIDEOptions); override;
procedure WriteSettings(AOptions: TAbstractIDEOptions); override;
class function SupportedOptionsClass: TAbstractIDEOptionsClass; override;
end;
implementation
{$R *.lfm}
{ TCompilerLinkingOptionsFrame }
function TCompilerLinkingOptionsFrame.GetTitle: string;
begin
Result := dlgCOLinking;
end;
procedure TCompilerLinkingOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog);
begin
// Setup the Linking Tab
with grpDebugging do
begin
AutoSize := True;
Caption := dlgCODebugging;
end;
chkDebugGDB.Caption := dlgCOGDB + ' (-g)';
chkUseLineInfoUnit.Caption := dlgLNumsBct + ' (-gl)';
chkGenerateDwarf.Caption := dlgGenerateDwarf + '(-gw)';
chkUseHeaptrc.Caption := dlgCOHeaptrc + ' (-gh)';
chkUseValgrind.Caption := dlgCOValgrind + ' (-gv)';
chkGenGProfCode.Caption := dlgGPROF + ' (-pg)';
chkSymbolsStrip.Caption := dlgCOStrip + ' (-Xs)';
chkUseExternalDbgSyms.Caption := dlgExtSymb + ' (-Xg)';
grpLinkLibraries.Caption := dlgLinkLibraries;
chkLinkSmart.Caption := dlgLinkSmart + ' (-XX)';
TargetSpecificsGrpBox.Caption := lisCOTargetOSSpecificOptions;
chkWin32GraphicApp.Caption := dlgWin32GUIApp + ' (-WG)';
grpOptions.Caption := dlgCOOpts + ' (-k)';
chkOptionsLinkOpt.Caption := dlgPassOptsLinker;
edtOptionsLinkOpt.Text := '';
end;
procedure TCompilerLinkingOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
begin
with AOptions as TBaseCompilerOptions do
begin
chkDebugGDB.Checked := GenerateDebugInfo;
chkUseLineInfoUnit.Checked := UseLineInfoUnit;
chkGenerateDwarf.Checked := GenerateDwarf;
chkUseHeaptrc.Checked := UseHeaptrc;
chkUseValgrind.Checked := UseValgrind;
chkGenGProfCode.Checked := GenGProfCode;
chkSymbolsStrip.Checked := StripSymbols;
chkSymbolsStrip.Enabled := NeedsLinkerOpts;
chkUseExternalDbgSyms.Checked := UseExternalDbgSyms;
chkLinkSmart.Checked := LinkSmart;
grpLinkLibraries.Enabled := NeedsLinkerOpts;
chkOptionsLinkOpt.Checked := PassLinkerOptions;
edtOptionsLinkOpt.Text := LinkerOptions;
chkWin32GraphicApp.Checked := Win32GraphicApp;
chkWin32GraphicApp.Enabled := NeedsLinkerOpts;
grpOptions.Enabled := NeedsLinkerOpts;
end;
end;
procedure TCompilerLinkingOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
begin
with AOptions as TBaseCompilerOptions do
begin
GenerateDebugInfo := chkDebugGDB.Checked;
UseLineInfoUnit := chkUseLineInfoUnit.Checked;
GenerateDwarf := chkGenerateDwarf.Checked;
UseHeaptrc := chkUseHeaptrc.Checked;
UseValgrind := chkUseValgrind.Checked;
GenGProfCode := chkGenGProfCode.Checked;
StripSymbols := chkSymbolsStrip.Checked;
UseExternalDbgSyms := chkUseExternalDbgSyms.Checked;
PassLinkerOptions := chkOptionsLinkOpt.Checked;
LinkerOptions := edtOptionsLinkOpt.Text;
Win32GraphicApp := chkWin32GraphicApp.Checked;
LinkSmart := chkLinkSmart.Checked;
end;
end;
class function TCompilerLinkingOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass;
begin
Result := TBaseCompilerOptions;
end;
initialization
RegisterIDEOptionsEditor(GroupCompiler, TCompilerLinkingOptionsFrame,
CompilerOptionsLinking);
RegisterIDEOptionsEditor(GroupPkgCompiler, TCompilerLinkingOptionsFrame,
CompilerOptionsLinking);
end.