f19cf8238bfc65c7c16988a373f37b3e6ce1515d
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
;
24 static std::string
GetVariable ( const std::string
& name
);
32 directory_map subdirs
;
33 Directory ( const std::string
& name
);
34 void Add ( const char* subdir
);
35 void GenerateTree ( const std::string
& parent
,
37 std::string
EscapeSpaces ( std::string path
);
38 void CreateRule ( FILE* f
,
39 const std::string
& parent
);
41 bool mkdir_p ( const char* path
);
42 std::string
ReplaceVariable ( std::string name
,
45 std::string
GetEnvironmentVariable ( const std::string
& name
);
46 std::string
GetEnvironmentVariablePathOrDefault ( const std::string
& name
,
47 const std::string
& defaultValue
);
48 std::string
GetIntermediatePath ();
49 std::string
GetOutputPath ();
50 std::string
GetInstallPath ();
51 void ResolveVariablesInPath ( char* buf
,
53 bool CreateDirectory ( std::string path
);
57 class MingwBackend
: public Backend
60 MingwBackend ( Project
& project
,
63 virtual ~MingwBackend ();
64 virtual void Process ();
65 std::string
AddDirectoryTarget ( const std::string
& directory
,
66 Directory
* directoryTree
);
67 std::string compilerCommand
;
69 Directory
* intermediateDirectory
;
70 Directory
* outputDirectory
;
71 Directory
* installDirectory
;
73 void CreateMakefile ();
74 void CloseMakefile () const;
75 void GenerateHeader () const;
76 std::string
GenerateIncludesAndDefines ( IfableData
& data
) const;
77 void GenerateProjectCFlagsMacro ( const char* assignmentOperation
,
78 IfableData
& data
) const;
79 void GenerateGlobalCFlagsAndProperties ( const char* op
,
80 IfableData
& data
) const;
81 void GenerateProjectGccOptionsMacro ( const char* assignmentOperation
,
82 IfableData
& data
) const;
83 void GenerateProjectGccOptions ( const char* assignmentOperation
,
84 IfableData
& data
) const;
85 std::string
GenerateProjectLFLAGS () const;
86 void GenerateDirectories ();
87 void GenerateGlobalVariables () const;
88 bool IncludeInAllTarget ( const Module
& module
) const;
89 void GenerateAllTarget ( const std::vector
<MingwModuleHandler
*>& handlers
) const;
90 std::string
GetBuildToolDependencies () const;
91 void GenerateInitTarget () const;
92 void GenerateXmlBuildFilesMacro() const;
93 void CheckAutomaticDependencies ();
94 bool IncludeDirectoryTarget ( const std::string
& directory
) const;
95 bool TryToDetectThisCompiler ( const std::string
& compiler
);
96 void DetectCompiler ();
97 void DetectPipeSupport ();
98 void DetectPCHSupport ();
99 void ProcessModules ();
100 std::string
GetNonModuleInstallDirectories ( const std::string
& installDirectory
);
101 std::string
GetInstallDirectories ( const std::string
& installDirectory
);
102 void GetNonModuleInstallFiles ( std::vector
<std::string
>& out
) const;
103 void GetInstallFiles ( std::vector
<std::string
>& out
) const;
104 void GetNonModuleInstallTargetFiles ( std::vector
<std::string
>& out
) const;
105 void GetModuleInstallTargetFiles ( std::vector
<std::string
>& out
) const;
106 void GetInstallTargetFiles ( std::vector
<std::string
>& out
) const;
107 void OutputInstallTarget ( const std::string
& sourceFilename
,
108 const std::string
& targetFilename
,
109 const std::string
& targetDirectory
);
110 void OutputNonModuleInstallTargets ();
111 void OutputModuleInstallTargets ();
112 std::string
GetRegistrySourceFiles ();
113 std::string
GetRegistryTargetFiles ();
114 void OutputRegistryInstallTarget ();
115 void GenerateInstallTarget ();
116 void GenerateDirectoryTargets ();