02be559787ef137138401054bb795bdc756f8caf
4 #include "../backend.h"
9 #define NUL "/dev/null"
13 class MingwModuleHandler
;
16 v2s ( const string_list
& v
, int wrap_at
);
18 typedef std::map
<std::string
,Directory
*> directory_map
;
25 directory_map subdirs
;
26 Directory ( const std::string
& name
);
27 void Add ( const char* subdir
);
28 void GenerateTree ( const std::string
& parent
,
30 std::string
EscapeSpaces ( std::string path
);
31 void CreateRule ( FILE* f
,
32 const std::string
& parent
);
34 bool mkdir_p ( const char* path
);
35 std::string
ReplaceVariable ( std::string name
,
38 std::string
GetEnvironmentVariable ( const std::string
& name
);
39 void ResolveVariablesInPath ( char* buf
,
41 bool CreateDirectory ( std::string path
);
45 class MingwBackend
: public Backend
48 MingwBackend ( Project
& project
,
51 virtual ~MingwBackend ();
52 virtual void Process ();
53 std::string
AddDirectoryTarget ( const std::string
& directory
,
54 Directory
* directoryTree
);
55 std::string compilerCommand
;
57 Directory
* intermediateDirectory
;
58 Directory
* outputDirectory
;
59 Directory
* installDirectory
;
61 void CreateMakefile ();
62 void CloseMakefile () const;
63 void GenerateHeader () const;
64 std::string
GenerateIncludesAndDefines ( IfableData
& data
) const;
65 void GenerateProjectCFlagsMacro ( const char* assignmentOperation
,
66 IfableData
& data
) const;
67 void GenerateGlobalCFlagsAndProperties ( const char* op
,
68 IfableData
& data
) const;
69 void GenerateProjectGccOptionsMacro ( const char* assignmentOperation
,
70 IfableData
& data
) const;
71 void GenerateProjectGccOptions ( const char* assignmentOperation
,
72 IfableData
& data
) const;
73 std::string
GenerateProjectLFLAGS () const;
74 void GenerateDirectories ();
75 void GenerateGlobalVariables () const;
76 bool IncludeInAllTarget ( const Module
& module
) const;
77 void GenerateAllTarget ( const std::vector
<MingwModuleHandler
*>& handlers
) const;
78 std::string
GetBuildToolDependencies () const;
79 void GenerateInitTarget () const;
80 void GenerateXmlBuildFilesMacro() const;
81 std::string
GetBin2ResExecutable ();
82 void UnpackWineResources ();
83 void GenerateTestSupportCode ();
84 void CheckAutomaticDependencies ();
85 bool IncludeDirectoryTarget ( const std::string
& directory
) const;
86 bool TryToDetectThisCompiler ( const std::string
& compiler
);
87 void DetectCompiler ();
88 void DetectPipeSupport ();
89 void DetectPCHSupport ();
90 void ProcessModules ();
91 std::string
GetNonModuleInstallDirectories ( const std::string
& installDirectory
);
92 std::string
GetInstallDirectories ( const std::string
& installDirectory
);
93 void GetNonModuleInstallFiles ( std::vector
<std::string
>& out
) const;
94 void GetInstallFiles ( std::vector
<std::string
>& out
) const;
95 void GetNonModuleInstallTargetFiles ( std::vector
<std::string
>& out
) const;
96 void GetModuleInstallTargetFiles ( std::vector
<std::string
>& out
) const;
97 void GetInstallTargetFiles ( std::vector
<std::string
>& out
) const;
98 void OutputInstallTarget ( const std::string
& sourceFilename
,
99 const std::string
& targetFilename
,
100 const std::string
& targetDirectory
);
101 void OutputNonModuleInstallTargets ();
102 void OutputModuleInstallTargets ();
103 std::string
GetRegistrySourceFiles ();
104 std::string
GetRegistryTargetFiles ();
105 void OutputRegistryInstallTarget ();
106 void GenerateInstallTarget ();
107 void GenerateDirectoryTargets ();