From d30c687245eb801a608f585d1cc786eb0ee989e1 Mon Sep 17 00:00:00 2001 From: juha Date: Fri, 26 Jul 2013 12:46:28 +0000 Subject: [PATCH] IDE: change locations of some compiler option GUI elements. git-svn-id: trunk@42210 - --- ide/frames/compiler_codegen_options.lfm | 192 ++++++++-------------- ide/frames/compiler_codegen_options.pas | 41 ++--- ide/frames/compiler_config_target.lfm | 28 ---- ide/frames/compiler_config_target.pas | 76 ++------- ide/frames/compiler_debugging_options.lfm | 101 +++++++++++- ide/frames/compiler_debugging_options.pas | 29 ++++ ide/frames/compiler_parsing_options.lfm | 36 +++- ide/frames/compiler_parsing_options.pas | 90 ++++++++-- ide/lazarusidestrconsts.pas | 6 +- 9 files changed, 329 insertions(+), 270 deletions(-) diff --git a/ide/frames/compiler_codegen_options.lfm b/ide/frames/compiler_codegen_options.lfm index cab0f4619d..22632c3f8a 100644 --- a/ide/frames/compiler_codegen_options.lfm +++ b/ide/frames/compiler_codegen_options.lfm @@ -9,23 +9,21 @@ object CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame DesignLeft = 290 DesignTop = 90 object grpUnitStyle: TGroupBox - AnchorSideLeft.Control = grpChecks - AnchorSideTop.Control = grpChecks - AnchorSideTop.Side = asrBottom + AnchorSideLeft.Control = grpOptimizationLevels + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = grpOptimizationLevels AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = grpHeapStackSize AnchorSideBottom.Side = asrBottom - Left = 0 - Height = 87 - Top = 171 + Left = 161 + Height = 79 + Top = 0 Width = 160 - Anchors = [akTop, akLeft, akBottom] AutoSize = True - BorderSpacing.Top = 11 + BorderSpacing.Left = 15 Caption = 'grpUnitStyle' - ClientHeight = 68 + ClientHeight = 60 ClientWidth = 156 - TabOrder = 1 + TabOrder = 0 object chkSmartLinkUnit: TCheckBox Left = 6 Height = 21 @@ -47,89 +45,23 @@ object CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame TabOrder = 1 end end - object grpChecks: TGroupBox - AnchorSideLeft.Control = Owner - AnchorSideTop.Control = Owner - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Side = asrBottom - Left = 0 - Height = 160 - Top = 0 - Width = 184 - AutoSize = True - Caption = 'grpChecks' - ChildSizing.TopBottomSpacing = 6 - ChildSizing.Layout = cclLeftToRightThenTopToBottom - ChildSizing.ControlsPerLine = 1 - ClientHeight = 141 - ClientWidth = 180 - TabOrder = 0 - object chkChecksIO: TCheckBox - Left = 6 - Height = 21 - Top = 6 - Width = 168 - BorderSpacing.Around = 6 - Caption = 'chkChecksIO' - TabOrder = 0 - end - object chkChecksRange: TCheckBox - Left = 6 - Height = 21 - Top = 33 - Width = 168 - BorderSpacing.Around = 6 - Caption = 'chkChecksRange' - TabOrder = 1 - end - object chkChecksOverflow: TCheckBox - Left = 6 - Height = 21 - Top = 60 - Width = 168 - BorderSpacing.Around = 6 - Caption = 'chkChecksOverflow' - TabOrder = 2 - end - object chkChecksStack: TCheckBox - Left = 6 - Height = 21 - Top = 87 - Width = 168 - BorderSpacing.Around = 6 - Caption = 'chkChecksStack' - TabOrder = 3 - end - object chkVerifyObjMethodCall: TCheckBox - Left = 6 - Height = 21 - Top = 114 - Width = 168 - Caption = 'chkVerifyObjMethodCall' - TabOrder = 4 - end - end object grpHeapStackSize: TGroupBox AnchorSideLeft.Control = grpUnitStyle - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = grpChecks + AnchorSideTop.Control = grpUnitStyle AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom AnchorSideBottom.Side = asrBottom - Left = 167 + Left = 161 Height = 87 - Top = 171 - Width = 434 - Anchors = [akTop, akLeft, akRight] + Top = 84 + Width = 178 AutoSize = True - BorderSpacing.Left = 7 - BorderSpacing.Top = 11 + BorderSpacing.Top = 5 Caption = 'grpHeapStackSize' ChildSizing.TopBottomSpacing = 6 ClientHeight = 68 - ClientWidth = 430 - TabOrder = 2 + ClientWidth = 174 + TabOrder = 1 object edtHeapSize: TEdit AnchorSideLeft.Control = lbHeapSize AnchorSideLeft.Side = asrBottom @@ -139,7 +71,7 @@ object CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame Left = 86 Height = 25 Top = 6 - Width = 338 + Width = 82 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 6 BorderSpacing.Around = 6 @@ -168,7 +100,7 @@ object CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame Left = 88 Height = 25 Top = 37 - Width = 336 + Width = 80 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 6 BorderSpacing.Around = 6 @@ -188,28 +120,21 @@ object CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame ParentColor = False end end - object grpOptimizations: TGroupBox - AnchorSideLeft.Control = grpChecks - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = grpChecks - AnchorSideRight.Control = Owner + object grpOptimizationLevels: TGroupBox AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = grpChecks AnchorSideBottom.Side = asrBottom - Left = 191 - Height = 160 + Left = 0 + Height = 133 Top = 0 - Width = 410 - Anchors = [akTop, akLeft, akRight, akBottom] + Width = 146 AutoSize = True - BorderSpacing.Left = 7 - Caption = 'grpOptimizations' - ClientHeight = 141 - ClientWidth = 406 - TabOrder = 3 + Caption = 'grpOptimizationLevels' + ClientHeight = 114 + ClientWidth = 142 + TabOrder = 2 object radOptLevelNone: TRadioButton - AnchorSideLeft.Control = grpOptimizations - AnchorSideTop.Control = grpOptimizations + AnchorSideLeft.Control = grpOptimizationLevels + AnchorSideTop.Control = grpOptimizationLevels Left = 6 Height = 21 Top = 6 @@ -221,7 +146,7 @@ object CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame TabStop = True end object radOptLevel1: TRadioButton - AnchorSideLeft.Control = grpOptimizations + AnchorSideLeft.Control = grpOptimizationLevels AnchorSideTop.Control = radOptLevelNone AnchorSideTop.Side = asrBottom Left = 6 @@ -233,7 +158,7 @@ object CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame TabOrder = 1 end object radOptLevel2: TRadioButton - AnchorSideLeft.Control = grpOptimizations + AnchorSideLeft.Control = grpOptimizationLevels AnchorSideTop.Control = radOptLevel1 AnchorSideTop.Side = asrBottom Left = 6 @@ -245,7 +170,7 @@ object CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame TabOrder = 2 end object radOptLevel3: TRadioButton - AnchorSideLeft.Control = grpOptimizations + AnchorSideLeft.Control = grpOptimizationLevels AnchorSideTop.Control = radOptLevel2 AnchorSideTop.Side = asrBottom Left = 6 @@ -258,27 +183,24 @@ object CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame end end object grpLinking: TGroupBox - AnchorSideLeft.Control = Owner - AnchorSideTop.Control = grpUnitStyle + AnchorSideTop.Control = grpOptimizations AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 0 Height = 137 - Top = 269 - Width = 601 - Anchors = [akTop, akLeft, akRight] + Top = 221 + Width = 172 AutoSize = True - BorderSpacing.Top = 11 + BorderSpacing.Top = 5 Caption = 'grpLinking' ClientHeight = 118 - ClientWidth = 597 - TabOrder = 4 + ClientWidth = 168 + TabOrder = 3 object chkLinkSmart: TCheckBox Left = 6 Height = 21 Top = 6 - Width = 585 + Width = 156 Align = alTop BorderSpacing.Around = 6 Caption = 'chkLinkSmart' @@ -288,7 +210,7 @@ object CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame Left = 6 Height = 21 Top = 33 - Width = 585 + Width = 156 Align = alTop BorderSpacing.Around = 6 Caption = 'chkWin32GraphicApp' @@ -298,7 +220,7 @@ object CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame Left = 6 Height = 21 Top = 60 - Width = 585 + Width = 156 Align = alTop BorderSpacing.Around = 6 Caption = 'chkOptionsLinkOpt' @@ -313,7 +235,7 @@ object CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame Left = 25 Height = 25 Top = 87 - Width = 566 + Width = 137 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 19 BorderSpacing.Right = 6 @@ -322,4 +244,36 @@ object CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame Text = 'edtOptionsLinkOpt' end end + object grpOptimizations: TGroupBox + AnchorSideTop.Control = grpOptimizationLevels + AnchorSideTop.Side = asrBottom + Left = 0 + Height = 78 + Top = 138 + Width = 165 + AutoSize = True + BorderSpacing.Top = 5 + Caption = 'grpOptimizations' + ClientHeight = 59 + ClientWidth = 161 + TabOrder = 4 + object Label1: TLabel + Left = 6 + Height = 15 + Top = 38 + Width = 149 + BorderSpacing.Around = 6 + Caption = 'ToDo: more optimization' + ParentColor = False + end + object chkOptSmaller: TCheckBox + Left = 6 + Height = 21 + Top = 6 + Width = 114 + BorderSpacing.Around = 6 + Caption = 'chkOptSmaller' + TabOrder = 0 + end + end end diff --git a/ide/frames/compiler_codegen_options.pas b/ide/frames/compiler_codegen_options.pas index f5e4bb9128..dd3e4e4b3f 100644 --- a/ide/frames/compiler_codegen_options.pas +++ b/ide/frames/compiler_codegen_options.pas @@ -13,24 +13,21 @@ type { TCompilerCodegenOptionsFrame } TCompilerCodegenOptionsFrame = class(TAbstractIDEOptionsEditor) - chkChecksIO: TCheckBox; - chkChecksOverflow: TCheckBox; - chkChecksRange: TCheckBox; - chkChecksStack: TCheckBox; + chkOptSmaller: TCheckBox; chkLinkSmart: TCheckBox; chkOptionsLinkOpt: TCheckBox; chkSmartLinkUnit: TCheckBox; chkRelocatableUnit: TCheckBox; - chkVerifyObjMethodCall: TCheckBox; chkWin32GraphicApp: TCheckBox; edtHeapSize: TEdit; edtOptionsLinkOpt: TEdit; edtStackSize: TEdit; - grpLinking: TGroupBox; - grpChecks: TGroupBox; - grpHeapStackSize: TGroupBox; grpOptimizations: TGroupBox; + grpLinking: TGroupBox; + grpHeapStackSize: TGroupBox; + grpOptimizationLevels: TGroupBox; grpUnitStyle: TGroupBox; + Label1: TLabel; lbHeapSize: TLabel; lbStackSize: TLabel; radOptLevel1: TRadioButton; @@ -62,25 +59,21 @@ begin chkSmartLinkUnit.Caption := dlgCOSmartLinkable + ' (-CX)'; chkRelocatableUnit.Caption := dlgCORelocatable + ' (-WR)'; - grpChecks.Caption := dlgCOChecks; - chkChecksIO.Caption := 'I/O (-Ci)'; - chkChecksRange.Caption := dlgCORange + ' (-Cr)'; - chkChecksOverflow.Caption := dlgCOOverflow + ' (-Co)'; - chkChecksStack.Caption := dlgCOStack + ' (-Ct)'; - chkVerifyObjMethodCall.Caption := lisVerifyMethodCalls + ' (-CR)'; - grpHeapStackSize.Caption := dlgHeapAndStackSize; lbHeapSize.Caption := dlgHeapSize + ' (-Ch)'; lbStackSize.Caption := dlgStackSize + ' (-Cs)'; edtHeapSize.Text := ''; edtStackSize.Text := ''; - grpOptimizations.Caption := dlgOptimizationLevels; + grpOptimizationLevels.Caption := dlgOptimizationLevels; radOptLevelNone.Caption := dlgLevelNoneOpt; radOptLevel1.Caption := dlgLevel1Opt + ' (-O1)'; radOptLevel2.Caption := dlgLevel2Opt + ' (-O2)'; radOptLevel3.Caption := dlgLevel3Opt + ' (-O3)'; + grpOptimizations.Caption := dlgOtherOptimizations; + chkOptSmaller.Caption := lisSmallerRatherThanFaster + ' (-Os)'; + grpLinking.Caption := dlgCOLinking; chkLinkSmart.Caption := dlgLinkSmart + ' (-XX)'; chkWin32GraphicApp.Caption := dlgWin32GUIApp + ' (-WG)'; @@ -95,19 +88,13 @@ begin chkSmartLinkUnit.Checked := SmartLinkUnit; chkRelocatableUnit.Checked := RelocatableUnit; - chkChecksIO.Checked := IOChecks; - chkChecksRange.Checked := RangeChecks; - chkChecksOverflow.Checked := OverflowChecks; - chkChecksStack.Checked := StackChecks; - chkVerifyObjMethodCall.Checked := VerifyObjMethodCall; - grpHeapStackSize.Visible := NeedsLinkerOpts; edtHeapSize.Text := IntToStr(HeapSize); edtStackSize.Text := IntToStr(StackSize); //chkOptVarsInReg.Checked := VariablesInRegisters; //chkOptUncertain.Checked := UncertainOptimizations; - //chkOptSmaller.Checked := SmallerCode; + chkOptSmaller.Checked := SmallerCode; case OptimizationLevel of 1: radOptLevel1.Checked := True; @@ -136,12 +123,6 @@ begin SmartLinkUnit := chkSmartLinkUnit.Checked; RelocatableUnit := chkRelocatableUnit.Checked; - IOChecks := chkChecksIO.Checked; - RangeChecks := chkChecksRange.Checked; - OverflowChecks := chkChecksOverflow.Checked; - StackChecks := chkChecksStack.Checked; - VerifyObjMethodCall := chkVerifyObjMethodCall.Checked; - Val(edtHeapSize.Text, hs, code); if (code <> 0) then HeapSize := 0 @@ -156,7 +137,7 @@ begin //VariablesInRegisters := chkOptVarsInReg.Checked; //UncertainOptimizations := chkOptUncertain.Checked; - //SmallerCode := chkOptSmaller.Checked; + SmallerCode := chkOptSmaller.Checked; if (radOptLevel1.Checked) then OptimizationLevel := 1 diff --git a/ide/frames/compiler_config_target.lfm b/ide/frames/compiler_config_target.lfm index 59e1864877..9327cd493f 100644 --- a/ide/frames/compiler_config_target.lfm +++ b/ide/frames/compiler_config_target.lfm @@ -154,32 +154,4 @@ object CompilerConfigTargetFrame: TCompilerConfigTargetFrame TabOrder = 2 end end - object grpSyntaxMode: TGroupBox - Left = 0 - Height = 56 - Top = 250 - Width = 594 - Align = alTop - Anchors = [akTop] - AutoSize = True - BorderSpacing.Top = 11 - Caption = 'grpSyntaxMode' - ClientHeight = 37 - ClientWidth = 590 - TabOrder = 2 - object cmbSyntaxMode: TComboBox - AnchorSideRight.Control = grpSyntaxMode - AnchorSideRight.Side = asrBottom - Left = 6 - Height = 25 - Top = 6 - Width = 578 - Align = alLeft - Anchors = [akTop, akLeft, akRight, akBottom] - BorderSpacing.Around = 6 - ItemHeight = 0 - Style = csDropDownList - TabOrder = 0 - end - end end diff --git a/ide/frames/compiler_config_target.pas b/ide/frames/compiler_config_target.pas index eb41524a48..a6a9453842 100644 --- a/ide/frames/compiler_config_target.pas +++ b/ide/frames/compiler_config_target.pas @@ -29,7 +29,7 @@ interface uses Classes, SysUtils, FileUtil, Controls, Dialogs, StdCtrls, LCLProc, IDEOptionsIntf, - IDEDialogs, CompilerOptions, LazarusIDEStrConsts, PackageDefs, LinkScanner; + IDEDialogs, CompilerOptions, LazarusIDEStrConsts, PackageDefs; type @@ -38,10 +38,8 @@ type TCompilerConfigTargetFrame = class(TAbstractIDEOptionsEditor) chkConfigFile: TCheckBox; chkCustomConfigFile: TCheckBox; - cmbSyntaxMode: TComboBox; edtConfigPath: TEdit; grpConfigFile: TGroupBox; - grpSyntaxMode: TGroupBox; grpTargetPlatform: TGroupBox; lblTargetCPU: TLabel; lblTargetOS: TLabel; @@ -80,17 +78,17 @@ end; function ProcessorToCaption(const Processor: string): string; begin - if SysUtils.CompareText(Processor, '80386') = 0 then + if CompareText(Processor, '80386') = 0 then Result := '386/486 (-Op80386)' - else if SysUtils.CompareText(Processor, 'pentium') = 0 then + else if CompareText(Processor, 'pentium') = 0 then Result := 'Pentium/Pentium MMX (-OpPENTIUM)' - else if SysUtils.CompareText(Processor, 'pentium2') = 0 then + else if CompareText(Processor, 'pentium2') = 0 then Result := 'Pentium Pro/Pentium II/C6x86/K6 (-OpPENTIUM2)' - else if SysUtils.CompareText(Processor, 'pentium3') = 0 then + else if CompareText(Processor, 'pentium3') = 0 then Result := 'Pentium III (-OpPENTIUM3)' - else if SysUtils.CompareText(Processor, 'pentium4') = 0 then + else if CompareText(Processor, 'pentium4') = 0 then Result := 'Pentium IV (-OpPENTIUM4)' - else if SysUtils.CompareText(Processor, 'pentiumm') = 0 then + else if CompareText(Processor, 'pentiumm') = 0 then Result := 'Pentium M (-OpPENTIUMM)' else Result := '(' + lisDefault + ')'; @@ -98,52 +96,22 @@ end; function CaptionToProcessor(const Caption: string): string; begin - if System.Pos('-Op80386', Caption) > 0 then + if Pos('-Op80386', Caption) > 0 then Result := '80386' - else if System.Pos('-OpPENTIUMM', Caption) > 0 then + else if Pos('-OpPENTIUMM', Caption) > 0 then Result := 'pentiumm' - else if System.Pos('-OpPENTIUM4', Caption) > 0 then + else if Pos('-OpPENTIUM4', Caption) > 0 then Result := 'pentium4' - else if System.Pos('-OpPENTIUM3', Caption) > 0 then + else if Pos('-OpPENTIUM3', Caption) > 0 then Result := 'pentium3' - else if System.Pos('-OpPENTIUM2', Caption) > 0 then + else if Pos('-OpPENTIUM2', Caption) > 0 then Result := 'pentium2' - else if System.Pos('-OpPENTIUM', Caption) > 0 then + else if Pos('-OpPENTIUM', Caption) > 0 then Result := 'pentium' else Result := ''; end; -function SyntaxModeToCaption(const Mode: string): string; -begin - if SysUtils.CompareText(Mode, 'ObjFPC') = 0 then - Result := lisObjectPascalDefault + ' (-Mobjfpc)' - else if SysUtils.CompareText(Mode, 'Delphi') = 0 then - Result := lisDelphi + ' (-Mdelphi)' - else if SysUtils.CompareText(Mode, 'tp') = 0 then - Result := lisTurboPascal + ' (-Mtp)' - else if SysUtils.CompareText(Mode, 'fpc') = 0 then - Result := lisFreePascal + ' (-Mfpc)' - else if SysUtils.CompareText(Mode, 'macpas') = 0 then - Result := lisMacPascal + ' (-Mmacpas)' - else - Result := ''; -end; - -function CaptionToSyntaxMode(const Caption: string): string; -begin - if System.Pos('-Mdelphi', Caption) > 0 then - Result := 'Delphi' - else if System.Pos('-Mtp', Caption) > 0 then - Result := 'tp' - else if System.Pos('-Mmacpas', Caption) > 0 then - Result := 'macpas' - else if System.Pos('-Mfpc', Caption) > 0 then - Result := 'fpc' - else - Result := 'ObjFPC'; -end; - { TCompilerConfigTargetFrame } @@ -206,9 +174,6 @@ begin end; procedure TCompilerConfigTargetFrame.Setup(ADialog: TAbstractOptionsEditorDialog); -var - m: TCompilerMode; - s: string; begin // Config grpConfigFile.Caption := dlgConfigFiles; @@ -297,17 +262,6 @@ begin end; ItemIndex := 0; end; - - grpSyntaxMode.Caption := lisSyntaxMode + ' (-M, {$MODE})'; - cmbSyntaxMode.Items.BeginUpdate; - cmbSyntaxMode.Items.Clear; - for m := Low(TCompilerMode) to High(TCompilerMode) do - begin - s := SyntaxModeToCaption(CompilerModeNames[m]); - if s <> '' then - cmbSyntaxMode.Items.Add(s); - end; - cmbSyntaxMode.Items.EndUpdate; end; procedure TCompilerConfigTargetFrame.ReadSettings(AOptions: TAbstractIDEOptions); @@ -346,8 +300,6 @@ begin TargetCPUComboBox.ItemIndex := i; // Target Processor TargetProcessorProcComboBox.Text := ProcessorToCaption(TargetProcessor); - - cmbSyntaxMode.Text := SyntaxModeToCaption(SyntaxMode); end; end; end; @@ -378,8 +330,6 @@ begin NewTargetCPU := ''; TargetCPU := CaptionToCPU(NewTargetCPU); TargetProcessor := CaptionToProcessor(TargetProcessorProcComboBox.Text); - - SyntaxMode := CaptionToSyntaxMode(cmbSyntaxMode.Text); end; end; end; diff --git a/ide/frames/compiler_debugging_options.lfm b/ide/frames/compiler_debugging_options.lfm index b55226aa28..c5e5e68883 100644 --- a/ide/frames/compiler_debugging_options.lfm +++ b/ide/frames/compiler_debugging_options.lfm @@ -6,14 +6,17 @@ object CompilerDebuggingOptionsFrame: TCompilerDebuggingOptionsFrame ClientHeight = 552 ClientWidth = 701 TabOrder = 0 - DesignLeft = 394 - DesignTop = 135 + DesignLeft = 225 + DesignTop = 316 object chkDebugGDB: TCheckBox + AnchorSideTop.Control = grpChecks + AnchorSideTop.Side = asrBottom Left = 6 Height = 21 - Top = 6 + Top = 122 Width = 689 - Align = alTop + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Top = 10 BorderSpacing.Around = 6 Caption = 'chkDebugGDB' OnChange = chkDebugGDBChange @@ -27,7 +30,7 @@ object CompilerDebuggingOptionsFrame: TCompilerDebuggingOptionsFrame AnchorSideRight.Side = asrBottom Left = 0 Height = 137 - Top = 33 + Top = 149 Width = 701 Anchors = [akTop, akLeft, akRight] AutoSize = True @@ -125,7 +128,7 @@ object CompilerDebuggingOptionsFrame: TCompilerDebuggingOptionsFrame AnchorSideRight.Side = asrBottom Left = 0 Height = 106 - Top = 175 + Top = 291 Width = 701 Anchors = [akTop, akLeft, akRight] AutoSize = True @@ -173,4 +176,90 @@ object CompilerDebuggingOptionsFrame: TCompilerDebuggingOptionsFrame TabOrder = 2 end end + object grpChecks: TGroupBox + AnchorSideBottom.Side = asrBottom + Left = 0 + Height = 106 + Top = 0 + Width = 701 + Align = alTop + Anchors = [] + AutoSize = True + Caption = 'grpChecks' + ChildSizing.TopBottomSpacing = 6 + ChildSizing.Layout = cclLeftToRightThenTopToBottom + ChildSizing.ControlsPerLine = 1 + ClientHeight = 87 + ClientWidth = 697 + TabOrder = 3 + object chkChecksIO: TCheckBox + Left = 6 + Height = 21 + Top = 6 + Width = 103 + BorderSpacing.Left = 6 + Caption = 'chkChecksIO' + TabOrder = 0 + end + object chkChecksRange: TCheckBox + AnchorSideLeft.Control = chkChecksIO + AnchorSideTop.Control = chkChecksIO + AnchorSideTop.Side = asrBottom + Left = 6 + Height = 21 + Top = 33 + Width = 131 + BorderSpacing.Top = 6 + Caption = 'chkChecksRange' + TabOrder = 1 + end + object chkChecksOverflow: TCheckBox + AnchorSideLeft.Control = chkChecksRange + AnchorSideTop.Control = chkChecksRange + AnchorSideTop.Side = asrBottom + Left = 6 + Height = 21 + Top = 60 + Width = 143 + BorderSpacing.Top = 6 + Caption = 'chkChecksOverflow' + TabOrder = 2 + end + object chkChecksStack: TCheckBox + AnchorSideLeft.Control = chkChecksIO + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = chkChecksIO + Left = 179 + Height = 21 + Top = 6 + Width = 126 + BorderSpacing.Left = 70 + Caption = 'chkChecksStack' + TabOrder = 3 + end + object chkVerifyObjMethodCall: TCheckBox + AnchorSideLeft.Control = chkChecksStack + AnchorSideTop.Control = chkChecksStack + AnchorSideTop.Side = asrBottom + Left = 179 + Height = 21 + Top = 33 + Width = 168 + BorderSpacing.Top = 6 + Caption = 'chkVerifyObjMethodCall' + TabOrder = 4 + end + object chkAssertion: TCheckBox + AnchorSideLeft.Control = chkVerifyObjMethodCall + AnchorSideTop.Control = chkVerifyObjMethodCall + AnchorSideTop.Side = asrBottom + Left = 179 + Height = 21 + Top = 60 + Width = 105 + BorderSpacing.Top = 6 + Caption = 'chkAssertion' + TabOrder = 5 + end + end end diff --git a/ide/frames/compiler_debugging_options.pas b/ide/frames/compiler_debugging_options.pas index d8b39690b9..7349204131 100644 --- a/ide/frames/compiler_debugging_options.pas +++ b/ide/frames/compiler_debugging_options.pas @@ -12,6 +12,10 @@ type { TCompilerDebuggingOptionsFrame } TCompilerDebuggingOptionsFrame = class(TAbstractIDEOptionsEditor) + chkChecksIO: TCheckBox; + chkChecksOverflow: TCheckBox; + chkChecksRange: TCheckBox; + chkChecksStack: TCheckBox; chkDebugGDB: TCheckBox; chkGenGProfCode: TCheckBox; chkSymbolsStrip: TCheckBox; @@ -19,7 +23,10 @@ type chkUseHeaptrc: TCheckBox; chkUseLineInfoUnit: TCheckBox; chkUseValgrind: TCheckBox; + chkVerifyObjMethodCall: TCheckBox; + chkAssertion: TCheckBox; dropDbgSymbolType: TComboBox; + grpChecks: TGroupBox; grpOtherDebuggingInfo: TGroupBox; grpInfoForGDB: TGroupBox; lblEmpty: TLabel; @@ -80,6 +87,14 @@ end; procedure TCompilerDebuggingOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog); begin + grpChecks.Caption := dlgCOChecksAndAssertion; + chkChecksIO.Caption := 'I/O (-Ci)'; + chkChecksRange.Caption := dlgCORange + ' (-Cr)'; + chkChecksOverflow.Caption := dlgCOOverflow + ' (-Co)'; + chkChecksStack.Caption := dlgCOStack + ' (-Ct)'; + chkVerifyObjMethodCall.Caption := lisVerifyMethodCalls + ' (-CR)'; + chkAssertion.Caption := dlgAssertCode + ' (-Sa)'; + grpInfoForGDB.Caption := dlgCOInfoForGDB; grpOtherDebuggingInfo.Caption := dlgCOOtherDebuggingInfo; @@ -104,6 +119,13 @@ procedure TCompilerDebuggingOptionsFrame.ReadSettings(AOptions: TAbstractIDEOpti begin with AOptions as TBaseCompilerOptions do begin + chkChecksIO.Checked := IOChecks; + chkChecksRange.Checked := RangeChecks; + chkChecksOverflow.Checked := OverflowChecks; + chkChecksStack.Checked := StackChecks; + chkVerifyObjMethodCall.Checked := VerifyObjMethodCall; + chkAssertion.Checked := IncludeAssertionCode; + chkDebugGDB.Checked := GenerateDebugInfo; dropDbgSymbolType.ItemIndex := SymbolToIndex(DebugInfoType); chkUseLineInfoUnit.Checked := UseLineInfoUnit; @@ -121,6 +143,13 @@ procedure TCompilerDebuggingOptionsFrame.WriteSettings(AOptions: TAbstractIDEOpt begin with AOptions as TBaseCompilerOptions do begin + IOChecks := chkChecksIO.Checked; + RangeChecks := chkChecksRange.Checked; + OverflowChecks := chkChecksOverflow.Checked; + StackChecks := chkChecksStack.Checked; + VerifyObjMethodCall := chkVerifyObjMethodCall.Checked; + IncludeAssertionCode := chkAssertion.Checked; + GenerateDebugInfo := chkDebugGDB.Checked; DebugInfoType := IndexToSymbol(dropDbgSymbolType.ItemIndex); UseLineInfoUnit := chkUseLineInfoUnit.Checked; diff --git a/ide/frames/compiler_parsing_options.lfm b/ide/frames/compiler_parsing_options.lfm index 99c46ef59e..3663ae909c 100644 --- a/ide/frames/compiler_parsing_options.lfm +++ b/ide/frames/compiler_parsing_options.lfm @@ -14,7 +14,7 @@ object CompilerParsingOptionsFrame: TCompilerParsingOptionsFrame AnchorSideRight.Side = asrBottom Left = 0 Height = 57 - Top = 269 + Top = 326 Width = 584 Anchors = [akTop, akLeft, akRight] AutoFill = True @@ -33,15 +33,16 @@ object CompilerParsingOptionsFrame: TCompilerParsingOptionsFrame TabOrder = 1 end object grpSyntaxOptions: TCheckGroup - AnchorSideTop.Control = Owner + AnchorSideTop.Control = grpSyntaxMode + AnchorSideTop.Side = asrBottom AnchorSideRight.Side = asrBottom Left = 0 Height = 258 - Top = 5 + Top = 62 Width = 584 Anchors = [akTop, akLeft, akRight] AutoFill = True - BorderSpacing.Top = 5 + BorderSpacing.Top = 6 Caption = 'grpSyntaxOptions' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 @@ -53,4 +54,31 @@ object CompilerParsingOptionsFrame: TCompilerParsingOptionsFrame ChildSizing.ControlsPerLine = 1 TabOrder = 0 end + object grpSyntaxMode: TGroupBox + Left = 0 + Height = 56 + Top = 0 + Width = 584 + Align = alTop + Anchors = [] + AutoSize = True + Caption = 'grpSyntaxMode' + ClientHeight = 37 + ClientWidth = 580 + TabOrder = 2 + object cmbSyntaxMode: TComboBox + AnchorSideRight.Control = grpSyntaxMode + AnchorSideRight.Side = asrBottom + Left = 6 + Height = 25 + Top = 6 + Width = 568 + Align = alLeft + Anchors = [akTop, akLeft, akRight, akBottom] + BorderSpacing.Around = 6 + ItemHeight = 0 + Style = csDropDownList + TabOrder = 0 + end + end end diff --git a/ide/frames/compiler_parsing_options.pas b/ide/frames/compiler_parsing_options.pas index 8ac794dcc0..575b52ffb5 100644 --- a/ide/frames/compiler_parsing_options.pas +++ b/ide/frames/compiler_parsing_options.pas @@ -5,15 +5,20 @@ unit compiler_parsing_options; interface uses - ExtCtrls, IDEOptionsIntf, CompilerOptions, LazarusIDEStrConsts; + ExtCtrls, StdCtrls, SysUtils, IDEOptionsIntf, CompilerOptions, LinkScanner, + PackageDefs, LazarusIDEStrConsts; type { TCompilerParsingOptionsFrame } TCompilerParsingOptionsFrame = class(TAbstractIDEOptionsEditor) + cmbSyntaxMode: TComboBox; grpAsmStyle: TRadioGroup; + grpSyntaxMode: TGroupBox; grpSyntaxOptions: TCheckGroup; + private + FIsPackage: boolean; public function GetTitle: string; override; procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; @@ -26,6 +31,37 @@ implementation {$R *.lfm} +function SyntaxModeToCaption(const Mode: string): string; +begin + if CompareText(Mode, 'ObjFPC') = 0 then + Result := lisObjectPascalDefault + ' (-Mobjfpc)' + else if CompareText(Mode, 'Delphi') = 0 then + Result := lisDelphi + ' (-Mdelphi)' + else if CompareText(Mode, 'tp') = 0 then + Result := lisTurboPascal + ' (-Mtp)' + else if CompareText(Mode, 'fpc') = 0 then + Result := lisFreePascal + ' (-Mfpc)' + else if CompareText(Mode, 'macpas') = 0 then + Result := lisMacPascal + ' (-Mmacpas)' + else + Result := ''; +end; + +function CaptionToSyntaxMode(const Caption: string): string; +begin + if Pos('-Mdelphi', Caption) > 0 then + Result := 'Delphi' + else if Pos('-Mtp', Caption) > 0 then + Result := 'tp' + else if Pos('-Mmacpas', Caption) > 0 then + Result := 'macpas' + else if Pos('-Mfpc', Caption) > 0 then + Result := 'fpc' + else + Result := 'ObjFPC'; +end; + + { TCompilerParsingOptionsFrame } function TCompilerParsingOptionsFrame.GetTitle: string; @@ -34,7 +70,21 @@ begin end; procedure TCompilerParsingOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog); +var + m: TCompilerMode; + s: string; begin + grpSyntaxMode.Caption := lisSyntaxMode + ' (-M, {$MODE})'; + cmbSyntaxMode.Items.BeginUpdate; + cmbSyntaxMode.Items.Clear; + for m := Low(TCompilerMode) to High(TCompilerMode) do + begin + s := SyntaxModeToCaption(CompilerModeNames[m]); + if s <> '' then + cmbSyntaxMode.Items.Add(s); + end; + cmbSyntaxMode.Items.EndUpdate; + with grpAsmStyle do begin Caption := dlgCOAsmStyle + ' (-R)'; @@ -55,7 +105,6 @@ begin Caption := dlgSyntaxOptions; Items.Add(dlgCOCOps + ' (-Sc, {$COPERATORS ON})'); - Items.Add(dlgAssertCode + ' (-Sa, {$ASSERTIONS ON})'); Items.Add(dlgLabelGoto + ' (-Sg, {$GOTO ON})'); Items.Add(dlgCppInline + ' (-Si, {$INLINE ON})'); Items.Add(dlgCMacro + ' (-Sm, {$MACRO ON})'); @@ -66,9 +115,15 @@ begin end; procedure TCompilerParsingOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions); +var + CurOptions: TBaseCompilerOptions; begin - with AOptions as TBaseCompilerOptions do + CurOptions := AOptions as TBaseCompilerOptions; + FIsPackage := CurOptions is TPkgCompilerOptions; + with CurOptions do begin + cmbSyntaxMode.Text := SyntaxModeToCaption(SyntaxMode); + if (AssemblerStyle in [1,2,3]) then grpAsmStyle.ItemIndex := AssemblerStyle else @@ -77,13 +132,12 @@ begin with grpSyntaxOptions do begin Checked[0] := CStyleOperators; - Checked[1] := IncludeAssertionCode; - Checked[2] := AllowLabel; - Checked[3] := CPPInline; - Checked[4] := CStyleMacros; - Checked[5] := InitConstructor; - Checked[6] := StaticKeyword; - Checked[7] := UseAnsiStrings; + Checked[1] := AllowLabel; + Checked[2] := CPPInline; + Checked[3] := CStyleMacros; + Checked[4] := InitConstructor; + Checked[5] := StaticKeyword; + Checked[6] := UseAnsiStrings; end; end; end; @@ -92,18 +146,20 @@ procedure TCompilerParsingOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptio begin with AOptions as TBaseCompilerOptions do begin + if not fIsPackage then + SyntaxMode := CaptionToSyntaxMode(cmbSyntaxMode.Text); + AssemblerStyle := grpAsmStyle.ItemIndex; with grpSyntaxOptions do begin CStyleOperators := Checked[0]; - IncludeAssertionCode := Checked[1]; - AllowLabel := Checked[2]; - CPPInline := Checked[3]; - CStyleMacros := Checked[4]; - InitConstructor := Checked[5]; - StaticKeyword := Checked[6]; - UseAnsiStrings := Checked[7]; + AllowLabel := Checked[1]; + CPPInline := Checked[2]; + CStyleMacros := Checked[3]; + InitConstructor := Checked[4]; + StaticKeyword := Checked[5]; + UseAnsiStrings := Checked[6]; end; end; end; diff --git a/ide/lazarusidestrconsts.pas b/ide/lazarusidestrconsts.pas index 1e05d5d9d5..95135ca1c5 100644 --- a/ide/lazarusidestrconsts.pas +++ b/ide/lazarusidestrconsts.pas @@ -2031,7 +2031,7 @@ resourcestring dlgCOUnitStyle = 'Unit style'; dlgCOSmartLinkable = 'Smart linkable'; dlgCORelocatable = 'Relocatable'; - dlgCOChecks = 'Checks'; + dlgCOChecksAndAssertion = 'Checks and assertion'; dlgCORange = 'Range'; dlgCOOverflow = 'Overflow'; dlgCOStack = 'Stack'; @@ -2045,8 +2045,8 @@ resourcestring dlgTargetPlatform = 'Target platform'; dlgOptimizationLevels = 'Optimization levels'; //dlgCOKeepVarsReg = 'Keep certain variables in registers'; - //dlgUncertOpt = 'Uncertain optimizations'; - //lisSmallerRatherThanFaster = 'smaller rather than faster'; + dlgOtherOptimizations = 'Other optimizations'; + lisSmallerRatherThanFaster = 'Smaller rather than faster'; dlgLevelNoneOpt = '0 (no optimization)'; dlgLevel1Opt = '1 (quick, debugger friendly)'; dlgLevel2Opt = '2 (quick optimizations)';