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, Forms,
36   Project;
37 
38 type
39 
40   { TBaseBuildManager }
41 
42   TBaseBuildManager = class(TComponent)
43   public
44     constructor Create(AOwner: TComponent); override;
45     destructor Destroy; override;
46 
47     // methods for building IDE (will be changed when project groups are there)
48     procedure SetBuildTargetProject1; virtual; abstract;
49     procedure SetBuildTargetIDE; virtual; abstract;
BuildTargetIDEIsDefaultnull50     function BuildTargetIDEIsDefault: boolean; virtual; abstract;
51 
GetBuildMacroOverridenull52     function GetBuildMacroOverride(const MacroName: string): string; virtual; abstract;
GetBuildMacroOverridesnull53     function GetBuildMacroOverrides: TStrings; virtual; abstract;
GetTargetOSnull54     function GetTargetOS: string; virtual; abstract;
GetTargetCPUnull55     function GetTargetCPU: string; virtual; abstract;
GetLCLWidgetTypenull56     function GetLCLWidgetType: string; virtual; abstract;
GetRunCommandLinenull57     function GetRunCommandLine: string; virtual; abstract;
58     procedure WriteDebug_RunCommandLine; virtual; abstract;
59 
GetCompilerFilenamenull60     function GetCompilerFilename: string; virtual; abstract;
GetFPCompilerFilenamenull61     function GetFPCompilerFilename: string; virtual; abstract;
GetFPCFrontEndOptionsnull62     function GetFPCFrontEndOptions: string; virtual; abstract;
GetProjectPublishDirnull63     function GetProjectPublishDir: string; virtual; abstract;
GetProjectTargetFilenamenull64     function GetProjectTargetFilename(aProject: TProject): string; virtual; abstract;
GetProjectUsesAppBundlenull65     function GetProjectUsesAppBundle: Boolean; virtual; abstract;
GetTestUnitFilenamenull66     function GetTestUnitFilename(AnUnitInfo: TUnitInfo): string; virtual; abstract;
GetTestBuildDirectorynull67     function GetTestBuildDirectory: string; virtual; abstract;
IsTestUnitFilenamenull68     function IsTestUnitFilename(const AFilename: string): boolean; virtual; abstract;
GetTargetUnitFilenamenull69     function GetTargetUnitFilename(AnUnitInfo: TUnitInfo): string; virtual; abstract;
70 
71     procedure RescanCompilerDefines(ResetBuildTarget, ClearCaches,
72                                     WaitTillDone, Quiet: boolean); virtual; abstract;
CompilerOnDiskChangednull73     function CompilerOnDiskChanged: boolean; virtual; abstract;
74 
CheckAmbiguousSourcesnull75     function CheckAmbiguousSources(const AFilename: string;
76                                    Compiling: boolean): TModalResult; virtual; abstract;
DeleteAmbiguousFilesnull77     function DeleteAmbiguousFiles(const Filename:string
78                                   ): TModalResult; virtual; abstract;
CheckUnitPathForAmbiguousPascalFilesnull79     function CheckUnitPathForAmbiguousPascalFiles(const BaseDir, TheUnitPath,
80                                     CompiledExt, ContextDescription: string
81                                     ): TModalResult; virtual; abstract;
CreateProjectApplicationBundlenull82     function CreateProjectApplicationBundle: Boolean; virtual; abstract;
83 
BackupFileForWritenull84     function BackupFileForWrite(const Filename: string): TModalResult; virtual; abstract;
85 
UpdateProjectAutomaticFilesnull86     function UpdateProjectAutomaticFiles(TestDir: string): TModalResult; virtual; abstract;
87   end;
88 
89 var
90   BuildBoss: TBaseBuildManager = nil;
91 
92 implementation
93 
94 { TBaseBuildManager }
95 
96 constructor TBaseBuildManager.Create(AOwner: TComponent);
97 begin
98   BuildBoss:=Self;
99   inherited Create(AOwner);
100 end;
101 
102 destructor TBaseBuildManager.Destroy;
103 begin
104   inherited Destroy;
105   BuildBoss:=nil;
106 end;
107 
108 end.
109 
110