1 {
2  /***************************************************************************
3                             basebuildmanager.pas
4                             --------------------
5 
6 
7  ***************************************************************************/
8 
9  ***************************************************************************
10  *                                                                         *
11  *   This source is free software; you can redistribute it and/or modify   *
12  *   it under the terms of the GNU General Public License as published by  *
13  *   the Free Software Foundation; either version 2 of the License, or     *
14  *   (at your option) any later version.                                   *
15  *                                                                         *
16  *   This code is distributed in the hope that it will be useful, but      *
17  *   WITHOUT ANY WARRANTY; without even the implied warranty of            *
18  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU     *
19  *   General Public License for more details.                              *
20  *                                                                         *
21  *   A copy of the GNU General Public License is available on the World    *
22  *   Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also      *
23  *   obtain it by writing to the Free Software Foundation,                 *
24  *   Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1335, USA.   *
25  *                                                                         *
26  ***************************************************************************
27 }
28 unit BaseBuildManager;
29 
30 {$mode objfpc}{$H+}
31 
32 interface
33 
34 uses
35   Classes, SysUtils,
36   // LCL
37   Forms,
38   // IDE
39   Project;
40 
41 type
42 
43   { TBaseBuildManager }
44 
45   TBaseBuildManager = class(TComponent)
46   public
47     constructor Create(AOwner: TComponent); override;
48     destructor Destroy; override;
49 
50     // methods for building IDE (will be changed when project groups are there)
51     procedure SetBuildTargetProject1; virtual; abstract;
52     procedure SetBuildTargetIDE(aQuiet: boolean = false); virtual; abstract;
BuildTargetIDEIsDefaultnull53     function BuildTargetIDEIsDefault: boolean; virtual; abstract;
54 
GetBuildMacroOverridenull55     function GetBuildMacroOverride(const MacroName: string): string; virtual; abstract;
GetBuildMacroOverridesnull56     function GetBuildMacroOverrides: TStrings; virtual; abstract;
GetTargetOSnull57     function GetTargetOS: string; virtual; abstract;
GetTargetCPUnull58     function GetTargetCPU: string; virtual; abstract;
GetLCLWidgetTypenull59     function GetLCLWidgetType: string; virtual; abstract;
GetRunCommandLinenull60     function GetRunCommandLine: string; virtual; abstract;
61     procedure WriteDebug_RunCommandLine; virtual; abstract;
62 
GetCompilerFilenamenull63     function GetCompilerFilename: string; virtual; abstract;
GetFPCompilerFilenamenull64     function GetFPCompilerFilename: string; virtual; abstract;
GetFPCFrontEndOptionsnull65     function GetFPCFrontEndOptions: string; virtual; abstract;
GetProjectPublishDirnull66     function GetProjectPublishDir: string; virtual; abstract;
GetProjectTargetFilenamenull67     function GetProjectTargetFilename(aProject: TProject): string; virtual; abstract;
GetProjectUsesAppBundlenull68     function GetProjectUsesAppBundle: Boolean; virtual; abstract;
GetTestUnitFilenamenull69     function GetTestUnitFilename(AnUnitInfo: TUnitInfo): string; virtual; abstract;
GetTestBuildDirectorynull70     function GetTestBuildDirectory: string; virtual; abstract;
IsTestUnitFilenamenull71     function IsTestUnitFilename(const AFilename: string): boolean; virtual; abstract;
GetTargetUnitFilenamenull72     function GetTargetUnitFilename(AnUnitInfo: TUnitInfo): string; virtual; abstract;
73 
74     procedure RescanCompilerDefines(ResetBuildTarget, ClearCaches,
75                                     WaitTillDone, Quiet: boolean); virtual; abstract;
CompilerOnDiskChangednull76     function CompilerOnDiskChanged: boolean; virtual; abstract;
77 
CheckAmbiguousSourcesnull78     function CheckAmbiguousSources(const AFilename: string;
79                                    Compiling: boolean): TModalResult; virtual; abstract;
DeleteAmbiguousFilesnull80     function DeleteAmbiguousFiles(const Filename:string
81                                   ): TModalResult; virtual; abstract;
CheckUnitPathForAmbiguousPascalFilesnull82     function CheckUnitPathForAmbiguousPascalFiles(const BaseDir, TheUnitPath,
83                                     CompiledExt, ContextDescription: string
84                                     ): TModalResult; virtual; abstract;
CreateProjectApplicationBundlenull85     function CreateProjectApplicationBundle: Boolean; virtual; abstract;
86 
BackupFileForWritenull87     function BackupFileForWrite(const Filename: string): TModalResult; virtual; abstract;
88 
UpdateProjectAutomaticFilesnull89     function UpdateProjectAutomaticFiles(TestDir: string): TModalResult; virtual; abstract;
90   end;
91 
92 var
93   BuildBoss: TBaseBuildManager = nil;
94 
95 implementation
96 
97 { TBaseBuildManager }
98 
99 constructor TBaseBuildManager.Create(AOwner: TComponent);
100 begin
101   BuildBoss:=Self;
102   inherited Create(AOwner);
103 end;
104 
105 destructor TBaseBuildManager.Destroy;
106 begin
107   inherited Destroy;
108   BuildBoss:=nil;
109 end;
110 
111 end.
112 
113