Let dependencies control 'make install'
[reactos.git] / reactos / tools / rbuild / backend / mingw / mingw.h
1 #ifndef MINGW_H
2 #define MINGW_H
3
4 #include "../backend.h"
5
6 #ifdef WIN32
7 #define NUL "NUL"
8 #else
9 #define NUL "/dev/null"
10 #endif
11
12 class Directory;
13 class MingwModuleHandler;
14
15 extern std::string
16 v2s ( const string_list& v, int wrap_at );
17
18 class MingwBackend : public Backend
19 {
20 public:
21 MingwBackend ( Project& project, bool verbose );
22 virtual ~MingwBackend ();
23 virtual void Process ();
24 std::string AddDirectoryTarget ( const std::string& directory, bool out );
25 bool usePipe;
26 private:
27 void CreateMakefile ();
28 void CloseMakefile () const;
29 void GenerateHeader () const;
30 void GenerateProjectCFlagsMacro ( const char* assignmentOperation,
31 IfableData& data ) const;
32 void GenerateGlobalCFlagsAndProperties ( const char* op,
33 IfableData& data ) const;
34 std::string GenerateProjectLFLAGS () const;
35 void GenerateDirectories ();
36 void GenerateGlobalVariables () const;
37 bool IncludeInAllTarget ( const Module& module ) const;
38 void GenerateAllTarget ( const std::vector<MingwModuleHandler*>& handlers ) const;
39 std::string GetBuildToolDependencies () const;
40 void GenerateInitTarget () const;
41 void GenerateXmlBuildFilesMacro() const;
42 void CheckAutomaticDependencies ();
43 bool IncludeDirectoryTarget ( const std::string& directory ) const;
44 void DetectPipeSupport ();
45 void DetectPCHSupport ();
46 void ProcessModules ();
47 std::string GetNonModuleInstallDirectories ( const std::string& installDirectory );
48 std::string GetInstallDirectories ( const std::string& installDirectory );
49 void GetNonModuleInstallFiles ( std::vector<std::string>& out ) const;
50 void GetInstallFiles ( std::vector<std::string>& out ) const;
51 void GetNonModuleInstallTargetFiles ( std::string installDirectory,
52 std::vector<std::string>& out ) const;
53 void GetInstallTargetFiles ( std::string installDirectory,
54 std::vector<std::string>& out ) const;
55 void OutputInstallfileTargets ( const std::string& installDirectory );
56 void GenerateInstallTarget ();
57 FILE* fMakefile;
58 bool use_pch;
59 Directory *int_directories, *out_directories;
60 };
61
62 std::string FixupTargetFilename ( const std::string& targetFilename );
63
64 #endif /* MINGW_H */