This repository has been archived by the owner on Nov 9, 2021. It is now read-only.
/
lazarus.pp
133 lines (112 loc) · 4.2 KB
/
lazarus.pp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
{
/***************************************************************************
Lazarus.pp
-------------------
This is the lazarus editor program.
Initial Revision : Sun Mar 28 23:15:32 CST 1999
***************************************************************************/
***************************************************************************
* *
* This source is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This code is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
* General Public License for more details. *
* *
* A copy of the GNU General Public License is available on the World *
* Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also *
* obtain it by writing to the Free Software Foundation, *
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
* *
***************************************************************************
}
program Lazarus;
{$mode objfpc}{$H+}
{$I ide.inc}
{off $DEFINE IDE_MEM_CHECK}
uses
{$IF defined(UNIX) and not defined(DisableMultiThreading)}
cthreads,
{$ENDIF}
{$IFDEF IDE_MEM_CHECK}
MemCheck,
{$ENDIF}
{$IF defined(Unix)}
clocale,
{$IFEND}
SysUtils,
Interfaces,
Forms, LCLProc,
LazConf, IDEGuiCmdLine,
Splash,
Main,
AboutFrm,
// use the custom IDE static packages AFTER 'main'
{$IFDEF AddStaticPkgs}
{$I staticpackages.inc}
{$ENDIF}
{$IFDEF BigIDE}
allsyneditdsgn, RunTimeTypeInfoControls, Printer4Lazarus, Printers4LazIDE,
LeakView, MemDSLaz, SDFLaz, InstantFPCLaz, ExternHelp,
TurboPowerIPro, {$ifdef UseTurbopowerInHelp}TurboPowerIProDsgn,{$endif}
jcfidelazarus, chmhelppkg,
FPCUnitTestRunner, FPCUnitIDE, ProjTemplates, TAChartLazarusPkg,
TodoListLaz,
SQLDBLaz, DBFLaz,
{$ENDIF}
MainBase;
{$I revision.inc}
{$R lazarus.res}
begin
{$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('lazarus.pp: begin');{$ENDIF}
RequireDerivedFormResource := True;
// When quick rebuilding the IDE (e.g. when the set of install packages have
// changed), only the unit paths have changed and so FPC rebuilds only the
// lazarus.pp.
// Any flag that should work with quick build must be set here.
KeepInstalledPackages:={$IF defined(BigIDE) or defined(KeepInstalledPackages)}True{$ELSE}False{$ENDIF};
// end of build flags
LazarusRevisionStr:=RevisionStr;
Application.Title:='Lazarus';
OnGetApplicationName:=@GetLazarusApplicationName;
Application.Initialize;
TMainIDE.ParseCmdLineOptions;
if not SetupMainIDEInstance then exit;
if Application.Terminated then exit;
// Show splashform
if ShowSplashScreen then begin
SplashForm := TSplashForm.Create(nil);
SplashForm.Show;
Application.ProcessMessages; // process splash paint message
end;
TMainIDE.Create(Application);
if not Application.Terminated then
begin
MainIDE.CreateOftenUsedForms;
try
MainIDE.StartIDE;
except
Application.HandleException(MainIDE);
end;
{$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('lazarus.pp: TMainIDE created');{$ENDIF}
try
Application.Run;
except
debugln('lazarus.pp - unhandled exception');
CleanUpPIDFile;
Halt;
end;
end;
CleanUpPIDFile;
if (SplashForm<>nil) then begin
SplashForm.Free;
SplashForm:=nil;
end;
debugln('LAZARUS END - cleaning up ...');
// free the IDE, so everything is freed before the finalization sections
MainIDE.Free;
end.