1 struct PackageMode : Moveable<PackageMode> {
2 	int debug;
3 	int blitz;
4 
SerializePackageMode5 	void Serialize(Stream& s) { s / debug / blitz / blitz; }
6 
PackageModePackageMode7 	PackageMode() { debug = blitz = Null; }
8 };
9 
10 struct TargetMode {
11 	bool        target_override;
12 	String      target;
13 	int         linkmode;
14 	bool        createmap;
15 	String      version;
16 	PackageMode def;
17 	VectorMap<String, PackageMode> package;
18 
19 	void        Serialize(Stream& s);
20 
TargetModeTargetMode21 	TargetMode() { def.debug = def.blitz = 0; target_override = false; linkmode = 0; createmap = false; }
22 };
23 
24 String NoCr(const char *s);
25 int CharFilterSlash(int c);
26 
27 String GetDefaultMethod();
28 VectorMap<String, String> GetMethodVars(const String& method);
29 
30 class MakeBuild {
31 public:
32 	virtual void ConsoleShow() = 0; //		ShowConsole();	console.Sync();
33 	virtual void ConsoleSync() = 0; // console.Sync()
34 	virtual void ConsoleClear() = 0;
35 	virtual void SetupDefaultMethod() = 0;
36 	virtual Vector<String> PickErrors() = 0; //console.PickErrors()
37 	virtual void BeginBuilding(bool sync_files, bool clear_console) = 0;
38 	virtual void EndBuilding(bool ok) = 0;
39 	virtual void ClearErrorEditor() = 0;
40 	virtual void DoProcessEvents() = 0;
41 	virtual void ReQualifyCodeBase() = 0;
42 	virtual void SetErrorEditor() = 0;
43 	virtual String GetMain() = 0;
44 
45 	struct TransferFileInfo
46 	{
47 		String sourcepath;
48 		int    filetime;
49 		int    filesize;
50 	};
51 
52 	ArrayMap<String, TransferFileInfo> transferfilecache;
53 	String       method;
54 	int          targetmode;
55 	TargetMode   debug;
56 	TargetMode   release;
57 	String       cmdout;
58 	String       target;
59 	String       onefile;
60 	bool         stoponerrors;
61 	bool         use_target;
62 	String       mainconfigparam;
63 	String       add_includes;
64 	String       main_conf;
65 	Index<String> cfg;
66 	FileTime     start_time;
67 
68 	bool         makefile_svn_revision = true;
69 
70 	const TargetMode& GetTargetMode();
71 	Index<String> PackageConfig(const Workspace& wspc, int package, const VectorMap<String, String>& bm,
72 	                            String mainparam, Host& host, Builder& b, String *target = NULL);
73 //	bool SyncHostFiles(RemoteHost& host);
74 	One<Host> CreateHost(bool darkmode, bool disable_uhd);
75 	One<Builder> CreateBuilder(Host *host);
76 	String OutDir(const Index<String>& cfg, const String& package,
77 	              const VectorMap<String, String>& bm, bool use_target = false);
78 	void PkgConfig(const Workspace& wspc, const Index<String>& config, Index<String>& pkg_config);
79 	bool BuildPackage(const Workspace& wspc, int pkindex, int pknumber, int pkcount,
80 	                  String mainparam, String outfile, Vector<String>& linkfile, Vector<String>& immfile,
81 	                  String& linkopt, bool link = false);
82 	void SetHdependDirs();
83 	Vector<String> GetAllUses(const Workspace& wspc, int f, const VectorMap<String, String>& bm,
84 	                          String mainparam, Host& host, Builder& builder);
85 	Vector<String> GetAllLibraries(const Workspace& wspc, int index,
86 	                               const VectorMap<String, String>& bm, String mainparam,
87 	                               Host& host, Builder& builder);
88 	bool Build(const Workspace& wspc, String mainparam, String outfile, bool clear_console = true);
89 	bool Build();
90 	void CleanPackage(const Workspace& wspc, int package);
91 	void Clean();
92 	void RebuildAll();
93 	void SaveMakeFile(const String& fn, bool exporting);
94 
95 	MakeBuild();
96 
97 private:
98 	static String GetInvalidBuildMethodError(const String& method);
99 };
100 
101 extern bool output_per_assembly;
102